‡"READING INFO FROM AND WRITING INFO TO THE DISK. BEFORE THIS ROUTINE IS CALLED, CERTAIN PARAMETERS HAVE TO BE SET. THE NEXT SCREEN WILL PROVIDE INFO ON THESE PARAMETERS. &̢ 44539:'Uև"LOCATION $EB SHOULD CONTAIN DRIVE #, $EC = TRACK #, $ED = SECTOR #, $EE & $EF = THE RAM AREA TO WHICH THE DATA IS(<"BEING WRITTEN TO OR BEING READ FROM. LOCATION $EA = OPERATIN -> 0 = RESTORE, 1 = DO NOTHING, 2 READ FROM DISK, 3 = WRITE TO DISK. AFTER CALLING THIS ROUTINE, LOCATION $F0 =0 IF NO ERROR OCCURRED! ( 44539::: @224,"PRESS FOR PART VIII": 44539:A(135): A32 490 : "DKTUTOR8"TORE, 1 = DO NOTHING, 2 READ FROM DISK, 3 = WRITE TO DISK. AFTER CALLING THIS ROUD<<|~J<|HBBBD@IBBBJBBP@BBD@I@BBJBB`<~B||I<~BJ~BPBBP@IBBJBBHBBBH@IBBBJBBD<<><<~~J<|I@|B@BI";: OP$(. THEN USE THE COPY COMMAND. THIS WILL PREVENT THE ?OB ERROR.", 44539::30,: "fm error: BAD FILE MODE. THIS ERROR OCCURS WHEN YOU TRY TO READ INFORMATION FROM A OUTPUT FILE OR WRITE INFORMATION TO A INPUT FILE. IT ALSO OCCURS WHEN YOU TRY TO loadm A BASIC PROGRAM. ": 44539:,30-: "fn error: BAD FILE NAME.CAUSES: (1) FILENAME LONGER THAN 8 CHARACTERS. (2) FILENAME HAS UNACCEPTABLE CONTROL CODE(S). (3) EXTENSTION TOO LONG.".4 "(4) INAPPROPRIATE DRIVE NUMBER. ": 44539:30/-: "fs error: FILE STRUCTURE ERROR. OCCURS WHEN GAT (TRACK 17,SECTOR2) IS REPLACED BY GARBAGE. ALSO OCCURS WHEN THE DIRECTORY INFO OF A PARTICULAR PROGRAM IS DESTROYED. IF YOU HAVE A SPARE COPY OF THE DIRECTORY, YOU CAN/ "RECREATE THE DIRECTORY/GAT AND THEREFORE RESTORE YOUR PROGRAM(S)!": 44539:/Ȏ300jҞ: "ae error: FILE ALREADY EXISTS. OCCURS WHEN YOU TRY TO COPY OR RENAME A FILE TO A FILENAME AND A FILE WITH THAT FILENAME ALREADY EXISTS ON THAT DISK.": 44539:0r܎301M: "ne error: FILE DOESN'T EXIST. OCCURS WHEN THE SPECIFIED FILE DOESN'T EXIST ON THE DISK. OTHERCAUSES ARE IMPROPER EXTENSION AND 'HIDDEN' CONTROL CODES IN THE FILENAMES IN THE DIRECTORY."1[ 44539:1c302U: "wp error: WRITE PROTECT ERROR. OCCURS WHEN YOU TRY TO WRITE INFO TO A DISK WHICH HAS A WRITE-PROTECT TAB. SOME PROGRAMS LIKEEDTASM+ (TM) WILL GIVE AN ?WP ERROR WHEN READING FILES FROM A WRITE-PROTECT DISK. ";2c 44539:2k303E": "io error: INPUT OUTPUT ERROR. CAUSES: (1) BAD DISK (2) CRASHED DIRECTORY (3) UNFORMATTED DISK "4, "(4) DISK INSERTED ON WRONG SIDE (5) DISK NOT IN DISK DRIVE (6) DISK DRIVE NOT TURNED ON (7) DISK DRIVE CABLE NOT CONNECTED (8) PROBLEM WITH DISK DRIVE"4/6 44539::305@: "ie error: INPUT PAST THE END OF FILE ERROR. OCCURS WHEN YOU TRY TO RETRIEVE INFO PAST THE END OFFILE. ML PROGRAMS WHICH ARE SAVED IMPROPERLY WILL GENERATE THIS ERROR WHEN THEY ARE LOADED.": 445395J305T: "ao error: FILE ALREADY OPEN. OCCURS WHEN YOU TRY TO OPEN/LOADA FILE THAT IS ALREADY OPENED. FIRST, TYPE: UNLOAD AND PRESS . THEN LOAD THE FILE. "5^ 44539:30E THIS ERROR WHEN THEY A&q :@22432,(32,"*");:" PART IX":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ....";: 44539': "THIS PART OF THE TUTORIAL CONTAINS 5 VERY USEFUL DISK UTILITIES. THE NEXT 5 SCREENS WILL DESCRIBE THESE UTILITIES INDETAIL.": 44539:(: " utility #1 THIS UTILITY ALLOWS YOU TO COMPARE TWO DISKETTES. IT CAN BEVERY USEFUL IF YOU WANT TO DETERMINE IF TWO DISKETTES ARE IDENTICAL. THIS UTILITY";(5(" REQUIRESTWO DISK DRIVES."(C2 44539:)5< " utility #2 THIS UTILITY WILL ALLOW YOU TO SEARCH THROUGH A DISK FOR A STRING. THIS UTILITY EMULATES THE DISK SEARCH FUNCTION FOUND IN OTHER COMPUTERS.")CF 44539:*8P " utility #3 THIS UTILITY WILL DISPLAY ALL THE GRANULES USED FOR A SPECIFIED PROGRAM. IT CAN BE VERY USEFUL TO LOCATE WHERE A PROGRAM IS LOCATED ON";*KZ" THE DISK.";*Yd 44539:+Ln: " utility #4 THIS UTILITY WILL SEARCH YOUR DISKS FOR A SPECIFIED PROGRAM. IT IS A GREAT IMPROVEMENT OVER TYPING 'DIR' AND TRYING TO SEE IF THE PROGRAMS EXISTS";+jx" IN ":"THE DIRECTORY!"+x 44539:,h: " utility #5 THIS UTILITY WILL LIST THE FILENAMES OF ALL PMODE3/4 GRAPHIC SCREENS ON THE DISK. MOST GRAPHICS SCREENS HAVE A STARTING ADDRESS OF";,v" $0E00","AND ENDING ADDRESS OF $25FF!", 44539:-G: "THESE 5 UTILITIES ARE CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART"- 44539:A(135): A32 "DKTUT10" : A82 "DUTILII" : 190 $25FF!", 44539:-G: "THESE 5 UTILITIES ARE CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART"- 44539:A(135): A32 "DKTUT10" : A82 "DUTILII" : 190 $25FF!", 44539:-G: "THESE 5 UTILITIES ARE CONTAINED IN DISK UTILITIES II. PRESS TO CONTINUE":/#< 44539:/#F 4000/#PFL0:I3 34/#Z J1 18:0,I,J,A$,B$:1,I,J,C$,D$0&#d A$C$ B$D$ "TRACK"I" SECTOR"J" NOT SAME .":FL100#n J,I0_#x FL0 :@224,"BOTH DISKS ARE SAME ..."0#: "PRESS ANY KEY TO CONTINUE ..": 44539:/#< 44539:/#F 4000/#PFL0:I3 34/#Z J1 18:0,I,J,A$,B$:1,I,J,C$,D$0&#d A$C$ B$D$ thod #5: THIS METHOD INVOLVES ADDING A AUTOSTART TO YOUR PROGRAMS AND DISABLING THE RESET BUTTON, BREAK KEY, ETC. AND DISABLING COMMANDS SUCH AS2b"LIST, LLIST, ETC. OUR PROGRAM - disk anti-pirate - PROVIDES SUCH SOPHISTICATED PROTECTION SCHEMES TO PROVIDE COMPLETE PROTECTION FOR YOUR DISK PROGRAMS. 2p 44539:2"method #6: THIS LAST METHOD DEALS WITH SAFE-LOCKS - DISK CASES WHICH HAVE A LOCK SYSTEM. BY USING THESE 'SAFE-LOCKS',3Zȇ"YOU CAN PREVENT OTHER USERS FROM TAMPERING WITH YOUR DISK SOFTWARE. 4͢ 44539:: "THE DIRECTORY HIDER PROGRAM IS CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART."4JҢ 44539:A(135): A32 "DKTUTOR9" : A82 "DUTILII" : 210 4͢ 44539:: "THE DIRECTORY HIDER PROGRAM IS CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART & :@8,"*DISK UTILITIES I*"::::" (1) TRACK DISPLAY":" (2) COPY DIRECTORY":" (3) RESTORE DIRECTORY":" (4) MAGAZINE STORAGE":" (5) MAGAZINE RETRIEVAL":" (6) BASIC PROGRAM LENGTH"'L" (7) POWER ON LIGHT":" (8) TWO COLUMN DIRECTORY": " (9) DISK COMPARER"::" ";OP$' (OP$) 1000,2000,3000,4000,5000,6000,7000,8000,9000'(' 2000::TR0 34: SC1 18(0,TR,SC,A$,B$:@22496,"TRACK ["TR" ] SECTOR ["SC" ]"::A$;B$: SC,TR((О: 2000:0,17,11,A$,B$: A$(128,255) B$(128,255) 2010 : @224,"DIRECTORY CANNOT BE COPIED...": 42961::::(0,17,2,A$,B$:0,17,1,A$,B$:I3 10:0,17,I,A$,B$:0,17,I8,A$,B$:I:)@ :0,17,1,A$,B$: A$(128,255) B$(128,255) @224,"DIRECTORY CANNOT BE RESTORED..": 42961::::) 0,17,1,A$,B$:0,17,2,A$,B$:I3 10:0,17,I8,A$,B$:0,17,I,A$,B$::):"D",#1,"MAGA/DAT",80) #1,50 N$,10 I$,20 P$:LR(1))LRLR1:"MAGAZINE #"LR*#҉"NAME ";NN$:"ISSUE ";II$:"PUBLISHER ";PP$:*B N$NN$: I$II$: P$PP$*^ #1,LR:"ANY MORE";YN$*} YN$"Y" 4040 : #1:*:"D",#1,"MAGA/DAT",80* #1,50 N$,10 I$,20 P$* I1 (1): #1,I: "MAGAZINE #"I+"NAME:";N$:"ISSUE:"I$:"PUBLISHER:"P$+(:D1 3000::I+3 #1:+gp"BASIC PROGRAM FILENAME (WITH EXTENSION):";F$+z"D",#1,F$,1: #1,1 A$+ #1,2:A(A$): #1,3:B(A$)+PLA256B+ "PROGRAM SIZE = "PL+ #1: 42961:::::+X:I&H1D1,0b A$: A$"END" I,("&H"A$):II1: 7010,al &H1D1::"POWER LIGHT INSTALLED .........",oq: 40999,v BE,01,0D,30,08,AF,8D,00,1F,30,8D,00,04,BF,01,0D,39,B6,FF,03,2A,12,B6,FF,02,B6,09,86,27,04,81,20,26,05,8A,01,B7,FF,40,7E,00,00,3B,END-&@0,1:1:6000:A$(71),E$(14):DR(235)-RJ:@228,"reading disk directory";::Y1-^TX311-^DR,17,X,A$,B$:C$A$(B$,127):E$(X)C$-hN0 7-rA$(Y)(C$,N321,32):R$(A$(Y),1):R$(255)8090:R$(0)8070-|YY1:Y688090-N.X.6KY1: IK1 68:A$(I)" ":.?PT1.E. IPT PT28 2: (A$(I),8)" "(A$(I),9,3)" "(A$(I1),8)" "(A$(I1),9,3).‹.̢ 44539:/PTPT30: PTK 8110 : :@224,"FREE GRANULES = "(DR): 42961::H :@7,"* DISK UTILITIES II*":::" (1) DRIVE STEP RATES":" (2) DOUBLE SIDED DRIVE":" (3) 40 TRACK DRIVES":" (4) DIRECTORY HIDER":" (5) DIRECTORY RETRIEVER"Y" (6) COMPARE DISKS":" (7) SEARCH DISK":" (8) GRANULE DISPLAY":" (9) FILE SEARCH":" (10) PMODE 3/4 FILES"::" ";OP$ (OP$) 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000 聦 11000::::" (1) 30 MS STEP RATE":" (2) 20 MS STEP RATE":" (3) 12 MS STEP RATE":" (4) 6 MS STEP RATE"TL:" ";OP$: (OP$) 1200,1300,1400,1500_~1000 (&HC155)49 &HD7C0,0: &HD816,23 : &HD6CD,0: &HD723,23 (&HC155)49 &HD7C0,0: &HD816,22 : &HD6CD,0: &HD723,22F@x (&HC155)49 &HD7C0,0: &HD816,21 : &HD6CD,0: &HD723,21F܅ (&HC155)49 &HD7C0,0: &HD816,20 : &HD6CD,0: &HD723,20Ё 11000: (&HC155)49 243,&HCC: 244,&H41: 245,&H42: 246,&HFD: 247,&HD8: 248,&H9F: 249,57: 243:\ڒ 243,&HCC: 244,&H41: 245,&H42: 246,&HFD: 247,&HD7: 248,&HAC: 249,57: 243:i 11000  (&HC155)49 3300 50997,78: 51034,84: 51131,78: 51183,78: 51152,78: 52518,78: 52917,78: 53917,40: 54349,78: 54580,39: 54879,40: 54914,40: 50952,78: 50986,84: 51083,78: 51104,78: 51135,78: 52300,78: 52697,78: 53680,40: 54111,78: 54342,39: 54642,40: 54677,40: 2000:0,17,3,A$,B$:0,17,18,A$,B$:A$(128,255):B$A$:0,17,3,A$,B$: 2000:0,17,18,A$,B$:0,17,3,A$,B$:p 2000z:@224,"PUT THE DISKETTES TO BE COMPARED";:"IN DRIVE 0 AND DRIVE 1":"AND PRESS ": 44539:@22464,"THESE SECTORS ARE NOT THE SAME"I0 34: J1 180,I,J,A$,B$:1,I,J,C$,D$ A$C$ B$D$ "TRACK"I" SECTOR "J1 J,I: 42961::::LX 2000: SEARCH STRINGb"STRING:";S$::"THESE SECTORS HAVE THIS STRING"::lI0 34: J1 18v0,I,J,A$,B$:C$A$(B$,127): (C$,S$)0 "TRACK"I" SECTOR"J: 7050*C$(A$,127)B$: (C$,S$)0 "TRACK"I" SECTOR"JN J,I: 42961: 42961: 42961:@ 1: 6000: A$(68),E$(68)::@224,"";: "FILENAME/EXT:";F$:G$(F$,(F$,"/")1):G$G$(8(G$)," ")::G$G$"/"(F$,(F$,"/")1,3):F$G$J 10080TI1'^ / 44539:/" tip #7 HERE IS AN EXCELLENT WAY TO KEEP PEOPLE FROM TAMPERING WITH YOUR PROGRAMS. WHEN YOU SAVE YOUR BASIC PROGRAM TO DISK, USE0" SAVE "(34)"FLENAME"(34)"+CHR$(143) MAKE SURE THAT YOUR FILENAME IS 7 LETTERS OR LESS. IF ANYONE TRIES TO LOAD YOUR PROGRAM, THEY WILL GET AN '?NE ERROR'. IF YOU WANT TO LOAD YOUR"0"PROGRAM, USE:":" LOAD"(34)"FLENAME"(34)"+CHR$(143)0 44539:1" tip #8 ONE OF THE FEATURES WHICH THE COLOR COMPUTER LACKS IS A power on light. HOWEVER, WE COULD EASILY INSTALL A 'SOFTWARE' LIGHT BY USING THE2"LED ON DRIVE 0. A SHORT PROGRAM CONTAINED IN LINES 5000-6000 OF THIS TUTORIAL WILL LIGHT THE LED ON DRIVE 0 AS LONG AS THE COMPUTER IS ON. THIS WILL WORK FINE WITH ALL BASIC PROGRAMS; HOWEVER SOME ML PROGRAMS WILL DISABLE THIS";2" FEATURE"2 44539:3x"IF YOU WANT THIS FEATURE, MAKE SURE THE DISK DRIVE IS ON AS LONG YOU ARE PROGRAMMING. WHEN THE LED IS LIT , THAT INDICATES THAT THE COMPUTER IS3ȇ"ON! NOTE: TO USE THIS PROGRAM, SIMPLY LOAD THIS TUTORIAL AND TYPE: RUN 5000. 3͢ 44539:4҇" tip #9 MANY DISK USERS WANT THE DIRECTORY TO BE DISPLAYED IN TWO COLUMNS ON THE SCREEN. THIS ALLOWS MORE INFO TO BE LISTED ON THE SCREEN AT ONE TIME. A5܇"SHORT PROGRAM CONTAINED WITHIN THIS TUTORIAL WILL ALLOW THIS FEATURE. SIMPLY LOAD THIS TUTORIAL AND TYPE: RUN 7000. PRESS ANY KEY TO MOVE FROM ONE SCREEN TO THE NEXT! 5 44539:6p:: "THESE TWO PROGRAMS ARE ALSO INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR":: " insert disk # 2"::"PRESS FOR PART VI..."6 44539:A(135): A32 "DKTUTOR6" : A82 "DUTILI" : 2506:I&HE006 A$: A$"END" I,("&H"A$):II1: 50107- &HE00::"POWER LIGHT INSTALLED .........":7 BE,01,0D,30,08,AF,8D,00,1F,30,8D,00,04,BF,01,0D,39,B6,FF,03,2A,12,B6,FF,02,B6,09,86,27,04,81,20,26,05,8A,01,B7,FF,40,7E,00,00,3B,END7X0,1:1:6000:A$(71),E$(14):DR(235)8b:@228,"reading disk directory";::Y18lX3118IvDR,17,X,A$,B$:C$A$(B$,127):E$(X)C$8VN0 78A$(Y)(C$,N321,32):R$(A$(Y),1):R$(255)7090:R$(0)70708YY1:Y6870908N8X8KY1: IK1 68:A$(I)" ":8PT19ƞ9_Ѐ IPT PT28 2: (A$(I),8)" "(A$(I),9,3)" "(A$(I1),8)" "(A$(I1),9,3)9eڋ9r 44539:9PTPT30: PTK 7110 : :@224,"FREE GRANULES = "(DR): 42961::::8KY1: IK1 68:A$(I)" ":8PT19ER OF BLOCKS, ONE AFTER THE OTHER,EACH WITH ITS OWN 5 BYTE HEADER. DISK BASIC WILL KEEP LOADING THESE BLOCKS INTO INTO MEMORY AT "PROPER LOADING ADDRESS UNTIL THE LAST BLOCK. BUT HOW DOES DISK BASIC KNOW WHICH ONE IS THE LAST BLOCK???? + 44539: " ml program format WELL .. THE LAST BLOCK IS FOLLOWING BY 5 EXTRA BYTES, CALLED THE postamble bytes. THE FIRST OF THESE 5 BYTES IS 255. THE NEXT TWO BYTES "ARE $00 AND THE LAST TWO BYTES CONTAIN THE exec ADDRESS OF THE ML PROGRAM. ONCE THE DISK BASIC DETECTS A 255 AFTER A BLOCK, IT KNOWS THAT THE LAST BLOCK HAS BEEN READ AND THEREFORE IT EXITS LOADING. " 44539: ," ml program format FOR EXAMPLE: THE FORMAT FOR A ML PROGRAM, WHICH AS AN loading address OF $0E00, exec address OF $0E02 AND IS $012B BYTES LONG WILL BE:!L6" $00,$01,$2B,$0E,$00, ml program (OR ml block),$FF (255), $00, $00, $0E,$02 !Z@ 44539:!J"WE WILL NOW WRITE A PROGRAM THAT WILL ALLOW US TO RETRIEVE THE VARIOUS BYTES AND TO PRINT THE INFO IN THE VARIOUS BYTES. THE FOLLOWING BASIC PROGRAM "T"WILL ALLOW YOU TO DETERMINE THE SIZE OF ANY BASIC PROGRAM BY LOADING THE DATA PRESENT IN BYTES 2 & 3. LINES 10 & 20 'OPEN' THE BASIC PROGRAM SO WE CAN RETRIEVE INFO. LINE 30 RETRIEVES BYTES 2 & 3. LINE 40 DOES THE CALCU";#^"LATIONS."#h 44539:#r"10 INPUT"(34)"BASIC PROGRAM FILENAME (WITH EXTENSION):"(34)";F$ 20 OPEN"(34)"D"(34)",#1,F$,1:FIELD #1,1 AS A$ 30 GET #1,2:A=ASC(A$):GET #1,3: B=ASC(A$)$S|"40 PL=A*256+B 50 PRINT "(34)"PROGRAM SIZE = "(34)"PL 60 CLOSE #1 $a 44539:%: "A COPY OF THIS PROGRAM IS INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR TO GO ON TO THE NEXT PART."%W 44539:A(135): A82 "DUTILI" : A32 "DKTUTOR5" : 41044539:%: "A COPY OF THIS PROGRAM IS INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR TO GO ON TO&&x :@22432,(32,"*");: " PART V":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ....";: 44539&:@224, "DISK TIPS, HINTS AND SECRETS !!!": 42961::::&'" tip #1 USE THE FOLLOWING PROCEDURE FOR A single disk copy: (1) INSERT SOURCE DISKETTE (2) TYPE: COPY "(34)"FILENAME/EXT"(34)(#("(3) WHEN THE COMPUTER BEEPS, INSERT DESTINATION DISK AND PRESS . (1- 44539:)2" tip #2 USE THE FOLLOWING PROCEDURE TO printout THE DISK directory: (1) MAKE SURE PRINTER IS ON AND THE BAUD RATE IS SET.)X<"(2) TYPE: POKE 111,254:DIR AND PRESS )fA 44539:*)F" tip #3 SOMETIMES WHEN YOU 'LOADM:EXEC' A ML PROGRAM, THE disk drive KEEPS ON spinning. THIS CAN BE VERY IRRITATING AT TIMES. TO*P"PREVENT THIS, USE 'LOADM:POKE &HFF40,0:EXEC' INSTEAD OF 'LOADM:EXEC'. THE POKE SHUTS OFF THE DISK DRIVE MOTORS SO THAT THEY DON'T KEEP ON SPINNING DURING THE PROGRAM. *U 44539:+Z" tip #4 BEFORE YOU TURN OFF THE COMPUTER, TYPE: CLEAR 500:DSKI$0,0,1,A$,B$,fd" THE NEXT TIME YOU TURN ON YOUR COMPUTER AND USE THE DISK DRIVE, THE DISK DRIVE WILL not MAKE THAT 'GRINDING' NOISE. ,ti 44539:-1n" tip #5 SOMETIMES YOU WOULD LIKE TO USE THE dos commands SUCH AS SAVEM, KILL, COPY, LOADM, RUN, DIR, ETC. WITHIN YOUR PROGRAM.-x"HOWEVER THE run COMMAND cannot BE USED WITHIN A BASIC PROGRAM. IT SHOULD BE SUBSTITUTED WITH load. FOR EXAMPLE, 'RUN F$' SHOULD BE SUBSTITUTED WITH 'LOAD F$,R'. .} 44539:." tip #6 IN SOME CASES, YOU CAN HAVE PROBLEMS FORMATTING MORE THAN ONE DISKETTE AT A TIME. IN SUCH CASES, TYPE: POKE 113,0:EXEC/"40999 AFTER EACH DISK IS INITIALIZED. ARIABLE 'LR'. "&!| 44539:&"HERE IS A SHORT PROGRAM WHICH IS USED TO KEEP TRACK OF YOUR MAGAZINES. THE FIRST PROGRAM"' "IS USED TO PUT INFO IN THE 'DATABASE' AND THE NEXT PROGRAM IS USED TO RETRIEVE INFO FROM THE 'DATABASE'. "' 44539:'"10 ' put info into database 20 OPEN"(34)"D"(34)",#1,"(34)"MAGA/DAT"(34)",80 30 FIELD #1,50 AS N$,10 AS I$, 20 AS P$:LR=LOF(1) 40 LR=LR+1:PRINT "(34)"MAGAZINE #"(34)"LR"("50 INPUT"(34)"NAME "(34)";NN$:INPUT"(34)"ISSUE "(34)";II$:INPUT"(34)"PUBLISHER "(34)";PP$ 60 LSET N$=NN$:LSET I$=II$:LSET P$=PP$ 70 PUT #1,LR:INPUT"(34)"ANY MORE"(34)"; YN$)"80 IF YN$="(34)"Y"(34)"THEN 40 ELSE CLOSE #1:END")+¢ 44539:*̇"10 'retrieve info from database 20 OPEN"(34)"D"(34)",#1,"(34)"MAGA/DAT"(34)",80 30 FIELD #1,50 AS N$,10 AS I$, 20 AS P$ 40 FORI=1 TO LOF(1):GET #1,I: PRINT"(34)"MAGAZINE #"(34)"I*և"50 PRINT"(34)"NAME:"(34)";N$:PRINT"(34)"ISSUE: "(34)";I$:PRINT"(34)"PUBLISHER:"(34)";P$ 60 PRINT:FORD=1TO3000:NEXT NEXTI 70 CLOSE #1:END"+ 44539:: "COPIES OF THESE TWO PROGRAMS AREINCLUDED IN DISK UTILITIES I. ":: "PRESS TO RUN DISK UTILITIES I OR TO GO ON TO THE NEXT PART."+ 44539:A(135): A32 "DKTUTOR4" : A("R") "DUTILI" : 4909:: "COPIES OF THESE TWO PXr :@22432,(32,"*");:" PART IV": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE....";: 44539x(2 "BASIC AND ML PROGRAMS ARE STOREDON THE DISK IN A SPECIAL FORMAT.THIS PART OF THE TUTORIAL WILL DEAL WITH THE VARIOUS PROGRAM FORMATS."-F 44539: P" basic program format THE FIRST BYTE IN THE BASIC PROGRAM IS CALLED THE file flag. IN OTHER WORDS, IT TELLS THE COMPUTER THAT A PROGRAM STORED ISsZ"A BASIC PROGRAM. THE FIRST BYTE IS ALWAYS 255 (OR $FF); REPRESENTED BY A ORANGE BLOCK. d 44539:xn" basic program format THE SECOND AND THIRD BYTES CONTAIN THE file length OF THE BASIC PROGRAM. IN OTHER WORDS THEY TELL THE COMPUTER HOW LONG THE STORED BASIC PROGRAM IS. WHEN LOADING A";x" BASIC"F"PROGRAM FROM DISK, THE COMPUTER ALWAYS CHECKS THESE TWO BYTES TO MAKE SURE THAT THE BASIC PROGRAM WILL FIT IN THE MEMORY. IF THE PROGRAM IS TOO LARGE, IT ISSUES AN '?OM ERROR'.T 44539:" basic program format ALL THE REST OF THE BYTES ARE program data, IN OTHER WORDS, THE ACTUAL BASIC PROGRAM. THE_"LAST THREE BYTES IN THE BASIC PROGRAMS ARE ALWAYS $00. THEY INDICATE END OF PROGRAM. m 44539:T" ml program format ML PROGRAMS ON DISK HAVE AN UNIQUE FORMAT. THIS FORMAT ALLOWS ANY NUMBER OF DIFFERENT ML PROGRAMS TO BE LOADED INTO MEMORY IN A single LOADING. "ML PROGRAM ARE STORED TO DISK IN blocks. EACH BLOCK IS PRECEDED BY 5 BYTES WHICH TELLS VARIOUS INFO ABOUT THE BLOCK. Ȣ 44539:҇" ml program format THE FIRST BYTE (OF THE 5 BYTE HEADER) IS A $00 (TO INDICATE THAT THE PROGRAM STORED IS ML). THE SECOND AND THIRD BYTES CONTAIN THE file length OF THE܇"ML BLOCK. THE FOURTH AND FIFTH BYTES CONTAIN THE loading address OF THE ML BLOCK. IMMEDIATELY FOLLOWING THESE 5 BYTES IS THE block data (THE ML BLOCK).  44539:" ml program format YOU CAN HAVE ANY NUMBv:@22432,(32,"*");:" PART III": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";: 44539 0: 1:m"YOU MAY NOT KNOW IT, BUT THERE IS A database PROGRAM 'BUILT INTO' YOUR DISK OPERATING SYSTEM. THATS RIGHT! WITH PROPER PROGRAMMING, YOU CAN USE THIS 'DATABASE' FOR ANY TYPE OF APPLICATION. ";u:("THIS TUTORIAL WILL TEACH YOU HOW TO PROGRAM THIS 'DATABASE'. IT WILL ALSO DEFINE VARIOUS TERMS ASSOCIATED WITH A 'DATABASE' PROGRAM. ";,2 44539:<"step 1 IN USING THIS 'DATABASE' IS TO DEFINE THE fields OF YOUR DATABASE. FOR EXAMPLE IF YOU WANT TO USE THIS 'DATABASE' TO KEEP TRACK OF YOUR MAGAZINES, YOUR fields MIGHT BE: MAGAZINE NAME, ISSUE, PUBLISHER, ETC. "F"LIST THESE FIELDS VERTICALLY ON A CLEAN SHEET OF PAPER. THE LESS FIELDS YOU HAVE, THE MORE INFORMATION YOU CAN STORE ON ONE DISK."P 44539:|Z"step 2 IS TO LIST THE maximum NUMBER OF CHARACTERS FOR each FIELD. FOR EXAMPLE, FOR A magazine name YOU CAN USE 50 AS A MAX. LIMIT IF ALL THE MAGAZINES YOU HAVE HAVE NAMES ";xd"THAT HAVE LESS THAN 50 CHARACTERS. LIST THE MAXIMUM CHARACTER COUNT FOR EACH FIELD BESIDES EACH FIELD ON THE PAPER. THEN ADD UP ALL THE MAXIMUM CHARACTER COUNTS AND WRITE DOWN THE total maximum character count. n 44539:Wx"step 3 IS TO ASSIGN A VARIABLE TO EACH FIELD. FOR EXAMPLE, FIELD #1 CAN BE ASSIGNED THE VARIABLE A$, FIELD #2 AS B$. WRITE DOWN THE VARIABLE NAME BESIDES EACH FIELD ON THE PAPER. ":"note: THE VARIABLE NAME FOR EACH FIELD SHOULD BE DIFFERENT. " 44539:T"ONCE YOU HAVE THE ABOVE THINGS SETUP, YOU ARE READY TO 'PROGRAM' YOUR DATABASE. YOU WILL ACTUALLY HAVE TO WRITE A SHORT BASIC PROGRAM WHICH WILL";" ACT LIKE A DATABASE. NOW WE WILL DISCUSS THE COMMANDS TO BE USED IN YOUR BASIC PROGRAM TO MAKE IT ACT LIKE A DATABASE. " 44539:"step 1 IN WRITING THE BASIC PROGRAM IS TO CREATE A DATA FILE ON DISK. THIS IS THE STORAGE AREA ON DISK WHERE ALL THE INFO WHICH IS TO BE PUT";R" INTO THE DATABASE WILL BE STORED. TO CREATE A FILE, USE THE FOLLOWING COMMAND: OPEN"(34)"D"(34)",#1,"(34)"FILENAME"(34)",xx "ȇ"WHERE xx IS THE total maximum character count WHICH WE MADE NOTE OF EARLIER.";Ң 44539:]܇"step 2 IS TO TELL THE COMPUTER WHAT FIELDS WE ARE USING. WE DO THAT BY THE field STATEMENT. HERE IS AN EXAMPLE OF ITS USE FIELD #1,10 AS A$,5 AS B$"X" IN THIS CASE, 10 IS THE MAXIMUM CHARACTER COUNT FOR THE FIELD WHICH HAS VARIABLE A$ ASSIGNED TO IT AND 5 IS THE MAX. CHAR. COUNT FOR THE FIELD WHICH AS VARIABLE B$ ASSIGNED TO IT. YOU CAN INCLUDE AS MANY""'XX AS X$' STATEMENTS IN ONE FIELD STATEMENT." 44539: :"step 3 IS TO ENTER THE DATA IN THESE FIELDS. WE DO THAT BY THE lset STATEMENT. FOR EXAMPLE, TO ASSIGN DATA TO A FIELD WITH VARIABLE A$, WE USE:" A:!" LSET A$="(34)"DATA...."(34)" WE FOLLOW THE SAME PROCEDURE FOR ALL FIELDS. note: IF THE MAX. CHAR. COUNT FOR THAT FIELD IS EXCEEDED, THEN THE RIGHT EXCESS CHARACTERS ARE CUTOFF. "!%" 44539:!,"BEFORE WE GO FURTHER, WE SHOULD UNDERSTAND WHAT A record IS. A record IS A COLLECTION OF YOUR FIELDS. IN THE ABOVE CASE, A RECORD IS A COLLECTION OF THE FIELDS - MAGAZINE NAME, ISSUE,""6"PUBLISHER, ETC. THE INFO OF THE FIRST MAGAZINE NAME, ISSUE, PUBLISHER IS RECORD 1. THE INFO OF THE SECOND MAGAZINE, ISSUE, PUBLISHER IS RECORD 2 AND SO ON ... ""@ 44539:#aJ"step 4 IS TO PUT A RECORD ON THE DISK. WE DO THAT BY USING THE put COMMAND. THE STATEMENT 'PUT #1,1' WILL STORE ALL THE INFO WHICH IS PRESENT IN"$[T"ALL THE FIELDS INTO RECORD 1. 'PUT #1,2' WILL STORE ALL THE INFO PRESENT IN THE FIELDS INTO RECORD 2. AS DISCUSSED EARLIER, THE INFO TO BE PUT INTO EACH RECORD IS TO BE DEFINED BY THE lset STATEMENTS BEFORE WE STORE ANY INFO TO DISK. $i^ 44539:%+h"TO RETRIEVE INFO FROM OUT 'DATABASE', WE USE THE get COMMAND. FOR EXAMPLE, GET #1,1 WILL RETRIEVE THE INFO FROM RECORD 1 AND PUT IT INTO THE VARIABLES ASSIGNED TO EACH"&r"FIELD; GET #1,2 WILL RETRIEVE INFO FROM RECORD #2 AND SO ON. TO DETERMINE THE LAST RECORD # ON THE DATABASE, WE USE THE EXPRESSION: LR=LOF(1). THE LAST RECORD NUMBER WILL BE ASSIGNED TO V1&k :@22432,(32,"*");:" PART II":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";&w 44539&}('D2A$"IN PART I WE DISCUSSED HOW TO ACCESS THE DIFFERENT TRACKS & SECTORS ON THE DISK. IN PART II WE WILL LEARN HOW THE DISK KEEPS TRACK OF ALL THE FILES ON THE DISK ON TRACK 17. ": A$:(#<"AS WE LEARNT LAST TIME, EACH TRACK CONTAINS 18 SECTORS. THEREFORE DISK BASIC HAS 18 SECTORS ON TRACK 17 TO USE FOR THE 'HOUSEKEEPING INFORMATION'. HOWEVER, DISK BASIC ONLY USES SECTORS 2 - 11.": 44539(F:"BEFORE WE GO ANY FURTHER, WE SHOULD GET ACQUAINTED WITH ANOTHER TERM - THE granule. A granule IS 'HALF' OF A TRACK. THEREFORE, A granule IS 9 SECTORS OF A TRACK. FOR EXAMPLE ":){P"granule 1 IS TRK 0/SECTORS 1-9 granule 2 IS TRK 0/SECTORS 10-18granule 3 IS TRK 1/SECTORS 1-9 AND SO ON.....": 44539:*cZ"WHEN COUNTING GRANULES, WE SKIP TRACK 17 BECAUSE IT IS THE 'HOUSEKEEPING TRACK'. THEREFORE EACH DISK HAS 68 GRANULES (34 TRACKS * 2 GRANULES/TRACK). THE NUMBER OF FREE GRANLUES CAN BE OBTAINED BY '?FREE(0)'. "+6d"DISK BASIC USES THESE granules TO DETERMINE WHERE EACH PROGRAM IS STORED. FOR EXAMPLE, IF YOUR PROGRAM IS STORED ON TRACK 0 / SECTORS 1-6, WE SAY THAT IT IS STORED ON GRANULE 1. ": 44539::+n"NOW LET US GET BACK TO TRACK 17. SECTOR 1 OF TRACK 17 AS WELL AS SECTORS 12 - 18 ARE UNUSED. SECTORS 3 - 11 ARE USED FOR STORING FILENAMES. A NUMBER OF ITEMS HAVE TO BE WRITTEN FOR",x"EACH FILE, FOR EXAMPLE, ITS FILENAME, EXTENSION, TYPE OF PROGRAM, BINARY OR ASCII, WHAT GRANULE IT STARTS ON, ETC. THIS ALL TAKES UP 32 BYTES. SINCE EACH SECTOR HAS 256 BYTES , 8 FILENAMES CAN BE STORED ON ONE SECTOR OF";-}" TRACK 17."- 44539:-"IF YOU HAVE OUR OCT '85 ISSUE, YOU CAN USE THE COCODISKZAP PROGRAM TO LOOK AT TRACK 17/ SECTOR 3. YOU WILL NOTICE THAT FOR EACH ENTRY, THE LEFT 8 BYTESARE USED TO STORE FILENAME, THE NEXT 3 FOR ";."EXTENSION, ETC. THE REST OF INFO WILL LOOK LIKE GARBAGE' BECAUSE THEY ARE MOSTLYGRAPHIC CHARACTERS AND REVERSED LETTERS. TO UNDERSTAND WHAT THE OTHER BYTES ARE USED FOR, REFER TO TOP OF PAGE 59 IN 'COLOR COMPUTER DISK SYSTEM' MANUAL.. 44539:/"WE TALKED ABOUT SECTORS 3 - 11 BUT WHAT ABOUT SECTOR 2 OF TRACK 17? SECTOR 2 IS COMMONLY REFERRED TO AS THE 'GRANULE ALLOCATION TABLE'. NOW LET US DISCUSS THIS IN DETAIL. LET US SAY YOU HAVE A PROGRAM WHICH"0"OCCUPIES GRANULES 2, 3 AND 9.WE KNOW THAT THE FILENAME AND OTHER INFO IS WRITTEN ON ANY SECTOR BETWEEN 3 - 11 WHICH IS NOT FILLED. ACCORDING TO THE MANUAL, BYTE 13 OF THIS ENTRY WILL CONTAIN THE FIRST GRANULE 2 IN THIS CASE.0 44539:1ȇ"BUT HOW WILL THE COMPUTER KNOW THAT THE PROGRAM ALSO OCCUPIES GRANULES 3 AND 9. HERE IS WHERE SECTOR 2 IS USED. IT IS USED TO TELL THE COMPUTER ON WHICH GRANULES THE REST OF THE FILE IS BESIDES THE FIRST GRANULE."2҇"IN THE ABOVE CASE, THE PROGRAM WOULD GO TO BYTE 2 IN SECTOR 2 AND STORE A '3' IN THAT BYTE TO TELL THE COMPUTER THAT 3 IS THE NEXT GRANULE. THEN, IT GOES TO BYTE 3 AND STORES A '9' THERE.": 44539:3܇"HOWEVER, WHEN IT GOES TO BYTE 9 IT HAS TO INDICATE SOMEHOW THAT THIS IS THE last GRANULE. FIRST IT DETERMINES HOW MANY OF THE 9 SECTORS WITHIN THE LAST GRANULE THE PROGRAM IS STORED ON. THEN IT ADDS THIS VALUE TO 192 AND STORES IT IN BYTE 94( (8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)". THIS":"WAY DISK BASIC KNOWS EXACTLY WHERE THE PROGRAM IS ON THE DISK.": 44539:5"hint: SINCE TRACK 17 IS USED EVERYTIME YOU LOAD OR SAVE A PROGRAM, IT IS OFTEN THE TRACK WHICH CRASHES MOST OFTEN AND IT IT IS VERY HARD TO RECREATE IT. HOWEVER, SINCE SECTORS 12 TO 18 OF THIS TRACK ARE UNUSED,"5 "WE COULD EASILY USE THEM TO STORE A 'SPARE' DIRECTORY AND RESTORE IT WHEN THE DISK CRASHES."5 44539:6}: "THE copy directory PROGRAM FROM DISK UTILITIES I WILL STORE A 'SPARE' DIRECTORY ON THE UNUSED TRACK 17 SECTORS. THE restore PROGRAM WILL RECREATE YOUR DIRECTORY WHEN THE DISK CRASHES."70 "PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART III": 44539:A(135): A32 "DKTUTOR3" : A("R") "DUTILI" : :280estore PROGRAM WILL RECREATE YOUR DIRECTORY WHEN THE DISK CRASHES."70 "PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART III": 44539:A(135): A32 G&t :@22432,(32,"*");:" PART I": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";: 44539'[(:" structure of the disk A DISK IS DIVIDED INTO SECTIONS CALLED tracks WHICH ARE FURTHER SUBDIVIDED INTO sectors. A COLORCOMPUTER DISK CONTAINS 35 TRACKSAND EACH TRACK IS DIVIDED INTO(-2"18 SECTORS. ALL THE BASIC, ML PROGRAMS WHICH YOU SAVE TO DISK ARE STORED IN THESE SECTORS. PART 1 OF THE TUTORIAL WILL EXPLAIN THESE TRACKS/SECTORS IN DETAIL AND HOW TO ACCESS THEM FROM BASIC.(;< 44539:(AA)#F"EACH SECTOR IS CAPABLE OF HOLDING CERTAIN AMOUNT OF DATA. EACH SECTOR CAN HOLD 256 BYTES OF DATA. FOR THOSE OF YOU WHO ARE NOT FAMILIAR WITH BITS AND BYTES; A BYTE CAN HOLD A SINGLE CHARACTER (FOR EXAMPLE THE)P"LETTER OR <5>). IN OTHER WORDS EACH SECTOR CAN STORE 256CHARACTERS. SINCE 18 SECTORS MAKE UP A TRACK THE LATTER IS SAID TO BE CAPABLE OF HOLDING 4608 BYTES (18 * 256 = 4608).)Z 44539::*d"YOU CAN RETRIEVE DATA FROM THESESECTORS USING TWO POWERFUL DISK BASIC COMMANDS - dski$ AND dsko$. DSKI$ ALLOWS YOU TO RETRIEVE INFORMATION FROM A SECTOR WHILE DSKO$ ALLOWS YOU TOWRITE INFORMATION TO A SECTOR.+gn"WHEN USING ANY OF THESE COMMANDSYOU HAVE TO SPECIFY THE DISK DRIVE #/TRACK #/SECTOR # AND TWO VARIABLES (FOR EXAMPLE A$ AND B$).+ux 44539:,M"LET US SUPPOSE YOU WANTED TO RETRIEVE INFO FROM TRACK 3/ SECTOR 5 ON DISK DRIVE 0. THE FOLLOWING COMMAND WILL ACCOMPLISH THE TASK: DSKI$ 0,3,5,A$,B$-D" THE INFORMATION RETRIEVED IS PUT INTO VARIABLES A$ AND B$. THE FIRST 128 BYTES OF THE SECTOR ARE PUT IN A$ AND THE LAST 128 BYTES IN B$ (TOTAL 256 BYTES). 'PRINT A$;B$' WILL DISPLAY THE INFO-R 44539:."NOW LET US SUPPOSE YOU WANTED TOSTORE DATA TO A SECTOR, LETS SAYDRIVE 1,TRACK 17, SECTOR 15. YOUWOULD ASSIGN 'A$' AND 'B$', THE INFO TO BE STORED ON THE SECTOR.THEN ENTER THE FOLLOWING":." DSKO$ 1,17,15,A$,B$ THE NEXT TIME YOU TRIED TO RETRIEVED INFO FROM TRACK 17, SECTOR 15, IT WOULD BE THE SAME AS WHAT YOU STORED THERE EARLIER.. 44539:/"warning: do not try DSKO$ statements on a diskette with programs as you may destroy the program stored in those sectors. you/ȇ" should use a blank diskette to experiment.0Ң 44539:0܇"HERE IS A SHORT PROGRAM WHICH WILL DISPLAY THE DATA ON ALL THETRACKS/SECTORS ON THE DISK. TRY IT ON A DISK WHICH has PROGRAMS ON IT. 1"10 CLEAR 2000 20 FOR TR=0 TO34:FOR SC=1 TO 18 30 DSKI$ 0,TR,SC,A$,B$ 40 PRINT ";(34);"TRACK";(34)"TR"(34)" SECTOR"(34);"SC 50 PRINT A$;B$:PRINT 60 NEXT SC,TR1 44539:2w"WHEN YOU 'RUN' THE PROGRAM, YOU WILL SOMETIMES SEE 'ORANGE BLOCKS'. THIS INDICATES THAT NO DATA IS STORED ON THAT SECTOR. YOU WILL ALSO NOTICE THAT PORTIONS OF YOUR PROGRAMS WILL BE DISPLAYED OCCASIONALLY. THIS37"IS BECAUSE THAT SECTOR WAS USED TO STORE YOUR PROGRAM. note: IF YOU LOOK CLOSELY AT TRACK 17, SECTORS 3-11 YOU WILL SEE THE FILENAMES / EXTENSIONS OF ALL THE PROGRAMS ON THE DISK!3E 44539:4("THIS IS BECAUSE TRACK 17 IS THE 'HOUSEKEEPING TRACK'. IN OTHER WORDS, TRACK 17 IS USED TO KEEP TRACK OF THE FILENAMES OF THE PROGRAMS ON DISK AND WHICH SECTORS THEY ARE STORED ON. PART2 OF THIS TUTORIAL WILL DEAL4""SPECIFICALLY WITH TRACK 17 AND ITS FUNCTION AS A 'HOUSEKEEPING TRACK'. A GOOD UNDERSTANDING OF TRACK 17 WILL ENABLE YOU TO PERFORM MANY USEFUL TASKS SUCH AS RESTORING A 'killed' FILE, ETC.5, 44539:56:::: "THE track display PROGRAM IN OUR DISK UTILITIES I DISPLAYS THE DATA PRESENT IN ALL THE TRACKS/SECTORS ON THE DISK. PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART II"6 @ 44539:A(135): A("R") A32 330 : 3206FJ A32 "DKTUTOR2" : "DUTILI"K UTILITIES I DISPLAYS THE DATA PRESENT IN ALL THE TRACKS/SECTORS ON THE DISK. PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART II"6 @ 44539:A(135 !#%'(*,-DKTUTOR1BAS J1BACK BAS"JDKTUTOR2BAS42BACK BAS$4DKTUTOR3BAS3BACK BAS&DKTUTOR4BASACK BAS)[DKTUTOR5BAS5BACK BAS+KTUTOR6BASPBACK BAS.PKTUTOR8BASNBACK BAS0NKTUTOR9BASBACK BASKTUT10 BAS20BACK BASDUTILI BASTITLE BIN DUTILII BASKKTUTOR7BAS6BACK BAS BOOT BAS:3G&t :@22432,(32,"*");:" PART I": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";: 44539'[(:" structure of the disk A DISK IS DIVIDED INTO SECTIONS CALLED tracks WHICH ARE FURTHER SUBDIVIDED INTO sectors. A COLORCOMPUTER DISK CONTAINS 35 TRACKSAND EACH TRACK IS DIVIDED INTO(-2"18 SECTORS. ALL THE BASIC, ML PROGRAMS WHICH YOU SAVE TO DISK ARE STORED IN THESE SECTORS. PART 1 OF THE TUTORIAL WILL EXPLAIN THESE TRACKS/SECTORS IN DETAIL AND HOW TO ACCESS THEM FROM BASIC.(;< 44539:(AA)#F"EACH SECTOR IS CAPABLE OF HOLDING CERTAIN AMOUNT OF DATA. EACH SECTOR CAN HOLD 256 BYTES OF DATA. FOR THOSE OF YOU WHO ARE NOT FAMILIAR WITH BITS AND BYTES; A BYTE CAN HOLD A SINGLE CHARACTER (FOR EXAMPLE THE)P"LETTER OR <5>). IN OTHER WORDS EACH SECTOR CAN STORE 256CHARACTERS. SINCE 18 SECTORS MAKE UP A TRACK THE LATTER IS SAID TO BE CAPABLE OF HOLDING 4608 BYTES (18 * 256 = 4608).)Z 44539::*d"YOU CAN RETRIEVE DATA FROM THESESECTORS USING TWO POWERFUL DISK BASIC COMMANDS - dski$ AND dsko$. DSKI$ ALLOWS YOU TO RETRIEVE INFORMATION FROM A SECTOR WHILE DSKO$ ALLOWS YOU TOWRITE INFORMATION TO A SECTOR.+gn"WHEN USING ANY OF THESE COMMANDSYOU HAVE TO SPECIFY THE DISK DRIVE #/TRACK #/SECTOR # AND TWO VARIABLES (FOR EXAMPLE A$ AND B$).+ux 44539:,M"LET US SUPPOSE YOU WANTED TO RETRIEVE INFO FROM TRACK 3/ SECTOR 5 ON DISK DRIVE 0. THE FOLLOWING COMMAND WILL ACCOMPLISH THE TASK: DSKI$ 0,3,5,A$,B$-D" THE INFORMATION RETRIEVED IS PUT INTO VARIABLES A$ AND B$. THE FIRST 128 BYTES OF THE SECTOR ARE PUT IN A$ AND THE LAST 128 BYTES IN B$ (TOTAL 256 BYTES). 'PRINT A$;B$' WILL DISPLAY THE INFO-R 44539:."NOW LET US SUPPOSE YOU WANTED TOSTORE DATA TO A SECTOR, LETS SAYDRIVE 1,TRACK 17, SECTOR 15. YOUWOULD ASSIGN 'A$' AND 'B$', THE INFO TO BE STORED ON THE SECTOR.THEN ENTER THE FOLLOWING":." DSKO$ 1,17,15,A$,B$ THE NEXT TIME YOU TRIED TO RETRIEVED INFO FROM TRACK 17, SECTOR 15, IT WOULD BE THE SAME AS WHAT YOU STORED THERE EARLIER.. 44539:/"warning: do not try DSKO$ statements on a diskette with programs as you may destroy the program stored in those sectors. you/ȇ" should use a blank diskette to experiment.0Ң 44539:0܇"HERE IS A SHORT PROGRAM WHICH WILL DISPLAY THE DATA ON ALL THETRACKS/SECTORS ON THE DISK. TRY IT ON A DISK WHICH has PROGRAMS ON IT. 1"10 CLEAR 2000 20 FOR TR=0 TO34:FOR SC=1 TO 18 30 DSKI$ 0,TR,SC,A$,B$ 40 PRINT ";(34);"TRACK";(34)"TR"(34)" SECTOR"(34);"SC 50 PRINT A$;B$:PRINT 60 NEXT SC,TR1 44539:2w"WHEN YOU 'RUN' THE PROGRAM, YOU WILL SOMETIMES SEE 'ORANGE BLOCKS'. THIS INDICATES THAT NO DATA IS STORED ON THAT SECTOR. YOU WILL ALSO NOTICE THAT PORTIONS OF YOUR PROGRAMS WILL BE DISPLAYED OCCASIONALLY. THIS37"IS BECAUSE THAT SECTOR WAS USED TO STORE YOUR PROGRAM. note: IF YOU LOOK CLOSELY AT TRACK 17, SECTORS 3-11 YOU WILL SEE THE FILENAMES / EXTENSIONS OF ALL THE PROGRAMS ON THE DISK!3E 44539:4("THIS IS BECAUSE TRACK 17 IS THE 'HOUSEKEEPING TRACK'. IN OTHER WORDS, TRACK 17 IS USED TO KEEP TRACK OF THE FILENAMES OF THE PROGRAMS ON DISK AND WHICH SECTORS THEY ARE STORED ON. PART2 OF THIS TUTORIAL WILL DEAL4""SPECIFICALLY WITH TRACK 17 AND ITS FUNCTION AS A 'HOUSEKEEPING TRACK'. A GOOD UNDERSTANDING OF TRACK 17 WILL ENABLE YOU TO PERFORM MANY USEFUL TASKS SUCH AS RESTORING A 'killed' FILE, ETC.5, 44539:56:::: "THE track display PROGRAM IN OUR DISK UTILITIES I DISPLAYS THE DATA PRESENT IN ALL THE TRACKS/SECTORS ON THE DISK. PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART II"6 @ 44539:A(135): A("R") A32 330 : 3206FJ A32 "DKTUTOR2" : "DUTILI"K UTILITIES I DISPLAYS THE DATA PRESENT IN ALL THE TRACKS/SECTORS ON THE DISK. PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART II"6 @ 44539:A(1351&k :@22432,(32,"*");:" PART II":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";&w 44539&}('D2A$"IN PART I WE DISCUSSED HOW TO ACCESS THE DIFFERENT TRACKS & SECTORS ON THE DISK. IN PART II WE WILL LEARN HOW THE DISK KEEPS TRACK OF ALL THE FILES ON THE DISK ON TRACK 17. ": A$:(#<"AS WE LEARNT LAST TIME, EACH TRACK CONTAINS 18 SECTORS. THEREFORE DISK BASIC HAS 18 SECTORS ON TRACK 17 TO USE FOR THE 'HOUSEKEEPING INFORMATION'. HOWEVER, DISK BASIC ONLY USES SECTORS 2 - 11.": 44539(F:"BEFORE WE GO ANY FURTHER, WE SHOULD GET ACQUAINTED WITH ANOTHER TERM - THE granule. A granule IS 'HALF' OF A TRACK. THEREFORE, A granule IS 9 SECTORS OF A TRACK. FOR EXAMPLE ":){P"granule 1 IS TRK 0/SECTORS 1-9 granule 2 IS TRK 0/SECTORS 10-18granule 3 IS TRK 1/SECTORS 1-9 AND SO ON.....": 44539:*cZ"WHEN COUNTING GRANULES, WE SKIP TRACK 17 BECAUSE IT IS THE 'HOUSEKEEPING TRACK'. THEREFORE EACH DISK HAS 68 GRANULES (34 TRACKS * 2 GRANULES/TRACK). THE NUMBER OF FREE GRANLUES CAN BE OBTAINED BY '?FREE(0)'. "+6d"DISK BASIC USES THESE granules TO DETERMINE WHERE EACH PROGRAM IS STORED. FOR EXAMPLE, IF YOUR PROGRAM IS STORED ON TRACK 0 / SECTORS 1-6, WE SAY THAT IT IS STORED ON GRANULE 1. ": 44539::+n"NOW LET US GET BACK TO TRACK 17. SECTOR 1 OF TRACK 17 AS WELL AS SECTORS 12 - 18 ARE UNUSED. SECTORS 3 - 11 ARE USED FOR STORING FILENAMES. A NUMBER OF ITEMS HAVE TO BE WRITTEN FOR",x"EACH FILE, FOR EXAMPLE, ITS FILENAME, EXTENSION, TYPE OF PROGRAM, BINARY OR ASCII, WHAT GRANULE IT STARTS ON, ETC. THIS ALL TAKES UP 32 BYTES. SINCE EACH SECTOR HAS 256 BYTES , 8 FILENAMES CAN BE STORED ON ONE SECTOR OF";-}" TRACK 17."- 44539:-"IF YOU HAVE OUR OCT '85 ISSUE, YOU CAN USE THE COCODISKZAP PROGRAM TO LOOK AT TRACK 17/ SECTOR 3. YOU WILL NOTICE THAT FOR EACH ENTRY, THE LEFT 8 BYTESARE USED TO STORE FILENAME, THE NEXT 3 FOR ";."EXTENSION, ETC. THE REST OF INFO WILL LOOK LIKE GARBAGE' BECAUSE THEY ARE MOSTLYGRAPHIC CHARACTERS AND REVERSED LETTERS. TO UNDERSTAND WHAT THE OTHER BYTES ARE USED FOR, REFER TO TOP OF PAGE 59 IN 'COLOR COMPUTER DISK SYSTEM' MANUAL.. 44539:/"WE TALKED ABOUT SECTORS 3 - 11 BUT WHAT ABOUT SECTOR 2 OF TRACK 17? SECTOR 2 IS COMMONLY REFERRED TO AS THE 'GRANULE ALLOCATION TABLE'. NOW LET US DISCUSS THIS IN DETAIL. LET US SAY YOU HAVE A PROGRAM WHICH"0"OCCUPIES GRANULES 2, 3 AND 9.WE KNOW THAT THE FILENAME AND OTHER INFO IS WRITTEN ON ANY SECTOR BETWEEN 3 - 11 WHICH IS NOT FILLED. ACCORDING TO THE MANUAL, BYTE 13 OF THIS ENTRY WILL CONTAIN THE FIRST GRANULE 2 IN THIS CASE.0 44539:1ȇ"BUT HOW WILL THE COMPUTER KNOW THAT THE PROGRAM ALSO OCCUPIES GRANULES 3 AND 9. HERE IS WHERE SECTOR 2 IS USED. IT IS USED TO TELL THE COMPUTER ON WHICH GRANULES THE REST OF THE FILE IS BESIDES THE FIRST GRANULE."2҇"IN THE ABOVE CASE, THE PROGRAM WOULD GO TO BYTE 2 IN SECTOR 2 AND STORE A '3' IN THAT BYTE TO TELL THE COMPUTER THAT 3 IS THE NEXT GRANULE. THEN, IT GOES TO BYTE 3 AND STORES A '9' THERE.": 44539:3܇"HOWEVER, WHEN IT GOES TO BYTE 9 IT HAS TO INDICATE SOMEHOW THAT THIS IS THE last GRANULE. FIRST IT DETERMINES HOW MANY OF THE 9 SECTORS WITHIN THE LAST GRANULE THE PROGRAM IS STORED ON. THEN IT ADDS THIS VALUE TO 192 AND STORES IT IN BYTE 94( (8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)(8)". THIS":"WAY DISK BASIC KNOWS EXACTLY WHERE THE PROGRAM IS ON THE DISK.": 44539:5"hint: SINCE TRACK 17 IS USED EVERYTIME YOU LOAD OR SAVE A PROGRAM, IT IS OFTEN THE TRACK WHICH CRASHES MOST OFTEN AND IT IT IS VERY HARD TO RECREATE IT. HOWEVER, SINCE SECTORS 12 TO 18 OF THIS TRACK ARE UNUSED,"5 "WE COULD EASILY USE THEM TO STORE A 'SPARE' DIRECTORY AND RESTORE IT WHEN THE DISK CRASHES."5 44539:6}: "THE copy directory PROGRAM FROM DISK UTILITIES I WILL STORE A 'SPARE' DIRECTORY ON THE UNUSED TRACK 17 SECTORS. THE restore PROGRAM WILL RECREATE YOUR DIRECTORY WHEN THE DISK CRASHES."70 "PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART III": 44539:A(135): A32 "DKTUTOR3" : A("R") "DUTILI" : :280estore PROGRAM WILL RECREATE YOUR DIRECTORY WHEN THE DISK CRASHES."70 "PRESS 'R' TO RUN DISK UTILITIES I OR TO GO ON TO PART III": 44539:A(135): A32 v:@22432,(32,"*");:" PART III": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE .....";: 44539 0: 1:m"YOU MAY NOT KNOW IT, BUT THERE IS A database PROGRAM 'BUILT INTO' YOUR DISK OPERATING SYSTEM. THATS RIGHT! WITH PROPER PROGRAMMING, YOU CAN USE THIS 'DATABASE' FOR ANY TYPE OF APPLICATION. ";u:("THIS TUTORIAL WILL TEACH YOU HOW TO PROGRAM THIS 'DATABASE'. IT WILL ALSO DEFINE VARIOUS TERMS ASSOCIATED WITH A 'DATABASE' PROGRAM. ";,2 44539:<"step 1 IN USING THIS 'DATABASE' IS TO DEFINE THE fields OF YOUR DATABASE. FOR EXAMPLE IF YOU WANT TO USE THIS 'DATABASE' TO KEEP TRACK OF YOUR MAGAZINES, YOUR fields MIGHT BE: MAGAZINE NAME, ISSUE, PUBLISHER, ETC. "F"LIST THESE FIELDS VERTICALLY ON A CLEAN SHEET OF PAPER. THE LESS FIELDS YOU HAVE, THE MORE INFORMATION YOU CAN STORE ON ONE DISK."P 44539:|Z"step 2 IS TO LIST THE maximum NUMBER OF CHARACTERS FOR each FIELD. FOR EXAMPLE, FOR A magazine name YOU CAN USE 50 AS A MAX. LIMIT IF ALL THE MAGAZINES YOU HAVE HAVE NAMES ";xd"THAT HAVE LESS THAN 50 CHARACTERS. LIST THE MAXIMUM CHARACTER COUNT FOR EACH FIELD BESIDES EACH FIELD ON THE PAPER. THEN ADD UP ALL THE MAXIMUM CHARACTER COUNTS AND WRITE DOWN THE total maximum character count. n 44539:Wx"step 3 IS TO ASSIGN A VARIABLE TO EACH FIELD. FOR EXAMPLE, FIELD #1 CAN BE ASSIGNED THE VARIABLE A$, FIELD #2 AS B$. WRITE DOWN THE VARIABLE NAME BESIDES EACH FIELD ON THE PAPER. ":"note: THE VARIABLE NAME FOR EACH FIELD SHOULD BE DIFFERENT. " 44539:T"ONCE YOU HAVE THE ABOVE THINGS SETUP, YOU ARE READY TO 'PROGRAM' YOUR DATABASE. YOU WILL ACTUALLY HAVE TO WRITE A SHORT BASIC PROGRAM WHICH WILL";" ACT LIKE A DATABASE. NOW WE WILL DISCUSS THE COMMANDS TO BE USED IN YOUR BASIC PROGRAM TO MAKE IT ACT LIKE A DATABASE. " 44539:"step 1 IN WRITING THE BASIC PROGRAM IS TO CREATE A DATA FILE ON DISK. THIS IS THE STORAGE AREA ON DISK WHERE ALL THE INFO WHICH IS TO BE PUT";R" INTO THE DATABASE WILL BE STORED. TO CREATE A FILE, USE THE FOLLOWING COMMAND: OPEN"(34)"D"(34)",#1,"(34)"FILENAME"(34)",xx "ȇ"WHERE xx IS THE total maximum character count WHICH WE MADE NOTE OF EARLIER.";Ң 44539:]܇"step 2 IS TO TELL THE COMPUTER WHAT FIELDS WE ARE USING. WE DO THAT BY THE field STATEMENT. HERE IS AN EXAMPLE OF ITS USE FIELD #1,10 AS A$,5 AS B$"X" IN THIS CASE, 10 IS THE MAXIMUM CHARACTER COUNT FOR THE FIELD WHICH HAS VARIABLE A$ ASSIGNED TO IT AND 5 IS THE MAX. CHAR. COUNT FOR THE FIELD WHICH AS VARIABLE B$ ASSIGNED TO IT. YOU CAN INCLUDE AS MANY""'XX AS X$' STATEMENTS IN ONE FIELD STATEMENT." 44539: :"step 3 IS TO ENTER THE DATA IN THESE FIELDS. WE DO THAT BY THE lset STATEMENT. FOR EXAMPLE, TO ASSIGN DATA TO A FIELD WITH VARIABLE A$, WE USE:" A:!" LSET A$="(34)"DATA...."(34)" WE FOLLOW THE SAME PROCEDURE FOR ALL FIELDS. note: IF THE MAX. CHAR. COUNT FOR THAT FIELD IS EXCEEDED, THEN THE RIGHT EXCESS CHARACTERS ARE CUTOFF. "!%" 44539:!,"BEFORE WE GO FURTHER, WE SHOULD UNDERSTAND WHAT A record IS. A record IS A COLLECTION OF YOUR FIELDS. IN THE ABOVE CASE, A RECORD IS A COLLECTION OF THE FIELDS - MAGAZINE NAME, ISSUE,""6"PUBLISHER, ETC. THE INFO OF THE FIRST MAGAZINE NAME, ISSUE, PUBLISHER IS RECORD 1. THE INFO OF THE SECOND MAGAZINE, ISSUE, PUBLISHER IS RECORD 2 AND SO ON ... ""@ 44539:#aJ"step 4 IS TO PUT A RECORD ON THE DISK. WE DO THAT BY USING THE put COMMAND. THE STATEMENT 'PUT #1,1' WILL STORE ALL THE INFO WHICH IS PRESENT IN"$[T"ALL THE FIELDS INTO RECORD 1. 'PUT #1,2' WILL STORE ALL THE INFO PRESENT IN THE FIELDS INTO RECORD 2. AS DISCUSSED EARLIER, THE INFO TO BE PUT INTO EACH RECORD IS TO BE DEFINED BY THE lset STATEMENTS BEFORE WE STORE ANY INFO TO DISK. $i^ 44539:%+h"TO RETRIEVE INFO FROM OUT 'DATABASE', WE USE THE get COMMAND. FOR EXAMPLE, GET #1,1 WILL RETRIEVE THE INFO FROM RECORD 1 AND PUT IT INTO THE VARIABLES ASSIGNED TO EACH"&r"FIELD; GET #1,2 WILL RETRIEVE INFO FROM RECORD #2 AND SO ON. TO DETERMINE THE LAST RECORD # ON THE DATABASE, WE USE THE EXPRESSION: LR=LOF(1). THE LAST RECORD NUMBER WILL BE ASSIGNED TO VARIABLE 'LR'. "&!| 44539:&"HERE IS A SHORT PROGRAM WHICH IS USED TO KEEP TRACK OF YOUR MAGAZINES. THE FIRST PROGRAM"' "IS USED TO PUT INFO IN THE 'DATABASE' AND THE NEXT PROGRAM IS USED TO RETRIEVE INFO FROM THE 'DATABASE'. "' 44539:'"10 ' put info into database 20 OPEN"(34)"D"(34)",#1,"(34)"MAGA/DAT"(34)",80 30 FIELD #1,50 AS N$,10 AS I$, 20 AS P$:LR=LOF(1) 40 LR=LR+1:PRINT "(34)"MAGAZINE #"(34)"LR"("50 INPUT"(34)"NAME "(34)";NN$:INPUT"(34)"ISSUE "(34)";II$:INPUT"(34)"PUBLISHER "(34)";PP$ 60 LSET N$=NN$:LSET I$=II$:LSET P$=PP$ 70 PUT #1,LR:INPUT"(34)"ANY MORE"(34)"; YN$)"80 IF YN$="(34)"Y"(34)"THEN 40 ELSE CLOSE #1:END")+¢ 44539:*̇"10 'retrieve info from database 20 OPEN"(34)"D"(34)",#1,"(34)"MAGA/DAT"(34)",80 30 FIELD #1,50 AS N$,10 AS I$, 20 AS P$ 40 FORI=1 TO LOF(1):GET #1,I: PRINT"(34)"MAGAZINE #"(34)"I*և"50 PRINT"(34)"NAME:"(34)";N$:PRINT"(34)"ISSUE: "(34)";I$:PRINT"(34)"PUBLISHER:"(34)";P$ 60 PRINT:FORD=1TO3000:NEXT NEXTI 70 CLOSE #1:END"+ 44539:: "COPIES OF THESE TWO PROGRAMS AREINCLUDED IN DISK UTILITIES I. ":: "PRESS TO RUN DISK UTILITIES I OR TO GO ON TO THE NEXT PART."1TO3000:NEXT NEXTI 70 CLOSE #1:END"+ 44539:: "COPIES OF THESE TWO PXr :@22432,(32,"*");:" PART IV": (32,"*");:@51232,"PRESS ANY KEY TO CONTINUE....";: 44539x(2 "BASIC AND ML PROGRAMS ARE STOREDON THE DISK IN A SPECIAL FORMAT.THIS PART OF THE TUTORIAL WILL DEAL WITH THE VARIOUS PROGRAM FORMATS."-F 44539: P" basic program format THE FIRST BYTE IN THE BASIC PROGRAM IS CALLED THE file flag. IN OTHER WORDS, IT TELLS THE COMPUTER THAT A PROGRAM STORED ISsZ"A BASIC PROGRAM. THE FIRST BYTE IS ALWAYS 255 (OR $FF); REPRESENTED BY A ORANGE BLOCK. d 44539:xn" basic program format THE SECOND AND THIRD BYTES CONTAIN THE file length OF THE BASIC PROGRAM. IN OTHER WORDS THEY TELL THE COMPUTER HOW LONG THE STORED BASIC PROGRAM IS. WHEN LOADING A";x" BASIC"F"PROGRAM FROM DISK, THE COMPUTER ALWAYS CHECKS THESE TWO BYTES TO MAKE SURE THAT THE BASIC PROGRAM WILL FIT IN THE MEMORY. IF THE PROGRAM IS TOO LARGE, IT ISSUES AN '?OM ERROR'.T 44539:" basic program format ALL THE REST OF THE BYTES ARE program data, IN OTHER WORDS, THE ACTUAL BASIC PROGRAM. THE_"LAST THREE BYTES IN THE BASIC PROGRAMS ARE ALWAYS $00. THEY INDICATE END OF PROGRAM. m 44539:T" ml program format ML PROGRAMS ON DISK HAVE AN UNIQUE FORMAT. THIS FORMAT ALLOWS ANY NUMBER OF DIFFERENT ML PROGRAMS TO BE LOADED INTO MEMORY IN A single LOADING. "ML PROGRAM ARE STORED TO DISK IN blocks. EACH BLOCK IS PRECEDED BY 5 BYTES WHICH TELLS VARIOUS INFO ABOUT THE BLOCK. Ȣ 44539:҇" ml program format THE FIRST BYTE (OF THE 5 BYTE HEADER) IS A $00 (TO INDICATE THAT THE PROGRAM STORED IS ML). THE SECOND AND THIRD BYTES CONTAIN THE file length OF THE܇"ML BLOCK. THE FOURTH AND FIFTH BYTES CONTAIN THE loading address OF THE ML BLOCK. IMMEDIATELY FOLLOWING THESE 5 BYTES IS THE block data (THE ML BLOCK).  44539:" ml program format YOU CAN HAVE ANY NUMBER OF BLOCKS, ONE AFTER THE OTHER,EACH WITH ITS OWN 5 BYTE HEADER. DISK BASIC WILL KEEP LOADING THESE BLOCKS INTO INTO MEMORY AT "PROPER LOADING ADDRESS UNTIL THE LAST BLOCK. BUT HOW DOES DISK BASIC KNOW WHICH ONE IS THE LAST BLOCK???? + 44539: " ml program format WELL .. THE LAST BLOCK IS FOLLOWING BY 5 EXTRA BYTES, CALLED THE postamble bytes. THE FIRST OF THESE 5 BYTES IS 255. THE NEXT TWO BYTES "ARE $00 AND THE LAST TWO BYTES CONTAIN THE exec ADDRESS OF THE ML PROGRAM. ONCE THE DISK BASIC DETECTS A 255 AFTER A BLOCK, IT KNOWS THAT THE LAST BLOCK HAS BEEN READ AND THEREFORE IT EXITS LOADING. " 44539: ," ml program format FOR EXAMPLE: THE FORMAT FOR A ML PROGRAM, WHICH AS AN loading address OF $0E00, exec address OF $0E02 AND IS $012B BYTES LONG WILL BE:!L6" $00,$01,$2B,$0E,$00, ml program (OR ml block),$FF (255), $00, $00, $0E,$02 !Z@ 44539:!J"WE WILL NOW WRITE A PROGRAM THAT WILL ALLOW US TO RETRIEVE THE VARIOUS BYTES AND TO PRINT THE INFO IN THE VARIOUS BYTES. THE FOLLOWING BASIC PROGRAM "T"WILL ALLOW YOU TO DETERMINE THE SIZE OF ANY BASIC PROGRAM BY LOADING THE DATA PRESENT IN BYTES 2 & 3. LINES 10 & 20 'OPEN' THE BASIC PROGRAM SO WE CAN RETRIEVE INFO. LINE 30 RETRIEVES BYTES 2 & 3. LINE 40 DOES THE CALCU";#^"LATIONS."#h 44539:#r"10 INPUT"(34)"BASIC PROGRAM FILENAME (WITH EXTENSION):"(34)";F$ 20 OPEN"(34)"D"(34)",#1,F$,1:FIELD #1,1 AS A$ 30 GET #1,2:A=ASC(A$):GET #1,3: B=ASC(A$)$S|"40 PL=A*256+B 50 PRINT "(34)"PROGRAM SIZE = "(34)"PL 60 CLOSE #1 $a 44539:%: "A COPY OF THIS PROGRAM IS INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR TO GO ON TO THE NEXT PART."%W 44539:A(135): A82 "DUTILI" : A32 "DKTUTOR5" : 41044539:%: "A COPY OF THIS PROGRAM IS INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR TO GO ON TO&&x :@22432,(32,"*");: " PART V":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ....";: 44539&:@224, "DISK TIPS, HINTS AND SECRETS !!!": 42961::::&'" tip #1 USE THE FOLLOWING PROCEDURE FOR A single disk copy: (1) INSERT SOURCE DISKETTE (2) TYPE: COPY "(34)"FILENAME/EXT"(34)(#("(3) WHEN THE COMPUTER BEEPS, INSERT DESTINATION DISK AND PRESS . (1- 44539:)2" tip #2 USE THE FOLLOWING PROCEDURE TO printout THE DISK directory: (1) MAKE SURE PRINTER IS ON AND THE BAUD RATE IS SET.)X<"(2) TYPE: POKE 111,254:DIR AND PRESS )fA 44539:*)F" tip #3 SOMETIMES WHEN YOU 'LOADM:EXEC' A ML PROGRAM, THE disk drive KEEPS ON spinning. THIS CAN BE VERY IRRITATING AT TIMES. TO*P"PREVENT THIS, USE 'LOADM:POKE &HFF40,0:EXEC' INSTEAD OF 'LOADM:EXEC'. THE POKE SHUTS OFF THE DISK DRIVE MOTORS SO THAT THEY DON'T KEEP ON SPINNING DURING THE PROGRAM. *U 44539:+Z" tip #4 BEFORE YOU TURN OFF THE COMPUTER, TYPE: CLEAR 500:DSKI$0,0,1,A$,B$,fd" THE NEXT TIME YOU TURN ON YOUR COMPUTER AND USE THE DISK DRIVE, THE DISK DRIVE WILL not MAKE THAT 'GRINDING' NOISE. ,ti 44539:-1n" tip #5 SOMETIMES YOU WOULD LIKE TO USE THE dos commands SUCH AS SAVEM, KILL, COPY, LOADM, RUN, DIR, ETC. WITHIN YOUR PROGRAM.-x"HOWEVER THE run COMMAND cannot BE USED WITHIN A BASIC PROGRAM. IT SHOULD BE SUBSTITUTED WITH load. FOR EXAMPLE, 'RUN F$' SHOULD BE SUBSTITUTED WITH 'LOAD F$,R'. .} 44539:." tip #6 IN SOME CASES, YOU CAN HAVE PROBLEMS FORMATTING MORE THAN ONE DISKETTE AT A TIME. IN SUCH CASES, TYPE: POKE 113,0:EXEC/"40999 AFTER EACH DISK IS INITIALIZED. / 44539:/" tip #7 HERE IS AN EXCELLENT WAY TO KEEP PEOPLE FROM TAMPERING WITH YOUR PROGRAMS. WHEN YOU SAVE YOUR BASIC PROGRAM TO DISK, USE0" SAVE "(34)"FLENAME"(34)"+CHR$(143) MAKE SURE THAT YOUR FILENAME IS 7 LETTERS OR LESS. IF ANYONE TRIES TO LOAD YOUR PROGRAM, THEY WILL GET AN '?NE ERROR'. IF YOU WANT TO LOAD YOUR"0"PROGRAM, USE:":" LOAD"(34)"FLENAME"(34)"+CHR$(143)0 44539:1" tip #8 ONE OF THE FEATURES WHICH THE COLOR COMPUTER LACKS IS A power on light. HOWEVER, WE COULD EASILY INSTALL A 'SOFTWARE' LIGHT BY USING THE2"LED ON DRIVE 0. A SHORT PROGRAM CONTAINED IN LINES 5000-6000 OF THIS TUTORIAL WILL LIGHT THE LED ON DRIVE 0 AS LONG AS THE COMPUTER IS ON. THIS WILL WORK FINE WITH ALL BASIC PROGRAMS; HOWEVER SOME ML PROGRAMS WILL DISABLE THIS";2" FEATURE"2 44539:3x"IF YOU WANT THIS FEATURE, MAKE SURE THE DISK DRIVE IS ON AS LONG YOU ARE PROGRAMMING. WHEN THE LED IS LIT , THAT INDICATES THAT THE COMPUTER IS3ȇ"ON! NOTE: TO USE THIS PROGRAM, SIMPLY LOAD THIS TUTORIAL AND TYPE: RUN 5000. 3͢ 44539:4҇" tip #9 MANY DISK USERS WANT THE DIRECTORY TO BE DISPLAYED IN TWO COLUMNS ON THE SCREEN. THIS ALLOWS MORE INFO TO BE LISTED ON THE SCREEN AT ONE TIME. A5܇"SHORT PROGRAM CONTAINED WITHIN THIS TUTORIAL WILL ALLOW THIS FEATURE. SIMPLY LOAD THIS TUTORIAL AND TYPE: RUN 7000. PRESS ANY KEY TO MOVE FROM ONE SCREEN TO THE NEXT! 5 44539:6p:: "THESE TWO PROGRAMS ARE ALSO INCLUDED IN OUR DISK UTILITIES I. PRESS TO RUN DISK UTILITIES I OR":: " insert disk # 2"::"PRESS FOR PART VI..."6 44539:A(135): A32 "DKTUTOR6" : A82 "DUTILI" : 2506:I&HE006 A$: A$"END" I,("&H"A$):II1: 50107- &HE00::"POWER LIGHT INSTALLED .........":7 BE,01,0D,30,08,AF,8D,00,1F,30,8D,00,04,BF,01,0D,39,B6,FF,03,2A,12,B6,FF,02,B6,09,86,27,04,81,20,26,05,8A,01,B7,FF,40,7E,00,00,3B,END7X0,1:1:6000:A$(71),E$(14):DR(235)8b:@228,"reading disk directory";::Y18lX3118IvDR,17,X,A$,B$:C$A$(B$,127):E$(X)C$8VN0 78A$(Y)(C$,N321,32):R$(A$(Y),1):R$(255)7090:R$(0)70708YY1:Y6870908N8X8KY1: IK1 68:A$(I)" ":8PT19ƞ9_Ѐ IPT PT28 2: (A$(I),8)" "(A$(I),9,3)" "(A$(I1),8)" "(A$(I1),9,3)9eڋ9r 44539:9PTPT30: PTK 7110 : :@224,"FREE GRANULES = "(DR): 42961::::8KY1: IK1 68:A$(I)" ":8PT19Mp :@22432,(32,"*");:" PART VI":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ....";: 44539| 44539((2"WELCOME TO PART 6 OF OUR DISK TUTORIAL SERIES. IN THIS PART, WE WILL DISCUSS SOME OF THE MODIFICATIONS THAT CAN BE MADE TO DISK BASIC TO ENHANCE THE "<"DISK OPERATING SYSTEM. PLEASE NOTE THAT YOU NEED A 64K COLOR COMPUTER WITH RADIO SHACK FOR THESE MODIFICATIONS. THE APPROPRIATE CHANGES FOR DISK BASIC 1.0 AND 1.1 HAVE BEEN INCLUDED. F 44539:P"IN ORDER TO MADE MODIFICATIONS TO BASIC, WE HAVE TO PUT THE COMPUTER IN THE 64K all ram mode. A SHORT PROGRAM CONTAINED WITHIN THIS TUTORIAL WILL SET THIS MODE. TO SET THIS MODE,Z "TYPE: RUN 5000 AFTER LOADING THIS TUTORIAL. AFTER THE BASIC IS IN RAM, WE CAN MAKE THE APPROPRIATE MODIFICATIONS. do not RUN 5000 for coco 3 as the basic is already in RAM!!d 44539:gn"DID YOU KNOW THAT YOU COULD OPERATE YOUR DISK DRIVE 2, 3 OR EVEN 5 TIMES FASTER?? WELL, BY changing THE head-step rate, YOU COULD OPERATE YOUR DISKx"DRIVE AT 20,12 OR EVEN 6 MILLISECONDS INSTEAD OF THE USUAL 30. NOTE: RADIO SHACK DISK DRIVES MIGHT NOT OPERATE AT 6 OR 12 MILLISECOND SPEEDS. " 44539:" for disk basic 1.0 POKE &HD6CD,0 AND PRESS THEN USE THE FOLLOWING POKES FOR DIFFERENT SPEEDS:" POKE &HD723,23 - 30 MILLISEC POKE &HD723,22 - 20 MILLISEC POKE &HD723,21 - 12 MILLISEC POKE &HD723,20 - 6 MILLISEC  44539:I" for disk basic 1.1 POKE &HD7C0,0 AND PRESS THEN USE THE FOLLOWING POKES FOR DIFFERENT SPEEDS:" POKE &HD816,23 - 30 MILLISEC POKE &HD816,22 - 20 MILLISEC POKE &HD816,21 - 12 MILLISEC POKE &HD816,20 - 6 MILLISEC  44539:ȇ"ANOTHER FEATURE WHICH RADIO SHACK DISK BASIC LACKS IS THE OPTION TO USE double sided disk drives. HOWEVER, WE CAN EASILY MODIFY BASIC AND ADD THIS FEATURE. AFTER THE MOD,H҇"DRIVE 1 BECOMES THE OTHER SIDE OF DRIVE 0, DRIVE 1 BECOMES DRIVE 2 AND DRIVE 3 BECOMES THE OTHER SIDE OF DRIVE 1! Vܢ 44539:" for disk basic 1.0 POKE 243,&HCC:POKE 244,&H41: POKE 245,&H42:POKE 246,&HFD: POKE 247,&HD7:POKE 248,&HAC: POKE 249,57:EXEC 243" for disk basic 1.1 POKE 243,&HCC:POKE 244,&H41: POKE 245,&H42:POKE 246,&HFD: POKE 247,&HD8:POKE 248,&H9F: POKE 249,57:EXEC 243 44539:|"THIS MODIFICATIONS IS FOR THOSE WITH 36, 40 OR 80 TRACK DRIVES. DISK BASIC 1.1 USERS: POKE &HD29D,x & DISK #"BASIC 1.0 USERS:POKE &HD1B0,x; WHERE x IS THE # OF TRACKS YOUR DISK DRIVE HAS. THIS WILL ALLOW YOU TO backup ALL THE TRACKS IN YOUR DISK. 1 44539: ""IF YOU ACCIDENTALLY HIT RESET, THE COMPUTER WILL RESTORE BACK TO THE NORMAL RAM/ROM MODE AND THE MODIFICATIONS WILL BE DISABLED. TO RETURN BACK TO THE!&,"64K all ram mode, TYPE: POKE &HFFDF,1 AND PRESS ." 6 44539:: "BY MODIFYING THE APPROPRIATE MEMORY LOCATIONS, YOU CAN ALSO USE 40/80 TRACK DRIVES. THE 40/80 track drive PROGRAM, INCLUDED IN DISK UTILITIES II WILL ALLOW THE USE OF 40/80 TRACK DRIVES!""@ 44539:"}J: "PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THENEXT PART""T 44539:A(135): A32 "DKTUTOR7" : A82 "DUTILII" : 340#L:I3584 358424: A: I,A:: 3584: 26,80,142,128,0,166,132,183,255,223,167,128,140,224,0,39,5,183,255,222,32,239,28,175,57IES II OR TO GO ON TO THENEXT PART""T 44539:A(135): A32 "DKTUTOR7" : A82 "DUTILII" : 340#L:I3584 358424: A: I,A:: 3584: 26,80,142,K&& " INFORMATION SECURITY FOR'" DISK USERS",,," PART VIII"' 44539:'"THIS PART OF DISK TUTORIAL DEALS WITH DIFFERENT METHODS OF PROTECTING PROGRAMS. WHILE THE METHODS LISTED ARE NOT(("FOUL-PROOF, THEY DO PROVIDE INFORMATION SECURITY TO A CERTAIN EXTENT. (- 44539:(2"method #1: THIS METHOD INVOLVES PLACING A NOTCH ON THE DISK TAB. THIS METHOD WILL PREVENT ACCIDENTAL INITIALIZATION OR)<"ERASURE OF THE PROGRAMS ON THE DISK. MOREOVER, IT HAS BEEN FOUND THAT THERE IS A FEW INCIDENCE OF DISK CRASHES WITH THIS METHOD, SINCE THE COMPUTER CANNOT WRITE ANY NEW INFO TO THE DISK TO CAUSE A CRASH. )A 44539:*0F"method #2: THE SECOND METHOD TO PROTECT YOUR BASIC/ML & DATA FILES FROM TAMPERING IS TO ADD A 'INVISIBLE' CODE WHICH ONLY YOU KNOW ABOUT. IN THE COCO,*P"CHARACTER 143 REPRESENTS A SPACE AND SO DOES 32. SO, BY ADDING THE CODE 143 TO THE END OF A FILENAME, YOU CAN SECURE YOUR FILES. *U 44539:+Z"FOR EXAMPLE, TO SAVE A BASIC PROGRAM, USE: SAVE"(34)"FILENAM"(34)"+CHR$(143). THEN, TRY DIR. THE LAST CHARACTER APPEARS AS A SPACE. THEN TRY: LOAD"(34)"FILENAM"(34),sd"IT DOESN'T LOAD! THEN TRY: LOAD"(34)"FILENAM"(34)"+CHR$(143). THERE! YOUR PROGRAM IS LOADED. THIS METHOD IS A SIMPLE METHOD OF INFORMATION SECURITY. ,i 44539:-$n"method #3: THE THIRD METHOD INVOLVES SCRAMBLING YOUR PROGRAM WITH YOUR OWN PASSWORD. IN THIS WAY, IF A USER LOADS YOUR PROGRAM, ALL HE SEES IS. x"GARBAGE; BUT YOU CAN EASILY UNSCRAMBLE THE PROGRAM. OUR diskcrpt PROGRAM, WHICH APPEARED IN OCT '85 ISSUE OF COCO-TIME PROVIDES SUCH A PROTECTION SCHEME FOR BASIC PROGRAMS ON DISK. .} 44539:."method #4: ANOTHER METHOD INVOLVES HIDING THE DISK DIRECTORY. USE THE FOLLOWING PROCEDURE: BEFORE YOU TURN OFF THE COMPUTER, ENTER THE/"FOLLOWING COMMANDS: CLEAR 2000:DSKI$0,17,3,A$,B$: DSKO$0,17,18,A$,B$:A$=STRING$ (128,255):B$=A$:DSKO$ 0,17,3, A$,B$:DIR THIS METHOD HIDES THE DISK DIRECTORY;THE USER"/"THINKS THAT THE DISK IS EMPTY!"/ 44539:0"THE NEXT TIME YOU TURN THE COMPUTER ON, ENTER THE FOLLOWING COMMANDS: CLEAR 2000:DSKI$0,17,18,A$,B$: DSKO$0,17,3,A$,B$:DIR0" AND PRESTO! YOUR DIRECTORY IS BACK! 0 44539:1"method #5: THIS METHOD INVOLVES ADDING A AUTOSTART TO YOUR PROGRAMS AND DISABLING THE RESET BUTTON, BREAK KEY, ETC. AND DISABLING COMMANDS SUCH AS2b"LIST, LLIST, ETC. OUR PROGRAM - disk anti-pirate - PROVIDES SUCH SOPHISTICATED PROTECTION SCHEMES TO PROVIDE COMPLETE PROTECTION FOR YOUR DISK PROGRAMS. 2p 44539:2"method #6: THIS LAST METHOD DEALS WITH SAFE-LOCKS - DISK CASES WHICH HAVE A LOCK SYSTEM. BY USING THESE 'SAFE-LOCKS',3Zȇ"YOU CAN PREVENT OTHER USERS FROM TAMPERING WITH YOUR DISK SOFTWARE. 4͢ 44539:: "THE DIRECTORY HIDER PROGRAM IS CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART."4JҢ 44539:A(135): A32 "DKTUTOR9" : A82 "DUTILII" : 210 4͢ 44539:: "THE DIRECTORY HIDER PROGRAM IS CONTAINED IN DISK UTILITIES II. PRESS TO RUN DISK UTILITIES II OR TO GO ON TO THE NEXT PART&p :@22432,(32,"*");:" PART X":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ....";: 44539&: "THIS PART OF THE TUTORIAL WILL DEAL IN DEPTH WITH VARIOUS DISK ERRORS AND THEIR CAUSES. ": 44539:': " errors":: " (1) BR ERROR":" (2) DN ERROR":" (3) OB ERROR":" (4) FM ERROR":" (5) FN ERROR":" (6) FS ERROR":" (7) AE ERROR"(%(" (8) NE ERROR":" (9) WP ERROR":" (10) AO ERROR":" (11) IO ERROR":" (12) IE ERROR"(E2" option ==>";: OP$(. THEN USE THE COPY COMMAND. THIS WILL PREVENT THE ?OB ERROR.", 44539::30,: "fm error: BAD FILE MODE. THIS ERROR OCCURS WHEN YOU TRY TO READ INFORMATION FROM A OUTPUT FILE OR WRITE INFORMATION TO A INPUT FILE. IT ALSO OCCURS WHEN YOU TRY TO loadm A BASIC PROGRAM. ": 44539:,30-: "fn error: BAD FILE NAME.CAUSES: (1) FILENAME LONGER THAN 8 CHARACTERS. (2) FILENAME HAS UNACCEPTABLE CONTROL CODE(S). (3) EXTENSTION TOO LONG.".4 "(4) INAPPROPRIATE DRIVE NUMBER. ": 44539:30/-: "fs error: FILE STRUCTURE ERROR. OCCURS WHEN GAT (TRACK 17,SECTOR2) IS REPLACED BY GARBAGE. ALSO OCCURS WHEN THE DIRECTORY INFO OF A PARTICULAR PROGRAM IS DESTROYED. IF YOU HAVE A SPARE COPY OF THE DIRECTORY, YOU CAN/ "RECREATE THE DIRECTORY/GAT AND THEREFORE RESTORE YOUR PROGRAM(S)!": 44539:/Ȏ300jҞ: "ae error: FILE ALREADY EXISTS. OCCURS WHEN YOU TRY TO COPY OR RENAME A FILE TO A FILENAME AND A FILE WITH THAT FILENAME ALREADY EXISTS ON THAT DISK.": 44539:0r܎301M: "ne error: FILE DOESN'T EXIST. OCCURS WHEN THE SPECIFIED FILE DOESN'T EXIST ON THE DISK. OTHERCAUSES ARE IMPROPER EXTENSION AND 'HIDDEN' CONTROL CODES IN THE FILENAMES IN THE DIRECTORY."1[ 44539:1c302U: "wp error: WRITE PROTECT ERROR. OCCURS WHEN YOU TRY TO WRITE INFO TO A DISK WHICH HAS A WRITE-PROTECT TAB. SOME PROGRAMS LIKEEDTASM+ (TM) WILL GIVE AN ?WP ERROR WHEN READING FILES FROM A WRITE-PROTECT DISK. ";2c 44539:2k303E": "io error: INPUT OUTPUT ERROR. CAUSES: (1) BAD DISK (2) CRASHED DIRECTORY (3) UNFORMATTED DISK "4, "(4) DISK INSERTED ON WRONG SIDE (5) DISK NOT IN DISK DRIVE (6) DISK DRIVE NOT TURNED ON (7) DISK DRIVE CABLE NOT CONNECTED (8) PROBLEM WITH DISK DRIVE"4/6 44539::305@: "ie error: INPUT PAST THE END OF FILE ERROR. OCCURS WHEN YOU TRY TO RETRIEVE INFO PAST THE END OFFILE. ML PROGRAMS WHICH ARE SAVED IMPROPERLY WILL GENERATE THIS ERROR WHEN THEY ARE LOADED.": 445395J305T: "ao error: FILE ALREADY OPEN. OCCURS WHEN YOU TRY TO OPEN/LOADA FILE THAT IS ALREADY OPENED. FIRST, TYPE: UNLOAD AND PRESS . THEN LOAD THE FILE. "5^ 44539:30E THIS ERROR WHEN THEY A :@8,"*DISK UTILITIES I*"::::" (1) TRACK DISPLAY":" (2) COPY DIRECTORY":" (3) RESTORE DIRECTORY":" (4) MAGAZINE STORAGE":" (5) MAGAZINE RETRIEVAL":" (6) BASIC PROGRAM LENGTH"1" (7) POWER ON LIGHT":" (8) TWO COLUMN DIRECTORY"::" ";OP$j (OP$) 1000,2000,3000,4000,5000,6000,7000,8000p( 2000::TR0 34: SC1 180,TR,SC,A$,B$:@22496,"TRACK ["TR" ] SECTOR ["SC" ]"::A$;B$: SC,TRdО: 2000:0,17,11,A$,B$: A$(128,255) B$(128,255) 2010 : @224,"DIRECTORY CANNOT BE COPIED...": 42961::::0,17,2,A$,B$:0,17,1,A$,B$:I3 10:0,17,I,A$,B$:0,17,I8,A$,B$:I: :0,17,1,A$,B$: A$(128,255) B$(128,255) @224,"DIRECTORY CANNOT BE RESTORED..": 42961::::k 0,17,1,A$,B$:0,17,2,A$,B$:I3 10:0,17,I8,A$,B$:0,17,I,A$,B$:::"D",#1,"MAGA/DAT",80 #1,50 N$,10 I$,20 P$:LR(1)LRLR1:"MAGAZINE #"LR҉"NAME ";NN$:"ISSUE ";II$:"PUBLISHER ";PP$:" N$NN$: I$II$: P$PP$> #1,LR:"ANY MORE";YN$] YN$"Y" 4040 : #1:y:"D",#1,"MAGA/DAT",80 #1,50 N$,10 I$,20 P$ I1 (1): #1,I: "MAGAZINE #"I"NAME:";N$:"ISSUE:"I$:"PUBLISHER:"P$:D1 3000::I #1:Gp"BASIC PROGRAM FILENAME (WITH EXTENSION):";F$ez"D",#1,F$,1: #1,1 A$ #1,2:A(A$): #1,3:B(A$)PLA256B "PROGRAM SIZE = "PL #1: 42961:::::X:I&H1D1b A$: A$"END" I,("&H"A$):II1: 7010Al &H1D1::"POWER LIGHT INSTALLED ........."Oq: 40999v BE,01,0D,30,08,AF,8D,00,1F,30,8D,00,04,BF,01,0D,39,B6,FF,03,2A,12,B6,FF,02,B6,09,86,27,04,81,20,26,05,8A,01,B7,FF,40,7E,00,00,3B,END@0,1:1:6000:A$(71),E$(14):DR(235)2J:@228,"reading disk directory";::Y1>TX311k^DR,17,X,A$,B$:C$A$(B$,127):E$(X)C$xhN0 7rA$(Y)(C$,N321,32):R$(A$(Y),1):R$(255)8090:R$(0)8070|YY1:Y688090NXKY1: IK1 68:A$(I)" ":PT1% IPT PT28 2: (A$(I),8)" "(A$(I),9,3)" "(A$(I1),8)" "(A$(I1),9,3)‹̢ 44539:PTPT30: PTK 8110 : :@224,"FREE GRANULES = "(DR): 42961::::KY1: IK1 68:A8& :@7,"* DISK UTILITIES II*":::" (1) DRIVE STEP RATES":" (2) DOUBLE SIDED DRIVE":" (3) 40 TRACK DRIVES":" (4) DIRECTORY HIDER":" (5) DIRECTORY RETRIEVER"'Y" (6) COMPARE DISKS":" (7) SEARCH DISK":" (8) GRANULE DISPLAY":" (9) FILE SEARCH":" (10) PMODE 3/4 FILES"::" ";OP$' (OP$) 1000,2000,3000,4000,5000,6000,7000,8000,9000,10000( 聦 11000::::" (1) 30 MS STEP RATE":" (2) 20 MS STEP RATE":" (3) 12 MS STEP RATE":" (4) 6 MS STEP RATE"(TL:" ";OP$: (OP$) 1200,1300,1400,1500(_~1000( (&HC155)49 &HD7C0,0: &HD816,23 : &HD6CD,0: &HD723,23(( (&HC155)49 &HD7C0,0: &HD816,22 : &HD6CD,0: &HD723,22(F)@x (&HC155)49 &HD7C0,0: &HD816,21 : &HD6CD,0: &HD723,21)F)܅ (&HC155)49 &HD7C0,0: &HD816,20 : &HD6CD,0: &HD723,20)*Ё 11000: (&HC155)49 243,&HCC: 244,&H41: 245,&H42: 246,&HFD: 247,&HD8: 248,&H9F: 249,57: 243:*\ڒ 243,&HCC: 244,&H41: 245,&H42: 246,&HFD: 247,&HD7: 248,&HAC: 249,57: 243:*i 11000*  (&HC155)49 3300+ 50997,78: 51034,84: 51131,78: 51183,78: 51152,78: 52518,78: 52917,78: 53917,40: 54349,78: 54580,39: 54879,40: 54914,40:+ 50952,78: 50986,84: 51083,78: 51104,78: 51135,78: 52300,78: 52697,78: 53680,40: 54111,78: 54342,39: 54642,40: 54677,40:+ 2000:0,17,3,A$,B$:0,17,18,A$,B$:A$(128,255):B$A$:0,17,3,A$,B$:, 2000:0,17,18,A$,B$:0,17,3,A$,B$:,p 2000,z:@224,"PUT THE DISKETTES TO BE COMPARED";:"IN DRIVE 0 AND DRIVE 1":"AND PRESS ": 44539,:@22464,"THESE SECTORS ARE NOT THE SAME",I0 34: J1 18,0,I,J,A$,B$:1,I,J,C$,D$- A$C$ B$D$ "TRACK"I" SECTOR "J-1 J,I: 42961::::-LX 2000: SEARCH STRING-b"STRING:";S$::"THESE SECTORS HAVE THIS STRING"::-lI0 34: J1 18-v0,I,J,A$,B$:C$A$(B$,127): (C$,S$)0 "TRACK"I" SECTOR"J: 7050.*C$(A$,127)B$: (C$,S$)0 "TRACK"I" SECTOR"J.N J,I: 42961: 42961: 42961:.@ 1: 6000: A$(68),E$(68)::@224,"";: "FILENAME/EXT:";F$:G$(F$,(F$,"/")1):G$G$(8(G$)," ")::G$G$"/"(F$,(F$,"/")1,3):F$G$.J 10080.TI1/'^r :@22432,(32,"*");:" PART VII":(32,"*");:@51232,"PRESS ANY KEY TO CONTINUE ...";: 44539x(82"WELCOME TO PART 7 OF OUR DISK TUTORIAL SERIES. IN THIS PART, WE WILL DISCUSS THE VARIOUS DISK ROM ROUTINES AND THE DIFFERENT FUNCTIONS THEY PERFORM. THIS PART OF THE<"TUTORIAL REQUIRES SOME KNOWLEDGE OF ASSEMBLY LANGUAGE. THE APPROPRIATE CHANGES FOR DISK BASIC 1.0 & DISK BASIC 1.1 HAVE BEEN LISTED FOR EACH ROM SUBROUTINE.  F 44539:P"DISK BASIC 1.0 DISK BASIC 1.1 $C468 $C48D OPENS A SEQUENTIAL FILE FOR READING. THE FILENAME OF THE FILE TO BE READ MUST BE IN LOCATIONS $94C TO $956 BEFORExZ"THIS ROUTINE IS CALLED. THIS ROUTINE IS USED MAINLY FOR LOAD AND LOADM OPERATIONS BY DISK BASIC. d 44539:n"DISK BASIC 1.0 DISK BASIC 1.1 $C4A8 $C4CD OPENS A SEQUENTIAL FILE FOR WRITING. THE FILENAME OF THE FILE TO BE WRITTEN INTO MUST BE IN LOCATIONS $94C TO $956 BEFORE THIS ROUT";s"INE IS CALLED."<x"LOCATION $973 SHOULD CONTAIN 1 IF THE FILE EXITS IN DIRECTORY SO THAT THE OLD FILE CAN BE KILLED BEFORE THE NEW ONE IS WRITTEN. J 44539:-"DISK BASIC 1.0 DISK BASIC 1.1 $C53A $C567 USED FOR CREATING A FILE ON DISK. THIS ROUTINE SCANS THE DISK DIRECTORY FOR THE FILENAME (INFO FOR FILENAME SHOULD BE"CONTAINED IN LOCATIONS $94C TO $957). THEN IT CREATES A FILENAME ENTRY ON THE FIRST UNUSED PORTION OF THE DIRECTORY. THE APPROPRIATE INFO IS WRITTEN TO THE FILE ALLOCATION TABLE. 44539: "DISK BASIC 1.0 DISK BASIC 1.1 $C65F $C68C SEARCHES THE DIRECTORY FOR A FILENAME (FILENAME INFO SHOULD BE IN LOCATIONS $94C - $956). IF FILE IS FOUND, LOCATION $943 = SECTOR #,$976 =";" GRANULE #"- 44539:mȇ"DISK BASIC 1.0 DISK BASIC 1.1 $C6C2 $C6EF҇" THIS IS DISK BASIC'S KILL ROUTINE. TO KILL A FILE, ENTER WITH FILENAME INFO IN LOCATIONS $94C - $956. "ܢ 44539:"DISK BASIC 1.0 DISK BASIC 1.1 $C887 $C935 THIS ROUTINE IS USED TO GET FILENAME/EXTENSION, DRIVE# INFO FROM BASIC. BEFORE THISl"ROUTINE IS CALLED, LOCATIONS $A6-A7 SHOULD BE POINTING TO THE FILENAME/EXTENSION AND DRIVE #. z 44539:="DISK BASIC 1.0 DISK BASIC 1.1 $C939 $C9E8 THIS ROUTINE IS USED TO SAVE A BASIC PROGRAM TO DISK. BEFORE THIS ROUTINE IS CALLED, MAKE"SURE THE FILENAME/EXT OF THE BASIC PROGRAM IS IN LOCATIONS $94C - $956.  44539: u""DISK BASIC 1.0 DISK BASIC 1.1 $C9A0 $CA4E THIS ROUTINE IS USED TO LOAD A BASIC PROGRAM FROM DISK. BEFORE THIS ROUTINE IS CALLED, MAKE ,"SURE THE FILENAME/EXT OF THE BASIC PROGRAM IS IN LOCATIONS $94C - $956. 6 44539:!@"DISK BASIC 1.0 DISK BASIC 1.1 $CBD2 $CCAC DISPLAYS THE DISK DIRECTORY ON THE SCREEN. BEFORE YOU CALL!J"THIS ROUTINE, MAKE SURE THE DRIVE # IS IN LOCATION $EB. !T 44539:"^"DISK BASIC 1.0 DISK BASIC 1.1 $CE8C $CF68 THIS IS THE SAVEM ROUTINE. BEFORE THIS ROUTINE IS CALLED,#h"MAKE SURE THE LOCATIONS $A6-$A7 POINT TO THE "(34)"FILENAME/EXT"(34)", ML START ADDRESS, ML END ADDRESS, ML EXEC ADDRESS. #'r 44539:#|"DISK BASIC 1.0 DISK BASIC 1.1 $CEE9 $CFC5 THIS IS THE LOADM ROUTINE. BEFORE YOU CALL THIS ROUTINE,$"MAKE SURE THE FILENAME/EXT INFO IS IN LOCATIONS $94C - $956. $  44539:$"DISK BASIC 1.0 DISK BASIC 1.1 $D4C4 $D5B2 THIS IS THE DSKINI ROUTINE. BEFORE YOU CALL THIS ROUTINE, MAKE SURE REG. B CONTAINS THE%+"SKIP DEFAULT VALUE (NORMALLY 4). %9 44539:%"DISK BASIC 1.0 DISK BASIC 1.1 $D66C $D75F THIS IS THE *HEART* OF THE DISK OPERATING SYSTEM. THIS ROUTINE DOES ALL THE 'DIRTY WORK' OF&‡"READING INFO FROM AND WRITING INFO TO THE DISK. BEFORE THIS ROUTINE IS CALLED, CERTAIN PARAMETERS HAVE TO BE SET. THE NEXT SCREEN WILL PROVIDE INFO ON THESE PARAMETERS. &̢ 44539:'Uև"LOCATION $EB SHOULD CONTAIN DRIVE #, $EC = TRACK #, $ED = SECTOR #, $EE & $EF = THE RAM AREA TO WHICH THE DATA IS(<"BEING WRITTEN TO OR BEING READ FROM. LOCATION $EA = OPERATIN -> 0 = RESTORE, 1 = DO NOTHING, 2 READ FROM DISK, 3 = WRITE TO DISK. AFTER CALLING THIS ROUTINE, LOCATION $F0 =0 IF NO ERROR OCCURRED! ( 44539::: @224,"PRESS FOR PART VIII": 44539:A(135): A32 490 : "DKTUTOR8"TORE, 1 = DO NOTHING, 2 READ FROM DISK, 3 = WRITE TO DISK. AFTER CALLING THIS ROU (A$(I),8)"/"(A$(I),9,3)F$ 8050/ghII1: IL 8030 : "FILE NOT FOUND ....": 42961:::/yr:"GRANULES"/|A((A$(I),14,1)):0,17,2,A$,B$/ (A)",";:A((A$,A1,1)): A&HC0 A&HC9 8080 : 8070 0 (8): 42961:::::0#( FILENAME SEARCH05#2:"FILENAME/EXT:";F$0#< (&HC155)49 51512 F$: &HC68C:A(&H973) : 51338 F$: &HC65F:A(&H973)0#F A0 "found!!!!!!!!!!!!!": 42961: 42961: 42961:1.#P: A0 "NOT FOUND ON THIS DISK ...."::"PRESS ANY KEY TO SEARCH NEW DISK": 44539:902014#Z1s' 1: 6000:Y1: A$(68),E$(68): SCAN FOR GRAPHICS SCREENS1':@224,"SCANNING FOR GRAPHIC PROGRAMS"1'$ 100801'. I1 L1'8".";:A((A$(I),12,1)): A2 100702'BA$(I)(A$(I),8)"/"(A$(I),9,3)2'L: "D",#1,A$(I),1: #1,1 A$: #1,2:A(A$): #1,3:AA256(A$): #1,4:B(A$): #1,5:BB256(A$): B3584 A6144 : A$(I)2'V I:2'`Y1:2'jX3112'tDR,17,X,A$,B$:C$A$(B$,127):E$(X)C$2'~N0 73F'A$(Y)(C$,N321,32):R$(A$(Y),1):R$(255)10160 :R$(0)101403\'YY1:Y68101603c'N3j'X3'LY1: 42961: 42961::::3* 32768,197: (32768)197 47+\:I3584 358424: A: I,A:: 3584:: 26,80,142,128,0,166,132,183,255,223,167,128,140,224,0,39,5,183,255,222,32,239,28,175,57(0)101403\'YY1:Y68101603c'N3j'X3'LY1: 42961: 42961::::3* 32768,197: (32768)197 47+\:I3584 358424: A: I,A:: 3584:: 26,80,142,128,0,166,132,183,2550&/ 4:: 1,1:M"TITLE": 44539:"DKTUTOR1"  :> [!. j> !!! % $!$! % $!$$! $%!$! $% ! :Z $ _^ % ~ {${ ^_!$ !!