Files
MSBASIC-80/MSX_v2/disptab.inc
T

519 lines
13 KiB
PHP

; ===================================================
; Microsoft BASIC v2 for MSX System v3.0
;
; Operator and function dispatch tables
; Disassembled by Romychs @ 2026-09-03
; ===================================================
; ---------------------------------------------------
; Operator tokens
; ---------------------------------------------------
STMDSP:
dw MB_ENDS
dw MB_FOR
dw MB_NEXT
dw MB_DATAS
dw MB_INPUT
dw LB_DIM
dw MB_READ
dw MB_LET
dw MB_GOTO
dw MB_RUN
dw MB_IFS
dw MB_RESTORE
dw MB_GOSUB
dw MB_RETURN
dw MB_REM_ELSE
; 0x90..0x9F
dw MB_STOP
dw MB_PRINT
dw MB_CLEAR
dw MB_LIST
dw MB_NEW
dw MB_ONGOTO
dw MB_FNWAIT
dw MB_DEF
dw MB_POKE
dw MB_CONT
dw MB_CSAVE
dw MB_CLOAD
dw MB_OUTWRD
dw MB_LPRINT
dw MB_LLIST
dw MB_CLS
; 0xA0..0xAF
dw MB_WIDTH
dw MB_REM_ELSE
dw MB_TRON ; = '>'
dw MB_TROFF
dw MB_SWAP
dw MB_ERASE
dw MB_ERRORS
dw MB_RESUME
dw MB_DELETE
dw MB_AUTO
dw MB_RENUM
dw MB_DEFSTR
dw MB_DEFINT
dw MB_DEFSNG
dw MB_DEFDBL
dw MB_LINE
; 0xB0..0xBF
dw MB_OPEN
dw MB_FIELD
dw MB_GET
dw MB_PUT
dw MB_CLOSE
dw MB_LOAD ; = F6h
dw MB_MERGE ; _MERGE
dw MB_FILES
dw MB_LSET
dw MB_RSET
dw MB_SAVE
dw MB_LFILES
dw MB_CIRCLE
dw MB_COLOR
dw MB_DRAW
dw MB_PAINT
; 0xC0..0xCF
dw BEEP
dw MB_PLAY
dw MB_PSETST
dw MB_PRESET
dw MB_SOUND
dw MB_SCREEN
dw MB_VPOKE
dw MB_SPRITE
dw MB_VDP
dw MB_BASE
dw MB_CALL
dw MB_TIME
dw MB_KEY
dw MB_MAX
dw MB_MOTOR
dw MB_BLOAD
; 0xD0..0xDF
dw MB_BSAVE
dw MB_DSKO
dw MB_SET
dw MB_NAME
dw MB_KILL
dw MB_IPL
dw MB_COPY
dw MB_CMD
dw MB_LOCATE
; ---------------------------------------------------
; Function tokens
; ---------------------------------------------------
; 0x81..0x8F
MB_FUNDSP:
dw MB_LEFT_
dw MB_RIGHT_
dw MB_MID_
dw MB_SGN
dw MB_INT
dw MB_ABS
dw MB_SQR
dw MB_RND
dw MB_SIN
dw MB_LOG
dw MB_EXP
dw MB_COS
dw MB_TAN
dw MB_ATN
dw MB_FRE
; 0x90..0x9F
dw MB_FNINP
dw MB_POS
dw MB_LEN
dw MB_STR_
dw MB_VAL
dw MB_ASC
dw MB_CHR_
dw MB_PEEK
dw MB_VPEEK
dw MB_SPACE_
dw MB_OCT_
dw MB_HEX_
dw MB_LPOS
dw MB_BIN_
dw MB_FRCINT
dw MB_FRCSNG
; 0xA0..0xAF
dw MB_FRCDBL
dw MB_FIXER
dw MB_STICK
dw MB_TRIGFN
dw MB_PDL
dw MB_PAD
dw MB_DSKF_
dw MB_FPOS
dw MB_CVI
dw MB_CVS
dw MB_CVD
dw MB_EOF
dw MB_LOC
dw MB_LOF
dw MB_MKI_
dw MB_MKS_
dw MB_MKD_
; ---------------------------------------------------
; Alphabetic operator and function dispatch table
; ---------------------------------------------------
ALPTAB:
DW ATAB
DW BTAB
DW CTAB
DW DTAB
DW ETAB
DW FTAB
DW GTAB
DW HTAB
DW ITAB
DW JTAB
DW KTAB
DW LTAB
DW MTAB
DW NTAB
DW OTAB
DW PTAB
DW QTAB
DW RTAB
DW STAB
DW TTAB
DW UTAB
DW VTAB
DW WTAB
DW XTAB
DW YTAB
DW ZTAB
; ---------------------------------------------------
; Alphabetic character by character
; operator and function table
; ---------------------------------------------------
; ---------------------------------------------------
ATAB:
DB "UT", 'O' + 0x80, _AUTO
DB "N", 'D' + 0x80, _AND
DB "B", 'S' + 0x80, _ABS - 0x80
DB "T", 'N' + 0x80, _ATN - 0x80
DB "S", 'C' + 0x80, _ASC - 0x80
DB "TTR", '$' + 0x80, _ATTR_
DB 0
; ---------------------------------------------------
BTAB:
DB "AS", 'E' + 0x80, _BASE
DB "SAV", 'E' + 0x80, _BSAVE
DB "LOA", 'D' + 0x80, _BLOAD
DB "EE", 'P' + 0x80, _BEEP
DB "IN", '$' + 0x80, _BIN_ - 0x80
DB 0
; ---------------------------------------------------
CTAB:
DB "AL", 'L' + 0x80, _CALL
DB "LOS", 'E' + 0x80, _CLOSE
DB "OP", 'Y' + 0x80, _COPY
DB "ON", 'T' + 0x80, _CONT
DB "LEA", 'R' + 0x80, _CLEAR
DB "LOA", 'D' + 0x80, _CLOAD
DB "SAV", 'E' + 0x80, _CSAVE
DB "SRLI", 'N' + 0x80, _CSRLIN
DB "IN", 'T' + 0x80, _CINT - 0x80
DB "SN", 'G' + 0x80, _CSNG - 0x80
DB "DB", 'L' + 0x80, _CDBL - 0x80
DB "V", 'I' + 0x80, _CVI - 0x80
DB "V", 'S' + 0x80, _CVS - 0x80
DB "V", 'D' + 0x80, _CVD - 0x80
DB "O", 'S' + 0x80, _COS - 0x80
DB "HR", '$' + 0x80, _CHR_ - 0x80
DB "IRCL", 'E' + 0x80, _CIRCLE
DB "OLO", 'R' + 0x80, _COLOR
DB "L", 'S' + 0x80, _CLS
DB "M", 'D' + 0x80, _CMD
DB 0
; ---------------------------------------------------
DTAB:
DB "ELET", 'E' + 0x80, _DELETE
DB "AT", 'A' + 0x80, _DATA
DB "I", 'M' + 0x80, _DIM
DB "EFST", 'R' + 0x80, _DEFSTR
DB "EFIN", 'T' + 0x80, _DEFINT
DB "EFSN", 'G' + 0x80, _DEFSNG
DB "EFDB", 'L' + 0x80, _DEFDBL
DB "SKO", '$' + 0x80, _DSKO_
DB "E", 'F' + 0x80, _DEF
DB "SKI", '$' + 0x80, _DSKI_
DB "SK", 'F' + 0x80, _DSKF_ - 0x80
DB "RA", 'W' + 0x80, _DRAW
DB 0
; ---------------------------------------------------
ETAB:
DB "LS", 'E' + 0x80, _ELSE
DB "N", 'D' + 0x80, _END
DB "RAS", 'E' + 0x80, _ERASE
DB "RRO", 'R' + 0x80, _ERROR
DB "R", 'L' + 0x80, _ERL
DB "R", 'R' + 0x80, _ERR
DB "X", 'P' + 0x80, _EXP - 0x80
DB "O", 'F' + 0x80, _EOF - 0x80
DB "Q", 'V' + 0x80, _EQV
DB 0
; ---------------------------------------------------
FTAB:
DB "O", 'R' + 0x80, _FOR
DB "IEL", 'D' + 0x80, _FIELD
DB "ILE", 'S' + 0x80, _FILES
DB 'N' + 0x80, _FN
DB "R", 'E' + 0x80, _FRE - 0x80
DB "I", 'X' + 0x80, _FIX - 0x80
DB "PO", 'S' + 0x80, _FPOS - 0x80
DB 0
; ---------------------------------------------------
GTAB:
DB "OT", 'O' + 0x80, _GOTO
DB "O T", 'O' + 0x80, _GOTO
DB "OSU", 'B' + 0x80, _GOSUB
DB "E", 'T' + 0x80, _GET
DB 0
; ---------------------------------------------------
HTAB:
DB "EX", '$' + 0x80, _HEX - 0x80
DB 0
; ---------------------------------------------------
ITAB:
DB "NPU", 'T' + 0x80, _INPUT
DB 'F' + 0x80, _IF
DB "NST", 'R' + 0x80, _INSTR
DB "N", 'T' + 0x80, _INT - 0x80
DB "N", 'P' + 0x80, _INP - 0x80
DB "M", 'P' + 0x80, _IMP
DB "NKEY", '$' + 0x80, _INKEY_
DB "P", 'L' + 0x80, _IPL
DB 0
; ---------------------------------------------------
JTAB:
DB 0
; ---------------------------------------------------
KTAB:
DB "IL", 'L' + 0x80, _KILL
DB "E", 'Y' + 0x80, _KEY
DB 0
; ---------------------------------------------------
LTAB:
DB "PRIN", 'T' + 0x80, _LPRINT
DB "LIS", 'T' + 0x80, _LLIST
DB "PO", 'S' + 0x80, _LPOS - 0x80
DB "E", 'T' + 0x80, _LET
DB "OCAT", 'E' + 0x80, _LOCATE
DB "IN", 'E' + 0x80, _LINE
DB "OA", 'D' + 0x80, _LOAD
DB "SE", 'T' + 0x80, _LSET
DB "IS", 'T' + 0x80, _LIST
DB "FILE", 'S' + 0x80, _LFILES
DB "O", 'G' + 0x80, _LOG - 0x80
DB "O", 'C' + 0x80, _LOC - 0x80
DB "E", 'N' + 0x80, _LEN - 0x80
DB "EFT", '$' + 0x80, _LEFT_ - 0x80
DB "O", 'F' + 0x80, _LOF - 0x80
DB 0
; ---------------------------------------------------
MTAB:
DB "OTO", 'R' + 0x80, _MOTOR
DB "ERG", 'E' + 0x80, _MERGE
DB "O", 'D' + 0x80, _MOD
DB "KI", '$' + 0x80, _MKI_ - 0x80
DB "KS", '$' + 0x80, _MKS_ - 0x80
DB "KD", '$' + 0x80, _MKD_ - 0x80
DB "ID", '$' + 0x80, _MID_ - 0x80
DB "A", 'X' + 0x80, _MAX
DB 0
; ---------------------------------------------------
NTAB:
DB "EX", 'T' + 0x80, _NEXT
DB "AM", 'E' + 0x80, _NAME
DB "E", 'W' + 0x80, _NEW
DB "O", 'T' + 0x80, _NOT
DB 0
; ---------------------------------------------------
OTAB:
DB "PE", 'N' + 0x80, _OPEN
DB "U", 'T' + 0x80, _OUT
DB 'N' + 0x80, _ON
DB 'R' + 0x80, _OR
DB "CT", '$' + 0x80, _OCT_ - 0x80
DB "F", 'F' + 0x80, _OFF
DB 0
; ---------------------------------------------------
PTAB:
DB "RIN", 'T' + 0x80, _PRINT
DB "U", 'T' + 0x80, _PUT
DB "OK", 'E' + 0x80, _POKE
DB "O", 'S' + 0x80, _POS - 0x80
DB "EE", 'K' + 0x80, _PEEK - 0x80
DB "SE", 'T' + 0x80, _PSET
DB "RESE", 'T' + 0x80, _PRESET
DB "OIN", 'T' + 0x80, _POINT
DB "AIN", 'T' + 0x80, _PAINT
DB "D", 'L' + 0x80, _PDL - 0x80
DB "A", 'D' + 0x80, _PAD - 0x80
DB "LA", 'Y' + 0x80, _PLAY
DB 0
; ---------------------------------------------------
QTAB:
DB 0
; ---------------------------------------------------
RTAB:
DB "ETUR", 'N' + 0x80, _RETURN
DB "EA", 'D' + 0x80, _READ
DB "U", 'N' + 0x80, _RUN
DB "ESTOR", 'E' + 0x80, _RESTORE
DB "E", 'M' + 0x80, _REM
DB "ESUM", 'E' + 0x80, _RESUME
DB "SE", 'T' + 0x80, _RSET
DB "IGHT", '$' + 0x80, _RIGHT_ - 0x80
DB "N", 'D' + 0x80, _RND - 0x80
DB "ENU", 'M' + 0x80, _RENUM
DB 0
; --------------------------------------------------
STAB:
DB "CREE", 'N' + 0x80, _SCREEN
DB "PRIT", 'E' + 0x80, _SPRITE
DB "TO", 'P' + 0x80, _STOP
DB "WA", 'P' + 0x80, _SWAP
DB "E", 'T' + 0x80, _SET
DB "AV", 'E' + 0x80, _SAVE
DB "PC", '(' + 0x80, _SPC
DB "TE", 'P' + 0x80, _STEP
DB "G", 'N' + 0x80, _SGN - 0x80
DB "Q", 'R' + 0x80, _SQR - 0x80
DB "I", 'N' + 0x80, _SIN - 0x80
DB "TR", '$' + 0x80, _STR_ - 0x80
DB "TRING", '$' + 0x80, _STRING_
DB "PACE", '$' + 0x80, _SPACE_ - 0x80
DB "OUN", 'D' + 0x80, _SOUND
DB "TIC", 'K' + 0x80, _STICK - 0x80
DB "TRI", 'G' + 0x80, _STRIG - 0x80
DB 0
; ---------------------------------------------------
TTAB:
DB "HE", 'N' + 0x80, _THEN
DB "RO", 'N' + 0x80, _TRON
DB "ROF", 'F' + 0x80, _TROFF
DB "AB", '(' + 0x80, _TAB
DB 'O' + 0x80, _TO
DB "IM", 'E' + 0x80, _TIME
DB "A", 'N' + 0x80, _TAN - 0x80
DB 0
; ---------------------------------------------------
UTAB:
DB "SIN", 'G' + 0x80, _USING
DB "S", 'R' + 0x80, _USR
DB 0
; ---------------------------------------------------
VTAB:
DB "A", 'L' + 0x80, _VAL - 0x80
DB "ARPT", 'R' + 0x80, _VARPTR
DB "D", 'P' + 0x80, _VDP
DB "POK", 'E' + 0x80, _VPOKE
DB "PEE", 'K' + 0x80, _VPEEK - 0x80
DB 0
; ---------------------------------------------------
WTAB:
DB "IDT", 'H' + 0x80, _WIDTH
DB "AI", 'T' + 0x80, _WAIT
DB 0
; ---------------------------------------------------
XTAB:
DB "O", 'R' + 0x80, _XOR
DB 0
; ---------------------------------------------------
YTAB:
DB 0
; ---------------------------------------------------
ZTAB:
DB 0
; ---------------------------------------------------
; Special operators table
; ---------------------------------------------------
MB_SPCTAB
DB '+' + 0x80
DB PLUSTK
DB '-' + 0x80
DB MINUTK
DB '*' + 0x80
DB MULTK
DB '/' + 0x80
DB DIVTK
DB '^' + 0x80
DB EXPTK
DB ASCII_BKSL + 0x80
DB IDIVTK
DB '''' + 0x80
DB SNGQTK
DB '>' + 0x80
DB GREATK
DB '=' + 0x80
DB EQULTK
DB '<' + 0x80
DB LESSTK
DB 0
; ---------------------------------------------------
; Math precedences table
; ---------------------------------------------------
MB_OPTAB:
DB 121
DB 121
DB 124
DB 124
DB 127
DB 80
DB 70
DB 60
DB 50
DB 40
DB 122
DB 123
; ---------------------------------------------------
MB_FRCTBL:
dw MB_FRCDBL
dw 0
dw MB_FRCINT
dw MB_CHKSTR
dw MB_FRCSNG
; ---------------------------------------------------
MB_DBLDSP:
dw MB_DADD
dw MB_DSUB
dw MB_DMUL
dw MB_DDIV
dw MB_DEXP
dw MB_DCOMP
; ---------------------------------------------------
MB_SNGDSP:
dw MB_FADD
dw MB_FSUB
dw MB_FMUL
dw MB_FDIV
dw MB_FEXP
dw MB_FCOMP
; ---------------------------------------------------
MB_INTDSP:
dw MB_IADD
dw MB_ISUB
dw MB_IMUL
dw MB_IDIV1
dw MB_IEXP
dw MB_ICOMP