.
gpsim - Gnu Pic Simulator, a simulator for Microchip's PIC microcontrollers.
http://gpsim.sourceforge.net/


Please see the INSTALL.gpsim file to get instructions on how to install gpsim.
Please see the TODO file to get an idea of the current status and a little background on how the code works.
Please see the HISTORY file to see how gpsim has evolved.
Please see the README.EXAMPLES file for information about the examples.
Please see the PROCESSORS file to see a list of supported processors.
Please see doc/gpsim.lyx or doc/gpsim.ps for the latest documentation
Gpsim is licensed under GPLv2+ with the exception of eXdbm/ src/ and
  modules/ files which are under LGPLv2+.  Please see COPYING and 
  COPYING.LESSER for the terms of these licenses.


  

System Requirements:
--------------------

gpsim runs under Linux and Windows. 

For Windows, all non-standard dll's are packaged with gpsim. So the
standard install should run. Borut Razem has the latest gpsim
installer on his web page:

  http://gpsim.sourceforge.net/gpsimWin32/gpsimWin32.html


For Linux, it's assumed that you have GTK+ 2.x and gtk+extra >= 2.1.2 
or a patched version of gtk+extra-2.1.1 installed.



Installing:
----------

See the INSTALL.gpsim file.

Invoking:
---------

Run gpsim by typing:


$ gpsim --help

gpsim - the GNUPIC simulator
version: 0.22.0
 
 
type help for help
Usage: lt-gpsim [OPTION...]
  -p, --processor=<processor name>     processor (e.g. -pp16c84 for the 'c84)
  -c, --command=STRING                 startup command file
  -s, --symbol=STRING                  .cod symbol file
  -L, --                               colon separated list of directories to
                                       search.
  -v, --version                        gpsim version
  -i, --cli                            command line mode only
  -d, --icd=STRING                     use ICD (e.g. -d /dev/ttyS0).
 
Examples:
  gpsim -s myprog.cod          <-- loads a symbol file
  gpsim -p p16f877 myprog.hex  <-- select processor and load hex
  gpsim -c myscript.stc        <-- loads a script
 
Help options:
  -?, --help                           Show this help message
  --usage                              Display brief usage message



for example:

$gpsim -pp16c61 pichexfile.hex

will start the simulator, select a 'c61 as the target and load the
program memory with pichexfile.hex hex file. There are several pic
source files in the /examples subdirectory. 

or (preferred)

$gpsim -s piccodfile.cod     # note, you don't need to specify the processor for .cod files


Once started, a very simple command line prompt will process your requests:

gpsim> help
!              Shell out to another program or module's command line interface
attach         Attach stimuli to nodes
break          Set a break point
clear          Remove a break point
disassemble    Disassemble the current cpu
dump           Display either the RAM or EEPROM
frequency      Set the clock frequency
help           Type help "command" for more help on a command
icd            ICD command.
list           Display source and list files
load           Load either a hex,command, or .cod file
log            Log/record events to a file
macro          macro definition and listing
module         Select & Display modules
node           Add or display stimulus nodes
processor      Select & Display processors
quit           Quit gpsim
reset          Reset all or parts of the simulation
run            Execute the pic program
set            display and control gpsim behavior flags
step           Execute one or more instructions.
stimulus       Create a stimulus
symbol         Add or display symbols
trace          Dump the trace history
version        Display the gpsim's version
x              examine and/or modify memory

More help is available for each command by typing help "command". For
example, help break prints this: 

gpsim> help break
The 'break' command can be used to examine or set breakpoints.
gpsim supports execution style breaks, register access breaks,
complex expression breaks, attribute breaks, and other special breaks.
Program Memory breaks:
  break e|r|w ADDRESS [expr]
    Halts when the address is executed, read, or written. The ADDRESS can be
    a symbol or a number. If the optional expr is specified, then it must
    evaluate to true before the simulation will halt.
Register Memory breaks:
  break r|w REGISTER [expr]
    Halts when 'REGISTER' is read or written and the optional expression
    evaluates to true.
  break r|w boolean_expression
    older style to be deprecated...Cycle counter breaks:  break c VALUE
    Halts when the cycle counter reaches 'VALUE'.
Attribute breaks:
  break attribute
    Arms the breakpoint condition for those attributes that support breaks.
    For example, the stopwatch (help stopwatch) attribute can cause a break.
Miscellaneous breaks:
  break so   # halts on stack overflow.
  break su   # halts on stack underflow.
  break wdt  # halts on Watch Dog Timer timeout.
Expressions:
  The conditional expressions mentioned above are syntactically similar to C's
  expressions.
Examples:
        break              # display all of the break points
        break e 0x20       # set an execution break point at address 0x20
        break w reg1 == 0  # break if a zero is written to register reg1
        break w reg2 & 0x30 == 0xf0 # break if '3' is written to the
                                    # upper nibble or reg2
        break w reg3 (reg4 > 45)    # break if reg4>45 while writing to reg3
        break c 1000000    # break on the one million'th cycle
 


The cli is available even when the gui is used.


Major Features:
--------------

Standard simulator stuff:
  o Breakpoints - execution, read and write memory, wdt, <ctrl C>
  o Assertions
  o single stepping
  o step over
  o run until break
  o disassemble 
  o dump memory/eeprom
  o Trace
  o stimulus files - analog and digital
  o configuration files
  o symbolic debugging

Gui stuff:
  o Register viewer
  o Source file viewer
  o Program opcode window
  o Symbol viewer
  o Watch window
  o Pinout/breadboard window
  o Stack Viewer
  o Scope Viewer
  o Oscilloscope Viewer

gpsim specific
  o Simulate multiple processors (not fully supported)
  o Dynamically loaded modules

Peripherals supported:
  o eeprom
  o WDT
  o TMR0
  o I/O Ports
  o TMR1
  o TMR2
  o CCP
  o PWM
  o A/D
  o UART 
  o I2C

BUGS:
----
I'm absolutely certain there are bugs. If you find one, send it to me at either
scott@dattalo.com

or post it to the gnupic mailing list:
       mailto:gnupic@linuxhacker.org

Finally, see the file Contributions for people who have submitted suggestions and patches.

NOTES:
-----
gtk+extra2 is needed by gpsim.
Please see the gpsim web page for more info
