This commit is contained in:
Michael Steil 2008-10-18 21:14:22 +00:00
parent 987db105cc
commit 3c64e1acab
11 changed files with 116 additions and 68 deletions

View File

@ -8,4 +8,5 @@
* check all .ifdef OSI; they might be .ifdef CONFIG_SMALL * check all .ifdef OSI; they might be .ifdef CONFIG_SMALL
* check for KBD whether it's CONFIG_2 && CONFIG_SMALL (float * check for KBD whether it's CONFIG_2 && CONFIG_SMALL (float
etc.) etc.)
* there must be no platform ifdefs in generic files * there must be no platform ifdefs in generic files
* reconstruct pre-CBM1, i.e. CBM1 without the patches

View File

@ -1,6 +1,6 @@
.if .def(cbmbasic1) .if .def(cbmbasic1)
CBM1 := 1 CBM1 := 1
.include "defines_cbm.s" .include "defines_cbm1.s"
.elseif .def(osi) .elseif .def(osi)
OSI := 1 OSI := 1
.include "defines_osi.s" .include "defines_osi.s"
@ -12,7 +12,7 @@ KIM := 1
.include "defines_kim.s" .include "defines_kim.s"
.elseif .def(cbmbasic2) .elseif .def(cbmbasic2)
CBM2 := 1 CBM2 := 1
.include "defines_cbm.s" .include "defines_cbm2.s"
.elseif .def(kbdbasic) .elseif .def(kbdbasic)
KBD := 1 KBD := 1
.include "defines_kbd.s" .include "defines_kbd.s"

81
defines_cbm1.s Normal file
View File

@ -0,0 +1,81 @@
; oldest known version, no CONFIG_n
;CONFIG_CBM1_PATCHES := 1 ; ** don't turn off! **
;CONFIG_CBM_ALL := 1
;CONFIG_DATAFLG := 1
;CONFIG_EASTER_EGG := 1
;CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD
;CONFIG_IO_MSB := 1 ; all I/O has bit #7 set
;CONFIG_MONCOUT_DESTROYS_Y := 1
;CONFIG_NO_CR := 1; terminal doesn't need explicit CRs on line ends
;CONFIG_NO_LINE_EDITING := 1; support for "@", "_", BEL etc.
;CONFIG_NO_POKE := 1
;CONFIG_NO_READ_Y_IS_ZERO_HACK := 1
;CONFIG_NULL := 1
;CONFIG_PEEK_SAVE_LINNUM := 1
;CONFIG_PRINTNULLS := 1; whether PRINTNULLS does anything
;CONFIG_PRINT_CR := 1 ; print CR when line end reached
;CONFIG_RAM := 1
;CONFIG_ROR_WORKAROUND := 1
;CONFIG_SAFE_NAMENOTFOUND := 1
;CONFIG_SCRTCH_ORDER := 1
;CONFIG_SCRTCH_ORDER := 2
;CONFIG_SCRTCH_ORDER := 3
;CONFIG_SMALL := 1
;CONFIG_SPC_IS_CRSR_RIGHT := 1; always print CRSR RIGHT for SPC() (otherwise only for screen output)
; configuration
; oldest known version, no CONFIG_n
CONFIG_CBM_ALL := 1
CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD
CONFIG_NO_CR := 1; terminal doesn't need explicit CRs on line ends
CONFIG_NO_LINE_EDITING := 1; support for "@", "_", BEL etc.
CONFIG_SCRTCH_ORDER := 2
CONFIG_CBM1_PATCHES := 1 ; ** don't turn off! **
CONFIG_DATAFLG := 1
CONFIG_PRINTNULLS := 1; whether PRINTNULLS does anything
CONFIG_SPC_IS_CRSR_RIGHT := 1; always print CRSR RIGHT for SPC() (otherwise only for screen output)
; zero page
ZP_START0 = $00
ZP_START0A = $04
ZP_START1 = $5A
ZP_START2 = $65
; extra ZP variables
CURDVC := $0003
Z96 := $020C
USR := GORESTART
; constants
SPACE_FOR_GOSUB := $36
STACK_TOP := $FC
NULL_MAX := $0A
MAX_EXPON := 12 ; XXX override
RAMSTART2 := $0400
; magic memory locations
ENTROPY = $9044
; monitor functions
OPEN := $FFC0
CLOSE := $FFC3
CHKIN := $FFC6
CHKOUT := $FFC9
CLRCH := $FFCC
CHRIN := $FFCF
CHROUT := $FFD2
LOAD := $FFD5
SAVE := $FFD8
VERIFY := $FFDB
SYS := $FFDE
ISCNTC := $FFE1
GETIN := $FFE4
CLALL := $FFE7
LE7F3 := $E7F3; for CBM1
MONCOUT := CHROUT
MONRDKEY := GETIN

View File

@ -1,5 +1,4 @@
; configuration ; configuration
; common:
CONFIG_CBM_ALL := 1 CONFIG_CBM_ALL := 1
CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD
@ -7,34 +6,12 @@ CONFIG_NO_CR := 1; terminal doesn't need explicit CRs on line ends
CONFIG_NO_LINE_EDITING := 1; support for "@", "_", BEL etc. CONFIG_NO_LINE_EDITING := 1; support for "@", "_", BEL etc.
CONFIG_SCRTCH_ORDER := 2 CONFIG_SCRTCH_ORDER := 2
.ifdef CBM1
CONFIG_BUG_GET_ERROR := 1; treat GET error like READ error
CONFIG_CBM1_PATCHES := 1 ; ** don't turn off! **
CONFIG_DATAFLAG := 1
CONFIG_PRINTNULLS := 1; whether PRINTNULLS does anything
CONFIG_SPC_IS_CRSR_RIGHT := 1; always print CRSR RIGHT for SPC() (otherwise only for screen output)
.else
CONFIG_2A := 1 CONFIG_2A := 1
CONFIG_DATAFLAG := 1 CONFIG_DATAFLG := 1
CONFIG_EASTER_EGG := 1 CONFIG_EASTER_EGG := 1
CONFIG_NO_READ_Y_IS_ZERO_HACK := 1 CONFIG_NO_READ_Y_IS_ZERO_HACK := 1
CONFIG_PEEK_SAVE_LINNUM := 1 CONFIG_PEEK_SAVE_LINNUM := 1
.endif
.ifdef CBM1
; zero page
ZP_START0 = $00
ZP_START0A = $04
ZP_START1 = $5A
ZP_START2 = $65
; extra ZP variables
Z03 := $0003
Z96 := $020C
USR := GORESTART
.else
; zero page ; zero page
ZP_START0 = $00 ZP_START0 = $00
@ -43,7 +20,7 @@ ZP_START1 = $03
ZP_START2 = $13 ZP_START2 = $13
; extra/override ZP variables ; extra/override ZP variables
Z03 := $000E CURDVC := $000E
Z96 := $0096 Z96 := $0096
POSX := $00C6 POSX := $00C6
TXPSV := LASTOP TXPSV := LASTOP
@ -52,29 +29,16 @@ USR := GORESTART ; XXX
; inputbuffer ; inputbuffer
INPUTBUFFER := $0200 INPUTBUFFER := $0200
.endif
; constants ; constants
.ifdef CBM1
SPACE_FOR_GOSUB := $36
STACK_TOP := $FC
NULL_MAX := $0A
MAX_EXPON := 12 ; XXX override
.else
SPACE_FOR_GOSUB := $3E SPACE_FOR_GOSUB := $3E
STACK_TOP := $FA STACK_TOP := $FA
WIDTH := 40 WIDTH := 40
WIDTH2 := 30 WIDTH2 := 30
.endif
RAMSTART2 := $0400 RAMSTART2 := $0400
; magic memory locations ; magic memory locations
.ifdef CBM1
ENTROPY = $9044
.else
ENTROPY = $E844 ENTROPY = $E844
.endif
; monitor functions ; monitor functions
OPEN := $FFC0 OPEN := $FFC0

View File

@ -1,7 +1,7 @@
; configuration ; configuration
CONFIG_10A := 1 CONFIG_10A := 1
CONFIG_DATAFLAG := 1 CONFIG_DATAFLG := 1
CONFIG_NULL := 1 CONFIG_NULL := 1
CONFIG_PRINT_CR := 1 ; print CR when line end reached CONFIG_PRINT_CR := 1 ; print CR when line end reached
CONFIG_SCRTCH_ORDER := 3 CONFIG_SCRTCH_ORDER := 3

2
init.s
View File

@ -120,7 +120,7 @@ L4098:
txa txa
sta SHIFTSIGNEXT sta SHIFTSIGNEXT
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_CBM_ALL
sta Z03 sta CURDVC
.endif .endif
sta LASTPT+1 sta LASTPT+1
.if .defined(CONFIG_NULL) || .defined(CONFIG_PRINTNULLS) .if .defined(CONFIG_NULL) || .defined(CONFIG_PRINTNULLS)

View File

@ -93,7 +93,7 @@ L2453:
GETLN: GETLN:
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
jsr CHRIN jsr CHRIN
ldy Z03 ldy CURDVC
bne L2465 bne L2465
.else .else
jsr MONRDKEY jsr MONRDKEY

26
input.s
View File

@ -9,7 +9,9 @@ INPUTERR:
lda INPUTFLG lda INPUTFLG
beq RESPERR ; INPUT beq RESPERR ; INPUT
.ifndef CONFIG_SMALL .ifndef CONFIG_SMALL
.ifndef CONFIG_BUG_GET_ERROR .ifdef CONFIG_10A
; without this, it treats GET errors
; like READ errors
bmi L2A63 ; READ bmi L2A63 ; READ
ldy #$FF ; GET ldy #$FF ; GET
bne L2A67 bne L2A67
@ -30,7 +32,7 @@ SYNERR4:
jmp SYNERR jmp SYNERR
RESPERR: RESPERR:
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
beq LCA8F beq LCA8F
ldx #ERR_BADDATA ldx #ERR_BADDATA
jmp ERROR jmp ERROR
@ -61,7 +63,7 @@ GET:
lda #',' lda #','
jsr SYNCHR jsr SYNCHR
jsr CHKIN jsr CHKIN
stx Z03 stx CURDVC
LCAB6: LCAB6:
.endif .endif
ldx #<(INPUTBUFFER+1) ldx #<(INPUTBUFFER+1)
@ -76,7 +78,7 @@ LCAB6:
jsr PROCESS_INPUT_LIST jsr PROCESS_INPUT_LIST
; CBM: if GET#, then switch input back ; CBM: if GET#, then switch input back
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
ldx Z03 ldx CURDVC
bne LCAD8 bne LCAD8
.endif .endif
rts rts
@ -91,14 +93,14 @@ INPUTH:
lda #$2C lda #$2C
jsr SYNCHR jsr SYNCHR
jsr CHKIN jsr CHKIN
stx Z03 stx CURDVC
jsr L2A9E jsr L2A9E
LCAD6: LCAD6:
lda Z03 lda CURDVC
LCAD8: LCAD8:
jsr CLRCH jsr CLRCH
ldx #$00 ldx #$00
stx Z03 stx CURDVC
rts rts
LCAE0: LCAE0:
.endif .endif
@ -130,7 +132,7 @@ LCAF8:
bmi L2ABE bmi L2ABE
.else .else
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
beq LCB0C beq LCB0C
lda Z96 lda Z96
and #$02 and #$02
@ -142,7 +144,7 @@ LCB0C:
lda INPUTBUFFER lda INPUTBUFFER
bne L2ABE bne L2ABE
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
bne LCAF8 bne LCAF8
.endif .endif
.ifdef CONFIG_CBM1_PATCHES .ifdef CONFIG_CBM1_PATCHES
@ -161,7 +163,7 @@ NXIN:
jmp LE86C jmp LE86C
.else .else
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
bne LCB21 bne LCB21
.endif .endif
jsr OUTQUES ; '?' jsr OUTQUES ; '?'
@ -265,7 +267,7 @@ L2AF0:
.endif .endif
bmi FINDATA bmi FINDATA
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
bne LCB64 bne LCB64
.endif .endif
.ifdef KBD .ifdef KBD
@ -393,7 +395,7 @@ L2B94:
lda (INPTR),y lda (INPTR),y
beq L2BA1 beq L2BA1
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
bne L2BA1 bne L2BA1
.endif .endif
lda #<ERREXTRA lda #<ERREXTRA

View File

@ -222,7 +222,7 @@ CMD:
LC98F: LC98F:
php php
jsr CHKOUT jsr CHKOUT
stx Z03 stx CURDVC
plp plp
jmp PRINT jmp PRINT
.endif .endif

12
print.s
View File

@ -91,7 +91,7 @@ L29B9:
.endif .endif
.endif .endif
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda CURDVC
bne L29DD bne L29DD
.endif .endif
.endif .endif
@ -99,7 +99,7 @@ L29B9:
CRDO: CRDO:
.if .def(CONFIG_PRINTNULLS) && .def(CONFIG_FILE) .if .def(CONFIG_PRINTNULLS) && .def(CONFIG_FILE)
lda Z03 lda CURDVC
bne LC9D8 bne LC9D8
sta $05 sta $05
LC9D8: LC9D8:
@ -125,7 +125,7 @@ PRINTNULLS:
; CBM1 had NULL support and ignores ; CBM1 had NULL support and ignores
; it when not targeting the screen, ; it when not targeting the screen,
; CBM2 dropped it completely. ; CBM2 dropped it completely.
lda Z03 lda CURDVC
bne L29DD bne L29DD
.endif .endif
txa txa
@ -270,7 +270,7 @@ L2A22:
OUTSP: OUTSP:
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
.ifndef CONFIG_SPC_IS_CRSR_RIGHT .ifndef CONFIG_SPC_IS_CRSR_RIGHT
lda Z03 lda CURDVC
beq LCA40 beq LCA40
lda #$20 lda #$20
.byte $2C .byte $2C
@ -306,7 +306,7 @@ OUTDO:
LCA5A: LCA5A:
lda POSX lda POSX
beq L2A4E beq L2A4E
lda Z03 lda CURDVC
bne L2A4E bne L2A4E
dec POSX dec POSX
LCA64: LCA64:
@ -318,7 +318,7 @@ LCA64:
.endif .endif
LCA6A: LCA6A:
.ifdef CONFIG_CBM1_PATCHES .ifdef CONFIG_CBM1_PATCHES
lda Z03 lda CURDVC
jsr PATCH6 jsr PATCH6
nop nop
.endif .endif

View File

@ -21,11 +21,11 @@ MEMERR:
ERROR: ERROR:
lsr Z14 lsr Z14
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 ; output lda CURDVC ; output
beq LC366 ; is screen beq LC366 ; is screen
jsr CLRCH ; otherwise redirect output back to screen jsr CLRCH ; otherwise redirect output back to screen
lda #$00 lda #$00
sta Z03 sta CURDVC
LC366: LC366:
.endif .endif
jsr CRDO jsr CRDO
@ -695,7 +695,7 @@ L25A6:
L25A6X: L25A6X:
.endif .endif
ldy #$01 ldy #$01
.ifdef CONFIG_DATAFLAG .ifdef CONFIG_DATAFLG
sty DATAFLG sty DATAFLG
.endif .endif
lda (LOWTRX),y lda (LOWTRX),y
@ -730,7 +730,7 @@ L25CA:
and #$7F and #$7F
L25CE: L25CE:
jsr OUTDO jsr OUTDO
.ifdef CONFIG_DATAFLAG .ifdef CONFIG_DATAFLG
cmp #$22 cmp #$22
bne LA519 bne LA519
lda DATAFLG lda DATAFLG
@ -760,7 +760,7 @@ L25E5:
jmp RESTART jmp RESTART
L25E8: L25E8:
bpl L25CE bpl L25CE
.ifdef CONFIG_DATAFLAG .ifdef CONFIG_DATAFLG
cmp #$FF cmp #$FF
beq L25CE beq L25CE
bit DATAFLG bit DATAFLG