On 27 Nov 2002, johnsonlam wrote: > Date: 27 Nov 2002 00:30:03 -0800 > From: johnsonlam > Newsgroups: comp.emulators.apple2 > Subject: remove DOS delay in disk image > > Hello, > > Longtime ago, I saw an article about DOS 3.3 have a delay for it's > belt drive DISK][, but it turn to slow booting since the latest direct > drive like Super-5 and my Paragon can react very fast, so I've changed > the delay. > > For disk images, the same delay exist so the booting was so slow, > anyone still have information about this? I've lost my boot disk and > no way to get it back . > > Base on the fast booting DIVERSE DOS, I've renamed the boot file from > 'HELLO' to 'ADVANCE BOOT' and POKE the track reader function from > BASIC, then compile the APPLESOFT by COMPLIER PLUS. Booting a low > delay DIVERSE DOS and execute a binary is awesome fast, hope that > anyone (or I) can do the same thing again. > Hi, IIRC, there are two possible delay values you might be thinking of. The first one is stored inside the so-called "Device Characteristics Table" (DCT), which can be found at address $b7fb-$b7fe under DOS 3.3. It looks like this: $b7fb : Type of peripheral device ($00 means Disk II) $b7fc : Phase per track ($01 when using Disk II) $b7fd and $b7fe : Counter to count the time until the drive's motor is spinning round the disk at a constant speed. The original value is $d8ef (for Disk II). You will find the delay loop at address $bd9a. Interestingly, DOS seems to use only the high byte from $b7fe (the value is loaded into zero page address $47 at $bd5e.) DOS also checks in advance whether the disk is still spinning from a previous access. If so, the delay loop will be skipped. IOW, I am not sure whether patching the value at $b7fe would gain much speed at all. Please note: Since DOS _increases_ the counter (at $ba00) it is necessary to increase the initial counter value to speed up the loop, not decrease it (as one might assume). The other delay value is used when moving the drive's head from track to track (at $b9d4 and $b9e0). There are two tables involved in it for switching the stepping phase on and off. They are located at address $ba11 and $ba1d. The standard values are (in hexadecimal): $ba11: 01 30 28 24 $ba15: 20 1e 1d 1c $ba19: 1c 1c 1c 1c $ba1d: $70 2c 26 22 $ba21: $1f 1e 1d 1c $ba25: $1c 1c 1c 1c These values have to be decreased to speed up the loop. Hope this helps Holger