Restoring a vintage Intel Prompt 80 8080 microcomputer trainer / development system

In this blog post, I bought a Prompt 80, without CPU board, from eBay and I get it up and running.

Then I put the Forth programming language in ROM and add a speech synthesizer.

What was the Prompt 80 ?

I couldn’t find the manual for the Prompt 80 anywhere, but I can paraphrase from the Prompt 48 manual and do a few string substitutions to figure out what the product descrption might have looked like:

Prompt 80 is a tool to aid you in learning MCS-80 programming and in writing, debugging, and testing the programs you write. There is enough information here to get you started, whether or not you have ever written a program before.

Prompt 80 is a machine-language computer; making it support assembly-language programming would have considerably raised its cost. Even so, it is general purpose, and can be used to perform a variety of tasks, among which are the control of TILcompatible devices and the programming of (E)PROMs. The pins of the onboard 8255 peripheral interface can be directly interfaced to your prototype via the I/O PORT CONNECTOR.

If anyone does have a Prompt 80 manual, please do let me know!

Basically, it’s what many peope would call a “trainer”. Lots of trainers existed in the day to give people access to a microproccessor so they could type in and execute a program without having to design the hardware. It let you get up and running with a CPU, in this case the 8080 CPU, quickly. This could be as both an educational tool for new programmers as well as a marketing tool for CPU companies, to rapidly get their products into the hands of potential developers and customers.

Prompt 80 Computer, sitting on Scott’s workbench.

Adding a CPU board

As received from eBay there was no CPU:

Prompt 80 Computer with no CPU Board

I knew this as the seller had taken excellent pictures for the listing, and even disclosed to me that he had placed the CPU board up in a separate listing:

Picture of original CPU board, from seller’s ebay listing

The original board was an 80/10 had the desirable and expensive white ceramic ICs on it, and unfortunately, I decided it was outside of my price range to reunite that board with this computer. You can see above two white ceramic 8255 ICs, a white ceramic UART, and two white ceramic 2708 EPROMs. I ended up purchasing a slightly newer 80/10A for about $50 bucks and installed that instead:

Prompt 80 with 80/10A CPU Board Installed

Later I upgraded it to an 80/10B. The 80/10B has a few advantages over the 80/10A:

  • Up to 4KB of RAM instead of 1KB
  • One multimodule slot, allowing a small module to be piggybacked on top of the board
Upgraded from 80/10A to 80/10B. Can you spot the differences?

The front panel connects via a couple cables to the large edge connectors on the CPU board:

Cables that connect the front-panel board to the CPU board

Fixing the power supply

Before powering up the computer, I checked the rails on the power supply. Always do that with very old computers. In this case, my multimeter showed only 0.8 volts on the 5V rail. It wasn’t going to work like that. I removed the power supply:

Prompt 80 Power Supply

The power supply is a nice self-contained module, a linear design, with a beefy transformer. There are three TO-3 devices mounted to the heatsink:

Power supply, top view

The three TO-3 devices are soldered to the pcobard, which makes the thing a little hard to disassemble. Here’s a view of the pcboard from the other side:

Power supply pcboard, bottom view

We can see several large filter capacitors — two are 10000uF/15V, and the third is 5ooouF/25V. There are also a plethora of smaller capacitors. I pulled every single capacitor and bench tested them all. Surprising the three large filter capacitors tested good. Several of the small capacitors tested bad. I replaced all the small capacitors.

After rhe recapping, the power supply started working fine, and I got my 5V on the 5V rail. I reassembled everything.

Trying out an assembly language program

I used Anthropic Claude to write myself a “cylon LED” program to make the LEDs attached to the parallel port light up back and forth:

;; Note: ORG 3000H assumes 80/10B with 4KB of RAM
;; If using 80/10, try adusting to 3D00H instead.
;;
3000                          .ORG   3000H   ; Program starts at 0000H
3000   3E 01        START:    MVI   A,01H    ; Initialize A with rightmost bit
3002   06 07                  MVI   B,07H    ; Counter for shifts left
3004   2F           LEFT:     CMA            ; Complement A (invert bits)
3005   D3 E8                  OUT   0E8H     ; Output inverted pattern to port E8
3007   2F                     CMA            ; Restore original pattern
3008   CD 21 30               CALL   DELAY   ; Add delay between shifts
300B   07                     RLC            ; Rotate bits left
300C   05                     DCR   B        ; Decrement counter
300D   C2 04 30               JNZ   LEFT     ; Continue until leftmost position
3010   06 07                  MVI   B,07H    ; Counter for shifts right
3012   2F           RIGHT:    CMA            ; Complement A (invert bits)
3013   D3 E8                  OUT   0E8H     ; Output inverted pattern to port E8
3015   2F                     CMA            ; Restore original pattern
3016   CD 21 30               CALL   DELAY   ; Add delay between shifts
3019   0F                     RRC            ; Rotate bits right
301A   05                     DCR   B        ; Decrement counter
301B   C2 12 30               JNZ   RIGHT    ; Continue until rightmost position
301E   C3 00 30               JMP   START    ; Repeat forever
3021   16 20        DELAY:    MVI   D,20H    ; Outer loop counter
3023   0E FF        DELY1:    MVI   C,0FFH   ; Inner loop counter
3025   0D           DELY2:    DCR   C        ; Decrement inner counter
3026   C2 25 30               JNZ   DELY2    ; Continue inner loop
3029   15                     DCR   D        ; Decrement outer counter
302A   C2 23 30               JNZ   DELY1    ; Continue outer loop
302D   C9                     RET   ; Return from delay

It might not be the best code in the world, but Claude’s program worked, and you can see it in action in the demo.

Reading and writing an EPROM

To read an EPROM from the onboard ZIF socket, use the following combination

  • 4 (function 4)
  • start address in RAM
  • end address in RAM
  • address in ROM

For example, the key sequence “4 3 D 0 0 , 3 D F F , 0 0 0 0 .” will read 256 bytes from offset 0000 in the EPROM to RAM from 3D00 to 3E00.

To program the EPROM, use a similar sequence:

  • 2 (function 2)
  • start address in RAM
  • stop address in RAM (must be multiple of 16 bytes)
  • address in ROM

For example, the key sequence “2 3 D 0 0 , 3 D 3 F , 0 0 0 0 .” will write 64 bytes from offset 3d00 to offset 0000 in EPROM.

Adding FORTH

Forth is my favorite vintage programming language. I started with 8080 fig Forth 1.1. Unfortunately, this is not directly “rommable” and will try to self-modify itself in many locations. I followed the guide written by Ted Croal in the article “8080 fig-FORTH in ROM” in Forth Dimensions Volume IV Number 4, and I was able to make the fig-forth rommable following his instructions. Then I proceeded to delete everything I could to slim it down to fit into 5KB or less of ROM. This meant dumping forth words for disk io, screens, blocks, etc. We don’t have that stuff anyway.

5KB of fig-forth plus 3KB of monitor leads to 8KB total, which fit in four 2716 on the 80/10B board. Perfect.

You can find my hacked-down fig-forth source code in my github repo.

Having Forth on the Prompt-80 is fun as this gives us a high-level language we can program in via the serial port. It gives it a more “real computer” feel.

Fig-Forth on the Prompt 80 running in a serial terminal

Speech Synthesis

The 80/10B includes a multimodule socket, so I installed my SP0256A-AL2 speech multimodule into that socket and wrote a couple short assembly programs to say “Scott Was Here” and “This is an Intel Prompt 80 Computer”. You can hear it talking in the demo. The speech programs are relatively short and are also checked into the github repository

Conclusion

In conclusion, the Prompt 80 is a really cool trainer. It’s bigger and heavier than most single board computer trainers of the days (and it’s actually a two-board trainer). The use of a multibus board as the CPU board allows you to easily swap different boards in — we could easily use an 8085 board or an 8086 board albeit with a rewritten monitor if we wanted to. Having two sets of LED displays with one dedicated to viewing registers is a nice touch.

Leave a Reply

Your email address will not be published. Required fields are marked *