. II : U n. VIC -154'1 [ill [)] I g 11II II III II 11II III 11II III II a II .. II !I'" n " II i" i.
VIC-1541 SINGLE DRIVE FLOPPY DISK USER'S MANUAL P/N ~ 1540031-02 commodore COMPUTER
WARNING: This equipment has been certified to comply with the limits for I!, Class B computing device, pursuant to Subpart J of Part 15 of FCC Rules. Only computers certified to comply with the Class B limits may be attached to this printer. Operation with noncertified computers is likely to result in interference to radio and TV reception," This warning is valid for the equipment which has the following FCC label on its rear. CERTIFIED TO COMPLY WITH CLASS B LIMITS.
Table of Contents Page .............. 1. General Description 2. Unpacking and Connecting Contents of Box 3 . .... Connection of Cables PoweringOn ........ Insertion of I)jskette . . . . . Using with VlC 20 or Commodore 64 . . 9 9 9 9 11 12 13 13 14 3. UsingPrograms .............. Loading Pre-packaged Software LOAD . Directoryof Disk . . . . . . . . . Pattern Matching & Wild Cards SAVE SAVE and replace. . . . VERIFY.. .. . .. .. DOS Support Program 4.
7. Relative Files. . . . . . . . . . . . . . . Creating arelative fde .. . . . ., .. .. . .. .. . . Usingrelativefdes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 8. 9. Programming the Disk Controller. BLOCK-EXECUTE 3S 37 37 MEMORY-READ.. . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 37 MEMORY-WRITE MEMORY-EXECUTE . . . . . . . . . . . . . . . . . . . . . . . . . . .. 38 USERCommands 39 Changing the Disk Device Number Software . . . . . . . . . . . . . . . . . . .
1. GENERAL DESCRIPTION Introduction Welcome to .the fastest, easiest, and most efficient filing system available for your Commodore 64 or VIC 20 computer, your 1541 DISK DRIVE. This manual has been designed to show you how to get the most from your drive, whether you're a beginner or an advanced professional. If you are a beginner, the first few chapters will help you through the basics of disk drive installation and operation. As your skill and programming knowledge improves.
change the disk device number. by "cutting" a line inside the drive unit or through software. Remember, you don't really need to learn everything in this book all at once. The first four chapters are enough to get you going, and the next couple are enough for most operations. Getting to know your disk drive will reward you in many ways-speed of operation, reliability, and much more flexibility in your data processing capabilities.
Figure 1.1 Specifications VIC 1540/1541 Single Drive Floppy Disk STORAGE Total capacity Sequential Relative Directory entries Sectors per track Bytes per sector Tracks Blocks 174848 bytes per diskette 168656 bytes per diskette 167132 bytes per diskette 65535 records per file 144 per diskette 17 to 21 256 35 683 (664 blocks free) lC's: 6502 6522 (2) microprocessor I/O.
2. UNPACKING AND CONNECTING Contents of Box Included with the 1541 disk drive unit, you should find a gray power cable, black serial bus cable, this manual, and a demonstration diskette. The power cable has a connection for the back of the disk drive on one end, and for a grounded (three-prong) electrical outlet on the other. The serial bus cable is exactly the same on both ends. It has a 6-pin DIN plug which attaches to the VIC 20, Commodore 64 or another disk drive.
Connection of Cables Your first step is to take the power cable and insert it into the back of the disk drive (see figure 2.2). It won't go in if you try to put in in upside down. Once it's in the drive, plug the other end into the electrical outlet. if the disk drive makes any sound at this time, please turn it off using the switch on the back! Don't plug any other cables into the disk drive if the power is on. Next.
First, make sure that you've removed all diskettes from the disk drives before powering on. After all the other deviceshave been turned on, only then is it safe to turn on the computer. All the other devices will go through their starting sequences. The printer's motor goes on, with the print head moving halfway across the line and back again. The 1541 disk drive will have its red error light on, and then the green drive light will blink, while your TV screen forms the starting picture.
computers. However, each computer has different requirements for speed of incoming data. Therefore, there is a software seitch for selecting which computer's speed to use. The drive starts out ready for a Commodore 64.
name must be used to tell the disk drive what to do. In addition, the disk drive's device number must be specified. If no device number is listed, the computer assumes the program is on tape. FORMAT FOR THE LOAD COMMAND: LOAD name$ , device# , command# The program name is a string, that is, either a name in quotes or the contents of a given string variable. Some valid names are: "HELLO", "PROGRAM #1", A$, NAME$. The device# is preset on the circuit board to be #8.
The Block Availability Map is simply a checklist of all 683 blocks on the disk. It is stored in the middle of the diskette, halfway between the center hub and the outer rim. Every time a program is SAVEd or a data file is CLOSEd, the BAMis updated with the list of blocks used up. The directory is a list of all programs and other files stored on the disk. It is physically located right next to the BAM.
LOAD "T" will find the first program on the tape beginning with the letter T. And LOAD "HELLO" will find the first program beginning with the letters HELLO, like "HELLO THERE." When using the disk, this option is called pattern matching, and there is a special character in the file name used to designate this. The asterisk (*) character following any program name tells the drive you want to find any program starting with that name.
See the LOAD ~ommal1d (pages parameters device# and command#. & ) for an explanation of the When you tell the disk drive to SAVE a program, the DOS must take several steps. First, it looks at the directory to see if a program with that name already exists. Next it ~he~ks to see that there is a directory entry available for the name. Then it che~ks the BAMto see if there are enough blocks in which to store the program. If everything is OK up to this point, the program is stored.
DOS Support Program On your demonstration disk, there may be a program called DOS SUPPORT.This program, also called a wedge,allowsyou to use many disk commands more easily (different wedges are used for the VIC 20 and the Commodore 64). Just LOAD the program and RUN it. It automatically sets itself up and erases itself when it's finished. You'll have a few hundred less bytes to work with when this program is running, but you'll also have a handy way to send the disk commands.
The device# of the disk is usually 8. The channel # can be any number from 2 to 15. These refer to a channel used to communicate with the disk, and channels numbered a and I are reserved for the operating system to use for LOADing and SAVEing. Channels::: through 14 can be used for data to files, and 15 is the command channel. The text$ is a string that is PRINTed to the file, as if with a PRINT# statement. This is handy for sending a single command to the channel.
That way, if you carelessly replace diskettes while writing data, the drive will know by checking the ID that something is wrong. COpy This command allows you to make a copy of any program or file on the disk drive. It won't copy from one drive to a different one (except in the case of dual drives like the 4040), but it can duplicate a program under another name on the drive.
SCRATCH This command allows you to erase unwanted files and programs from the disk, which then makes the blocks available for new information. You can erase programs one at a time or in groups by using pattern matching and/or wild cards. FORMAT FOR SCRATCHCOMMAND PRINT# as 15, "SCRATCH~:~ or abbreviated PRINT# 15, "S~:name" If you check the error channel after a scratch operation (see below), the number usually reserved for the track number now tells you how many files were scratched.
FORMAT FOR VALIDATE COMMAND: PRINT# 15, "VALIDATE" or abbreviated as PRINT# 15, "V" DUPLICATE This command is a hangover from the operating systems that were contained on the dual drives like the 4040. It was used to copy entire diskettes from one drive to another, but has no function on a single disk drive.
before CLOSEing your data channels. The error channel should be OPENed iust and CLOSEd last of all your files! That will keep your programs out of trouble. If you close the error channel while other files are OPEN, the disk drive will CLOSE them for you, but BASIC will still think they are open (unless you CLOSE them properly), and let you to try to write to them.
EXAMPLES OF OPENING SEQUENTIAL FILES: If the me already exists, you can use the replace option in the OPEN statement, similarto the SAVE-and-replacedescribedin chapter 3. Simplyadd the (0'0:beforethe file'snamein the OPENstatement. EXAMPLE OF SEQUENTIAL FILE WITH REPLACE OPTION: OPEN 2, 8, 2, "(Q?():DATA,S,W" PRINT# and INPUT# . The PRINT# command works exactly like the PRINT statement, except that output is re-directed to the disk drive.
statement PRINT# 5, A$; B$; C$: char CR stands for the CRR$ code of 13, the carriage return, which is PRINTed at the end of every PRINT or PRINT# statement unless there is a comma or semicolon at the end of the line. NOTE: Do not leave a space between PRINT and #, and do not try to abbreviate the command as ?#. See the appendixes in the user manual for the correct abbreviation.
characters if the numbers are positive. Here is a picture of the file after the statement PRlNT# 5, I; 3; 5; 7 is performed: char fIle. IS Appendix B contains a program demonstrating the use of a sequential disk GET# The GET# retrieves data from the disk, one character at a time. FORMAT FOR THE GET# STATEMENT: GET# f1le#, variable list Data comes in byte by byte, including the CR, comma, and other separating characters. It is much safer to use string variables when using the GET# statement.
70 GET# 5, A$ In CaseOf Null Character Being Read In - Causes Error With ASC Function Otherwise! 80 IF ST < > 0 THEN PRINT ST: STOP 90 PRINT ASC(A$+CHR$.l0) ); 100 GOTO 70 200 INPUT# 15, A$, B$, C$, 0$ 210 IF VAL (A$) > 0 THEN PRINT A$,B$,C$;O$:STOP 220 RETURN Reading the Directory The directory of the diskette may be read just like a sequential file. lust use $ for the file name, and OPEN 5, 8, 5, "$". Now the GET# statement works to examine the directory.
500 B$="" 510 FORL=OTOJ 520 GET#I,A$ BUILD A 530 IFA$ < > CHR$(96)THENIFA$ < > CHR$(160)THENB$=B$+A$f STRING 540 NEXT ~SUBROUTINE 550 RETURN j Table 5.1: 1540{1541 BAM FORMAT Track 18, Sector O. BYTE CONTENTS 0,1 2 3 4-143 ... 18,01 65 0 DEFINITION Track and sectOr of first directory block ASCII character A indicating 4040 format. Null flag for future OOS use. Bit map of available blocks for trac so1-35. 1 =available block o = block not available (each bit represents one block) Table 5.
Table 5.3: DIRECTORY FORMAT Track 18,Sector 1 for 4040 Track 39, Sector 1 for 8050 BYTE DEFINITION 0,1 2-31 34-63 66-95 Track and sector of next directory block. *File entry 1 98-127 130-159 162-191 194-223 226-255 *File entry 4 *File entry 5 *File entry 6 *File entry 2 *File entry 3 *File entry 7 *File entry 8 *STRUCTURE BYTE 0 CONTENTS 128+type OF SINGLE DIRECTORY ENTRY DEFINITION File type OR'ed with $80 to indicate properly closed file.
Table 5.4: SEQUENTIAL BYTE FORMAT DEFINITION 0,1 Track and sector of next sequential data block. 2-256 254 bytes of data with carriage returns as record terminators. Table 5.5: PROGRAM FILE FORMAT BYTE 0,1 2-256 6. DEFINITION Track and sector of next block in program me. 254 bytes of program info stored in CBM memory format (with key words tokenized). End of file is marked by three zero bytes.
TRACK NUMBER I to [7 18 to 24 25 to 30 31 to 35 SECTORRANGE TOTAL SECTORS 21 19 18 17 o to 20 o to 18 o to 17 o to 16 The DOS contains commands for reading and writing directly to any track and sector on the diskette. There are also commands for checking to see which blocks (tracks & sectors) are available, and for marking off used blocks. These commands are transmitted through the command channel (channe[# 15), and tell the disk what to do with the data.
SAMPLE PROGRAM TO READ BLOCK 2 FROM TRACK 18: (stores contents in B$) 10 OPEN 15,8,15 20 OPEN 5, 8,5,"#" ~ ~ ~ 30PRINT# 15, "B.R:" 5,0, 18,2 B$ "" 40= 50 FOR L=OTO 255 ~ ~ } -B - LOCK 60 GET# 5, A$ 70 IF ST=OTHEN B$= B$+ A$: NEXT L 80 PRINT "FINISHED" 90 CLOSE 5: CLOSE 15 COLLECT ENTIRE BLOCK, BYTE BY BYTE BLOCK-WRITE The BLOCK-WRITEcommand is the exact opposite of the BLOCK-READ command.
BLOCK.ALLOCAIE In order to safely use random files along with regular files, your programs must check the BAM to find available blocks, and change the BAM to reflect that you've used them. Once you update the BAM, your random tiles will be safe-at least unless you perform the VALIDATE command (see chapter 3). FORMAT FOR THE BLOCK-ALLOCATE COMMAND: PRINT# file#, "BLOCK.
that you have no way of keeping track of which blocks on the disk you used. After all, you can't tell one used block on the BAMfrom another. You can't tell whether it contains your random file, just part of a program, or even sequential or relative meso To keep track, the most common method is to build up a sequential file to go with each random file. Use this file to keep just a list of record, track, and block locations.
80 INPUT# 5, A$, X 90 IF A$ < > "Record Contents #" OR X < > R THEN STOP 110 PRINT# 15, "B-F:" 0, T, S 120 NEXT R 130 CLOSE 4: CLOSE 5 "'" Checks To Make Sure Data Is OK 140 PRINT# IS, "S0:KEYS" 150 CLOSE 15 BUFFER-POINTER The buffer pointer keeps track of where the last piece of data was written. It also is the pointer for where the next piece of data is to be read. By changing the buffer pointer's location within the buffer, you can get random access to the individual bytes within a block.
70 PRINT# IS, "B-P:" 5: (L-I)'" 64 80 PRINT# 5, AS "," L \. P~sition to 0, 64, 128, or 192 90 NEXT L 100T=I: S=I 110 PR]NT# IS, "B-A:" 0; T; S 120 ]NPUT# IS, A, BS, C, D s.
with an important difference: the way USERl and USER2 work with the buffer-pointer. The BLOCK-READ command reads up to 256 characters, but stops reading when the buffer-pointer stored with the block says that block is finished. The USERI command performs the BLOCK-READ operation, but first forces the pointer to 255 in order to read the entire block of data from the disk. FORMAT FOR USERl COMMAND: PRINT# file#, "VI :,.
Creating a Relative File When a relative file is first to be used, the OPEN statement will create that file; after that, that same file will be used. The replaceoption (withthe @) sign) does not erase and re-create the file. The file can be expanded, read, and written into.
Upon execution, the DOSfirst checks to see if the file exists. If it does, then nothing happens. The only way to erase an old relative file is by using the SCRATCHcommand (see chapter 4), but not by using the replace option. Using Relative Files In order to OPEN a relative file once it exists, the format is simpler. FORMAT FOR OPENING AN EXISTING RELATIVE FILE: OPEN file#, device#, channel#, "name" In this case, the DOS automatically knows that it is a relative file.
This is how the record lel1gth is determined. We would probably want to allow an extra character in length for each field, to allow for separations; otherwise the INPUT# command would pick up a much longer piece of the file than needed, just like in sequential files. Therefore, we'll set up a file with a length of 108 characters per record. In the first record, we'll put the number 1, representing the largest record# used so far.
This program asks for record numbers when retrieving records. It won't let you retrieve from beyond the end of the file, and if you try to write beyond the end it forces you to write on the next higher record. A more advanced version than this would keep track of the items by "keys", to index the records. For example, you would probably want to search for a record by name, or print out labels by zip code.
FORMAT FOR MEMORY-READ: PRINT# file#, "M-R:" CHR$(low byte of address) CHR$(high byte) (no abbreviation!) The next byte read using the GET# statement through channel# IS, the error channel, will be from that address in the disk controller's memory, and successivebytes will be from successivememory locations. Any INPUT# to the error channel will give peculiar results when you're using this command. This can be cleared up by any other command to the disk (besides a memory command).
FORMAT FOR MEMORY-EXECUTE: PRINT# file#, "M-E:" CHR$(1ow address byte) CHR$(high byte) See line 20 above for an example. USER Commands Aside from the USERI and USER2 commands discussed in chapter 6, and the UI+ and UI- commands in chapter 2, the USER commands are jumps to a table of locations in the disk drive's RAM memory.
PRlNT# file#, "M-W:" CHR$(119) CHR$(O) CHR$(2) CHR$(address+32) CHR$(address+64) EXAMPLE OF CHANGING DEVICE NUMBER: PRINT# 15, "M-W:" CHR$(l19) CHR$(O) CHR$(2) CHR$(9+32) CHR$(9+64) PRlNT# Q, "M-W:" CHR$(119) CHR$(O)CHR$(2) CHR$(R+32) CHR$(R+64) If you have more than one drive, it's sensible to change the address through hardware (see below). If you must, the procedure is easy. Just plug in the drives one at a time, and change their numbers to the desired new values. That way you won't have any conflicts.
Appendix A: Disk Command Summary General Format: PRINT# file#, command COMMAND NEW COpy NAME SCRATCH INITIALIZE VALIDA TE DUPLICATE BLOCK-READ BLOCK-WRITE BLOCK-ALLOCATE BLOCK-FREE BUFFER-POINTER USERl. and USER2 POSITION BLOCK.
Appendix B: Summary of CBM Floppy ErrorMessages o I 2-19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 39 50 51 52 60 61 62 63 64 65 66 67 70 71 72 73 74 42 OK, no error exists. Files scratched response. Not an error condition. Unused error messages: should be ignored. Block header not found on disk. Sync character not found. Data block not present. Checksum error in data. Byte decoding error. Write-verifyerror. Attempt to write with write protect on. Checksum error in header.
DESCRIPTIONOF DOS ERROR MESSAGES NOTE: Error message numbers less than 20 ~hould be ignored with the exception of 01 which gives information about the number of files scratched with the SCRATCHcommand. 20: READ ERROR (block header not found) The disk controller is unable to locate the header of the requested data block. Caused by an illegal sector number, or the header has been destroyed. 21: READ ERROR (no sync character) The disk controller is unable to detect a sync mark on the desired track.
28: WRITE ERROR (long data block) The controller attempts to detect the sync mark of the next header after writing a data block. If the sync mark does not appear within a pre-determined time, the error message is generated. The error is caused by a bad diskette format (the data extends into the next block), or by hardware failure. 29: DISK ID MISMATCH This message is generated when the controller has been requested to access a diskette which has not been initialized.
52: FILE TOO LARGE Record position within a relative file indicates that disk overflow will result . 60: WRITE FILE OPEN This message is generated when a write file that has not been closed is being opened for reading. 61 : FILE NOT OPEN This message is generated when a file is being accessed that has not been opened in the DOS. Sometimes, in this case, a message is not generated; the request is simply ignored. .. 6 '"). FILE NOT FOUND The requested file does not exist on the indicated drive.
72: DISK FULL Either the blocks on the diskette are used or the directory is at its limit of 152 entries for the 2040, 3040, and 4040 or 243 entries for the 8050. DISK FULL is sent when two blocks are available on the 8050 to allow the current me to be closed. 73: DOS MISMATCH(73, CBM DOS V2.5 8050) (73, CBMDOS V2) for 4040 DOS I and 2 are read compatible but not write compatible.
APPENDIX C: Demonstration Disk Programs 1. D/R 4 OPEN2.. 8,15 5 PRINT":1":GOTO 1121121121121 1101 OPENL8..
1613 17121 PRINTiI5."Ul:";2;0;18;a PRINTiI5."B-P";2;1 18121PRINT":'1"; 19121 ¥=22:X=I:GOSUB43a 2130 FORI=0T020:PRINT:PRINT":T1"RIGHT$(STR$(I>+" 21121GET#2,A$ 220 GEHI2. A$ 23121GET#2., A$ 240 TS=0 25121FORT=lTOI7:GOSUB450 26121 Y=22:X=T+4:GOSUB43e:GOSUB54a:NEXT 270 FORI=lT02a0a:NEXT:PRINT":'1" 28121Y=22:X=I:GOSUB430 29121FORI"0T02a: PRUIT: PRINT":T1"RIGHT$(STR$( 31210FORT=18T035 31121 I)+" ".3); : NEXT ".
3. DISPLAYT & S lee REM"'''''..'*' lIe 1213 1313 1413 1513 1613 165 ' *-. REt1'" DI SPLA'T' A~JY TRACK $ SECTOR '" REM. ON THE DISK TO THE SCREEN . REM. OR THE PRINTER *REM"'''''''''''''''''''''''''''''''''''''''''''*'''''''''*'''**'''''''''''''''.. PRHH":'IIIiIIl PRHIT"DISPLA'T' BLOCK COtnENTS" PRINT" ": 1713REM * "''''.'''.'''......... 1813 REM'" SET PROORAM CONSTANT 1913REM..".'."".." "'......_._. ...
4613 462 464 REM****************************** REM* READ & PRINTER DISPLAY * REM********************_**_****** K~l:NB(l)=A$C(A$(e» FOR J=0 TO 15 FOR I=K TO 15 GETII2, A$
4. CHECK DISK 1 REM CHECK DISK -- VER 1.4 2 DN=8:REM FLOPP~ DEVICE NUMBER 5 DIMT(laa):DIMS(laa):REM BAD TRACK, " 51 PRINT":'MWOO 113 PRINT" CHECK DISK PROGRAM" 12 PRINT" 213 D$="a" 313 OPEN15,DN,15 35 PRHITII15,"V"D$ 45 N~=RND(TI)*255 513 A$= ''"':FOR I= 1 T0255 :A$=A$+CHR$ SECTOR (255AND 6a GOSUBSlaa 713 OPEN2,DN,2, "II" 813 PRINT:PRINT#2,A$; 85 T=l: 5=13 913 PRINTII15, "B-A: "D$; T.:$ 11313INPUTII15,EN,EM$,ET,ES 1113 IFEN=aTHEN13a 115 IFET=aTHEN2aa:REM END 1213 PRINTII15, "B-A: "D$.
1"'81:1 \1390 NT=30 !>!>.IN,'':N ~~1%~~i~~':, ?ERFQR\~~HCE ,I::S," 1121:1 PRINT 1131:1 PRINT" INSERT SCRATCH" 1.
167121PRINT"J.1 UNIT HAS PASSED" 168121PRINT" PERFORMANCE TEST!" 16913 PRINT")) PULL DISKETTE FROM" 171313PRINT")) DRIVE BEFORE TURNING" 1713 PRINT" POI~ER OFF." 172121END 1730 17413 : 175121 PRINT" J.1CONTINUE (...
APPENDIX D: DISK FORMATS NOTE Not to scale 1540/1541 Format: Expanded View of a Single Sector 54
Block Distribution by Track Block or Sector Range 2040,3040 Track number I to 18 to 25 to 31 to 17 24 30 25 o to o to o to o to Block or Sector Range 4040 Track number 1 to 18 to 25 to 31 to 20 19 17 16 o to o to o to o to 17 24 30 35 20 18 17 16 Total 21 20 18 17 Total 21 19 18 17 8050 Track number Block or Sector Range 1 to 39 40 to 53 54 to 64 o to 28 o to 26 o to 24 29 27 25 65 to 77 o to 22 23 1540/1541 Total BAM FORMAT Track 18, Sector O.
* STRUCTURE OF SINGLE DIRECTORY ENTRY BYTE CONTENTS 0 128+type DEFINITION File type OR'ed with $80 to indicate properly closed file. TYPES: 0= DEleted I = SEQential 2 = PROGram 1-2 3-18 19-20 3 = USER 4 = RELative Track and sector of Ist data block. File name padded with shifted spaces. Relative file only: track and sector for first side sector block. 21 22-25 Relative file only: Record size. Unused. 26-27 Track and sector of replacement file when OPEN@ is in effect.
1540/1541 DIRECTORY HEADER Track 18, Sector O. BYTE CONTENTS 144-161 DEFINITION Disk name padded with shifted spaces. Disk 10. 162-163 164 160 Shifted space. 165-166 50,65 166-167 177-255 160 ASCII representation for 2A which is DOS version and format type. Shifted spaces. Nulls, not used. 0 Note: ASCII characters may appear in locations 180 thru 191 on some diskettes.
RELATIVEFILE FORMAT DATA BLOCK DEFINITION BYTE 0,1 2-256 Track and sector of next data block. 254 bytes of data. Empty records contain FF (all binary ones) in the first byte followed by 00 (binary all zeros) to the end of the record. Partially filled records are padded with nulls (00). SIDE SECTOR BLOCK BYTE DEFINITION 0-1 Track and sector of next side sector block.
VIC-1541 User's Manual Errata Sheet. INTRODUCTION Commodore is constantly trying to bripg you the most efficient and reliable computer in the world today. Along wit~ the hardware improvements that come from practical applications of the 154i disk drive in the marketplace, the documentation should also reflect any changes and/or improvements that occur. This is the most up-to-date information available for your 1541 disk drive.
- D. 1. P. 9, USINGWITHA VIC 20 OR COMMODORE64, last paragraph 2. . . . explanation of the U (user) commands in chapter 7. 3. . . . explanation of the U (user) commands in chapter 8. E. 1. P. 10, EXAMPLES,example 3 2. LOAD A$, J K 3. LOAD A$, J, K F. 1. P. 13, FORMAT FOR THE SAVE COMMAND,first paragraph, line 1 See the LOAD command (pages & ) for an explanation. . . See the LOAD command (page 10) for an explanation. . . 2. 3. G. 1. P.
M. 1. P. 23, READINGTHE DIRECTORY, sample program, line 10 2. 10 OPEN 1, 8, 2, "s 3. N. O. 10 OPEN 1,8,2, "$ 1. P.24,TABLE5.1,line4-143 2. 4-143 Bit map of availableblocks for trace 1-35 3. 4-143 * Bit map of availableblocks for trace 1-35 1. P. 27, TABLETOP OF PAGE 27 2. 3. Table 6.1 TRACK AND BLOCKFORMAT P. 1. P. 30, SAMPLEPROGRAMWRITING 10 RANDOM-ACCESS.. . , lines 40, 90, 100, 120, 130, 140 2.
R. 1. P. 41, APPENDIXA: DISKCOMMAND SUMMARY, line 3 "RO:new name. . . 2. NAME 3. RENAME "RO:newname. . . S. 1. P. 46, 72: DISKFULL,lines2-3 2. . . . 152entriesfor the 2040, 3040,and4040or 243 entriesfor the 8050 . . . . whentwo blocksareavailableon the 8050to . . . 3. . . . 144 entries for the 1541 . . . . when two blocks are availableon the 1541to . .. T. 1. P. 46, 73: DOSMISMATCH, title line 2. DOSMISMATCH (73, CBMDOSV2.5 8050) (73, CBMDOSV2) for 4040 3. DOSMISMATCH (73, CBMDOSV2.6 1541) U. 1. P.