; --------------------------------------------------- ; 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