1 A=A+1:IFA=1THENPOKE53265,11:LOAD"DE.CODE",8,1 2 POKE53280,5:POKE53281,11:PRINT"[147] [193] DISK DIRECTORY MAY LOOK SOMETHING" 3 PRINT" LIKE THE ONE BELOW BUT WHAT DOES IT" 4 PRINT" ALL MEAN?":PRINT" [208]RESS ANY KEY TO CONTINUE":DW$="[155]" 5 DIMH$(15):FORI=0TO15:READH$(I):H$(I)=H$(I)+"[145][145]":NEXT:KY=49235:L=49152 6 PRINT"[155] 0 "CHR$(34)"[212][197][211][212][160][196][201][210][197][195][212][207][210][217] "CHR$(34)" [196][197] 2[193]":FORI=1TO11 7 READA,B$,C$:PRINTATAB(6)CHR$(34)B$CHR$(34)TAB(25)C$:NEXT 8 PRINT" 472 [194][204][207][195][203][211] [198][210][197][197].":POKE53265,27:SYSKY 9 FORI=1TO7:PRINT:NEXT:PRINT" " 10 SYSL,0,163,0:SYSL,163,181,1:SYSL,181,684,0 11 PRINT"[155] [212]HIS IS THE DISK HEADER, MAINLY":PRINT" FOR THE USER'S CONVENIENCE..." 12 SYSKY:SYSL,163,181,0:PRINT" ...AND THIS IS THE IDENTIFICATION CODE" 13 PRINT" ":SYSL,182,187,1:SYSKY 14 SYSL,0,160,11:SYSL,181,187,0:SYSL,465,468,1 15 PRINT"",,,"[157][212]HESE TELL":PRINT,,,"[157]THE DRIVE":PRINT,,,"[157](AND THE 16 [153],,,"CMDUSER) WHAT":[153],,,"CMDTYPE THE":[153],,,"CMDFILE IS":[158]KY 17 [158]L,465,468,0:[129]I[178]0[164]5:[158]L,389[170]I[172]40,399[170]I[172]40,11 18 [130]:[158]L,320,323,1:[153]"(null)HESE ARE THE NUMBER 19 PRINT"OF SECTORS OCCUPIED":PRINT"BY EACH FILE ON":PRINT"THE DISK. " 20 SYSKY:SYSL,320,323,0:PRINT" [144]"CHR$(34)"[215][208] [212][197][216][212]"CHR$(34)" " 21 PRINT" "CHR$(34)"[194][207][210][196][197][210] [211][208][210][201][212][197]"CHR$(34)" " 22 PRINT" "CHR$(34)"[203][211] [195][207][213][210][211][197][211]"CHR$(34)" " 23 PRINT" "CHR$(34)"[196][201][206][199][207] [196][193][210][197][211]"CHR$(34) 24 SYSL,268,269,1:PRINT"",,,"[155][211]IGNIFIES[157][157][157][157][157][157][157][157][157]THAT FILE"; 25 PRINT"[157][157][157][157][157][157][157][157][157]CANNOT BE[157][157][157][157][157][157][157][157][157]SCRATCHED":SYSKY 26 SYSL,265,269,0:FORI=1TO4:SYSL,190+I*40,199+I*40,11:NEXT 27 SYSL,361,362,1:SYSL,384,389,1 28 PRINT"",,,"[157][155][200]ERE, THE[157][157][157][157][157][157][157][157][157]FILE HAS[157][157][157][157][157][157][157][157]NOT BEEN"; 29 PRINT"[157][157][157][157][157][157][157][157]CLOSED (OR[157][157][157][157][157][157][157][157][157][157]SAVED)[157][157][157][157][157][157]CORRECTLY":SYSKY:SYSL,361,389,0 30 FORI=0TO5:SYSL,349+I*40,360+I*40,11:NEXT:SYSL,640,660,1 31 PRINTDW$"[145] [193]S IT SAYS. [212]HERE ARE 472 32 [153]" BLOCKS (OR SECTORS) STILL":[153]" AVAILABLE FOR USE ON THE":[153]" DISK." 33 [158]KY:[158]L,640,660,0:[153]"ONONONON (null)ET'S TAKE A CLOSER LOOK AT THE FIRST" 34 [153]" EIGHT FILES ON THE DISK. RIGHT$NFORMATION 35 PRINT" ABOUT EACH WILL BE STORED ON [212][210][193][195][203] 18," 36 PRINT" [211][197][195][212][207][210] 1.":FORI=0TO7:SYSL,200+I*40,229+I*40,1:NEXT:SYSKY:PRINT"[147][212]:18, [211]:1" 37 PRINT"[155]";:FORI=0TO7:READA$:FORK=0TO1:FORJ=1TO16:B$=MID$(A$,J*2-1+K*32,2) 38 POKE199,ABS(ABS(I/2=INT(I/2))-ABS(J/2=INT(J/2))) 39 PRINTB$;:NEXT:PRINT:PRINT" ";:NEXTK,I 40 PRINT"[155][206]OT VERY EASY TO IDENTIFY WHAT THE" 41 PRINT" DATA SHOWS, BUT THERE ARE 256 BYTES 42 [153]" AND EACH SET OF 32 REPRESENTS ONE 43 PRINT" ENTRY IN THE DIRECTORY.":FORT=1TO2500:NEXT:RESTORE:FORI=1TO16:READA$ 44 NEXT:FORI=0TO7:IFITHENSYSL,40+I*80,120+I*80,0 45 READA,B$,C$:PRINT""TAB(14)A"[157] "TAB(18)CHR$(34)B$CHR$(34); 46 PRINTLEFT$(" ",15-LEN(B$))TAB(35)" "LEFT$(C$+" ",4) 47 SYSL,120+I*80,200+I*80,1:SYSL,200+I*80,761,0 48 FORT=1TO500:NEXTT,I:SYSL,680,760,0:SYSL,120,200,1:C$="[208][210][199]" 49 A=79:B$="[197][216][208][197][210][201][205][197][206][212] [195][193][205][208]":PRINT""TAB(14)ATAB(19)B$CHR$(34)" "C$ 50 PRINTDW$" [206]OW LET'S ZOOM IN EVEN CLOSER AND TAKE 51 [153]" A LOOK AT JUST ONE OF THE ENTRIES IN 52 PRINT" DETAIL. [208]RESS ANY KEY TO CONTINUE " 53 SYSKY:PRINT"[147][155][212][210][193][195][203] 18, [211][197][195][212][207][210] 1 ([194]YTES 0-31)":FORI=1TO17:READA$:NEXT 54 PRINT"";:FORI=0TO3:FORJ=0TO7:READA:PRINTH$(A);:READA:PRINTH$(A)" ";:NEXT 55 PRINT:PRINT:PRINT:NEXT 56 PRINT"";:FORI=1TO4:PRINTCHR$(148)CHR$(141)CHR$(148)CHR$(141)CHR$(141); 57 NEXT:PRINT" [210]EMEMBER, EACH ENTRY IN THE DIRECTORY":PRINT" CONSISTS OF 32 BYTES"; 58 PRINT" OF DATA. [193]LL OF":PRINT" THE ABOVE IS IN HEXADECIMAL NOTATION." 59 PRINT" [208]RESS ANY KEY TO CONTINUE.":POKE198,0:WAIT198,1:POKE198,0 60 SYS49152,760,959,11 61 PRINT"[144] 79 "CHR$(34)"[197][216][208][197][210][201][205][197][206][212] [195][193][205][208]"CHR$(34)" [208][210][199] [155][206]O.1-2" 62 SYSL,120,720,0:FORI=3TO6:SYSL,I*40,10+I*40,1:NEXT 63 PRINTDW$" [212]HE MOST IMPORTANT PART OF ANY SECTOR 64 [153]" ON THE DISK. RIGHT$T TELLS THE DRIVE WHICH 65 PRINT" TRACK AND SECTOR SHOULD BE READ NEXT. 66 [153]" RIGHT$F THE TRACK POINTER IS A $00 THEN THE 67 PRINT" END OF THE FILE HAS BEEN REACHED.":SYSKY 68 FORI=3TO6:SYSL,I*40,10+I*40,0:SYSL,11+I*40,15+I*40,1 69 NEXT:SYSL,720,960,11 70 PRINT"[145][145][145][145][145] [212]HE FILE TYPE. [193]N $81 REPRESENTS A" 71 PRINT" SEQUENTIAL FILE, $82 PROGRAM FILE, $83" 72 PRINT" USER FILE, $84 RELATIVE FILE. [212]O":PRINT" PROTECT A FILE FROM"; 73 PRINT" ACCIDENTAL ERASURE":PRINT" SIMPLY ADD $40 TO IT..." 74 PRINT""TAB(26)"[208][210][199][155]2 " 75 SYSKY:SYSL,720,960,11:PRINT""TAB(11)H$(12)H$(2) 77 PRINT""TAB(29)"<"DW$" [217]OU WILL NOTICE THAT A LESS THAN (<) 78 [153]" SIGN SHOULD APPEAR NEXT TO THE FILE 79 PRINT" TYPE IN THE DIRECTORY. [[201]F A FILE HAS 80 [153]" BEEN SCRATCHED, THE FILE TYPE BYTE 81 PRINT" WILL BE A $00]":SYSKY:SYSL,720,960,11 82 FORI=3TO6:SYSL,11+I*40,15+I*40,0:SYSL,16+I*40,25+I*40,1 83 NEXT:PRINT""TAB(26)"[144][208][210][199]<[155]3-4 84 [153]DW$" PEEKYTES THREE AND FOUR ARE THE TRACK AND 85 PRINT" SECTOR NUMBERS OF THE START OF THE 86 [153]" FILE. (null)OU CAN THEN READ THIS SECTOR TO 87 PRINT" EXAMINE THE FILE IN DETAIL.":SYSKY 88 SYSL,720,960,11:FORI=3TO6:SYSL,16+I*40,25+I*40,0 89 SYSL,26+I*40,40+I*40,1:NEXT:SYSL,280,465,1:FORI=12TO13:SYSL,I*40,25+I*40,1:NEXT 90 PRINT""CHR$(34)"[197][216][208][197][210][201][205][197][206][212] [195][193][205][208]"CHR$(34)TAB(35)"[155]5-20 91 [153]DW$" (null)HESE REPRESENT THE ATN(null)LENRIGHT$RIGHT$ VALUES FOR 92 PRINT" EACH CHARACTER IN THE FILE NAME. [212]HE 93 [153]" $ATN0 BYTE IS ADDED BY THE COMPUTER 94 PRINT" TO PAD OUT THE NAME TO 16 CHARACTERS. 95 [153]" LENHANGING THESE CHANGES THE FILE'S NAME 96 SYSKY:PRINT" ";:FORI=1TO8:READA,B:PRINTH$(A)H$(B)" ";:NEXT 97 PRINT"";:FORI=1TO4:READA,B:PRINTH$(A)H$(B)" ";:NEXT 98 PRINT""CHR$(34)"[197][216][208]'[205][197][206][212][160][195][193][205][208]"CHR$(34)" ":SYSL,720,960,11 99 PRINTDW$" [210]EMEMBER... THE $[193]0 BYTES ARE ADDED 100 [153]" AUTOMATICALLY BY THE COMPUTER AND DO 101 PRINT" NOT SHOW UP WHEN THE DIRECTORY IS":PRINT" LISTED.":SYSKY 102 PRINT"[144]"CHR$(34)"[197][216][208]'[205][197][206][212][160][195][193][205][208]"CHR$(34)"[155]21-29 103 [158]L,120,560,0:[158]L,720,960,11:[129]I[178]11[164]13:[158]L,25[170]I[172]40,40[170]I[172]40,1 104 [158]L,160[170]I[172]40,190[170]I[172]40,1:[130] 105 [153]DW$" (null)HESE BYTES ARE NOT USED BY THE DRIVE" 106 [153]" BUT NEED NOT BE WASTED. (null)OU MAY WANT A 107 PRINT" PROGRAM TO ONLY LIST FILES SAVED BY " 108 PRINT" THAT PROGRAM. [193]LTER THESE BYTES DURING 109 [153]" THE SAVE, CHECK THEM DURING THE LOAD.":[158]KY:[158]L,720,960,11:[129]I[178]11[164]13 110 [158]L,160[170]I[172]40,190[170]I[172]40,0:[158]L,25[170]I[172]40,40[170]I[172]40,0:[130] 111 [153]"79"[163]35)"LIST30-31":[129]I[178]11[164]13:[158]L,190[170]I[172]40,200[170]I[172]40,1:[130] 112 [153]DW$" (null)HE TOTAL NUMBER OF BLOCKS(OR SECTORS) 113 PRINT" USED BY THE FILE IS INDICATED BY BYTES 114 [153]" 30 AND 31. RIGHT$T IS THE USUAL LOW BYTE/ 115 PRINT" HIGH BYTE FORMAT. $4[198]=79, 0X256+79= 79":SYSKY 116 PRINT""TAB(32)" ":SYSL,0,720,0:SYSL,720,960,11 117 FORI=3TO6:SYSL,16+I*40,25+I*40,1:NEXT 118 PRINTDW$" [211]O, LET'S READ TRACK 17 ($11), 119 [153]" SECTOR 0 INTO THE BUFFER. 120 PRINT" [212]HIS IS THE START LOCATION OF THE FILE" 121 PRINT" ON THE DISK.":SYSKY 122 PRINT"[147][155] [212][210][195][203] 17, [211][197][195][212] 0 ([198]IRST 32 BYTES ONLY)[144]" 123 PRINT"";:FORI=0TO3:FORJ=0TO7:READA:PRINTH$(A);:READA:PRINTH$(A)" ";:NEXT:PRINT:PRINT:PRINT:NEXT 124 PRINT"";:FORI=1TO4:PRINTCHR$(148)CHR$(141)CHR$(148)CHR$(141)CHR$(141);:NEXT 125 PRINT"[155] [210]EMEMBER, THE FIRST TWO BYTES OF ANY" 126 PRINT" SECTOR ON THE DISK ARE POINTERS TO THE" 127 PRINT" NEXT SECTOR TO BE READ.":FORI=3TO6:SYSL,I*40,10+I*40,1 128 NEXT:SYSKY:SYSL,720,960,11:FORI=3TO6:SYSL,I*40,10+I*40,0:SYSL,10+I*40,21+I*40,1 129 NEXT:PRINT"[145][145][145] [212]HESE TWO BYTES REPRESENT THE ADDRESS 130 [153]" TO WHICH THE PROGRAM WILL BE LOADED. 131 PRINT" [193]GAIN THESE ARE IN THE USUAL LOW BYTE/ 132 [153]" HIGH BYTE FORMAT. 8X256+1= 2049, THE 133 PRINT" START LOCATION OF [194][193][211][201][195] PROGRAMS.":SYSKY 134 SYSL,120,720,1:FORI=3TO6:SYSL,I*40,21+I*40,0:NEXT 135 PRINT"[145][145][145][145][145] [212]HIS IS SIMPLY THE PROGRAM CODE AND IT 136 [153]" CONTINUES BYTE AFTER BYTE UNTIL THE " 137 [153]" END OF THE FILE IS REACHED. (null)O, FROM " 138 [153]" THE DIRECTORY YOU CAN OBTAIN A WHOLE " 139 [153]" MYRIAD OF INFORMATION ABOUT EACH FILE.":[158]KY:[153]"LOAD RETURN"[199](34); 140 [153]"DIRECTORIES EXPLAINED"[199](34):[153]"BY JASON FINCHSTOP":[151]198,0:[162] 141 [131]"* CMDCMDGETGETCMDCMDSINCOS"," RNDCMDCMDLOGGETCMDCMD GET","NEW CMDCMD*COSCMDCMDLOGWAITRND","NEW CMDCMD*COSCMDCMDNEWCOS" 142 [131]" RNDCMDCMDSINWAITGETCMDCMDNEWWAITGET","NEWRNDCMDCMDLOGWAIT CMDCMDNEWCOS","*RNDCMDCMDLOGWAIT CMDCMDSINCOS","NEWRNDCMDCMD*COSCMDCMDGETWAIT " 143 [131]"* CMDCMDSINCOSCMDCMDSINCOS","* CMDCMDSINGETCMDCMDNEWCOS","* CMDCMDLOGWAITGETCMDCMDGETGET","NEW CMDCMDLOGWAITCOSCMDCMDLOGWAITCOS" 144 [131]"*RNDCMDCMDGET CMDCMDSINRND","NEW CMDCMDGETGETCMDCMDLOGWAITCOS","NEWRNDCMDCMDLOGWAIT CMDCMDLOGWAITRND","NEWRNDCMDCMDLOGWAIT CMDCMDGET " 145 [131]79,"VAL(null)(null)VAL(null)RIGHT$(null)VAL(null)(null) LENATN(null)(null)","(null)(null)CHR$",24,"RIGHT$(null)(null)VAL(null)(null)(null)(null)(null)","(null)(null)CHR$<",12,"(null)(null) (null)VAL(null)(null)","(null)VAL(null)" 146 [131]3,"PEEK(null)(null)STR$VAL(null)CLOSE(null)(null)(null)RIGHT$(null)VAL","(null)(null)CHR$",,"(null)(null) LEN(null)(null)(null)(null)VAL(null)","CMD*(null)(null)CHR$",5,"STR$RIGHT$(null)CHR$(null) STR$ATN(null)VAL(null)","(null)(null)CHR$" 147 [131]2,"(null)LEN(null)(null)(null)(null)CLOSE(null)VAL(null)(null)","(null)VAL(null)",30,"(null)(null)ATN(null)VAL(null)CLOSE(null)(null)(null)ATN(null)VAL","(null)(null)CHR$",1,"(null)(null).CHR$ATN(null) PEEKRIGHT$(null)(null)","(null)VAL(null)" 148 [131]9,"(null)(null)(null)ASC","(null)(null)CHR$",27,"(null)RIGHT$(null)(null)VAL(null)RIGHT$LEN","(null)(null)CHR$" 149 [131]"12048211004558504552494STR$454VAL542048454STR$50ATN00000000000000000004ASC00" 150 [131]"0000LEN21301494VAL544552525550ATN0ATN0ATN0ATN0ATN0ATN0ATN0ATN00000000000000000001800" 151 [131]"000081190157502054455854ATN0ATN0ATN0ATN0ATN0ATN0ATN0ATN0ATN00000000000000000000LEN00" 152 [131]"000082190STR$424ASC5244455220535052495445ATN0ATN0ATN00000000000000000000300" 153 [131]"0000021ATN014PEEK5320434ASC5552534553ATN0ATN0ATN0ATN0ATN0ATN00000000000000000000000" 154 [131]"000082020144494VAL474ASC204441524553ATN0ATN0ATN0ATN0ATN00000000000000000000500" 155 [131]"00008102055343524ASC4LEN4LEN2054455854ATN0ATN0ATN0ATN0ATN00000000000000000000200" 156 [131]"0000822103504LEN414VAL455420524ASC54415445ATN0ATN0ATN00000000000000000001VAL00" 157 [131]1,2,,4,8,2,1,1,,,4,5,5,8,5,,4,5,5,2,4,9,4,13,4,5,4,14,5,4,2,,4,8 158 [131]4,5,4,13,5,,10,,,,,,,,,,,,,,,,,,,,4,15,, 159 [131]2,7,4,13,4,5,4,14,5,4,2,,4,8,4,5,4,13,5,,10,,10, 160 [131]1,1,0,10,0,1,0,8,3,2,0,8,0,10,0,0,4,1,11,2,4,1,10,10,3,1,3,10,8,11,4,1 161 [131]11,2,3,1,10,7,9,7,3,5,3,3,3,2,3,6,3,5,2,12,3,1,3,1,3,10,8,9,3,2,3,0