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.