home *** CD-ROM | disk | FTP | other *** search
- ABOUT THE PROGRAMS
- ------------------
-
- This is a small printed circuit board cad package. It consists of three
- programs: an autorouter, a board viewer, and a board printer. The following
- comment appears in each of the main programs (pcbroute.c, pcbview.c, and
- pcbprint.c):
-
- ** you may give this software to anyone, make as many copies as you like, and
- ** post it on public computer bulletin boards and file servers. you may not
- ** sell it or charge any fee for distribution (except for media and postage),
- ** remove this comment or the copyright notice from the code, or claim that
- ** you wrote this code or anything derived from it. you may modify the code as
- ** much as you want (please document clearly with comments, and maintain the
- ** coding style), but programs which are derived from this one are subject to
- ** the conditions stated here. i am providing this code so that people can
- ** learn from it, so if you distribute it, please include source code, not
- ** just executables. contact me to report bugs or suggest enhancements; i do
- ** not guarantee support, but i will make an effort in good faith to help you,
- ** and i want to act as a central clearing house for future versions. you
- ** should contact me before undertaking a significant development effort, to
- ** avoid reinventing the wheel. if you come up with an enhancement you
- ** consider particularly useful, i would appreciate being informed so that it
- ** can be incorporated in future versions. my address is: Randy Nevin,
- ** 1731 211th PL NE, Redmond, WA 98053. this code is available directly from
- ** the author; just send a floppy and a self-addressed floppy mailer with
- ** sufficient postage.
-
- What I intend this to say is that you can do anything you want with these
- programs with the following conditions: (1) you can't sell it or anything
- derived from it for profit, and (2) you must give me credit. I do not use the
- terms 'shareware', 'freeware', or 'public domain' to describe these programs,
- since currently accepted definitions for them do not match my intentions.
- These programs are absolutely free.
-
- WHAT THEY DO
- ------------
-
- The autorouter reads a circuit description, routes the traces, and outputs the
- routed printed circuit board to a file. The board viewer can read this file
- and display a picture of the 2-sided board on an EGA monitor. The board
- printer can also read this file, and produces board image files of various
- resolutions. The board image files can then be sent to a Hewlett-Packard
- laserjet II laser printer to get hard copy.
-
- I support the EGA and the HP laserjet II because they are what I have access
- to. I expect the first comments I receive from users to involve support for
- different display adapters (VGA, Hercules..) and printers (QMS, Postscript
- printers..). If you have one of these and are ambitious enough to enhance the
- programs to work with it, I hope you'll contact me so your work can be shared
- with others.
-
- COMPILING THE PROGRAMS
- ----------------------
-
- A makefile is included which compiles and links the three programs. It is
- written for the Microsoft C 4.0 compiler and Microsoft MASM 4.0 macro
- assembler, but should be easily adaptable to whatever compiler/assembler you
- have. (This is an example of an enhancement that others would like to share.)
- The two rules:
- .c.obj:
- cl /G2s /Oat /W3 /Zp /c $*.c
- .asm.obj:
- masm /t /ml $*.asm;
- describe compiling and assembling. /G2s allows the compiler to emit 286
- instructions, and to omit stack-checking code; if you will be running on an
- 8088-based machine, you should use /Gs instead (omit the 2). /Oat is
- optimization, and is optional. /W3 is a warning level, and is optional. /Zp
- causes structures to be packed, and is optional (omitting it could cause the
- programs to use more memory). /c keeps the compiler from initiating a link for
- each module. /t causes MASM to use terse mode, and is optional. /ml causes
- MASM to maintain the case of names (don't automatically uppercase them), and
- is required.
-
- RUNNING THE PROGRAMS
- --------------------
-
- All three programs require command line arguments, and if you forget what they
- are, just execute the programs with no arguments. They will give a usage
- clause describing what arguments are needed.
-
- For pcbroute.exe there are two arguments: the input (circuit description)
- filename, and the output (board description) filename. For pcbview.exe there
- is one argument: the input (board description) filename. For pcbprint.exe
- there is one required argument, the input (board description) filename, and
- four optional arguments: /P indicates portrait mode (the circuit board is
- printed right-side up), /L indicates landscape mode (the circuit board is
- printed sideways), /Rn indicates laser printer resolution (n is 75, 100, 150,
- or 300 dots per inch), and /Zm indicates the zoom factor (m is 0, 1, 2, or 3).
-
- INPUT FORMAT
- ------------
-
- The file called EXAMPLE is an example input file. It defines (a) the
- dimensions of the circuit board, which are 29 rows and 37 columns (think of
- this as a matrix of cells), (b) a chip type (the 7486, which has 4 XOR gates),
- (c) holes where power and ground will be applied, (d) holes where the input
- will be applied, (e) the hole where the output will appear, (f) four instances
- of the 7486 chip, and (g) the pairs of pins that must be connected to complete
- the circuit. For a complete description of the input format, read the large
- block comment at the beginning of file IO.C.
-
- THE FILES
- ---------
-
- MAKEFILE -- describes how to compile, assemble, and link the programs
- BITMAP1.H -- bitmaps for various cell types
- BITMAP2.H -- more bitmaps
- BITMAP3.H -- yet more bitmaps
- CELL.H -- cell types and other global constants
- ALLOC.C -- memory allocation routine
- BITMAP.C -- bitmap data structure definitions
- BOARD.C -- routines to initialize the board, and access cells
- DIST.C -- distance calculation routine
- IO.C -- input format processing routines
- PCBPRINT.C -- main routine for board printer
- PCBROUTE.C -- main routine for autorouter
- PCBVIEW.C -- main routine for board viewer
- QUEUE.C -- routines to manipulate the search queue
- SOLVE.C -- main search routine (using the A* algorithm)
- WORK.C -- routines to manipulate the work list
- PCBPRINT.EXE -- compiled version of board printer
- PCBROUTE.EXE -- compiled version of autorouter
- PCBVIEW.EXE -- compiled version of board viewer
- UTIL.ASM -- assembly language graphics helpers
- ARTICLE -- text of magazine article submitted to Dr. Dobb's Journal.
- when (if?) this is printed, it will be in the second half
- of 1989, and some of the wording may be changed. Some
- figures referred to in the article are not available, but
- hopefully enough material is there to help you understand
- what autorouting is and how it works.
- ASTAR -- the A* search algorithm
- BFS -- the Breadth-First search algorithm
- EXAMPLE -- the example input file
- TTL.INC -- include file which includes all of the TTL74*.INC files
- TTL74*.INC -- ttl chip definition files. you may want to put all of them
- in a subdirectory called TTL
- README -- this file
-
- THE AUTHOR
- ----------
-
- Randy Nevin, 1731 211th pl ne, redmond, wa 98053
-