diff --git a/debug.S b/debug.S new file mode 100644 index 0000000..ab87983 --- /dev/null +++ b/debug.S @@ -0,0 +1,24 @@ + + +debug mac + brl ]eom + dw $7771 + str ']1' +]eom + <<< + +*debuglab mac +*]1 +* brl ]eom +* dw $7771 +* str ']1' +*]eom +* <<< + +*debugent mac +*]1 ent +* brl ]eom +* dw $7771 +* str ']1' +*]eom +* <<< diff --git a/vt100.key.S b/vt100.key.S index 8ff35c4..198e468 100644 --- a/vt100.key.S +++ b/vt100.key.S @@ -6,6 +6,7 @@ mx %11 use vt.equ + use debug ext dispatch @@ -24,6 +25,7 @@ kmOption equ %0100_0000 kmCommand equ %1000_0000 keypress ent + debug keypress lda KBD bmi :key rts @@ -50,6 +52,7 @@ keypress ent asl tax + lsr ; restore jmp (special,x) :ctrl @@ -290,9 +293,9 @@ arrow lda #ESC jsr dispatch - tsb DECANM - bmi :vt52 - tsb DECCKM + bit DECANM + bpl :vt52 + bit DECCKM bmi :cursor lda #'[' diff --git a/vt100.link.S b/vt100.link.S index a05f1df..6e9c2d7 100644 --- a/vt100.link.S +++ b/vt100.link.S @@ -2,7 +2,7 @@ ovr all * binary linker lkv 0 - org $6000 + org $2000 * asm boot.S * asm vt100.ctrl.S @@ -33,4 +33,5 @@ lnk vt100.modem.L lnk vt100.key.L - sav vt100.bin + typ $ff + sav vt100.sys diff --git a/vt100.main.S b/vt100.main.S index 373254b..a8d0f51 100644 --- a/vt100.main.S +++ b/vt100.main.S @@ -6,6 +6,7 @@ mx %11 use vt.equ + use debug ext scroll_down ext recalc_cursor,recalc_cursor_x,recalc_cursor_y @@ -19,7 +20,7 @@ TXTSET equ $c051 VGCINT equ $c023 SCANINT equ $c032 -main +main debug main clc xce @@ -76,6 +77,11 @@ init lda #23 sta DECBM + lda #$80 + sta LOCAL + + lda #st_vt52 + sta state jsr erase_screen jsr init_modem @@ -174,8 +180,8 @@ ctrl_1b ; escape - * vt100 - aborts current escape sequence and starts a new one. * vt52 - esc esc aborts and starts new * vt50 - esc esc aborts - lda DECANM - bne :vt52 + bit DECANM + bpl :vt52 lda #st_vt100_esc sta state rts @@ -190,8 +196,8 @@ ctrl_1a * vt100 - abort current escape sequence * and display error character. * TODO - display error character (mouse text) - lda DECANM - bne :vt52 + bit DECANM + bpl :vt52 lda #st_vt100 sta state rts diff --git a/vt100.modem.S b/vt100.modem.S index 92e8e2d..385542b 100644 --- a/vt100.modem.S +++ b/vt100.modem.S @@ -16,7 +16,7 @@ SCCADATA equ $c03b init_modem ent - sep #$30 +* sep #$30 * reset channel B (modem port) ldx #9 lda #%01010001 diff --git a/vt100.screen.S b/vt100.screen.S index 58552be..7201027 100644 --- a/vt100.screen.S +++ b/vt100.screen.S @@ -258,6 +258,7 @@ fill_screen ent * fill the entire screen with the a register. * text screen is out of order, so this doesn't use much code but * it's not linear either. +* +64 bytes of screen hole data. mx %11 sta >$000400 @@ -268,13 +269,13 @@ fill_screen ent ldx #$0400 ldy #$0401 - lda #40*24-2 - mvn $01,$01 + lda #40*24+64-2 + mvn $010000,$010000 ldx #$0400 ldy #$0401 - lda #40*24-2 - mvn $00,$00 + lda #40*24+64-2 + mvn $000000,$000000 * not needed since $0,$0 last * phk @@ -318,13 +319,13 @@ scroll_up ent lda #40 ldx #]1 ldy #]2 - mvn $1,$1 + mvn $010000,$010000 lda #$40 lda #40 ldx #]1 ldy #]2 - mvn $0,$0 + mvn $000000,$000000 dec r0 bne *+5 @@ -412,13 +413,13 @@ scroll_down ent lda #40 ldx #]1 ldy #]2 - mvn $1,$1 + mvn $010000,$010000 lda #$40 lda #40 ldx #]1 ldy #]2 - mvn $0,$0 + mvn $000000,$000000 dec r0 bne *+5 diff --git a/vt100.vt52.S b/vt100.vt52.S index 8054224..2b1dc31 100644 --- a/vt100.vt52.S +++ b/vt100.vt52.S @@ -110,11 +110,11 @@ esc_A ; cursor up. esc_B ; cursor down lda y - cmp #79 + cmp #23 beq :rts cmp DECBM beq :rts - iny y + inc y jmp recalc_cursor_y :rts rts @@ -225,6 +225,8 @@ vt52_dca ent sta y :update stz :tmp + lda #st_vt52 + sta state jmp recalc_cursor