This commit is contained in:
Michael Steil 2008-10-07 05:51:08 +00:00
parent e0e14c51d7
commit 8061532c87
3 changed files with 182 additions and 98 deletions

View File

@ -1,3 +1,4 @@
.ifdef CBM1
Z00 := $0000
L0001 := $0001
L0002 := $0002
@ -5,89 +6,167 @@ GOWARM := $0003
Z03 := $0003 ; same
GOSTROUT := $0006
GOGIVEAYF := $0008
CHARAC := $005A;
ENDCHR := $005B;;
CHARAC := $005A
ENDCHR := $005B
EOLPNTR := $005C
DIMFLG := $005D;;
VALTYP := $005E;;
DATAFLG := $0060;;
SUBFLG := $0061;;
INPUTFLG := $0062;;
CPRMASK := $0063;;
DIMFLG := $005D
VALTYP := $005E
DATAFLG := $0060
SUBFLG := $0061
INPUTFLG := $0062
CPRMASK := $0063
Z14 := $0064 ; Ctrl+O flag
Z15 := $0004;;
Z16 := $0005;;
Z15 := $0004
Z16 := $0005
Z17 := $0006
Z18 := $0007
LINNUM := $0008;;
LINNUM := $0008
INPUTBUFFER := $000A
TEMPPT := $0065;;
LASTPT := $0066;
INDEX := $0071;;
DEST := $0073;
RESULT := $0075;
RESULT_LAST := $0079;
TXTTAB := $007A;
VARTAB := $007C;
ARYTAB := $007E;
STREND := $0080;;
FRETOP := $0082;;
FRESPC := $0084;
MEMSIZ := $0086;
CURLIN := $0088;
OLDLIN := $008A;
OLDTEXT := $008C;
Z8C := $008E;
DATPTR := $0090;
INPTR := $0092;
VARNAM := $0094;
VARPNT := $0096;;
FORPNT := $0098;;
LASTOP := $009A;
CPRTYP := $009C;
FNCNAM := $009D;
TEMPPT := $0065
LASTPT := $0066
INDEX := $0071
DEST := $0073
RESULT := $0075
RESULT_LAST := $0079
TXTTAB := $007A
VARTAB := $007C
ARYTAB := $007E
STREND := $0080
FRETOP := $0082
FRESPC := $0084
MEMSIZ := $0086
CURLIN := $0088
OLDLIN := $008A
OLDTEXT := $008C
Z8C := $008E
DATPTR := $0090
INPTR := $0092
VARNAM := $0094
VARPNT := $0096
FORPNT := $0098
LASTOP := $009A
CPRTYP := $009C
FNCNAM := $009D
TEMP3 := $009D; ; same
DSCPTR := $009F;
DSCLEN := $00A2;
JMPADRS := $00A3;
TEMPX := $00A4;
ARGEXTENSION := $00A5; ; overlap with JMPADRS! (same on c64)
TEMP1 := $00A6;;
HIGHDS := $00A7;;
HIGHTR := $00A9;;
TEMP2 := $00AB;
INDX := $00AC;
TMPEXP := $00AC; ; same
EXPON := $00AD;
LOWTR := $00AE;; ; $9D also EXPSGN
EXPSGN := $00AF;;
FAC := $00B0;
FAC_LAST := $00B4;
FACSIGN := $00B5;
SERLEN := $00B6;
SHIFTSIGNEXT := $00B7;
ARG := $00B8;
ARG_LAST := $00BC;
ARGSIGN := $00BD;
STRNG1 := $00BE; ; TODO: also SGNCPR
FACEXTENSION := $00BF;
STRNG2 := $00C0;
CHRGET := $00C2;
CHRGOT := $00C8;
TXTPTR := $00C9;
RNDSEED := $00DA;
DSCPTR := $009F
DSCLEN := $00A2
JMPADRS := $00A3
TEMPX := $00A4
ARGEXTENSION := $00A5 ; overlap with JMPADRS! (same on c64)
TEMP1 := $00A6
HIGHDS := $00A7
HIGHTR := $00A9
TEMP2 := $00AB
INDX := $00AC
TMPEXP := $00AC ; same
EXPON := $00AD
LOWTR := $00AE ; $9D also EXPSGN
EXPSGN := $00AF
FAC := $00B0
FAC_LAST := $00B4
FACSIGN := $00B5
SERLEN := $00B6
SHIFTSIGNEXT := $00B7
ARG := $00B8
ARG_LAST := $00BC
ARGSIGN := $00BD
STRNG1 := $00BE ; TODO: also SGNCPR
FACEXTENSION := $00BF
STRNG2 := $00C0
CHRGET := $00C2
CHRGOT := $00C8
TXTPTR := $00C9
L00CF := $00CF
RNDSEED := $00DA
.else
Z00 := $0000
L0001 := $0001
L0002 := $0002
GOWARM := $0003
Z03 := $000E;3 ; same
GOSTROUT := $0006
GOGIVEAYF := $0008
CHARAC := $005A
ENDCHR := $005B
EOLPNTR := $005C
DIMFLG := $005D
VALTYP := $005E
DATAFLG := $0060
SUBFLG := $0061
INPUTFLG := $0062
CPRMASK := $0063
Z14 := $000D;64 ; Ctrl+O flag
Z15 := $0004
Z16 := $0005
Z17 := $0006
Z18 := $0007
LINNUM := $0008
INPUTBUFFER := $000A
TEMPPT := $0065-82
LASTPT := $0066-82
INDEX := $0071-82
DEST := $0073-82
RESULT := $0075-82
RESULT_LAST := $0079-82
TXTTAB := $007A-82
VARTAB := $007C-82
ARYTAB := $007E-82
STREND := $0080-82
FRETOP := $0082-82
FRESPC := $0084-82
MEMSIZ := $0086-82
CURLIN := $0088-82
OLDLIN := $008A-82
OLDTEXT := $008C-82
Z8C := $008E-82
DATPTR := $0090-82
INPTR := $0092-82
VARNAM := $0094-82
VARPNT := $0096-82
FORPNT := $0098-82
LASTOP := $009A-82
CPRTYP := $009C-82
FNCNAM := $009D-82
TEMP3 := $009D-82 ; same
DSCPTR := $009F-82
DSCLEN := $00A2-82
JMPADRS := $00A3-82
TEMPX := $00A4-82
ARGEXTENSION := $00A5-82 ; overlap with JMPADRS! (same on c64)
TEMP1 := $00A6-82
HIGHDS := $00A7-82
HIGHTR := $00A9-82
TEMP2 := $00AB-82
INDX := $00AC-82
TMPEXP := $00AC-82 ; same
EXPON := $00AD-82
LOWTR := $00AE-82 ; $9D also EXPSGN
EXPSGN := $00AF-82
FAC := $00B0-82
FAC_LAST := $00B4-82
FACSIGN := $00B5-82
SERLEN := $00B6-82
SHIFTSIGNEXT := $00B7-82
ARG := $00B8-82
ARG_LAST := $00BC-82
ARGSIGN := $00BD-82
STRNG1 := $00BE-82 ; TODO: also SGNCPR
FACEXTENSION := $00BF-82
STRNG2 := $00C0-82
CHRGET := $00C2-82
CHRGOT := $00C8-82
TXTPTR := $00C9-82
L00CF := $00CF-82
RNDSEED := $00DA-82
.endif
BYTES_PER_FRAME := $12
SPACE_FOR_GOSUB := $36
TEMPST := $68;;
TEMPST := $68
FOR_STACK1 := $0F
FOR_STACK2 := $09
NUM_TOKENS := $23;;
NULL_MAX := $0A;;
NUM_TOKENS := $23
NULL_MAX := $0A
BYTES_PER_ELEMENT := 5
BYTES_PER_VARIABLE := 7
BYTES_FP := 5
@ -96,24 +175,23 @@ MANTISSA_BYTES := BYTES_FP-1
RAMSTART2 := $0400
RAMSTART3 := $0400
TOKEN_GOTO := $89;;
TOKEN_GOSUB := $8D;;
TOKEN_TAB := $A3;;
TOKEN_TO := $A4;;
TOKEN_FN := $A5;;
TOKEN_SPC := $A6;;
TOKEN_THEN := $A7;;
TOKEN_NOT := $A8;;
TOKEN_STEP := $A9;;
TOKEN_PLUS := $AA;;
TOKEN_MINUS := $AB;;
TOKEN_GREATER := $B1;;
TOKEN_EQUAL := $B2;;
TOKEN_SGN := $B4;;
TOKEN_LEFTSTR := $C8;;
TOKEN_GOTO := $89
TOKEN_GOSUB := $8D
TOKEN_TAB := $A3
TOKEN_TO := $A4
TOKEN_FN := $A5
TOKEN_SPC := $A6
TOKEN_THEN := $A7
TOKEN_NOT := $A8
TOKEN_STEP := $A9
TOKEN_PLUS := $AA
TOKEN_MINUS := $AB
TOKEN_GREATER := $B1
TOKEN_EQUAL := $B2
TOKEN_SGN := $B4
TOKEN_LEFTSTR := $C8
L00CF := $00CF
OPEN := $FFC0
CLOSE := $FFC3

16
make.sh
View File

@ -1,17 +1,17 @@
ca65 -D KIM -D CONFIG_11 msbasic.s -o kb9.o &&
ld65 -C kb9.cfg kb9.o -o kb9-new.bin &&
xxd -g 1 kb9.bin > kb9.bin.txt
xxd -g 1 kb9-new.bin > kb9-new.bin.txt
diff -u kb9.bin.txt kb9-new.bin.txt | head
ca65 -D OSI msbasic.s -o osi.o &&
ld65 -C osi.cfg osi.o -o osi-new.bin
xxd -g 1 osi.bin > osi.bin.txt
xxd -g 1 osi-new.bin > osi-new.bin.txt
diff -u osi.bin.txt osi-new.bin.txt | head
ca65 -D CBM -D CBM1 -D CONFIG_11 msbasic.s -o cbmbasic1.o &&
ld65 -C cbmbasic1.cfg cbmbasic1.o -o cbmbasic1-new.bin &&
ca65 -D KIM -D CONFIG_11 msbasic.s -o kb9.o &&
ld65 -C kb9.cfg kb9.o -o kb9-new.bin &&
xxd -g 1 kb9.bin > kb9.bin.txt
xxd -g 1 kb9-new.bin > kb9-new.bin.txt
diff -u kb9.bin.txt kb9-new.bin.txt | head
ca65 -D CBM -D CBM1 -D CONFIG_11 msbasic.s -o cbmbasic1.o &&
ld65 -C cbmbasic.cfg cbmbasic1.o -o cbmbasic1-new.bin &&
xxd -g 1 cbmbasic1.bin > cbmbasic1.bin.txt
xxd -g 1 cbmbasic1-new.bin > cbmbasic1-new.bin.txt
diff -u cbmbasic1.bin.txt cbmbasic1-new.bin.txt | head

View File

@ -213,6 +213,9 @@ TOKEN_NAME_TABLE:
htasc "LEFT$"
htasc "RIGHT$"
htasc "MID$"
.ifdef CBM2
htasc "GO"
.endif
.byte 0
ERROR_MESSAGES:
.ifndef CONFIG_11
@ -248,9 +251,12 @@ ERROR_MESSAGES:
.define ERRSTR_ILLDIR "ILLEGAL DIRECT"
.define ERRSTR_BADTYPE "TYPE MISMATCH"
.define ERRSTR_STRLONG "STRING TOO LONG"
.ifdef CBM
.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"
@ -266,7 +272,7 @@ ERR_NODATA := <(*-ERROR_MESSAGES)
htasc ERRSTR_NODATA
ERR_ILLQTY := <(*-ERROR_MESSAGES)
htasc ERRSTR_ILLQTY
.ifdef CBM
.ifdef CBM1
.byte 0,0,0,0,0
.endif
ERR_OVERFLOW := <(*-ERROR_MESSAGES)