fixes for sending file name to IEC in LOAD

This commit is contained in:
FeralChild64 committed 2019-07-09 22:48:35 +02:00
1 parent 1e7199fcd5
commit f911eed0c3
6 files changed
+37 -24

No files matched your search

+4
View File
@@ -1,9 +1,12 @@
;; Implemented based on https://www.pagetable.com/?p=1135, https://github.com/mist64/cbmbus_doc
;; Carry flag set = signal EOI
iec_tx_byte:
pha
php
;; Notify all devices that we are going to send a byte
;; and it is going to be a data byte (released ATN)
@@ -12,6 +15,7 @@ iec_tx_byte:
;; Common part of iec_txbyte and iec_tx_common - waits for devices
;; and transmits a byte
plp
pla
jsr iec_tx_common
+1
View File
@@ -36,6 +36,7 @@ iec_tx_command:
;; Common part of iec_txbyte and iec_tx_common - waits for devices
;; and transmits a byte
clc ; Carry flag set is used for EOI mark
pla
jsr iec_tx_common
+23 -4
View File
@@ -5,19 +5,38 @@
iec_tx_common:
;; Store the bye to send on a stack
;; Store the byte to send on a stack
pha
;; Store the status register - carry flag is used to determine whether
;; this is the last byte of the stream
php
;; Wait till all receivers are ready, they should all release DATA
jsr iec_wait_for_data_release
;; At this point a delay 256 usec or more is considered EOI - add waits if necessary
plp
bcc +
jsr iec_wait100us
jsr iec_wait100us
jsr iec_wait60us
;; XXX waits above should be enough - why do we need more waits???
jsr iec_wait100us
jsr iec_wait100us
jsr iec_wait100us
;; Receiver should now acknowledge EOI by pulling data for at least 60 usec
jsr iec_wait60us
jsr iec_wait_for_data_release
*
;; Pull CLK back to indicate that DATA is not valid, keep it for 60us
;; We can use this routine as we don't hold DATA anyway (and its state doesn't even matter)
;; Don't wait too long, as 200us or more is considered EOI
jsr iec_pull_clk_release_data
jsr iec_wait60us
;; Now, we can start transmission of 8 bits of data
ldx #7
pla
@@ -39,7 +58,7 @@ iec_tx_common_bit_is_sent:
;; Wait 20us, so that device(s) can pick DATA
jsr iec_wait20us
;; Pull CLK for 20us again, before sending the next bit
;; or performing any other action
jsr iec_pull_clk_release_data
-15
View File
@@ -1,15 +0,0 @@
iec_tx_eoi:
;; Releasing ATN needed due to current iec_tx_command implementation
jsr iec_release_atn
;; Wait at least 256 usec
jsr iec_wait100us
jsr iec_wait100us
jsr iec_wait60us
;; Restore the bus to idle state
jsr iec_set_idle
rts
-3
View File
@@ -8,9 +8,6 @@ iec_wait100us:
;; NTSC:
;; - CPU frequency 1.022727 MHZ, we need to waste at least 103 cycles
;; Waste cycles by reading some unimportant memory location
;; (in a loop) in order not to clutter VICE debug logs
;; Waste cycles in a loop
ldy #$12 ; 2 cycles
+9 -2
View File
@@ -76,21 +76,28 @@ send_filename:
ldx #<current_filename_ptr
jsr peek_under_roms
iny
;; Save Y because iec_tx_byte will corrupt it
tax
tya
pha
txa
;; Set Carry flag on the last file name character, to mark EOI
cmp current_filename_length
clc
bne +
sec
*
txa
jsr iec_tx_byte
pla
tay
iny
jmp send_filename
sent_filename:
;; Command device to unlisten to indicate end of file name. (p16)
jsr unlsn
bcs load_error