I own a *real* IMSAI 8080, and have all the manuals 'cause I built it from a kit. :-)
The entire manual set is a pile of paper about 3" thick, _but_ the basic ideas can be
summarized in a page or two. I'm not sure how much "memory" these simulators
have, but basically they're both 8080 microprocessors with a few K of RAM and a front
panel. On the IMSAI front panel, here's what you're seeing:
Programmable Output Port Display (8)
Status Byte Display (8) Data Bus Display (8)
Address Display (16) CPU
Flag Display (8)
Address Toggles/Programmed Input (16/8) Control Switches (5)
Power
The values in () are the number of bits, least significant on the right. The address and
data switches are double-throw toggles, while the control switches are center-off
momentary double-throw toggles. The "Programmed Output" and "Programmed
Input" are an 8 bit I/O port located at address 255 (FFh), and are there just so you
have a way to get data in and out without a terminal. To display a particular address,
toggle in the desired address in binary on the 16 address switches (up=1, down=0). Then,
press the "Examine" switch up and release. The Address Display LEDs will show
the address you entered, and the Data Bus Display LEDs will show the value in memory at
that address. To step through memory sequentially displaying values, press the
"Examine" switch down, to "Examine Next". This will increment the
address bus and display the value at the new location, without having to toggle in the new
address. Hitting "Examine" again will take you back to the address selected by
the switches. The "Deposit"/"Deposit Next" switch does basically the
same thing, except that Deposit stores the value set on the 8 right-most switches of the
Address Toggles/Programmed Input at whatever address is currently displayed on the address
LEDs. Deposit Next increments the address and _then_ stores the value set by the
Programmed Input switches. "Reset" basically stops the CPU and sets the address
back to 0000. "Ext.Clr" does an external bus reset; I never really used it.
Run/Stop are pretty self-explanatory, and Step/Step is just a single-step function; both
up and down just execute one instruction and stop.
To toggle in a simple (and useless ;-) program, do this, where "AD" indicates
the hexadecimal value which should be set on the 16 address toggles, and "DATA"
refers to the 8 switches labelled "Programmed Input":
AD: 0000
Examine
DATA: C3
Deposit
DATA: 00
Deposit
DATA: 00
Deposit
AD: 0000
Examine
Run
C3 is a "Jump Immediate", and the following two bytes (00,00) are the address it
jumps to, so basically this will just sit there and loop. A copy of the Intel 8080A CPU
instruction card is available from the Microprocessor Instruction Set Card
Library maintained by Jonathan Bowen.
If you want to get fancy and do I/O, "IN FF" will read the
"Programmed Input" toggles into the A register, and "OUT FF" will
write the value in the A register to the LEDs in the "Programmed Output" bank.
The outputs are inverted, though, to save circuitry on the front panel, so a 1 is a dark
LED and a 0 is a lighted LED (this has caused me no end of confusion over the years,
because I always forget).
Enter the following sequence of instructions starting at address 0000, as above, then "Examine" address 0000 and run. Flip the "Programmed Input" switches while the program is running; their positions should be reflected (inverted!) by the "Programmed Output" LEDs.
---
DB (read the value from the following port # and store it in the A register)
FF (port FF)
D3 (write the value from the A register to the following port #)
FF (port FF)
C3 (jump to the following 16-bit address)
00 (most significant byte of address)
00 (least significant byte of address)
---
I've got a serial terminal and a floppy controller and drives on my IMSAI, running an old version of CP/M. The drives make a big "WHANG!" sound when the heads load and unload every time you access them, and the terminal only runs at 9600 baud, but's it's pretty cool. The front panel lights are a blast to watch while it's running CP/M, reading the disk, and talking to the terminal. "War Games" indeed! One thing the Elf has that the IMSAI simulator sorely needs - LOAD/SAVE to disk!!! (Are you listening, Claus? ;-) It's probably more accurate to not have it, but it gets old having to toggle in a 40 or 50 byte (or more) program every time you want to show it to somebody, not to mention which it doesn't have keyboard shortcut keys, so you're stuck clicking with the mouse. But it's still a very cool bit of software, and I credit it with inspiring me to write the Elf simulator...