80-Bus News

  

May–June 1983, Volume 2, Issue 3

Page 28 of 59

The workings of NAS­COM ROM BASIC Ver 4.7

PAGE 2

CTLOFG

1045

Control “0” (Disable output) flag.
If this flag is set then no output will not appear at the terminal. This flag is flipped every time control “0” is typed from the keyboard.

LINESC

1046

“LINES” counter.
This is initially set to the value in LINESN and decremented after every line. If this value reaches zero then it is loaded with the value in LINESN and BASIC waits for a character from the keyboard.

LINESN

1048

“LINES” number.
This is set by the “LINES n” command for the number of lines to be LISTed at a time.

CHKSUM

104A

Check sum for array loading and saving.
This accumulates the value of all the bytes in the array 80 that errors can be detected during “CLOAD*”

NMIFLG

104C

Non-maskable interrupt flag.
When an NMI is received this flag is set to let BASIC know that the break was caused by an NMI.

BRKFLG

104D

Break flag.
This flag is set by the input routine to let BASIC know that the break key was pressed.

RINPUT

104E

Reflection for “INPUT” routine.
When an “INPUT” instruction is encountered BASIC jumps to the input routine via this jump. This value may be changed by the user as in the NAS­COM BASIC manual. They go to the following:–

“DOKE 4175,-25”

Output CR,LF and get a line

(CRLIN)

“DOKE 4175,-6670”

No CRLF, get a line

(GETLIN)

“DOKE 4175,-6649”

Get a line by character

(PTYLIN)

POINT

1051

Reflection for “POINT (X,Y)” function (Unused!)
This contains a jump to the “POINT (X,Y)” routine so that the user SHOULD be able to change it to be some other function. However, due to a “mis-firing” in someone’s brain when the “POINT” routine was added, the function driver (FNOFST) tests for “POINT” and jumps DIRECTLY to the “POINT (X,Y)” routine!

PSET

1054

Reflection for “SET (Z,Y)” routine.
This contains a jump to the “SET (X,Y)” routine in the same fashion as in “POINT”. The “SET (X,Y)” routine is called via this reflection so that the user CAN change it to add more routines to BASIC.

RESET

1057

Reflection for “RESET (X,Y)” routine.
This contains a jump to the “RESET (X,Y)” as in PSET.

STRSPC

105A

Start of string space pointer.
This contains a pointer to the start of string space. It is initially set to 50 bytes below the end of memory but can be changed by the “CLEAR n” statement.

The workings of NAS­COM ROM BASIC Ver 4.7

PAGE 3

LINEAT

105C

Current line number.
This contains the value of the current line being executed. If a direct statement is being executed then this is −1 and if “Memory size?” is being asked it contains −2. This value is examined by the ERROR routine to see if a line number has to be printed or not. If this value is −2 then the error must have occurred in reply to “Memory size?” so BASIC is cold atarted again.

BASTXT

1058

BASIC program text origin.
This is a pointer to where the BASIC program is stored in memory. It usually points to 10FA which is the usual start of a BASIC program. This can be changed if a program is located somewhere else in memory such as in ROM.

BUFFER

1061

Terminal input buffer.
This is a 72 character buffer where all input from the keyboard is to be stored such as commands, BASIC lines and “INPUT”.

CURPOS

10AB

Cursor position.
This contains the current value returned by “POS (X)” and it is incremented every time a character is printed. When a new line is started this value is zeroed, however, when a back space is printed it is NOT decremented and when “SCREEN X,Y” ia done it is not set to the new “X”. This can cause spurious CRLFs to be output when “SCREEN” and back spaces are used. A cure for this is to set “WIDTH 255”.

LORFLG

10AC

Locate / Create variable flag.
This is used by the variable search routine to tell if it is in a “DIM” statement or not so that it knows if it has to locate or create the specified array.

TYPE

10AD

Data type flag.
This flag contains the “type” of the current expression. That is:– zero = Numeric, non-zero = string.

DATFLG

10AE

Literal statement flag.
This flag is used to tell BASIC that it is pointing at a literal statement such as a string in quotes or a “REM” or “DATA” statement.

LSTRAM

10AF

Last available RAM pointer.
This contains the address of the highest location in RAM that BASIC will use. It can be changed by the “CLEAR,n” statement.

NASCOM ROM BASIC source code is available in ASM and LST file format.

Page 28 of 59