Changed chip register names, fixed a bug

git-svn-id: svn://svn.cc65.org/cc65/trunk@2789 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2003-12-19 23:04:30 +00:00
parent 5c632ab0ef
commit 290de026d1
4 changed files with 149 additions and 132 deletions

View File

@@ -13,29 +13,28 @@
; -------------------------------------------------------------------------
; Talk senden
; TALK subroutine
TALK: ora #$40
bne talk_listen
; -------------------------------------------------------------------------
; Listen senden
; LISTEN subroutine
LISTEN:
ora #$20
LISTEN: ora #$20
talk_listen:
pha
lda #$3F
ldy #tpiDDRA
ldy #TPI::DDRA
sta (tpi1),y
lda #$FF
ldy #PortA
ldy #CIA::PRA
sta (cia),y
ldy #DDRA
ldy #CIA::DDRA
sta (cia),y
lda #$FA
ldy #tpiPortA
ldy #TPI::PRA
sta (tpi1),y
lda CTemp
bpl LF268
@@ -47,82 +46,25 @@ talk_listen:
lda CTemp
and #$7F
sta CTemp
ldy #tpiPortA
ldy #TPI::PRA
lda (tpi1),y
ora #$20
sta (tpi1),y
LF268: lda (tpi1),y ; tpiPortA
LF268: lda (tpi1),y ; TPI::PRA
and #$F7
sta (tpi1),y
pla
jmp transfer_byte
; -------------------------------------------------------------------------
; Output secondary address after listen
SECOND: jsr transfer_byte
scatn: ldy #tpiPortA
lda (tpi1),y
ora #$08
sta (tpi1),y
rts
; -------------------------------------------------------------------------
; Output secondary address
TKSA: jsr transfer_byte
LF283: ldy #tpiPortA
lda (tpi1),y
and #$39
; A -> IEC control, data ready for input
set_listen:
ldy #tpiPortA
sta (tpi1),y
lda #$C7
ldy #tpiDDRA
sta (tpi1),y
lda #$00
ldy #DDRA
sta (cia),y
jmp scatn
; -------------------------------------------------------------------------
CIOUT: pha
lda CTemp
bpl @L1
lda snsw1
jsr transfer_byte
lda CTemp
@L1: ora #$80
sta CTemp
pla
sta snsw1
rts
; -------------------------------------------------------------------------
; UNTLK
UNTLK: lda #$5F
bne LF2B1
UNLSN: lda #$3F
LF2B1: jsr talk_listen
lda #$F9
jmp set_listen
; jmp transfer_byte
; -------------------------------------------------------------------------
; Output A (without EOF flag)
transfer_byte:
eor #$FF
ldy #PortA
ldy #CIA::PRA
sta (cia),y
ldy #tpiPortA
ldy #TPI::PRA
lda (tpi1),y
ora #$12
sta (tpi1),y
@@ -144,11 +86,11 @@ LF2DE: jsr SetTimB32ms
bcc LF2E4 ; Branch always
LF2E3: sec
LF2E4: ldy #tpiPortA
LF2E4: ldy #TPI::PRA
lda (tpi1),y
and #$40
bne LF2FC
ldy #IntCtrReg
ldy #CIA::ICR
lda (cia),y
and #$02
beq LF2E4
@@ -158,19 +100,78 @@ LF2E4: ldy #tpiPortA
lda #$01
jsr UPDST
LF2FC: ldy #tpiPortA
LF2FC: ldy #TPI::PRA
lda (tpi1),y
ora #$10
sta (tpi1),y
LF304: lda #$FF
ldy #PortA
ldy #CIA::PRA
sta (cia),y
rts
; -------------------------------------------------------------------------
; Output secondary address after listen
ACPTR: ldy #tpiPortA
SECOND: jsr transfer_byte
scatn: ldy #TPI::PRA
lda (tpi1),y
ora #$08
sta (tpi1),y
rts
; -------------------------------------------------------------------------
; Output secondary address
TKSA: jsr transfer_byte
LF283: ldy #TPI::PRA
lda (tpi1),y
and #$39
; A -> IEC control, data ready for input
set_listen:
ldy #TPI::PRA
sta (tpi1),y
lda #$C7
ldy #TPI::DDRA
sta (tpi1),y
lda #$00
ldy #CIA::DDRA
sta (cia),y
jmp scatn
; -------------------------------------------------------------------------
; CIOUT routine
CIOUT: pha
lda CTemp
bpl @L1
lda snsw1
jsr transfer_byte
lda CTemp
@L1: ora #$80
sta CTemp
pla
sta snsw1
rts
; -------------------------------------------------------------------------
; UNTALK/UNLISTEN
UNTLK: lda #$5F
bne LF2B1
UNLSN: lda #$3F
LF2B1: jsr talk_listen
lda #$F9
jmp set_listen
; -------------------------------------------------------------------------
; ACPTR routine
ACPTR: ldy #TPI::PRA
lda (tpi1),y
and #$B9
ora #$81
@@ -181,11 +182,11 @@ LF314: jsr SetTimB32ms
LF319: sec
LF31A: ldy #tpiPortA
LF31A: ldy #TPI::PRA
lda (tpi1),y
and #$10
beq LF33F
ldy #IntCtrReg
ldy #CIA::ICR
lda (cia),y
and #$02
beq LF31A ; Loop if not timeout
@@ -195,15 +196,14 @@ LF31A: ldy #tpiPortA
bcc LF319
lda #$02
jsr UPDST
ldy #tpiPortA
ldy #TPI::PRA
lda (tpi1),y
and #$3D
sta (tpi1),y
lda #$0D
rts
; -------------------------------------------------------------------------
LF33F: lda (tpi1),y ; tpiPortA
LF33F: lda (tpi1),y ; TPI::PRA
and #$7F
sta (tpi1),y
and #$20
@@ -211,16 +211,16 @@ LF33F: lda (tpi1),y ; tpiPortA
lda #$40
jsr UPDST
LF350: ldy #PortA
LF350: ldy #CIA::PRA
lda (cia),y
eor #$FF
pha
ldy #tpiPortA
ldy #TPI::PRA
lda (tpi1),y
ora #$40
sta (tpi1),y
LF35E: lda (tpi1),y ; tpiPortA
LF35E: lda (tpi1),y ; TPI::PRA
and #$10
beq LF35E
lda (tpi1),y
@@ -234,12 +234,13 @@ LF35E: lda (tpi1),y ; tpiPortA
SetTimB32ms:
lda #$FF ; 255*256*0,5 <EFBFBD>s
ldy #TimBHi
ldy #CIA::TBHI
sta (cia),y ; as high byte, low byte = 0
lda #$11
ldy #CtrlB
ldy #CIA::CRB
sta (cia),y ; Start the timer
ldy #IntCtrReg
ldy #CIA::ICR
lda (cia),y ; Clear the interrupt flag
clc
rts