diff --git a/apple_extra.s b/apple_extra.s new file mode 100644 index 0000000..5d86a14 --- /dev/null +++ b/apple_extra.s @@ -0,0 +1,128 @@ +.segment "EXTRA" + + .byte 0,0,0 +L2900: + jsr LFD6A + stx $33 + ldx #$00 +L2907: + lda $0200,x + and #$7F + cmp #$0D + bne L2912 + lda #$00 +L2912: + sta $0200,x + inx + bne L2907 + ldx $33 + rts +PLT: + jmp L29F0 +L291E: + cmp #$47 + bne L2925 + jmp L29E0 +L2925: + cmp #$43 + bne L292B + beq L2988 +L292B: + cmp #$50 + beq L2930 + inx +L2930: + stx $33 +L2932: + jsr FRMEVL + jsr ROUND_FAC + jsr AYINT + lda FAC+4 + ldx $33 + sta $0300,x + dec $33 + bmi L294Dx + lda #$2C + jsr SYNCHR + bpl L2932 +L294Dx: + tay + pla + cmp #$43 + bne L2957 + tya + jmp LF864 +L2957: + cmp #$50 + bne L2962 + tya + ldy $0301 + jmp LF800 +L2962: + pha + lda $0301 + sta $2C + sta $2D + pla + cmp #$48 + bne L2978 + lda $0300 + ldy $0302 + jmp LF819 +L2978: + cmp #$56 + beq L297F + jmp SYNERR +L297F: + ldy $0300 + lda $0302 + jmp LF828 +L2988: + dex + beq L2930 +INLINX: + jsr OUTQUES + jsr OUTSP + ldx #$80 + jmp INLIN1 + .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + .byte 0,0,0,0,0,0,0,0,0,0 +L29D0: + jsr L29DA + lda FAC+3 + sta FAC+5 + jmp (FAC+4) +L29DA: + jmp (GOSTROUT) + brk + brk + brk +L29E0: + pla + jmp LFB40 + .byte 0,0,0,0,0,0,0,0,0,0,0,0 +L29F0: + pha + ldx #$01 + inc $B9 + bne L29F9 + inc $BA +L29F9: + jmp L291E + .byte $00,$00,$00,$00,$41,$53,$21,$D2 + .byte $02,$FA,$00 + lda $12 + beq L2A0E + jmp (L0008) +L2A0E: + jsr LF689 + .byte $15,$BC,$08,$10,$52,$45,$75,$10 + .byte $CD,$00,$55,$15,$9E,$08,$10,$4C + .byte $45,$75,$10,$D4,$00,$55,$15,$0E + .byte $08,$10,$89,$10,$75,$15,$1C,$08 + .byte $10,$1F,$10,$75,$00 + jmp (L0008) +; ---------------------------------------------------------------------------- + .byte 0,0,0,0,0,0 diff --git a/applesoft.cfg b/applesoft.cfg index d05a25d..282471d 100644 --- a/applesoft.cfg +++ b/applesoft.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/cbmbasic1.cfg b/cbmbasic1.cfg index 7d6eb7b..9ff8c96 100644 --- a/cbmbasic1.cfg +++ b/cbmbasic1.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/cbmbasic2.cfg b/cbmbasic2.cfg index 7d6eb7b..9ff8c96 100644 --- a/cbmbasic2.cfg +++ b/cbmbasic2.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/init.s b/init.s index b4a7edb..2da3f0e 100644 --- a/init.s +++ b/init.s @@ -422,178 +422,16 @@ QT_BASIC: .byte $0D,$0A,$00 .endif .endif /* KBD */ + +.segment "EXTRA" + .ifdef OSI - .byte $00,$00 -LBEE4: - lda LBF05 - lsr a - bcc LBEE4 - lda $FB03 - sta $FB07 - and #$7F - rts - pha -LBEF4: - lda $FB05 - bpl LBEF4 - pla - sta $FB04 - rts - lda $FB06 - lda #$FF - .byte $8D - .byte $05 -LBF05: - .byte $FB - rts -LBF07: - lda $FC00 - lsr a - bcc LBF07 - lda $FC01 - beq LBF07 - and #$7F - rts - pha -LBF16: - lda $FC00 - lsr a - lsr a - bcc LBF16 - pla - sta $FC01 - rts - lda #$03 - sta $FC00 - lda #$B1 - sta $FC00 - rts - sta $0202 - pha - txa - pha - tya - pha - lda $0202 - beq LBF6D - ldy $0206 - beq LBF47 -LBF3F: - ldx #$40 -LBF41: - dex - bne LBF41 - dey - bne LBF3F -LBF47: - cmp #$0A - beq LBF76 - cmp #$0D - bne LBF55 - jsr LBFD5 - jmp LBF6D -LBF55: - sta $0201 - jsr LBFC2 - inc $0200 - lda $FFE1 - clc - adc $FFE0 - cmp $0200 - bmi LBF73 -LBF6A: - jsr LBFDE -LBF6D: - pla - tay - pla - tax - pla - rts -LBF73: - jsr LBFD8 -LBF76: - jsr LBFC2 - lda $FFE0 - and #$E0 - sta $0202 - ldx #$07 -LBF83: - lda LBFF3,x - sta L0207,x - dex - bpl LBF83 - ldx LBFFB,y - lda #$20 - ldy $FFE1 - cpy #$20 - bmi LBF99 - asl a -LBF99: - sta $0208 - ldy #$00 -LBF9E: - jsr L0207 - bne LBF9E - inc $0209 - inc $020C - cpx $0209 - bne LBF9E -LBFAE: - jsr L0207 - cpy $0202 - bne LBFAE - lda #$20 -LBFB8: - jsr L020A - dec $0208 - bne LBFB8 - beq LBF6A -LBFC2: - ldx $0200 - lda $0201 -LBFC8: - ldy $FFE2 - bne LBFD1 - sta $D300,x - rts -LBFD1: - sta $D700,x - rts -LBFD5: - jsr LBFC2 -LBFD8: - lda $FFE0 - sta $0200 -LBFDE: - ldx $0200 - lda $D300,x - ldy $FFE2 - beq LBFEC - lda $D700,x -LBFEC: - sta $0201 - lda #$5F - bne LBFC8 -LBFF3: - lda $D000,y - sta $D000,y - iny - rts -LBFFB: - .byte $D3 - .byte $D7 - brk - brk - brk -.endif /* CONFIG_SMALL */ +.include "osi_extra.s" +.endif + .ifdef KIM -RAMSTART2: - .byte $08,$29,$25,$20,$60,$2A,$E5,$E4 - .byte $20,$66,$24,$65,$AC,$04,$A4 -.endif /* KIM */ - - +.include "kim_extra.s" +.endif .ifdef CONFIG_CBM1_PATCHES .include "cbm1_patches.s" @@ -601,462 +439,9 @@ RAMSTART2: .ifdef KBD - stx SHIFTSIGNEXT - stx $0800 - inx - stx Z17 - stx Z18 - stx TXTTAB - lda #$08 - sta TXTTAB+1 - jsr SCRTCH - sta STACK+255 - jsr LDE42 - .byte $1B,$06,$01,$0C - .byte "INTELLIVISION BASIC" - .byte $0D,$0A,$0A - .byte "Copyright Microsoft, Mattel 1980" - .byte $0D,$0A,$00 - sta $0435 - sta $8F - ldy #$0F - lda #$FF - sta ($04),y - jsr LDE8C - .byte $0C - jmp RESTART -OUTQUESSP: - jsr OUTQUES - jmp OUTSP -LFDDA: - ldy #$FF -LFDDC: - iny -LFDDD: - jsr LF43B - cmp #$03 - beq LFDF7 - cmp #$20 - bcs LFDEC - sbc #$09 - bne LFDDD -LFDEC: - sta Z00,y - tax - bne LFDDC - jsr LE882 - ldy #$06 -LFDF7: - tax - clc - rts -LFDFA: - bit $8F - bmi LFE01 - jsr LDE48 -LFE01: - bit $8F - bvc LFE10 - jmp LDE53 -LFE08: - jsr LFDFA -LFE0B: - jsr LDE24 - bne LFE08 -LFE10: - rts -VSAV: - jsr GARBAG - lda FRETOP - sta $00 - lda FRETOP+1 - .byte $85 -LFE1B: - ora ($A5,x) - .byte $2F - sta $02 - lda STREND+1 - sta $03 - ldy #$00 -LFE26: - lda ($00),y - sta ($02),y - inc $02 - bne LFE30 - inc $03 -LFE30: - inc $00 - bne LFE26 - inc $01 - bit $01 - bvc LFE26 - ldx VARTAB - ldy VARTAB+1 - lda #$01 - bne LFE50 -PSAV: - lda VARTAB - sta $02 - lda VARTAB+1 - sta $03 - ldx #$01 - ldy #$08 - lda #$02 -LFE50: - sta $0513 - stx $0503 - stx $00 - sty $0504 - sty $01 - ldy #$0D - lda #$00 -LFE61: - sta $0504,y - dey - bne LFE61 - sty $0500 - lda #$40 - sta $0505 - lda $02 - sec - sbc $00 - sta $00 - lda $03 - sbc $01 - sta $01 - lsr a - lsr a - lsr a - sta $03 - jsr LE870 - sta $02 - jsr CHRGOT - beq LFEA6 - cmp #$2C - beq L40FA - jmp SYNERR -L40FA: - jsr CHRGET - jsr LE870 - sec - sbc $02 - cmp $03 - bpl LFEBF - lda #$27 - sta JMPADRS - jmp LFFBD -LFEA6: - lda $02 - clc - adc $03 - jsr LE874 - pha - jsr LFE0B - jsr L6874 - .byte $72 - adc $00,x - pla - tax - lda #$00 - jsr LINPRT -LFEBF: - ldx #$07 -LBF83: - dex - lda VARTAB,x - sec - sbc TXTTAB,x - sta $051B,x - lda VARTAB+1,x - sbc TXTTAB+1,x - sta $051C,x - dex - bpl LBF83 - txa - sbc FRETOP - sta $0521 - lda #$3F - sbc FRETOP+1 - sta $0522 - lda FRETOP - sta $0523 - lda FRETOP+1 - sta $0524 - ldx $02 - jsr LFFDD - jsr LFFD1 - lda $01 - ldx #$05 -LFEF7: - stx $0511 - ldy #$E4 - sec - sbc #$08 - sta $01 - bpl LFF15 - adc #$08 - asl $00 - rol a - asl $00 - rol a - asl $00 - rol a - adc #$01 - sta $0505 - ldy #$00 -LFF15: - sty $0512 - jsr LE4C0 - ldx #$00 - lda $01 - bpl LFEF7 -LFF21: - rts -VLOD: - jsr LFFD1 - stx JMPADRS - lda VARTAB - ldy VARTAB+1 - ldx #$01 - jsr LFF64 - ldx #$00 - ldy #$02 -LFF34: - jsr LE39A - iny - iny - inx - inx - cpx #$05 - bmi LFF34 - lda STREND - sta LOWTR - lda STREND+1 - sta LOWTR+1 - lda FRETOP - sta HIGHTR - lda FRETOP+1 - sta HIGHTR+1 - lda #$FF - sta HIGHDS - lda #$3F - sta HIGHDS+1 - lda $0523 - sta FRETOP - lda $0524 - sta FRETOP+1 - jmp BLTU2 -LFF64: - sta $9A - sty $9B - stx $00 - jsr LE870 - jsr LFFDD - lda JMPADRS - beq LFF7F - lda #$01 - sta $9A - lda #$08 - sta $9B - jsr STXTPT -LFF7F: - lda $9A - sta $0503 - lda $9B - sta $0504 - lda #$ED - sta $0512 - lda #$05 - sta $01 -LFF92: - ldx $0512 - beq LFF21 - ldy #$04 - jsr LE4C4 - lda $01 - cmp $0511 - bne LFFB2 - lda #$00 - sta $01 - lda $00 - cmp $0513 - beq LFF92 - lda #$18 - bne LFFB8 -LFFB2: - lda #$27 - bne LFFB8 -LFFB6: - lda #$3C -LFFB8: - sta JMPADRS - jsr CLEARC -LFFBD: - jsr LF422 - sta $9A - sty $9B - lda #$00 - tay - sta ($9A),y - iny - sta ($9A),y - ldx JMPADRS - jmp ERROR -LFFD1: - ldx #$00 -LFFD3: - lda #$02 - .byte $2C -LFFD6: - lda #$03 - jsr LDE8C - asl FACSIGN -LFFDD: - jsr CHRGOT - beq LFFE5 - jmp SYNERR -LFFE5: - lda #$0D - ldy #$00 - jsr LDE8C - .byte $06 -LFFED: - lda $034C - bmi LFFED - ldy #$01 - lda ($04),y - bne LFFB6 - rts - .byte $FF - .addr LC000 - .addr LC000 - .addr LC009 +.include "kbd_extra.s" .endif + .ifdef APPLE - .byte 0,0,0 -L2900: - jsr LFD6A - stx $33 - ldx #$00 -L2907: - lda $0200,x - and #$7F - cmp #$0D - bne L2912 - lda #$00 -L2912: - sta $0200,x - inx - bne L2907 - ldx $33 - rts -PLT: - jmp L29F0 -L291E: - cmp #$47 - bne L2925 - jmp L29E0 -L2925: - cmp #$43 - bne L292B - beq L2988 -L292B: - cmp #$50 - beq L2930 - inx -L2930: - stx $33 -L2932: - jsr FRMEVL - jsr ROUND_FAC - jsr AYINT - lda FAC+4 - ldx $33 - sta $0300,x - dec $33 - bmi L294Dx - lda #$2C - jsr SYNCHR - bpl L2932 -L294Dx: - tay - pla - cmp #$43 - bne L2957 - tya - jmp LF864 -L2957: - cmp #$50 - bne L2962 - tya - ldy $0301 - jmp LF800 -L2962: - pha - lda $0301 - sta $2C - sta $2D - pla - cmp #$48 - bne L2978 - lda $0300 - ldy $0302 - jmp LF819 -L2978: - cmp #$56 - beq L297F - jmp SYNERR -L297F: - ldy $0300 - lda $0302 - jmp LF828 -L2988: - dex - beq L2930 -INLINX: - jsr OUTQUES - jsr OUTSP - ldx #$80 - jmp INLIN1 - .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - .byte 0,0,0,0,0,0,0,0,0,0 -L29D0: - jsr L29DA - lda FAC+3 - sta FAC+5 - jmp (FAC+4) -L29DA: - jmp (GOSTROUT) - brk - brk - brk -L29E0: - pla - jmp LFB40 - .byte 0,0,0,0,0,0,0,0,0,0,0,0 -L29F0: - pha - ldx #$01 - inc $B9 - bne L29F9 - inc $BA -L29F9: - jmp L291E - .byte $00,$00,$00,$00,$41,$53,$21,$D2 - .byte $02,$FA,$00 - lda $12 - beq L2A0E - jmp (L0008) -L2A0E: - jsr LF689 - .byte $15,$BC,$08,$10,$52,$45,$75,$10 - .byte $CD,$00,$55,$15,$9E,$08,$10,$4C - .byte $45,$75,$10,$D4,$00,$55,$15,$0E - .byte $08,$10,$89,$10,$75,$15,$1C,$08 - .byte $10,$1F,$10,$75,$00 - jmp (L0008) -; ---------------------------------------------------------------------------- - .byte 0,0,0,0,0,0 +.include "apple_extra.s" .endif \ No newline at end of file diff --git a/kb9.cfg b/kb9.cfg index 8776a08..2448a8e 100644 --- a/kb9.cfg +++ b/kb9.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/kbd_extra.s b/kbd_extra.s new file mode 100644 index 0000000..0096178 --- /dev/null +++ b/kbd_extra.s @@ -0,0 +1,331 @@ +.segment "EXTRA" + stx SHIFTSIGNEXT + stx $0800 + inx + stx Z17 + stx Z18 + stx TXTTAB + lda #$08 + sta TXTTAB+1 + jsr SCRTCH + sta STACK+255 + jsr LDE42 + .byte $1B,$06,$01,$0C + .byte "INTELLIVISION BASIC" + .byte $0D,$0A,$0A + .byte "Copyright Microsoft, Mattel 1980" + .byte $0D,$0A,$00 + sta $0435 + sta $8F + ldy #$0F + lda #$FF + sta ($04),y + jsr LDE8C + .byte $0C + jmp RESTART +OUTQUESSP: + jsr OUTQUES + jmp OUTSP +LFDDA: + ldy #$FF +LFDDC: + iny +LFDDD: + jsr LF43B + cmp #$03 + beq LFDF7 + cmp #$20 + bcs LFDEC + sbc #$09 + bne LFDDD +LFDEC: + sta Z00,y + tax + bne LFDDC + jsr LE882 + ldy #$06 +LFDF7: + tax + clc + rts +LFDFA: + bit $8F + bmi LFE01 + jsr LDE48 +LFE01: + bit $8F + bvc LFE10 + jmp LDE53 +LFE08: + jsr LFDFA +LFE0B: + jsr LDE24 + bne LFE08 +LFE10: + rts +VSAV: + jsr GARBAG + lda FRETOP + sta $00 + lda FRETOP+1 + .byte $85 +LFE1B: + ora ($A5,x) + .byte $2F + sta $02 + lda STREND+1 + sta $03 + ldy #$00 +LFE26: + lda ($00),y + sta ($02),y + inc $02 + bne LFE30 + inc $03 +LFE30: + inc $00 + bne LFE26 + inc $01 + bit $01 + bvc LFE26 + ldx VARTAB + ldy VARTAB+1 + lda #$01 + bne LFE50 +PSAV: + lda VARTAB + sta $02 + lda VARTAB+1 + sta $03 + ldx #$01 + ldy #$08 + lda #$02 +LFE50: + sta $0513 + stx $0503 + stx $00 + sty $0504 + sty $01 + ldy #$0D + lda #$00 +LFE61: + sta $0504,y + dey + bne LFE61 + sty $0500 + lda #$40 + sta $0505 + lda $02 + sec + sbc $00 + sta $00 + lda $03 + sbc $01 + sta $01 + lsr a + lsr a + lsr a + sta $03 + jsr LE870 + sta $02 + jsr CHRGOT + beq LFEA6 + cmp #$2C + beq L40FA + jmp SYNERR +L40FA: + jsr CHRGET + jsr LE870 + sec + sbc $02 + cmp $03 + bpl LFEBF + lda #$27 + sta JMPADRS + jmp LFFBD +LFEA6: + lda $02 + clc + adc $03 + jsr LE874 + pha + jsr LFE0B + jsr L6874 + .byte $72 + adc $00,x + pla + tax + lda #$00 + jsr LINPRT +LFEBF: + ldx #$07 +LBF83: + dex + lda VARTAB,x + sec + sbc TXTTAB,x + sta $051B,x + lda VARTAB+1,x + sbc TXTTAB+1,x + sta $051C,x + dex + bpl LBF83 + txa + sbc FRETOP + sta $0521 + lda #$3F + sbc FRETOP+1 + sta $0522 + lda FRETOP + sta $0523 + lda FRETOP+1 + sta $0524 + ldx $02 + jsr LFFDD + jsr LFFD1 + lda $01 + ldx #$05 +LFEF7: + stx $0511 + ldy #$E4 + sec + sbc #$08 + sta $01 + bpl LFF15 + adc #$08 + asl $00 + rol a + asl $00 + rol a + asl $00 + rol a + adc #$01 + sta $0505 + ldy #$00 +LFF15: + sty $0512 + jsr LE4C0 + ldx #$00 + lda $01 + bpl LFEF7 +LFF21: + rts +VLOD: + jsr LFFD1 + stx JMPADRS + lda VARTAB + ldy VARTAB+1 + ldx #$01 + jsr LFF64 + ldx #$00 + ldy #$02 +LFF34: + jsr LE39A + iny + iny + inx + inx + cpx #$05 + bmi LFF34 + lda STREND + sta LOWTR + lda STREND+1 + sta LOWTR+1 + lda FRETOP + sta HIGHTR + lda FRETOP+1 + sta HIGHTR+1 + lda #$FF + sta HIGHDS + lda #$3F + sta HIGHDS+1 + lda $0523 + sta FRETOP + lda $0524 + sta FRETOP+1 + jmp BLTU2 +LFF64: + sta $9A + sty $9B + stx $00 + jsr LE870 + jsr LFFDD + lda JMPADRS + beq LFF7F + lda #$01 + sta $9A + lda #$08 + sta $9B + jsr STXTPT +LFF7F: + lda $9A + sta $0503 + lda $9B + sta $0504 + lda #$ED + sta $0512 + lda #$05 + sta $01 +LFF92: + ldx $0512 + beq LFF21 + ldy #$04 + jsr LE4C4 + lda $01 + cmp $0511 + bne LFFB2 + lda #$00 + sta $01 + lda $00 + cmp $0513 + beq LFF92 + lda #$18 + bne LFFB8 +LFFB2: + lda #$27 + bne LFFB8 +LFFB6: + lda #$3C +LFFB8: + sta JMPADRS + jsr CLEARC +LFFBD: + jsr VARTAB_MINUS_2_TO_AY + sta $9A + sty $9B + lda #$00 + tay + sta ($9A),y + iny + sta ($9A),y + ldx JMPADRS + jmp ERROR +LFFD1: + ldx #$00 +LFFD3: + lda #$02 + .byte $2C +LFFD6: + lda #$03 + jsr LDE8C + asl FACSIGN +LFFDD: + jsr CHRGOT + beq LFFE5 + jmp SYNERR +LFFE5: + lda #$0D + ldy #$00 + jsr LDE8C + .byte $06 +LFFED: + lda $034C + bmi LFFED + ldy #$01 + lda ($04),y + bne LFFB6 + rts + .byte $FF + .addr LC000 + .addr LC000 + .addr LC009 diff --git a/kbdbasic.cfg b/kbdbasic.cfg index f64810c..172d773 100644 --- a/kbdbasic.cfg +++ b/kbdbasic.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/kim_extra.s b/kim_extra.s new file mode 100644 index 0000000..37f03ce --- /dev/null +++ b/kim_extra.s @@ -0,0 +1,5 @@ +.segment "EXTRA" + +RAMSTART2: + .byte $08,$29,$25,$20,$60,$2A,$E5,$E4 + .byte $20,$66,$24,$65,$AC,$04,$A4 diff --git a/misc3.s b/misc3.s index 183a723..0885455 100644 --- a/misc3.s +++ b/misc3.s @@ -1,7 +1,9 @@ +; KBD specific patches + .segment "CODE" .ifdef KBD -LF422: +VARTAB_MINUS_2_TO_AY: lda VARTAB sec sbc #$02 @@ -10,17 +12,21 @@ LF422: dey LF42C: rts -LF42D: - lda Z00,x + +; ---------------------------------------------------------------------------- +GET_UPPER: + lda INPUTBUFFERX,x LF430: - cmp #$61 + cmp #'a' bcc LF43A - cmp #$7B + cmp #'z'+1 bcs LF43A LF438: sbc #$1F LF43A: rts + +; ---------------------------------------------------------------------------- LF43B: ldx #$5D LF43D: @@ -38,6 +44,8 @@ LF44D: bcc LF44D RTS4: rts + +; ---------------------------------------------------------------------------- LF457: lda TXTTAB ldx TXTTAB+1 diff --git a/osi.cfg b/osi.cfg index 936f747..1085a34 100644 --- a/osi.cfg +++ b/osi.cfg @@ -13,6 +13,7 @@ SEGMENTS { CODE: load = BASROM, type = ro; CHRGET: load = BASROM, type = ro; INIT: load = BASROM, type = ro; + EXTRA: load = BASROM, type = ro; DUMMY: load = DUMMY; # don't include } diff --git a/osi_extra.s b/osi_extra.s new file mode 100644 index 0000000..26f67ab --- /dev/null +++ b/osi_extra.s @@ -0,0 +1,165 @@ +.segment "EXTRA" + + .byte $00,$00 +LBEE4: + lda LBF05 + lsr a + bcc LBEE4 + lda $FB03 + sta $FB07 + and #$7F + rts + pha +LBEF4: + lda $FB05 + bpl LBEF4 + pla + sta $FB04 + rts + lda $FB06 + lda #$FF + .byte $8D + .byte $05 +LBF05: + .byte $FB + rts +LBF07: + lda $FC00 + lsr a + bcc LBF07 + lda $FC01 + beq LBF07 + and #$7F + rts + pha +LBF16: + lda $FC00 + lsr a + lsr a + bcc LBF16 + pla + sta $FC01 + rts + lda #$03 + sta $FC00 + lda #$B1 + sta $FC00 + rts + sta $0202 + pha + txa + pha + tya + pha + lda $0202 + beq LBF6D + ldy $0206 + beq LBF47 +LBF3F: + ldx #$40 +LBF41: + dex + bne LBF41 + dey + bne LBF3F +LBF47: + cmp #$0A + beq LBF76 + cmp #$0D + bne LBF55 + jsr LBFD5 + jmp LBF6D +LBF55: + sta $0201 + jsr LBFC2 + inc $0200 + lda $FFE1 + clc + adc $FFE0 + cmp $0200 + bmi LBF73 +LBF6A: + jsr LBFDE +LBF6D: + pla + tay + pla + tax + pla + rts +LBF73: + jsr LBFD8 +LBF76: + jsr LBFC2 + lda $FFE0 + and #$E0 + sta $0202 + ldx #$07 +LBF83: + lda LBFF3,x + sta L0207,x + dex + bpl LBF83 + ldx LBFFB,y + lda #$20 + ldy $FFE1 + cpy #$20 + bmi LBF99 + asl a +LBF99: + sta $0208 + ldy #$00 +LBF9E: + jsr L0207 + bne LBF9E + inc $0209 + inc $020C + cpx $0209 + bne LBF9E +LBFAE: + jsr L0207 + cpy $0202 + bne LBFAE + lda #$20 +LBFB8: + jsr L020A + dec $0208 + bne LBFB8 + beq LBF6A +LBFC2: + ldx $0200 + lda $0201 +LBFC8: + ldy $FFE2 + bne LBFD1 + sta $D300,x + rts +LBFD1: + sta $D700,x + rts +LBFD5: + jsr LBFC2 +LBFD8: + lda $FFE0 + sta $0200 +LBFDE: + ldx $0200 + lda $D300,x + ldy $FFE2 + beq LBFEC + lda $D700,x +LBFEC: + sta $0201 + lda #$5F + bne LBFC8 +LBFF3: + lda $D000,y + sta $D000,y + iny + rts +LBFFB: + .byte $D3 + .byte $D7 + brk + brk + brk diff --git a/poke.s b/poke.s index 96f22f6..117a86c 100644 --- a/poke.s +++ b/poke.s @@ -44,10 +44,10 @@ GETADR: ; "PEEK" FUNCTION ; ---------------------------------------------------------------------------- PEEK: -.ifdef CBM2_KBD - lda $12 +.ifdef CBM2 + lda LINNUM+1 pha - lda $11 + lda LINNUM pha .endif jsr GETADR @@ -59,7 +59,7 @@ PEEK: bcc LD6F6 LD6F3: .endif -.ifdef CBM2_KBD +.ifdef CBM2 nop ; patch that disables the compares above nop nop @@ -71,11 +71,11 @@ LD6F3: .endif lda (LINNUM),y tay -.ifdef CBM2_KBD +.ifdef CBM2 pla - sta $11 + sta LINNUM pla - sta $12 + sta LINNUM+1 .endif LD6F6: jmp SNGFLT diff --git a/program.s b/program.s index ad3e07b..73b01f7 100644 --- a/program.s +++ b/program.s @@ -302,7 +302,7 @@ PLOD: iny sty JMPADRS jsr LFFD3 - jsr LF422 + jsr VARTAB_MINUS_2_TO_AY ldx #$02 jsr LFF64 ldx #$6F @@ -495,13 +495,13 @@ L2497: inx L2498: .ifdef KBD - jsr LF42D + jsr GET_UPPER .else lda INPUTBUFFERX,x -.ifndef CBM2 + .ifndef CBM2 cmp #$20 beq L2497 -.endif + .endif .endif sec sbc TOKEN_NAME_TABLE,y