Classic Computer Magazine Archive COMPUTE! ISSUE 77 / OCTOBER 1986 / PAGE 83

TurboDisk For DOS 3.3

R. Ellerbrock

This short utility allows Apple II owners to load DOS 3.3 files up to three times faster than usual. Although it's written in machine language, the program is easy for anyone to use, even if you're not familiar with machine language programming. A disk drive is required; the program runs only under DOS 3.3.

The Apple II disk drive is one of the faster 5¼-inch drives in the microcomputer world, but even a fast drive seems slow at times. "Turbo-Disk for DOS 3.3" turbocharges your Apple II disk drive under DOS 3.3, allowing it to load, save, and perform other operations up to three times faster than normal. No special knowledge is needed to take advantage of the program. Once the enhanced DOS is installed on disk, every disk operation (except INIT—see below) speeds up dramatically.

TurboDisk is written entirely in machine language, so you must enter it with the "Apple MLX" machine language entry program found elsewhere in this issue. Follow the MLX directions carefully as you type in the program. When you run MLX, you'll be asked for a starting address and an ending address for the data you will be entering. Here are the addresses you need for TurboDisk:

Starting address: 2000
Ending address: 23FF

TurboDisk works by altering the DOS images ordinarily found on the disk. To create the faster version of DOS, type BRUN TURBODISK and press Return (replace TURBODISK with whatever filename you used when you saved TurboDisk data to disk using MLX). TurboDisk displays a menu offering two choices. Press 1 to install the turbocharged DOS on disk, or press 2 to exit.

When you press 1, TurboDisk prompts you to insert the desired disk in the drive. This disk must be formatted and must contain a working copy of DOS 3.3. Because this program alters the DOS information on the disk, do not use TurboDisk on your master copy of DOS 3.3. Always keep a copy of the original DOS 3.3 in a safe place for future use, and use TurboDisk only on other disks. After the disk is in place, press Return to continue. If you change your mind, press Esc to abort the operation.

When you press Return, TurboDisk installs the enhanced DOS on the disk. If an error occurs at this stage (the drive door is left open, for example), TurboDisk lets you try again by pressing Return a second time. If the error cannot be cured, press Esc to abort the program.

Once the new DOS is in place, all disk operations except for INIT occur at enhanced speeds. The table indicates the number of seconds it takes to load an assortment of commercial programs at normal speed and with TurboDisk.

Program Normal speed With TurboDisk
Moonpatrol 31 7
DOS Boss 16 5
Frogger 34 7
Night Crawler 32 15

The only real limitation of this program is that it's impossible to initialize a disk at enhanced speeds. If you enter INIT when TurboDisk is active, nothing happens (that command is deliberately disabled). To initialize a disk, you must reboot with a normal DOS 3.3 disk.

Inside TurboDisk

When you BRUN TurboDisk, it copies two pages (512 bytes) of data to two previously unused sectors in the DOS image (track 0, sector A, and track 0, sector B). When you boot with the disk, the computer loads the contents of these two sectors in addition to the normal DOS data. Finally, TurboDisk loads the contents of track 0, sector C into memory, changes three bytes, then rewrites the sector to disk.

Under normal circumstances, DOS jumps to location $9D84 when it's finished loading to perform a cold start. TurboDisk inserts a JMP (JuMP) instruction at location $9D84 which redirects control to the code at location $9B04. This code copies new data into the RWTS (Read/Write Track/Sector) area of memory. In the RWTS area are a few bytes that contain the arm move delay table. To speed disk access, we simply change the contents of the delay table bytes. Once this is done, TurboDisk restores the original address at location $9D84 and proceeds with a cold start as usual.

TurboDisk For DOS 3.3

Please refer to the "Apple MLX" article in this issue before entering the following listing.

START ADDRESS: 2000
END ADDRESS: 23FF
2000: 4C 47 20 20 E3 03 84 00 72
2008: 85 01 A5 02 A0 04 91 00 58
2010: A5 03 C9 10 90 04 A9 00 06
2018: 85 03 A0 05 91 00 A0 08 16
2020: A9 00 91 00 C8 A9 10 91 06
2028: 00 A5 04 A0 0C 91 00 A9 AC
2030: 00 A0 03 91 00 20 E3 03 5D
2038: 20 D9 03 A9 00 85 48 90 31
2040: 05 A9 87 4C 70 20 60 20 08
2048: 58 FC A2 0C 20 4A F9 A0 C7
2050: 00 B9 47 21 C8 20 ED FD 9A
2058: C0 3B D0 F5 20 0C FD C9 38
2060: B1 D0 06 20 B1 20 4C 5C F1
2068: 20 C9 B2 D0 EF 4C D0 03 E3
2070: A0 00 B9 87 21 C8 20 ED 0B
2078: FD C0 0F D0 F5 4C 9B 20 0F
2080: 60 A0 00 B9 98 21 C8 20 AF
2088: ED FD C0 19 D0 F5 AD EA 8D
2090: B7 4A 4A 4A 4A 18 69 B1 64
2098: 20 ED FD 20 0C FD C9 9B AD
20A0: F0 03 20 00 21 4C 47 20 07
20A8: 00 00 00 00 00 00 00 00 E8
20B0: 00 00 00 00 00 00 00 00 F0
20B8: 00 00 00 00 00 00 00 00 F8
20C0: 00 00 00 00 00 00 00 00 01
20C8: 00 00 00 00 00 00 00 00 09
20D0: 00 00 00 00 00 00 00 00 11
20D8: 00 00 00 00 00 00 00 00 19
20E0: 00 00 00 00 00 00 00 00 21
20E8: 00 00 00 00 00 00 00 00 29
20F0: 00 00 00 00 00 00 00 00 31
20F8: 00 00 00 00 00 00 00 00 39
2100: A9 22 8D 26 20 A9 0A 85 F4
2108: 03 A9 00 85 02 A9 02 85 CE
2110: 04 20 03 20 A9 23 8D 26 D9
2118: 20 A9 0B 85 03 20 03 20 4D
2120: A9 10 8D 26 20 A9 0C 85 94
2128: 03 A9 01 85 04 20 03 20 95
2130: A9 4C 8D 84 10 A9 04 8D 11
2138: 85 10 A9 9B 8D 86 10 A9 80
2140: 02 85 04 20 03 20 60 46 07
2148: 41 53 54 A0 4C 4F 41 44 FA
2150: 49 4E 47 A0 44 4F 53 8D 51
2158: 8D 8D 8D 8D 8D 8D 8D 8D 9A
2160: 31 AE A0 D5 D0 C4 C1 D4 4A
2168: C5 A0 C1 A0 C4 C9 D3 CB B8
2170: 8D 8D 32 AE A0 D1 D5 C9 CF
2178: D4 8D 8D C3 C8 CF CF D3 6F
2180: C5 A0 00 00 00 00 00 8D 5B
2188: 8D 8D 8D 46 41 54 41 4C 35
2190: A0 45 52 52 4F 52 00 00 A7
2198: 8D 8D 8D 8D C9 CE D3 C5 86
21A0: D2 D4 A0 C4 C9 D3 CB A0 B7
21A8: C9 CE A0 C4 D2 C9 D6 C5 15
21B0: A0 00 00 00 00 00 00 00 43
21B8: 00 00 00 00 00 00 00 00 FA
21C0: 00 00 00 00 00 00 00 00 03
21C8: 00 00 00 00 00 00 00 00 0B
21D0: 00 00 00 00 00 00 00 00 13
21D8: 00 00 00 00 00 00 00 00 1B
21E0: 00 00 00 00 00 00 00 00 23
21E8: 00 00 00 00 00 00 00 00 2B
21F0: 00 00 00 00 00 00 00 00 33
21F8: 00 00 00 00 00 00 00 00 3B
2200: 00 00 00 00 A2 6D BD 39 C3
2208: 9B 9D 56 BC CA 10 F7 A2 41
2210: 20 BD A7 9B 9D DF BC CA 33
2218: 10 F7 A2 2C BD C7 9B 9D 5B
2220: 69 BA CA 10 F7 A2 DB BD E1
2228: EF 9B 9D AE BE CA D0 F7 A4
2230: A9 60 8D 4F A5 4C C2 9C 88
2238: 00 A9 BC 8D 84 A3 A9 7E DB
2240: 8D 83 A3 A9 4C 8D 82 A3 7C
2248: A9 BC 8D 49 A4 A9 70 8D 11
2250: 48 A4 60 A5 67 8D 72 AA 49
2258: A5 68 8D 73 AA A9 02 D0 43
2260: 05 20 7A A4 A9 04 8D E9 2B
2268: BC 8D CC BE 8D 42 BF 8D 76
2270: AC BC AD 60 AA 8D 55 BF EB
2278: AD 61 AA BD 56 BF AD 72 99
2280: AA 8D 57 BF AD 73 AA 8D B2
2288: 58 BF AD 55 BF 18 69 04 29
2290: 8D 55 BF AD 56 BF 69 00 48
2298: 8D 56 BF A9 00 8D F3 B7 A1
22A0: 8D EB B7 4C DF BC 00 A9 FD
22A8: 01 8D F4 B7 AD 57 BF 38 6D
22B0: E9 04 8D D1 BE 8D F0 B7 7F
22B8: 8D 57 BF AD 58 BF E9 00 02
22C0: 8D F1 B7 4C 69 BA 00 8D C7
22C8: D2 BE 8D 58 BF AD C9 B5 5B
22D0: 8D F0 BE 8D F9 BE 8D 1B C9
22D8: BF 8D 14 BF AD CA B5 8D 70
22E0: F1 BE 8D FA BE 8D 1C BF 53
22E8: BF 15 BF 4C AF BE 00 00 87
22F0: AD CB B5 8D CE BE 8D 44 5F
22F8: BF AD CC B5 8D CF BE 8D 34
2300: 45 BF AD 56 BF F0 6F A9 3E
2308: 00 8D 42 BF A2 04 BD 00 96
2310: 96 9D 00 20 E8 D0 F7 A2 28
2318: 0E 8E FF B7 AE FF B7 F0 5A
2320: 79 EE 58 BF CE 56 BF F0 26
2328: 2B AD 56 BF C9 FF F0 60 C6
2330: BD 00 97 F0 5B 8D EC B7 F9
2338: E8 BD 00 97 8D ED B7 E8 58
2340: 8E FF B7 EE F1 B7 A0 E8 4C
2348: A9 B7 20 B5 B7 90 CD A9 F5
2350: 08 4C D5 A6 BD 00 97 8D 7D
2358: EC B7 E8 BD 00 97 8D ED 63
2360: B7 A9 00 AD CC B5 8D F1 12
2368: B7 AD CB B5 8D F0 B7 A9 14
2370: B7 A0 E8 20 B5 B7 AD 57 19
2378: BF 8D 47 BF AD 58 BF 8D C2
2380: 48 BF A2 04 BD 00 96 9D 28
2388: 00 20 E8 EC 55 BF D0 F4 03
2390: A9 00 A8 91 40 60 55 BF C7
2398: 57 BF A9 08 8D D5 B5 A2 02
23A0: 0C BD E8 B7 9D 80 BF CA 2E
23A8: 10 F7 38 20 5E AF A2 0C 01
23B0: BD 80 BF 9D E8 B7 CA 10 93
23B8: F7 A2 0C 8E FF B7 4C E0 66
23C0: BE 00 A2 03 BD D3 9C 9D FE
23C8: 83 9D CA D0 F7 20 56 BC 48
23D0: 4C 84 9D 00 AD E9 B7 00 96
23D8: 00 00 00 00 00 00 00 00 1F
23E0: 00 00 00 00 00 00 00 00 27
23E8: 00 00 00 00 00 00 00 00 2F
23F0: 00 00 00 00 00 00 00 00 37
23F8: 00 00 00 00 00 00 00 00 3F