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

431 lines
8.4 KiB
PHP

; =============================================================================
; 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 ; OR
DB 70 ; AND
DB 60 ; XOR
DB 50 ; EQV
DB 40 ; IMP
DB 122 ; MOD
DB 123 ; 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
include "errors.inc"
; ---------------------------------------------------
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:
.38 DB 0x00
; TEMP STORAGE DURING NAME SAVE AT INDLOP
MB_NAMTMP:
DW 0
MB_FILNA2:
.16 DB 0x00
MB_FILNAM:
.33 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