From 36aff42b397a97d6e971cd6b3b9f421a5b17477f Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Sun, 7 Nov 2021 12:52:15 -0800 Subject: [PATCH] wip --- ace2000_c300_cfff.s | 147 +++++++++++++++++++++------------------ ace500_c300_cfff.s | 166 +++++++++++++++++++++++--------------------- 2 files changed, 167 insertions(+), 146 deletions(-) diff --git a/ace2000_c300_cfff.s b/ace2000_c300_cfff.s index 2969f20..c8be041 100644 --- a/ace2000_c300_cfff.s +++ b/ace2000_c300_cfff.s @@ -6,6 +6,7 @@ .setcpu "65C02" .include "opcodes.inc" + .feature string_escapes ;;; Zero Page @@ -250,7 +251,7 @@ EscapeMode: lda #M_ESC tsb MODE jsr LC850 - jsr LC933 + jsr ProcessEscapeModeKey cmp #$98 ; ctrl-x (clear) beq LC3AA lda MODE ; still in escape mode? @@ -565,68 +566,72 @@ LC871: pha pla rts2: rts +;;; ============================================================ + LC877: jsr LC850 cmp #$00 - beq LC89F + beq @l4 cmp #$02 beq LC80E cmp #$05 bne rts2 ldy CH -LC888: iny +@l1: iny cpy WNDWDTH - beq LC897 + beq @l2 jsr LCEC0 dey jsr LCECB iny - bra LC888 + bra @l1 -LC897: dey -LC898: lda #$A0 +@l2: dey +@l3: lda #$A0 jsr LCECB bra LC877 -LC89F: ldy WNDWDTH +@l4: ldy WNDWDTH dey -LC8A2: cpy CH - beq LC898 +@l5: cpy CH + beq @l3 dey jsr LCEC0 iny jsr LCECB dey - bra LC8A2 + bra @l5 + +;;; ============================================================ LC8B1: sta CHAR -LC8B4: jsr LC992 +LC8B4: jsr CheckPauseListing lda MODE and #$03 ; test low 3 bits - beq LC8C1 + beq @l1 jmp LCA11 -LC8C1: lda CHAR +@l1: lda CHAR and #$7F cmp #$20 bcc DoCtrlCharOut ldy CH cpy WNDWDTH - bcc LC8D3 + bcc @l2 jsr DoReturn -LC8D3: lda CHAR ; char to be printed +@l2: lda CHAR ; char to be printed bit INVFLG - bmi LC8F0 + bmi @l3 and #$7F bit MODE - bvs LC8F0 ; test bit 6 (MouseText active) + bvs @l3 ; test bit 6 (MouseText active) bit ALTCHARSET - bpl LC8F0 + bpl @l3 cmp #$40 - bcc LC8F0 + bcc @l3 cmp #$60 - bcs LC8F0 + bcs @l3 and #$1F -LC8F0: jsr LCBF9 +@l3: jsr LCBF9 jmp DoForwardSpace ;;; ============================================================ @@ -644,9 +649,9 @@ DoCtrlCharOut: bcc DoNothing asl a tax - jmp (jt1,x) + jmp (@jt,x) -jt1: +@jt: .addr DoBell ; $07 Ctrl-G Bell .addr DoBackspace ; $08 Ctrl-H Backspace .addr DoNothing ; $09 Ctrl-I @@ -674,37 +679,35 @@ jt1: .addr DoUp ; $1F Ctrl-_ Up ;;; ============================================================ -;;; GetLn handling ;;; For Escape key sequences -LC933: pha +ProcessEscapeModeKey: + pha lda #M_ESC - trb MODE ; clear high bit + trb MODE pla and #$7F cmp #'a' - bcc LC946 + bcc @l1 cmp #'z'+1 - bcs LC946 + bcs @l1 and #$DF ; convert to uppercase ;; Scan table for match -LC946: ldx #$00 -LC948: ldy code_table,x +@l1: ldx #$00 +@l2: ldy @code_table,x beq DoNothing - cmp code_table,x - beq LC955 + cmp @code_table,x + beq @l3 inx - bra LC948 + bra @l2 -LC955: txa +@l3: txa asl a tax - jmp (jt2,x) + jmp (@jt,x) - - ;; Character match table -code_table: +@code_table: .byte '@' ; Escape @ - clear, home & exit mode .byte 'A' ; Escape A - right & exit mode .byte 'B' ; Escape B - left & exit mode @@ -726,9 +729,7 @@ code_table: .byte $00 ; sentinel - - ;; Jump table -jt2: +@jt: .addr DoHomeAndClear ; Escape @ - clear, home & exit mode .addr DoForwardSpace ; Escape A - right & exit mode .addr DoBackspace ; Escape B - left & exit mode @@ -750,7 +751,7 @@ jt2: ;;; ============================================================ -LC992: +CheckPauseListing: lda KBD cmp #$93 ; Ctrl-S bne rts3 @@ -1442,9 +1443,12 @@ LCDE2: jsr LCE2E plx rts - ;; ??? - .byte $52, $55, $4e, $0d, $00 - .byte $4c, $49, $53, $54, $0d, $00, $ff +;;; ============================================================ + + ;; Function key shortcuts ??? + .byte "RUN\r", 0 + .byte "LIST\r", 0 + .byte $ff ;;; ============================================================ @@ -1528,6 +1532,7 @@ DoHomeAndClear: DoClearEOL: LDXY CLREOL + ;; fall through ;;; ============================================================ @@ -1538,9 +1543,9 @@ ROMCall: php bit RDLCBNK2 php - lda #.hibyte(LCE87-1) + lda #.hibyte(ROMCallReturn-1) pha - lda #.lobyte(LCE87-1) + lda #.lobyte(ROMCallReturn-1) pha phx phy @@ -1548,30 +1553,28 @@ ROMCall: lda TEMP2 rts -;;; ============================================================ - -;;; Return from ROMCall -LCE87: plp - bpl LCE9D +ROMCallReturn: plp - bpl LCE95 + bpl @l2 + plp + bpl @l1 bit LCBANK2 bit LCBANK2 - bra LCEAE + bra @l4 -LCE95: bit ROMIN +@l1: bit ROMIN bit ROMIN - bra LCEAE + bra @l4 -LCE9D: plp - bpl LCEA8 +@l2: plp + bpl @l3 bit LCBANK1 bit LCBANK1 - bra LCEAE + bra @l4 -LCEA8: bit $C089 ; ??? +@l3: bit $C089 ; ??? bit $C089 ; ??? -LCEAE: lda BASL +@l4: lda BASL sta OLDBASL lda BASH sta OLDBASH @@ -1579,6 +1582,8 @@ LCEAE: lda BASL sta OURCH rts +;;; ============================================================ + LCEBE: ldy CH LCEC0: phy jsr LCED5 @@ -1587,23 +1592,29 @@ LCEC6: ply bit TXTPAGE1 rts -LCECB: phy +;;; ============================================================ + +LCECB: + phy pha jsr LCED5 pla sta (BASL),y bra LCEC6 -LCED5: bit RD80VID - bpl LCEDF +;;; ============================================================ + +LCED5: + bit RD80VID + bpl @l1 tya lsr a tay - bcc LCEE3 -LCEDF: bit TXTPAGE1 + bcc @l2 +@l1: bit TXTPAGE1 rts -LCEE3: bit TXTPAGE2 +@l2: bit TXTPAGE2 rts ;;; ============================================================ diff --git a/ace500_c300_cfff.s b/ace500_c300_cfff.s index 28e8b48..78b0932 100644 --- a/ace500_c300_cfff.s +++ b/ace500_c300_cfff.s @@ -205,7 +205,7 @@ EscapeMode: lda #M_ESC tsb MODE jsr LC822 - jsr LC8CB + jsr ProcessEscapeModeKey cmp #$98 beq LC38A lda MODE @@ -532,7 +532,7 @@ LC5BC: bit $C1C1 sta $C090 bra LC594 LC5C6: jsr LC594 - jsr LC9A5 + jsr $C9A5 bra LC5A8 brk brk @@ -595,7 +595,7 @@ LC60D: lda LCF26,y LC618: inc BAS2H cpx BAS2H bne LC618 - jsr LCEA6 + jsr $CEA6 LC621: dec $41 bne LC621 LC625: dec A1H @@ -977,35 +977,37 @@ LC840: sta CHAR LC847: pla rts +;;; ============================================================ + LC849: sta CHAR -LC84C: jsr LC92A +LC84C: jsr CheckPauseListing lda MODE and #$03 - beq LC859 + beq @l1 jmp LCA2F -LC859: lda CHAR +@l1: lda CHAR and #$7F cmp #$20 bcc DoCtrlCharOut ldy CH cpy WNDWDTH - bcc LC86B + bcc @l2 jsr DoReturn -LC86B: lda CHAR +@l2: lda CHAR bit INVFLG - bmi LC888 + bmi @l3 and #$7F bit MODE - bvs LC888 + bvs @l3 bit ALTCHARSET - bpl LC888 + bpl @l3 cmp #$40 - bcc LC888 + bcc @l3 cmp #$60 - bcs LC888 + bcs @l3 and #$1F -LC888: jsr LCC13 +@l3: jsr LCC13 jmp DoForwardSpace ;;; ============================================================ @@ -1023,11 +1025,9 @@ DoCtrlCharOut: bcc DoNothing asl a tax - jmp (jt1,x) + jmp (@jt,x) - ;; Jump Table - -jt1: +@jt: .addr DoBell ; $07 Ctrl-G Bell .addr DoBackspace ; $08 Ctrl-H Backspace .addr DoNothing ; $09 Ctrl-I @@ -1055,34 +1055,35 @@ jt1: .addr DoUp ; $1F Ctrl-_ Up ;;; ============================================================ -;;; GetLn handling ;;; For Escape key sequences -LC8CB: pha +ProcessEscapeModeKey: + pha lda #M_ESC trb MODE pla and #$7F - cmp #$61 - bcc LC8DE - cmp #$7B - bcs LC8DE - and #$DF + cmp #'a' + bcc @l1 + cmp #'z'+1 + bcs @l1 + and #$DF ; convert to uppercase -LC8DE: ldx #$00 -LC8E0: ldy code_table,x + ;; Scan table for match +@l1: ldx #$00 +@l2: ldy @code_table,x beq DoNothing - cmp code_table,x - beq LC8ED + cmp @code_table,x + beq @l3 inx - bra LC8E0 + bra @l2 -LC8ED: txa +@l3: txa asl a tax - jmp (jt2,x) + jmp (@jt,x) -code_table: +@code_table: .byte '@' ; Escape @ - clear, home & exit mode .byte 'A' ; Escape A - right & exit mode .byte 'B' ; Escape B - left & exit mode @@ -1104,9 +1105,7 @@ code_table: .byte $00 ; sentinel - - ;; Jump table -jt2: +@jt: .addr DoHomeAndClear ; Escape @ - clear, home & exit mode .addr DoForwardSpace ; Escape A - right & exit mode .addr DoBackspace ; Escape B - left & exit mode @@ -1128,7 +1127,7 @@ jt2: ;;; ============================================================ -LC92A: +CheckPauseListing: lda KBD cmp #$93 ; Ctrl-S bne @l3 @@ -1145,14 +1144,14 @@ LC92A: LC941: ldy #$00 ldx #$00 -LC945: cpy WNDWDTH - bcs LC953 +@l1: cpy WNDWDTH + bcs @l2 jsr LC9A8 sta $0200,x inx iny - bra LC945 -LC953: dey + bra @l1 +@l2: dey sty CH .byte $8E ; bad disasm sei @@ -1176,43 +1175,48 @@ Do40Col: LC96F: jsr LC822 cmp #$00 - beq LC997 + beq @l4 cmp #$02 beq LC941 cmp #$05 bne LC95B ldy CH -LC980: iny +@l1: iny cpy WNDWDTH - beq LC98F + beq @l2 jsr LC9A8 dey jsr LCEC8 iny - bra LC980 + bra @l1 -LC98F: dey -LC990: lda #$A0 +@l2: dey +@l3: lda #$A0 jsr LCEC8 bra LC96F -LC997: ldy WNDWDTH +@l4: ldy WNDWDTH dey cpy CH - beq LC990 + beq @l3 dey - .byte $20 -LC9A0: tay + .byte $20 ; bad disasm + tay cmp #$C8 .byte $20 iny -LC9A5: dec $F180 + dec $F180 + +;;; ============================================================ + LC9A8: jsr LCEBD ora #$80 cmp #$A0 - bcs LC9B3 + bcs @l1 ora #$40 -LC9B3: rts +@l1: rts + +;;; ============================================================ LC9B4: bit RD80VID bpl LC9CC @@ -1934,9 +1938,9 @@ ROMCall: php bit RDLCBNK2 php - lda #.hibyte(LCE84-1) + lda #.hibyte(ROMCallReturn-1) pha - lda #.lobyte(LCE84-1) + lda #.lobyte(ROMCallReturn-1) pha phx phy @@ -1944,31 +1948,28 @@ ROMCall: lda TEMP2 rts -;;; ============================================================ - -;;; Return from ROMCall -LCE84: plp - bpl LCE9A +ROMCallReturn: plp - bpl LCE92 + bpl @l2 + plp + bpl @l1 bit LCBANK2 bit LCBANK2 - bra LCEAB + bra @l4 -LCE92: bit ROMIN +@l1: bit ROMIN bit ROMIN - bra LCEAB + bra @l4 -LCE9A: plp - bpl LCEA5 +@l2: plp + bpl @l3 bit LCBANK1 bit LCBANK1 - bra LCEAB + bra @l4 -LCEA5: .byte $2C -LCEA6: bit #$C0 - bit $C089 -LCEAB: lda BASL +@l3: bit $C089 ; ??? + bit $C089 ; ??? +@l4: lda BASL sta OLDBASL lda BASH sta OLDBASH @@ -1976,6 +1977,8 @@ LCEAB: lda BASL sta OURCH rts +;;; ============================================================ + LCEBB: ldy CH LCEBD: phy jsr LCED2 @@ -1984,22 +1987,29 @@ LCEC3: ply bit TXTPAGE1 rts -LCEC8: phy +;;; ============================================================ + +LCEC8: + phy pha jsr LCED2 pla sta (BASL),y bra LCEC3 -LCED2: bit RD80VID - bpl LCEDC + +;;; ============================================================ + +LCED2: + bit RD80VID + bpl @l1 tya lsr a tay - bcc LCEE0 -LCEDC: bit TXTPAGE1 + bcc @l2 +@l1: bit TXTPAGE1 rts -LCEE0: bit TXTPAGE2 +@l2: bit TXTPAGE2 rts ;;; ============================================================