From: Greg King (gngking_at_erols.com)
Date: 2004-06-23 17:57:51
From: Spiro Trikaliotis; on Date: Monday, June 21, 2004, at 01:00 PM
>
> I modified the UNLISTEN routine (c64) in the following way:
>
.C:ed11 48 PHA ' save command-code
> .C:ed12 24 94 BIT $94 ' is there any byte buffered to send?
.C:ed14 10 0A BPL $ED20
> .C:ed16 38 SEC
> .C:ed17 66 A3 ROR $A3 ' $A3.7 == 1 -> send EOI
> .C:ed19 20 40 ED JSR $ED40 ' output the missing byte
> .C:ed1c 46 94 LSR $94 ' no more bytes to send
> .C:ed1e 46 A3 LSR $A3 ' no more EOIs to send
> .C:ed20 60 RTS ' done
>
> This way, in the floppy, $CFED is called to mark the command as
> available, and $EBF5 was called, too, although the UNLISTEN routine
> ($E88B) was not called, at all. So: Yes, the EOI is the trigger for
> command execution in the 1541.
>
> One remark: The C64 crashed after this test, but I don't think this is
> very important here.
That is because you put RTS in the place of PLA, so the stack was
"unbalanced."
I have an idea: change the command-code (the $3F at $EDFF) that UNLISTEN
sends. The C64 will do everything else normally. The drive will see
something, but it will not think, "I must stop listenning."
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.