home *** CD-ROM | disk | FTP | other *** search
- EEDRAW - Electrical Engineering Drawings (ver 2.2)
- --------------------------------------------------
-
- BECAUSE EEDRAW/EED-PS/EEDEPSON ARE LICENSED FREE OF CHARGE, I PROVIDE
- ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE STATE LAW.
- EXCEPT WHEN OTHERWISE STATED IN WRITING, I GERSHON ELBER PROVIDE EEDRAW/
- EED-PS/EEDEPSON PROGRAMS "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
- EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
- ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
- YOU. SHOULD THE EEDRAW/EED-PS/EEDEPSON PROGRAMS PROVE DEFECTIVE, YOU ASSUME
- THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL GERSHON ELBER,
- BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST MONIES,
- OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
- USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR A FAILURE
- OF THE PROGRAM TO OPERATE WITH PROGRAMS NOT DISTRIBUTED BY GERSHON ELBER)
- THE PROGRAM, EVEN IF YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES,
- OR FOR ANY CLAIM BY ANY OTHER PARTY.
-
- 1. INTRODUCTION
- ---------------
-
- EEDraw is a simple parametric drawing program, specifically designed for
- EE (Electrical Engineering) type of drawing. The program fully allows new
- parametric types, through library mechanisms, and in fact all the EE types
- are defined this way. This library mechanism is extremely useful in defining
- new types and can be used for other applications other than EE.
-
- The following graphic devices are supported for display:
- Hercules, CGA, ATT, EGA, VGA and SVGA (through user provided BGI driver).
- The following printing devices are supported (via the printing drivers):
- EPSON compatible printers (8 pins), PostScript printers.
-
- Usage: EEDraw [-z] *[FileName[.EED]]
-
- Options: [-z] Print version number and usage.
-
- Quick start: The program comes with quite common setup. If you have a mouse
- and a VGA/EGA/Hercules/CGA then you can simply start eedraw. Typing
- 'eedraw 82720-1.eed 82720-2.eed' will restart eedraw and prompt you for two
- windows for the above two files. Click on left button (return on keyboard)
- to pick window corners. Click on right button (space bar on keyboard) if you
- want to default size (maximum size). Alt-Q, by default, will take you out.
-
- 2. INSTALATION
- --------------
-
- For correct execution of the main program (EEDraw), the following files must
- exist in one of the path directories:
-
- 1. EEDraw.exe
- 2. EEDraw.cfg
- 3. EEDraw.bnd
- 4. EEDraw.hlp
- 5. *.lib
-
- For correct execution of the printer drivers (EED-PS, EED-Epsn), the following
- files must exists in one of the path directories (see also Appendix B):
-
- 1. EED-PS.exe 1. EED-Epsn.exe
- 2. EED-PS.cfg 2. EED-Epsn.cfg
- 3. *.lib 3. *.lib
-
- The library files (*.lib) are the same for the printer drivers and eedraw
- itself and should exist probably only once.
- See SETUP below shows how to change the setup of this programs.
- The default values should be enough to start and learn this program.
-
- 3. SETUP
- --------
-
- EEDraw set up is done through two files: EEDraw.cfg and EEDraw.bnd.
-
- EEDraw.cfg
- ----------
-
- This files contain global parameters that should be selected and set only
- once, in final installation stage. Empty lines or anything after a semicolon
- (';') is ignored. This file is read once with eedraw is being started.
- Parameters that can be set are:
-
- 1. AutoPan - Boolean flag. If TRUE, any operation involves in the drawing
- space (such as move, copy or draw) will auto-pan if cursor exists screen.
- If FALSE, Panning option must be used manually to perform this operation.
- This Boolean flag can be set from the Status main menu.
- For example:
- AutoPan TRUE
- 2. WindowName - Boolean flag. If TRUE each EEDraw data file name is printed
- in the head of the file. If FALSE no name is printed and this makes some
- more space for the drawing itself.
- This Boolean flag can be set from the Window main menu.
- For example:
- WindowName TRUE
- 3. ATKeyboard - Boolean flag. If TRUE, it is assumed AT style keyboard bios
- calls (also known as Enhanced keyboard - if you have F11/F12 on your
- keyboard, good chance you can set this to TRUE). This will enable using
- more complex scan codes, not supported by regular keyboard (such as
- F11/F12). Note however it may HANG your system if it is not so.
- For example:
- ATKeyboard FALSE
- 4. MouseSensitivity - Integer flag. Default is set to 10 which is a good
- start. Making this number bigger makes the mouse less sensitive.
- For example
- MouseSensitivity 10
- 5. HVLines - Boolean flag. If TRUE, lines are coerced to be vertical/horizontal
- only. This Boolean flag can be set from the Status main menu.
- For example
- HVLines TRUE
- 6. SnapDistance - Integer value. Sets the distance in drawing space of points
- to be snapped. You probably do not want to change this, especially not in
- the middle of a drawing. This Integer value can be set from Status main
- menu.
- For example:
- SnapDistance 16
- 7. Allow256Colors - Boolean flag. 256 colors BGI drivers will have a richer
- set of colors. If FALSE such a driver will be forced to use only 16 colors
- effectively having same colors are EGA or VGA default colors (EGAVGA.BGI).
- For example:
- Allow256Colors FALSE
- 8. AllowAsyncEvents - Boolean flag. The user interface supports async event
- handling. This means that one can pop up something while something else
- is being poped up already for example. This has the advantage of the
- ability to arbitrary "jump" between commands. However this may be VERY
- confusing as well. Leave it FALSE at least at the beginning!
- For example:
- AllowAsyncEvents FALSE
- 9. SaveBackMethod - Integer. Underlaying windows are being saved for short
- life time pop up items such as queries. This integer selects where to
- save this data. Options are:
- 1 - Conventional memory. This obviously reduces the amount of memory
- for the EE drawings themselves.
- 2 - Expanded memory.
- 3 - XMS Extanded memory (currently not supported).
- 4 - Disk file. For reasonable response this better be a ram disk. See
- also SaveBackPath below.
- The device, this data is saved into, should be able to hold ~100k for
- 16 colors BGI drivers and twice that for 256 colors BGI drivers.
- For example:
- SaveBackMethod 1
- 10. SaveBackPath - String. This string specifies where back windows should
- be saved. This full path should have a postfix '\' in it.
- For example:
- SaveBackPath "f:\temp\"
- 11. Mouse - Boolean flag. Inform the system if a Mouse exists or not.
- If this is commented out, auto detection will be used.
- For example:
- Mouse TRUE
- 12. Joystick - Boolean flag. Inform the system if a joystick exists or not.
- Must be TRUE for a joystick to be used. Personally the joystick was not
- found accurate enough for this type of drawing.
- Joystick FALSE
- 13. BGIDriverPath - specifies where to look for the *.BGI drivers. Note the
- drivers are supplied with this program (type 'dir *.bgi') and you should
- update this path to the exact place you had moved them.
- For example:
- BGIDriverPath "C:/TC/BGI/ATI"
- 14. GraphDriver - Set what type of display device to use. The relative driver
- *.BGI are looked in the directory specified in BGIDriverPath above.
- The following values are valid (same as TC 2.0/TC++ 1.0 graphics.h file
- if that helps):
- 0 - Auto detect (default, so you can delete this one...)
- 1 - CGA (Hires two colors mode)
- 3 - EGA
- 4 - EGA64
- 5 - EGAMONO
- 7 - Hercules
- 8 - ATT (Not tested)
- 9 - VGA
- 999 - SVGA (super VGA - see SVGANameMode below)
- For example:
- GraphDriver 999
- 15. SVGANameMode - select a BGI driver to use. This driver is searched for only
- if GraphDriver above is set to 999. Thus driver is assumed to be 800 by
- 600 in resolution but any driver with 4:3 aspect ratio will probably be
- o.k.. This driver is searched in the directory specified by BGIDriverPath
- above. For example if the driver you want to use is ATI.BGI and in mode 2:
- SVGANameMode "ATI.2"
- 16. Libraries - String value. A list of libraries (neither file type, nor full
- path is required - only the name) to automatically load on restart,
- separated with commas (','). Libraries can also be loaded using the libs
- main menu, and/or will be automatically loaded when a data files needs them.
- For example:
- Libraries "TTL4LS,EPROM,GENERAL,LINEAR"
- 17. LibrariesPath - String Value. Full path where libraries from
- LoadLibByName should be searched for. Note libraries loaded automatically
- will be searched in all path dirs and specified by PATH env. variable.
- 18. FrameWidth - Integer value. Sets the border width for all windows.
- 19. Colors control. Below are all colors values to select. Each can be one of
- the following 8 colors:
- 0 - WHITE
- 1 - BLACK
- 2 - RED
- 3 - GREEN
- 4 - BLUE
- 5 - YELLOW
- 6 - CYAN
- 7 - MAGENTA
- The colors are self explanatory and grouped into the following groups:
- Root controls colors of the back ground root window. Actv sets the active
- drawing window colors. Psv sets the passive window(s) colors. PopUp
- controls all pop ups like queries colors. HighLigh sets the highlight
- objects color. Below are the color groups themselves.
-
- ;Root window - the backgound.
- RootFrameolor 7
- RootForeColor 3
- RootBackColor 5
- RootXorColor 6
-
- ;Pop up menus/queries.
- PopUpFrameColor 2
- PopUpForeColor 5
- PopUpBackColor 5
- PopUpXorColor 6
-
- ;The currently active file/window if any.
- ActvFrameColor 2
- ActvForeColor 5
- ActvBackColor 4
-
- ;All other passive files/windows if any.
- PsvFrameColor 3
- PsvForeColor 5
- PsvBackColor 4
-
- ;High light color - selected items.
- HighLightColor 2
-
- If this configuration file is not found in any of the path directories,
- a message is printed to the screen, and internal defaults will be used
- instead. This is NOT recommended - fix that as soon as you can, as the
- internal defaults are not guaranteed to be anything specific.
-
- EEDraw.bnd
- ----------
-
- This file allow you to bind any of the program internal functions (as can be
- selected from any of the menus) to a specific key. Note some keys are
- hard-bound and can not be used to rebind function (such as arrow keys - see
- Functionality below). The format of the file is following.
- Empty lines, or lines begin with a semicolon (';') are ignored.
- Every line consists of three items: "FunctionName KeyName ScanCode"
- seperated by white spaces. FunctionName are the fixed names this program
- supports (see blow). KeyName is the name of the key ("AltK" for example) this
- FunctionName will be bound to. Up to 4 characters are allowed for KeyName, and
- this name will appear in the main menu which contains this function. ScanCode
- is the scan code of the bounded key. If the key is regular ascii code, this
- ascii code is the scan code. If it is extended code (such as F? keys are), add
- 256 to this value. All numbers should be in decimal.
- Currently available FunctionName(s) and their associated main menu (see
- Functionality section below for their description):
-
- File menu:
- LoadEEDFile
- NewEEDFile
- SaveAllEED
- SaveEEDFile
- SaveEEDAsOld
- SaveEEDAsNew
- SaveNetList
- CloseEEDFile
- ClearAll
- Directory
- ChangeDir
- ShellToDos
- ExitEEdraw
-
- Window menu:
- PopWindow
- PushWindow
- MoveWindow
- ResizeWindow
- FullSize
- ShowName
- MakeActive
- NameActive
- PanWindowLeft
- PanWindowRight
- PanWindowUp
- PanWindowDown
-
- Display menu:
- ZoomOut
- ZoomIn
- ZoomReset
- RedrawAll
-
- Libs menu:
- LoadLibrary
- LoadLibByName
- FreeLibrary
- ViewLibrary
- DirLibrary
- ChDirLibrary
-
- Draw menu:
- DrawLine
- DrawBus
- DrawConnect
- DrawText
- DrawLibItem
-
- Modify menu:
- ModifyMove
- ModifyCopy
- EditLibItem
- ModifyDelete
- ModifyUnDel
- ModifyCut
- ModifyPaste
- ModifyDrop
-
- Status menu:
- Help
- GetMemoryFree
- GetZoomFactor
- SetDrawText
- SetTextSize
- SetHVLines
- SetSnapFactor
-
- Other (not in any menu):
- SameAgain
-
- 4. Functionality
- ----------------
-
- This section describes the currently available function set, and main modes.
- Although most of the keys may be bound to any function as described in the
- Setup section (EEDraw.bnd description), some of them are hard-bound and should
- not be used. Note that in order for enhanced Keyboard scan codes to be used,
- such as F11 and F12, 'ATKeyboard' must be set to TRUE in eedraw.cfg file.
- See 'Mouse' and 'Joystick' in eedraw.cfg for mouse and joystick setup.
- Below are the "hard-bound" keys:
- A. All the numeric keypad (arrow keys, home, PhUp, End, PgDn). These keys
- are used to move to cursor (even if mouse exists).
- B. All the numeric keys but 0 (used by shift-arrows).
- C. Enter (or Return) key. this is the SELECT key.
- D. Space bar. This is the ABORT key.
- E. Tab. This is equivalent to MIDDLE button key.
-
- The arrow keys are used to move the cursor (co-exist with mouse), and if
- shifted, move cursor faster. In addition to the cursor movement, two
- important keys are defined as well:
- A. SELECT key, hard-bound to the Enter (or Return), left button on mouse,
- if such exists, and button 1 on the joystick, if exists.
- B. ABORT key, hard-bound to the Space bar, right button on mouse if such
- exists, and button 2 on the joystick, if exists.
- C. MIDDLE key, hard-bound to the Tab, middle button on mouse if such
- exists (or pressing both mouse buttons), and both buttons on the joystick.
- All the eedraw functions described below uses these hard-bound keys.
-
- This version supports multi file editing via multi window system (running
- on regular DOS). Each time a file is being open, a new window is created
- for it. If window header is to be shown (see ShowName function below) the
- file name the window is associated with is displayed in addition to its
- status as:
- O)riginal - this file is exactly the same as first loaded in.
- M)odified - the current file state should be saved. Data has been modified.
- S)aved - file has been modified since it was first loaded, but current
- state is being saved.
- There is no limit to number on the number of windows/files that may be open
- at once, aside from DOS and memory limits. The libraries are being shared
- between all files, so reduce memory usage. This means that even if two
- (or more) files needs LINEAR.LIB it will be loaded once into memory.
- However, there is no way for the program to detect which file uses which
- library when they are being saved and it is assumed ALL libraries currently
- loaded are being used by all files.
-
- Few type of interactors are defined to query the user:
- A. Yes/No question - prompt the question, with Yes and No buttons. The SELECT
- key will select the answer. ABORT key is ignored. One may use the Y/N
- keys as well to signal Yes/No answer.
- B. Continue question - prompt a message, and wait for SELECT on the continue
- button. ABORT key is ignored. One may use the C key to continue as well.
- C. String question - prompt a message, and waits for string input. This
- facilitates a full line editor as follows (independent of key bindings):
- * Right and Left arrows will move right and left.
- * Insert toggles Insert/Overwrite modes (toggles cursor shape).
- * Delete deletes current character.
- * Backspace deletes character to the back.
- * Home and End will move to beginning/end of string respectively.
- * Esc clears the current string.
- * Return will terminate editing.
- D. List question - prompt with a list of items (files names for example).
- An item will be picked by the SELECT key if applicative (when viewing
- a directory nothing needs to be picked). ABORT key will usually abort
- the operation, but may have some special operation as well or may be
- ignored.
- E. Menu(s) question. Two types of menus are used - top down from the main menu,
- and pop up on special occasions. Menus behave very much like List questions.
- SELECT key selects menu item while ABORT key usually abort the menu with no
- selection at all.
-
- A. File menu:
- LoadEEDFile - Prompts for a file name (List question), and reads it
- from the current directory, if SELECT key, abort if ABORT key.
- Note file type must be '.eed'. A new window is created for
- it while the user is prompted to set the window size (see
- ResizeWindow).
- NewEEDFile - Creates a new drawing window not assosicated with any
- file. This is the way to create new drawings. The user is
- prompted to set the window size (see ResizeWindow).
- SaveAllEED - Saves all unsaved drawings. This is probably useful
- before quiting eedraw.
- SaveEEDFile - Saves currently edited file. This routine can be used
- only after a new file was saved at list once, or it was loaded.
- In both cases, it will be saved on the same name, after
- renaming old one to have '.bak' extension.
- Ask for verification (Yes/No question).
- SaveEEDAsOld - Same as SaveEEDFile, but prompts with list of all '.eed'
- files in current directory, and saved by the name selected if
- SELECT key, or abort if ABORT key.
- SaveEEDAsNew - Same as SaveEEDFile, but prompts for a new file using
- String question.
- SaveNetList - Save a net list for the active window. Default name is
- same as '.eed' but with '.net' type. Net list is generated by
- scanning the lines and buses object in the drawing. A draw
- should be designed ahead of time so the net list will
- be correct in two respects:
- 1. The net list can not identify individual pins in a BUS and
- will list them all as one (BUS) connection. Therefore
- bus lines should be made individually if this program is
- to make a full net list for it.
- 2. Since only lines and buses are scanned, library items
- connected directly connection will not be detected. An
- easy solution is to put a dummy line connection there so
- that connection will be scanned correctly.
- When the net list is generated the scanned lines/buses are
- highlighted so the remaining non scanned ones can be easily
- viewed (2 above).
- CloseEEDFile - Closes a drawing window associated with a file. Note
- that non of the above saving functions close the window,
- and this function is the only way to close a window.
- Ask for verification if data modified (Yes/No question).
- ClearAll - Clears all eedrawing data in a picked window. The user is
- requested to "click" on the window to clear.
- Ask for verification (Yes/No question).
- Directory - Display content of current directory as in List question.
- both SELECT key and ABORT key can be used to exit this mode.
- Unlike LoadEEDFile, all files are displayed.
- ChangeDir - Prompts with String question for a new directory. Old
- directory is provided to begin with.
- ShellToDos - "Fork"s (I wish this was true...) to the DOS O.S. . Type
- 'exit' at the DOS prompt to return to EEDraw.
- ExitEEdraw - Exits the Program.
- Ask for verification (Yes/No question) and issue a warning
- if not all files were saved.
-
- Window menu:
- PopWindow - Pops up a window the user picks. The window is being
- picked by "clicking" on it. ABORT key aborts this operation.
- PushWindow - Pushes down a window the user picks. The window is being
- picked by "clicking" on it. ABORT key aborts this operation.
- MoveWindow - Moves a window the user picks. The window is being
- picked by "clicking" on it. ABORT key aborts this operation.
- The picked window frame is poped up so current position is
- all visible. The cursor prompt changes to a box in the window
- size that the user needs to place as the new position.
- ResizeWindow - Same as MoveWindow but for resizing the window.
- FullSize - Blows up a window the user picks. The window is being
- picked by "clicking" on it. ABORT key aborts this operation.
- This make the window as big as possible in the current
- display device. Calling this function again on the window
- will recover its original size.
- This function may be activated on drawing windows only.
- ShowName - A toggle to show/hide window name. The window name is
- simply the filename the window is associated with. Also
- displayed is O)riginal, M)odified, or S)aved file status
- as O/M/S letters.
- MakeActive - All drawing operations are performed on the active
- window. If only one drawing window exists it is the active
- one. If more, exactly one of them is the active one. This
- function selects the active window by a user pick. The window
- is being picked by "clicking" on it. ABORT key aborts this
- operation.
- NameActive - All drawing operations are performed on the active
- window. If only one drawing window exists it is the active
- one. If more, exactly one of them is the active one. This
- function selects the active window by name. A list query of
- all drawing window (file) names is being poped up and the
- selected becomes the active one.
- PanWindowLeft - Pan the ACTIVE window a half window to the left.
- PanWindowRight - Pan the ACTIVE window a half window to the right.
- PanWindowUp - Pan the ACTIVE window a half window up.
- PanWindowDown - Pan the ACTIVE window a half window down.
-
- Display menu:
- ZoomOut - Zoom out (center of screen remains at center) by factor of 2.
- Note that if you zoom out from regular zoom factor, text will
- disappear as it can not be shrinked. You can enable text from
- the Status menu manually.
- ZoomIn - Zoom in (center of screen remains at center) by factor of 2.
- ZoomReset - Reset Zoom value to the regular zoom factor.
- RedrawAll - Redraw all screen.
-
- Libs menu:
- LoadLibrary - Prompts for a file name (List question), and reads it
- from the library directory, if SELECT key, abort if ABORT key.
- Note file type must be '.lib'.
- LoadLibByName - Loads one or several libraries (seperated by commas)
- by providing their names. To load EPROM.LIB and LINEAR.LIB
- "eprom,linear" should be typed. Libraries are been search in
- all directories as specified by the PATH environment variable.
- FreeLibrary - Prompts with all loaded libraries with List question,
- and frees the selected one if SELECT key, abort if ABORT.
- ViewLibrary - Prompts with all loaded libraries with List question,
- If a library has been selected via SELECT key, prompt with
- all parts defined in this library again with a List question.
- Selection of a part with SELECT key will display it. ABORT will
- go back to library List question, which can be aborted again
- via the ABORT key.
- DirLibrary - Displays content of library directory library files
- (those with '.lib' extension) as in List question.
- both SELECT key and ABORT key can be used to exit this mode.
- ChDirLibrary - Prompts with String question for a new directory
- for library search. Old directory is provided to begin with.
- This directory is used for Load/DirLibrary routines above
- only. LoadLibByName and auto library loading upon eedraw file
- loading will search all ddirectories as specified by the PATH
- environment variable.
-
- Draw menu:
- DrawLine - Enters drawing mode. If HVLines is set (see SETUP,
- EEDraw.cfg section), only horizontal/vertical lines are
- allowed.
- In this mode, pressing SELECT key will insert a new point
- in the created polyline and pressing ABORT will delete the
- last entered point.
- If however, there are no points at all in the current polyline,
- ABORT key will abort this mode.
- Also, pressing SELECT twice (at the SAME place as the last
- point entered) will complete the drawn polyline.
- MIDDLE key will also complete the line drawing.
- DrawBus - Same as DrawLine, but draw thicker lines.
- DrawConnect - Draw a connection junction, if SELECT key is pressed,
- or abort if ABORT key is pressed.
- DrawText - Prompts for a string with String question, and then position
- the text horizontally or vertically. If the positioning is
- terminated with ABORT it is ignored, SELECT will update.
- DrawLibItem - Prompts for a part name with String question. If this is
- not the first invocation to this mode, last part will be
- used as default string (remember you can always use Esc to
- clear to a fresh line). If part is found (name is exactly the
- same as shown in the ViewLibrary function above), a pop up
- menu will allow to rotate it 90 degree CW or CCW or mirror it.
- Successive SELECT will transform the library item to the
- desired orientation, while ABORT will abort this DrawLibItem
- mode. SELECT PlaceIt (top menu entry) will allow to position
- the part in the exact place.
- The user is also being prompted for Chip (i.e. 74LS00) and
- Part (i.e. IC7) names if they are required/allowed (see
- Appendix on library file definition) for this part.
- These are positioned similar to the way DrawText position
- its text, except that Chip name is already known and can not
- be modified.
-
- Modify menu:
- This menu is heavily based on Picking objects. a single object is
- being picked if the cursor is on an object. The cursor is considered
- on an object if one of the following:
- A. Line and Bus items: the cursor is on one of the Line/Bus end points
- (any point that was set by SELECT when it was created, including
- internal points).
- B. Connect item: the cursor is on the Connect center.
- C. Text item: the cursor is inside the smallest axes parallel bounding
- box holding this text.
- D. Library item: the cursor is on any polyline end point (including
- internal points).
-
- The picked object will blink. SELECT key will select it, ABORT key
- will cause the next object, if such exists at this position, to blink
- until one is selected via the SELECT key, or no more objects can be
- picked.
-
- If no object at all is found at the cursor point, the point is used
- as first corner of a box to pick a set of objects - a second SELECT
- key will pick the second corner of the box, ABORT key will abort this
- mode. All objects intersect with the defined box, will be considered
- picked, with no more verification.
-
- ModifyMove - Pickes object(s), and moves it (them) to a new position.
- Once the object(s) i s(are) picked, SELECT key will set
- its(their) new position, ABORT will leave it unchanged.
- ModifyCopy - Pickes object(s), and copies it (them) to a new position.
- Once the object(s) is (are) picked, SELECT key will place
- it(them) in new position, ABORT will abort the copy operation.
- EditLibItem - if the picked object(s) is a single library item, allows
- editing any of the following (via a pop up menu):
- A. Editing the part name. This is the only way to add a part
- name to a library item if the library item has none by
- default.
- B. Toggle to Draw/Undraw chip name (if this chip is allowed
- to have one).
- C. Reposition Chip name (if this chip have one).
- D. Reposition Part name (if this chip is allowed to have one).
- E. Reorient the lib part.
- Picking one of the above via SELECT will allow text
- positioning or text editing (via String question). ABORT or
- selecting Done (first menu entry) will abort this EditLibItem
- mode.
- ModifyDelete - Deletes the picked object(s). The deleted object(s) is
- (are) saved in a special 10 places deep stack, and deleted
- items can be undeleted using the ModifyUnDel function.
- Each of the 10 placed stack can hold any result of a pick
- no matter how many objects are inside.
- This Delete/Undelete mechanism can be used to cut and paste
- even between different files/windows - this stack is never
- being cleared.
- ModifyUnDel - Undelete the last delete operation (see ModifyDelete),
- from the delete stack (LIFO).
- ModifyCut - Same as ModifyDelete, but original is NOT deleted. The
- object is being pushed onto the undelet stack and can then be
- ModifyUnDel, ModifyPaste etc.
- ModifyPaste - Same as ModifyUnDel, but the undelete stack is NOT
- modified. This function enables pasting and placing the same
- object few times.
- ModifyDrop - Drops the top of stack from the undelete stack. May be
- used to drop a cut/paste object sequence from stack.
-
- Status menu:
- Help - Pops up an help window and displays the content of eedraw.hlp.
- If the help window is already poped up, this function will
- close it (acts like a toggle.).
- GetMemoryFree - Prompts with a continue question, on the current free
- memory. Getting close to zero is unsafe!
- GetZoomFactor - Allows you to see the current zoom factor
- SetDrawText - Sets drawing of text smaller than minimal size (8x8).
- This will draw text at 8x8 size which is too big, but may be
- sometimes useful.
- SetTextSize - Sets the scaling (up only) of the text size. By default
- this is equal to 1, but up to scaling up by 7 is allowed.
- SetAutoPan - If TRUE, auto panning will occur when placing
- objects that have been moved off the active WINDOW. The
- object will be place so it is centered in the window.
- SetHVLines - Allows drawing of diagonal lines as well if set to FALSE.
- Uses Yes/No question.
- SetSnapFactor - Sets the invisible grid the cursor position is
- snapped to. You probably do not want to change this,
- especially not in the middle of file editing.
- Uses String question, and display current Snap factor to
- begin with.
-
- Other (not in any menu):
- SameAgain - Executes the last function again. This is hard bounded
- to MIDDLE key, although in may be bounded to another key
- as well.
-
- 5. Spacial Notes
- ----------------
-
- Designing using A4 page size does not require much memory even when few
- libraries are loaded. My system with 640k (-70k of the O.S) has almost 300k
- free to use (Use the GetMemoryFree function to query free memory), when all the
- provided libraries are loaded. I guess you will need to work hard to get down
- to less than 100k. If you succeed and/or you system has less than 640k memory,
- make yourself a rule: never to go below 64k of free memory. The program need
- about 32k of temporary memory for the different operations, and getting close
- to that is dangerous! When you approach 32k of free memory, you will be
- issued a warning (Continue question):
-
- Free memory too small - dangerous to continue.
-
- Every 30 second (if you do any operation in that time). Continuing at this
- point may result with loss of all your work - the program will exit when no
- more memory will be available! This is especially true if 'SaveBackMethod'
- in eedraw.cfg is set to conventional memory.
-
- Yes, I know this is ugly, but you eat what you cook, right? I used this
- program quite a bit, and never succeeded to go below 200k, so why bather.
-
- 6. Acknowledgement
- ------------------
-
- I would like to thank skh@eng.sun.com (Steve Howell) for his great comments
- during the last stages of bringing version 2.0 up.
-
- -------------------------------------------------------------------------------
-
- Appendix A. Glossary
- --------------------
-
- SELECT Key - The key used for the select operation. Currently hard-bound to
- Enter (or Return), the Left mouse button if mouse exists, and to
- Button 1 in a joystick.
-
- ABORT Key - The key used for the abort operation. Currently hard-bound to
- Space bar, the Right mouse button if mouse exists and to Button 2
- in a joystick.
-
- MIDDLE key - Another general purpose key. Currently hard-bound to
- Tab keyr, the Middle mouse button if mouse exists and has middle
- button (or both right and left buttons pressed simultaneously)
- and to both Buttons of the joystick.
-
- Screen Space - the space of the display device. Depends on the graphic
- device coordinates on the selected mode.
-
- Drawing Space - the space in which the drawing objects exist. This space
- is bounded by a wide box (zoom out twice to see this box on an
- empty drawing) so it will fit into an A4 (8.5" by 11") page in both
- the EPSON and the PostScript printer drivers (see Appendix B).
-
-
- Appendix B. Printer drivers
- ---------------------------
-
- The following printer drivers are available (see also installation section):
-
- 1. EPSON printer.
-
- Usage: EEDEpson [-g] [-r] [-1] [-2] [-3] [-d] [-z] FileName[.EED]
-
- Options: [-g] Output goes to standard output as 1 bit per pixel (B&W)
- GIF file.
- [-r] Output goes to standard output as raw data.
- [-1], [-2], [-3] Output goes to LPT1:, LPT2:, LPT3:
- respectively.
- [-d] If output goes to Epson printer - print in double the
- density.
- [-z] Print version number and usage.
-
- * if neither [-g], not [-r] are specified, output is in Epson
- compatible format (default).
- * If non of [-1], [-2], [-3] are specified, output goes to
- standard output.
- * [-1], [-2], [-3], [-d] are ignored if [-g] or [-r] are
- specified.
-
- 2. PostScript Printer.
-
- Usage: EED-PS [-f FontName] [-z] FileName[.EED]
-
- Options: [-z] Print version number and usage.
- [-f FontName] Specify the font name to use instead of the
- default name (Times-Roman).
-
- PostScript output goes to stdout. If a PostScript Printer is
- connected to com2: serial port then 'eed-ps drawing.eed > com2:'
- will print drawing.eed on that printer.
-
- Appendix C. Library file format
- -------------------------------
-
- This appendix describes the format of the library file. It contains
- all the information required to create your own libraries. The libraries are
- designed to be parametric only. I.e. no bitmaps are supported. You can look
- at the given libraries while reading this appendix for better understanding.
-
- Empty lines and lines starts with '#' are ignored. In order to identify
- a library as such the first line must start with 'EEDRAW-LIB'. Following in
- the same line is version number as 'Version X.X'. Currently 'X.X' equal '1.0'
- and is ignored. However it may be used in future versions, to ensure backward
- compatibility. Following are the parts themselves. Each part definition begins
- as follows:
-
- DEF Name Prefix #Pins TextInside DrawNum #Units #PinsPerUnit
-
- Were 1. Name is the Part name, i.e. "74LS00". If Name is prefixed with "~"
- (for example "~74LS00") then the name is not drawn, nor it will be
- accessible to the user.
- 2. Prefix is the prefix to be used in chip name (IC, R, C etc.). If
- prefix is "~", then no prefix is drawn.
- 3. #Pins is the same as number of entries in PINS (see below),
- i.e 14 for 74LS00.
- 4. TextInside is 0 if pin text is to be put outside as well (as the
- pin numbers are), otherwise inside. You may put any positive
- integer there to scale the distance inside. 10 is a good start.
- 5. DrawNum is 1 if pin numbers are to be drawn, 0 otherwise.
- 6. #Units holds number of multiple entries. For example 74LS00 has
- 4 units (Nand gates). For no multiple units put 0 here.
- 7. #PinsPerUnit holds number of entries for one unit if more than
- one unit per part. If #Units is 0, it is ignored.
-
- The part definition follows by the following blocks, in any order:
-
- 1. DRAW/ENDDRAW - defines how to draw the part. This block is optional, and
- a simple box with half the pins on each side is drawn if this block is
- not defined. The following commands are supported:
- A x y r t1 t2 (Define ARC at x, y, radius r, angles t1 to t2)
- P n x y x y x y... [F] (Define a POLYLINE of (any) length n)
- C x y r (Define a CIRCLE at x, y, radius r)
- S x1 y1 x2 y2 (Define a square (Not filled))
- T x y h str (Define a text string at x, y (see below))
- L x1 y1 x2 y2 [I] (Define terminal line to part - see PINS)
-
- Notes:
- A. a text string (S) with be drawn horizontally if h is 1, vertically if 0.
- Also '~' characters will be replaced by spaces, or this provides a
- mechanism to have spaces in the string.
- B. If the polyline (P) is postfixed by a F, the polyline should define a
- closed shape that will be filled. The first point of the polyline must
- be identical to last one in this case.
- C. If the line (L) is postfixed by an I, this line is assumed to define
- negative logic, and a small circle will be drawn to express that.
- D. The number of L definitions should be exactly the same as #Pins in the
- DEFS line if #Units = 0, and equal #PinsPerUnit if #Units != 0.
- The order will match to the order in the PINS/ENDPINS block if #Units = 0
- and to the order in the MULTI/ENDMULTI if #Units != 0.
- E. Arcs (A) should not exceed 180 degrees, are CCW, and 0 degrees is at
- 3 o'clock.
-
- 2. PINS/ENDPINS - defines the names (strings) associated with each pin. This
- block must always exists, and it is the minimum required to define a part.
- The block holds #Pins lines each hold the string defines that pin. This
- order must be the same as define in the DRAW/ENDDRAW as L commands
- (if DRAW/ENDDRAW block is defined), from pin 1 to #Pins. Empty lines
- are allowed and defined with only '~' in them. Not sign for X (vertical bar
- above it) is defined by ~X.
-
- 3. MULTI/ENDMULTI - This block must exists iff #Unit != 0. Each line in this
- provides a mapping from L terminal definitions in the DRAW/ENDDRAW block
- to the pin numbers in a multi unit part. This is required as same L
- terminal will have different pin number in different Units.
- Each line in this block holds the pin numbers of a unit.
- Number of lines should be equal to number units in part.
-
- Part definition terminates with the ENDDEF line.
-
- General Notes:
-
- 1. All parts are scaled up to easy the access of a single pin (by 16, but you
- should not wonder about it too much - its internal mapping to drawing
- space).
- 2. Library file can hold any number of parts (at list one though...).
- 3. Library file must have '.lib' extension, to be usable by the EED* programs.
-
-
- Gershon Elber
- Email: gershon@cs.utah.edu