MTX Plus+
CP/M BIOS
All CP/M systems have their own Customised Basic I/O System
(CBIOS, or just BIOS), used to interface the machine specific
hardware with the high level CP/M function calls for such items
as the keyboard, video display and disk drives. The CP/M BIOS
and BDOS are combined into a
single module loaded into high memory sometimes referred to as
FDOS (Floppy Disk Operating System).
The start of the BIOS code contains a table of sixteen 8080
jump instructions, each of the jump instructions will execute
one of sixteen possible CP/M 2.2 BIOS functions. The first jump
instructions is at memory location 0000 and points to the
wboot (Warm Boot) function, since 8080 jumps
instructions are three bytes in length, memory locations 0001
and 0002 contain the start address of the BIOS jump table
Apart from the wboot function, all the other
BIOS functions are one of two types -
serial or disk
functions. The serial oriented BIOS functions transfer one ASCII
character at a time to or from hardware devices and/or provide
simple status about the devices. Under CPM2.2 there are four
logical serial devices; Console (CON), List (LST), Punch (PUN),
and Reader (RDR). Each of the four logical serial devices can be
mapped to any of four possible hardware devices.
Memory address three contains the logical serial device
mappings this memory location is referred to as the IOBYTE. The
IOBYTE uses two bits per logical device to select one of a
possible four hardware devices. Under CPM2.2 a program should
use the BDOS service functions
seven and eight to read and write the IOBYTE.
The list of BIOS functions in CP/M 2.2 are shown in the table
below. (Some BIOS functions are duplicated in the BDOS, the
value in parenthesis is the corresponding BDOS function.)
No. |
Function |
Mnemonic |
Loc. |
No. |
Function |
Mnemonic |
Loc. |
0 |
System Reset (0) |
WBOOT |
000 |
|
|
|
|
Serial Functions |
Disk Functions |
|
|
|
|
7 |
Move disc head to track 0 |
HOME |
|
1 |
Get Console Status (11) |
CONST |
|
8 |
Select disc drive |
SELDISK |
|
2 |
Console Input (6) |
CONIN |
|
9 |
Set track number |
SETTRK |
|
3 |
Console Output (6) |
CONOUT |
|
10 |
Set sector number |
SETSEC |
|
4 |
List Output (5) |
LIST |
|
11 |
Set DMA address |
SETDMA |
|
5 |
Punch Output (4) |
PUNCH |
|
12 |
Read a sector |
READ |
|
6 |
Reader Input (3) |
READER |
|
13 |
Write a sector |
WRITE |
|
|
|
|
|
14 |
Get List Status |
LISTST |
|
|
|
|
|
15 |
Sector translation for skewing |
SECTRAN |
|
With the functions listed, there just remains
the small matter of creating the software for MTXPlus+
!!!
|