Udo Munk has just released the latest version of his z80pack emulator, version 1.17, which now includes John Kichury’s FrontPanel library. As well as being a superb emulator to run CP/M on, it now gives you a great graphical representation of the Altair 8800 and IMSAI 8080 with fully functional switches and flashing lights. If you’ve ever wondered what it would be like to use one of these machines, why not give it a try?
The following installation instructions are only for the Altair 8800 and IMSAI 8080 systems. For installation instructions of the complete system, why not have a look at my previous article: Setting up z80pack to create an emulated CP/M system.
First download the source (z80pack-x.y.tgz, currently z80pack-1.17.tgz) for z80pack from its ftp site. The following installation instructions are taken from the z80pack site. More information can be found there, in particular, information on installing z80pack on non Linux/Unix systems.
Unpack the source archive in your home directory:
- Change the directory it is extracted to, to make this article easier to explain. There is no need for you to do this.
- Compile the FrontPanel library:
- Copy the front panel library to
- Compile the Altair 8800 emulator:
- Compile the IMSAI 8080 emulator:
- I don’t like the 3D version of the IMSAI, so I changed it to 2D:
Getting Altair and IMSAI documentation
The z80pack ftp site has some documentation for the Altair and IMSAI machines which has been scanned in from the originals. For the Altair there is the Altair 8800 Operator’s Manual and for the IMSAI there is the IMSAI 8080 User’s Manual. There is also some other relevant documentation and files in the altair and imsai ftp directories.
Running a test program on the IMSAI 8080
To start the IMSAI 8080 emulator:
The IMSAI 8080 front panel:
The example program we are going to use is taken from the IMSAI 8080 User’s Manual mentioned above and can be found from page 19. The program takes input from the PROGRAMMED INPUT switches at the bottom left of the unit and outputs it to the PROGRAMMED OUTPUT at the top left.
|0||DB||1101 1011||IN - Input into Accumulator|
|1||FF||1111 1111||Address of Programmed I/O Port to get input from|
|2||2F||0010 1111||CMA - Complement Data in Accumulator|
|3||D3||1101 0011||OUT - Output Data from Accumulator|
|4||FF||1111 1111||Address of Programmed I/O Port to put output to|
|5||C3||1100 0011||JMP - Jump|
|6||00||0000 0000||Low Address of beginning of program|
|7||00||0000 0000||High Address of beginning of program|
To enter the program follow these instructions:
- Turn the machine on by moving the PWR ON / PWR OFF switch to PWR ON. This switch is located at the far-right of the unit.
- The machine is now at address 0. To input the first line of the program move the middle set of switches so that positions 7,6,4,3,1,0 are down. This corresponds to binary: 1101 1011 from Address 0 of the program.
- Press the DEPOSIT / DEPOSIT NEXT switch into the DEPOST position. This puts the data from the switches set above into memory at the current address, which is currently 0.
- Set the middle group of switches so that it corresponds to the binary in the next line of the program.
- Press the DEPOST / DEPOSIT NEXT switch into the DEPOSIT NEXT position. This increments the current address, and there it puts the data from the switches just set.
- Repeat lines 4 and 5 until the program has been entered.
The program can now be run by moving the RUN / STOP switch into the RUN position. If you now move any of the PROGRAMMED INPUT switches, you will see them represented in the lights of the PROGRAMMED OUTPUT. Congratulations, you may have just run your first program on the IMSAI 8080.
There is plenty of information in the manuals I have mentioned, and these should be your first port of call. The Altair 8800 Operator’s Manual has a similar example to the one given for the IMSAI, and begins on page 33. You may also be interested in my next article: Writing My First Program to Toggle in to the IMSAI 8080. Have fun, and I hope your mouse finger doesn’t get sore clicking all those switches!