SuperBASIC Name Table
The Name Table consists of a number of eight byte rows, each in the following form:
| Type | Offset | Value pointer |
|---|
-
The first word is a code giving the Type.
-
This is followed by another word which is the offset from the start of the Name List to the associated name, or -1 if there is no associated name, which is the case for an expression and a substring.
-
Finally there is a long word containing a value pointer which can be one of four things:
- An offset into the variables area.
- A pointer to the maths stack.
- A SuperBASIC line number held in the high word.
- An Absolute address.
Type Codes
| Type | Description | Value pointer to … |
|---|---|---|
| $0001 | Unset string | Variables area |
| $0002 | Unset fp | Variables area |
| $0003 | Unset integer | Variables area |
| $0101 | String expression | Maths stack |
| $0102 | Fp expression | Maths stack |
| $0103 | Integer expression | Maths stack |
| $0201 | String | Variables area |
| $0202 | Fp number | Variables area |
| $0203 | Integer | Variables area |
| $0300 | Substring | Variables area |
| $0301 | String array | Variables area |
| $0302 | Fp array | Variables area |
| $0303 | Integer array | Variables area |
| $0400 | SuperBASIC procedure | SuperBASIC line number |
| $0501 | SuperBASIC string function | SuperBASIC line number |
| $0502 | SuperBASIC fp function | SuperBASIC line number |
| $0503 | SuperBASIC integer function | SuperBASIC line number |
| $0602 | REPeat loop index | Variables area |
| $0702 | FOR loop index | Variables area |
| $0800 | Machine code procedure | Procedure address in RAM |
| $0900 | Machine code function | Function address in RAM |
Parameters
When a machine code routine is called the parameters are put into the Name Table. In this case the Type code contains information about the parameters.
- Bit 7 is set if the parameter is preceded by ‘#’ (hash).
- Bits 6 to 4 contain the Separator type.
- Bits 3 to 0 contain the Type of the parameter.
| Bit 7 | Hash prefix? | Bits 6 to 4 | Separator | Bits 3 to 0 | Type | ||
|---|---|---|---|---|---|---|---|
| %0 | No hash | %000 | None | %0000 | Null | ||
| %1 | Hash | %001 | , | %0001 | String | ||
| %010 | ; | %0010 | Floating Point | ||||
| %011 | \ | %0011 | Integer | ||||
| %100 | ! | ||||||
| %101 | TO |