This commit is contained in:
Kelvin Sherlock 2021-09-21 22:35:33 -04:00
parent dfdf608018
commit 6abf2574e3
7 changed files with 58 additions and 21 deletions

24
debug.S Normal file
View File

@ -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
* <<<

View File

@ -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 #'['

View File

@ -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

View File

@ -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

View File

@ -16,7 +16,7 @@ SCCADATA equ $c03b
init_modem ent
sep #$30
* sep #$30
* reset channel B (modem port)
ldx #9
lda #%01010001

View File

@ -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

View File

@ -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