Title: Altair Monitor PROMs
Date: December 08, 2019
Tags: altair programming
========================================

The availability of teletypes and terminals allowed for a vast improvement of
human/computer interaction over front panel switches.  Monitor programs ranged
in complexity from simple boot loaders to development environments.

The switches on the front panel of the Altair 8800 are a slow and cumbersome
method of program entry compared to using a keyboard on a terminal or even a
teletype.  I think the switches are fun, but only up to a couple hundred bytes.
As discussed previously, one improvement was to enter a short boot loader
program using the switches then load larger, more complex programs from
cassette, paper tape, or disk.

Use of the front panel was eventually going away completely.

PROM cards had nonvolatile storage (Programmable Read-Only Memory) where a boot
loader or other programs could be stored permanently allowing you to get
whatever environment you used up and running without any manual entry at all.
Eventually, even the Altair shipped without any front panel switches.  The 8800
Turnkey[0] used a monitor program stored in a PROM which was run automatically
at power on.

While the PROM memory could have a boot loader that waited to load BASIC or
another system from media, you could also have a simple environment that allowed
you to work with the Altair from a terminal or teletype in the same way as the
front panel did.  The Turnkey Monitor, which was booted automatically on the
8800 Turnkey, had commands to enter data into memory, examine memory, and jump
to locations to execute code.  It allowed for much faster program entry using a
keyboard.  This is the typical functionality of monitor programs found in
computers of the 70's and 80's.  Even on systems with keyboards and video output
included as standard.

A monitor, like the Turnkey Monitor, allowed the programmer to write assembled
binary bytes into the Altair and then dump the memory out onto paper tape.  When
hand writing code on paper, the only way to save it to media was to load into
the Altair's memory first.  It also provided for rudimentary debugging and
editing by allowing the programmer to examine and change memory then jump to any
point in the code.  More sophisticated monitors also included boot loaders to
read programs from various types of media and save memory back out to them.

Since PROM memory overlays RAM memory, some PROM cards had a feature to disable
the PROM when a write was attempted to a read-only PROM address giving you your
full RAM memory space back.  PROM programs were usually assembled to run from
very high in the 8080's address range so this wouldn't be a problem unless you
had spent the money on lots of RAM for your Altair.

Many people who came to home computing a little later will recognize the monitor
concept if they used a system that powered on directly into BASIC.  The
Commodore 64, being a very popular example, had BASIC in a ROM chip (as well as
an OS KERNAL) which overlaid memory and was booted automatically at power on.
From BASIC, one could load other programs from external media.

ounger folks might at least have heard of a BIOS, which is similar in concept.
A small program in ROM that is run at power on to load another, more complicated
runtime environment or OS.  Still the same concepts since the early days of
electronic computers.

As on-chip storage got cheaper, larger and more featureful ROMs came about.
Full execution environments that used to need to be loaded from external media
could instead be run automatically and at boot time.   VTL (Very Tiny Language)
was available for Altair computers and BASIC, as mentioned.  As far as I know,
it wasn't until later computers when BASIC in ROM became prevalent.


I previously wrote a boot loader to more quickly enter programs written in a
text editor on my laptop than by using the front panel.  The next step is to get
those programs back out so if I do enter a program with the front panel or
modify an already loaded program, I can save it back out to "media" which is my
laptop again.

The Altair Clone does have a virtual PROM card with several PROM slots.
However, since it's not actually a set of PROM chips, I can't burn a program to
a chip to load it onto my Altair.  I can encode my program in Intel Hex[1]
format to upload it to the Altair.  I'll do that once I have something I want
loaded permenently.

For now, though, I have bigger plans for more convenient programming and will
return to monitors later, as I'll still need a way to save data from the Altair.


[0] http://virtualaltair.com/virtualaltair.com/vac_altair_8800b_turnkey_model.asp
[1] https://en.wikipedia.org/wiki/Intel_HEX