This commit is contained in:
Michael Steil 2008-10-12 01:32:09 +00:00
parent 1376fe340a
commit 68cbd01f67
3 changed files with 122 additions and 193 deletions

View File

@ -1,14 +1,24 @@
.ifdef CBM1
USR := $0000
Z00 := $0000
L0001 := $0001
L0002 := $0002
GOWARM := $0003
;USR := $0000
;Z00 := $0000
INPUTBUFFERX := $0000
;L0001 := $0001
;L0002 := $0002
;GOWARM := $0003
Z03 := $0003 ; same
GOSTROUT := $0006
GOGIVEAYF := $0008
CHARAC := $005A
ENDCHR := $005B
;Z15 := $0004
Z16 := $0005
Z17 := $0006
Z18 := $0007
LINNUM := $0008
TXPSV := $0008
INPUTBUFFER := $000A
;CHARAC := $005A
;ENDCHR := $005B
EOLPNTR := $005C
DIMFLG := $005D
VALTYP := $005E
@ -17,14 +27,6 @@ SUBFLG := $0061
INPUTFLG := $0062
CPRMASK := $0063
Z14 := $0064 ; Ctrl+O flag
Z15 := $0004
Z16 := $0005
Z17 := $0006
Z18 := $0007
LINNUM := $0008
TXPSV := $0008
INPUTBUFFER := $000A
INPUTBUFFERX := $0000
TEMPPT := $0065
LASTPT := $0066
TEMPST := $0068
@ -86,99 +88,6 @@ L00CF := $00CF
RNDSEED := $00DA
Z96 := $020C
.else
;USR := $0000
;Z00 := $0000
;L0001 := $0001
;L0002 := $0002
;GOWARM := $0003
;Z15 := $0004
;Z17 := $0006
;GOSTROUT := $0006
;Z18 := $0007
;GOGIVEAYF := $0008
;Z03 := $000E;3 ; same
;LINNUM := $0011;0008
CHARAC := $005A-82-5
ENDCHR := $005B-82-5
EOLPNTR := $005C-82-5
DIMFLG := $005D-82-5
VALTYP := $005E-82-5
DATAFLG := $0060-82-5
SUBFLG := $0061-82-5
INPUTFLG := $0062-82-5
CPRMASK := $0063-82-5
Z14 := $0064-82-5 ; Ctrl+O flag
;TEMPPT := $0065-82
;LASTPT := $0066-82
;TEMPST := $0068-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
;TXPSV := $009A-82
;CPRTYP := $009C-82
;FNCNAM := $009D-82
;TEMP3 := $009D-82 ; same
;DSCPTR := $009F-82
;DSCLEN := $00A2-82
;JMPADRS := $00A3-82
;Z52 := $00A4-82;
;LENGTH := $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
;LOWTRX := $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
;Z96 := $00E8-82
;Z16 := $0118-82
INPUTBUFFER := $0200;00A
INPUTBUFFERX := $0200
.endif

14
make.sh
View File

@ -1,10 +1,10 @@
# 1.0
#echo cbmbasic1
#ca65 -D CBM1 msbasic.s -o tmp/cbmbasic1.o &&
#ld65 -C cbmbasic1.cfg tmp/cbmbasic1.o -o tmp/cbmbasic1-new.bin &&
#xxd -g 1 orig/cbmbasic1.bin > tmp/cbmbasic1.bin.txt
#xxd -g 1 tmp/cbmbasic1-new.bin > tmp/cbmbasic1-new.bin.txt
#diff -u tmp/cbmbasic1.bin.txt tmp/cbmbasic1-new.bin.txt | head
echo cbmbasic1
ca65 -D CBM1 msbasic.s -o tmp/cbmbasic1.o &&
ld65 -C cbmbasic1.cfg tmp/cbmbasic1.o -o tmp/cbmbasic1-new.bin &&
xxd -g 1 orig/cbmbasic1.bin > tmp/cbmbasic1.bin.txt
xxd -g 1 tmp/cbmbasic1-new.bin > tmp/cbmbasic1-new.bin.txt
diff -u tmp/cbmbasic1.bin.txt tmp/cbmbasic1-new.bin.txt | head
# 1.0 ?
#echo kbdbasic
@ -38,7 +38,7 @@ xxd -g 1 orig/cbmbasic2.bin > tmp/cbmbasic2.bin.txt
xxd -g 1 tmp/cbmbasic2-new.bin > tmp/cbmbasic2-new.bin.txt
diff -u tmp/cbmbasic2.bin.txt tmp/cbmbasic2-new.bin.txt | head
da65 --info del/cbmbasic2-temp.txt
#da65 --info del/cbmbasic2-temp.txt
# 1.1
#echo applesoft

176
msbasic.s
View File

@ -1,83 +1,5 @@
; Microsoft BASIC for 6502
.zeropage
.ifdef CBM2
USR: .res 1
Z00 = USR
L0001: .res 1
L0002: .res 1
GOWARM: .res 1
Z15: .res 2
Z17: .res 1
GOSTROUT = Z17
Z18: .res 1
GOGIVEAYF: .res 6
Z03: .res 3
LINNUM: .res 2
TEMPPT: .res 1
LASTPT: .res 2
TEMPST: .res 9; := $0068-82
INDEX: .res 2; := $0071-82
DEST: .res 2; := $0073-82
RESULT: .res 4; := $0075-82
RESULT_LAST:.res 1; := $0079-82
TXTTAB: .res 2; := $007A-82
VARTAB: .res 2; := $007C-82
ARYTAB: .res 2; := $007E-82
STREND: .res 2; := $0080-82
FRETOP: .res 2; := $0082-82
FRESPC: .res 2; := $0084-82
MEMSIZ: .res 2; := $0086-82
CURLIN: .res 2; := $0088-82
OLDLIN: .res 2; := $008A-82
OLDTEXT: .res 2; := $008C-82
Z8C: .res 2; := $008E-82
DATPTR: .res 2; := $0090-82
INPTR: .res 2; := $0092-82
VARNAM: .res 2; := $0094-82
VARPNT: .res 2; := $0096-82
FORPNT: .res 2; := $0098-82
LASTOP: .res 2; := $009A-82
TXPSV = LASTOP
CPRTYP: .res 1; := $009C-82
FNCNAM: .res 2; := $009D-82
TEMP3 = FNCNAM
DSCPTR: .res 3; := $009F-82
DSCLEN: .res 1; := $00A2-82
JMPADRS: .res 1; := $00A3-82
Z52: .res 1; := $00A4-82;
LENGTH = Z52
ARGEXTENSION:.res 1; := $00A5-82 ; overlap with JMPADRS! (same on c64)
TEMP1: .res 1; := $00A6-82
HIGHDS: .res 2; := $00A7-82
HIGHTR: .res 2; := $00A9-82
TEMP2: .res 1; := $00AB-82
INDX: .res 1; := $00AC-82
TMPEXP = INDX
EXPON: .res 1; := $00AD-82
LOWTR: .res 1; := $00AE-82 ; $9D also EXPSGN
LOWTRX = LOWTR
EXPSGN: .res 1; := $00AF-82
FAC: .res 4; := $00B0-82
FAC_LAST: .res 1; := $00B4-82
FACSIGN: .res 1; := $00B5-82
SERLEN: .res 1; := $00B6-82
SHIFTSIGNEXT:.res 1; := $00B7-82
ARG: .res 4; := $00B8-82
ARG_LAST: .res 1; := $00BC-82
ARGSIGN: .res 1; := $00BD-82
STRNG1: .res 1; := $00BE-82 ; TODO: also SGNCPR
FACEXTENSION:.res 1; := $00BF-82
STRNG2: .res 2; := $00C0-82
CHRGET: .res 6; := $00C2-82
CHRGOT: .res 1; := $00C8-82
TXTPTR: .res 6; := $00C9-82
L00CF: .res 11; := $00CF-82
RNDSEED: .res 14; := $00DA-82
Z96: .res 48; := $00E8-82
Z16: .res 1; := $0118-82
.endif
.ifdef CBM1
.include "defines_cbm.s" ; 6
CONFIG_CBM_ALL := 1
@ -150,6 +72,104 @@ CONFIG_SAFE_NAMENOTFOUND := 1
.include "macros.s"
.zeropage
.ifdef CONFIG_CBM_ALL
USR: .res 1
Z00 = USR
L0001: .res 1
L0002: .res 1
GOWARM: .res 1
Z15: .res 1
.ifdef CBM1
CHARAC = $5A
ENDCHR = $5B
.else
CHARAC = GOWARM
ENDCHR = Z15
.endif
.endif
.ifdef CBM2
EOLPNTR: .res 1
Z17: .res 1
GOSTROUT = Z17
DIMFLG = Z17
Z18: .res 1
VALTYP = Z18
GOGIVEAYF: .res 1
DATAFLG: .res 1
SUBFLG: .res 1
INPUTFLG: .res 1
CPRMASK: .res 1
Z14: .res 1
Z03: .res 3
LINNUM: .res 2
TEMPPT: .res 1; := $0065-82
LASTPT: .res 2; := $0066-82
TEMPST: .res 9; := $0068-82
INDEX: .res 2; := $0071-82
DEST: .res 2; := $0073-82
RESULT: .res 4; := $0075-82
RESULT_LAST:.res 1; := $0079-82
TXTTAB: .res 2; := $007A-82
VARTAB: .res 2; := $007C-82
ARYTAB: .res 2; := $007E-82
STREND: .res 2; := $0080-82
FRETOP: .res 2; := $0082-82
FRESPC: .res 2; := $0084-82
MEMSIZ: .res 2; := $0086-82
CURLIN: .res 2; := $0088-82
OLDLIN: .res 2; := $008A-82
OLDTEXT: .res 2; := $008C-82
Z8C: .res 2; := $008E-82
DATPTR: .res 2; := $0090-82
INPTR: .res 2; := $0092-82
VARNAM: .res 2; := $0094-82
VARPNT: .res 2; := $0096-82
FORPNT: .res 2; := $0098-82
LASTOP: .res 2; := $009A-82
TXPSV = LASTOP
CPRTYP: .res 1; := $009C-82
FNCNAM: .res 2; := $009D-82
TEMP3 = FNCNAM
DSCPTR: .res 3; := $009F-82
DSCLEN: .res 1; := $00A2-82
JMPADRS: .res 1; := $00A3-82
Z52: .res 1; := $00A4-82;
LENGTH = Z52
ARGEXTENSION:.res 1; := $00A5-82 ; overlap with JMPADRS! (same on c64)
TEMP1: .res 1; := $00A6-82
HIGHDS: .res 2; := $00A7-82
HIGHTR: .res 2; := $00A9-82
TEMP2: .res 1; := $00AB-82
INDX: .res 1; := $00AC-82
TMPEXP = INDX
EXPON: .res 1; := $00AD-82
LOWTR: .res 1; := $00AE-82 ; $9D also EXPSGN
LOWTRX = LOWTR
EXPSGN: .res 1; := $00AF-82
FAC: .res 4; := $00B0-82
FAC_LAST: .res 1; := $00B4-82
FACSIGN: .res 1; := $00B5-82
SERLEN: .res 1; := $00B6-82
SHIFTSIGNEXT:.res 1; := $00B7-82
ARG: .res 4; := $00B8-82
ARG_LAST: .res 1; := $00BC-82
ARGSIGN: .res 1; := $00BD-82
STRNG1: .res 1; := $00BE-82 ; TODO: also SGNCPR
FACEXTENSION:.res 1; := $00BF-82
STRNG2: .res 2; := $00C0-82
CHRGET: .res 6; := $00C2-82
CHRGOT: .res 1; := $00C8-82
TXTPTR: .res 6; := $00C9-82
L00CF: .res 11; := $00CF-82
RNDSEED: .res 14; := $00DA-82
Z96: .res 48; := $00E8-82
Z16: .res 1; := $0118-82
.endif
.setcpu "6502"
.macpack longbranch