Re: Interface progress and issues

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.