This monitor was the first attempt by a third party to provide an upgrade path from T2. It was produced in 1978 by a firm called Viewfax in Birmingham UK (of whom I know nothing else apart from the fact that the author of the program was Richard Beal). This was supplied with a nice little yellow-covered handbook and came on two 1k x 8 EPROMs. The second EPROM had quite a bit of spare space in readiness for B-BUG 2, which never appeared to my knowledge. A few commands behaved differently to T2 and the general appearance to the user was rather nicer. However, I’m told that this also suffered from bugs in some of the lesser used routines. Certainly it wasn’t fully compatible with T2 as some software had problems. Basically it was a copy of T2 with an additional EPROM to hold some new commands. The new R and W commands seemed great at the time as they were about four times faster than the old D and L commands (which were still supported). Also, the hex keyboard facility was extremely useful for putting text strings into programs.
I havn’t documented the T2 commands here as they didn’t change.
A – hexadecimal arithmetic
A xxxx yyyy responds with: SSSS DDDD JJ
SSSS is sum of xxxx and yyyy
DDDD is difference of xxxx and yyyy, yyyy-xxxx
JJ is displacement required in a Jump Relative instruction which starts at xxxx, to cause a jump to yyyy. If such a jump is not possible ?? is displayed instead.
G – generate
G xxxx yyyy zzzz
Generate auto-start tape. Data from xxxx up to yyyy-1 is written to tape and the auto-start address is set to zzzz.
H – hex keyboard
Modify the keyboard so that it is possible to obtain the hex equivalent of any key. Hold down the space bar and press a key. The hex value will be displayed followed by a blank. When the space bar is not held down the keyboard operates normally. The keyboard is returned to normal using the N command.
I – intelligent copy
I xxxx yyyy zzzz
Like the Copy command but starts copying at the end of the block which will not cause data corruption in an overlapping section.
N – normal keyboard
Restore the keyboard to normal operation.
R – read tape
Reads a tape which has been written using the Write command. As each block is read the header information is displayed: SSSS BBLL. SSSS is the start address of the block, BB is the block number and LL is the length (0=256 bytes). The command ends automatically when the last block has been read.
W – write tape
W xxxx yyyy
Write data to cassette tape. Data from xxxx to yyyy-1 is written to tape. Data is in blocks of 256 bytes (but the last block may have less). 256 nulls are written when the command starts followed by the data. Each block starts with one null and ends with 10 nulls.
The register display was also extended thus:
SP PC AF HL DE BC I IX IY Flags
The flags are a decoded representation of the F register, showing the following characters as each flag is set: S Z H P N C
The restart routines remained as the T2 EPROM.
Most of the T2 calls remained more or less the same so these have not been documented again. The new calls added are all to the second EPROM:-
|0400H||WRITE||Write (ARG1) to (ARG2) to tape|
|045CH||TXI||Output HL in ASCII, space DE in ASCII, space. H,L,D,E are added into C.|
|0466H||TABLE||Table search & return address in HL. HL must be
start of table & A must be value to be searched
for. Each line of table to be 3 bytes – the
comparison value & the address. Terminate table
with 00 as comparison value.
|047AH||RND||Return pseudo-random number between 1 and A.|
|048AH*||EKEY||Extension to first ROM keyboard routine.|
|04B9H||IDELAY||Variable delay based on DE. Terminate on keypress|
|04C6H||CDA||Convert BCD to ASCII|
|04F2H||RDL||Rotate packed BCD left|
|04FCH||CAD (uses RDL)||Convert ASCII to BCD|
|0514H||ICOPY (uses ARGS)||Intelligent copy|
|0527H||ARITH (uses ARGS)||See A command|
|0697H||ARGS||Load registers with ARG1, ARG2, ARG3|
|06A3H||G||See G command|
|06CCH||SOUT||Send string of up to 256 chars to serial out.|
|06D9H||ERI||Extended register display|
|070CH||READ (uses TXI)||See R command|
|0756H*||EREG (uses ERI)||Provide link to first ROM for register display|
|0760H*||EPARSE (uses TABLE)||Extension to first ROM to parse extra commands.|
|079AH||H||Set hex keyboard|
|07A1H||N||Set normal keyboard|
|07C0H||MCR||Move cursor right|
|07CFH||MCL||Move cursor left|
|07DBH||MCD||Move cursor down|
|07EDH||MCU||Move cursor up|
* referenced in first EPROM
Several changes were made to the T2 ROM. These fixed a couple of bugs and also allowed a NMI to trigger a register display like a breakpoint. Other changes were made to link in the second EPROM.
This did not seem to be a very popular monitor. Probably due to a few compatibility problems. Many of the routines (fast tape and hex/extended keyboard to mention but two) resurfaced later in NASBUG-T4. I don’t know how…