diff --git a/src/kernal/iec/iec_return.s b/src/kernal/iec/iec_return.s index c80323b7..8be97a46 100644 --- a/src/kernal/iec/iec_return.s +++ b/src/kernal/iec/iec_return.s @@ -36,8 +36,8 @@ iec_return_success: iec_return_DEVICE_NOT_FOUND: - ; Set IEC line to normal idle state - jsr iec_set_idle + ; Nobody answers: release all lines, so the bus is idle - see https://www.pagetable.com/?p=1135 + jsr iec_release_atn_clk_data ; BSOUR is certainly not valid anymore lda #$00 diff --git a/src/kernal/iec/unlsn.s b/src/kernal/iec/unlsn.s index 227ff3fb..2ef74cdf 100644 --- a/src/kernal/iec/unlsn.s +++ b/src/kernal/iec/unlsn.s @@ -42,7 +42,15 @@ UNLSN: ; Buffer empty, send the command lda #$3F - jmp common_open_close_unlsn_second +common_unlsn_untlk: ; common part of UNLSN and UNTLK + + jsr common_open_close_unlsn_second + bcs @1 + + ; The transmission is over: release CLK and DATA too, so the bus is idle - see https://www.pagetable.com/?p=1135 + jmp iec_release_clk_data +@1: + rts } else { diff --git a/src/kernal/iec/untlk.s b/src/kernal/iec/untlk.s index f26fdd22..c7998dfa 100644 --- a/src/kernal/iec/untlk.s +++ b/src/kernal/iec/untlk.s @@ -39,10 +39,11 @@ UNTLK: sta IECPROTO } - ; Buffer empty, send the command + ; Buffer empty, send the command; the talker releases the bus - see https://www.pagetable.com/?p=1031 lda #$5F + jmp common_unlsn_untlk -common_untlk_tksa: ; common part of UNTLK and TKSA +common_untlk_tksa: ; the rest of TKSA ; XXX - for TKSA, is it really the right place to do a turnaround? I have some doubts ; (it forces us to send the TKSA command 'manually' sometimes), but