470 lines
18 KiB
PHP
470 lines
18 KiB
PHP
; ---------------------------------------------------
|
|
; STATEMENTS
|
|
; ---------------------------------------------------
|
|
|
|
_STMDSP EQU 128 ; 0x80
|
|
_END EQU 129 ; 0x81
|
|
_FOR EQU 130 ; 0x82
|
|
_NEXT EQU 131 ; 0x83
|
|
_DATA EQU 132 ; 0x84
|
|
_INPUT EQU 133 ; 0x85
|
|
_DIM EQU 134 ; 0x86
|
|
_READ EQU 135 ; 0x87
|
|
_LET EQU 136 ; 0x88
|
|
_GOTO EQU 137 ; 0x89
|
|
_RUN EQU 138 ; 0x8a
|
|
_IF EQU 139 ; 0x8b
|
|
_RESTORE EQU 140 ; 0x8c
|
|
_GOSUB EQU 141 ; 0x8d
|
|
_RETUR EQU 142 ; 0x8e
|
|
_REM EQU 143 ; 0x8f
|
|
_STOP EQU 144 ; 0x90
|
|
_PRINT EQU 145 ; 0x91
|
|
_CLEAR EQU 146 ; 0x92
|
|
_LIST EQU 147 ; 0x93
|
|
_NEW EQU 148 ; 0x94
|
|
|
|
; ---------------------------------------------------
|
|
; 8K AND ABOVE STATEMENTS
|
|
; ---------------------------------------------------
|
|
|
|
_ON EQU 149 ; 0x95
|
|
_NULL EQU 150 ; 0x96
|
|
_WAIT EQU 151 ; 0x97
|
|
_DEF EQU 152 ; 0x98
|
|
_POKE EQU 153 ; 0x99
|
|
_CONT EQU 154 ; 0x9A
|
|
_CSAVE EQU 155 ; 0x9B
|
|
_CLOAD EQU 156 ; 0x9C
|
|
_OUT EQU 157 ; 0x9D
|
|
_LPRINT EQU 158 ; 0x9E
|
|
_LLIST EQU 159 ; 0x9F
|
|
|
|
; ---------------------------------------------------
|
|
; LEN2 AND ABOVE STATEMENTS
|
|
; ---------------------------------------------------
|
|
|
|
_WIDTH EQU 161 ; 0xA1
|
|
_ELSE EQU 162 ; 0xA2
|
|
_TRON EQU 163 ; 0xA3
|
|
_TROFF EQU 164 ; 0xA4
|
|
_SWAP EQU 165 ; 0xA5
|
|
_ERASE EQU 166 ; 0xA6
|
|
_EDIT EQU 167 ; 0xA7
|
|
_ERROR EQU 168 ; 0xA8
|
|
_RESUME EQU 169 ; 0xA9
|
|
_DELETE EQU 170 ; 0xAA
|
|
_AUTO EQU 171 ; 0xAB
|
|
_RENUM EQU 172 ; 0xAC
|
|
|
|
; ---------------------------------------------------
|
|
; EXTENDED AND ABOVE
|
|
; ---------------------------------------------------
|
|
|
|
_DEFSTR EQU 173 ; 0xAD
|
|
_DEFINT EQU 174 ; 0xAE
|
|
_DEFSNG EQU 175 ; 0xAF
|
|
_DEFDBL EQU 176 ; 0xB0
|
|
_LINE EQU 177 ; 0xB1
|
|
_WHILE EQU 180 ; 0xB4
|
|
_WEND EQU 181 ; 0xB5
|
|
_CALL EQU 182 ; 0xB6
|
|
_WRITE EQU 183 ; 0xB7
|
|
_COMMON EQU 184 ; 0xB8
|
|
_CHAIN EQU 185 ; 0xB9
|
|
_OPTION EQU 186 ; 0xBA
|
|
_RANDOMIZE EQU 187 ; 0xBB
|
|
|
|
; ---------------------------------------------------
|
|
; DISK AND ABOVE
|
|
; ---------------------------------------------------
|
|
|
|
_SYSTE EQU 189 ; 0xBD
|
|
_OPEN EQU 191 ; 0xBF
|
|
_FIELD EQU 192 ; 0xC0
|
|
_GET EQU 193 ; 0xC1
|
|
_PUT EQU 194 ; 0xC2
|
|
_CLOSE EQU 195 ; 0xC3
|
|
_LOAD EQU 196 ; 0xC4
|
|
_MERGE EQU 197 ; 0xC5
|
|
_FILES EQU 198 ; 0xC6
|
|
_NAME EQU 199 ; 0xC7
|
|
_KILL EQU 200 ; 0xC8
|
|
_LSET EQU 201 ; 0xC9
|
|
_RSET EQU 202 ; 0xCA
|
|
_SAVE EQU 203 ; 0xCB
|
|
_RESET EQU 204 ; 0xCC
|
|
|
|
NUMCMD EQU _RESET - _END + 1 ; 76
|
|
; ---------------------------------------------------
|
|
; NCR VERSION ONES.
|
|
; ---------------------------------------------------
|
|
|
|
_TO EQU 206 ; 0xCE
|
|
TOTK EQU 206
|
|
|
|
_THEN EQU 207 ; 0xCF
|
|
THENTK EQU 207
|
|
|
|
_TAB EQU 208 ; 0xD0
|
|
TABTK EQU 208
|
|
|
|
_STEP EQU 209 ; 0xD1
|
|
STEPTK EQU 209 ; 0xD1
|
|
|
|
_USR EQU 210 ; 0xD2
|
|
USRTK EQU 210 ; 0xD2
|
|
|
|
; ---------------------------------------------------
|
|
; 8K FUNCTIONS
|
|
; ---------------------------------------------------
|
|
|
|
_FN EQU 211 ; 0xD3
|
|
FNTK EQU 211
|
|
|
|
_SPC EQU 212 ; 0xD4
|
|
SPCTK EQU 212
|
|
|
|
_NOT EQU 213 ; 0xD5
|
|
NOTTK EQU 213
|
|
|
|
; ---------------------------------------------------
|
|
; LEN2 TOKENS
|
|
; ---------------------------------------------------
|
|
|
|
_ERL EQU 214 ; 0xD6
|
|
ERLTK EQU 214 ; 0xD6
|
|
|
|
_ERR EQU 215 ; 0xD7
|
|
ERCTK EQU 215 ; 0xD7
|
|
|
|
; EXTENDED TOKENS
|
|
|
|
_STRIN EQU 216 ; 0xD8
|
|
|
|
_USING EQU 217 ; 0xD9
|
|
USINTK EQU 217 ; 0xD9
|
|
|
|
_INSTR EQU 218 ; 0xDA
|
|
INSRTK EQU 218 ; 0xDA
|
|
|
|
;_DUMMY EQU 219 ; 0xDB
|
|
SNGQTK EQU 219 ; 0xDB
|
|
|
|
_VARPTR EQU 220 ; 0xDC
|
|
|
|
; ---------------------------------------------------
|
|
; NCR VERSION TOKENS
|
|
; SPCDSK TOKENS
|
|
; ---------------------------------------------------
|
|
|
|
_INKEY EQU 221 ; 0xDD
|
|
|
|
; ---------------------------------------------------
|
|
; Extended OK-240 operators
|
|
; ---------------------------------------------------
|
|
EXT_OP_FIRST EQU 224
|
|
_CLS EQU 224 ; 0xE0
|
|
_SCRN EQU 225 ; 0xE1
|
|
_COLOR EQU 226 ; 0xE2
|
|
_CURS EQU 227 ; 0xE3
|
|
_PLOT EQU 228 ; 0xE4
|
|
_RECT EQU 229 ; 0xE5
|
|
_GPRINT EQU 230 ; 0xE6
|
|
_TONE EQU 231 ; 0xE7
|
|
EXT_OP_LAST EQU 231
|
|
|
|
|
|
; ---------------------------------------------------
|
|
; OPERATORS
|
|
; ---------------------------------------------------
|
|
|
|
GREATK EQU 0xef
|
|
EQULTK EQU 0xf0
|
|
LESSTK EQU 0xf1
|
|
|
|
PLUSTK EQU 0xf2 ; 242
|
|
MINUTK EQU 0xf3 ; 243
|
|
MULTK EQU 0xf4 ; 244
|
|
DIVTK EQU 0xf5
|
|
|
|
; --------------------------------------------------
|
|
; 8K OPERATORS
|
|
; --------------------------------------------------
|
|
|
|
EXPTK EQU 246 ; 0xF6
|
|
_AND EQU 247 ; 0xF7
|
|
_OR EQU 248 ; 0xF8
|
|
|
|
; --------------------------------------------------
|
|
; EXTENDED OPERATORS
|
|
; --------------------------------------------------
|
|
|
|
_XOR EQU 249 ; 0xF9
|
|
_EQV EQU 250 ; 0xFA
|
|
_IMP EQU 251 ; 0xFB
|
|
_MOD EQU 252 ; 0xFC
|
|
_DUMMY EQU 253 ; 0xFD
|
|
IDIVTK EQU 253 ; 0xFD
|
|
|
|
LSTOPK EQU 253 + 1 - PLUSTK
|
|
|
|
; --------------------------------------------------
|
|
; FUNCTIONS
|
|
; --------------------------------------------------
|
|
|
|
;Q EQU 128 ; 0x80
|
|
_LEFT_ EQU 129 ; 0x81
|
|
ONEFUN EQU 129 ; 0x81
|
|
_RIGHT EQU 130 ; 0x82
|
|
_MID_ EQU 131 ; 0x83
|
|
MIDTK EQU 131 ; 0x83
|
|
_SGN EQU 132 ; 0x84
|
|
_INT EQU 133 ; 0x85
|
|
_ABS EQU 134 ; 0x86
|
|
_SQR EQU 135 ; 0x87
|
|
SQRTK EQU 135 ; 0x87
|
|
_RND EQU 136 ; 0x88
|
|
_SIN EQU 137 ; 0x89
|
|
|
|
; --------------------------------------------------
|
|
; 8K FUNCTIONS
|
|
; --------------------------------------------------
|
|
|
|
_LOG EQU 138 ; 0x8A
|
|
_EXP EQU 139 ; 0x8B
|
|
_COS EQU 140 ; 0x8C
|
|
_TAN EQU 141 ; 0x8D
|
|
_ATN EQU 142 ; 0x8E
|
|
_FRE EQU 143 ; 0x8F
|
|
_INP EQU 144 ; 0x90
|
|
_POS EQU 145 ; 0x91
|
|
_LEN EQU 146 ; 0x92
|
|
_STR_ EQU 147 ; 0x93
|
|
_VAL EQU 148 ; 0x94
|
|
_ASC EQU 149 ; 0x95
|
|
_CHR_ EQU 150 ; 0x96
|
|
_PEEK EQU 151 ; 0x97
|
|
_SPACE EQU 152 ; 0x98
|
|
_OCT_ EQU 153 ; 0x99
|
|
_HEX_ EQU 154 ; 0x9A
|
|
_LPOS EQU 155 ; 0x9B
|
|
;LASNUM EQU 155 ; 0x9B
|
|
|
|
; --------------------------------------------------
|
|
; EXTENDED FUNCTIONS
|
|
; --------------------------------------------------
|
|
|
|
_CINT EQU 156 ; 0x9C
|
|
_CSNG EQU 157 ; 0x9D
|
|
_CDBL EQU 158 ; 0x9E
|
|
_FIX EQU 159 ; 0x9F
|
|
|
|
; --------------------------------------------------
|
|
; NCR VERSION FUNCTIONS
|
|
; DISK FUNCTIONS
|
|
; --------------------------------------------------
|
|
|
|
_CVI EQU 171 ; 0xAC
|
|
_CVS EQU 172 ; 0xAD
|
|
_CVD EQU 173 ; 0xAE
|
|
_EOF EQU 175 ; 0xB0
|
|
_LOC EQU 176 ; 0xB1
|
|
_LOF EQU 177 ; 0xB2
|
|
_MKI_ EQU 178 ; 0xB3
|
|
_MKS_ EQU 179 ; 0xB4
|
|
_MKD_ EQU 180 ; 0xB5
|
|
|
|
; --------------------------------------------------
|
|
; END DISK FUNCTIONS
|
|
; --------------------------------------------------
|
|
|
|
NUMGFN EQU 2*MIDTK - 2*ONEFUN + 1 ; 5
|
|
|
|
; --------------------------------------------------
|
|
; CP/M Entry
|
|
; --------------------------------------------------
|
|
|
|
WARM_BOOT EQU 0x0000
|
|
WARM_BOOT_ADDR EQU WARM_BOOT + 1
|
|
BDOS_ENTER EQU 0x0005
|
|
BDOS_ENTER_ADDR EQU BDOS_ENTER + 1
|
|
DMA_BUFFER EQU 0x80
|
|
P_CMD_LINE EQU DMA_BUFFER + 1
|
|
TPA EQU 0x100
|
|
|
|
; --------------------------------------------------
|
|
; CP/M functions
|
|
; --------------------------------------------------
|
|
C.VER EQU 0x0c ; Get version
|
|
C.REST EQU 0x0d ; Init BDOS
|
|
C.SDRV EQU 0x0e ; Set current drive
|
|
C.OPEN EQU 0x0f ; Open file
|
|
C.CLOS EQU 0x10 ; Close file
|
|
C.SEAR EQU 0x11 ; Search file
|
|
C.SEAR_N EQU 0x12 ; Search next
|
|
C.DEL EQU 0x13 ; Delete file
|
|
C.MAKE EQU 0x16 ; Create new file
|
|
C.RENA EQU 0x17 ; Rename file
|
|
C.GDRV EQU 0x19 ; Get current drive
|
|
C.BUFF EQU 0x1a ; Set DMA buffer address
|
|
|
|
|
|
; ---------------------------------------------------
|
|
; OFFSETS INTO CP/M FCB (FILE CONTROL BLOCK)
|
|
; ---------------------------------------------------
|
|
FCB.FN EQU 1 ; FILE NAME
|
|
FCB.FT EQU 9 ; EXTENSION
|
|
FCB.EX EQU 32 ; 0x0C ? ; FILE EXTENT
|
|
FCB.RC EQU 38 ; 0x0F ? ; RECORD COUNT = CURRENT EXTENT SIZE
|
|
FCB.NR EQU 40 ; 0x20 ? ; NEXT RECORD NUMBER
|
|
FCB.RN EQU 33 ; CP/M 2.x Random Record Number
|
|
|
|
; --------------------------------------------------
|
|
; File access mode
|
|
; --------------------------------------------------
|
|
MD.SQI EQU 1 ; seq inp
|
|
MD.SQO EQU 2 ; seq out
|
|
MD.RND EQU 3 ; random
|
|
|
|
N1 EQU 11 ; Number of bytes to use from ATNCON
|
|
N2 EQU 13 ; Number of bytes to use from SINCON
|
|
|
|
OCTCON EQU 11 ; EMBEDED OCTAL CONSTANT
|
|
HEXCON EQU 12 ; EMBEDED CONSTANT
|
|
PTRCON EQU 13 ; A LINE REFERENCE CONSTANT
|
|
LINCON EQU 14 ; A LINE NUMBER UNCONVERTED TO POINTER
|
|
IN2CON EQU 15 ; SINGLE BYTE (TWO BYTE WITH TOKEN) INTEGER
|
|
CONCN2 EQU 16 ; TOKEN RETURNED SECOND TYPE CONSTANT IS SCANNED.
|
|
ONECON EQU 17 ; FIRST OF 10 (0-9) INTEGER SPECIAL TOKENS
|
|
INTCON EQU 28 ; REGULAR 16 BIT TWO'S COMPLEMENT INT
|
|
SNGCON EQU 29 ; SINGLE PREC (4 BYTE) CONSTANT
|
|
CONCON EQU 30 ; TOKEN RETURNED BY CHRGET AFTER CONSTANT SCANNED
|
|
DBLCON EQU 31 ; DOUBLE PREC (8 BYTE) CONSTANT
|
|
|
|
|
|
; --------------------------------------------------
|
|
; ASCII codes
|
|
; --------------------------------------------------
|
|
|
|
ASCII_BELL EQU 0x07 ; 7
|
|
ASCII_BKSP EQU 0x08 ; 8
|
|
ASCII_TAB EQU 0x09 ; 9
|
|
ASCII_LF EQU 0x0a ; 10
|
|
ASCII_CR EQU 0x0d ; 13
|
|
ASCII_DEL EQU 0x7f ; 127
|
|
ASCII_ESC EQU 0x1b ;
|
|
ASCII_SP EQU 0x20 ; space
|
|
ASCII_CUR EQU 0x24 ; $
|
|
ASCII_SQ EQU 0x27 ; '
|
|
ASCII_BKSL EQU 0x5C ; \
|
|
|
|
; --------------------------------------------------
|
|
; Key codes
|
|
; --------------------------------------------------
|
|
|
|
CTRL_C EQU 0x03 ; 3
|
|
CTRL_O EQU 0x0f ; 15
|
|
CTRL_R EQU 0x12 ; 18
|
|
CTRL_U EQU 0x15 ; 21
|
|
CTRL_X EQU 0x18 ; 24
|
|
|
|
|
|
CLMWID EQU 0x0e ; 14
|
|
CON1 EQU 0x2c20 ; ' ',
|
|
CONS1 EQU 0xc6 ; 198
|
|
|
|
|
|
DATPSC EQU 0x80 ; 128
|
|
|
|
; Offsets into file blocks for specific entries
|
|
LOCOFS EQU 0x25 ; OFFSET TO CURLOC BYTES
|
|
ORNOFS EQU 0x27 ; OFFSET TO NUMBER OF BYTES
|
|
|
|
NMLOFS EQU 0x28 ; OFFSET TO BYTES REMAINING IN THE BUFFER
|
|
NMLO.C EQU NMLOFS ; OR THE PRINT POSITION ON OUTPUT
|
|
|
|
DATOFS EQU 0x29 ; OFFSET TO BUFFER
|
|
DATOFC EQU DATOFS
|
|
|
|
DBLKSZ EQU DATOFS + DATPSC
|
|
DBLK.C EQU DBLKSZ ; SIZE OF A FILE INFO BLOCK PLUS $CODE
|
|
|
|
EOFCHR EQU 0x1a ; 26
|
|
|
|
; --------------------------------------------------
|
|
; Error codes
|
|
; --------------------------------------------------
|
|
ERRNF EQU 0x01
|
|
ERRSN EQU 0x02 ; 2
|
|
ERRRG EQU 0x03 ; 3
|
|
ERROD EQU 0x04 ; 4
|
|
ERRFC EQU 0x05 ; 5
|
|
ERROV EQU 0x06 ; 6
|
|
ERROM EQU 0x07
|
|
ERRUS EQU 0x08 ; 8
|
|
ERRBS EQU 0x09 ; 9
|
|
ERRDD EQU 0x0a ; 10
|
|
ERRDV0 EQU 0x0b ; 11
|
|
ERRID EQU 0x0c ; 12
|
|
ERRTM EQU 0x0d ; 13
|
|
ERRSO EQU 0x0e ; Out of space
|
|
ERRLS EQU 0x0f ; 15
|
|
ERRST EQU 0x10 ; String formula too complex
|
|
ERRCN EQU 0x11 ; 17
|
|
ERRUF EQU 0x12 ; Undefined user function
|
|
ERRNR EQU 0x13 ; 19
|
|
ERRRE EQU 0x14 ; 20
|
|
ERRUE EQU 0x15 ; Unprintable error
|
|
ERRMO EQU 0x16 ; Missing operand
|
|
ERRLBO EQU 0x17 ; 23
|
|
; skipped 18 and 19
|
|
ERRFN EQU 0x1a ; 26
|
|
; skipped 1b and 1c
|
|
ERRWH EQU 0x1d ; 29
|
|
ERRWE EQU 0x1e ; 30
|
|
|
|
NONDSK EQU 0x1e ; Last non disk error
|
|
|
|
; disk errors starts from here
|
|
DSKERR EQU 0x31 ; 49
|
|
;
|
|
ERRFOV EQU 0x32 ; 50
|
|
ERRIER EQU 0x33 ; 51
|
|
ERRBFN EQU 0x34 ; 52
|
|
ERRFNF EQU 0x35 ; 53
|
|
ERRBFM EQU 0x36 ; 54
|
|
ERRFAO EQU 0x37 ; 55
|
|
ERRIOE EQU 0x39 ; 57
|
|
ERRFAE EQU 0x3a ; 58
|
|
ERRDFL EQU 0x3d ; 61
|
|
ERRRPE EQU 0x3e ; 62
|
|
ERRFDR EQU 0x42 ; 66
|
|
ERRTMF EQU 0x43 ; 67
|
|
; --------------------------------------------------
|
|
|
|
FD.SIZ EQU 0xa9 ; 169
|
|
FD.PHY EQU 0xab ; 171
|
|
FD.LOG EQU 0xad ; 173
|
|
FD.OPS EQU 0xb0 ; 176
|
|
FD.DAT EQU 0xb2 ; 178
|
|
|
|
FNZBLK EQU 0xB2 ; Size of other stuff
|
|
|
|
INCSTR EQU 1
|
|
|
|
FORSZC EQU 0x10 ; 16
|
|
|
|
BUFLEN EQU 255 ; Buffer size for long lines
|
|
NAMLEN EQU 40 ; Max name len 3..127
|
|
KBFLEN EQU BUFLEN + (BUFLEN/4) ; Krunch buffer length = 318
|
|
|
|
LINLN EQU 0x50 ; 80
|
|
LSTERR EQU 0x44 ; 68
|
|
MAXPRM EQU 0x20 ; 32
|
|
|
|
NMREL EQU 0x03 ; 3
|
|
PRMSIZ EQU 0x64 ; 100
|
|
SQO EQU 0x02 ; 2
|
|
SWTCHR EQU 0x2f ; 47
|
|
WHLSIZ EQU 0x06 ; 6 |