[comp.sys.amiga.tech] Trackdisk bug

trossi@tukki.jyu.fi (Timo Rossi) (07/15/89)

I have found a bug in trackdisk.device TD_RAWREAD and TD_RAWWRITE commands.
sometimes TD_RAWREAD and TD_RAWWRITE fail with error code -4 (IOERR_BADLENGTH).
After disassembling the code I found that trackdisk.device compares the
io_Length field with the contents of memory location $8000 when it should
compare it with number $8000. Apparently a '#'-sign is missing from the code.
The bug is present in both 1.2 and 1.3 kickstarts. In 1.3 kickstart the
buggy instruction is in address $feaf9c.
-- 
-----------------------------------------------------------------------------
! Timo Rossi  --  trossi@tukki.jyu.fi  --  University of Jyvaskyla, Finland !
-----------------------------------------------------------------------------

jesup@cbmvax.UUCP (Randell Jesup) (07/18/89)

In article <1015@tukki.jyu.fi> trossi@tukki.jyu.fi (Timo Rossi) writes:
>I have found a bug in trackdisk.device TD_RAWREAD and TD_RAWWRITE commands.
>sometimes TD_RAWREAD and TD_RAWWRITE fail with error code -4 (IOERR_BADLENGTH).
>After disassembling the code I found that trackdisk.device compares the
>io_Length field with the contents of memory location $8000 when it should
>compare it with number $8000. Apparently a '#'-sign is missing from the code.

	Quite true.  I think we announced that this error exists, thought not
the exact cause.  Do NOT modify location $8000, that is almost always in use
by something, such as a trackdisk buffer.  The error cannot be patched via
setpatch, unfortunately (we tried).  It has been corrected for 1.4.

	The error will usually show up on 1-drive machines.  On two drive
machines, things fall in memory such that it almost always works (2 3.5" drives,
that is, in addition to the 5.25").

-- 
Randell Jesup, Keeper of AmigaDos, Commodore Engineering.
{uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com  BIX: rjesup  
Common phrase heard at Amiga Devcon '89: "It's in there!"