IEC code compatibility improvements
This commit is contained in:
1 parent
77320e2e91
commit
1480350bfb
3 files changed
+16
-8
No files matched your search
@@ -13,7 +13,9 @@ iec_rx_byte:
|
||||
pha
|
||||
|
||||
// Timing is critical here - execute on disabled IRQs
|
||||
php
|
||||
// The best practice would be to do PHP first, but it seems this is not
|
||||
// what the original ROM does; furthermore, pushing additional bytes to
|
||||
// stack can wreck autostart softwaree loading at $0100
|
||||
sei
|
||||
|
||||
// First, we wait for the talker to release the CLK line
|
||||
@@ -107,8 +109,7 @@ iec_rx_clk_wait2:
|
||||
// Timeout
|
||||
jsr kernalstatus_EOI
|
||||
pla
|
||||
plp
|
||||
|
||||
|
||||
// Restore registers
|
||||
pla
|
||||
tay
|
||||
@@ -116,6 +117,7 @@ iec_rx_clk_wait2:
|
||||
tax
|
||||
|
||||
sec // XXX confirm that sec is really a way to report timeout here
|
||||
cli
|
||||
rts
|
||||
!:
|
||||
// More bits?
|
||||
@@ -130,9 +132,6 @@ iec_rx_clk_wait2:
|
||||
|
||||
// Retreive the received byte
|
||||
pla
|
||||
|
||||
// Return no-error
|
||||
plp
|
||||
|
||||
// Restore registers
|
||||
sta TBTCNT // $A4 is a byte buffer according to http://sta.c64.org/cbm64mem.html
|
||||
@@ -143,5 +142,6 @@ iec_rx_clk_wait2:
|
||||
lda TBTCNT
|
||||
|
||||
clc
|
||||
cli
|
||||
rts
|
||||
|
||||
@@ -26,7 +26,9 @@ iec_tx_byte:
|
||||
iec_tx_common:
|
||||
|
||||
// Timing is critical here - execute on disabled IRQs
|
||||
php
|
||||
// The best practice would be to do PHP first, but it seems this is not
|
||||
// what the original ROM does; furthermore, pushing additional bytes to
|
||||
// stack can wreck autostart softwaree loading at $0100
|
||||
sei
|
||||
|
||||
// Wait till all receivers are ready, they should all release DATA
|
||||
@@ -79,7 +81,7 @@ iec_tx_common_bit_is_sent:
|
||||
dex
|
||||
bpl iec_tx_common_sendbit
|
||||
|
||||
plp
|
||||
cli
|
||||
|
||||
// Give device time to tell if they are busy by pulling DATA
|
||||
// They should do it within 1ms
|
||||
|
||||
Reference in new issue
Block a user