Classic Computer Magazine Archive COMPUTE! ISSUE 59 / APRIL 1985 / PAGE 86

TurboDisk
High-Speed Disk Loader
For Commodore 64
And Expanded VIC-20

Don Lewis

Another breakthrough! Recently COMPUTE! published a startling utility that loads Commodore tapes as fast as 1541 disks (see "TurboTape," January and February 1985). In this issue we're following up with a program that accelerates 1541 disk loading by a factor of three times or more. You'll find that "TurboDisk" is as revolutionary as TurboTape-and just as easy to use.


If you've ever used a really fast disk drive, you know that the Commodore 1541 drive leaves something to be desired-namely, speed. True, it's much faster than a Datassette-at least, a Datassette without "TurboTape"-but it's still annoyingly slow compared to other floppy disk drives with high-speed parallel interfaces.
    Now there's a stunning solution: "TurboDisk."
    Once you start using TurboDisk, you'll wonder how you got along without it. TurboDisk turbocharges the loading process by a factor of three times or more. In fact, the longer the program, the more improvement you'll see!
    TurboDisk requires no modifications to your disk drive or computer. It loads programs saved in the usual manner; no special Turbosave is required. It works with most BASIC and machine language programs, including the DOS Wedge. It does not compromise reliability. And you can switch it on or off at any time by typing a single command.
    If you're still skeptical, give TurboDisk a trial-it delivers what it promises.

Preparing TurboDisk
For the Commodore 64, you'll need to type in two programs to prepare TurboDisk: a BASIC program that creates a machine language file on disk (the actual TurboDisk utility); and a short two-line BASIC loader that calls up and activates TurboDisk. For the VIC, a single BASIC program is used to read the TurboDisk machine language from DATA statements and relocate it to the top of available memory.
    Program 1 is the BASIC program that creates the 64 version of TurboDisk. Notice all the numbers in DATA statements; these represent the machine language portion of the utility. Be extra careful when typing these lines. We recommend using the "Automatic Proofreader" to prevent as many errors as possible (see "COMPUTE!'s Guide To Typing In Programs" elsewhere in this issue).
    Save Program 1 on disk before running it for the first time. That way, if an error causes your computer to lock up, you can switch it off to clear the memory, reload the program, and search for the typing mistake. Otherwise you could lose all of your typing effort.
    When Program 1 runs, it prints the message INSERT DISK AND HIT RETURN WHEN READY. Insert a formatted program disk and press RETURN. Program 1 creates a file on the disk with the name TURBODISK.OBJ and then prints the message TURBODISK.OBJ CREATED. You'll probably want copies of TurboDisk on all of your program disks, so rerun the program as many times as necessary.
    Program 1 will print an error message if it detects a disk error or a typing mistake in the DATA statements. In addition, the partially written TURBODISK.OBJ file will be scratched from the disk if an error is detected in the DATA.
    Finally, if you're using a Commodore 64, you must type in Program 2 and save it on all your program disks with the filename TURBODISK. To load and run TurboDisk, all you have to do is enter LOAD TURBODISK,8 and RUN. The short loader will call TURBODISK.OBJ off the disk, place it safely in high memory, and activate it automatically.

VIC TurboDisk
Program 3, for the VIC-20, reads the TurboDisk machine language from DATA statements and POKEs it into the top of available memory, adjusting addresses within the machine language as necessary. This is slower than the scheme used for the 64, but necessary because TurboDisk's position in the VIC depends on the amount of memory installed and whether any other utilities-such as the DOS Wedge-are already in memory. Memory expansion is required to use VIC TurboDisk, but any amount-even 3K-is sufficient. However, TurboDisk will reduce the amount of free memory by 1280 bytes.
    As always when entering DATA statements containing machine language, check carefully for typing mistakes, since a single wrong number can cause the program to crash. The Automatic Proofreader should help you avoid some typographical errors. Program 3 also includes internal checks on the DATA statements, and will report an error if the sum of all the DATA items doesn't match its predetermined total.
    To install TurboDisk, simply load and run Program 3. If all DATA is correct, the program will tell you the SYS values that will turn TurboDisk on and off (these numbers vary according to the amount of memory expansion). Be sure to make a note of the numbers for later reference. Program 3 will also automatically activate TurboDisk, so you don't need the SYS to start it the first time.

Turbocharged LOADs
Once TurboDisk is activated, no special commands are necessary. Simply type LOAD "filename",8 or LOAD"filename",8,1 as usual. You'll be amazed at the difference.
    One thing you will notice immediately is that the red light on the disk drive doesn't come on at all during a Turboload. Don't panic; this is normal. It's also normal for the 64's screen to blank out as TurboDisk works. When the program is loaded, the screen reappears unaltered. The VIC's screen doesn't blank; instead, you'll see the message TURBOLOADING to let you know that the high-speed loading is in progress.
    You may occasionally find it necessary to deactivate TurboDisk and use a normal LOAD instead. For example, 1541 disk drives are prone to head alignment problems, so if you have a disk formatted on a drive other than your own, you may find that your drive has difficulty loading programs from it. Since the Turboload routine gives up more easily on difficult loads, you may have to switch to the more forgiving standard LOAD to get the program into your computer. You can switch off 64 TurboDisk at any time without erasing it from memory by entering SYS 49155. To reactivate 64 TurboDisk, enter SYS 49152. For the VIC, use the SYS values reported by the loader program.
    You'll also find it necessary to use the SYS to reactivate TurboDisk after pressing RUN/ STOP-RESTORE. Using that key combination to reset the computer effectively disconnects TurboDisk.
    There are a few cautions to observe. When using TurboDisk, only one device can be active on the serial bus. Turn off all other devices except for one 1541 disk drive, device number 8. If you are using a printer interface such as Cardco's which gets power from the cassette port, remove the plug from the cassette port before using TurboDisk. If you attempt to Turboload a program and the drive spins continuously but nothing else happens, you have probably forgotten to turn off your printer or unplug your printer interface.
    On the Commodore 64, TurboDisk resides in the 4K block of free memory starting at address 49152 (hex $C000), so it's completely safe from BASIC. However, many machine language programs or subroutines also use this memory space and may overwrite TurboDisk. Don't attempt to use TurboDisk to load any program which occupies locations 49152-50431 ($C000-$C4FF).
    Since VIC TurboDisk resides at the top of memory, care must be taken to avoid loading a program that is long enough to overwrite the Turbodisk machine language. After running Program 3, type PRINT INT(FRE(0)/256). The value you get is roughly the maximum length in disk blocks for a program to load without disturbing TurboDisk. For example, on a VIC with 8K expansion and both TurboDisk and the VIC-20 Wedge installed, the PRINT above should yield a 38. Thus, for that memory configuration, you should not attempt to Turboload a program that the disk directory shows to be more than 38 blocks long.
    TurboDisk speeds up LOADs-even LOADs from within programs, as are common in multipart VIC programs-but it can't speed up SAVEs or VERIFYs. It also doesn't affect the speed of disk file handling with OPEN, PRINT#, GET#, etc. It's not compatible with certain features of some programs, such as saving text files with the SpeedScript 3.0 word processor, although you can use TurboDisk to load SpeedScript in the first place. Turbodisk works with the disk-locking function of "Commodore File Protector" (see article elsewhere in this issue) but not with the file-locking function. It also may not work with some commercial software.

How TurboDisk Works
The machine language for TurboDisk is unusual in that only half of it works within your computer-the rest is actually executed within the 1541 drive itself. Unlike disk drives for most other computers, Commodore's are intelligent units, containing their own microprocessors, RAM, and ROM. This means that they can be programmed for special effects, like Turboloading.
    During the brief delay you notice between the time you enter the LOAD command with TurboDisk and the time the drive starts spinning, 420 bytes of machine language code are transferred from the computer to the drive's RAM. This is the portion in the second set of DATA statements in Programs 1 and 3. In the 64, it is stored in locations 49664-50083 ($C200-$C3A3). This required transfer of data before each Turboload adds a certain amount of overhead time, which explains why TurboDisk gives less speed improvement for short programs.
    TurboDisk operates by changing the ILOAD vector at locations 816-817 ($330-$331) to point to itself, bypassing the normal LOAD routines in ROM. (These locations are reset to their normal values during the RUN/STOP-RESTORE sequence, which explains why the program must be reactivated after that key combination is pressed.) TurboDisk first checks to see whether a disk directory (LOAD "$",8) or a VERIFY was requested. In either of these cases, control is returned to the ROM routines for normal processing. If a program load was requested, the routine adds the filename to the code for the disk drive portion, then transfers that data to the drive's memory.
    The portion of TurboDisk in the disk drive uses routines in the drive's ROM to locate the desired program and read it from the disk sector by sector. To improve speed, drive ROM routines like the one that turns on the red light are omitted, and only the essential ones are used. The 256 bytes of data from each disk sector are transferred two bits at time to a 256-byte buffer within the computer. In the 64, this buffer is at locations 50176-50431 ($C400-$C4FF).
    TurboDisk machine language in the computer reads the incoming data from the serial port's DATA and CLK lines, instead of just the DATA line as in normal serial data transfers. Thus, TurboDisk temporarily converts your serial drive into a two-bit parallel drive. When the entire 256 bytes from a disk sector have been transferred into the computer's buffer, data from the buffer is added to the program in memory while the drive is reading the next sector from the disk.

Just How Fast Is It?
Despite a few limitations, TurboDisk is one of the most valuable general-purpose utilities a disk user can own. To discover exactly how fast it is, we ran tests with some programs recently published in COMPUTE!. The test results, shown below, demonstrate how TurboDisk yields the most improvement with medium to long programs. (Results with different disk drives may vary. Figures shown below are for the 64 version.)
    After trying TurboDisk yourself, we think you'll agree it's a worthy follow-up to TurboTape.


Program

Blocks
Normal
LOAD

Turboload

Factor

Acrobat 31
21 sec
7 sec
3.0
Space Caverns 17
13 sec
5 sec
2.6
64 Paintbox 45
31 sec
9 sec
3.4
Unicopy 64   8
  7 sec
5 sec
1.4
SpeedScript 3.0 25
18 sec
6 sec
3.0
SpeedScript 3.0
 source code

122

75 sec

17 sec

4.4


Please refer to "COMPUTE!'s Guide To Typing In Programs" before entering these listings.

Program 1: 64 TurboDisk Creator

100 PRINT"(CLR}"TAB(206)"(WHT}TURBODISK P
    ROGRAM GENERATOR":PRINT:PRINT  :rem 2
110 PRINT "(CYN)INSERT DISK AND HIT (RVS}
     RETURN (OFF) WHEN READY":PRINT:PRINT
                                 :rem 115
120 GET A$:IF A$<>CHR$(13) THEN 120
                                 :rem 248
130 OPEN 2,8,2,"TURBODISK.OBJ,P,W":GOSUB
    (SPACE}1000                  :rem 100
140 PRINT#2,CHR$(0)CHR$(192);     :rem 78
150 FOR I=0 TO 427:READ A:CK=CK+A:PRINT#2
    ,CHR$(A);:NEXT I             :rem 225
160 IF A<>32 OR CK<>55038 THEN PRINT"
    {RVS}ERROR IN DATA LINES 49152-49578"
    :GOTO 300                      :rem 5
170 FOR I=0 TO 83:PRINT#2,CHR$(234);:NEXT
     I                           :rem 115
180 CK=O:FOR I=0 TO 419:READ A:CK=CK+A:PR
    INT#2,CHR$(A);:NEXT I         :rem 26
190 IF A<>160 OR CK<>43460 THEN PRINT"
    {RVS}ERROR IN DATA LINES 49664-50078"
    :GOTO300                      :rem 49
200 CLOSE 2:PRINT TAB(9)"[<7>]TURBODISK.OBJ
     CREATED":PRINT:PRINT TAB(10);:rem 74
210 INPUT "ANOTHER COPY (Y/N)";A$:IF A$<>
    "Y" THEN END                 :rem 197
220 RUN                          :rem 137
300 CLOSE 2:CLOSE 15:OPEN 15,8,15,"S0:TUR
    BODISK.OBJ":CLOSE 15:END      :rem 45
1000 CLOSE15:OPEN15,8,15:INPUT#15,E,E$,T,
     S:IF E=0 THEN RETURN         :rem 71
1010 PRINT "DISK ERROR"E": "E$,T;S
                                 :rem 145
1020 CLOSE15:OPEN15,8,15,"IO:":CLOSE15
                                 :rem 160
49100 REM ** 64 TURBODISK ML     :rem 240
49152 DATA 76,27,192,169,165,141  :rem 63
49158 DATA 48,3,169,244,141,49   :rem 221
49164 DATA 3,160,0,185,41,192    :rem 151
49170 DATA 240,6,32,22,231,200   :rem 184
49176 DATA 208,245,96,169,84,141  :rem 71
49182 DATA 48,3,169,192,141,49   :rem 220
49188 DATA 3,160,21,208,230,13   :rem 196
49194 DATA 84,85,82,66,79,68     :rem 142
49200 DATA 73,83,75,32,68,73     :rem 115
49206 DATA 83,65,66,76,69,68     :rem 135
49212 DATA 13,0,13,84,85,82       :rem 51
49218 DATA 66,79,68,73,83,75     :rem 137
49224 DATA 32,65,67,84,73,86     :rem 124
49230 DATA 65,84,69,68,13,0       :rem 64
49236 DATA 133,147,165,147,208,30:rem 102
49242 DATA 162,16,169,160,157,148:rem 108
49248 DATA 195,202,16,250,160,0  :rem 249
49254 DATA 177,187,201,36,240,12  :rem 50
49260 DATA 177,187,153,148,195,200
                                 :rem 161
49266 DATA 196,183,144,246,176,5  :rem 69
49272 DATA 165,147,76,165,244,32  :rem 62
49278 DATA 69,193,165,186,32,177  :rem 79
49284 DATA 255,169,111,32,147,255:rem 109
49290 DATA 169,85,32,168,255,169  :rem 75
49296 DATA 67,32,168,255,32,174   :rem 18
49302 DATA 255,120,169,11,141,17  :rem 39
49308 DATA 208,32,19,193,44,0    :rem 156
49314 DATA 196,48,76,164,195,166  :rem 75
49320 DATA 196,165,185,240,6,172  :rem 56
49326 DATA 2,196,174,3,196,132   :rem 213
49332 DATA 174,134,175,162,4,32  :rem 254
49338 DATA 251,192,32,19,193,173  :rem 60
49344 DATA 0,196,48,48,240,6     :rem 114
49350 DATA 32,249,192,76,188,192  :rem 69
49356 DATA 162,2,160,0,189,0     :rem 101
49362 DATA 196,145,174,200,232,240
                                 :rem 147
49368 DATA 7,236,1,196,144,242   :rem 216
49374 DATA 240,240,32,6,193,24   :rem 203
49380 DATA 72,169,27,141,17,208    :rem 8
49386 DATA 104,166,174,164,175,88:rem 122
49392 DATA 96,169,4,44,169,0     :rem 124
49398 DATA 56,176,235,162,2,160   :rem 12
49404 DATA 0,189,0,196,145,174   :rem 211
49410 DATA 200,232,208,247,24,152 :rem 86
49416 DATA 101,174,133,174,165,175
                                 :rem 152
49422 DATA 105,0,133,175,96,160  :rem 251
49428 DATA 0,169,11,141,0,221    :rem 142
49434 DATA 173,0,221,16,251,169  :rem 253
49440 DATA 3,141,0,221,162,5      :rem 87
49446 DATA 202,234,208,252,162,4  :rem 46
49452 DATA 173,0,221,10,8,10      :rem 88
49458 DATA 38,149,40,38,149,202   :rem 14
49464 DATA 208,242,165,149,73,255:rem 115
49470 DATA 153,0,196,200,208,209  :rem 46
49476 DATA 96,169,16,133,255,169  :rem 77
49482 DATA 0,133,251,169,194,133  :rem 53
49488 DATA 252,169,0,133,253,169  :rem 65
49494 DATA 5,133,254,165,186,32   :rem 11
49500 DATA 177,255,169,111,32,147:rem 103
49506 DATA 255,165,253,164,254,141
                                 :rem 156
49512 DATA 169,193,140,170,193,160
                                 :rem 153
49518 DATA 0,185,166,193,32,168   :rem 13
49524 DATA 255,200,192,6,208,245  :rem 51
49530 DATA 160,0,177,251,32,168  :rem 253
49536 DATA 255,200,192,32,144,246:rem 101
49542 DATA 165,251,105,31,133,251 :rem 91
49548 DATA 165,252,105,0,133,252  :rem 47
49554 DATA 165,253,105,32,133,253 :rem 99
49560 DATA 165,254,105,0,133,254  :rem 45
49566 DATA 32,174,255,198,255,208:rem 121
49572 DATA 180,96,77,45,87,0     :rem 127
49578 DATA 0,32                  :rem 236
49600 REM ** 1541 TURBODISK ML    :rem 86
49664 DATA 32,66,208,120,169,18   :rem 10
49670 DATA 160,1,141,0,3,140      :rem 86
49676 DATA 1,3,32,186,5,169       :rem 67
49682 DATA 3,133,60,162,0,134    :rem 148
49688 DATA 75,240,41,160,0,177   :rem 214
49694 DATA 59,201,130,208,25,200  :rem 46
49700 DATA 200,200,185,145,6,201  :rem 31
49706 DATA 42,240,61,201,63,240  :rem 245
49712 DATA 4,209,59,208,7,200    :rem 157
49718 DATA 192,18,240,48,208,234  :rem 61
49724 DATA 230,75,166,75,224,8   :rem 218
49730 DATA 240,7,189,98,5,133    :rem 169
49736 DATA 59,208,208,173,0,3    :rem 163
49742 DATA 240,6,172,1,3,76       :rem 55
49748 DATA 14,5,169,255,141,0    :rem 162
49754 DATA 3,32,133,5,88,76       :rem 68
49760 DATA 69,217,2,34,66,98     :rem 127
49766 DATA 130,162,194,226,230,59:rem 110
49772 DATA 160,0,177,59,141,0    :rem 157
49778 DATA 3,200,177,59,141,1    :rem 162
49784 DATA 3,32,186,5,32,133     :rem 110
49790 DATA 5,173,0,3,208,245     :rem 107
49796 DATA 96,160,0,185,0,3       :rem 64
49802 DATA 133,133,44,0,24,16    :rem 144
49808 DATA 251,169,16,141,0,24   :rem 206
49814 DATA 44,0,24,48,251,162    :rem 155
49820 DATA 4,169,0,6,133,42       :rem 52
49826 DATA 10,6,133,42,10,141    :rem 142
49832 DATA 0,24,202,208,240,72   :rem 195
49838 DATA 104,72,104,169,15,141  :rem 53
49844 DATA 0,24,200,208,206,96   :rem 204
49850 DATA 172,1,3,132,7,173     :rem 102
49856 DATA 0,3,197,6,8,133        :rem 15
49862 DATA 6,40,240,16,169,176   :rem 216
49868 DATA 133,0,88,36,0,48       :rem 69
49874 DATA 252,120,165,0,201,1   :rem 194
49880 DATA 208,78,169,238,141,12  :rem 66
49886 DATA 28,169,6,133,50,169   :rem 229
49892 DATA 0,133,51,133,48,169   :rem 214
49898 DATA 3,133,49,32,58,6       :rem 75
49904 DATA 80,254,184,173,1,28   :rem 214
49910 DATA 153,0,3,200,208,244   :rem 191
49916 DATA 160,186,80,254,184,173:rem 116
49922 DATA 1,28,153,0,1,200       :rem 39
49928 DATA 208,244,32,224,248,165:rem 113
49934 DATA 56,197,71,240,4,169   :rem 225
49940 DATA 34,208,20,32,233,245  :rem 251
49946 DATA 197,58,240,4,169,35   :rem 230
49952 DATA 208,9,169,236,141,12   :rem 10
49958 DATA 28,96,24,105,24,133   :rem 219
49964 DATA 68,169,255,141,0,3    :rem 169
49970 DATA 32,133,5,165,68,76    :rem 171
49976 DATA 200,193,32,64,6,76    :rem 170
49982 DATA 124,6,165,18,133,22   :rem 211
49988 DATA 165,19,133,23,165,6   :rem 224
49994 DATA 133,24,165,7,133,25   :rem 215
50000 DATA 169,0,69,22,69,23      :rem 98
50006 DATA 69,24,69,25,133,26    :rem 155
50012 DATA 32,52,249,162,90,32   :rem 192
50018 DATA 124,6,80,254,184,173  :rem 252
50024 DATA 1,28,217,36,0,208      :rem 89
50030 DATA 6,200,192,8,208,240   :rem 186
50036 DATA 96,202,208,233,169,32  :rem 46
50042 DATA 208,175,169,208,141,5  :rem 45
50048 DATA 24,169,33,44,5,24     :rem 102
50054 DATA 16,163,44,0,28,48      :rem 99
50060 DATA 246,173,1,28,184,160  :rem 247
50066 DATA 0,96,160,160,160,160  :rem 242
50072 DATA 160,160,160,160,160,160
                                 :rem 126
50078 DATA 160,160,160,160,160,160
                                 :rem 132


Program 2: 64 TurboDisk Loader

10 IF A=0 THEN A=1:LOAD "TURBODISK.OBJ",8
   ,1                            :rem 155
20 SYS 49152:NEW                 :rem 138


Program 3: VIC TurboDisk Loader
Translation by Ottis Cowper, Technical Editor

10 POKE 55,0:POKE 56,PEEK(56)-5:CLR:PRINT
   "{DOWN} VIC TURBODISK LOADER"  :rem 32
20 X=PEEK(56):A1=X*256:PRINT"{DOWN)WRITIN
   G BLOCK 1"                    :rem 188
30 FOR AD=A1 TO A1+444:READ DT:CK=CK+DT:I
   F DT<H THEN DT=X-DT-1         :rem 234
40 POKE AD,DT:NEXT:IF CK<>52477 THEN PRIN
   T"{RVS}ERROR IN DATA":PRINT"LINES 1000
   -1444":STOP                    :rem 61
50 CK=0:A2=A1+512:PRINT"WRITING BLOCK 2"
                                  :rem 75
60 FOR AD=A2 TO A2+419:READ DT:CK=CK+DT
                                 :rem 165
70 POKE AD,DT:NEXT:IF CK<>43460 THEN PRIN
   T"{RVS}ERROR IN DATA":PRINT"LINES 2000
   -2414":STOP                    :rem 55
80 PRINT"DATA OK":PRINT"{DOWN}SYS"A1"TO A
   CTIVATE":PRINT"{DOWN}SYS"A1+3"TO DISAB
   LE"                           :rem 120
90 SYS Al                        :rem 218
999 REM ** VIC TURBODISK CODE    :rem 151
1000 DATA 24,144,24,169,73,141   :rem 188
1006 DATA 48,3,169,245,141,49    :rem 154
1012 DATA 3,160,0,185,41,-1       :rem 21
1018 DATA 240,6,32,66,231,200    :rem 133
1024 DATA 208,245,96,169,84,141    :rem 3
1030 DATA 48,3,169,-1,141,49      :rem 90
1036 DATA 3,160,21,208,230,13    :rem 128
1042 DATA 84,85,82,66,79,68       :rem 74
1048 DATA 73,83,75,32,68,73       :rem 65
1054 DATA 83,65,66,76,69,68       :rem 76
1060 DATA 13,0,13,84,85,82       :rem 248
1066 DATA 66,79,68,73,83,75       :rem 78
1072 DATA 32,65,67,84,73,86       :rem 65
1078 DATA 65,84,69,68,13,0        :rem 14
1084 DATA 133,147,165,147,208,30  :rem 43
1090-DATA 160,0,177,187,201,36   :rem 194
1096 DATA 240,22,162,16,169,160  :rem 247
1102 DATA 157,148,-4,202,16,250  :rem 231
1108 DATA 177,187,153,148,-4,200  :rem 40
1114 DATA 196,183,144,246,176,5    :rem 1
1120 DATA 165,147,76,73,245,160  :rem 251
1126 DATA 0,185,138,-1,240,30    :rem 129
1132 DATA 32,66,231,200,208,245  :rem 235
1138 DATA 13,84,85,82,66,79       :rem 70
1144 DATA 76,79,65,68,73,78       :rem 79
1150 DATA 71,46,46,46,13,0       :rem 247
1156 DATA 77,45,87,0,0,32        :rem 206
1162 DATA 169,16,133,255,169,0   :rem 202
1168 DATA 133,251,169,-3,133,252  :rem 37
1174 DATA 169,0,133,253,169,5    :rem 153
1180 DATA 133,254,165,186,32,177  :rem 49
1186 DATA 255,169,111,32,147,255  :rem 50
1192 DATA 165,253,164,254,141,159:rem 100
1198 DATA -1,140,160,-1,160,0    :rem 120
1204 DATA 185,156,-1,32,168,255  :rem 245
1210 DATA 200,192,6,208,245,160  :rem 234
1216 DATA 0,177,251,32,168,255   :rem 199
1222 DATA 200,192,32,144,246,165  :rem 33
1228 DATA 251,105,31,133,251,165  :rem 32
1234 DATA 252,105,0,133,252,165  :rem 235
1240 DATA 253,105,32,133,253,165  :rem 31
1246 DATA 254,105,0,133,254,32   :rem 187
1252 DATA 174,255,198,255,208,180:rem 105
1258 DATA 165,186,32,177,255,169  :rem 65
1264 DATA 111,32,147,255,169,85    :rem 0
1270 DATA 32,168,255,169,67,32   :rem 210
1276 DATA 168,255,32,174,255,120  :rem 49
1282 DATA 32,137,-2,44,0,-5       :rem 28
1288 DATA 48,69,164,195,166,196   :rem 27
1294 DATA 165,185,240,6,172,2    :rem 152
1300 DATA -5,174,3,-5,132,174    :rem 127
1306 DATA 134,175,162,4,32,113   :rem 188
1312 DATA -2,32,137,-2,173,0      :rem 70
1318 DATA -5,48,41,240,6,32       :rem 39
1324 DATA 111,-2,24,144,240,162  :rem 224
1330 DATA 2,160,0,189,0,-5       :rem 234
1336 DATA 145,174,200,232,240,7  :rem 239
1342 DATA 236,1,-5,144,242,240   :rem 181
1348 DATA 240,32,124,-2,24,166   :rem 186
1354 DATA 174,164,175,88,96,169   :rem 22
1360 DATA 4,44,169,0,56,176       :rem 53
1366 DATA 242,162,2,160,0,189    :rem 146
1372 DATA 0,-5,145,174,200,232   :rem 180
1378 DATA 208,247,24,152,101,174  :rem 44
1384 DATA 133,174,165,175,105,0  :rem 248
1390 DATA 133,175,96,160,0,169   :rem 205
1396 DATA 128,141,17,145,173,17  :rem 255
1402 DATA 145,41,2,240,249,169   :rem 195
1408 DATA 0,141,17,145,162,7      :rem 91
1414 DATA 202,234,208,252,162,4  :rem 237
1420 DATA 173,17,145,74,38,149   :rem 206
1426 DATA 74,38,149,234,234,202  :rem 253
1432 DATA 208,242,165,149,73,255  :rem 50
1438 DATA 153,0,-5,200,208,207   :rem 182
1444 DATA 96                      :rem 86
1999 REM ** 1541 TURBODISK CODE  :rem 177
2000 DATA 32,66,208,120,169,18   :rem 191
2006 DATA 160,1,141,0,3,140       :rem 20
2012 DATA 1,3,32,186,5,169       :rem 248
2018 DATA 3,133,60,162,0,134      :rem 82
2024 DATA 75,240,41,160,0,177    :rem 139
2030 DATA 59,201,130,208,25,200  :rem 227
2036 DATA 200,200,185,145,6,201  :rem 230
2042 DATA 42,240,61,201,63,240   :rem 179
2048 DATA 4,209,59,208,7,200     :rem 100
2054 DATA 192,18,240,48,208,234  :rem 251
2060 DATA 230,75,166,75,224,8    :rem 152
2066 DATA 240,7,189,98,5,133     :rem 112
2072 DATA 59,208,208,173,0,3      :rem 97
2078 DATA 240,6,172,1,3,76       :rem 254
2084 DATA 14,5,169,255,141,0      :rem 96
2090 DATA 3,32,133,5,88,76         :rem 2
2096 DATA 69,217,2,34,66,98       :rem 70
2102 DATA 130,162,194,226,230,59  :rem 35
2108 DATA 160,0,177,59,141,0      :rem 91
2114 DATA 3,200,177,59,141,1      :rem 87
2120 DATA 3,32,186,5,32,133       :rem 35
2126 DATA 5,173,0,3,208,245       :rem 41
2132 DATA 96,160,0,185,0,3       :rem 245
2138 DATA 133,133,44,0,24,16      :rem 87
2144 DATA 251,169,16,141,0,24    :rem 140
2150 DATA 44,0,24,48,251,162      :rem 89
2156 DATA 4,169,0,6,133,42       :rem 251
2162 DATA 10,6,133,42,10,141      :rem 76
2168 DATA 0,24,202,208,240,72    :rem 138
2174 DATA 104,72,104,169,15,141  :rem 243
2180 DATA 0,24,200,208,206,96    :rem 138
2186 DATA 172,1,3,132,7,173       :rem 45
2192 DATA 0,3,197,6,8,133        :rem 205
2198 DATA 6,40,240,16,169,176    :rem 159
2204 DATA 133,0,88,36,0,48       :rem 250
2210 DATA 252,120,165,0,201,1    :rem 119
2216 DATA 208,78,169,238,141,12    :rem 0
2222 DATA 28,169,6,133,50,169    :rem 154
2228 DATA 0,133,51,133,48,169    :rem 148
2234 DATA 3,133,49,32,58,6         :rem 0
2240 DATA 80,254,184,173,1,28    :rem 148
2246 DATA 153,0,3,200,208,244    :rem 134
2252 DATA 160,186,80,254,184,173  :rem 50
2258 DATA 1,28,153,0,1,200       :rem 238
2264 DATA 208,244,32,224,248,165  :rem 47
2270 DATA 56,197,71,240,4,169    :rem 159
2276 DATA 34,208,20,32,233,245   :rem 194
2282 DATA 197,58,240,4,169,35    :rem 164
2288 DATA 208,9,169,236,141,12   :rem 209
2294 DATA 28,96,24,105,24,133    :rem 153
2300 DATA 68,169,255,141,0,3      :rem 94
2306 DATA 32,133,5,165,68,76     :rem 105
2312 DATA 200,193,32,64,6,76      :rem 95
2318 DATA 124,6,165,18,133,22    :rem 145
2324 DATA 165,19,133,23,165,6    :rem 149
2330 DATA 133,24,165,7,133,25    :rem 140
2336 DATA 169,0,69,22,69,23       :rem 59
2342 DATA 69,24,69,25,133,26     :rem 107
2348 DATA 32,52,249,162,90,32    :rem 153
2354 DATA 124,6,80,254,184,173   :rem 204
2360 DATA 1,28,217,36,0,208       :rem 41
2366 DATA 6,200,192,8,208,240    :rem 147
2372 DATA 96,202,208,233,169,32  :rem 254
2378 DATA 208,175,169,208,141,5    :rem 6
2384 DATA 24,169,33,44,5,24       :rem 54
2390 DATA 16,163,44,0,28,48       :rem 51
2396 DATA 246,173,1,28,184,160   :rem 208
2402 DATA 0,96,160,160,160,160   :rem 185
2408 DATA 160,160,160,160,160,160 :rem 78
2414 DATA 160,160,160,160,160,160 :rem 75