added turnaround to talker to IEC support

This commit is contained in:
FeralChild64 committed 2019-07-15 20:14:52 +02:00
1 parent ef10c90ee6
commit b1e882b021
3 files changed
+27 -16

No files matched your search

+10 -4
View File
@@ -4,9 +4,15 @@
iec_turnaround_to_talk: iec_turnaround_to_talk:
;; XXX implement this ;; First make sure both CLK, DATA and ATN are released at our side
jsr iec_release_atn
jsr iec_release_clk_data
;; Wait till device releases CLK line
jsr iec_wait_for_clk_release
;; Pull CLK line, it should be held by talker
jsr iec_pull_clk_release_data
clc clc
rts rts
+7
View File
@@ -0,0 +1,7 @@
iec_wait_for_data_pull:
lda CI2PRA
;; Check the highest bit, which is DATA IN,
;; (highest bit set = negative value)
bmi iec_wait_for_data_pull
rts
+10 -12
View File
@@ -198,20 +198,18 @@ load_done:
lda #$0D lda #$0D
jsr JCHROUT jsr JCHROUT
* *
;; Close file on drive - start by turnaround to talker ;; Close file on drive
jsr iec_turnaround_to_talk
;; Command drive to stop talking and to close the file ;; Command drive to stop talking and to close the file
jsr untlk jsr untlk
;; XXX XXX code below runs into infinite loop - so for now just quit ;; Turnaround to talker - according to https://www.pagetable.com/?p=1135
clc ;; the turnaround only happens after a command
cli jsr iec_turnaround_to_talk
rts
lda current_device_number lda current_device_number
jsr listen jsr listen
lda #$e0 lda #$e0
jsr iec_tx_command jsr iec_tx_command
@@ -227,7 +225,7 @@ load_done:
clc clc
cli cli
rts rts
load_error: load_error:
;; Advance cursor to next line, if needed ;; Advance cursor to next line, if needed
@@ -239,7 +237,7 @@ load_error:
;; XXX - Indicate KERNAL (not BASIC) LOAD error condtion ;; XXX - Indicate KERNAL (not BASIC) LOAD error condtion
sec sec
lda #28 lda #28
;; Re-enable interrupts and return ;; Re-enable interrupts and return
cli cli
;; (iec_tx_byte will have set/cleared C flag and put result code ;; (iec_tx_byte will have set/cleared C flag and put result code