; =================================================== ; 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 STEPTK EQU 0xdc 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 + 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