This commit is contained in:
Michael Steil 2008-10-13 08:55:33 +00:00
parent 3c270eded7
commit ecdc58ddbb
7 changed files with 83 additions and 66 deletions

View File

@ -7,6 +7,7 @@ CBM_APPLE := 1
KIM_APPLE := 1 KIM_APPLE := 1
CONFIG_SCRTCH_ORDER := 1 CONFIG_SCRTCH_ORDER := 1
CONFIG_PRINT_CR := 1 ; print CR when line end reached CONFIG_PRINT_CR := 1 ; print CR when line end reached
CONFIG_IO_MSB := 1 ; IO is 7 bit, MSB may be randomly set
; INPUTBUFFER > $0100 ; INPUTBUFFER > $0100
ZP_START = $55 ZP_START = $55

View File

@ -5,6 +5,9 @@ CBM1_APPLE := 1
CBM_APPLE := 1 CBM_APPLE := 1
CONFIG_DATAFLAG := 1 CONFIG_DATAFLAG := 1
CONFIG_BUG_GET_ERROR := 1; treat GET error like READ error CONFIG_BUG_GET_ERROR := 1; treat GET error like READ error
CONFIG_PRINTNULLS := 1; whether PRINTNULLS does anything
; minor: just code order
CONFIG_INPUTBUFFER_ORDER := 1 ; ldx/ldy or ldy/ldx
.else .else
CONFIG_CBM_ALL := 1 CONFIG_CBM_ALL := 1
CONFIG_11 := 1 CONFIG_11 := 1
@ -20,7 +23,7 @@ CONFIG_DATAFLAG := 1
; common: ; common:
CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD CONFIG_FILE := 1; support PRINT#, INPUT#, GET#, CMD
CONFIG_NO_CR := 1; terminal doesn't need explicit CRs on line ends
.ifdef CBM1 .ifdef CBM1
ZP_START = $65 ZP_START = $65

View File

@ -1,9 +1,11 @@
CONFIG_SMALL := 1 CONFIG_SMALL := 1
CONFIG_SCRTCH_ORDER := 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_DATAFLAG := 1 CONFIG_DATAFLAG := 1
; minor: just code order
CONFIG_SCRTCH_ORDER := 1
ZP_START = $65 ZP_START = $65
JMPADRS = DSCLEN + 1 JMPADRS = DSCLEN + 1

2
init.s
View File

@ -125,7 +125,7 @@ L4098:
sta Z03 sta Z03
.endif .endif
sta LASTPT+1 sta LASTPT+1
.if .defined(CONFIG_NULL) || .defined(CBM1) .if .defined(CONFIG_NULL) || .defined(CONFIG_PRINTNULLS)
sta Z15 sta Z15
.endif .endif
.ifndef CONFIG_11 .ifndef CONFIG_11

69
input.s
View File

@ -29,7 +29,7 @@ L2A67:
SYNERR4: SYNERR4:
jmp SYNERR jmp SYNERR
RESPERR: RESPERR:
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
lda Z03 lda Z03
beq LCA8F beq LCA8F
ldx #ERR_BADDATA ldx #ERR_BADDATA
@ -43,7 +43,7 @@ LCA8F:
ldy OLDTEXT+1 ldy OLDTEXT+1
sta TXTPTR sta TXTPTR
sty TXTPTR+1 sty TXTPTR+1
LE920: RTS20:
rts rts
; ---------------------------------------------------------------------------- ; ----------------------------------------------------------------------------
@ -128,10 +128,8 @@ LCAF8:
.endif .endif
.ifdef KBD .ifdef KBD
bmi L2ABE bmi L2ABE
.endif .else
.ifdef CONFIG_FILE
.ifndef KBD
.ifdef CONFIG_FILE
lda Z03 lda Z03
beq LCB0C beq LCB0C
lda Z96 lda Z96
@ -140,38 +138,41 @@ LCAF8:
jsr LCAD6 jsr LCAD6
jmp DATA jmp DATA
LCB0C: LCB0C:
.endif .endif
lda INPUTBUFFER lda INPUTBUFFER
bne L2ABE bne L2ABE
.ifdef CONFIG_FILE .ifdef CONFIG_FILE
lda Z03 lda Z03
bne LCAF8 bne LCAF8
.endif .endif
.ifdef CONFIG_CBM1_PATCHES .ifdef CONFIG_CBM1_PATCHES
jmp PATCH1 jmp PATCH1
.else .else
clc clc
jmp CONTROL_C_TYPED jmp CONTROL_C_TYPED
.endif .endif
.endif .endif
NXIN: NXIN:
.ifdef KBD .ifdef KBD
jsr LFDDA jsr LFDDA
bmi LE920 bmi RTS20
pla pla
jmp LE86C jmp LE86C
.endif .else
.ifndef KBD .ifdef CONFIG_FILE
.ifdef CONFIG_FILE
lda Z03 lda Z03
bne LCB21 bne LCB21
.endif .endif
jsr OUTQUES jsr OUTQUES ; '?'
jsr OUTSP jsr OUTSP
LCB21: LCB21:
jmp INLIN jmp INLIN
.endif /* KBD */ .endif
; ----------------------------------------------------------------------------
; "GETC" STATEMENT
; ----------------------------------------------------------------------------
.ifdef KBD .ifdef KBD
GETC: GETC:
jsr CONINT jsr CONINT
@ -223,25 +224,25 @@ PROCESS_INPUT_ITEM:
jsr CHRGOT jsr CHRGOT
bne INSTART bne INSTART
bit INPUTFLG bit INPUTFLG
.ifndef CONFIG_SMALL .ifndef CONFIG_SMALL ; GET
bvc L2AF0 bvc L2AF0
jsr MONRDKEY jsr MONRDKEY
.ifdef APPLE .ifdef CONFIG_IO_MSB
and #$7F and #$7F
.endif .endif
sta INPUTBUFFER sta INPUTBUFFER
.ifdef CBM1 .ifdef CONFIG_INPUTBUFFER_ORDER
ldy #>(INPUTBUFFER-1) ldy #>(INPUTBUFFER-1)
ldx #<(INPUTBUFFER-1) ldx #<(INPUTBUFFER-1)
.else .else
ldx #<(INPUTBUFFER-1) ldx #<(INPUTBUFFER-1)
ldy #>(INPUTBUFFER-1) ldy #>(INPUTBUFFER-1)
.endif .endif
bne L2AF8 bne L2AF8
L2AF0: L2AF0:
.endif .endif
bmi FINDATA bmi FINDATA
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
lda Z03 lda Z03
bne LCB64 bne LCB64
.endif .endif
@ -261,20 +262,20 @@ INSTART:
jsr CHRGET jsr CHRGET
bit VALTYP bit VALTYP
bpl L2B34 bpl L2B34
.ifndef CONFIG_SMALL .ifndef CONFIG_SMALL ; GET
bit INPUTFLG bit INPUTFLG
bvc L2B10 bvc L2B10
.ifdef CONFIG_CBM1_PATCHES .ifdef CONFIG_CBM1_PATCHES
lda #$00 lda #$00
jsr PATCH4 jsr PATCH4
nop nop
.else .else
inx inx
stx TXTPTR stx TXTPTR
lda #$00 lda #$00
sta CHARAC sta CHARAC
beq L2B1C beq L2B1C
.endif .endif
L2B10: L2B10:
.endif .endif
sta CHARAC sta CHARAC
@ -359,17 +360,17 @@ INPDONE:
lda INPTR lda INPTR
ldy INPTR+1 ldy INPTR+1
ldx INPUTFLG ldx INPUTFLG
.ifdef OSI .ifdef OSI ; CONFIG_SMALL && !CONFIG_11
beq L2B94 beq L2B94 ; INPUT
.else .else
bpl L2B94 bpl L2B94; INPUT or GET
.endif .endif
jmp SETDA jmp SETDA
L2B94: L2B94:
ldy #$00 ldy #$00
lda (INPTR),y lda (INPTR),y
beq L2BA1 beq L2BA1
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
lda Z03 lda Z03
bne L2BA1 bne L2BA1
.endif .endif

62
print.s
View File

@ -16,10 +16,12 @@ PRINT2:
beq L29F5 beq L29F5
cmp #TOKEN_SPC cmp #TOKEN_SPC
.ifdef CBM2_KBD .ifdef CBM2_KBD
clc clc ; also AppleSoft II
.endif .endif
beq L29F5 beq L29F5
cmp #',' cmp #','
; Pre-KIM had no CLC. KIM added the CLC
; here. Post-KIM moved the CLC up...
.ifdef KIM .ifdef KIM
clc clc
.endif .endif
@ -31,16 +33,16 @@ PRINT2:
bmi PRSTRING bmi PRSTRING
jsr FOUT jsr FOUT
jsr STRLIT jsr STRLIT
.ifndef CONFIG_CBM_ALL .ifndef CONFIG_NO_CR
ldy #$00 ldy #$00
lda (FAC_LAST-1),y lda (FAC_LAST-1),y
clc clc
adc Z16 adc Z16
.ifdef KBD .ifdef KBD
cmp #$28 cmp #$28
.else .else
cmp Z17 cmp Z17
.endif .endif
bcc L29B1 bcc L29B1
jsr CRDO jsr CRDO
L29B1: L29B1:
@ -48,6 +50,8 @@ L29B1:
jsr STRPRT jsr STRPRT
.ifdef KBD .ifdef KBD
jmp L297E jmp L297E
; PATCHES
LE86C: LE86C:
pla pla
jmp CONTROL_C_TYPED jmp CONTROL_C_TYPED
@ -74,47 +78,53 @@ PRINTNULLS:
jsr OUTSP jsr OUTSP
bne L297E bne L297E
L29B9: L29B9:
.ifdef CBM2 .ifdef CBM2
lda #$00 lda #$00
sta INPUTBUFFER,x sta INPUTBUFFER,x
ldx #<(INPUTBUFFER-1) ldx #<(INPUTBUFFER-1)
ldy #>(INPUTBUFFER-1) ldy #>(INPUTBUFFER-1)
.else .else
.ifndef APPLE .ifndef APPLE
ldy #$00 ldy #$00
sty INPUTBUFFER,x sty INPUTBUFFER,x
ldx #LINNUM+1 ldx #LINNUM+1
.endif .endif
.endif .endif
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_CBM_ALL
lda Z03 lda Z03
bne L29DD bne L29DD
LC9D2: LC9D2:
.endif .endif
CRDO: CRDO:
.ifdef CBM1 .ifdef CBM1
lda Z03 lda Z03
bne LC9D8 bne LC9D8
sta $05 sta $05
LC9D8: LC9D8:
.endif .endif
lda #$0D lda #$0D
.ifndef CONFIG_CBM_ALL .ifndef CONFIG_CBM_ALL
sta Z16 sta Z16
.endif .endif
jsr OUTDO jsr OUTDO
.ifdef APPLE .ifdef APPLE
lda #$80 lda #$80
.else .else
lda #$0A lda #$0A
.endif .endif
jsr OUTDO jsr OUTDO
.endif
.ifndef KBD
PRINTNULLS: PRINTNULLS:
.ifdef CBM1 .if .def(CONFIG_NULL) || .def(CONFIG_PRINTNULLS)
.ifdef CONFIG_FILE
; Although there is no statement for it,
; CBM1 had NULL support and ignores
; it when not targeting the screem,
; CBM2 dropped it completely.
lda Z03 lda Z03
bne L29DD bne L29DD
.endif .endif
.if .def(CONFIG_NULL) || .def(CBM1)
txa txa
pha pha
ldx Z15 ldx Z15
@ -128,13 +138,13 @@ L29D9:
stx Z16 stx Z16
pla pla
tax tax
.else .else
.ifdef APPLE .ifdef APPLE
lda #$00 lda #$00
sta $50 sta $50
.endif .endif
eor #$FF eor #$FF
.endif .endif
.endif .endif
L29DD: L29DD:
rts rts

View File

@ -4,7 +4,7 @@
keyword_rts "FOR", FOR keyword_rts "FOR", FOR
keyword_rts "NEXT", NEXT keyword_rts "NEXT", NEXT
keyword_rts "DATA", DATA keyword_rts "DATA", DATA
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
keyword_rts "INPUT#", INPUTH keyword_rts "INPUT#", INPUTH
.endif .endif
keyword_rts "INPUT", INPUT keyword_rts "INPUT", INPUT
@ -50,7 +50,7 @@
.else .else
keyword_rts "POKE", POKE keyword_rts "POKE", POKE
.endif .endif
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
keyword_rts "PRINT#", PRINTH keyword_rts "PRINT#", PRINTH
.endif .endif
keyword_rts "PRINT", PRINT, TOKEN_PRINT keyword_rts "PRINT", PRINT, TOKEN_PRINT
@ -61,7 +61,7 @@
.else .else
keyword_rts "CLEAR", CLEAR keyword_rts "CLEAR", CLEAR
.endif .endif
.ifdef CONFIG_CBM_ALL .ifdef CONFIG_FILE
keyword_rts "CMD", CMD keyword_rts "CMD", CMD
keyword_rts "SYS", SYS keyword_rts "SYS", SYS
keyword_rts "OPEN", OPEN keyword_rts "OPEN", OPEN