Split data from code
This commit is contained in:
parent
1132ceed34
commit
00610b2925
176
v5.21/disptab.inc
Normal file
176
v5.21/disptab.inc
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
; =============================================================================
|
||||||
|
; Source codes for Microsoft Basic-80 v5.21 for CP/M
|
||||||
|
;
|
||||||
|
; Operators and fubctions dispatch tables
|
||||||
|
;
|
||||||
|
; Disassembled by Romych and Ghidra @2026.08.27
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; DISPATCH TABLES
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_STMDSP:
|
||||||
|
DW MB_ENDS
|
||||||
|
DW MB_FOR
|
||||||
|
DW MB_NEXT
|
||||||
|
DW MB_DATAS ;= 01h
|
||||||
|
DW MB_INPUT
|
||||||
|
DW MB_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
|
||||||
|
DW MB_STOP
|
||||||
|
DW MB_PRINT
|
||||||
|
DW MB_CLEAR
|
||||||
|
DW MB_LIST
|
||||||
|
DW MB_SCRATH
|
||||||
|
DW MB_ONGOTO
|
||||||
|
DW MB_NULL
|
||||||
|
DW MB_FNWAIT
|
||||||
|
DW MB_DEF
|
||||||
|
DW MB_POKE
|
||||||
|
DW MB_CONT
|
||||||
|
DW MB_SNERR ; CSAVE - unsupported for CP/M
|
||||||
|
DW MB_SNERR ; CLOAD - unsupported for CP/M
|
||||||
|
DW MB_FNOUT
|
||||||
|
DW MB_LPRINT
|
||||||
|
DW MB_LLIST
|
||||||
|
DW 0
|
||||||
|
DW MB_WIDTH
|
||||||
|
DW MB_REM
|
||||||
|
DW MB_TON
|
||||||
|
DW MB_TOFF
|
||||||
|
DW MB_SWAP
|
||||||
|
DW MB_ERASE
|
||||||
|
DW MB_EDIT
|
||||||
|
DW MB_ERRORS
|
||||||
|
DW MB_RESUME
|
||||||
|
DW MB_DELETE
|
||||||
|
DW MB_AUTO
|
||||||
|
DW MB_RESEQ
|
||||||
|
DW MB_DEFSTR
|
||||||
|
DW MB_DEFINT
|
||||||
|
DW MB_DEFREA
|
||||||
|
DW MB_DEFDBL
|
||||||
|
DW MB_LINE
|
||||||
|
DW 0
|
||||||
|
DW 0
|
||||||
|
DW MB_WHILE
|
||||||
|
DW MB_WEND
|
||||||
|
DW MB_CALLS
|
||||||
|
DW MB_WRITE
|
||||||
|
DW MB_DATAS
|
||||||
|
DW MB_CHAIN
|
||||||
|
DW MB_OPTION
|
||||||
|
DW MB_RANDOM
|
||||||
|
DW 0
|
||||||
|
DW MB_SYSTEM
|
||||||
|
DW 0
|
||||||
|
DW MB_OPEN
|
||||||
|
DW MB_FIELD
|
||||||
|
DW MB_GET
|
||||||
|
DW MB_PUT
|
||||||
|
DW MB_CLOSE
|
||||||
|
DW MB_LOAD
|
||||||
|
DW MB_MERGE
|
||||||
|
DW MB_FILES
|
||||||
|
DW MB_NAME
|
||||||
|
DW MB_KILL
|
||||||
|
DW MB_LSET
|
||||||
|
DW MB_RSET
|
||||||
|
DW MB_SAVE
|
||||||
|
DW MB_RESET
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; TOKENS
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_FUNDSP:
|
||||||
|
DW MB_LEFT_
|
||||||
|
DW MB_RIGHT_
|
||||||
|
DW MB_MID_
|
||||||
|
DW MB_SGN
|
||||||
|
DW MB_VINT
|
||||||
|
DW MB_ABS
|
||||||
|
DW MB_SQR
|
||||||
|
DW MB_RND
|
||||||
|
DW MB_SIN
|
||||||
|
; 8K FUNCTIONS
|
||||||
|
DW MB_LOG
|
||||||
|
DW MB_EXP
|
||||||
|
DW MB_COS
|
||||||
|
DW MB_TAN
|
||||||
|
DW MB_ATN
|
||||||
|
DW MB_FRE
|
||||||
|
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_SPACE_
|
||||||
|
DW MB_STRO_
|
||||||
|
DW MB_STRH_
|
||||||
|
DW MB_LPOS
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; EXTENDED FUNCTIONS
|
||||||
|
; ---------------------------------------------------
|
||||||
|
DW MB_FRCINT
|
||||||
|
DW MB_FRCSNG
|
||||||
|
DW MB_FRCDBL
|
||||||
|
DW MB_FIXER
|
||||||
|
|
||||||
|
DS 22, 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; DISK FUNCTIONS
|
||||||
|
; ---------------------------------------------------
|
||||||
|
DW MB_CVI
|
||||||
|
DW MB_CVS
|
||||||
|
DW MB_CVD
|
||||||
|
DW WARM_BOOT
|
||||||
|
DW MB_EOF
|
||||||
|
DW MB_LOC
|
||||||
|
DW MB_LOF
|
||||||
|
DW MB_MKI_
|
||||||
|
DW MB_MKS_
|
||||||
|
DW MB_MKD_
|
||||||
|
|
||||||
|
; --------------------------------------------------
|
||||||
|
; ALPHABETIC DISPATCH TABLE
|
||||||
|
; --------------------------------------------------
|
||||||
|
MB_ALPTAB:
|
||||||
|
DW MB_ATAB
|
||||||
|
DW MB_BTAB
|
||||||
|
DW MB_CTAB
|
||||||
|
DW MB_DTAB
|
||||||
|
DW MB_ETAB
|
||||||
|
DW MB_FTAB
|
||||||
|
DW MB_GTAB
|
||||||
|
DW MB_HTAB
|
||||||
|
DW MB_ITAB
|
||||||
|
DW MB_JTAB
|
||||||
|
DW MB_KTAB
|
||||||
|
DW MB_LTAB
|
||||||
|
DW MB_MTAB
|
||||||
|
DW MB_NTAB
|
||||||
|
DW MB_OTAB
|
||||||
|
DW MB_PTAB
|
||||||
|
DW MB_QTAB
|
||||||
|
DW MB_RTAB
|
||||||
|
DW MB_STAB
|
||||||
|
DW MB_TTAB
|
||||||
|
DW MB_UTAB
|
||||||
|
DW MB_VTAB
|
||||||
|
DW MB_WTAB
|
||||||
|
DW MB_XTAB
|
||||||
|
DW MB_YTAB
|
||||||
|
DW MB_ZTAB
|
||||||
@ -188,107 +188,102 @@ MINUTK EQU 0xf3 ; 243
|
|||||||
MULTK EQU 0xf4 ; 244
|
MULTK EQU 0xf4 ; 244
|
||||||
DIVTK EQU 0xf5
|
DIVTK EQU 0xf5
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; 8K OPERATORS
|
; 8K OPERATORS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
EXPTK EQU 246 ; 0xF6
|
EXPTK EQU 246 ; 0xF6
|
||||||
_AND EQU 247 ; 0xF7
|
_AND EQU 247 ; 0xF7
|
||||||
_OR EQU 248 ; 0xF8
|
_OR EQU 248 ; 0xF8
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; EXTENDED OPERATORS
|
; EXTENDED OPERATORS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
_XOR EQU 249 ; 0xF9
|
_XOR EQU 249 ; 0xF9
|
||||||
_EQV EQU 250 ; 0xFA
|
_EQV EQU 250 ; 0xFA
|
||||||
_IMP EQU 251 ; 0xFB
|
_IMP EQU 251 ; 0xFB
|
||||||
_MOD EQU 252 ; 0xFC
|
_MOD EQU 252 ; 0xFC
|
||||||
_DUMMY EQU 253 ; 0xFD
|
_DUMMY EQU 253 ; 0xFD
|
||||||
IDIVTK EQU 253 ; 0xFD
|
IDIVTK EQU 253 ; 0xFD
|
||||||
|
|
||||||
LSTOPK EQU 253 + 1 - PLUSTK
|
LSTOPK EQU 253 + 1 - PLUSTK
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; FUNCTIONS
|
; FUNCTIONS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
;Q EQU 128 ; 0x80
|
;Q EQU 128 ; 0x80
|
||||||
_LEFT_ EQU 129 ; 0x81
|
_LEFT_ EQU 129 ; 0x81
|
||||||
ONEFUN EQU 129 ; 0x81
|
ONEFUN EQU 129 ; 0x81
|
||||||
_RIGHT EQU 130 ; 0x82
|
_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
|
||||||
|
|
||||||
_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
|
; 8K FUNCTIONS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
_LOG EQU 138 ; 0x8A
|
_LOG EQU 138 ; 0x8A
|
||||||
_EXP EQU 139 ; 0x8B
|
_EXP EQU 139 ; 0x8B
|
||||||
_COS EQU 140 ; 0x8C
|
_COS EQU 140 ; 0x8C
|
||||||
_TAN EQU 141 ; 0x8D
|
_TAN EQU 141 ; 0x8D
|
||||||
_ATN EQU 142 ; 0x8E
|
_ATN EQU 142 ; 0x8E
|
||||||
_FRE EQU 143 ; 0x8F
|
_FRE EQU 143 ; 0x8F
|
||||||
_INP EQU 144 ; 0x90
|
_INP EQU 144 ; 0x90
|
||||||
_POS EQU 145 ; 0x91
|
_POS EQU 145 ; 0x91
|
||||||
_LEN EQU 146 ; 0x92
|
_LEN EQU 146 ; 0x92
|
||||||
_STR_ EQU 147 ; 0x93
|
_STR_ EQU 147 ; 0x93
|
||||||
_VAL EQU 148 ; 0x94
|
_VAL EQU 148 ; 0x94
|
||||||
_ASC EQU 149 ; 0x95
|
_ASC EQU 149 ; 0x95
|
||||||
_CHR_ EQU 150 ; 0x96
|
_CHR_ EQU 150 ; 0x96
|
||||||
_PEEK EQU 151 ; 0x97
|
_PEEK EQU 151 ; 0x97
|
||||||
_SPACE EQU 152 ; 0x98
|
_SPACE EQU 152 ; 0x98
|
||||||
_OCT_ EQU 153 ; 0x99
|
_OCT_ EQU 153 ; 0x99
|
||||||
_HEX_ EQU 154 ; 0x9A
|
_HEX_ EQU 154 ; 0x9A
|
||||||
_LPOS EQU 155 ; 0x9B
|
_LPOS EQU 155 ; 0x9B
|
||||||
;LASNUM EQU 155 ; 0x9B
|
;LASNUM EQU 155 ; 0x9B
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; EXTENDED FUNCTIONS
|
; EXTENDED FUNCTIONS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
_CINT EQU 156 ; 0x9C
|
_CINT EQU 156 ; 0x9C
|
||||||
_CSNG EQU 157 ; 0x9D
|
_CSNG EQU 157 ; 0x9D
|
||||||
_CDBL EQU 158 ; 0x9E
|
_CDBL EQU 158 ; 0x9E
|
||||||
_FIX EQU 159 ; 0x9F
|
_FIX EQU 159 ; 0x9F
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; NCR VERSION FUNCTIONS
|
; NCR VERSION FUNCTIONS
|
||||||
; DISK FUNCTIONS
|
; DISK FUNCTIONS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
_CVI EQU 171 ; 0xAC
|
_CVI EQU 171 ; 0xAC
|
||||||
_CVS EQU 172 ; 0xAD
|
_CVS EQU 172 ; 0xAD
|
||||||
_CVD EQU 173 ; 0xAE
|
_CVD EQU 173 ; 0xAE
|
||||||
_EOF EQU 175 ; 0xB0
|
_EOF EQU 175 ; 0xB0
|
||||||
_LOC EQU 176 ; 0xB1
|
_LOC EQU 176 ; 0xB1
|
||||||
_LOF EQU 177 ; 0xB2
|
_LOF EQU 177 ; 0xB2
|
||||||
_MKI_ EQU 178 ; 0xB3
|
_MKI_ EQU 178 ; 0xB3
|
||||||
_MKS_ EQU 179 ; 0xB4
|
_MKS_ EQU 179 ; 0xB4
|
||||||
_MKD_ EQU 180 ; 0xB5
|
_MKD_ EQU 180 ; 0xB5
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; END DISK FUNCTIONS
|
; END DISK FUNCTIONS
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
NUMGFN EQU 2*MIDTK-2*ONEFUN+1 ; 5
|
NUMGFN EQU 2*MIDTK - 2*ONEFUN + 1 ; 5
|
||||||
|
|
||||||
|
; --------------------------------------------------
|
||||||
; ---------------------------------------------------
|
|
||||||
; CP/M Entry
|
; CP/M Entry
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
WARM_BOOT EQU 0x0000
|
WARM_BOOT EQU 0x0000
|
||||||
WARM_BOOT_ADDR EQU WARM_BOOT + 1
|
WARM_BOOT_ADDR EQU WARM_BOOT + 1
|
||||||
@ -296,23 +291,23 @@ BDOS_ENTER EQU 0x0005
|
|||||||
BDOS_ENTER_ADDR EQU BDOS_ENTER + 1
|
BDOS_ENTER_ADDR EQU BDOS_ENTER + 1
|
||||||
DMA_BUFFER EQU 0x80
|
DMA_BUFFER EQU 0x80
|
||||||
P_CMD_LINE EQU DMA_BUFFER + 1
|
P_CMD_LINE EQU DMA_BUFFER + 1
|
||||||
TPA EQU 0x100 ; 256
|
TPA EQU 0x100
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; CP/M functions
|
; CP/M functions
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
C.VER EQU 0x0c ; Get version
|
C.VER EQU 0x0c ; Get version
|
||||||
C.REST EQU 0x0d ; Init BDOS
|
C.REST EQU 0x0d ; Init BDOS
|
||||||
C.SDRV EQU 0x0e ; Set current drive
|
C.SDRV EQU 0x0e ; Set current drive
|
||||||
C.OPEN EQU 0x0f ; Open file
|
C.OPEN EQU 0x0f ; Open file
|
||||||
C.CLOS EQU 0x10 ; Close file
|
C.CLOS EQU 0x10 ; Close file
|
||||||
C.SEAR EQU 0x11 ; Search file
|
C.SEAR EQU 0x11 ; Search file
|
||||||
C.SEAR_N EQU 0x12 ; Search next
|
C.SEAR_N EQU 0x12 ; Search next
|
||||||
C.DEL EQU 0x13 ; Delete file
|
C.DEL EQU 0x13 ; Delete file
|
||||||
C.MAKE EQU 0x16 ; Create new file
|
C.MAKE EQU 0x16 ; Create new file
|
||||||
C.RENA EQU 0x17 ; Rename file
|
C.RENA EQU 0x17 ; Rename file
|
||||||
C.GDRV EQU 0x19 ; Get current drive
|
C.GDRV EQU 0x19 ; Get current drive
|
||||||
C.BUFF EQU 0x1a ; Set DMA buffer address
|
C.BUFF EQU 0x1a ; Set DMA buffer address
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; ---------------------------------------------------
|
||||||
@ -325,9 +320,9 @@ FCB.RC EQU 38 ; 0x0F ? ; RECORD COUNT = CURRENT EXTE
|
|||||||
FCB.NR EQU 40 ; 0x20 ? ; NEXT RECORD NUMBER
|
FCB.NR EQU 40 ; 0x20 ? ; NEXT RECORD NUMBER
|
||||||
FCB.RN EQU 33 ; CP/M 2.x Random Record Number
|
FCB.RN EQU 33 ; CP/M 2.x Random Record Number
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; File access mode
|
; File access mode
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
MD.SQI EQU 1 ; seq inp
|
MD.SQI EQU 1 ; seq inp
|
||||||
MD.SQO EQU 2 ; seq out
|
MD.SQO EQU 2 ; seq out
|
||||||
MD.RND EQU 3 ; random
|
MD.RND EQU 3 ; random
|
||||||
@ -348,9 +343,9 @@ CONCON EQU 30 ; TOKEN RETURNED BY CHRGET AFTER CON
|
|||||||
DBLCON EQU 31 ; DOUBLE PREC (8 BYTE) CONSTANT
|
DBLCON EQU 31 ; DOUBLE PREC (8 BYTE) CONSTANT
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; ASCII codes
|
; ASCII codes
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
ASCII_BELL EQU 0x07 ; 7
|
ASCII_BELL EQU 0x07 ; 7
|
||||||
ASCII_BKSP EQU 0x08 ; 8
|
ASCII_BKSP EQU 0x08 ; 8
|
||||||
@ -364,9 +359,9 @@ ASCII_CUR EQU 0x24 ; $
|
|||||||
ASCII_SQ EQU 0x27 ; '
|
ASCII_SQ EQU 0x27 ; '
|
||||||
ASCII_BKSL EQU 0x5C ; \
|
ASCII_BKSL EQU 0x5C ; \
|
||||||
|
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
; Key codes
|
; Key codes
|
||||||
; ---------------------------------------------------
|
; --------------------------------------------------
|
||||||
|
|
||||||
CTRL_C EQU 0x03 ; 3
|
CTRL_C EQU 0x03 ; 3
|
||||||
CTRL_O EQU 0x0f ; 15
|
CTRL_O EQU 0x0f ; 15
|
||||||
@ -395,29 +390,45 @@ DATOFC EQU DATOFS
|
|||||||
DBLKSZ EQU DATOFS + DATPSC
|
DBLKSZ EQU DATOFS + DATPSC
|
||||||
DBLK.C EQU DBLKSZ ; SIZE OF A FILE INFO BLOCK PLUS $CODE
|
DBLK.C EQU DBLKSZ ; SIZE OF A FILE INFO BLOCK PLUS $CODE
|
||||||
|
|
||||||
DSKERR EQU 0x31 ; 49
|
|
||||||
EOFCHR EQU 0x1a ; 26
|
EOFCHR EQU 0x1a ; 26
|
||||||
|
|
||||||
|
; --------------------------------------------------
|
||||||
|
; Error codes
|
||||||
|
; --------------------------------------------------
|
||||||
|
ERRNF EQU 0x01
|
||||||
ERRSN EQU 0x02 ; 2
|
ERRSN EQU 0x02 ; 2
|
||||||
ERRRG EQU 0x03 ; 3
|
ERRRG EQU 0x03 ; 3
|
||||||
ERROD EQU 0x04 ; 4
|
ERROD EQU 0x04 ; 4
|
||||||
ERRFC EQU 0x05 ; 5
|
ERRFC EQU 0x05 ; 5
|
||||||
ERROM EQU 0x07
|
|
||||||
ERROV EQU 0x06 ; 6
|
ERROV EQU 0x06 ; 6
|
||||||
|
ERROM EQU 0x07
|
||||||
ERRUS EQU 0x08 ; 8
|
ERRUS EQU 0x08 ; 8
|
||||||
ERRBS EQU 0x09 ; 9
|
ERRBS EQU 0x09 ; 9
|
||||||
ERRDD EQU 0x0a ; 10
|
ERRDD EQU 0x0a ; 10
|
||||||
ERRDV0 EQU 0x0b ; 11
|
ERRDV0 EQU 0x0b ; 11
|
||||||
ERRID EQU 0x0c ; 12
|
ERRID EQU 0x0c ; 12
|
||||||
ERRTM EQU 0x0d ; 13
|
ERRTM EQU 0x0d ; 13
|
||||||
|
ERRSO EQU 0x0e ; Out of space
|
||||||
ERRLS EQU 0x0f ; 15
|
ERRLS EQU 0x0f ; 15
|
||||||
|
ERRST EQU 0x10 ; String formula too complex
|
||||||
ERRCN EQU 0x11 ; 17
|
ERRCN EQU 0x11 ; 17
|
||||||
ERRRE EQU 0x14 ; 20
|
ERRUF EQU 0x12 ; Undefined user function
|
||||||
ERRNR EQU 0x13 ; 19
|
ERRNR EQU 0x13 ; 19
|
||||||
|
ERRRE EQU 0x14 ; 20
|
||||||
|
ERRUE EQU 0x15 ; Unprintable error
|
||||||
|
ERRMO EQU 0x16 ; Missing operand
|
||||||
ERRLBO EQU 0x17 ; 23
|
ERRLBO EQU 0x17 ; 23
|
||||||
|
; skipped 18 and 19
|
||||||
ERRFN EQU 0x1a ; 26
|
ERRFN EQU 0x1a ; 26
|
||||||
|
; skipped 1b and 1c
|
||||||
ERRWH EQU 0x1d ; 29
|
ERRWH EQU 0x1d ; 29
|
||||||
ERRWE EQU 0x1e ; 30
|
ERRWE EQU 0x1e ; 30
|
||||||
|
|
||||||
|
NONDSK EQU 0x1e ; Last non disk error
|
||||||
|
|
||||||
|
; disk errors starts from here
|
||||||
|
DSKERR EQU 0x31 ; 49
|
||||||
|
;
|
||||||
ERRFOV EQU 0x32 ; 50
|
ERRFOV EQU 0x32 ; 50
|
||||||
ERRIER EQU 0x33 ; 51
|
ERRIER EQU 0x33 ; 51
|
||||||
ERRBFN EQU 0x34 ; 52
|
ERRBFN EQU 0x34 ; 52
|
||||||
@ -430,6 +441,7 @@ ERRDFL EQU 0x3d ; 61
|
|||||||
ERRRPE EQU 0x3e ; 62
|
ERRRPE EQU 0x3e ; 62
|
||||||
ERRFDR EQU 0x42 ; 66
|
ERRFDR EQU 0x42 ; 66
|
||||||
ERRTMF EQU 0x43 ; 67
|
ERRTMF EQU 0x43 ; 67
|
||||||
|
; --------------------------------------------------
|
||||||
|
|
||||||
FD.SIZ EQU 0xa9 ; 169
|
FD.SIZ EQU 0xa9 ; 169
|
||||||
FD.PHY EQU 0xab ; 171
|
FD.PHY EQU 0xab ; 171
|
||||||
@ -452,10 +464,7 @@ LSTERR EQU 0x44 ; 68
|
|||||||
MAXPRM EQU 0x20 ; 32
|
MAXPRM EQU 0x20 ; 32
|
||||||
|
|
||||||
NMREL EQU 0x03 ; 3
|
NMREL EQU 0x03 ; 3
|
||||||
NONDSK EQU 0x1e ; 30
|
|
||||||
PRMSIZ EQU 0x64 ; 100
|
PRMSIZ EQU 0x64 ; 100
|
||||||
SQO EQU 0x02 ; 2
|
SQO EQU 0x02 ; 2
|
||||||
SWTCHR EQU 0x2f ; 47
|
SWTCHR EQU 0x2f ; 47
|
||||||
WHLSIZ EQU 0x06 ; 6
|
WHLSIZ EQU 0x06 ; 6
|
||||||
|
|
||||||
CPM_RES1 EQU 0x3B
|
|
||||||
495
v5.21/inidata.inc
Normal file
495
v5.21/inidata.inc
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
; =============================================================================
|
||||||
|
; Source codes for Microsoft Basic-80 v5.21 for CP/M
|
||||||
|
;
|
||||||
|
; Initialized data. Variables, messages and tables.
|
||||||
|
;
|
||||||
|
; Disassembled by Romych and Ghidra @2026.08.27
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
; --------------------------------------------------
|
||||||
|
; OPERATOR PRECEDENCE TABLE
|
||||||
|
; --------------------------------------------------
|
||||||
|
MB_OPTAB:
|
||||||
|
DB 121
|
||||||
|
DB 121
|
||||||
|
DB 124
|
||||||
|
DB 124
|
||||||
|
DB 127
|
||||||
|
DB 80
|
||||||
|
DB 70
|
||||||
|
DB 60 ; PRECEDENCE OF "XOR"
|
||||||
|
DB 50 ; PRECEDENCE OF "EQV"
|
||||||
|
DB 40 ; PRECEDENCE OF "IMP"
|
||||||
|
DB 122 ; PRECEDENCE OF "MOD"
|
||||||
|
DB 123 ; PRECEDENCE OF "IDIV"
|
||||||
|
|
||||||
|
; --------------------------------------------------
|
||||||
|
; USED BY ASSIGNMENT CODE TO FORCE THE RIGHT HAND VALUE
|
||||||
|
; TO CORRESPOND TO THE VALUE TYPE OF THE VARIABLE BEING
|
||||||
|
; ASSIGNED TO.
|
||||||
|
; --------------------------------------------------
|
||||||
|
MB_FRCTBL:
|
||||||
|
DW MB_FRCDBL
|
||||||
|
DW 0x0
|
||||||
|
DW MB_FRCINT
|
||||||
|
DW MB_CHKSTR
|
||||||
|
DW MB_FRCSNG
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; DOUBLE PRECISION ROUTINES
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_DBLDSP:
|
||||||
|
DW MB_DADD
|
||||||
|
DW MB_DSUB
|
||||||
|
DW MB_DMULT
|
||||||
|
DW MB_DDIV
|
||||||
|
DW MB_DCOMP
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; SINGLE PRECISION ROUTINES
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_SNGDSP:
|
||||||
|
DW MB_FADD
|
||||||
|
DW MB_FSUB
|
||||||
|
DW MB_FMUL
|
||||||
|
DW MB_FDIV
|
||||||
|
DW MB_FCOMP
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; INTEGER ROUTINES
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_INTDSP:
|
||||||
|
DW MB_IADD
|
||||||
|
DW MB_ISUB
|
||||||
|
DW MB_IMUL
|
||||||
|
DW MB_INTDIV
|
||||||
|
DW MB_ICOMP
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_ERRTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_ERROR_MSGS:
|
||||||
|
DB "NEXT without FOR", 0
|
||||||
|
DB "Syntax error", 0
|
||||||
|
DB "RETURN without GOSUB", 0
|
||||||
|
DB "Out of DATA", 0
|
||||||
|
DB "Illegal function call", 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_OVRMSG:
|
||||||
|
DB "Overflow", 0
|
||||||
|
DB "Out of memory", 0
|
||||||
|
DB "Undefined line number", 0
|
||||||
|
DB "Subscript out of range", 0
|
||||||
|
DB "Duplicate Definition", 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_DBZ_MSG:
|
||||||
|
DB "Division by zero", 0
|
||||||
|
DB "Illegal direct", 0
|
||||||
|
DB "Type mismatch", 0
|
||||||
|
DB "Out of string space", 0
|
||||||
|
DB "String too long", 0
|
||||||
|
DB "String formula too complex", 0
|
||||||
|
DB "Can't continue", 0
|
||||||
|
DB "Undefined user function", 0
|
||||||
|
DB "No RESUME\0RESUME without error", 0
|
||||||
|
DB "Unprintable error", 0
|
||||||
|
DB "Missing operand", 0
|
||||||
|
DB "Line buffer overflow", 0
|
||||||
|
DB '?', 0
|
||||||
|
DB '?', 0
|
||||||
|
DB "FOR Without NEXT", 0
|
||||||
|
DB '?', 0
|
||||||
|
DB '?', 0
|
||||||
|
DB "WHILE without WEND", 0
|
||||||
|
DB "WEND without WHILE", 0
|
||||||
|
|
||||||
|
DB "FIELD overflow", 0
|
||||||
|
DB "Internal error", 0
|
||||||
|
DB "Bad file number", 0
|
||||||
|
DB "File not found", 0
|
||||||
|
DB "Bad file mode", 0
|
||||||
|
DB "File already open", 0
|
||||||
|
DB '?', 0
|
||||||
|
DB "Disk I/O error", 0
|
||||||
|
DB "File already exists", 0
|
||||||
|
DB '?', 0
|
||||||
|
DB '?', 0
|
||||||
|
DB "Disk full", 0
|
||||||
|
DB "Input past end", 0
|
||||||
|
DB "Bad record number", 0
|
||||||
|
DB "Bad file name", 0
|
||||||
|
DB '?', 0
|
||||||
|
DB "Direct statement in file", 0
|
||||||
|
DB "Too many files", 0
|
||||||
|
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_USRTAB:
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
DW MB_FCERR
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_NULCNT:
|
||||||
|
DB 1 ; NUMBER OF NULLS TO PRINT AFTER CRLF
|
||||||
|
MB_CHARC:
|
||||||
|
DB 0 ; EATEN CHAR WHEN NOT A ^C
|
||||||
|
MB_ERRFLG:
|
||||||
|
DB 0 ; ERROR NUMBER SO EDIT CAN BE CALLED ON "SYNTAX ERROR"
|
||||||
|
MB_LPTLST:
|
||||||
|
DB 0 ; LAST LINE PRINTER OPERATION. ZERO MEANS LINEFEED
|
||||||
|
MB_LPTPOS:
|
||||||
|
DB 0 ; POSITION OF LPT PRINT HEAD
|
||||||
|
MB_PRTFLG:
|
||||||
|
DB 0x00
|
||||||
|
MB_NLPPOS:
|
||||||
|
DB 112 ; (((LPTLEN/CLMWID)-1)*CLMWID) - LAST COMMA FIELD POSIT
|
||||||
|
MB_LPTSIZ:
|
||||||
|
DB 132 ; DEFAULT LINE PRINTER WIDTH
|
||||||
|
MB_LINLEN:
|
||||||
|
DB LINLN
|
||||||
|
MB_CLMLST:
|
||||||
|
DB 56 ; POSITION OF LAST COMMA COLUMN
|
||||||
|
MB_RUBSW:
|
||||||
|
DB 0 ; RUBOUT SWITCH=1 INSIDE THE PROCESSING OF A RUBOUT (INLIN)
|
||||||
|
MB_CNTOFL:
|
||||||
|
DB 0 ; SUPRESS OUTPUT FLAG, NON-ZERO MEANS SUPRESS
|
||||||
|
MB_PTRFIL:
|
||||||
|
DW 0 ; POINTER TO DATA BLOCK OF CURRENT FILE
|
||||||
|
MB_TOPMEM:
|
||||||
|
DW MB_TSTACK+100
|
||||||
|
MB_CURLIN:
|
||||||
|
DW 65534 ; CURRENT LINE #
|
||||||
|
MB_TXTTAB:
|
||||||
|
DW MB_TSTACK+1 ; MB_TSTACK+1
|
||||||
|
MB_OVERRI:
|
||||||
|
DW MB_OVRMSG ; = "Overflow"
|
||||||
|
|
||||||
|
; ===================================================
|
||||||
|
; END OF INITIALIZED PART OF RAM
|
||||||
|
; ===================================================
|
||||||
|
|
||||||
|
; ===================================================
|
||||||
|
; DISK DATA STORAGE AREA
|
||||||
|
; ===================================================
|
||||||
|
MB_LSTFRE:
|
||||||
|
DW 0 ; FREE PLACE IN DIRECTORY
|
||||||
|
MB_MAXTRK:
|
||||||
|
DB 0 ; ALLOCATE INSIDE THIS TRACK
|
||||||
|
MB_DSKMOD:
|
||||||
|
DB 0 ; MODE OF FILE JUST LOOKED UP, ZERO IF FILE WAS JUST CREATED
|
||||||
|
MB_FILPT1:
|
||||||
|
DW 0 ; [FILPTR] ALWAYS REFETCHED FROM HERE
|
||||||
|
|
||||||
|
|
||||||
|
; POINTERS TO DATA BLOCKS FOR EACH FILE
|
||||||
|
MB_FILPTR:
|
||||||
|
.16 DW 0x0000
|
||||||
|
|
||||||
|
; HIGHEST FILE NUMBER ALLOWED
|
||||||
|
MB_MAXFIL:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; THE NUMBER OF CHARACTER BEYOND #2 IN A VAR NAME
|
||||||
|
MB_NAMCNT:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_NAMBUF:
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
|
||||||
|
; TEMP STORAGE DURING NAME SAVE AT INDLOP
|
||||||
|
MB_NAMTMP:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
MB_FILNA2:
|
||||||
|
.16 DB 0x00
|
||||||
|
|
||||||
|
MB_FILNAM:
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||||
|
DB 0x00
|
||||||
|
|
||||||
|
|
||||||
|
MB_CPMVRN:
|
||||||
|
DB 0 ; CP/M Version Number (#0 is 2.x)
|
||||||
|
|
||||||
|
MB_CPMREA:
|
||||||
|
DB 0 ; CP/M Read Call
|
||||||
|
|
||||||
|
MB_CPMWRI:
|
||||||
|
DB 0 ; CP/M Write Call
|
||||||
|
|
||||||
|
MB_RST_INP: ; a colon for restarting input
|
||||||
|
DB ':'
|
||||||
|
|
||||||
|
MB_KBUF:
|
||||||
|
.(KBFLEN) DB 0x00
|
||||||
|
|
||||||
|
MB_BUFMIN:
|
||||||
|
DB 44
|
||||||
|
|
||||||
|
MB_BUF:
|
||||||
|
.256 DB 0x00
|
||||||
|
DB 0 ; ALLOW FOR SINGLE QUOTE IN BIG LINE
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_ENDBUF:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_TTYPOS:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_DIMFLG:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
;THE TYPE INDICATOR
|
||||||
|
MB_VALTYP:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
;OPERATOR NUMBER
|
||||||
|
MB_OPRTYP:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_DORES:
|
||||||
|
DB 0
|
||||||
|
MB_CONTXT:
|
||||||
|
DW 0
|
||||||
|
MB_CONSAV:
|
||||||
|
DB 0
|
||||||
|
MB_CONTYP:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; SAVED CONSTANT VALUE
|
||||||
|
MB_CONLO:
|
||||||
|
.4 DW 0
|
||||||
|
|
||||||
|
; HIGHEST LOCATION IN MEMORY
|
||||||
|
MB_MEMSIZ:
|
||||||
|
DW 0
|
||||||
|
; POINTER AT FIRST FREE TEMP DESCRIPTOR
|
||||||
|
MB_TEMPPT:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
MB_TEMPST:
|
||||||
|
.15 DB 0
|
||||||
|
;MB_DSCTMP:
|
||||||
|
.15 DB 0
|
||||||
|
|
||||||
|
; STRING FUNCTIONS BUILD ANSWER DESCRIPTOR HERE
|
||||||
|
MB_DSCTMP:
|
||||||
|
.3 DB 0
|
||||||
|
|
||||||
|
MB_DSCPTR EQU $ - 2
|
||||||
|
|
||||||
|
MB_FRETOP:
|
||||||
|
DW 0
|
||||||
|
MB_TEMP3:
|
||||||
|
DW 0
|
||||||
|
MB_CPMFIL:
|
||||||
|
DW 0
|
||||||
|
MB_ENDFOR:
|
||||||
|
DW 0
|
||||||
|
MB_DATLIN:
|
||||||
|
DW 0
|
||||||
|
MB_SUBFLG:
|
||||||
|
DB 0
|
||||||
|
MB_FLGINP:
|
||||||
|
DB 0
|
||||||
|
MB_TEMP:
|
||||||
|
DW 0
|
||||||
|
MB_PTRFLG:
|
||||||
|
DB 0
|
||||||
|
MB_AUTFLG:
|
||||||
|
DB 0
|
||||||
|
MB_AUTLIN:
|
||||||
|
DW 0
|
||||||
|
MB_AUTINC:
|
||||||
|
DW 0
|
||||||
|
MB_SAVTXT:
|
||||||
|
DW 0
|
||||||
|
MB_SAVSTK:
|
||||||
|
DW 0
|
||||||
|
MB_ERRLIN:
|
||||||
|
DW 0
|
||||||
|
MB_DOT:
|
||||||
|
DW 0
|
||||||
|
MB_ERRTXT:
|
||||||
|
DW 0
|
||||||
|
MB_ONELIN:
|
||||||
|
DW 0
|
||||||
|
MB_ONEFLG:
|
||||||
|
DB 0
|
||||||
|
MB_TEMP2:
|
||||||
|
DW 0
|
||||||
|
MB_OLDLIN:
|
||||||
|
DW 0
|
||||||
|
MB_OLDTXT:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; POINTER TO START OF SIMPLE VARIABLE SPACE
|
||||||
|
MB_VARTAB:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; POINTER TO BEGINNING OF ARRAY TABLE
|
||||||
|
MB_ARYTAB:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; END OF STORAGE IN USE
|
||||||
|
MB_STREND:
|
||||||
|
DW 0x00
|
||||||
|
|
||||||
|
MB_DATPTR:
|
||||||
|
DW 0x0
|
||||||
|
|
||||||
|
MB_DEFTBL:
|
||||||
|
.26 DB 0
|
||||||
|
|
||||||
|
; PREVIOUS DEFINITION BLOCK ON STACK
|
||||||
|
MB_PRMSTK:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; NUMBER OF BYTES IN THE ACTIVE TABLE
|
||||||
|
MB_PRMLEN:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; ACTIVE PARAMETER DEFINITION TABLE
|
||||||
|
MB_PARM1:
|
||||||
|
.100 DB 0
|
||||||
|
|
||||||
|
MB_PRMPRV:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
MB_PRMLN2:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
MB_PARM2:
|
||||||
|
.100 DB 0
|
||||||
|
|
||||||
|
MB_PRMFLG:
|
||||||
|
DB 0x00
|
||||||
|
|
||||||
|
MB_ARYTA2:
|
||||||
|
DW 0x0
|
||||||
|
|
||||||
|
; ZERO IF NO FUNCTIONS ACTIVE. SAVES TIME IN SIMPLE SEARCH
|
||||||
|
MB_NOFUNS:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; GARBAGE COLLECTION TEMP TO CHAIN THROUGH PARAMETER BLOCKS
|
||||||
|
MB_TEMP9:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
; COUNT OF ACTIVE FUNCTIONS
|
||||||
|
MB_FUNACT:
|
||||||
|
DW 0
|
||||||
|
|
||||||
|
MB_INPPAS:
|
||||||
|
DB 0
|
||||||
|
MB_NXTTXT:
|
||||||
|
DW 0
|
||||||
|
MB_NXTFLG:
|
||||||
|
DB 0
|
||||||
|
MB_FVALSV:
|
||||||
|
DW 0
|
||||||
|
DW 0
|
||||||
|
MB_NXTLIN:
|
||||||
|
DW 0
|
||||||
|
MB_OPTVAL:
|
||||||
|
DB 0
|
||||||
|
MB_OPTFLG:
|
||||||
|
DB 0
|
||||||
|
MB_PATCH:
|
||||||
|
.30 DB 0
|
||||||
|
|
||||||
|
MB_TEMPA:
|
||||||
|
DW 0
|
||||||
|
MB_SAVFRE:
|
||||||
|
DW 0
|
||||||
|
MB_MAXREC:
|
||||||
|
DW 0
|
||||||
|
MB_PROFLG:
|
||||||
|
DB 0
|
||||||
|
MB_MRGFLG:
|
||||||
|
DB 0
|
||||||
|
MB_MDLFLG:
|
||||||
|
DB 0
|
||||||
|
MB_CMEPTR:
|
||||||
|
DW 0
|
||||||
|
MB_CMSPTR:
|
||||||
|
DW 0
|
||||||
|
MB_CHNFLG:
|
||||||
|
DB 0
|
||||||
|
MB_CHNLIN:
|
||||||
|
DW 0
|
||||||
|
MB_SWPTMP:
|
||||||
|
DW 0, 0, 0, 0
|
||||||
|
MB_TRCFLG:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ===================================================
|
||||||
|
; THIS IS THE RAM TERMPORARY AREA FOR
|
||||||
|
; MATH PACKAGE ROUTINES
|
||||||
|
; ===================================================
|
||||||
|
|
||||||
|
|
||||||
|
MB_FLOAT_ACC:
|
||||||
|
DB 0 ; FLOATING ACCUMULATOR
|
||||||
|
|
||||||
|
MB_DFACLO:
|
||||||
|
DB 0, 0, 0, 0 ; FOUR LOWEST ORDERS FOR DOUBLE PRECISION
|
||||||
|
|
||||||
|
MB_FACLO:
|
||||||
|
DB 0, 0 ; MIDDLE ORDER OF MANTISSA
|
||||||
|
DB 0 ; HIGH ORDER OF MANTISSA
|
||||||
|
|
||||||
|
MB_FAC:
|
||||||
|
DB 0, 0 ; EXPONENT
|
||||||
|
|
||||||
|
MB_FLGOVC:
|
||||||
|
DB 0 ; OVERFLOW PRINT FLAG, =0, 1 PRINT
|
||||||
|
|
||||||
|
MB_OVCSTR:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_FANSII:
|
||||||
|
DB 0
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
MB_ARGLO:
|
||||||
|
.7 DB 0 ; LOCATION OF SECOND ARGUMENT FOR DOUBLE
|
||||||
|
MB_ARG:
|
||||||
|
DB 0 ; PRECISION
|
||||||
|
|
||||||
|
MB_FBUFFR:
|
||||||
|
.43 DB 0 ; BUFFER FOR FOUT
|
||||||
|
|
||||||
|
; ===================================================
|
||||||
|
; TEXT CONSTANTS FOR PRINT OUT
|
||||||
|
; ===================================================
|
||||||
|
|
||||||
|
MB_INTXT:
|
||||||
|
DB " in ", 0
|
||||||
|
|
||||||
|
MB_OKTXT:
|
||||||
|
DB "Ok\r\n", 0
|
||||||
|
|
||||||
|
MB_BRKTXT:
|
||||||
|
DB "Break", 0
|
||||||
964
v5.21/mb.asm
964
v5.21/mb.asm
File diff suppressed because it is too large
Load Diff
272
v5.21/reswords.inc
Normal file
272
v5.21/reswords.inc
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
; =============================================================================
|
||||||
|
; Source codes for Microsoft Basic-80 v5.21 for CP/M
|
||||||
|
;
|
||||||
|
; Reserved words definitions
|
||||||
|
;
|
||||||
|
; Disassembled by Romych and Ghidra @2026.08.27
|
||||||
|
; =============================================================================
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
; Reserved words table
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_RESLST:
|
||||||
|
|
||||||
|
MB_ATAB:
|
||||||
|
; ---------------------------------------------------
|
||||||
|
DB "UT", 'O' OR 0x80, _AUTO
|
||||||
|
DB 'N', 'D' OR 0x80, _AND
|
||||||
|
DB 'B', 'S' OR 0x80, _ABS - 0x80
|
||||||
|
DB 'T', 'N' OR 0x80, _ATN - 0x80
|
||||||
|
DB 'S', 'C' OR 0x80, _ASC - 0x80
|
||||||
|
DB 0
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_BTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_CTAB:
|
||||||
|
DB "LOS", 'E' OR 0x80, _CLOSE
|
||||||
|
DB "ON", 'T' OR 0x80, _CONT
|
||||||
|
DB "LEA", 'R' OR 0x80, _CLEAR
|
||||||
|
DB "IN", 'T' OR 0x80, _CINT - 0x80
|
||||||
|
DB "SN", 'G' OR 0x80, _CSNG - 0x80
|
||||||
|
DB "DB", 'L' OR 0x80, _CDBL - 0x80
|
||||||
|
DB 'V', 'I' OR 0x80, _CVI - 0x80
|
||||||
|
DB 'V', 'S' OR 0x80, _CVS - 0x80
|
||||||
|
DB 'V', 'D' OR 0x80, _CVD - 0x80
|
||||||
|
DB "O", 'S' OR 0x80, _COS - 0x80
|
||||||
|
DB "HR", '$' OR 0x80, _CHR_ - 0x80
|
||||||
|
DB "AL", 'L' OR 0x80, _CALL
|
||||||
|
DB "OMMO", 'N' OR 0x80, _COMMON
|
||||||
|
DB "HAI", 'N' OR 0x80, _CHAIN
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_DTAB:
|
||||||
|
DB "ELET", 'E' OR 0x80, _DELETE
|
||||||
|
DB "AT", 'A' OR 0x80, _DATA
|
||||||
|
DB 'I', 'M' OR 0x80, _DIM
|
||||||
|
DB "EFST", 'R' OR 0x80, _DEFSTR
|
||||||
|
DB "EFIN", 'T' OR 0x80, _DEFINT
|
||||||
|
DB "EFSN", 'G' OR 0x80, _DEFSNG
|
||||||
|
DB "EFDB", 'L' OR 0x80, _DEFDBL
|
||||||
|
DB 'E', 'F' OR 0x80, _DEF
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_ETAB:
|
||||||
|
DB "LS", 'E' OR 0x80, _ELSE
|
||||||
|
DB 'N', 'D' OR 0x80, _END
|
||||||
|
DB "RAS", 'E' OR 0x80, _ERASE
|
||||||
|
DB "DI", 'T' OR 0x80, _EDIT
|
||||||
|
DB "RRO", 'R' OR 0x80, _ERROR
|
||||||
|
DB 'R', 'L' OR 0x80, _ERL
|
||||||
|
DB 'R', 'R' OR 0x80, _ERR
|
||||||
|
DB 'X', 'P' OR 0x80, _EXP - 0x80
|
||||||
|
DB 'O', 'F' OR 0x80, _EOF - 0x80
|
||||||
|
DB 'Q', 'V' OR 0x80, _EQV
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_FTAB:
|
||||||
|
DB 'O', 'R' OR 0x80, _FOR
|
||||||
|
DB "IEL", 'D' OR 0x80, _FIELD
|
||||||
|
DB "ILE", 'S' OR 0x80, _FILES
|
||||||
|
DB 'N' OR 0x80, _FN
|
||||||
|
DB 'R', 'E' OR 0x80, _FRE - 0x80
|
||||||
|
DB 'I', 'X' OR 0x80, _FIX - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_GTAB:
|
||||||
|
DB "OT", 'O' OR 0x80, _GOTO
|
||||||
|
DB "O T", 'O' OR 0x80, _GOTO
|
||||||
|
DB "OSU", 'B' OR 0x80, _GOSUB
|
||||||
|
DB 'E', 'T' OR 0x80, _GET
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_HTAB:
|
||||||
|
DB "EX", '$' OR 0x80, _HEX_ - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_ITAB:
|
||||||
|
DB "NPU", 'T' OR 0x80, _INPUT
|
||||||
|
DB 'F' OR 0x80, _IF
|
||||||
|
DB "NST", 'R' OR 0x80, _INSTR
|
||||||
|
DB 'N', 'T' OR 0x80, _INT - 0x80
|
||||||
|
DB 'N', 'P' OR 0x80, _INP - 0x80
|
||||||
|
DB 'M', 'P' OR 0x80, _IMP
|
||||||
|
DB "NKEY", '$' OR 0x80, _INKEY
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_JTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_KTAB:
|
||||||
|
DB "IL", 'L' OR 0x80, _KILL
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_LTAB:
|
||||||
|
DB "PRIN", 'T' OR 0x80, _LPRINT
|
||||||
|
DB "LIS", 'T' OR 0x80, _LLIST
|
||||||
|
DB "PO", 'S' OR 0x80, _LPOS - 0x80
|
||||||
|
DB 'E', 'T' OR 0x80, _LET
|
||||||
|
DB "IN", 'E' OR 0x80, _LINE
|
||||||
|
DB "OA", 'D' OR 0x80, _LOAD
|
||||||
|
DB "SE", 'T' OR 0x80, _LSET
|
||||||
|
DB "IS", 'T' OR 0x80, _LIST
|
||||||
|
DB 'O', 'G' OR 0x80, _LOG - 0x80
|
||||||
|
DB 'O', 'C' OR 0x80, _LOC - 0x80
|
||||||
|
DB "E", 'N' OR 0x80, _LEN - 0x80
|
||||||
|
DB "EFT", '$' OR 0x80, _LEFT_ - 0x80
|
||||||
|
DB 'O', 'F' OR 0x80, _LOF - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_MTAB:
|
||||||
|
DB "ERG", 'E' OR 0x80, 0xC5
|
||||||
|
DB 'O', 'D' OR 0x80, 0xFC
|
||||||
|
DB "KI", '$' OR 0x80, _MKI_ - 0x80
|
||||||
|
DB "KS", '$' OR 0x80, _MKS_ - 0x80
|
||||||
|
DB "KD", '$' OR 0x80, _MKD_ - 0x80
|
||||||
|
DB "ID", '$' OR 0x80, _MID_ - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_NTAB:
|
||||||
|
DB "EX", 'T' OR 0x80, _NEXT
|
||||||
|
DB "UL", 'L' OR 0x80, _NULL
|
||||||
|
DB "AM", 'E' OR 0x80, _NAME
|
||||||
|
DB 'E', 'W' OR 0x80, _NEW
|
||||||
|
DB 'O', 'T' OR 0x80, _NOT
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_OTAB:
|
||||||
|
DB "PE", 'N' OR 0x80, _OPEN
|
||||||
|
DB 'U', 'T' OR 0x80, _OUT
|
||||||
|
DB 'N' OR 0x80, _ON
|
||||||
|
DB 'R' OR 0x80, _OR
|
||||||
|
DB "CT", '$' OR 0x80, _OCT_ - 0x80
|
||||||
|
DB "PTIO", 'N' OR 0x80, _OPTION
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_PTAB:
|
||||||
|
DB "RIN", 'T' OR 0x80, _PRINT
|
||||||
|
DB 'U', 'T' OR 0x80, _PUT
|
||||||
|
DB "OK", 'E' OR 0x80, _POKE
|
||||||
|
DB 'O', 'S' OR 0x80, _POS - 0x80
|
||||||
|
DB "EE", 'K' OR 0x80, _PEEK - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_QTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_RTAB:
|
||||||
|
DB "ETUR", 'N' OR 0x80, _RETUR
|
||||||
|
DB "EA", 'D' OR 0x80, _READ
|
||||||
|
DB 'U', 'N' OR 0x80, _RUN
|
||||||
|
DB "ESTOR", 'E' OR 0x80, _RESTORE
|
||||||
|
DB 'E', 'M' OR 0x80, _REM
|
||||||
|
DB "ESUM", 'E' OR 0x80, _RESUME
|
||||||
|
DB "SE", 'T' OR 0x80, _RSET
|
||||||
|
DB "IGHT", '$' OR 0x80, _RIGHT - 0x80
|
||||||
|
DB 'N', 'D' OR 0x80, _RND - 0x80
|
||||||
|
DB "ENU", 'M' OR 0x80, _RENUM
|
||||||
|
DB "ESE", 'T' OR 0x80, _RESET
|
||||||
|
DB "ANDOMIZ", 'E' OR 0x80, _RANDOMIZE
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_STAB:
|
||||||
|
DB "TO", 'P' OR 0x80, _STOP
|
||||||
|
DB "WA", 'P' OR 0x80, _SWAP
|
||||||
|
DB "AV", 'E' OR 0x80, _SAVE
|
||||||
|
DB "PC", '(' OR 0x80, _SPC
|
||||||
|
DB "TE", 'P' OR 0x80, _STEP
|
||||||
|
DB 'G', 'N' OR 0x80, _SGN - 0x80
|
||||||
|
DB 'Q', 'R' OR 0x80, _SQR - 0x80
|
||||||
|
DB 'I', 'N' OR 0x80, _SIN - 0x80
|
||||||
|
DB "TR", '$' OR 0x80, _STR_- 0x80
|
||||||
|
DB "TRING", '$' OR 0x80, _STRIN
|
||||||
|
DB "PACE", '$' OR 0x80, _SPACE - 0x80
|
||||||
|
DB "YSTE", 'M' OR 0x80, _SYSTE
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_TTAB:
|
||||||
|
DB "HE", 'N' OR 0x80, _THEN
|
||||||
|
DB "RO", 'N' OR 0x80, _TRON
|
||||||
|
DB "ROF", 'F' OR 0x80, _TROFF
|
||||||
|
DB "AB", '(' OR 0x80, _TAB
|
||||||
|
DB 'O' OR 0x80, _TO
|
||||||
|
DB 'A', 'N' OR 0x80, _TAN - 0x80
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_UTAB:
|
||||||
|
DB "SIN", 'G' OR 0x80, _USING
|
||||||
|
DB 'S', 'R' OR 0x80, _USR
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_VTAB:
|
||||||
|
DB 'A', 'L' OR 0x80, _VAL - 0x80
|
||||||
|
DB "ARPT", 'R' OR 0x80, _VARPTR
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_WTAB:
|
||||||
|
DB "IDT", 'H' OR 0x80, _WIDTH
|
||||||
|
DB "AI", 'T' OR 0x80, _WAIT
|
||||||
|
DB "HIL", 'E' OR 0x80, _WHILE
|
||||||
|
DB "EN", 'D' OR 0x80, _WEND
|
||||||
|
DB "RIT", 'E' OR 0x80, _WRITE
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_XTAB:
|
||||||
|
DB 'O', 'R' OR 0x80, _XOR
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_YTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_ZTAB:
|
||||||
|
DB 0
|
||||||
|
|
||||||
|
; ---------------------------------------------------
|
||||||
|
;
|
||||||
|
; ---------------------------------------------------
|
||||||
|
MB_SPCTAB:
|
||||||
|
DB '+' OR 0x80
|
||||||
|
DB PLUSTK
|
||||||
|
DB '-' OR 0x80
|
||||||
|
DB MINUTK
|
||||||
|
DB '*' OR 0x80
|
||||||
|
DB MULTK
|
||||||
|
DB '/' OR 0x80
|
||||||
|
DB DIVTK
|
||||||
|
DB '^' OR 0x80
|
||||||
|
DB EXPTK
|
||||||
|
DB ASCII_BKSL OR 0x80
|
||||||
|
DB IDIVTK
|
||||||
|
DB '''' OR 0x80
|
||||||
|
DB SNGQTK
|
||||||
|
DB '>' OR 0x80
|
||||||
|
DB GREATK
|
||||||
|
DB '=' OR 0x80
|
||||||
|
DB EQULTK
|
||||||
|
DB '<' OR 0x80
|
||||||
|
DB LESSTK
|
||||||
|
DB 0
|
||||||
Loading…
Reference in New Issue
Block a user