This was the first official "heavyweight" monitor for the Nascom 1. It was supplied, like B-BUG, on two EPROMs but this time they were full. The writers had obviously learned from the experiences with T1,T2 and B-BUG and many of the routines were improved and/or debugged. It supported all the "official" T2 ROM calls. Many commands had better displays or were easier to use.

Commands


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.

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.

K – set keyboard options

   K xx

K 0 is the normal mode following a reset.

K 1 reverses the shift key on the letters

K 2 hex keyboard (similar to H command of B-BUG)

K 4 reverses bit 7 of the character (not used until the Nascom-2)

K 3 has the effect of both K1 and K2

N – normal
  N
Resets the keyboard and crt jumps to normal. Also turns off the X command.

O – output to a port

  O xx yy

Output the hex value yy to port with the hex number xx. xx and yy are displayed.

Q – query a port

  Q xx

Obtain the value at port with the hex number xx. xx and the hex value received are displayed.

R – read tape

   R

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.

X – set eXternal device options

   X xx

Activate input and output routines contained within NASBUG 4.

X 0 support a terminal in full duplex mode.
every character typed is echoed to the terminal
line feed is automatically sent after every CR
all output is even parity
X 10 same as X 0 but LF is not sent after CR
X 20 same as X 0 but half-duplex.
characters are not echoed to the terminal
X 30 same as X 20 but LF is not sent afer CR
this option makes the Nascom into a half-duplex termina
1, 11, 21, 31 same as 0, 10, 20, 30 but output parity is always odd instead
of even. (Input parity is always ignored).


To input a Backspace on a terminal which does not have this key use Ctrl/H.

The D, R, W, G and K2 commands and options either cannot or should not be used while an X command is in force.

Z – (command table)

  Z xxxx
Changes the address of the command table. Normally this is 0755H so Z 755 has no effect. A dummy command table is also provided at 0511H so use Z 511 to disable all commands (press Reset to recover from this state). This allows new commands to be added.

? – command list
  ?
Displays a list of all commands in the command table.

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

ROM calls


Restart instructions:

C7 RST 0 START Reset the computer. Initialise NASBUG
CF RST 8h End program & return to monitor. The screen is not cleared.
DF RST 18h User subroutine call.The code DF is followed by a one byte value which specifies the address of the routine to be called. 00 calls 0E00H, 01 calls 0E03H up to the highest value FF which calls 10FDH
E7 RST 20h BRKPT Breakpoint – stop & display registers
EF RST 28h PRS Output following string until 0H found
F7 RST 30h Call the routine pointed to by the address at $CRT. This is normally the CRT routine.
FF RST 38h Provide a delay proportional to the value in A. 00 gives maximum delay of about 7.5mS.

The T2 calls remained the same so these have not been documented again.

0400H WRITE Write (ARG1) to (ARG2) to tape
06A3H G See G command
070CH READ See R command
005DH SRLOUT Output a character to both crt and serial port
005EH SRLX Output a character to serial port only