From: Spiro Trikaliotis (ml-cbmhackers_at_trikaliotis.net)
Date: 2006-05-12 08:35:09
Hello Ruud,
* On Thu, May 11, 2006 at 08:48:12PM +0200 Ruud@baltissen.org wrote:
> I had hoped that some one could point me to the exact point ie. $xxxx.
I believe you are searching for $EE40 (which start preparing the BAM),
$EEA0 (which start writing the BAM), or $EEA6 (which writes 18/1).
Are these the addresses you indentified yourself?
> What I still don't understand is why the diskdrive doesn't stop and
> outputs an error message. What is it waiting for ???
As I do not know exactly what you are doing, it is hard to guess.
Anyway, the write routine ($F56E) goes as follows:
1. First, it searches for the block header which it wants to write (in
your case, 18/0 ($F589 JSR $F510)
2. Then, it waits 9 bytes (older 1541, 1540 and 2031: 8 bytes), which is
the GAP between block header and sync for the data part.
It uses the V flag for this, as this is the byte ready signal of the
disc controller. If you miss emulating this, your floppy will go in
an endless loop. ($F58C - $F592)
3. It sets the DC to write mode ($F594-$F5A0)
4. It writes a SYNC ($F5A3 - $F5AF) and writes the data out to the disc
($F5B1 - $F5BD for the "excess" bytes, $F5BF - $F5C8 for the rest)
5. It waits for the end of the last byte (as I already told, it misses
one byte, but this is not important here), and sets the DC to read
mode again ($F5CA-$F5D6).
My bet: You forgot point 2.
HTH,
Spiro.
--
Spiro R. Trikaliotis
http://www.trikaliotis.net/
http://cbm4win.sf.net/
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.