diff --git a/c64/aliases/,aliases_rom_kernal.s b/c64/aliases/,aliases_rom_kernal.s index bb2bd4e4..91c601d9 100644 --- a/c64/aliases/,aliases_rom_kernal.s +++ b/c64/aliases/,aliases_rom_kernal.s @@ -24,7 +24,7 @@ .alias JOPEN $FFC0 .alias JCLOSE $FFC3 .alias JCHKIN $FFC6 - .alias JCHKOUT $FFC9 + .alias JCKOUT $FFC9 .alias JCLRCHN $FFCC .alias JCHRIN $FFCF .alias JCHROUT $FFD2 diff --git a/c64/kernal/chkinout.s b/c64/kernal/chkinout.s index 059d2409..d384b975 100644 --- a/c64/kernal/chkinout.s +++ b/c64/kernal/chkinout.s @@ -2,7 +2,7 @@ ;; ;; Official Kernal routines, described in: ;; -;; - [RG64] C64 Programmer's Reference Guide - page 275 (CHKIN) / 276 (CHKOUT) +;; - [RG64] C64 Programmer's Reference Guide - page 275 (CHKIN) / 276 (CKOUT) ;; - [CM64] Compute's Mapping the Commodore 64 - page 229 ;; ;; CPU registers that has to be preserved (see [RG64]): .Y @@ -40,7 +40,7 @@ chkin: cmp #$01 beq chkinout_file_not_input - ;; For IEC devices, send TALK first + ;; For IEC devices, send TALK + TKSA first lda FAT,Y jsr iec_devnum_check bcs chkin_set_device @@ -48,13 +48,20 @@ chkin: jsr talk bcs chkinout_end ; don't set DFLTN in case of failure + lda LAT, Y + jsr tksa + bcs chkinout_end + + jsr iec_turnaround_to_listen ;; XXX shouldn't this be sent by TALK/TKSA??? + bcs chkinout_end + chkin_set_device: lda FAT,Y sta DFLTN clc ; for success ;; FALLTROUGH -;; Common part for booth CHKIN and CHKOUT +;; Common part for booth CHKIN and CKOUT chkinout_end: pla @@ -84,9 +91,9 @@ chkinout_file_not_output: chkinout_common: -;; CHKOUT implementation +;; CKOUT implementation -chkout: +ckout: ;; Store Y for preservation tya @@ -117,7 +124,7 @@ chkout: lda LAT, Y beq chkinout_file_not_output - ;; For IEC devices, send LISTEN first + ;; For IEC devices, send LISTEN + SECOND first lda FAT,Y jsr iec_devnum_check bcs chkin_set_device @@ -125,7 +132,11 @@ chkout: jsr listen bcs chkinout_end ; don't set DFLTO in case of failure -chkout_set_device: + lda LAT, Y + jsr second + bcs chkinout_end + +hkout_set_device: lda FAT,Y sta DFLTO clc ; for success diff --git a/c64/kernal/jumptable/ffc9.jchkout.s b/c64/kernal/jumptable/ffc9.jckout.s similarity index 85% rename from c64/kernal/jumptable/ffc9.jchkout.s rename to c64/kernal/jumptable/ffc9.jckout.s index 1b76a8dc..ccfe9a2f 100644 --- a/c64/kernal/jumptable/ffc9.jchkout.s +++ b/c64/kernal/jumptable/ffc9.jckout.s @@ -1,3 +1,3 @@ ; Open channel for output ; C64 Programmer's Reference Guide Page 272 - jmp chkout + jmp ckout diff --git a/c64/kernal/vector.s b/c64/kernal/vector.s index 4a086198..c0ad2d58 100644 --- a/c64/kernal/vector.s +++ b/c64/kernal/vector.s @@ -76,7 +76,7 @@ vector_defaults: .word open ;; IOPEN .word close ;; ICLOSE .word chkin ;; ICHKIN - .word chkout ;; ICKOUT + .word ckout ;; ICKOUT .word clrchn ;; ICLRCH .word chrin ;; IBASIN .word chrout ;; IBASOUT