Loading...
 

Microbee Monitor Commands

The Monitor utility evolved significantly over time as new Microbee products and upgrades were released. The range of resulting versions can be grouped into 2 main families:

  • ROM System Monitors - found in ROM based Microbees
  • Disk System Monitors - found in Disk based Microbees
There is significant variation in command availability, functionality and presentation both between Monitor families and across different versions within a family, particularly for ROM System Monitors. While the tables below don't attempt to fully document the subtleties of each version, they do attempt to identify the main command differences with superscript tags. No tag means that the corresponding command or option is available in all Monitor versions within that family, otherwise its only available in the specific versions listed. The tags themselves are explained in the Monitor Version tables within each section. This information has been sourced from various Microbee manuals, including:

  • Microbee Z80 Editor/Assembler Instruction Manual
  • WordBee User's Manual
  • Microbee IC Technical Notes
  • Microbee Personal Communicator System Manual (PC85)
  • Microbee Disk System Manual
  • Microbee Computer-In-A-Book Manual
  • Microbee 256TC Technical Reference
 

ROM System Monitors

These Monitors are found in ROM-based Microbees and are bundled with the ROMs of other system utilities (ie EDASM, WordBee, Terminal/Network & Telcom).

Monitor Versions


Key/Tag Title Software Association
MM1.0
MicroBee Monitor v1.0
Included with EDASM
MM1.1
MicroBee Monitor v1.1
Included with WordBee v1.0 & v1.2
WM1.1
WB Monitor v1.1
Included with WordBee v1.3
TN1.0
MicroBee Monitor
Included with Terminal/Network v1.00
TM3.0
Telcom Monitor
Included with Telcom v3.0 & v3.1
TM3.2
Telcom Monitor
Included with Telcom v3.2 & v3.21


Monitor Commands

Command Description
A nnnn
Alter memory, where:
  • nnnn is the memory address to be altered.
This command is very similar to the Examine memory command, except that there is no need enter Modify mode in order to make changes. See Examine command for more details.
B
goto Basic.
Exits the monitor and invokes Basic.
C xxxx yyyy nnnn
Compare two blocks of memory, where:
  • xxxx is start address of the first block.
  • yyyy is the start address of the second block.
  • nnnn is the number of bytes to be compared (in Hex).
Any differences between the first block and the second block will be displayed on the bottom half of the screen in the following format:
  • aaaa ff ss, where:
    • aaaa is the address of the difference in the first block.
    • ff is the contents of the first block.
    • ss is the contents of the second block.
The Compare command will be terminated when the total number of bytes has been compared or when the screen is filled. If there are too many differences to fit on the screen, compare smaller blocks.
D "file" t xxxx yyyy nnnn
Dump file to cassette tape at 1200 baud, where:
  • "file" is a filename no longer than six letters. It must be enclosed in double quotes.
  • t is a single character filetype. This should be a letter to indicate the type of the file; e.g.
    • B for BASIC files.
    • M for MACHINE language files.
    • S for SOURCE files.
    • D for DATA files.
    • Note that Basic will only load file types "B" and "M".
  • xxxx is the start address of the data to be written to tape.
  • yyyy is the end address of the data to be written to tape.
  • nnnn is an optional auto execute address. This address is stored in the header and defaults to the same as the start address if no address is given. BASIC uses this to run "M" type files, but the machine language monitor does not use it when a file is read.
E xxxx
Examine memory, where:
  • xxxx is the memory address to be examined.
This command will produce a hexadecimal memory dump on the screen with the cursor indicating the current byte. The cursor can be moved between bytes by using the keys listed below. Bytes can be altered by first invoking Modify mode and then entering the desired hexadecimal value(s) or, in later versions only, ASCII values can also be entered by toggling into Text entry mode. Modify mode remains in effect until the cursor is navigated elsewhere or the Examine command is exited. The Relative Jump command will move the cursor forward or backward to the location which would be jumped to if the current cursor was the second byte of a relative jump instruction.

Function Key [MM1.x, TN1.0] Key [WM1.0] Key [TM3.0] Key [TM3.2]
Cursor Left ^A ^S ^A ^S
Cursor Right ^S ^D ^S ^D
Cursor Up ^W ^E ^W ^E
Cursor Down ^Z ^X ^Z ^X
Page Up ^E ^R
Page Down ^X ^C
Modify Mode M M M M
Relative Jump R R ^R ^O
Text/Hex Toggle ^T ^A
Exit ESC ESC ESC ESC


F xxxx yyyy zz
F xxxx yyyy "c" [TM3.x]
Fill memory, where:
  • xxxx is start address.
  • yyyy is end address.
  • zz is the fill value (in Hex). If no value is given it will default to 00h.
  • "c" is an alternative ASCII fill value, enclosed in double quotes.
G xxxx
Go to address and execute the machine language program found there, where:
  • xxxx is the program start address
The monitor's warm start address is pushed onto the stack and program control will jump to the address supplied. A program executed in this way can return control to the monitor by executing a RET instruction.
H hhhh [TM3.x]
H "c" [TM3.x]
Hexadecimal to decimal conversion, where:
  • hhhh is a hexadecimal number to convert, or
  • "c" is an ASCII character to convert. This value must be enclosed in double quotes.
The corresponding decimal value is displayed on the line below the command line, along with the Hex value.
I pp [MM1.x, TM3.x]
Inputs one byte of data from a port, where:
  • pp is the port number.
The value returned from the port is displayed on the screen (in Hex).
I xxxx [TN1.0]
Inputs data from the network into memory, where:
  • xxxx is the start address.
Uses the Christensen protocol routines.
J [TM3.x]
Jump to cassette auto address.
After executing the R command, you can use this command to jump to the auto-execute address of the loaded file.
K ddddd [TM3.x]
Convert decimal to hexadecimal, where:
  • ddddd is the decimal number to convert. Negative values may also be converted by prepending a minus sign, eg K -123
L d [TM3.x]
set Lprint device, where:
  • d is the required device number as used by Basic, i.e., 0 for video, 1 for parallel printer, 2 for 300 baud cassette etc.
This command causes the specified device to be set up as the OUTL device.
M xxxx yyyy llll
Move block of memory, where:
  • xxxx is the source start location.
  • yyyy is the destination start location.
  • llll is the number bytes to be moved (in Hex).
N aaaa bbbb [TM3.x]
Numeric calculation, where:
  • aaaa is the first number in Hex
  • bbbb is the first number in Hex
This command performs a hex addition and subtraction of the two numbers specified. The result is displayed on the right of the screen with the form: A, B, A+B and A-B. This is useful for calculating relative jumps etc.
O pp nn [MM1.x, TM3.x]
Outputs one byte of data to a port, where:
  • pp is the port number.
  • nn is the value to output.
O xxxx yyyy [TN1.0]
Outputs data to the network, where:
  • xxxx is the start address.
  • yyyy is the end address.
Uses the Christensen protocol routines.
P
Page clear.
This command clears the screen and returns to the command mode.
R "file" xxxx
Read tape file, where:
  • "file" is a specific filename to be read off tape (optional). If supplied, it must be enclosed in double quotes.
  • xxxx is the destination memory address (also optional).
The monitor will initialise the tape routines and start looking for a valid file header (produced by the "D" or "W" commands). If no filename is given, the first file found will be loaded. If a filename is given the monitor waits for the correct file before loading; however, each header will be displayed as it is encountered. This allows you to observe what files are on the tape. If a CRC error is detected during a read, the read will be terminated and a "C" put at the end of the command line. To verify a machine language file use: R "file" 8000 as this will read the file into ROM space and hence nothing will be destroyed in memory in case of a bad Dump or Write.
S xxxx yyyy zz (zz ..)
S xxxx yyyy "string" [TM3.x]
Search memory for specified byte or bytes, where:
  • xxxx is the start address.
  • yyyy is the end address.
  • zz are the bytes to be searched for. This can be a single byte or a pattern of up to 6 bytes separated by spaces.
  • "string" is a text string to be searched for, enclosed in double quotes.
The memory addresses of any matching bytes or byte patterns within the search range are displayed.
T ssss eeee [TM3.x]
Type a hex listing, where:
  • ssss is the start address.
  • eeee is the end address.
This command produces a hex listing of a memory block, with the output sent to the OUTL device. To stop the listing, hold down the ESC key.
V [MM1.0]
VDU
This command simply clears the screen and allows the user to use the Microbee as a "T.V. or Glass typewriter". The text is of no use as it cannot be printed or saved, but the user can get an idea of what control characters are supported by the VDU driver etc.
V [TM3.x]
View whole page.
The Alter and Examine commands may be set up in either the normal mode, in which 6 lines are displayed, or in the full page mode. This command allows the user to toggle between the two modes. If the full page mode is selected, a V will appear on the screen. To change back to the normal mode, enter V again.
W "file" t xxxx yyyy nnnn
Write a file to tape at 300 baud.
This command is the same as the Dump command, except for the slower baud rate.
X
eXit
Exit the monitor and return to whichever program invoked the Monitor (ie Editor/Assembler, WordBee or Telcom)
Z [TM3.x]
go Zero
This command performs a jump to location 0, as if the command G 0 had been executed. Do not use this command unless a program has been set up at 0.


 

Disk System Monitors

These Monitors are found in Disk-based Microbees and are bundled into the system Boot ROM.

Monitor Versions


Key/Tag Title Boot ROM Model Association
c83
MicroBee Disk Monitor c1983
bn54
bn55
64K, 64K Plus, APC, CIAB, SBC
c85
Disk Monitor c85
bn56
?
c87
microbee monitor c87
microbee 256 TC monitor c87
microbee Premium+ monitor c2012
bn58
bn59
bn60
256TC v1.15
256TC v1.20
Premium Plus+ v1.00
128K Overdrive, 256TC, Premium Plus+
HDM
Microbee Hard Disk Monitor
hd18


Monitor Commands

Command Description
A nnnn
Alter memory, where:
  • nnnn is the memory address to be altered.
This command is very similar to the Examine memory command, except that there is no need enter Modify mode in order to make changes. See Examine command for more details.
B
Boot.
This command has the same effect as pressing the RESET key. If there is a disk in drive A (and this is a system disk), then the system will boot CP/M.
C xxxx yyyy nnnn
Compare two blocks of memory, where:
  • xxxx is start address of the first block.
  • yyyy is the start address of the second block.
  • nnnn is the number of bytes to be compared (in Hex).
Any differences between the first block and the second block will be displayed on the bottom half of the screen in the following format:
  • aaaa ff ss, where:
    • aaaa is the address of the difference in the first block.
    • ff is the contents of the first block.
    • ss is the contents of the second block.
The Compare command will be terminated when the total number of bytes has been compared or when the screen is filled. If there are too many differences to fit on the screen, compare smaller blocks.
D "file" t xxxx yyyy nnnn
Dump file to cassette tape at 1200 baud, where:
  • "file" is a filename no longer than six letters. It must be enclosed in double quotes.
  • t is a single character filetype. This should be a letter to indicate the type of the file; e.g.
    • B for BASIC files.
    • M for MACHINE language files.
    • S for SOURCE files.
    • D for DATA files.
    • Note that Basic will only load file types "B" and "M".
  • xxxx is the start address of the data to be written to tape.
  • yyyy is the end address of the data to be written to tape.
  • nnnn is an optional auto execute address. This address is stored in the header and defaults to the same as the start address if no address is given. BASIC uses this to run "M" type files, but the machine language monitor does not use it when a file is read.
E xxxx
Examine memory, where:
  • xxxx is the memory address to be examined.
This command will produce a hexadecimal memory dump on the screen with the cursor indicating the current byte. The cursor can be moved between bytes by using the keys listed below. Bytes can be altered by first invoking Modify mode and then entering the desired hexadecimal value(s) or, in later versions only, ASCII values can also be entered by toggling into Text entry mode. Modify mode remains in effect until the cursor is navigated elsewhere or the Examine command is exited. The Relative Jump command will move the cursor forward or backward to the location which would be jumped to if the current cursor was the second byte of a relative jump instruction.

Function Key [c83] Key [c85] Key [c87] Key [HDM]
Cursor Left ^A ^S ^S ^S
Cursor Right ^S ^D ^D ^D
Cursor Up ^W ^E ^E ^E
Cursor Down ^Z ^X ^X ^X
Page Up ^R ^R
Page Down ^C ^C
Modify Mode M M M M
Relative Jump R R R
Text/Hex Toggle ^A
Exit ESC ESC ESC ESC


F xxxx yyyy zz
Fill memory, where:
  • xxxx is start address.
  • yyyy is end address.
  • zz is the fill value (in Hex). If no value is given it will default to 00h.
G xxxx
Go to address and execute the machine language program found there, where:
  • xxxx is the program start address
The monitor's warm start address is pushed onto the stack and program control will jump to the address supplied. A program executed in this way can return control to the monitor by executing a RET instruction.
HxR tttt ssss dddd llll[HDM]
Read data from hard disk, where:
  • x is the hard disk number.
  • tttt is the starting track number.
  • ssss is the starting sector number.
  • dddd is the starting destination memory address.
  • llll is the number of bytes to read (in Hex), rounded up to whole sectors. For example, if the sector size is 200H (512D) bytes then any value between 1 and 200 will actually read 200H (512D) bytes from the disk and any value between 201 and 400 will read 400H (1024D) bytes etc.
HxW tttt ssss dddd llll[HDM]
Write data to hard disk, where:
  • x is the hard disk number.
  • tttt is the starting track number.
  • ssss is the starting sector number.
  • dddd is the starting source memory address.
  • llll is the number of bytes to write (in Hex), rounded up to whole sectors. For example, if the sector size is 200H (512D) bytes then any value between 1 and 200 will actually write 200H (512D) bytes to the disk and any value between 201 and 400 will write 400H (1024D) bytes etc.
I pp
Inputs one byte of data from a port, where:
  • pp is the port number.
The value returned from the port is displayed on the screen (in Hex).
M xxxx yyyy llll
Move block of memory, where:
  • xxxx is the source start location.
  • yyyy is the destination start location.
  • llll is the number bytes to be moved (in Hex).
O pp nn
Outputs one byte of data to a port, where:
  • pp is the port number.
  • nn is the value to output.
P
Page clear.
This command clears the screen and returns to the command mode.
R "file" xxxx
Read tape file, where:
  • "file" is a specific filename to be read off tape (optional). If supplied, it must be enclosed in double quotes.
  • xxxx is the destination memory address (also optional).
The monitor will initialise the tape routines and start looking for a valid file header (produced by the "D" or "W" commands). If no filename is given, the first file found will be loaded. If a filename is given the monitor waits for the correct file before loading; however, each header will be displayed as it is encountered. This allows you to observe what files are on the tape. If a CRC error is detected during a read, the read will be terminated and a "C" put at the end of the command line. To verify a machine language file use: R "file" 8000 as this will read the file into ROM space and hence nothing will be destroyed in memory in case of a bad Dump or Write.
S xxxx yyyy zz (zz ..)
Search memory for specified byte or bytes, where:
  • xxxx is the start address.
  • yyyy is the end address.
  • zz are the bytes to be searched for. This can be a single byte or a pattern of up to 6 bytes separated by spaces.
The memory addresses of any matching bytes or byte patterns within the search range are displayed.
T
Terminal Emulator - 300 baud, full-duplex.
This command sets the screen resolution to 80*24 and enters an ADM-3A terminal emulation program which communicates through the serial port at 300 baud to an external device such as a MODEM, mainframe etc. Communication is full-duplex, which means that the only characters displayed on the screen are those received from the external device. The normal serial format is 8 data bits, no parity, 1 stop bit, however these and other parameters are stored in RAM and can be changed (by using the Alter or Examine commands) prior to invoking the Terminal Emulator.
TH
Terminal Emulator - 300 baud, half-duplex.
Same as the T command, except that communication is half-duplex, which means that characters typed on the keyboard go to the screen as well as characters from the external device.
U
Terminal Emulator - 1200 baud, full-duplex.
Same as the T command, except that communication is at 1200 baud.
UH
Terminal Emulator - 1200 baud, half-duplex.
Same as the TH command, except that communication is at 1200 baud.
W "file" t xxxx yyyy nnnn
Write a file to tape at 300 baud.
This command is the same as the Dump command, except for the slower baud rate.
XR ttss dddd llll
Read data from floppy disk A, where:
  • tt is the starting track number within the range 0 <= tt <= 4FH. The tracks number from the outermost track on side 0 inwards on the disk and then return outwards up side 1 to the outermost track on side 1.
  • ss is the starting sector number within the range 1 <= ss <= ??. Note that the sector numbering starts from 1, whereas the track numbering starts from 0.
  • dddd is the starting destination memory address.
  • llll is the number of bytes to read (in Hex), rounded up to whole sectors. For example, if the sector size is 200H (512D) bytes then any value between 1 and 200 will actually read 200H (512D) bytes from the disk and any value between 201 and 400 will read 400H (1024D) bytes etc.
No sector skewing is performed during disk reads.
XW ttss dddd llll
Write data to floppy disk A, where:
  • tt is the starting track number within the range 0 <= tt <= 4FH. The tracks number from the outermost track on side 0 inwards on the disk and then return outwards up side 1 to the outermost track on side 1.
  • ss is the starting sector number within the range 1 <= ss <= ??. Note that the sector numbering starts from 1, whereas the track numbering starts from 0.
  • dddd is the starting source memory address.
  • llll is the number of bytes to write (in Hex), rounded up to whole sectors. For example, if the sector size is 200H (512D) bytes then any value between 1 and 200 will actually write 200H (512D) bytes to the disk and any value between 201 and 400 will write 400H (1024D) bytes etc.
The XR and XW commands can be used to restore faulty disks so that the data can be retrieved (e.g. when an error crops up in the directory track), or to UNDELETE a file which was accidentally ERAsed. The directory track on Microbee double density CP/M disks is track 02H. If a directory sector is brought into memory (use a length of 200H, since the sectors are 512 bytes long), then deleted files can be seen intact except for an 0E5H byte just before the name. If this byte is zeroed and the sector written back into the directory, then the filename will reappear in the directory listing. The file may then be copied to another disk provided no writing had taken place on the disk after the file was ERAsed. After copying the file off the disk, it should be reERAsed.
YR ttss dddd llll
Same as XR, except using floppy disk B.
YW ttss dddd llll
Same as XW, except using floppy disk B.
Z
go Zero
This command performs a jump to location 0, as if the command G 0 had been executed. Do not use this command unless a program has been set up at 0.