@DATABASE "Electrics V1.0 Instructions"
@AUTHOR Chris Sterne
@REMARK Requires AmigaGuide.

@NODE MAIN "Electrics V1.0 Instructions"

                   -----------------------------------
                     Electrics Digital Designer V1.0 
                   -----------------------------------

                    Copyright © 1995 By Chris Sterne
                    
Electrics Digital Designer is used for the design and testing of digital
circuits.  Electrics consists of the following three modules:

  @{"Schematic module" LINK Schematic} - Drawing the design.
  @{"Simulator module" LINK Simulator} - Simulating the design.
  @{"Viewer module   " LINK Viewer} - Viewing simulation results.
        

@{u}System Requirements@{uu}

  - Workbench version 2.0 or higher.
  - ReqTools library version 38 or higher.

@{u}ShareWare Notice@{uu}

This program is ShareWare.  If you like this program and use it often,
I would welcome $12Cdn, a gift, or at least acknowledgment of this
program's existence being sent to:
   
   Chris Sterne
   
   1111 West 7th Avenue
   Vancouver, British Columbia
   Canada
   V6H 1B5

@{u}Copyright Notices@{uu}

Installer and Installer project icon
Copyright © 1991-93 Commodore-Amiga, Inc.  All Rights Reserved.

ReqTools is Copyright © Nico François.
@ENDNODE

@REMARK *-------------------------------------------------------------*
@REMARK *                     Schematic Module                        *
@REMARK *-------------------------------------------------------------*
@NODE Schematic
@{u}Electrics Schematic module@{uu}

The Electrics Schematic module is used to draw the circuit design to be
tested.  The drawing is done by placing and connecting various objects, 
such as wires and symbols.

After the design is complete, a Network file can be generated.  This
Network file is used by the Electrics Simulator module to test the
circuit design.

  @{"Window     " LINK "Schematic Window"} - Layout of program window.
  @{"Sheet View " LINK "Schematic Sheet View"} - Viewing the schematic sheet.
  @{"Objects    " LINK "Schematic Objects"} - Object placement.
  @{"Editing    " LINK "Schematic Editing"} - Schematic editing.
  @{"Projects   " LINK "Schematic Projects"} - File management.
  @{"Network    " LINK "Schematic Network"} - Preparing for simulation.
  @{"Limitations" LINK "Schematic Limitations"} - Limitations, bugs, etc.
@ENDNODE

@REMARK *------------------------------*
@REMARK *     Schematic Window         *
@REMARK *------------------------------*
@NODE "Schematic Window"

@{u}Introduction@{uu}

The Electrics Schematic window is divided into two areas; an Information
box, and a schematic Sheet box.

@{u}Information Box@{uu}
        
The Information box lies at the top of the program window.  This area
consists of the following three lines:

PROJECT: Current schematic file name.
MODE:    Current editing mode.
MESSAGE: Current message or error.

@{u}Schematic Sheet Box@{uu}
        
The schematic Sheet box lies just under the Information box.  This is
where the circuit design is displayed and edited.

The Sheet box is divided into grid units, with a maximum of about 10000
grid units in both the horizontal and vertical directions.  When a new
project is started, the origin of the sheet (the first grid in the
upper-left corner of the Sheet box can be envisioned as being in the
center of an expandable sheet with no width or height.  As objects are
placed in the Sheet area, the sheet boundary will grow to accommodate
the new objects.  This sheet growth can occur to the left, right, above,
and below for about 5000 grid units.

@{u}Grid Display@{uu}

The GRID menu options are used to SHOW or HIDE the grid in the Sheet
box.  When the grid is visible, every second grid will be marked with
a dot.
@ENDNODE

@REMARK *------------------------------*
@REMARK *     Schematic Sheet View     *
@REMARK *------------------------------*
@NODE "Schematic Sheet View"
@{u}Schematic Sheet View@{uu}

The schematic sheet view is represented by Scrollers below and
at to the right of the Sheet box.  The center Slider part of the
Scroller represents the visible part of the sheet, while any dark
crosshatched area represent the part of the sheet outside of view. The
displayed view can be changed (if any part of the schematic sheet is
not visible) by moving the Slider.

The keyboard Cursor keys (UP, DOWN, LEFT, RIGHT) can also be used to
change the displayed view of the sheet.  The view will shift in the
direction of the selected Cursor key by about half of the current
visible view.
@ENDNODE

@REMARK *------------------------------*
@REMARK *      Schematic Objects       *
@REMARK *------------------------------*
@NODE "Schematic Objects"
@{u}Introduction@{uu}

A circuit design is drawn using @{"Wire" LINK "Schematic Wires"}, @{"Label" LINK "Schematic Labels"}, @{"Symbol" LINK "Schematic Symbols"}, and @{"Text" LINK "Schematic Text"}.
objects.

@{u}Object Selection@{uu}
        
The desired object to place on the schematic sheet can be selected from
the PLACE menu, or by using the following keyboard keys:

    @{u}OBJECT   KEY@{uu}
    Wire      W
    Label     L
    Symbol    S
    Text      T

The Information box MODE line will indicated the selected object to be
placed (eg. Place Wire).

@{u}Object Colors@{uu}

When using standard Workbench colors, objects will have the following
colors:
    
    @{u}OBJECT   COLOR@{uu}
    Wire     Black
    Label    White  
    Symbol   Black
    Text     Black
        
@{u}Object Placement@{uu}
        
Step #1:
  To begin placement of the selected object, press the left mouse 
  button while the mouse pointer is inside of the Sheet box.  The
  outline of the object will be displayed.  The Information box will
  also indicate that object placement has begun (eg. Placing Wire...).
  
Step #2:
  At this point, the object may be moved to its desired location.
  Pressing the right mouse button while the left mouse button is
  pressed will cancel the object placement.
  
Step #3:
  To be complete the object placement, release the left mouse button
  (and right mouse button if the placement was cancelled).
@ENDNODE

@REMARK *------------------------------*
@REMARK *      Schematic Editing       *
@REMARK *------------------------------*
@NODE "Schematic Editing"
@{u}Introduction@{uu}

After objects have been placed on the schematic, a limited number of
editing options are available.

@{u}Erase Object@{uu}

This editing mode is used to erase single objects from the schematic.
This mode can be entered by selecting ERASE from the EDIT menu, or by
pressing the "E" key on the keyboard.  When Erase mode is active, the
Information box MODE line will display "Erase Object".

To begin erasing an object, move the mouse pointer over an object and 
press the left mouse button.  The object about to be erased will be
highlighted.  Then release the left mouse button to complete the
operation.  As with the object placement mode, pressing the right
mouse button while the object is highlighted will cancel the operation.

@{u}Erase All Objects@{uu}

This option is used to erase all objects on the schematic sheet.  It is
requested by selecting ERASE ALL in the EDIT menu.  A requester will
appear so the operation can be confirmed.  Press "Yes" to continue, or
"No" to cancel the operation.
@ENDNODE

@REMARK *------------------------------*
@REMARK *       Schematic Wires        *
@REMARK *------------------------------*
@NODE "Schematic Wires"
@{u}Introduction@{uu}
        
Wires are used to carry signal levels to and from the pins of Symbol
objects.  When Wire placement mode is active, the Information box MODE
line will display "Place Wire".  

@{u}Placing A Wire@{uu}

Wire placement is begun by moving the mouse pointer to the desired
starting location in the Sheet box and pressing the left mouse button.

One or two Wire segments can be placed at one time.  If the mouse
pointer was moved in a horizontal direction from the starting
location, the first segment of the Wire will remain horizontal, while
a vertical segment can be added by moving the mouse pointer in a
vertical direction.  The opposite will occur if the mouse pointer was
moved in a vertical direction from the starting location. 

If Wire placement began at the open end of an existing Wire segment
(represented by an open round dot), that segment becomes part of the
new Wire.  This allows changing the size of an existing Wire segment.

@{u}Junctions@{uu}

If the beginning or end of a Wire lies on an existing Wire, a
junction will be formed (represented by a solid round dot).  However,
a Wire can cross an existing Wire without making a junction.  
@ENDNODE

@REMARK *------------------------------*
@REMARK *       Schematic Labels       *
@REMARK *------------------------------*
@NODE "Schematic Labels"
@{u}Introduction@{uu}

Labels are used to identify Wires.  They are also the names used when
referring to signals in the Electrics Simulator and Viewer modules.
When Label placement mode is active, the Information box MODE line will
display "Place Label".

@{u}Label Characters@{uu}

The following are the only supported characters for Labels:

    @{u}GROUP            CHARACTERS        @{uu}
    Letters   A to Z (upper case)
    Numbers   0 to 9
    Symbols   #, _(underscore), -(dash)

@{u}Placing A Label@{uu}

A new, or an existing old Label name can used.  If a new Label name is
desired, select Label placement mode.  A requester will appear, and
the new Label name can be entered.  Up to 32 characters may be
entered.  Press "Ok" to accept the name, or "Cancel" to not continue.
If any unsupported characters were entered, they will be replaced by 
the underscore character.  Any lower-case letters will be converted
to upper-case.
  
Label placement is begun by moving the mouse pointer to a Wire to be
labeled, and pressing the left mouse button.  The outline of the Label
will be displayed, and the selected Wire will be highlighted.
  
The last Label name will be remembered, allowing the same Label to be
placed any number of times without having to reselect Label placement
mode.

@{u}Label Quantity Limit@{uu}

A limited number (one or two) Labels can be attached to a Wire segment.
If the Wire segment is "full", the Information box MESSAGE line will
display an error, and the Label placement will be cancelled.

@{u}Label Joining Wires@{uu}

A Label can also be used to "join" two unconnected Wire segments.  To 
do this, label each Wire with the same name.  This technique is often
useful to reduce masses of wires flowing around a schematic sheet. 
@ENDNODE

@REMARK *------------------------------*
@REMARK *      Schematic Symbols       *
@REMARK *------------------------------*
@NODE "Schematic Symbols"
@{u}Introduction@{uu}
        
Symbols are the main elements of the circuit design.  They take input
signals, process them, and generate output signals.  When Symbol
placement mode is active, the Information box MODE line will display
"Place Symbol".

@{u}Placing Symbols@{uu}

A new, or existing old Symbol can used.  If a new Symbol is desired,
select Symbol placement mode.  A requester will appear, containing a
list of @{"Available Symbols" LINK "Available Symbols"}.  Click on the desired Symbol, or press
"Cancel" to not continue.

Symbol placement is begun by pressing the left mouse button while the
mouse pointer is in the Sheet box.
  
The last Symbol will be remembered, allowing the same Symbol to be
placed any number of times without having to reselect Symbol placement
mode.

@{u}Symbol Pins@{uu}

Connections are made at the pins of a Symbol.  These pins are located 
around the outside border of the Symbol.  The pin may be represented by
a short straight line (active-HIGH signal), or by a bubble
(active-LOW signal).  A Symbol connection is made by either placing the
pin of a Symbol on an existing Wire segment, or by connecting the pin of
an existing Symbol to a Wire.  A connection can also be made without a
Wire by placing the pin of one Symbol on the pin of another. 
@ENDNODE

@REMARK *------------------------------*
@REMARK *  List of available Symbols   *
@REMARK *------------------------------*
@NODE "Available Symbols"
@{u}Available Symbols@{uu}

The following is a list of the available Symbols, and a description
of their function.

ELEMENT:PUP      - Weak pullup resistor to logic "1".
ELEMENT:PDOWN    - Weak pulldown resistor to logic "0".
ELEMENT:BUF      - Non-inverting buffer.
ELEMENT:OCBUF    - Open-collector non-inverting buffer.
ELEMENT:OCNBUF   - Open-collector inverting buffer.
ELEMENT:TRIBUF   - Tristate non-inverting buffer.
ELEMENT:NOT      - Inverter.
ELEMENT:2NAND    - 2-input NAND gate.
ELEMENT:3NAND    - 3-input NAND gate.
ELEMENT:2NOR     - 2-input NOR gate.
ELEMENT:3NOR     - 3-input NOR gate.
ELEMENT:2AND     - 2-input AND gate.
ELEMENT:3AND     - 3-input AND gate.
ELEMENT:2OR      - 2-input OR gate.
ELEMENT:3OR      - 3-input OR gate.
ELEMENT:2XOR     - 2-input exclusive OR gate.
ELEMENT:2XNOR    - 2-input exclusive NOR gate.
ELEMENT:2MUX     - 2 to 1 multiplexer.
ELEMENT:DELAY    - Single time unit delay element.
ELEMENT:DFF      - Data flip-flop with rising-edge clock.
ELEMENT:SRDFF    - Data flip-flop with active-LOW Set and Reset.
ELEMENT:DLATCH   - Data latch with active-HIGH enable.
ELEMENT:SRDLATCH - Data latch with active-LOW Set and Reset.

The ELEMENT prefix indicates that these are all part of the Element
group.  Future Electrics versions may allow several or custom groups.

@ENDNODE

@REMARK *------------------------------*
@REMARK *        Schematic Text        *
@REMARK *------------------------------*
@NODE "Schematic Text"
@{u}Introduction@{uu}

Text can be used for general comments on the schematic.  When Text
placement mode is active, the Information box MODE line will display
"Place Text".

@{u}Text Characters@{uu}

The following are the only supported characters for Text:

    @{u}GROUP        CHARACTERS            @{uu}
    Letters   A to Z (upper case)
    Numbers   0 to 9
    Symbols   #, _(underscore), -(dash)

@{u}Placing Text@{uu}

New or existing old Text can used.  If new Text is desired, select Text
placement mode.  A requester will appear, and the new Text can be
entered.  Up to 80 characters may be entered.  Press "Ok" to accept the
text, or "Cancel" to not continue.  If any unsupported characters were
entered, they will be replaced by the underscore character.  Any
lower-case letters will be converted to upper-case.
  
Text placement is begun by pressing the left mouse button while the
mouse pointer is in the Sheet box.

The last Text will be remembered, allowing the same Text to be
placed any number of times without having to reselect Text placement
mode.
@ENDNODE

@REMARK *------------------------------*
@REMARK * Schematic Project Management *
@REMARK *------------------------------*
@NODE "Schematic Projects"
@{u}Introduction@{uu}

The PROJECT menu allows saving and loading of schematic files.

@{u}New Schematic@{uu}

When the Schematic module is first started, or if the NEW option was
selected in the PROJECT menu, the schematic sheet and the Information
box PROJECT line will be empty.

@{u}Saving a Schematic@{uu}

There are two methods to save a schematic; SAVE, and SAVE AS.

SAVE will save the schematic using the existing project name shown on
the Information box PROJECT line.  If there is no existing project, a
file requester will appear so a name can be provided.  It is
suggested to append ".sch" to the name of a schematic file.

(eg. MyProject: schematic file would be MyProject.sch)

SAVE AS will always display the file requester, so a different project
name can be provided.

If the schematic file was saved successfully, its name will appear on
the Information box PROJECT line.

@{u}Loading a Schematic@{uu}

When the OPEN option is selected in the PROJECT menu, a file requester
will appear, and a schematic file can be selected.  Attempting to load
a file other than an Electrics schematic will cause an error to be 
displayed on the Information box MESSAGE line.

@{u}Save Before Continuing@{uu}

If the current schematic was modified before selecting the NEW, OPEN,
or QUIT menu items, a requester with three options will appear.  The
current schematic changes can then be saved by pressing "Yes", or
discarded by pressing "No".  Pressing "Cancel" will cancel the
operation.
@ENDNODE

@NODE "Schematic Network"
@{u}Generating a Network@{uu}

Before simulating the circuit design, a special Network file must be
created from the schematic design.  This is done by selecting the 
NETWORK option in the PROJECT menu.  A file requester will appear, and
a Network file name can be provided.  When providing a name, it is
suggested to use the schematic name, but append ".net" at the end.

(eg. MyProject.sch: network file would be MyProject.net)

@ENDNODE

@REMARK *------------------------------*
@REMARK *    Schematic Limitations     *
@REMARK *------------------------------*
@NODE "Schematic Limitations"
@{u}Introduction@{uu}

This version of the Electrics Schematic module has several limitations
that should be noted.

@{u}Editing@{uu}

The only option for manipulating an object after it has been placed
is to delete the object.

@{u}Placing Objects@{uu}

Do not place objects on top of each other.  Do not place Wires over
Symbols, or allow two Wires with the same direction to lie on top of
each other (other than crossing each other).  Otherwise, ackward
situations may occur.

@{u}Wire Labeling@{uu}

Do not place two Labels with different names on a Wire segment.  When
a Network is generated from the schematic, one of the Labels will be
discarded.  No error or warning messages will be displayed.

@{u}Projects@{uu}

Only one schematic sheet can be used per project.

@{u}Shifting Sheet@{uu}

When object placement has begun, the Cursor keys cannot be used to
shift the Sheet view.  This means the starting and ending points of a
Wire must both reside in the Sheet box.
@ENDNODE

@REMARK *-------------------------------------------------------------*
@REMARK *                     Simulator Module                        *
@REMARK *-------------------------------------------------------------*
@NODE Simulator
@{u}Electrics Simulator module@{uu}

The Electrics Simulator module evaluates a Network file created by the
Electrics Schematic module.  Signal levels are then applied to the
Network, and output signal levels are generated.

  @{"Window     " LINK "Simulator Window"} - Layout of program window.
  @{"Signals    " LINK "Simulator Signals"} - Signal levels and drive.
  @{"Network    " LINK "Simulator Network"} - Network file.
  @{"Script     " LINK "Simulator Script"} - Simulation script.
  @{"Simulation " LINK "Simulator Simulation"} - Simulation control.
  @{"Viewer     " LINK "Simulator Viewer"} - Activation of Viewer Module.
  @{"Limitations" LINK "Simulator Limitations"} - Limitations, bugs, etc. 
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Window          *
@REMARK *------------------------------*
@NODE "Simulator Window"
@{u}Information Box@{uu}
        
The Simulator window is divided into one area; an Information box.
This area consists of the following three lines:

NETWORK: Current Network file name.
SCRIPT:  Current Script file name.
MESSAGE: Current message or error.
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Signals         *
@REMARK *------------------------------*
@NODE "Simulator Signals"
@{u}Signal Names@{uu}

Signal names are the same names that were used to label Wires on the
original schematic sheet.

@{u}Signal Levels@{uu}

Four signal levels are supported by the Simulator:
  
    @{u}NAME     LEVEL @{uu}
    Low        0
    High       1
    Unknown    X
    Floating   Z

These signal levels may be applied to the Network, or generated by the
Network.

@{u}Signal Drive Strength@{uu}

Two signal drive strengths are supported by the Simulator; Strong, and
Weak.  A pullup (eg. ELEMENT:PUP) is a Weak signal driver.  This means
that a strong driver (eg. ELEMENT:BUF) can overdrive the Weak signal.

@{u}Signal Contention@{uu}

If two drivers with the same drive strength are connected together,
and each are trying to drive a signal to opposite levels, contention
will result.  The resulting level on the signal will the unknown "X"
level.

@{u}Initialized Network@{uu}

When a Network has been reset, all signals and contents of any 
memory elements will be initialized to the unknown "X" level.
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Network         *
@REMARK *------------------------------*
@NODE "Simulator Network"

@{u}Introduction@{uu}
        
The Network file produced by the Electrics Schematic module is a
description of how all the Symbol objects on the original schematic were
interconnected, and their connection names.

@{u}Loading a Network@{uu}

To load a Network file, select the NETWORK item in the PROJECT menu.  A
file requester will appear so a Network file can be selected.  If a
Network file was loaded successfully, its name will appear on the
Information box NETWORK line.
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Script          *
@REMARK *------------------------------*
@NODE "Simulator Script"
@{u}Introduction@{uu}

A simulation Script file is a standard ASCII text file containing a
sequence of @{"Script Commands" LINK "Simulator Commands"} for controlling the Simulator.  This file
can be created using any standard text editor.

@{u}Loading a Script@{uu}

To load a Script file, select the SCRIPT item in the PROJECT menu.  A
file requester will appear so a Script file can be selected.  If a
Script file was loaded successfully, its name will appear on the
Information box SCRIPT line.

A Script file can only be loaded after a Network file has been loaded
(the SCRIPT item in the menu will remain unselectable until this is
done).  Signal names in a Script file are confirmed to exist in the
loaded Network before the Script file will be accepted.  If a signal
is not found, the Script file loading will be cancelled, and an error
message will appear on the Information box MESSAGE line.
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Script          *
@REMARK *------------------------------*
@NODE "Simulator Commands"
@{u}Script Commands@{uu}

The following is a list of supported Script commands: 

Assign <SIGNAL> <Level> - Assign a signal level to a named signal.
Run [Time]              - Run a simulation.  Time is optional.
Loop [Count]            - Loop a command sequence.  Count is optional.
View                    - View named signals.
Section                 - End of a Loop or View section.
Pause                   - Pause the simulation.
Reset                   - Reset simulation to time 0.

Script commands are not case-sensitive.  Although other words or symbols
will be ignored, it is suggested to use the "!" exclamation mark for
adding comments in the Script file.  Comments cannot be placed on the
same line as Script commands, or anywhere inside of a View section.

Assign <SIGNAL> <Level>

   This command is used to assign signal levels to named @{"Signals" LINK "Simulator Signals"}.
   Assignments should only be made to undriven signals.  Otherwise, the
   assigned signal level may be lost if the signal is driven by another
   source.  Signal names must be in upper case (just as they appear in
   the original schematic).  "X" and "Z" levels may be in lower case
   ("x" and "z") if desired.
   
Run [Time]

   This command evaluates the Network for at least one time unit
   (if Time is not given), or for up to 4294967295 time units.  After
   the Network has become stable in the current time unit, the levels
   present on the signals are sent to the Electrics Viewer module for
   recording.

Loop [Count]
  :     
  :
Section
   
   This command loops a sequence of Script commands at least once
   (if Count is not given), or for up to 4294967295 times.  The
   Section command is used to end the commands being looped.  Loop
   sections cannot nested within other Loop sections.

View
 :
 :
Section
   
   This command indicates the beginning of a list of signal names
   that are to have their activity recorded by the Electrics Viewer
   module.  A signal name can appear multiple times in the list.  The
   Section command is then used to indicate the end of the signal list.
   The presence of this command in a Script file will reset the
   Electrics Viewer, and replace the Viewer's signal list with the new
   list.  This command does not have to be present in a Script file,
   since some Script files may be used to continue the simulation done
   by previous Script file.

Pause

   This command pauses the simulation indefinitely.
   
Reset

   This command resets the simulation back to time 0, initializing all
   signals and memory elements to the unknown "X" level.
   
@{u}Simulation Script Example@{uu}

The following is an example of a Script file, with all commands being
used.  The indents, blank lines, and comments shown in the example are
not necessary, but may improve the readability of the Script file.

!View the following signals: DATA0, DATA1, CLOCK, and OUTPUT.

View
  DATA0
  DATA1
  CLOCK
  OUTPUT
Section

!Assign "0" to CLOCK, and run simulation for 1 time unit.

Assign CLOCK 0
Run

!Assign "1" to DATA0, "0" to DATA1.  Run simulation for 4 time units.

Assign DATA0 1    Assign "1" to DATA0 signal.
Assign DATA1 0    Assign "0" to DATA1 signal.
Run 4             Run simulation for 4 time units.

!Loop for 3 times to generate an alternating CLOCK signal.

Loop 3
  Assign CLOCK 1
  Run
  Assign CLOCK 0
  Run
Section

!Pause the simulation.

Pause

!Run the simulation for 1 time unit.

Run

!Reset simulation and the Network to time 0.

Reset

!Assign "X" to CLOCK, and run simulation for 1 time unit.

Assign CLOCK X
Run

!Assign "0" to DATA0, "Z" to DATA1, and simulate for 2 time units.

Assign DATA0 0
Assign DATA1 Z
run 2
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Simulation      *
@REMARK *------------------------------*
@NODE "Simulator Simulation"
@{u}Introduction@{uu}

After a Network and Script file have been loaded successfully, the 
simulation can begin.  The SIMULATION menu is now available with several
control options.

@{u}Run Simulation@{uu}

The RUN option will start running a newly-loaded Script file.  If a
simulation had been paused (either by a Pause command in the Script, or
by using the PAUSE menu option), the simulation will continue from where
it was stopped.

While the simulation is running, the Information box MESSAGE line will
display "Simulation running...".  When complete, the MESSAGE line
will display "Simulation complete.".

@{u}Pause Simulation@{uu}

The PAUSE menu option will pause the simulation until the RUN menu 
option is selected.  The Information box MESSAGE line will display
"Simulation paused.".

@{u}Reset Simulation@{uu}

The RESET menu option causes the Simulator to return to the beginning of
the Script file, reset the Network back to time 0, and initialize all
signals and memory elements to the unknown "X" level.  The Information
box MESSAGE line will display "Simulation reset to time 0.  The
Electrics Viewer will also be reset to time 0.  The RUN menu option can
then be selected to run the simulation Script again.
@ENDNODE

@REMARK *------------------------------*
@REMARK *    Simulator Viewer          *
@REMARK *------------------------------*
@NODE "Simulator Viewer"
@{u}Viewer Activation@{uu}

The Electrics Viewer module must be active before a simulation Script
is run if the simulation results are to be recorded.
@ENDNODE

@REMARK *------------------------------*
@REMARK *     Simulator Limitations    *
@REMARK *------------------------------*
@NODE "Simulator Limitations"
@{u}Introduction@{uu}

This version of the Electrics Simulator module has several limitations
that should be noted.

@{u}Zero Delay Loop@{uu}

A zero delay loop will occur when the following conditions exist:

  - The output of a circut is fed back to the input.
  - The feedback path is inverting.
  - There are no delay elements in the feedback path (zero delay).
  - The feedback path is not at an unknown "X" level.

When the above conditions exist, the Simulator will appear to hang.
This is because such a circuit actually oscillates at an infinite
frequency and never becomes stable.  However, the simulation can still
be paused or reset.

@{u}Script Files@{uu}

If a simulation Script file contains a signal name not present in the
Network, an error will be reported.  However, the Script file line
number containing the unknown name will not be indicated.

Limited error-checking is performed on Script files.  Please avoid
loading a non-Script file.
@ENDNODE

@REMARK *-------------------------------------------------------------*
@REMARK *                       Viewer Module                         *
@REMARK *-------------------------------------------------------------*
@NODE Viewer
@{u}Electrics Viewer module@{uu}

The Electrics Viewer module records the level on signals while the 
Electrics Simulator module is running a simulation.

  @{"Window     " LINK "Viewer Window"} - Layout of program window.
  @{"Signals    " LINK "Viewer Signals"} - List of signals.
  @{"Trace      " LINK "Viewer Trace"} - Viewing simulation history.
  @{"Zoom       " LINK "Viewer Zoom"} - Changing the trace view zoom.
  @{"Marker     " LINK "Viewer Marker"} - Trace marker.
  @{"History    " LINK "Viewer History"} - Erasing simulation history.
  @{"Recording  " LINK "Viewer Recording"} - Recording signal activity.
  @{"Limitations" LINK "Viewer Limitations"} - Limitations, bugs, etc.
@ENDNODE

@REMARK *------------------------------*
@REMARK *      Viewer Window           *
@REMARK *------------------------------*
@NODE "Viewer Window"
@{u}Introduction@{uu}

The Viewer window is divided into three area; an Information box,
a Signal box, and a Trace box.

@{u}Information Box@{uu}
        
The Information box lies at the top of the program window.  This area
consists of the following three lines:

PROJECT: Current Network file name.
TIME:    Current visible time and marker position.
MESSAGE: Current message or error.

The TIME line indicates the first and last visible time, the time at
the Marker, and the difference between the current Marker time and
the previous Marker time.  For example:

  TIME: 0 to 55, 10 delta 5

  Beginning time = 0; End time = 55.
  Marker is on time 10, and was moved 5 time units.

@{u}Signal Box@{uu}

The Signal box lies at the left part of the program window.  This area
contains the list of signals to have their history of activity recorded.
When the Electrics Simulator processes a View command, the Signal box
will show the requested signals names.  The activity of over 65000
signals can be recorded at one time.

@{u}Trace Box@{uu}

The dark area below the Information Box and to the right of the Signal
box is the Trace box.  The record of the signal's history is shown here
as a trace waveform.  Over 4.2 billion time units can be recorded and
viewed.
@ENDNODE

@REMARK *------------------------------*
@REMARK *        Viewer Signals        *
@REMARK *------------------------------*
@NODE "Viewer Signals"
@{u}Viewer Signal List@{uu}

A Scroller at the right side of the Viewer window is used to adjust the
list of signals in the Signal box.  The center Slider part of the
Scroller represents the visible list of signals, while any dark
crosshatched area represents signals outside of view. The signal list
view can be changed (if any part of the signal list is not visible) by
moving the Slider part of the Scroller.

The keyboard Cursor keys (UP and DOWN) can also be used to change the
signal list view.  The view will shift in the direction of the selected
Cursor key by about half of the current visible view.
@ENDNODE

@REMARK *------------------------------*
@REMARK *        Viewer Trace          *
@REMARK *------------------------------*
@NODE "Viewer Trace"
@{u}Introduction@{uu}

The recorded history of a signal is displayed in the Trace box as a
trace waveform, and allows seeing the activity on one signal with 
respect to others.

@{u}Signal Levels@{uu}

The four possible @{"Signal Levels" LINK "Simulator Signals"} that can be generated by the Electrics
Simulator are represented in the trace waveform as follows:

    @{u}LEVEL              APPEARANCE              @{uu}
      0       Horizontal line at bottom of trace.
      1       Horizontal line at top of trace.
      X       Diagonal lines filling trace.
      Z       Horizontal line in center of trace.

@{u}Trace Viewing@{uu}

A Scroller below the Trace box is used to adjust the view of the trace
history.  The center Slider part of the Scroller represents the visible
trace history, while any dark crosshatched area represents trace history
outside of view. The view can be changed (if any part of the trace 
history is not visible) by moving the Slider part of the Scroller.

The keyboard Cursor keys (LEFT and RIGHT) can also be used to change the
trace history view.  The view will shift in the direction of the
selected Cursor key by about half of the current visible view.

The VIEW MARKER option in the VIEW menu can be used to change the
beginning time to that of the Marker time.

The BEGINNING option in the VIEW menu can be used to change the
beginning time.  A requester will appear, and a new time can be
entered.  If the time entered is greater than the total recorded time,
the beginning time will become the last recorded time.

The Information box TIME line is updated when the beginning and
ending time the trace view is changed.  If there is less recorded
time than can be viewed, the end time will be that last time possible.
@ENDNODE

@REMARK *------------------------------*
@REMARK *        Viewer Zoom           *
@REMARK *------------------------------*
@NODE "Viewer Zoom"
@{u}Trace View Zoom@{uu}

The number of time units visible in the Trace box can be changed by
zooming into or out from the trace waveform.  This is done by using
the ZOOM IN or ZOOM OUT options in the VIEW menu.  The beginning time
of the trace view will remain the same, while the end time changes.

The one other zoom control available is ZOOM FULL.  This option will
cause the Viewer to attempt to make all recorded signal history visible
in the Trace box by adjusting the zoom factor.  The beginning time is
set to zero.  If all recorded history cannot be fit, then only the first
part will be visible.
@ENDNODE

@REMARK *------------------------------*
@REMARK *        Viewer Marker         *
@REMARK *------------------------------*
@NODE "Viewer Marker"
@{u}Introduction@{uu}

The Trace box has a Marker that can be placed on the trace waveform at
any time throughout the recorded trace history.  The Marker can indicate
signal levels at that time, or measure the time between two events
on a waveform trace.

@{u}Moving Marker@{uu}

To position the Marker, click the left mouse button when the mouse
pointer is at a desired time in the Trace box.  The Marker will then
move to that time.  The Marker time on the Information box TIME line
will be updated, as well as the time difference between the old Marker
position and the new.

@{u}Signal Levels@{uu}

The levels present on the signals at the Marker time are displayed at
the left edge of the Trace box.
@ENDNODE

@REMARK *------------------------------*
@REMARK *        Viewer History        *
@REMARK *------------------------------*
@NODE "Viewer History"
@{u}Erasing History@{uu}

The recorded history of all signals can be cleared by selecting the
ERASE ALL option in the HISTORY menu.  A requester will appear so the
operation can be confirmed.  Press "Yes" to continue, or "No" to cancel
the operation.
@ENDNODE

@REMARK *------------------------------*
@REMARK *       Viewer Recording       *
@REMARK *------------------------------*
@NODE "Viewer Recording"
@{u}Viewer Setup@{uu}

The Viewer module must be active before starting a simulation with the
Electrics Simulator module.  Otherwise, it will miss receiving the list
of signals to record, and will remain idle.

@{u}Viewer Recording@{uu}

When recording of signal levels begins, the Information box MESSAGE
line will display "Recording...".  If the simulation has stopped, this
message will still be displayed, but the Viewer will continue waiting for
more simulation results.   
@ENDNODE

@REMARK *------------------------------*
@REMARK *       Viewer Limitations     *
@REMARK *------------------------------*
@NODE "Viewer Limitations"
@{u}Introduction@{uu}

This version of the Electrics Viewer module has several limitations
that should be noted.

@{u}Trace Zoom@{uu}

There is a limit on how far out the trace waveform can be zoomed.
Therefore, the ZOOM FULL option will be unable to make all recorded
history visible in the Trace box if the recorded history is very long.
@ENDNODE
