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.