Files
MSBASIC-80/v5.21/equates.inc
T
2026-09-15 21:34:54 +03:00

462 lines
17 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
_BEEP EQU 180 ; 0xB4 ToDo: doublecheck!
_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
_COLOR EQU 206 ; 0xCE ToDo: Double check!
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
_ATTR_ EQU 227 ; 0xE3
; ---------------------------------------------------
; 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
; --------------------------------------------------
; Base tokens
; --------------------------------------------------
OCTCON EQU 0x0B ; 11 embeded Octal constant
HEXCON EQU 0x0C ; 12 embeded Hex constant
PTRCON EQU 0x0D ; 13 line pointer constant
LINCON EQU 0x0E ; 14 line number
IN2CON EQU 0x0F ; 15 Single byte integer (two byte with token) 11..255
CONCN2 EQU 0x10 ; 16 Internal token, returned second type constant is scaned
ONECON EQU 0x11 ; 17 First of 10 special tokens for Int (0x11 - 1, 0x12 - 2 ... 0x1B - 10)
INTCON EQU 0x1C ; 28 2-byte Int
SNGCON EQU 0x1D ; 29 4-byte single precision real EEDDDDDD
CONCON EQU 0x1E ; 30 Internal token, returned by CHARGET after constant scanned
DBLCON EQU 0x1F ; 31 8-byte double precision real EEDDDDDDDDDDDDDD
; --------------------------------------------------
; ASCII codes
; --------------------------------------------------
ASCII_NUL EQU 0x00 ; NUL (null)
ASCII_EOT EQU 0x04 ; EOT (End of transmission)
ASCII_BELL EQU 0x07 ; 7
ASCII_BS EQU 0x08 ; 8
ASCII_TAB EQU 0x09 ; HT (Horizontal tab)
ASCII_LF EQU 0x0A ; 10 - LF (Line feed)
ASCII_CR EQU 0x0D ; 13 - CR (Carriage return)
ASCII_SYN EQU 0x16 ; SYN (Synchronous idle)
ASCII_SUB EQU 0x1A ; SUB (Substitute), EOF - (End of file)
ASCII_ESC EQU 0x1B ; 27 - ESC (Escape)
ASCII_SP EQU 0x20 ; space
ASCII_CUR EQU 0x24 ; $
ASCII_SQ EQU 0x27 ; '
ASCII_BKSL EQU 0x5C ; \
ASCII_DEL EQU 0x7F ; DEL (Delete)
; --------------------------------------------------
; 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
CTRL_Z EQU 0x1A
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
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
; --------------------------------------------------
; Types
; --------------------------------------------------
TINT EQU 0x02 ; 2 2-byte Integer
TSTR EQU 0x03 ; 3 <B_len>+<W-prt> String
TSGN EQU 0x04 ; 4 4-byte single precision real
TDBL EQU 0x08 ; 8 8-byte single precision real
; --------------------------------------------------
; Constants to skip next Ops
; --------------------------------------------------
LD_A_n EQU 0x3E ; skip next 1-byte op A = !0
LD_L_n EQU 0x2E ; skip next 1-byte op L = !0
LD_B_n EQU 0x06 ; skip next 1-byte op B = !0
LD_D_n EQU 0x16 ; skip next 1-byte op D = !0
;LD_C_n EQU 0x0E ; skip next 1-byte op
LD_BC_nn EQU 0x01 ; skip next 2-byte op
LD_DE_nn EQU 0x11 ; skip next 2-byte op
JP_NZ_nn EQU 0xC2 ;
JP_Z_nn EQU 0xCA
JP_NC_nn EQU 0xD2
JP_C_nn EQU 0xDA
JP_M_nn EQU 0xFA
OR_n EQU 0xF6 ; skip next byte op, set flags
CP_n EQU 0xFE ; skip next byte op, set flags