implemented CIOUT routine

This commit is contained in:
FeralChild64 committed 2019-07-12 23:09:27 +02:00
1 parent cfadaf2684
commit 6d521967e5
4 files changed
+46 -1

No files matched your search

+2
View File
@@ -57,6 +57,8 @@
; Keys down clears bits. STOP=bit 7, C= bit 6, SPACE bit 4, CTRL bit 2
.alias BUCKYSTATUS $91
.alias load_or_verify_flag $93
.alias C3PO $94 ; flag - is BSOUR content valid
.alias BSOUR $95 ; serial bus buffered output byte
.alias current_file_num $98
.alias LDTND $98 ; number of entries in LAT / FAT / SAT tables
.alias DFLTN $99
+2
View File
@@ -8,6 +8,8 @@
; Keys down clears bits. STOP=bit 7, C= bit 6, SPACE bit 4, CTRL bit 2
.alias BUCKYSTATUS $91
.alias kernal_load_or_verify_flag $93
.alias C3PO $94 ; flag - is BSOUR content valid
.alias BSOUR $95 ; serial bus buffered output byte
.alias current_file_num $98
.alias LDTND $98 ; number of entries in LAT / FAT / SAT tables
.alias DFLTN $99
+28
View File
@@ -1,3 +1,31 @@
; Function defined on pp272-273 of C64 Programmers Reference Guide
ciout:
;; This routine is documented in 'Compute's Mapping the Commodore 64', page 224
pha
lda C3PO
bne ciout_send_byte
;; Nothing to send - set buffer as valid, store byte there
inc
sta C3PO
;; Clear carry flag to indicate success
clc
ciout_store_in_buffer:
;; Store in the buffer data to be sent next, return
pla
sta BSOUR
rts
ciout_send_byte:
;; Send previous data
lda BSOUR
clc ; don't send with EOI
jsr iec_tx_byte
jmp ciout_store_in_buffer
+14 -1
View File
@@ -2,7 +2,20 @@
unlsn:
;; This trivial routine is documented in 'Compute's Mapping the Commodore 64', page 224
;; This routine is documented in 'Compute's Mapping the Commodore 64', page 224
;; First check whether we have something to be sent in the buffer
lda C3PO
beq +
lda BSOUR
sec ; send it with EOI
jsr iec_tx_byte ; XXX what about the status of this operation?
;; Mark the buffer as invalid
lda #$00
sta C3PO
*
;; Buffer empty send the command
lda #$3F
jmp iec_tx_command