Advanced CAD Package

By Dominic Ford

Originally published in EUG #41

This program is intended to allow the user to enter circuit schematic diagrams into their computer. This can be useful for a number of reasons whether it be to create a computer library of useful circuits, to aid with the design process of a circuit, or simply to enable you to enter circuit diagrams into your documents with ease.

Some users may remember the CAD+ program which was published in EUG a couple of years back. This program is similar in that it performs the same task, although there are a number of fundamental differences between how the two operate. The main difference is that this program is "object-based" whereas CAD+ was not. This means that when you place a component, it stores the fact that there is a component there, as opposed to simply placing a picture of the component at the relevant co-ordinates in a grid of pixels. This makes editing a lot easier. To move a component in CAD+ was a nightmare - you had to carefully remove the component from its original position, place it in its new position, and then redraw any links to it manually. In Advanced CAD, you can simply click on the component, drag it across the screen and you are done. The component will be removed from its old location, redrawn in the new position, and any links to it will update automatically.

This is not the only benefit of the object-based system. Storing a pixel array in the way CAD+ does take a huge amount of memory, and you cannot fit that many circuits onto a disk. In this program, the files are a fraction of the size (a complex circuit might take a tenth the space taken up by the CAD+ file, a simple circuit more like a fiftieth).

I will now describe step-by-step how to operate Advanced CAD. I'm assuming that you have the program running in front of you - if not, I strongly recommend that you print this out. It will be fairly heavy going without seeing the software to understand what I'm talking about!

Selecting An Input Device

When you first start up Advanced CAD, you are asked what input device you would like to use to control the program. You can use an AMX Mouse, an analogue joystick, or the keyboard.

If you select keyboard control, you have the option of having joystick control as well (these two input devices can operate together). Only answer yes to this if you have a joystick plugged into your computer's analogue port, otherwise the floating lines of the port may well effect the input received, making the program unusable.

Once you have selected your input device, the main program loads. You are then confronted with the CAD Editor screen. At the centre is a cross-haired pointer which you can control with the selected input device(s). The controls are as follows:

Keyboard: - Z = Left, X = Right, * = Up, ? = Down, RETURN = Click.
Joystick: - Fairly obvious, any one of the buttons to click.
Mouse - Left button to click, middle button to move component, right button to add component. The latter two are shortcuts to two of the more commonly-used features. See later for description of these.


Start up Advanced CAD with a fresh page (i.e. how the program is when it starts up). Click the pointer with the selected input device, and a menu will appear. This is the menu of basic CAD functions. They are as follows:

File - Bring up a subsiduary menu of filing options (Load, Save, etc)
Add - Add a component to the circuit
Cancel - Oops, I didn't mean to bring that menu up - Go away!

You can move up and down the menu with the mouse, joystick (you have to waggle it), the keys * and ?, or the cursor keys. For the moment, select "Add" (ie. move down once until Add is highlighted, and click). The menu will disappear, and a capacitor will appear under the pointer. You have just added a component to the circuit design.

Now move the pointer left a little way, until it is away from the capacitor. We now want to add another component to the design - a battery. First, you must select battery on the list at the top of the screen. Use the cursor keys to scroll this list down until "Battery" is highlighted. When you add a component now, it will be a battery, not a capacitor. Do so - click the pointer with "Battery" selected at the top, and then click on "Add". A battery will now appear to the left of the capacitor, under the pointer.

Suppose we now want to link the two components together. First, click on one of the two components. I will assume here that you have clicked on the battery for ease of explaining the process, although the process is very similar if you click on the capacitor first. When you click on the component, the "Object" menu appears. This menu relates to functions which you can perform on that component to manipulate it, and has the following options:

File - Same as on main menu (filing options eg. load/save)
Move - Move a component around the screen.
Delete - Removes a component from the circuit, and deletes any links to it
Label - Labels the component to make it clear what it does
Link - Connect two components together
Cancel - Once again, there is an "Oops" escape route

We want to link to components together, so select "Link". Next, you are asked which of the terminals of the battery you wish to connect on a secondary menu. For the purposes of this example, select the Cathode. You have now instructed Advanced CAD to make a connection to the cathode of the battery. Notice that the status box at the top of the screen changes from "Ready" to "Linking" to show this change of state.

You now have to specify where you want to link this terminal to. Move the pointer to the component that you want to link to (in this case the capacitor), and click on it. This time the object menu does not come up, because you are in the middle of making a link. Instead a menu comes up asking which terminal you wish to link to. In this example, select "Left". Once you have done this, you will have completed the link, and the status will return to "Ready". Notice that a line has been drawn between the cathode of the battery and the left terminal of the capacitor, as requested.

It is not clear at the moment what voltage the battery is, or what capacitance the capacitor should have. For purposes such as these, you may well went to label components with text. For this you click on the component you wish to label and bring up the "Object" menu. This time select "Label". A 4x2 character box will appear for you to enter your label.

To move the cursor without typing, use the cursor keys, and to enter your label, press RETURN. Notice that the label you entered is now displayed above the component. You may think that 4x2 characters is rather limiting, and it is. This is intended to be sufficient to give a value such as 4k7 and a number to each part. It is generally considered good practice to use an indexing system anyway (e.g. label a resistor as R1, and then have a footnote separately, entitled R1, to explain what the resistor does).

After working on a schematic for a while, you may find that you have placed a component in the wrong place. There may not be enough space to add part of the schematic, and in order to rectify the situation you need to move a few parts out of the way, or you may just want to tidy things up neatly. This is where the MOVE facility comes in useful. Click on the component you want to move, to bring up the "Object" menu, and select "Move". The status will change to "Moving", and the cursor will change to a flashing square. Move this square to the new location where you want to put the component, and click again. The part will now have been reloacted, and any links automatically updated.

The delete function will remove any componemt and its links even with a previously saved file.

As your designs become more complex, you will soon find that the links start to look untidy. They are drawn as straight lines from the two terminals at each end, regardless of what might lie between them. This can cause the links to travel diagonally, which never looks neat, or even worse to cross another component. A simple solution is to define the path taken by the link using a series of nodes. Simply place a node at every corner along the route that you want the link to take, and link each to the next one along the line.

Integrated Circuits

One of the components available is the integrated circuit. This is different from the other components in that various sizes are avaiable. When you create an integrated cirsuit (ie. click on Add with IC selected at the top of the screen), you must select the size that you require from a menu. Most commonly used sizes are offered.

When you click on an IC to bring up the "Object" menu, note that you must click at the TOP of the chip. This must be within the top three terminals on each side, and within the main body of the chip (ie. not on the terminals themselves). If you click elsewhere, it will not register as being a click on the IC.

When you link to an IC, the sheer number of terminals makes it impossible to list all of them on a single menu. Therefore you must first select the range into which the terminal you want falls, and then select the exact number on a further menu. For example, to link to pin 4, first select "1-5" and then "4".

Filing Your Schematics

The File menu is available from both the object and main menus. It has the following items:

New - Wipe the current design from memory and start a fresh page
Open - Load a saved design from disk
Save - Save the current design to disk with the current filename
SaveAs - Save the current design to disk with a new filename
Export - Save the design in a format readable by other programs
Name - Sets the text description given at the top of the screen
MOS - Give you a * prompt with which to access the operating system
Exit - Quit the program and return to BASIC
Cancel - Oops again!

The Open and SaveAs options both ask you for a filename and then load/save using that filename. The Save facility does not ask you for a filename, but instead uses the last filename used for this design. For example, if you load a file using Open and then want to save a modified version, you can use Save to avoid typing the filename for a second time. This facility is like that used by most modern PC software.

Note: Filenames can be a maximum of 7 characters to ensure DFS compatibility. They are entered via a 7 character text box, as with the component labels (use cursor keys to move left/right; DELETE won't work).

The Export facility is used if you want to use your schematic in a document, or program other than Advanced CAD. You should note that the files made by Open/Save/SaveAs are data files that are of no use to any program other than Advanced CAD. In contrast, the files made by Export are graphics files, which are useful to other programs, but useless to Advanced CAD. For your information, these are mode 4 screendumps.

The MOS facility is useful if you need to communicate with the operating system for any reason. This is necessary to switch filing systems (e.g. from DFS to ADFS or vice versa), or to switch directories.

Note: Do not use this to access the cassette filing system. The tape buffer is used by this program, and consequently any tape activity will crash the software.

At the top of the screen there is a box which initially contains "<Untitled>". This box is intended as a 15 character description of what the current schematic is. You can edit the text that it contains using "Name" on the File menu.

Memory Limit

The memory limit in Advanced CAD is fairly generous: Maximum 127 components per schematic (includes nodes). Maximum 255 links between components.

Example Files

Two example files are supplied on this EUG disk - they can be accessed using "Open" on the file menu. They are as follows:

Amp - An OpAmp set up as a non-inverting amplifier
PLL - A phase locked loop set up to act as a 410x frequency multiplier.

Future Developments

I have a number of ideas for improvements which I could make to Advanced CAD and it is my intention to release a second version in a few months' time. Features may include automatically making links look neat (avoid cutting components), and a larger list of components. If I can find the memory (and the time!), I may even consider some simple PCB layout facilities. The main limiting factor in this version was the memory available, aso I will have to convert the entire program into machine code to make these ideas possible.

One feature which is clearly lacking is an "Undo Link" function. Once you have linked two components, the only way to undo your link is to delete one of the components and then make a new one in its place. This can be a bit tedious with ICs, and so I recommend frequent saving. The reason for this ommision is simply lack of memory, and so this is my first priority in any future version.

If you have any comments/ideas, please do pass them onto me via EUG.

Dominic Ford, EUG #41