mirror of
https://github.com/mist64/msbasic.git
synced 2024-09-21 02:27:33 +00:00
separated out token and error tables
This commit is contained in:
parent
c4f4578d97
commit
d38b698496
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
48
error.s
Normal file
48
error.s
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
init_error_table
|
||||||
|
|
||||||
|
.ifdef CONFIG_SMALL
|
||||||
|
define_error ERR_NOFOR, "NF"
|
||||||
|
define_error ERR_SYNTAX, "SN"
|
||||||
|
define_error ERR_NOGOSUB, "RG"
|
||||||
|
define_error ERR_NODATA, "OD"
|
||||||
|
define_error ERR_ILLQTY, "FC"
|
||||||
|
define_error ERR_OVERFLOW, "OV"
|
||||||
|
define_error ERR_MEMFULL, "OM"
|
||||||
|
define_error ERR_UNDEFSTAT, "US"
|
||||||
|
define_error ERR_BADSUBS, "BS"
|
||||||
|
define_error ERR_REDIMD, "DD"
|
||||||
|
define_error ERR_ZERODIV, "/0"
|
||||||
|
define_error ERR_ILLDIR, "ID"
|
||||||
|
define_error ERR_BADTYPE, "TM"
|
||||||
|
define_error ERR_STRLONG, "LS"
|
||||||
|
define_error ERR_FRMCPX, "ST"
|
||||||
|
define_error ERR_CANTCONT, "CN"
|
||||||
|
define_error ERR_UNDEFFN, "UF"
|
||||||
|
.else
|
||||||
|
define_error ERR_NOFOR, "NEXT WITHOUT FOR"
|
||||||
|
define_error ERR_SYNTAX, "SYNTAX"
|
||||||
|
define_error ERR_NOGOSUB, "RETURN WITHOUT GOSUB"
|
||||||
|
define_error ERR_NODATA, "OUT OF DATA"
|
||||||
|
define_error ERR_ILLQTY, "ILLEGAL QUANTITY"
|
||||||
|
.ifdef CBM1
|
||||||
|
.byte 0,0,0,0,0
|
||||||
|
.endif
|
||||||
|
define_error ERR_OVERFLOW, "OVERFLOW"
|
||||||
|
define_error ERR_MEMFULL, "OUT OF MEMORY"
|
||||||
|
define_error ERR_UNDEFSTAT, "UNDEF'D STATEMENT"
|
||||||
|
define_error ERR_BADSUBS, "BAD SUBSCRIPT"
|
||||||
|
define_error ERR_REDIMD, "REDIM'D ARRAY"
|
||||||
|
define_error ERR_ZERODIV, "DIVISION BY ZERO"
|
||||||
|
define_error ERR_ILLDIR, "ILLEGAL DIRECT"
|
||||||
|
define_error ERR_BADTYPE, "TYPE MISMATCH"
|
||||||
|
define_error ERR_STRLONG, "STRING TOO LONG"
|
||||||
|
.ifdef CBM1
|
||||||
|
define_error ERR_BADDATA, "BAD DATA"
|
||||||
|
.endif
|
||||||
|
.ifdef CBM2
|
||||||
|
define_error ERR_BADDATA, "FILE DATA"
|
||||||
|
.endif
|
||||||
|
define_error ERR_FRMCPX, "FORMULA TOO COMPLEX"
|
||||||
|
define_error ERR_CANTCONT, "CAN'T CONTINUE"
|
||||||
|
define_error ERR_UNDEFFN, "UNDEF'D FUNCTION"
|
||||||
|
.endif
|
1
kb9.cfg
1
kb9.cfg
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
10
macros.s
10
macros.s
@ -57,6 +57,16 @@ DUMMY_START:
|
|||||||
NUM_TOKENS := <(*-DUMMY_START)
|
NUM_TOKENS := <(*-DUMMY_START)
|
||||||
.endmacro
|
.endmacro
|
||||||
|
|
||||||
|
.macro init_error_table
|
||||||
|
.segment "ERROR"
|
||||||
|
ERROR_MESSAGES:
|
||||||
|
.endmacro
|
||||||
|
|
||||||
|
.macro define_error error, msg
|
||||||
|
.segment "ERROR"
|
||||||
|
error := <(*-ERROR_MESSAGES)
|
||||||
|
htasc msg
|
||||||
|
.endmacro
|
||||||
|
|
||||||
;---------------------------------------------
|
;---------------------------------------------
|
||||||
; set the MSB of every byte of a string
|
; set the MSB of every byte of a string
|
||||||
|
267
msbasic.s
267
msbasic.s
@ -60,261 +60,12 @@ STACK := $0100
|
|||||||
.byte $00,$13,$56
|
.byte $00,$13,$56
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
init_token_tables
|
.include "token.s"
|
||||||
|
|
||||||
keyword_rts "END", END
|
.include "error.s"
|
||||||
keyword_rts "FOR", FOR
|
|
||||||
keyword_rts "NEXT", NEXT
|
|
||||||
keyword_rts "DATA", DATA
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
keyword_rts "INPUT#", INPUTH
|
|
||||||
.endif
|
|
||||||
keyword_rts "INPUT", INPUT
|
|
||||||
keyword_rts "DIM", DIM
|
|
||||||
keyword_rts "READ", READ
|
|
||||||
.ifdef APPLE
|
|
||||||
keyword_rts "PLT", PLT
|
|
||||||
.else
|
|
||||||
keyword_rts "LET", LET
|
|
||||||
.endif
|
|
||||||
keyword_rts "GOTO", GOTO, TOKEN_GOTO
|
|
||||||
keyword_rts "RUN", RUN
|
|
||||||
keyword_rts "IF", IF
|
|
||||||
keyword_rts "RESTORE", RESTORE
|
|
||||||
keyword_rts "GOSUB", GOSUB, TOKEN_GOSUB
|
|
||||||
keyword_rts "RETURN", POP
|
|
||||||
.ifdef APPLE
|
|
||||||
keyword_rts "TEX", TEX, TOKEN_REM
|
|
||||||
.else
|
|
||||||
keyword_rts "REM", REM, TOKEN_REM
|
|
||||||
.endif
|
|
||||||
keyword_rts "STOP", STOP
|
|
||||||
keyword_rts "ON", ON
|
|
||||||
.ifdef CONFIG_NULL
|
|
||||||
keyword_rts "NULL", NULL
|
|
||||||
.endif
|
|
||||||
.ifdef KBD
|
|
||||||
keyword_rts "PLOD", PLOD
|
|
||||||
keyword_rts "PSAV", PSAV
|
|
||||||
keyword_rts "VLOD", VLOD
|
|
||||||
keyword_rts "VSAV", VSAV
|
|
||||||
.else
|
|
||||||
keyword_rts "WAIT", WAIT
|
|
||||||
keyword_rts "LOAD", LOAD
|
|
||||||
keyword_rts "SAVE", SAVE
|
|
||||||
.endif
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
keyword_rts "VERIFY", VERIFY
|
|
||||||
.endif
|
|
||||||
keyword_rts "DEF", DEF
|
|
||||||
.ifdef KBD
|
|
||||||
keyword_rts "SLOD", SLOD
|
|
||||||
.else
|
|
||||||
keyword_rts "POKE", POKE
|
|
||||||
.endif
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
keyword_rts "PRINT#", PRINTH
|
|
||||||
.endif
|
|
||||||
keyword_rts "PRINT", PRINT, TOKEN_PRINT
|
|
||||||
keyword_rts "CONT", CONT
|
|
||||||
keyword_rts "LIST", LIST
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
keyword_rts "CLR", CLEAR
|
|
||||||
.else
|
|
||||||
keyword_rts "CLEAR", CLEAR
|
|
||||||
.endif
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
keyword_rts "CMD", CMD
|
|
||||||
keyword_rts "SYS", SYS
|
|
||||||
keyword_rts "OPEN", OPEN
|
|
||||||
keyword_rts "CLOSE", CLOSE
|
|
||||||
.endif
|
|
||||||
.ifndef CONFIG_SMALL
|
|
||||||
keyword_rts "GET", GET
|
|
||||||
.endif
|
|
||||||
.ifdef KBD
|
|
||||||
keyword_rts "PRT", PRT
|
|
||||||
.endif
|
|
||||||
keyword_rts "NEW", NEW
|
|
||||||
|
|
||||||
count_tokens
|
.segment "CODE"
|
||||||
|
|
||||||
keyword "TAB(", TOKEN_TAB
|
|
||||||
keyword "TO", TOKEN_TO
|
|
||||||
keyword "FN", TOKEN_FN
|
|
||||||
keyword "SPC(", TOKEN_SPC
|
|
||||||
keyword "THEN", TOKEN_THEN
|
|
||||||
keyword "NOT", TOKEN_NOT
|
|
||||||
keyword "STEP", TOKEN_STEP
|
|
||||||
keyword "+", TOKEN_PLUS
|
|
||||||
keyword "-", TOKEN_MINUS
|
|
||||||
keyword "*"
|
|
||||||
keyword "/"
|
|
||||||
.ifdef KBD
|
|
||||||
keyword "#"
|
|
||||||
.else
|
|
||||||
keyword "^"
|
|
||||||
.endif
|
|
||||||
keyword "AND"
|
|
||||||
keyword "OR"
|
|
||||||
keyword ">", TOKEN_GREATER
|
|
||||||
keyword "=", TOKEN_EQUAL
|
|
||||||
keyword "<"
|
|
||||||
|
|
||||||
.segment "VECTORS"
|
|
||||||
UNFNC:
|
|
||||||
|
|
||||||
keyword_addr "SGN", SGN, TOKEN_SGN
|
|
||||||
keyword_addr "INT", INT
|
|
||||||
keyword_addr "ABS", ABS
|
|
||||||
.ifdef KBD
|
|
||||||
keyword_addr "VER", VER
|
|
||||||
.else
|
|
||||||
.ifdef KIM
|
|
||||||
keyword_addr "USR", IQERR
|
|
||||||
.else
|
|
||||||
keyword_addr "USR", USR
|
|
||||||
.endif
|
|
||||||
.endif
|
|
||||||
keyword_addr "FRE", FRE
|
|
||||||
keyword_addr "POS", POS
|
|
||||||
keyword_addr "SQR", SQR
|
|
||||||
keyword_addr "RND", RND
|
|
||||||
keyword_addr "LOG", LOG
|
|
||||||
keyword_addr "EXP", EXP
|
|
||||||
keyword_addr "COS", COS
|
|
||||||
keyword_addr "SIN", SIN
|
|
||||||
keyword_addr "TAN", TAN
|
|
||||||
keyword_addr "ATN", ATN
|
|
||||||
.ifdef KBD
|
|
||||||
keyword_addr "GETC", GETC
|
|
||||||
.else
|
|
||||||
keyword_addr "PEEK", PEEK
|
|
||||||
.endif
|
|
||||||
keyword_addr "LEN", LEN
|
|
||||||
keyword_addr "STR$", STR
|
|
||||||
keyword_addr "VAL", VAL
|
|
||||||
keyword_addr "ASC", ASC
|
|
||||||
keyword_addr "CHR$", CHRSTR
|
|
||||||
keyword_addr "LEFT$", LEFTSTR, TOKEN_LEFTSTR
|
|
||||||
keyword_addr "RIGHT$", RIGHTSTR
|
|
||||||
keyword_addr "MID$", MIDSTR
|
|
||||||
.ifdef CBM2_KBD
|
|
||||||
keyword "GO"
|
|
||||||
.endif
|
|
||||||
.segment "KEYWORDS"
|
|
||||||
.byte 0
|
|
||||||
|
|
||||||
.segment "VECTORS"
|
|
||||||
MATHTBL:
|
|
||||||
.byte $79
|
|
||||||
.word FADDT-1
|
|
||||||
.byte $79
|
|
||||||
.word FSUBT-1
|
|
||||||
.byte $7B
|
|
||||||
.word FMULTT-1
|
|
||||||
.byte $7B
|
|
||||||
.word FDIVT-1
|
|
||||||
.byte $7F
|
|
||||||
.word FPWRT-1
|
|
||||||
.byte $50
|
|
||||||
.word TAND-1
|
|
||||||
.byte $46
|
|
||||||
.word OR-1
|
|
||||||
.byte $7D
|
|
||||||
.word NEGOP-1
|
|
||||||
.byte $5A
|
|
||||||
.word EQUOP-1
|
|
||||||
.byte $64
|
|
||||||
.word RELOPS-1
|
|
||||||
|
|
||||||
.segment "CODE"
|
|
||||||
ERROR_MESSAGES:
|
|
||||||
.ifdef CONFIG_SMALL
|
|
||||||
.define ERRSTR_NOFOR "NF"
|
|
||||||
.define ERRSTR_SYNTAX "SN"
|
|
||||||
.define ERRSTR_NOGOSUB "RG"
|
|
||||||
.define ERRSTR_NODATA "OD"
|
|
||||||
.define ERRSTR_ILLQTY "FC"
|
|
||||||
.define ERRSTR_OVERFLOW "OV"
|
|
||||||
.define ERRSTR_MEMFULL "OM"
|
|
||||||
.define ERRSTR_UNDEFSTAT "US"
|
|
||||||
.define ERRSTR_BADSUBS "BS"
|
|
||||||
.define ERRSTR_REDIMD "DD"
|
|
||||||
.define ERRSTR_ZERODIV "/0"
|
|
||||||
.define ERRSTR_ILLDIR "ID"
|
|
||||||
.define ERRSTR_BADTYPE "TM"
|
|
||||||
.define ERRSTR_STRLONG "LS"
|
|
||||||
.define ERRSTR_FRMCPX "ST"
|
|
||||||
.define ERRSTR_CANTCONT "CN"
|
|
||||||
.define ERRSTR_UNDEFFN "UF"
|
|
||||||
.else
|
|
||||||
.define ERRSTR_NOFOR "NEXT WITHOUT FOR"
|
|
||||||
.define ERRSTR_SYNTAX "SYNTAX"
|
|
||||||
.define ERRSTR_NOGOSUB "RETURN WITHOUT GOSUB"
|
|
||||||
.define ERRSTR_NODATA "OUT OF DATA"
|
|
||||||
.define ERRSTR_ILLQTY "ILLEGAL QUANTITY"
|
|
||||||
.define ERRSTR_OVERFLOW "OVERFLOW"
|
|
||||||
.define ERRSTR_MEMFULL "OUT OF MEMORY"
|
|
||||||
.define ERRSTR_UNDEFSTAT "UNDEF'D STATEMENT"
|
|
||||||
.define ERRSTR_BADSUBS "BAD SUBSCRIPT"
|
|
||||||
.define ERRSTR_REDIMD "REDIM'D ARRAY"
|
|
||||||
.define ERRSTR_ZERODIV "DIVISION BY ZERO"
|
|
||||||
.define ERRSTR_ILLDIR "ILLEGAL DIRECT"
|
|
||||||
.define ERRSTR_BADTYPE "TYPE MISMATCH"
|
|
||||||
.define ERRSTR_STRLONG "STRING TOO LONG"
|
|
||||||
.ifdef CBM1
|
|
||||||
.define ERRSTR_BADDATA "BAD DATA"
|
|
||||||
.endif
|
|
||||||
.ifdef CBM2
|
|
||||||
.define ERRSTR_BADDATA "FILE DATA"
|
|
||||||
.endif
|
|
||||||
.define ERRSTR_FRMCPX "FORMULA TOO COMPLEX"
|
|
||||||
.define ERRSTR_CANTCONT "CAN'T CONTINUE"
|
|
||||||
.define ERRSTR_UNDEFFN "UNDEF'D FUNCTION"
|
|
||||||
.endif
|
|
||||||
|
|
||||||
ERR_NOFOR := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_NOFOR
|
|
||||||
ERR_SYNTAX := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_SYNTAX
|
|
||||||
ERR_NOGOSUB := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_NOGOSUB
|
|
||||||
ERR_NODATA := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_NODATA
|
|
||||||
ERR_ILLQTY := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_ILLQTY
|
|
||||||
.ifdef CBM1
|
|
||||||
.byte 0,0,0,0,0
|
|
||||||
.endif
|
|
||||||
ERR_OVERFLOW := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_OVERFLOW
|
|
||||||
ERR_MEMFULL := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_MEMFULL
|
|
||||||
ERR_UNDEFSTAT := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_UNDEFSTAT
|
|
||||||
ERR_BADSUBS := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_BADSUBS
|
|
||||||
ERR_REDIMD := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_REDIMD
|
|
||||||
ERR_ZERODIV := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_ZERODIV
|
|
||||||
ERR_ILLDIR := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_ILLDIR
|
|
||||||
ERR_BADTYPE := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_BADTYPE
|
|
||||||
ERR_STRLONG := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_STRLONG
|
|
||||||
.ifdef CONFIG_CBM_ALL
|
|
||||||
ERR_BADDATA := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_BADDATA
|
|
||||||
.endif
|
|
||||||
ERR_FRMCPX := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_FRMCPX
|
|
||||||
ERR_CANTCONT := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_CANTCONT
|
|
||||||
ERR_UNDEFFN := <(*-ERROR_MESSAGES)
|
|
||||||
htasc ERRSTR_UNDEFFN
|
|
||||||
QT_ERROR:
|
QT_ERROR:
|
||||||
.ifdef KBD
|
.ifdef KBD
|
||||||
.byte " err"
|
.byte " err"
|
||||||
@ -1863,6 +1614,18 @@ L28BE:
|
|||||||
sta INDEX
|
sta INDEX
|
||||||
cmp #$19
|
cmp #$19
|
||||||
bcs L28A0
|
bcs L28A0
|
||||||
|
; <<<<<DANGEROUS CODE>>>>>
|
||||||
|
; NOTE THAT IF (A) = $AB ON THE LINE ABOVE,
|
||||||
|
; ON.1 WILL COMPARE = AND CAUSE A CATASTROPHIC
|
||||||
|
; JUMP TO $22D9 (FOR GOTO), OR OTHER LOCATIONS
|
||||||
|
; FOR OTHER CALLS TO LINGET.
|
||||||
|
;
|
||||||
|
; YOU CAN SEE THIS IS YOU FIRST PUT "BRK" IN $22D9,
|
||||||
|
; THEN TYPE "GO TO 437761".
|
||||||
|
;
|
||||||
|
; ANY VALUE FROM 437760 THROUGH 440319 WILL CAUSE
|
||||||
|
; THE PROBLEM. ($AB00 - $ABFF)
|
||||||
|
; <<<<<DANGEROUS CODE>>>>>
|
||||||
lda LINNUM
|
lda LINNUM
|
||||||
asl a
|
asl a
|
||||||
rol INDEX
|
rol INDEX
|
||||||
|
1
osi.cfg
1
osi.cfg
@ -9,6 +9,7 @@ SEGMENTS {
|
|||||||
HEADER: load = BASROM, type = ro;
|
HEADER: load = BASROM, type = ro;
|
||||||
VECTORS: load = BASROM, type = ro;
|
VECTORS: load = BASROM, type = ro;
|
||||||
KEYWORDS: load = BASROM, type = ro;
|
KEYWORDS: load = BASROM, type = ro;
|
||||||
|
ERROR: load = BASROM, type = ro;
|
||||||
CODE: load = BASROM, type = ro;
|
CODE: load = BASROM, type = ro;
|
||||||
CHRGET: load = BASROM, type = ro;
|
CHRGET: load = BASROM, type = ro;
|
||||||
INIT: load = BASROM, type = ro;
|
INIT: load = BASROM, type = ro;
|
||||||
|
167
token.s
Normal file
167
token.s
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
init_token_tables
|
||||||
|
|
||||||
|
keyword_rts "END", END
|
||||||
|
keyword_rts "FOR", FOR
|
||||||
|
keyword_rts "NEXT", NEXT
|
||||||
|
keyword_rts "DATA", DATA
|
||||||
|
.ifdef CONFIG_CBM_ALL
|
||||||
|
keyword_rts "INPUT#", INPUTH
|
||||||
|
.endif
|
||||||
|
keyword_rts "INPUT", INPUT
|
||||||
|
keyword_rts "DIM", DIM
|
||||||
|
keyword_rts "READ", READ
|
||||||
|
.ifdef APPLE
|
||||||
|
keyword_rts "PLT", PLT
|
||||||
|
.else
|
||||||
|
keyword_rts "LET", LET
|
||||||
|
.endif
|
||||||
|
keyword_rts "GOTO", GOTO, TOKEN_GOTO
|
||||||
|
keyword_rts "RUN", RUN
|
||||||
|
keyword_rts "IF", IF
|
||||||
|
keyword_rts "RESTORE", RESTORE
|
||||||
|
keyword_rts "GOSUB", GOSUB, TOKEN_GOSUB
|
||||||
|
keyword_rts "RETURN", POP
|
||||||
|
.ifdef APPLE
|
||||||
|
keyword_rts "TEX", TEX, TOKEN_REM
|
||||||
|
.else
|
||||||
|
keyword_rts "REM", REM, TOKEN_REM
|
||||||
|
.endif
|
||||||
|
keyword_rts "STOP", STOP
|
||||||
|
keyword_rts "ON", ON
|
||||||
|
.ifdef CONFIG_NULL
|
||||||
|
keyword_rts "NULL", NULL
|
||||||
|
.endif
|
||||||
|
.ifdef KBD
|
||||||
|
keyword_rts "PLOD", PLOD
|
||||||
|
keyword_rts "PSAV", PSAV
|
||||||
|
keyword_rts "VLOD", VLOD
|
||||||
|
keyword_rts "VSAV", VSAV
|
||||||
|
.else
|
||||||
|
keyword_rts "WAIT", WAIT
|
||||||
|
keyword_rts "LOAD", LOAD
|
||||||
|
keyword_rts "SAVE", SAVE
|
||||||
|
.endif
|
||||||
|
.ifdef CONFIG_CBM_ALL
|
||||||
|
keyword_rts "VERIFY", VERIFY
|
||||||
|
.endif
|
||||||
|
keyword_rts "DEF", DEF
|
||||||
|
.ifdef KBD
|
||||||
|
keyword_rts "SLOD", SLOD
|
||||||
|
.else
|
||||||
|
keyword_rts "POKE", POKE
|
||||||
|
.endif
|
||||||
|
.ifdef CONFIG_CBM_ALL
|
||||||
|
keyword_rts "PRINT#", PRINTH
|
||||||
|
.endif
|
||||||
|
keyword_rts "PRINT", PRINT, TOKEN_PRINT
|
||||||
|
keyword_rts "CONT", CONT
|
||||||
|
keyword_rts "LIST", LIST
|
||||||
|
.ifdef CONFIG_CBM_ALL
|
||||||
|
keyword_rts "CLR", CLEAR
|
||||||
|
.else
|
||||||
|
keyword_rts "CLEAR", CLEAR
|
||||||
|
.endif
|
||||||
|
.ifdef CONFIG_CBM_ALL
|
||||||
|
keyword_rts "CMD", CMD
|
||||||
|
keyword_rts "SYS", SYS
|
||||||
|
keyword_rts "OPEN", OPEN
|
||||||
|
keyword_rts "CLOSE", CLOSE
|
||||||
|
.endif
|
||||||
|
.ifndef CONFIG_SMALL
|
||||||
|
keyword_rts "GET", GET
|
||||||
|
.endif
|
||||||
|
.ifdef KBD
|
||||||
|
keyword_rts "PRT", PRT
|
||||||
|
.endif
|
||||||
|
keyword_rts "NEW", NEW
|
||||||
|
|
||||||
|
count_tokens
|
||||||
|
|
||||||
|
keyword "TAB(", TOKEN_TAB
|
||||||
|
keyword "TO", TOKEN_TO
|
||||||
|
keyword "FN", TOKEN_FN
|
||||||
|
keyword "SPC(", TOKEN_SPC
|
||||||
|
keyword "THEN", TOKEN_THEN
|
||||||
|
keyword "NOT", TOKEN_NOT
|
||||||
|
keyword "STEP", TOKEN_STEP
|
||||||
|
keyword "+", TOKEN_PLUS
|
||||||
|
keyword "-", TOKEN_MINUS
|
||||||
|
keyword "*"
|
||||||
|
keyword "/"
|
||||||
|
.ifdef KBD
|
||||||
|
keyword "#"
|
||||||
|
.else
|
||||||
|
keyword "^"
|
||||||
|
.endif
|
||||||
|
keyword "AND"
|
||||||
|
keyword "OR"
|
||||||
|
keyword ">", TOKEN_GREATER
|
||||||
|
keyword "=", TOKEN_EQUAL
|
||||||
|
keyword "<"
|
||||||
|
|
||||||
|
.segment "VECTORS"
|
||||||
|
UNFNC:
|
||||||
|
|
||||||
|
keyword_addr "SGN", SGN, TOKEN_SGN
|
||||||
|
keyword_addr "INT", INT
|
||||||
|
keyword_addr "ABS", ABS
|
||||||
|
.ifdef KBD
|
||||||
|
keyword_addr "VER", VER
|
||||||
|
.else
|
||||||
|
.ifdef KIM
|
||||||
|
keyword_addr "USR", IQERR
|
||||||
|
.else
|
||||||
|
keyword_addr "USR", USR
|
||||||
|
.endif
|
||||||
|
.endif
|
||||||
|
keyword_addr "FRE", FRE
|
||||||
|
keyword_addr "POS", POS
|
||||||
|
keyword_addr "SQR", SQR
|
||||||
|
keyword_addr "RND", RND
|
||||||
|
keyword_addr "LOG", LOG
|
||||||
|
keyword_addr "EXP", EXP
|
||||||
|
keyword_addr "COS", COS
|
||||||
|
keyword_addr "SIN", SIN
|
||||||
|
keyword_addr "TAN", TAN
|
||||||
|
keyword_addr "ATN", ATN
|
||||||
|
.ifdef KBD
|
||||||
|
keyword_addr "GETC", GETC
|
||||||
|
.else
|
||||||
|
keyword_addr "PEEK", PEEK
|
||||||
|
.endif
|
||||||
|
keyword_addr "LEN", LEN
|
||||||
|
keyword_addr "STR$", STR
|
||||||
|
keyword_addr "VAL", VAL
|
||||||
|
keyword_addr "ASC", ASC
|
||||||
|
keyword_addr "CHR$", CHRSTR
|
||||||
|
keyword_addr "LEFT$", LEFTSTR, TOKEN_LEFTSTR
|
||||||
|
keyword_addr "RIGHT$", RIGHTSTR
|
||||||
|
keyword_addr "MID$", MIDSTR
|
||||||
|
.ifdef CBM2_KBD
|
||||||
|
keyword "GO"
|
||||||
|
.endif
|
||||||
|
.segment "KEYWORDS"
|
||||||
|
.byte 0
|
||||||
|
|
||||||
|
.segment "VECTORS"
|
||||||
|
MATHTBL:
|
||||||
|
.byte $79
|
||||||
|
.word FADDT-1
|
||||||
|
.byte $79
|
||||||
|
.word FSUBT-1
|
||||||
|
.byte $7B
|
||||||
|
.word FMULTT-1
|
||||||
|
.byte $7B
|
||||||
|
.word FDIVT-1
|
||||||
|
.byte $7F
|
||||||
|
.word FPWRT-1
|
||||||
|
.byte $50
|
||||||
|
.word TAND-1
|
||||||
|
.byte $46
|
||||||
|
.word OR-1
|
||||||
|
.byte $7D
|
||||||
|
.word NEGOP-1
|
||||||
|
.byte $5A
|
||||||
|
.word EQUOP-1
|
||||||
|
.byte $64
|
||||||
|
.word RELOPS-1
|
Loading…
Reference in New Issue
Block a user