mirror of
https://github.com/ksherlock/itty-bitty-vtty.git
synced 2024-12-11 11:49:21 +00:00
237 lines
2.1 KiB
ArmAsm
237 lines
2.1 KiB
ArmAsm
|
|
lst off
|
|
exp off
|
|
|
|
*
|
|
* read modem port
|
|
*
|
|
*
|
|
|
|
|
|
cmdb equ $c038
|
|
cmda equ $c039
|
|
datab equ $c03a
|
|
dataa equ $c03b
|
|
cout equ $fded
|
|
|
|
|
|
read mac
|
|
ldx #]1
|
|
if 3=]1
|
|
stx cmda
|
|
lda cmda
|
|
else
|
|
stx cmdb
|
|
lda cmdb
|
|
fin
|
|
sta buffer,x
|
|
<<<
|
|
|
|
lst on
|
|
org $0800
|
|
|
|
mx %11
|
|
|
|
db $01 ; prodos boot id
|
|
|
|
boot
|
|
* clc
|
|
* xce
|
|
* cli
|
|
sei
|
|
|
|
ldx #24
|
|
lda #$80+$0d
|
|
:cs jsr cout
|
|
dex
|
|
bpl :cs
|
|
|
|
|
|
* just in case.
|
|
lda cmdb
|
|
lda cmdb
|
|
|
|
|
|
init
|
|
* reset channel b
|
|
ldx #9
|
|
lda #%01010001
|
|
stx cmdb
|
|
sta cmdb
|
|
nop
|
|
nop
|
|
|
|
* x16 clock mode, 1 stop bit, no parity
|
|
ldx #4
|
|
lda #%01000100
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* 8 bits/char, rx disabled.
|
|
ldx #3
|
|
lda #%11000000
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* 8 data bits, RTS
|
|
ldx #5
|
|
lda #%01100010
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
ldx #11
|
|
lda #%01010000
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* 9600 baud
|
|
ldx #12
|
|
lda #10
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* 9600 baud
|
|
ldx #13
|
|
lda #0
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
|
|
* disable baud rate generator
|
|
ldx #14
|
|
lda #0
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* enable baud rate generator
|
|
ldx #14
|
|
lda #%00000001
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
|
|
|
|
* 8 bits/char, rx enabled.
|
|
ldx #3
|
|
lda #%11000001
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
|
|
* 8 data bits, tx enabled, RTS
|
|
ldx #5
|
|
lda #%01101010
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* disable interrupts
|
|
ldx #15
|
|
lda #0
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* reset ext/status interrupts
|
|
ldx #0
|
|
lda #%00010000
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* disable interrupts
|
|
ldx #1
|
|
lda #0
|
|
stx cmdb
|
|
sta cmdb
|
|
|
|
* reset ch b ptr to 0?
|
|
lda cmdb
|
|
|
|
|
|
* status, visible, master interrupts disabled
|
|
ldx #9
|
|
lda #%00010001
|
|
stx cmdb
|
|
sta cmdb
|
|
nop
|
|
nop
|
|
|
|
|
|
|
|
|
|
* read registers - 0, 1, 2, 3, 8, 10, 12, 13, 15
|
|
* 3 is channel A only.
|
|
loop
|
|
|
|
|
|
read 0
|
|
read 1
|
|
read 2
|
|
read 3
|
|
read 8
|
|
read 10
|
|
read 12
|
|
read 13
|
|
read 15
|
|
|
|
ldx #15
|
|
:cmp lda buffer,x
|
|
cmp prev,x
|
|
bne :delta
|
|
dex
|
|
bpl :cmp
|
|
|
|
bra wailoop
|
|
|
|
:delta
|
|
|
|
ldx #0
|
|
|
|
:print
|
|
lda buffer,x
|
|
phx
|
|
pha
|
|
lsr
|
|
lsr
|
|
lsr
|
|
lsr
|
|
tax
|
|
lda hex,x
|
|
jsr cout
|
|
pla
|
|
and #$0f
|
|
tax
|
|
lda hex,x
|
|
jsr cout
|
|
lda #" "
|
|
jsr cout
|
|
plx
|
|
inx
|
|
cpx #16
|
|
bcc :print
|
|
lda #$80+$0d
|
|
jsr cout
|
|
|
|
* store prev. values.
|
|
ldx #15
|
|
:copy lda buffer,x
|
|
sta prev,x
|
|
dex
|
|
bpl :copy
|
|
|
|
wailoop
|
|
* wai
|
|
brl loop
|
|
|
|
nop
|
|
nop
|
|
stp
|
|
|
|
|
|
hex asc "0123456789abcdef"
|
|
buffer ds 16
|
|
prev ds 16
|
|
|
|
lst off
|
|
* ds \
|
|
ds 1024+$0800-*
|
|
|
|
sav modem.bin |