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

341 lines
15 KiB
PHP

; ===================================================
; Microsoft BASIC v2 for MSX System v 3.0
;
; Constants
; Disassembled by Romychs @ 2026-09-04
; ===================================================
; --------------------------------------------------
; 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)
; Function tokens
; 0x81..0x8F
_LEFT_ EQU 0x81 ; 129
_RIGHT_ EQU 0x82 ; 130
_MID_ EQU 0x83 ; 131
_SGN EQU 0x84 ; 132
_INT EQU 0x85 ; 133
_ABS EQU 0x86 ; 134
_SQR EQU 0x87 ; 135
_RND EQU 0x88 ; 136
_SIN EQU 0x89 ; 137
_LOG EQU 0x8a ; 138
_EXP EQU 0x8b ; 139
_COS EQU 0x8c ; 140
_TAN EQU 0x8d ; 141
_ATN EQU 0x8e ; 142
_FRE EQU 0x8f ; 143
; ----
_INP EQU 0x90 ; 144
_POS EQU 0x91 ; 145
_LEN EQU 0x92 ; 146
_STR_ EQU 0x93 ; 147
_VAL EQU 0x94 ; 148
_ASC EQU 0x95 ; 149
_CHR_ EQU 0x96 ; 150
_PEEK EQU 0x97 ; 151
_VPEEK EQU 0x98 ; 152
_SPACE_ EQU 0x99 ; 153
_OCT_ EQU 0x9a ; 154
_HEX EQU 0x9b ; 155
_LPOS EQU 0x9c ; 156
_BIN_ EQU 0x9d ; 157
_CINT EQU 0x9e ; 158
_CSNG EQU 0x9f ; 159
; ----
_CDBL EQU 0xA0 ; 160
_FIX EQU 0xA1 ; 161
_STICK EQU 0xA2 ; 162
_STRIG EQU 0xA3 ; 163
_PDL EQU 0xA4 ; 164
_PAD EQU 0xA5 ; 165
_DSKF_ EQU 0xA6 ; 166
_FPOS EQU 0xA7 ; 167
_CVI EQU 0xA8 ; 168
_CVS EQU 0xA9 ; 169
_CVD EQU 0xAa ; 170
_EOF EQU 0xAb ; 171
_LOC EQU 0xAc ; 172
_LOF EQU 0xAd ; 173
_MKI_ EQU 0xAe ; 174
_MKS_ EQU 0xAf ; 175
_MKD_ EQU 0xB0 ; 176
ONEFUN EQU 0x81 ; 129
; Operator tokens
; 0x80..0x8F
_END EQU 0x81 ; 129
_FOR EQU 0x82 ; 130
_NEXT EQU 0x83 ; 131
_DATA EQU 0x84 ; 132
_INPUT EQU 0x85 ; 133
_DIM EQU 0x86 ; 134
_READ EQU 0x87 ; 135
_LET EQU 0x88 ; 136
_GOTO EQU 0x89 ; 137
_RUN EQU 0x8a ; 138
_IF EQU 0x8b ; 139
_RESTORE EQU 0x8c ; 140
_GOSUB EQU 0x8d ; 141
_RETURN EQU 0x8e ; 142
_REM EQU 0x8f ; 143
; 0x90..0x9F
_STOP EQU 0x90 ; 144
_PRINT EQU 0x91 ; 145
_CLEAR EQU 0x92 ; 146
_LIST EQU 0x93 ; 147
_NEW EQU 0x94 ; 148
_ON EQU 0x95 ; 149
_WAIT EQU 0x96 ; 150
_DEF EQU 0x97 ; 151
_POKE EQU 0x98 ; 152
_CONT EQU 0x99 ; 153
_CSAVE EQU 0x9a ; 154
_CLOAD EQU 0x9b ; 155
_OUT EQU 0x9c ; 156
_LPRINT EQU 0x9d ; 157
_LLIST EQU 0x9e ; 158
_CLS EQU 0x9f ; 159
; 0xA0..0xAF
_WIDTH EQU 0xa0 ; 160
_ELSE EQU 0xa1 ; 161
_TRON EQU 0xa2 ; 162
_TROFF EQU 0xa3 ; 163
_SWAP EQU 0xa4 ; 164
_ERASE EQU 0xa5 ; 165
_ERROR EQU 0xa6 ; 166
_RESUME EQU 0xa7 ; 167
_DELETE EQU 0xa8 ; 168
_AUTO EQU 0xa9 ; 169
_RENUM EQU 0xaa ; 170
_DEFSTR EQU 0xab ; 171
_DEFINT EQU 0xac ; 172
_DEFSNG EQU 0xad ; 173
_DEFDBL EQU 0xae ; 174
_LINE EQU 0xaf ; 175
; 0xB0..0xBF
_OPEN EQU 0xb0 ; 176
_FIELD EQU 0xb1 ; 177
_GET EQU 0xb2 ; 178
_PUT EQU 0xb3 ; 179
_CLOSE EQU 0xb4 ; 180
_LOAD EQU 0xb5 ; 181
_MERGE EQU 0xb6 ; 182
_FILES EQU 0xb7 ; 183
_LSET EQU 0xb8 ; 184
_RSET EQU 0xb9 ; 185
_SAVE EQU 0xba ; 186
_LFILES EQU 0xbb ; 187
_CIRCLE EQU 0xbc ; 188
_COLOR EQU 0xbd ; 189
_DRAW EQU 0xbe ; 190
_PAINT EQU 0xbf ; 191
; 0xC0..0xCF
_BEEP EQU 0xc0 ; 192
_PLAY EQU 0xc1 ; 193
_PSET EQU 0xc2 ; 194
_PRESET EQU 0xc3 ; 195
_SOUND EQU 0xc4 ; 196
_SCREEN EQU 0xc5 ; 197
_VPOKE EQU 0xc6 ; 198
_SPRITE EQU 0xc7 ; 199
_VDP EQU 0xc8 ; 200
_BASE EQU 0xc9 ; 201
_CALL EQU 0xca ; 202
_TIME EQU 0xcb ; 203
_KEY EQU 0xcc ; 204
_MAX EQU 0xcd ; 205
_MOTOR EQU 0xce ; 206
_BLOAD EQU 0xcf ; 207
; 0xD0..0xDF
_BSAVE EQU 0xd0 ; 208
_DSKO_ EQU 0xd1 ; 209
_SET EQU 0xd2 ; 210
_NAME EQU 0xd3 ; 211
_KILL EQU 0xd4 ; 212
_IPL EQU 0xd5 ; 213
_COPY EQU 0xd6 ; 214
_CMD EQU 0xd7 ; 215
_LOCATE EQU 0xd8 ; 216
NUMCMD EQU _LOCATE - _END + 1 ; 88 Number of commands
_TO EQU 0xd9 ; 217
_THEN EQU 0xda ; 218
_TAB EQU 0xdb ; 219
_STEP EQU 0xdc ; 220
_USR EQU 0xdd ; 221
_FN EQU 0xde ; 222
_SPC EQU 0xdf ; 223
; 0xE0..0xEF
_NOT EQU 0xe0 ; 224
_ERL EQU 0xe1 ; 225
_ERR EQU 0xe2 ; 226
_STRING_ EQU 0xe3 ; 227
_USING EQU 0xe4 ; 228
_INSTR EQU 0xe5 ; 229
; 0xE6 skipped
_VARPTR EQU 0xe7 ; 231
_CSRLIN EQU 0xe8 ; 232
_ATTR_ EQU 0xe9 ; 233
_DSKI_ EQU 0xea ; 234
_OFF EQU 0xeb ; 235
_INKEY_ EQU 0xec ; 236
_POINT EQU 0xed ; 237
;
;EXPTK EQU 0xf5
_AND EQU 0xf6 ; 246
_OR EQU 0xf7 ; 247
_XOR EQU 0xf8 ; 248
_EQV EQU 0xf9 ; 249
_IMP EQU 0xfa ; 250
_MOD EQU 0xfb ; 251
; --------------------------------------------------
; Operation tokens
; --------------------------------------------------
TABTK EQU 0xdb
SPCTK EQU 0xdf
USINTK EQU 0xe4
SNGQTK EQU 0xe6
GREATK EQU 0xee
EQULTK EQU 0xef
LESSTK EQU 0xf0
PLUSTK EQU 0xf1
MINUTK EQU 0xf2
MULTK EQU 0xf3
DIVTK EQU 0xf4
EXPTK EQU 0xf5
IDIVTK EQU 0xfc
; --------------------------------------------------
; 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
; --------------------------------------------------
; 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
LD_B_n EQU 0x06 ; skip next 1-byte op
LD_C_n EQU 0x0E ; skip next 1-byte op
LD_D_n EQU 0x16 ; skip next 1-byte op
LD_E_n EQU 0x1E
LD_BC_nn EQU 0x01 ; skip next 2-byte op
LD_DE_nn EQU 0x11 ; skip next 2-byte op
LD_HL_nn EQU 0x21
JP_NZ_nn EQU 0xC2 ;
JP_Z_nn EQU 0xCA ; skip next 2-byte op
OR_n EQU 0xF6 ; skip next byte op, set flags
CP_n EQU 0xFE ; skip next byte op, set flags
FORSIZ EQU 0x16
INT2CON EQU 0x0f
NMLO.C EQU 0x08
CLMWID EQU 0x0e
LSTOPK EQU 0x0c
NMREL EQU 0x03
ARG EQU 4
; --------------------------------------------------
; EXT BIOS funcion numbers
; --------------------------------------------------
S.PAINT EQU 0x069
S.PSET EQU 0x06d
S.GLINE EQU 0x075
S.DOGRPH EQU 0x085
S.GRPPRT EQU 0x089
S.MAPXYC EQU 0x091
S.READC EQU 0x095
S.SETC EQU 0x09d
S.TRIGHT EQU 0x0a1
S.RIGHTC EQU 0x0a5
S.TLEFTC EQU 0x0a9
S.LEFTC EQU 0x0ad
S.TDOWNC EQU 0x0b1
S.DOWNC EQU 0x0b5
S.TUPC EQU 0x0b9
S.UPC EQU 0x0bd
S.SCANR EQU 0x0c1
S.SCANL EQU 0x0c5
S.CHGMOD EQU 0x0d1
S.INITXT EQU 0x0d5
S.INIT32 EQU 0x0d9
S.INIGRP EQU 0x0dd
S.INIMLT EQU 0x0e1
S.SETTXT EQU 0x0e5
S.SETT32 EQU 0x0e9
S.SETGRP EQU 0x0ed
S.SETMLT EQU 0x0f1
S.CLRSPR EQU 0x0f5
S.CLS EQU 0x115
S.CLRTXT EQU 0x119
S.DSPFNK EQU 0x11d
S.DELLNO EQU 0x121
S.INSLNO EQU 0x125
S.WRTVDP EQU 0x12d
S.PUTCHR EQU 0x139
S.PUTSPRT EQU 0x151
S.COLOR EQU 0x155
S.SCREEN EQU 0x159
S.WIDTHS EQU 0x15d
S.VDP EQU 0x161
S.VDPF EQU 0x165
S.BASE EQU 0x169
S.BASEF EQU 0x16d
S.VPOKE EQU 0x171
S.VPEEK EQU 0x175
S.SETS EQU 0x179
S.PROMPT EQU 0x181
S.SDFSCR EQU 0x185
S.SETSCR EQU 0x189
S.SCOPY EQU 0x18d
S.NEWPAD EQU 0x1ad
S.GETPUT EQU 0x1b1
S.CHGMDP EQU 0x1b5