Altair 8800 Arduino Emulator With a Virtual Front Panel

by TigerFarmPress in Circuits > Arduino

7338 Views, 26 Favorites, 0 Comments

Altair 8800 Arduino Emulator With a Virtual Front Panel

FrontPanelVirtual1a.jpg
AltairFrontPanel.jpg
Game01.jpg

This instructable is the steps to setup and run an Altair 8800 emulator that runs on an Arduino Mega 2560 or an Arduino Due. Connect your computer to the Arduino Mega or Due. No other components required. No other wiring required. Download the emulator program files. From your Arduino IDE, click Run to compile and upload the emulator. Your ready to go.

You're Ready to Run Altair 8800 programs.

The emulator includes MITS Altair 4K Basic, the first software product of Microsoft, written by Bill Gates and two partner programmers. You can run a Star Wars version of the popular Star Trek text based game. Above, there is a screen print from the Stars Wars game. The left photo is the virtual front panel of switches and LED lights. Next, is a photo of my Altair 8800 front panel created by Adwater & Stir.

When the emulator runs, it flashes the virtual LED lights on(*) and off(.). Use your computer's keyboard to press keys to toggle the virtual front panel switches to control the emulator. The controls work the same as an Altair 8800 from 1975.

Emulator interactions are managed through the default Arduino serial port. Below, is a print of the Altair 8800 virtual front panel where the Star Wars game program is currently loaded and ready to run. To interact with the panel, for example, press the 8 key on your keyboard to toggle the S8 switch on(^) or off(v). Below, toggle switches S10 and S8 are switched on. The address lights, A10 and A8 are on(*). The other address lights are off(.). This translates into the 16 bit binary address: 00000101:00000000 (the value, 1280). The data lights, D5, D4, and D0 are on. That translates to binary, 0011001, which is the Intel 8080 LXI machine instruction located at the memory address, 1280.

INTE MEMR INP M1 OUT HLTA STACK WO INT        D7  D6   D5  D4  D3   D2  D1  D0
. * . * . . . * . . . * * . . . *
WAIT HLDA A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
* . . . . . . * . * . . . . . . . .
S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
v v v v v ^ v ^ v v v v v v v v
------
+ Ready to receive command.
+ x, EXAMINE: 1280

However, all you really need to know, is that if you hit the "r" key, you will start playing the Star Wars 2021 version of the Star Trek 1975 game.

Ready to start a Star Wars X-wing starfighter mission? (Y/N)

If you have a Mega or Due board, you're ready to fly a mission.

Supplies

  • Arduino ATmega2560(Mega 2560). Or an Arduino Due board.
  • A USB cable to connect to your computer to the Arduino board.

I buy parts on Amazon.com or on eBay, from Hong Kong or China

distributors. US distributors may have the same or similar parts for reasonable prices and faster delivery. Approximately $15 for a Mega, or $20 for a Due R3. If you don't have a USB cable to connect the board to your computer, some suppliers sell the board with a cable for a couple extra dollars.

If you are going to buy a board, the following will help you decide between the Mega and Due.

If you are on a budget or just want to try out an Altair 8800 emulator, a Mega board is fine. It will run all the samples in this instructable. Regarding the CPU speed, for my testing, I didn't notice any significant difference between the boards.

Another difference is that the Due uses 3.3 volt circuits where as the Mega is all 5 volt circuits. It turns out this wasn't an issue for me, even when I added other components such as an SD card module. I power my boards using a USB connect from my computer, or with a 5 volt wall plug, or a wall plug power supply (9-12 volts). All work with both the Mega and Due.

I only had to go to a Due because I ran out of memory when adding a number components which also had libraries. Adding an SD card module and extra serial port module, Mega was fine. I only ran out of memory when I added an MP3 player on top of the others, and a real time clock module. Likely, the real time clock module would have worked okay as an addition to a Mega emulator. I'm quite sure is was my MP3 component, program, and library that put me over the Mega's available memory.

Altair 8800 Emulator Setup and Startup

Altair101aIDE1a.jpg

Have your Arduino Mega 2560 or Due connected to your computer using a serial cable. Create an Altair101a project directory named, Altair101a. From my GitHub instructables Altair101a project, download the following 6 program files into your project directory.

Altair101a.ino
Altair101.h
AltairSamples.cpp
AltairSamples.h
cpuIntel8080.cpp
cpuIntel8080.h

Load Altair101a.ino into your Arduino IDE. All the supporting program files are loaded as well(see the above IDE screen print).

Click Run. The program files are compiled and the runtime binary is uploaded to your Arduino. Following is a sample Mega upload message.

Sketch uses 70800 bytes (27%) of program storage space. Maximum is 253952 bytes.
Global variables use 7631 bytes (93%) of dynamic memory, leaving 561 bytes for local variables. Maximum is 8192 bytes.
Low memory available, stability problems may occur.

The Low memory available warning is not a worry because there is enough memory to run the emulator, and to run the included sample Altair 8800 programs. Open the Arduino IDE Serial Monitor, IDE menu: Tools/Serial Monitor. The following will be displayed.

+++ setup()
+++ Altair101a initialized, version 1.64.a.
?-

Your Altair101a is ready to use.

Using with a VT100 Terminal Window

The emulator works with the Arduino IDE Serial Monitor, however it's much nicer to use a VT100 serial terminal window because the emulator will react to each key you press. Whereas the IDE serial monitor requires a Send button click, which also sends a carriage return.

Mac Serial Terminal

On my Mac laptop terminal, I use the screen command for serial communications. The method should work from Linux computer. To determine the serial port name use the ls command, or from the Arduino IDE menu: Tools/Port. Then use the screen command. For example,

$ ls /dev/tty.*
... /dev/tty.wchusbserial14210 /dev/tty.wchusbserial14220
$ screen /dev/tty.wchusbserial14210 115200

The window will clear and the emulator output begins:

+++ Setup.
+++ Altair 101a initialized.
?-

To exit the serial terminal and kill the process connection, use Ctrl+A+K, "K" for kill process.

Or, to exit the serial terminal and keep the session alive, Ctrl+A+D. This detaches from the session. To re-attach, use the following.

$ screen -r

Putty on a Windows Computer

Putty is a popular, reliable app that runs on Windows. It's free to download. I have used Putty, however, I haven't tested it with Altair101 as my work computer is now a Mac laptop.

Getting Started With the Altair 8800 Simulator Virtual Front Panel

FrontPanelVirtual1a.jpg
AltairFrontPanel.jpg

This step assume you have the emulator running.

+++ setup()
+++ Altair101a initialized.
?-

If you are using the IDE serial monitor, click the Send button and the virtual front panel is display. If you are using a terminal window (see notes below), hit the enter key.

INTE MEMR INP M1 OUT HLTA STACK WO INT        D7  D6   D5  D4  D3   D2  D1  D0
. * . * . . . * . . . . . . . . .
WAIT HLDA A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
* . . . . . . . . . . . . . . . . .
S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
v v v v v v v v v v v v v v v v

In the above,

  • Status lights (INTE ... INT). The MEMR and M1 status LED lights are on.
  • The WAIT LED is on because the simulator is in WAIT state, it's not running a program.
  • The data LED lights (D7 ... D0) are all off, zeros.
  • The memory address LED lights(A15 ... A0) are all off, zeros. The program counter is set to zero, the memory address of zero.
  • The address toggle switches are all off which is identified by the character "v"(down). "^" will identify a switch that is toggled up.

Note, with the emulator the initial values of all the memory bytes is zero. With an actual Altair 8800, the memory bytes are random.

Press the "h" key to view the help info (if using the Arduino IDE, click Send). The help information shows the list of keys that control the emulator.

?- + h, Print help information.
----------------------------------------------------
+++ Virtual Front Panel Switch Controls
-------------
+ 0...9, a...f Toggle sense/address/data switches: A0...A9, A10...A15.
-------------
+ s, STOP When in RUN mode, change to WAIT mode.
+ r, RUN mode When in WAIT mode, change to RUN mode.
+ s, SINGLE STEP When in WAIT mode, SINGLE STEP.
+ x, EXAMINE current switch address.
+ X, EXAMINE NEXT address, current address + 1.
+ p, DEPOSIT into current address.
+ P, DEPOSIT NEXT address, deposit into current address + 1.
+ R, RESET Set program counter address to zero.
+ C, CLR Clear memory, set registers and program counter address to zero.
-------------
+ 0...9, a...f Toggle address switches: A0...A9, A10...A15.
-------------

You can return to the help information anytime.

Viewing Memory and Depositing Values into Memory

In the top bar of the IDE Serial Monitor, enter "X" and click Send. The following message is displayed.

?- + X, EXAMINE NEXT: 1

The "X" command EXAMINEs the NEXT memory address data byte. Enter "X", is equivalent to flipping the EXAMINE NEXT switch down on an actual Altair 8800. The above photo show the Altair 8800 front panel switches. There is a virtual panel equivalent to the Altair 8800 front panel. The control switches are flipped by pressing a key on your keyboard.

Now, the virtual front panel memory address LEDs (A15 ... A0), shows the

memory address is one. A0 is on, which is identified by the asterisk, "*". The memory data byte for address one, is zero.

WAIT HLDA   A15 A14 A13 A12 A11 A10  A9  A8   A7  A6   A5  A4  A3   A2  A1  A0
* . . . . . . . . . . . . . . . . *

In the serial Monitor, enter "123" and click Send. The toggles, S1, S2, S3 are now up (on).

            S15 S14 S13 S12 S11 S10  S9  S8   S7  S6   S5  S4  S3   S2  S1  S0
v v v v v v v v v v v v ^ ^ ^ v

Enter "p" and click Send. "p" is the same as flipping the DEPOSIT switch up on an actual Altair 8800. The value in the switches (S0 ... S7) is deposited in the current memory address (A0). Below, the data LEDs now show D1, D2, and D3 on. The data byte value of 1110 was deposited into memory address 1 (A0). I

NTE MEMR INP M1 OUT HLTA STACK WO INT        D7  D6   D5  D4  D3   D2  D1  D0
. * . * . . . * . . . . . * * * .
WAIT HLDA A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
* . . . . . . . . . . . . . . . . *
S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
v v v v v v v v v v v v ^ ^ ^ v

Enter "R", for RESET, and click Send. The memory address is set back to zero. The data byte is zero.

WAIT HLDA   A15 A14 A13 A12 A11 A10  A9  A8   A7  A6   A5  A4  A3   A2  A1  A0
* . . . . . . . . . . . . . . . . .

Enter "X" to examine the next byte in memory, and click Send. The memory address is set to one. The data byte is 00001110, which it was set to, above.

?- + X, EXAMINE NEXT: 1
?-
INTE MEMR INP M1 OUT HLTA STACK WO INT D7 D6 D5 D4 D3 D2 D1 D0
. * . * . . . * . . . . . * * * .
WAIT HLDA A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
* . . . . . . . . . . . . . . . . *
S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
v v v v v v v v v v v v v v v v

Now that you have the basics to manage the virtual front panel, you can follow the Deramp video that introduces the Altair 8800 front panel. One of my goals was that the basic Deramp videos will work when applied to the Altair101a.

Note, enter a ... f to toggle the virtual front panel toggles S10 ... S15. You're now ready to follow along with the instructional video.


This video really demos the basic machine's front panel, it's an enlightening experience to follow along. I started by writing out the steps on a text file.

Load, Run, and Play the Star Wars Attack, a Text Based Game

Game01.jpg

In the 1970's, there were a number of popular text based games such as Zork and Adventure. Adventure is the game played by the engineers in the Pulitzer Prize winning book, The Soul of a New Machine. On the Altair 8800, a popular text based game is Star Trek. There are a number of versions of the game and I've enhanced and modify a version to use Star Wars lingo. Star Trek's theme was about exploration, "To go where no one had gone before." A Star Wars theme is to attack, which is the name and theme of this game, Star Wars Attack. You will fly your x-wing to track down and destroy TIE fighters.

The emulator comes with programs that are ready to run. From Altair101a command line, enter "l" (lowercase L) to get the list of programs.

?- + Load a sample program.
----------------------------------------
+ Sample programs to load and run:
----------
++ r, Test the setting of registers.
++ b, MITS Altair Basic 4K.
++ g, Due version of Star Wars Attack game which is a variation of the Star Trek game.<br>++ G, Mega version of Star Wars Attack game which runs on a Mega.
----------
++ k, Virtual front panel version of Kill the Bit.
++ K, Load the original version of virtual Kill the Bit.
----------
++ x, Exit: don't load a program.

Note, the list may vary as I'm planning to make updates.

If you are using a Due, enter "g" (hit key "g"), else "G". The program will be loaded.

.................................................................
.....
+ Number of bytes loaded = 6272<br>+ Program loaded and ready to run: Star Wars Attack game, Arduino Due version<br>+ Start the program at address 1280.<br> Toggle S8(key 8) and S10(key A) on and EXAMINE(key x) the byte at that address, 1280.<br> Then run the program.

The program starts at memory location, 1280. Enter "a", "8", and "x"; to set to that address. The following is displayed.

+ Program loaded and ready to run.
?- ?- ?- + x, EXAMINE: 1280
?-

If you are in a terminal window, hit the enter key to display the front panel.

INTE MEMR INP M1 OUT HLTA STACK WO INT        D7  D6   D5  D4  D3   D2  D1  D0
. * . * . . . * . . . * * . . . *
WAIT HLDA A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
* . . . . . . * . * . . . . . . . .
S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
v v v v v ^ v ^ v v v v v v v v
------
+ Ready to receive command.
?-

The address lights and toggles are on: A10(S10) and A8(S8) are on (*,^). Which is the binary address, 10100000000, decimal address: 1280. The data byte is set to: 110001, the machine instruction LXI. LXI is used to set the program stack. If you are interested in assembling code, click here to see the assembler code programs:

Attack101a.asm (Mega version), Attack101b.asm (Due version). Or click here to see the memory listing.

Enter "r" to run the program.

?- + r, RUN.
?- + runProcessor()
Ready to start a Star Wars X-wing starfighter mission? (Y/N)

Enter "y" to play. Enter "m" for a medium length game.

Quick game, medium or a longer game (q/m/l)? Less or more TIE fighters? m<br>Medium game selected.
Preparations are being made...
You must destroy 07 TIE fighters in 12 stardates.
Supplies are available at any of the 6 rebel outposts.
-1--2--3--4--5--6--7--8-
1 STARDATE 3038
2 CONDITION GREEN
3 SECTOR 4 8
4 QUADRANT 7 4
5 ENERGY 2952
6 TORPEDOES 10
7 x!x SHIELDS 0000
8
-1--2--3--4--5--6--7--8-
Command >

"x!x" is our x-wing starfighter, currently located in quadrant 7,4 of sector 4, 8.

Enter "h" for help information.

Command > h
0. Set X-wing course setting, and Fly
1. Sector range scanner
2. Sector wide area scanner
3. Regional sector display
4. Shields
5. Laser cannons
6. Proton torpedoes
g. Game stats
d. Directions key
X/x. Exit, exit command option or end game
Command >

To get started, display the regional sector map where you will be flying from sector to sector.

Command > 3
Regional Sector Display
-------------------------------------------------
| 000 | 004 | 000 | 000 | 001 | 007 | 004 | 004 |
-------------------------------------------------
| 000 | 003 | 003 | 003 | 005 | 206 | 001 | 005 |
-------------------------------------------------
| 015 | 000 | 000 | 005 | 015 | 007 | 012 | 000 |
-------------------------------------------------
| 000 | 000 | 000 | 306 | 004 | 003 | 006 | 000 |
-------------------------------------------------
| 003 | 000 | 002 | 017 | 000 | 000 | 006 | 002 |
-------------------------------------------------
| 004 | 000 | 000 | 115 | 000 | 007 | 000 | 000 |
-------------------------------------------------
| 000 | 004 | 004 | 003 | 000 | 000 | 104 | 005 |
-------------------------------------------------
| 000 | 000 | 000 | 015 | 000 | 007 | 001 | 007 |
-------------------------------------------------
Command >

In the regional map, each sector is described with 3 digits. The first digit is the number of TIE fighters in that sector. The second digit is the number of rebel bases. The third digit is the number of stars. For example, 306 means there are 3 TIE fighters and 6 stars in that sector. 015, means there are no TIE fighters, 1 rebel base, and 5 stars.

The above, intial sector map indicates that the x-wing fighter is in, SECTOR 4 8; which is row 4, column 8 of the regional sector map. To make a light speed jump to sector 4,4; do the following.

"d" to get the direction codes. I want to go left, which is direction 5.0.

"0", to set X-wing course setting. Then enter, 5.0 for the direction. And enter, 3.4 parsecs for the distance.

Command > d
Directions
3
4 | 2
5 - + - 1
6 | 8
7
Command > 5
Laser cannon energy to fire = 0x
Command > 0
Course direction (1-8.5): 5.0
Parsecs (0.1-7.7): 3.4

After 3.4 is enter, I show up in sector 4,4.

Here, in sector 4,4, there are 3 TIE fighters with which, to do battle.

-1--2--3--4--5--6--7--8-
1 STARDATE 3039
2 * * |o| CONDITION RED
3 SECTOR 4 4
4 * * QUADRANT 7 8
5 * |o| * ENERGY 2822
6|o| TORPEDOES 10
7 x!x SHIELDS 0000
8
-1--2--3--4--5--6--7--8-
Command >

I use the proton torpedoes when I play. Before firing, get into position. "0", direction: 5.0, distances, 0.2. Fire: "6" for torpedoes, 3.0 for direction, and watch the result which is listed below.

Command > 0
Course direction (1-8.5): 5.0
Parsecs (0.1-7.7): 0.2
-1--2--3--4--5--6--7--8-
1 STARDATE 3039
2 * * |o| CONDITION RED
3 SECTOR 4 4
4 * * QUADRANT 7 6
5 * |o| * ENERGY 2812
6|o| TORPEDOES 10
7 x!x SHIELDS 0000
8
-1--2--3--4--5--6--7--8-
Command > 6
Torpedo trajectory(1-8.5) : 3.0
Tracking: 6 6
Tracking: 5 6
Tracking: 4 6
Tracking: 3 6
Tracking: 2 6
TIE fighter destroyed.
Command >

Play tips:

  • Don't fly into a star.
  • Fly only within the regional galaxy map.
  • When energy or torpedoes are low, dock at rebel base to reload. Here was what docking looks like: "x!x>1<". ">1<" is a rebel base.
  • Laser cannons do not require line of site. They do require energy to destroy each TIE fighter in the sector.

The rest for you to figure out and protect the rebel bases. Here is a link to the original 1975 user game manual. Click here, for more files and links.

May the Force be with you.

Load and Run 4K Basic, Microsoft's First Software Product

2020m_&mdash;_screen__dev_tty_usbmodem14211_115200_▸_SCREEN_&mdash;_242&times;43.jpg

Ever wonder why Microsoft was big into the Basic language? This is why, their first computer language product was Basic, written in Intel 8080 assembler code, in the year 1975. To run 4K Basic, from your Altair101a, enter "l" (lowercase L) to get the list of programs. Enter "b", and the Basic interpreter program is loaded (MITS Altair Basic 4K).

.................................................................
..
+ Program loaded and ready to run.
?-

Before running the program, enter "Ctrl+t". This will change the STOP command (keyboard "s") to be "Ctrl+d". Note, "Ctrl+c" is used by Basic, which is why I chose something else.

Enter "r" to run the program. Basic starts an prompts for answers. Enter the following responses.

?- + runProcessor()

MEMORY SIZE? 4096
TERMINAL WIDTH?
WANT SIN? Y

726 BYTES FREE

BASIC VERSION 3.2
[4K VERSION]

OK

4096 works fine with a Mega, You can use up to 64K if you are using a Due. Terminal width is 80 characters. 80 is he hard coded maximum in the assembler program. "Y" to include the function SIN and some other math functions.

As a test, enter "Ctrl-d". This puts the emulator back into WAIT mode. Setting information and other commands are available such as "j" for the Setting Information.

?- + j: Setting Information.
------------------------
++ programState: 1
++ LED_LIGHTS_IO=0<br>++ VIRTUAL_FRONT_PANEL=0<br>++ ARDUINO_IDE_MONITOR=0<br>++ SERIAL_CLI=0<br>++ Serial: on, 1<br>++ Serial2: off. Not used for output or input.
++ Serial2 baud rate: 115200, data bits, stop bits, and parity: 8, 1, 0
++ logMessages: off,
?-

Enter "r" to go back into Basic. Enter, PRINT "HELLO". Note, lowercase letters are automatically converted to uppercase, which 4K Basic requires. Hit the enter key to run the one line program. The output is printed, "HELLO", and the OK prompt is re-displayed.

PRINT "HELLO"
HELLO

OK

Enter, PRINT 2+2. Hit enter and the answer is printed.

Enter a two line program. The lines are numbered 10 and 20. Enter LIST and hit enter, and the program lines are listed.

10 PRINT "HELLO"
20 GO TO 10
LIST

10 PRINT "HELLO"
20 GOTO 10
OK

Enter RUN and hit enter. "HELLO" is printed over and over. Hit "Ctrl+c" at least twice, and the program will stop and the OK prompt is re-displayed. Enter the LIST command, and the program is re-listed.

To learn more about 4K Basic, click here to download a scanned PDF of the original 1975 Basic manual. You can use Altair101a to work through the manual's examples. If you have an interest in the 4K Basic assembler program, click here to view it. Click here, for even more information and links.

Running Your Own Programs

Kill the Bit running on an Altair 8800 emulator tablet.

It's possible to enter programs into the front panel, using the toggles and switches. The toggles and switches are like a keyboard. The LED lights are like a monitor. No touch screens available in 1975. A common program that people would enter and run, is the program, Kill the Bit, which is the de facto classic Altair 8800 demo program. I wrote a modified version to run on the Altair101a. The alterations account for using a serial connection(slow) verses hardware LED lights(fast).

Enter the Kill the Program

Below are the octal values for entering the serial version of Kill the Bit. Click here to view the assembler source code.

The quantity of "032" machine instructions determines the speed that the flashing bit will move through the sequence of LED lights from S15 to S8 (and then cycles around and around).

Octal program listing:

Address:  0   1
026 200
Address: 2 3 4 5 6 7 8 9 10 11 12 13
032 032 032 032 032 032 032 032 032 032 032 032
Address: 14 15 16 17 18 19 20 21
333 001 252 017 127 303 002 000<br>

The sequence of steps to input the program is straight forward.

  1. Enter "R" for RESET, to reset to the first address, address 0.
  2. Toggle data toggles on: S1, S2, S4 (octal 026, binary: 00010110).
  3. Enter "p" to DEPOSIT octal 026 into address 0.
  4. Toggle data toggles off: S1, S2, S4.
  5. Toggle S7 on (octal 200, binary: 10000000).
  6. "P" to DEPOSIT NEXT, which deposits octal 200 into address 1.
  7. Toggle data toggle S7, off.
  8. Toggle data toggles on: S1, S3, S4, which is octal 032, binary: 00011010.
  9. "P" to DEPOSIT NEXT, will deposit octal 032 into address 2.
  10. Leave the address toggles the same. Enter "P" 12 times, to DEPOSIT octal 032 into addresses 3 to 13.

I'll leave the rest of the program input sequence for you to complete. Or, you can load this program from the load sample program menu. Go to the help menu to see the load sample program option.

Once the program is loaded, RESET to address 0. You can confirm the program bytes by using "X" to EXAMINE the bytes at each address.

Run Kill the Bit

Once the data bytes are confirmed, RESET to the address 0. Use "r" to run the program. The flashing bit will sequence from S15 to S8 and then continue to cycle around and around. The object of the game is to kill the flashing bit. To do so, toggle one the sense address switches (S15 ... S8) on and off when the flashing bit is located at that switch. If you time it correctly, the flashing bit is killed, it stops flashing and sequencing. If you time it incorrectly, or leave the switch on too long, there will be 2 bits flashing, or even more. To win, you will need to kill all the flashing bits.

When the program is running, RESET will restart the program. It will clear any flashing bits and start one flashing bit at S15. STOP will stop the program running. RUN will start the program running again.

Next, Learn from the Master

Follow along in the below video to gain more front panel programming experience.


Mike Douglas, is the man that created the Deramp video series. He designed and created the Altair 8800c hardware used in the videos.

Then, you will have the Altair 8800 skills to interact and use an Altair 8800. You will be programming like it's 1975.

Next Step, Buy or Build?

Altair101a.jpg
AltairDesktop01a.jpg

Your now familiar with,1975, home computing. If you played the Star Wars x-wing game, you've experienced text based games. If you ran the Basic command, "PRINT 2+2", you've ran the first command Paul Allen ran on the Altair 8800 when presenting Microsoft's first product to MITS. MITS at the time was the home computer leader. They were the leader before Apple existed, and before the IBM PC was created.

Now you gotta ask yourself, Do you want more? Well do you?

If your a programmer interested in writing and running assembler programs, add an SD card module to save and load program files. Add a serial port module so that you can upload program files from your development computer to your Mega/Due (photo above left of extended machine). You can use my assembler program(asm.jar with lib/jSerialComm-2.5.3.jar) to assemble programs and upload to your emulator.

After watching Altair 8800 videos, I wanted more. I needed hardware, an emulator, or to buy a clone. I decided on an emulator and so, I need emulator software to run on the hardware and programs to run on the emulator. To get started, I also needed documentation, such the answers to, "How do I load programs onto my machine, and how to run the programs?"

Hardware links:

  • Build and run an Adwater and Stir emulator. Includes an SD card with all the software to get started and then some. A sample case with all the blinkin lights and switches is in the above photo (right). That's mine with a custom "paint" job.
  • Got more money and want a box that's similar to the original Altair 8800, then the Altair clone is for you.
  • Or, if you want a hardware clone that's close to the real thing, boards, Intel 8080 CPU, and all; then buy and put together an Altair 8800c. That's my Altair 8800 dream machine.

Or take my route. I designed a machine, went on Amazon.com and eBay.com to buy components, and wrote my own emulator program which I merge with David Hansel's virtual CPU. David Hansel's virtual CPU allowed me to run the MITS Altair 8800 4K Basic interpreter. My Adwater and Stir cased machine is close to the look and feel of an original machine.

Or build based on someone else's design and emulator. The above Adwater and Stir emulator has a kit version. You will need basic soldering skills. The emulator is David Hansel's simulator program which is built in. Includes other software such as CP/M, which can easily be loaded and run.

If you're building a machine, you'll need hardware:

  • CPU, memory and motherboard: Arduino board
  • Hard drive persistent memory: SD card module
  • A second serial connection to a laptop computer: serial module

Software,

  • Emulator software, write or download an opensource Altair 8800 emulator.
  • Download Altair 8800 programs such as 4K Basic or CP/M.
  • Assembler to assemble your own programs into program files that runs on your machine.

What's your choice? Build or buy a complete machine?

Closing Notes

The Altair 8800 was the first computer that a lot of people bought for home use. It was the computer that ran Microsoft's first product, a Basic interpreter. It was the predecessor to Apple's first computer. It was a lower priced computer that smaller business could afford and it ran real world business applications.

It was the first computer that I could afford, but I could not afford the peripherals. Eight years later I did get an Intel 16 bit 8086 computer running Microsoft DOS 1.1, with peripherals; 2 floppy drives. Now, I work on a MacBook Air, which I do like very much. I use it to develop my Altair 101 machine emulator on the Arduino IDE, and write assembler programs.