An S-100 EPROM/RAM card with firmware for basic monitor and text editing functions. The FM-1 had a power-on jump circuit that made it possible to run without a front panel. The FM-1 added a non-maskable interrupt capability to the 8080 processor, which could be used by the FM-2 debugger (which was never produced). I created all aspects of the project, hardware design, firmware design using my 8080 development system, PC layout, tape up, and user documentation.
The User’s Guide was written in the days before word processors, so I banged it out on a manual typewriter. The diagrams were hand-drawn in ink. You can look at the FM-1 User’s Guide here.
The firmware was written on a cross-assembler that I created on the local community college’s HP-2000 BASIC system. I sure wish I could find the source code for the cross-assembler. I re-drafted the FM-1 Schematic in 2023.
By the time the FM-1 was released late in 1977, it was practically obsolete. By then, designs were using 2708 or newer EPROMs and higher density static RAMs. I still have 4 of the the original boards in various states of assembly. Let me know if you have any interest in obtaining one of these, to own a piece of early microcomputer history.
Details
The idea for the FM-1 came to me around 1976 while I was in the process of trying to build my own IMSAI “clone.” I had an off-brand 8080A CPU board, a Seals 8K RAM board, and a backplane. I can’t remember if it was a PCB or wire-wrapped. I wasn’t sure I would be able to get a front panel, so I started thinking about how to create a resident monitor in a PROM board that would be able to auto-start on reset. It needed to produce the MEMWRT S-100 signal that normally came from the front panel. I wanted the monitor to run standalone, so it needed RAM.
I had worked briefly on an Intel Intellect system, so the idea that it could perform some of the same tasks − text editing and assembler, was appealing. Paper tape or cassette storage was expected for this. I must have had an IMSAI SIO by then, because I settled on the default suggested I/O addresses for the FM-1. The other thing the Intellect could do was breakpoints. I had to have the ability to set a breakpoint at an address and have the FM-1 break me back into the monitor.
At this time, the state of the art for EPROMs was the 1702A. Each 24-pin DIP chip had 256 bytes of memory. Yes, that’ bytes. Not K, meg, or certainly gig. There were numerous articles floating around on how to build a programmer. So I quickly figured out that I could fit 3K of EPROM and 1K of RAM on a S-100 board.
By now, I had written a crude 8080 emulator and assembler on the high school’s BASIC system. I began to realize that all this was not going to fit in 3K. Also, the breakpoint hardware was not going to fit either. That’s when the two-board solution was born. I called the board the ”firmware module” with two boards, the FM-1 and FM-2. FM-1 would get the basics working – the power-on start and bus signals and the monitor. The monitor’s command processor would be able to be extended by picking up the FM-2’s if it was present. The FM-2 would have the hardware breakpoint and probably 4K of EPROM (3K if the breakpoint hardware took up too much board space).
I had originally thought about making the FM-1 and FM-2 addresses settable by DIP switch until I realized that the power-on jump circuit would be more complicated and the idea of a relocatable monitor just made my head hurt. So I made a rather arbitrary decision to set the FM-1 address at E000 hex and the FM-2 at F000 hex. At that time, memory-mapped boards like the later IMSAI DIO and VIO didn’t exist. There was no such thing as PHANTOM back then.
As soon as the S-100 bus adopted the Z80 and 8085 CPUs, and floppy disks became common and then required, the FM-1’s architecture was incompatible and obsolete. The breakpoint circuit will only work with an 8080A. It was a good way to get a turnkey system up and running, but it’s lifespan was very limited.