Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.

IMSAI CP/M BIOS research

Skip to first unread message


Apr 19, 2006, 8:38:21 PM4/19/06
Hi. I'm trying to restore an IMSAI 8080 with a Z80 CPU that used to
run CP/M. It hasn't been used in many years and there is no
documentation on the last working system configuration.

The system came with several disk interface boards and serial boards.
More interestingly, it came with a Bytesaver board (8K of PROM) with
four 1K PROMs present. One is unmarked and contains the Bytemover
software. The second is unmarked and I don't know what it contains.

The third is located at EC00 and is marked "CP/M boot 181 48k", and
contains 4 jump vectors (JP HHHH) to locations within the PROM. The
fourth is installed at location F000 and is marked "Matrox". It
contains 8 jump vectors to locations within the PROM.

Apparently to go along with the BIOS, I have two boxes of CP/M 8"
floppy disks. They are marked with "Munn CP/M V 2.2B 48k" and the
names of various application programs.

Since I don't know what perhipheral cards go with the BIOS, I had
planned on disassembling the BIOS to figure out what cards to use and
what ports to configure them at. Unfortunately, the BIOS PROMS don't
seem to be structured the way I expected
( so I'm a bit stuck. If
anyone has any suggestions on how to interpret the vectors or PROM
arrangements, I'd appreciate a point in the right direction!


Barry Watzman

Apr 19, 2006, 8:59:46 PM4/19/06
The BIOS proms are not necessarily part of CP/M once it boots. They may
only be boot code.

The key here, which you did not touch on at all, is the disk drive
controller. The boot code has to be specific to that. Of secondary
importance, irrelevant for booting but not for running, is the I/O
device (keyboard & screen) and it's interface board(s).

It's very possible that you may have to start from scratch. Got an


Apr 19, 2006, 9:17:22 PM4/19/06
Perhaps the PROMS are only boot code; would the boot routine normally
be 2 or 3K? In a system like this would the full BIOS normally come in
off of the floppy?

For the serial board, I have a Cromemco TUART and a Jade 1p2s board.
For the floppy controller, I have a board I cannot identify (marked
"8800 Interface BD") and a Tarbell 1011 Revision D board. The floppy
drives themselves are missing, but I have replacements to work with.

I was hoping to first figure out the serial board and bios routines and
use it to transfer the proms to a computer for disassembly. Reading
the front panel gets tiring after a while!

I _could_ start from scratch but I'd like to first exhaust all means of
getting the floppies I have to boot, which I think means figuring out
what is on the proms.

Barry Watzman

Apr 19, 2006, 10:34:49 PM4/19/06
First of all, a serial console connects to ONE serial card, period.
Maybe the Tu-ART, maybe the 1p2s board, but one or the other.

I have no idea what the 8800 Interface bd is, perhaps a card for the old
Altair disk system (just a guess). But I know exactly what a Tarbell
1011 board is, and that's the board that you want, it's a really good
disk controller (single density only, unfortunately, but at least a good
single density card). The Tarbell card has a built in boot system and
boot code prom (on 32 bytes total, that's all it takes, and it goes away
after booting). It uses a Western Digital 1771 chip, which is well
known and well supported, with lots of documentation available. The
manual for the Tarbell board is available in PDF format on the Harte
site. All you need for a system is:

-CPU card
-Memory Card(s) (preferably static)
-Tarbell disk controller
-serial I/O Card

Unless you know that there are software routines on the proms that you
want to use, I would pull everything else. Use a PC as a serial terminal.

But the problem is that you need a boot disk with a compatible BIOS.
And that's a real bitch if you don't have one and don't have another
[working] system on which to prepare one. It's easiest if you have a
really, really dumb serial card that does not require any software
initialization. The Tu-Art, unfortunately, takes quite a bit of
software initialization. I am not personally familiar with the Jade card.


Apr 20, 2006, 7:39:24 AM4/20/06
The system has both serial boards, meaning I don't know which one goes
with the BIOS and which one doesn't. I also don't know any of the
ports since they were all randomly reset.

The "8800 Interface Bd" is something designed to work with an oddball
type drive (such as an ALTAIR or IMSAI) because there is no FDC chip on
it. So, yes the Tarbell would be preferable.

My reading of the Tarbell board BIOS is that it loads the first sector
in at 0000 and then jumps to it. Could the floppies contain the BIOS
for the system, and the PROMS be something entirely different? Based
on the PROM labels and the jump table at the beginning of them, I have
been assuming they are a CP/M BIOS chopped into two 1K sections somehow.

Barry Watzman

Apr 20, 2006, 8:25:52 AM4/20/06
The Tarbell boot code does indeed read Sector 1 of Track zero into
memory and then jumps to it. Normally the diskette itself contains the
entire OS, including the bios, and there is no bios at all in the
computer hardware itself (e.g. no ROM BIOS like you have in a PC). But
some systems worked differently. What you have to understand is that in
that world, every system was different from every other system. Even to
nominally identical systems (same boards) might require different boot
disks if the ports were configured differently.


Apr 20, 2006, 8:50:50 AM4/20/06
What would normally fit in sector 1 of track 0? Would it just be a
more complete bootloader than the Tarbell 32B loader, or would it be
the CP/M bios and command processor?

Or was there no "universal standard" for the CP/M boot sequence?


Barry Watzman

Apr 20, 2006, 9:32:33 AM4/20/06
Normally, Trk 0 sector 1 contains the "rest" of the boot code. The prom
on the disk controller (the Tarbell board) reads track 0 sector 1. The
code in track 0 sector 1 then reads the rest of tracks 0 and 1 (51
sectors ... track 0 sectors 2 thru 26, and all of track 1 (sectors
1-26). Those sectors classically contain a binary image of the 3
modules of CP/M itself (CCP, BDOS, BIOS), but in some more advanced
systems they are instead a high-level intelligent loader that can read
actual files off of the diskette, allowing for a bios that makes the
entire OS too big to fit in that remaining space.
Message has been deleted

Apr 20, 2006, 11:10:30 AM4/20/06

My advice, since I've just gone through the same thing, is to forget
what you have now, be methodical, and start over. It's easier and you
end up with a nice, clean system that you know the reason for every
hardware setting and piece of software code.

- Choose the set of boards you want to use: CPU, RAM, I/O, Floppy. I
used a mix of Cromemco and Compupro.

- Obtain manuals for each one of these boards.

- Using a PC and DOS CPM emulation, write your own CBIOS (not too bad
if you have the sources provided by the board vendors).

Trying to get an old system in an unknown state working, without
docs, possibly without all the cards or correct disks, is nearly if not
impossible unless you just know what you're looking at and doing, and
already have running systems to test the boards and work with.

~ J

Herb Johnson

Apr 20, 2006, 11:40:29 AM4/20/06

All you likely need to know about the Tarbell board and any disks it
boots CP/M from, is in the manual.

On one of my Web pages which lists miscelaneous S-100 documents I

I list the manual for your Tarbell board as;

Tarbell Floppy disk Interface (M1011 8-inch single density), 1978, 92

I used it a number of times myself. It has a tiny PAL which has enough
code to boot up the first sector of track 0. That sector has sufficient
code to read the rest of track 0 and track 1. Those contain CP/M and
the BIOS for a particular system. The board supports 8-inch (or 5.25
inch) single density. You can look at your disks to see if they are
single or double density. Again, details and listings for the Tarbell
are in the manual.

Your proms probably contain something other than CP/M support code, but
who knows? If you want to read them, and assuming your IMSAI is working
but without an operating system and is as described, here's an option.
Write a simple program to operate your UART, get it working to just
echo characters from the serial port. Then add some code to start
reading bytes from some location, convert to hex, and dump them out the
serial port. (look on the Web for "rom monitor" programs for sample
code.) TOGGLE IN these programs to test and operate. In the old days,
programs would read the front panel switches to control their features
Of course, your alternative is to pull the PROMS and read them in a
ERPOM reader.

Reading manuals is a good idea. I have many S-100 manuals available in
my copy service; contact me via my Web site for details. (Don't use the
gMail address in this msg to reply.). There are also manuals available
online for download, and other vendors offer copies too. A Web search
will find them.

Good luck with your "new" computer!

Herb Johnson

Herbert R. Johnson, phone 609-771-1503, New Jersey USA
<a href=""> web site</a>
<a href=""> domain mirror</a>
my email address: hjohnson AAT retrotechnology DOTT com
if no reply, try in a few days: herbjohnson ATT comcast DOTT net
"Herb's Stuff": old Mac, SGI, 8-inch floppy drives
S-100 IMSAI Altair computers, docs, by "Dr. S-100"

Apr 20, 2006, 2:41:11 PM4/20/06
As others have mentioned, many setups only have
enough code in ROM to read the first track. Some
even take this a step farther in that the code on the
first track scans the disk for a specific file name
and then reads that into memory as the BIOS routines.
This two stage setup has the advantage that one can
modifiy the BIOS as a file rather than having to do
a complete sysgen to create a new boot image.
As for the serial, many CP/M's will use I/O address 0
as the serial's data port and address 1 as the status
port. This is typical for the hardwired com chips used
on early serial boards. You might write some simple
code to check this out and have it send the read serial
data to the output display on the front of the IMSAI ( I/O
address 0FFH ). Do note that "LED on" means "0" written
to this bit. You can experiment with Baud rates as
well until the values displayed make sense.
You can then feed some serial data into the various
serial ports and see which one creates values on the
I/O display.
For the first pass, you can ignore the status address
and just read the serial port. Once you find the wires
that feed this port, you can determine the status bits
in a similar method.

Holger Petersen

Apr 20, 2006, 3:50:55 PM4/20/06
to writes:

>>What would normally fit in sector 1 of track 0?

>One common approach is code that calls the base boot code to read in
>additional sectors. Another was the first boot load sector 1 track 0
>and that code is the disk boot loader that reads the required
>additional sectors.

The most difficult Board was the "Jade DD". It had an extra-Z80 on it.
And the neccessary Files (EPROM on the Board, BoootSektor on Track 0,
CP/M-Bios) were in 3 different variants of Z80-Mnemonics IIRC.

I don't have that one anymore, so I can't look it up.

Yours, Holger

Message has been deleted


Apr 21, 2006, 7:02:32 AM4/21/06
First, I'd like to thank everybody for all the helpful information!
When I got involved with computers back in the 70s, I jumped from the
earliest systems (paper tape) to TRS-80s and then to PCDOS without ever
learning CP/M.

Now that I understand the boot process better, I think I'll ignore the
PROMs for now and focus on getting track 0 sector 0 and the subsequent
boot code loaded off the some of the floppies and disassembled to the
point that I can figure out where to configure a serial board.

Once I get the real BIOS disassembled, it should be fairly easy to
figure out which board to use - I have the manuals for both. The TUART
has (as someone pointed out) a complex configuration & status process.
The Jade 1p2s is very simple by comparison.

With respect to the Tarbell disk controller, I have a manual for it
that covers up to revision "C". My board is a revision "D" so I'm
missing some information. This board also needs to be configured for
the exact drive that it is to be used with; I have Qume 842s which
don't appear in the Tarbell manual and may not be compatible. I may
need to do some more hardware hunting.

Message has been deleted

Bill Gunshannon

Apr 21, 2006, 8:35:38 AM4/21/06
In article <>,

Qume 842
1.6 meg - double sided - quad density - used by Tandy in the Model 16/6000.
Not likely to have been included in the BIOS of a machine of IMSAI vintage.
I would imagine the controller may not be able to deal with it. Probably
easier to look for an old Shugart to at least get things started.


Bill Gunshannon | de-moc-ra-cy (di mok' ra see) n. Three wolves | and a sheep voting on what's for dinner.
University of Scranton |
Scranton, Pennsylvania | #include <std.disclaimer.h>

Barry Watzman

Apr 21, 2006, 2:35:51 PM4/21/06
The differences in the Tarbell board from rev. C to D are irrelevant as
to the software. The circuit may be slightly different, but the
software will be the same.

The Tarbell boards were not much more than wire-wrap boards in some
regards, because drives were not well standardized. But most of them
are configured for a shugart drive (800, 801, 850, 851) (the 850/851 are
double sided). Your qume drives are shugart compatible, I believe, so
they will probably work with the boards as they are probably configured.
But try to verify that the configuration is shugart compatible. The
qume drives you have are MUCH newer than the board and you may not find
jumpering info for them specifically.

[Tarbell also made a later double density disk controller board.]

Barry Watzman

Apr 21, 2006, 2:37:55 PM4/21/06
The qume drive is almost certainly compatible with a Shugart 851. It
may support buffered "fast seek", but even if it does, it won't require
it and will work with Shugart 851 jumpering.

Herb Johnson

Apr 21, 2006, 3:52:37 PM4/21/06
nonmaskable wrote:

> Now that I understand the boot process better, I think I'll ignore the
> PROMs for now and focus on getting track 0 sector 0 and the subsequent
> boot code loaded off the some of the floppies and disassembled to the
> point that I can figure out where to configure a serial board.

> With respect to the Tarbell disk controller, I have a manual for it

> that covers up to revision "C". My board is a revision "D" so I'm
> missing some information. This board also needs to be configured for
> the exact drive that it is to be used with; I have Qume 842s which
> don't appear in the Tarbell manual and may not be compatible. I may
> need to do some more hardware hunting.

I checked my Tarbell manuals. I have a no-revision manual from 1978,
and a revision C or D from Oct-Nov 1979. I doubt your card changed much
from C to D; there is not much change from no-rev to C. Check the
schematic vs your board to see if there are new chips or not.

Your plan to look at tracks 0 and 1 to check the BIOS is reasonable.
You'll be able to see the start of CP/M BIOS by looking for a series
of JMP instructions, corresponding to the BIOS entry points, at the
beginning of some sector. It's possible they will be CALL instructions
but they should be JMP's.

Assuming you have some kind of computer which can read your 8-inch
single density disks, of course you can look at any files to see if
there is BIOS source code. (If your disks are double density, the
Tarbell SINGLE density controller could not have written or read them.)

The Qume 842 is an 8-inch double sided drive. It can operate in single
density mode (which is all the Tarbell can do) or double density; and
of course it can run either single or double sided. Again, the Tarbell
manual describes the board; it was designed for a user to set up any
drive for which you have information, not just the drives listed in the
manual. The Qume manual informs you about the drive. You have
sufficient information to connect the two for single density operation.

Herb Johnson

Herbert R. Johnson, voice 609-771-1503, New Jersey USA

<a href=""> web site</a>
<a href=""> domain mirror</a>
my email address: hjohnson AAT retrotechnology DOTT com

if no reply, wait & try: herbjohnson ATT comcast DOTT net

0 new messages