Designers: Mark MacLin, Mark Lottor, Bob Martin.
ROM Software: D.L. Faiman, D.W. Sallume, R.L. Deran
TABLE OF CONTENTS
- Introduction to the POLY-88 System
- Relation to the POLY-8813
- POLY-88 Monitor 4.0 ROM Software
- POLY-88 Front Panel Display Usage Example
- TinyBASIC for the POLY-88
- TBD: EXEC Operating System Usage
Introduction to the POLY-88 System
In 1974, two inspiring kits were introduced: the SCELBI-8H and MARK-8, both 8-bit systems that used the Intel 8008 processor (which was limited to 14-bit addressing or 16KB). While functional computers in the technical sense, numerous support chips were required, and each had their own rudimentary bus convention. Incorporating an expansion bus was becoming an expected aspect of a computer system ever since the OMNIBUS of the PDP-8/E introduced at the end of 1970.

ABOVE: The characteristic blue-front of the SCELBI-8H (8-bit Homebrew) and the distinct compact MARK-8 (8-bit).
The quiet existence of these two systems motivated other tinkerers to follow. A year later in 1975, the famous MITS Altair 8800 addressed the main shortcomings by incorporating the improved Intel 8080 CPU (reducing the number of necessary support chips) and designed-in a rapidly developed S-100 bus (which had its own shortcomings but did achieve the goal of having a modular system, and good-enough to become a standard). In addition, MITS had strategically negotiated a bulk-discount deal on the newly released Intel 8080, giving them a cost advantage across both Altair kits and factory-assembled systems—an advantage that only lasted about a year, as MITS struggled to supply the demand (of both built-systems and working RAM cards). Deliberate competition followed swiftly (via IMSAI and other clones).
In July 1976, two quite-different systems were introduced: The Apple-1, which was still largely a kit, but featured a clever single board design (that incorporated a video signal). And also, the SOL-20, which was a more complete turn-key system: ready to run out-of-the-box, had a catalog of purchasable software and peripherals, used the established S-100 bus standard, and pioneered the “wedge-shape” case style. Over 10,000 SOL-20 computers were sold over its three-year run, compared to the barely 200 units of the Apple-1 that were sold over about 14 months.


But two months earlier than either of these systems, the “Micro-Altair” was introduced by Polymorphic Systems. The Micro-Altair resembles what eventually did become the typical desktop-computer configuration: a case with simple power and reset buttons, with a detached keyboard and monitor. Polymorphic ads made a point that physical Front Panel Switches were old fashion, since you could effectively “simulate” their same operation through interactive software and a video display (ironically, this type of software became known as “The Monitor”).


However, video displays were still expensive at this time, so inexpensive systems with Front Panel Switches remained popular for several years. But the convenience and utility of a video display combined with a rapid character generator was undeniable. Each of these early systems featured a built-in machine-language-monitor program, a concept found also in the earlier IBM 5100 from 1975 (which that system called the DCP, Diagnostic Control Program). The 1950s fashion of flip switches and status lights as a primary way of interacting with a computer was rapidly coming to a close.

- Apple-1 WOZMON (256 byte ROM)
- SOL-20 SOLOS (2KB, smaller CONSOL was 1KB)
- POLY-88 Monitor 4.0 (1K ROM) – also shows CPU and stack registers
- IBM 5100 DCP (1975) – CPU registers mapped to the first 128 bytes of RWS
In numerous magazine ads (such as in Byte Magazine), MITS consistently reminded how the “Altair is a trademark of MITS, Inc.” The homebrew-computing industry was quickly getting very competitive and protective, setting the stage for what would become the home computer market. Rather than partnering-with or acquiring Polymorphic, MITS kindly requested the “Micro-Altair” be renamed, since it had no association with the MITS Altair 8800 product.
A month later, Polymorphic Systems had complied – and advertisements for June were updated to use the name POLY-88 instead. Kits were available, but documentation and ROM software were still being perfected.

By the end of November 1976, the final “Monitor 4.0” ROM software had been prepared for the POLY-88 (essentially its equivalent of a “System BIOS”), and the December 1976 issue of BYTE magazine had a favorable review of the POLY-88 by Jef Raskin. Then in January 1977 – while Chuck Peddle was introducing the Commodore PET at CES in Chicago (first of the 1977-Trinity systems) – the POLY-88 assembled systems were taking orders in BYTE magazine: 8KB RAM, an 8K BASIC, with a verified compatible TV monitor and keyboard, ran $1390. A base kit was $595 with a complete “theory of operations” manual to describe every aspect.

ABOVE: Polymorphic Systems advertisement in BYTE January 1977
But the POLY-88 had two flaws: (1) a case-overheating issue and (2) a somewhat-incompatible interpretation of S-100.
- The case design was novel, but ultimately a poor design while closed — lack of a fan or good air flow would cause the S-100 power regulators parts of the cards to heat up excessively. The overheating could be dealt with and forgiven (and the system got the nickname “orange toaster” as a result, since it resembled a long breakfast toaster that did get hot).
- The S-100 bus differences required greater expertise to handle, making it uncertain which S-100 peripherals would end up being compatible. This was an issue as disk drive controllers, third-party RAM cards, multi-voice audio cards, and internal card-slot modems were starting to become popular.

The POLY-88 CPU Card contains an 8080 CPU (white ceramic), 3x ROMs (each 1KB), two serial interfaces (one for tape storage then a more general-purpose port), and 0.5KB of onboard RAM.
Capability-wise, there wasn’t much different between the SOL-20 and POLY-88. Both had various pros and cons relative to each other, but mainly they each gave a preview of what was coming just around the corner: the appliance computer concept was “almost there.” No hardware tinkering, but ready-made systems that you would plug-in power and operate, focusing more on software applications than probing electronic signals.
The main limitation this generation had was the 2KB ROM. At the very least, this ROM avoided having to key in a custom “bootstrap loader” each time the system was powered on. TinyBASIC was written that could fit into 2KB, giving that “boot to BASIC” feel. But typically, more practical use of the system involved loading additional software from tape (such as the 8KB BASIC, which would take several minutes to load). While larger 8KB ROM chips did exist, their use would conflict with the chosen memory address arrangement of the POLY systems.
In addition, such larger capacity ROMs were still very expensive- and these systems were vying for affordability to hobbyist home users. Part of that lower cost also translated into lower build quality. But owners of these systems worried not about warranties or being able to type quickly – they were just ecstatic to have a fully functional interactive computer.
1974-1976: The era of Den Computing.
Relation to the POLY-8813
A review of the POLY-88 appears in Dr. Dobbs Journal page 313 here (or Vol 1, No 10 from 1976)
Dr. Dobb’s Journal – Vol 1 : People’s Computer Company : Free Download, Borrow, and Streaming : Internet Archive That article is also repeated here: 1000BiT – Product Review: POLY-88 The review is generally positive but points out a few inconsistencies in how the POLY88 deviates from the S-100 standard.
Within about a year after the POLY-88, Polymorphic Systems introduced 5.25 disk drive solution (as did also the SOL-20 system). Polymorphic introduced an alternative configuration of the POLY-88, called the 8813. This was a larger chassis that addressed the overheating issue and provided room for up to three integrated disk drives. The modular nature of the POLY-88 meant that these same drives could also be used with that system as well.

ABOVE: Courtesy of https://oldcomputers.net/
Polymorphic Systems continued system support and sales operations up until 1988. The POLY supported CP/M but also offered a brand-unique EXEC operating system (and WordMaster word processing software). The early Apple-II documentation is said to have been written using a POLY-8813 system (by Apple employee Jef Raskin, the same Jef who earlier wrote the POLY-88 review for BYTE magazine). Polymorphic Systems well documented their own system, and this willingness-to-teach established a loyal base of users (including an independent newsletter dedicated to their system, called PolyLetter, that continued until 1993).
POLY-88 Monitor 4.0 ROM Software
The main System ROM for the POLY-88 is the “Monitor 4.0” software from November 22, 1976. This specific date is well documented from Polymorphic Systems,, I have an original hard-copy print of the annotated code listing.

Monitor 4.0 Commands
When the POLY-88 is powered on, it first loads and runs the contents of the Monitor 4.0 ROM. This Monitor gives you a solid cursor at the top left, indicating it is in Tape Load mode, and supports three commands:
- “B”: Load a BYTE STREAM from tape (300 baud, asynchronous). Following this command, you would type in the program name (up to 8 characters) desired to be loaded, press ENTER, then press PLAY on the cassette tape. If you didn’t know the name of the program, you could press ENTER twice (blank filename) — this wouldn’t cause anything to be loaded, but it would activate the tape and start listing identified BYTE format programs. This format originated as the Kansas City Standard.
- “P”: Load a POLY STREAM from tape (1200 baud, synchronous). This works like the “B” command, in that after the command it expected a program name (up to 8 characters). But the program to be loaded would be expected in a POLYPHASE format (that is denser and generally more difficult to load, but when it works it would allow loading programs much faster than the BYTE mode).
- CTRL+Z: Activate the Front Panel monitor display
In addition to the code to monitor for the key-presses of these commands, this 1K ROM also contains various support routines. For example, the DSPLY offset supports placing a character onto the display, while handling all end-of-line and end-of-screen scrolling behavior as appropriate (this also handles control codes like ENTER, TAB, HOME, CLEAR SCREEN, and cursor movement). There is also the TIMER handler to increment the timer increment, and USART support routines (for tape load support of BYTE and POLY format — a self-enclosed bootstrapper sequence used to load in more substantial RAM software).
Front Panel Mode (aka the Front Panel Monitor Display ) (CTRL+Z)
The Altair 8800 (and other prior computer systems, going back to minicomputers like the PDP-8) were characterized by having a series of toggle switches, directly tied to CPU registers and states. This was because CRTs weren’t generally available or affordable yet- the science of making a CRT and precise control of beam-steering, was still an exotic technology. This started to change around 1970s, as the manufacturing the CRTs was better understood, combined also with hardware-accelerated “character generators.” This marked a paradigm shift in the thinking on how to use a computer: why physically print everything, instead use a reprogrammable display. This led to the phrase “Print is dead” in a scene of the Ghostbusters movie in 1984 (good foresight, but printed correspondence continued to be heavily used for several more decades).
The phrase the POLY-88 manual uses is “a simulated front panel display onto the system video terminal.” This simulated front panel is accessed by pressing CTRL+Z. Not just at startup, but an interrupt is used to access this simulated front panel display at any time.
Because the Monitor allows directly typing in hex values into RAM, one thing to know is that keys A-F and 0-9 are reserved as hex data inputs (not Monitor commands). Or in other words, all monitor commands are outside this range of A-F and 0-9.
- CTRL+Z: Interrupt current program and enable Front Panel Mode. Status of the CPU registers is saved onto the system stack.
- Pressing A-F or 0-9, the Monitor assumes you starting a hex-value sequence. You can’t abort this. If you press BACKSPACE, the single value is stored at the current address (0 for the upper-half becomes implied). If you type two hex values (e.g. “AC”) and then press BACKSPACE, the current address becomes that full value. If you type two hex values, then press SPACEBAR, your value is written to the current address, and then the address gets increment – this way, you can quickly type multiple hex value sequences in a row.
- SPACE: Advance the memory modify pointer one address (then redisplay due to returning back into the Front Panel Mode). This isn’t an instruction step, but is a memory-viewer step.
- CTRL+H: Opposite of SPACE, move the memory-viewer back one address. On some systems, CTRL+H is like BACKSPACE, but not here.
- ENTER: Move memory-viewer ahead eight addresses.
- LINEFEED: Move memory-viewer back eight addresses. On this system, there was a LINE FEED key above the ENTER.
- U: Update display. This is really an UNKNOWN command, but is reserved for this purpose of refreshing the display. Useful for monitor memory values that are changing due to interrupts.
- T: Exits the Front Panel Mode and returns to Tape Load Mode. When the Monitor first loads, it defaults to prompting for the Tape Load Mode (B or P). If you enter Front Panel Mode and then want to return back to loading a file from tape, T command lets you do this.
- I: Indirect Jump. Takes the two bytes from the current memory address viewer, swaps them, and jumps to that location in memory. Example, “FF 3F” display then jumps you to address 3FFF.
- J: Jumbo Word. Example, JFFEE causes EE FE to be written at the current displayed memory address (i.e. reverse order of what was entered).
- X: Execute. This executes the next instruction and returns back to the Front Panel Mode. You can even hold down X to repeat a sequence of instructions.
- G: Go command is like Execute, but does not return back to the Front Panel Mode. However, the Front Panel will likely remain on the screen. If you did CTRL+Z while in the Tape Load Mode, then do G to “Go” or Resume (or Run), you’ll be still in the Tape Load Mode (meaning you can press B or P to load something). Typically you would adjust the Program Counter first before issuing this Go command.
- Lxxxx: Look-at the specified memory address. xxxx can be up to four hex digits (LA to look at address 10 decimal, LF800 to look at the video addresses at hex F800). To quickly locate back to the start of memory, you can type “LU” (i.e. locate to an invalid hex address).
- SP/SH/SD/SB/SA: Stack modify (PC/HL,DE,BC,Accumulator flags).
POLY-88 Front Panel Display Usage Example
Example machine code program, entered using the Monitor (page 61 of POLY-88 Operation Software).

Monitor commands:
- LC80<ENTER> Look at address 0C80 hex
- Type the machine code sequence above with SPACE. e.g. 21 <SPACE> 00 <SPACE> F8 <SPACE> … 8B <SPACE> 0C
- SPJC80<ENTER> Stack Pointer address of Program Counter, enter Jumbo word of 0C80 (enters it in reverse as expected during runtime of the system).
- G to Go Execute from this Program Counter location.

TinyBASIC for the POLY-88
For my particular POLY-88, the other two ROMs contain TinyBASIC. The exact origin of this TinyBASIC remains unknown, in terms of who actually created it for the POLY88 and decided to call it Version 4.0P. But there are other references about TinyBASIC, tracing its origins as thus:
1.) Google Groups archive, see the June 7th, 2003 note by “Arobase, Salle multimédia” (this was found by Evan Allen). This described a file called PCWPATB.TXT produced from a 1977 reference called “PCC’s REFERENCE BOOK” (this article was apparently re-typed by Emmanual Roche while porting “PATB” to Amstrad PCW8256 around 1986). Note that “PATB” refers to Palo Alto TinyBASIC, where this specific re-typed reference refers to “Version 3” and “PCC” apparently means “People’s Computer Company.”
Tiny BASIC for ROM (Google Groups discussion)
2.) The above note led to a trail of other references, that reveals a sequence of discussions related to Tiny BASIC. The specific 8080 version I have is the Li-Chen Wang version originating from May 1976 issue of Dr. Dobbs (note that this was a few months after the Feb 1976 Gates Open Letter, which was always ironic relative to the 8008-version of BASIC from 1974 here)

TinyBASIC was one of the main motivating reasons for the founding of the Dr. Dobb’s Journal (as described in their March 1976 issue show below):

A sequence on the development of TinyBASIC is as follows: A general design, scope and intent was described in Sept. 1975, followed by some reference implementations for the 8080 CPU.
1975 September PCC (page 14): Dennis Allison, Happy Lady, and Friends
1975 November PCC (page 10): Dennis Allison, Bernard Greening, Happy Lady, and Lots of Friends
1976 Jan/Feb Dr. Dobbs: Whipple’s and Arnold Tiny BASIC Extended (Tyler, Texas) [octal source dump listing]
1976 March Dr. Dobbs (page 26): Fred Greeb’s Denver Tiny BASIC (8080 asm listing)
1976 May Dr. Dobbs (page 12): Li-Chen Wang (8080 specific port, Version 1.0)
1976 December Interface Age (page 94): Roger Rauskolb (Version 2.0, translated IBM to Intel assembler mnenonics)
1977 PCC: Li-Chen Wang (8080 specific port, Version 3)
VERSION 3: Found in “PCC’s Reference Book of Personal & Home Computing” by DWIGHT McCABE 1st Edition (1977)

This Tiny BASIC fits in the subsequent 2KB ROM chips (two additional 1KB chips, for a total of 3KB). The code to trap the press of CTRL-B (to activate Tiny BASIC) is part of this secondary ROM. That is, the “boot to BASIC” capability is enabled onto the system without modification of the original Monitor 4.0 ROM.
On the 8813 version of a POLY88 (same processor and S-100 bus, but with 5.25 disk drives), typically the “2nd ROM” would load disk drive support that booted EXEC DOS (where the ROM was hard coded to look for a boot on the first Drive 0). That is, Tiny BASIC was never part of a standard or official configuration provided by Polymorphic Systems (in fact these two additional ROM slots would generally be empty on a POLY-88, but TinyBASIC was the most prudent usage of them). Disk drives could be added to a POLY-88, and ROMs acquired that supported the EXEC operating system just like the 8813 system.
Use of BASIC
I have successfully loaded Polymorphic’s BASIC A00 from their original cassette tape (it took about 8 minutes). The POLY-88 emulator includes BASIC.CAS which is this BASIC A00 version. Some of the differences between this and TinyBASIC:
- Has support for trig functions (SIN, COS)
- “\” is used to divide statements (whereas most BASIC’s use colon “:” instead)
- CTRL-Y to abort or cancel the currently running program.
- SCR (or SCRATCH) erases memory and closes all open files.
- CLEAR removes the program and clears all variables (other systems this is generally “NEW”)
- To avoid a newline after PRINT, place “,” (comma). Most other BASIC’s used a semi-colon.
PM -88
B
BASIC
(basic.cas)
Wait till 002A. BASIC will auto-run after the load, there is a short delay while it initializes.

To see this particular example programming running on real hardware:
1976 POLY-88 Intel 8080 CPU BASIC A00 “PLOT” Command Example – YouTube
Some additional tape images include Polymorphic Systems original Game Tape #1 and Game Tape #2. After loading BASIC A00, then type “LOAD XYZ” to load the tape named XYZ. To switch a program, press CTRL+Y to stop the program. CLEAR and SCR to clear all the memory and LOAD to load something new.
A00 TB GT#
HAMURABI X 1
REVERSE X 1
STOCK X 1
CRAPS X 2
HANGMAN X 2
WUMPUS X 2
BACKGAM X 2
STARTRK X STARTRK1.CAS
STARTRK X STARTRK2.CAS
FORTH FORTH.CAS
A00 means you must load BASIC.CAS first.
TB means just the TinyBASIC ROM is needed.
When typing a name of a program, it must match how it was stored. As an example with Star Trek:
Run emulator as: PM -88 -tbasic
B
STARTRK (all upper case)
(startrk1.cas)
Note, this STARTRK1 needs existing TinyBASIC in ROM, then the STARTRK program extends this BASIC. That’s why after loading, you get the TINY BASIC prompt.

Use “H” for HELP (list of commands).
