0 GOTO24:'By William Hart 75745,1575 1 'Date decoder 2 E1=ASC(MID$(DE,13,1))+ASC(MID$(DE,14,1))*256 3 E2=ASC(MID$(DE,15,1))+ASC(MID$(DE,16,1))*256 4 PRINT#1,USING"###/##/## ";INT(E1/2^12),INT(E1/2^7)AND31,(E1-INT(E1/2^8)*2^8)AND127;:IFMID$(DE,1,1)=AFTHENRETURN 5 PRINT#1,USING"###/##/## ";INT(E2/2^12),INT(E2/2^7)AND31,(E2-INT(E2/2^8)*2^8)AND127;:RETURN 6 'Calculate directory entry length 7 ES=0:IFMID$(DE,1,1)=CHR$(0)ORMID$(DE,1,1)=AFTHENRETURN 8 ES=ASC(MID$(DE,11,1))+1:J=ASC(MID$(DE,12,1)) 9 K=ASC(MID$(AL,J+1,1)) 10 IFK<240THENJ=K:ES=ES+1536:GOTO9 11 ES=ES+256*(K-241):RETURN 12 'Calculate and get folder 13 T=IC/3:S=(IC MOD 3)*6+1:DS(0)=DM:MID$(DS(0),1,128)=LEFT$(DSKI$(0,T,S,0),128) 14 MID$(DS(0),129,127)=LEFT$(DSKI$(0,T,S,1),127) 15 DS(1)=DM:MID$(DS(1),1,128)=LEFT$(DSKI$(0,T,S+2,0),128) 16 MID$(DS(1),129,127)=LEFT$(DSKI$(0,T,S+2,1),127) 17 RETURN 18 'Format entry name 19 A=MID$(DE,2,9):IFMID$(DE,1,1)<>AFTHENAP=MID$(A,1,6)+"."+MID$(A,7,2):RETURN 20 FORI=9TO1STEP-1:IFMID$(A,I,1)<>" "THEN22 21 NEXTI 22 AP=">"+MID$(A,1,I):RETURN 23 'Initial setup 24 CLEAR3000:MAXFILES=1:DEFSTRA-D:DEFINTI-N,T,S:DIMDP(23),CE(28),LC(28):ONERRORGOTO99 25 FORI=0TO12:DM=DM+SPACE$(9)+STRING$(9,0):NEXT:DM=DM+STRING$((255-LEN(DM)),0) 26 'DM = Blank folder sector 27 'DP = Primay directory entries 28 'AL = Allocation table 29 'DE = A directory entry 30 'DF = Current folder in process 31 'ES = Length of directory entry 32 'EF = Length of current folder 33 'CE = Current folder path entry 34 'LP = Current folder path level 35 'LC = Current folder path cluster 36 'DN = Disk name 37 'DS = Sectore work area 38 'T = Track 39 'S = Sector 40 'IC = Cluster 41 'IL = Folder found switch 42 'AF = Folder constant CHR$(240) 43 'LD = Folder path desent switch 44 'LO = Folder desent past level 45 'IW = Printer files switch 46 'ED = Total bytes in root folder 47 AF=CHR$(240):CLS 48 PRINT@50,CHR$(27);"p CHIPMUNK DIRECTORY ";CHR$(27);"q" 49 PRINT:PRINT"Output to:";TAB(15);"1 - LCD (default)":PRINTTAB(15);"2 - LPT (printer)" 50 PRINTTAB(15);"3 - RAM (as DIR.DO)":DA="LCD:":AO=INPUT$(1) 51 IFAO="2"THENDA="LPT:"ELSEIFAO="3"THENDA="DIR.DO"ELSECLS:AO="1" 52 OPENDAFOROUTPUTAS1 53 AL=STRING$(255,0):MID$(AL,1,128)=LEFT$(DSKI$(0,0,5,0),128) 54 MID$(AL,129,127)=LEFT$(DSKI$(0,0,5,1),127) 55 DS(0)=DM:MID$(DS(0),1,128)=LEFT$(DSKI$(0,0,1,0),128) 56 MID$(DS(0),129,127)=LEFT$(DSKI$(0,0,1,1),127) 57 DE=MID$(DS(0),1,16):GOSUB19:DN=MID$(AP,2):FORI=0TO11 58 DP(I)=MID$(DS(0),19+(I*18),16):NEXTI 59 DS(1)=DM:MID$(DS(1),1,128)=LEFT$(DSKI$(0,0,3,0),128) 60 MID$(DS(1),129,127)=LEFT$(DSKI$(0,0,3,1),127) 61 FORI=0TO11:DP(I+12)=MID$(DS(1),19+(I*18),16):NEXTI 62 FORL=0TO23:DE=DP(L):GOSUB7:ED=ED+ES:NEXTL 63 IFAO<>"1"THENIFED>0THENPRINT"There are";ED;" bytes' of files in root "; 64 PRINT#1," FOLDER STRUCTURE" 65 PRINT#1,:PRINT#1,"DISK ^";DN;:IFED>0THENPRINT#1,USING"#,###,###";EDELSEPRINT#1, 66 FORL=0TO23:DE=DP(L) 67 IFMID$(DE,1,1)=AFTHENLO=0:LP=0:IL=0:CE(0)=DE:GOSUB81 68 NEXTL 69 PRINT#1,:PRINT#1,:PRINT#1," FILES WITHIN FOLDERS" 70 IW=1:PRINT#1,:PRINT#1,"DISK ^";DN;:IFED>0THENPRINT#1,USING"#,###,###";EDELSEPRINT#1, 71 IFED=0THEN75 72 FORL=0TO23:DE=DP(L) 73 IFMID$(DE,1,1)>CHR$(0)ANDMID$(DE,1,1)<>AFTHENGOSUB19:PRINT#1," ";AP;:GOSUB2:GOSUB7:PRINT#1,USING"#,###,###";ES 74 NEXTL:PRINT#1,SPACE$(30);:PRINT#1,USING"#,###,###";ED 75 FORL=0TO23:DE=DP(L) 76 IFMID$(DE,1,1)=AFTHENLP=0:IL=0:CE(0)=DE:GOSUB81 77 NEXTL 78 CLOSE:IFAO="1"THENPRINTCHR$(27);"p Press any key to end ";CHR$(27);"q";:A=INPUT$(1) 79 MAXFILES=0:MENU 80 'Sum folder path 81 IC=ASC(MID$(DE,12,1)):LC(LP)=IC:GOSUB13:EF=0:IL=0:LD=0:DF=DE 82 IFIW=1THENPRINT#1,"^"DN;:DZ=DE:FORM=0TOLP:DE=CE(M):GOSUB19:PRINT#1,AP;:NEXTM:DE=DZ:PRINT#1, 83 FORN=0TO1:FORM=0TO11:DE=MID$(DS(N),19+(M*18),16):GOSUB7:EF=EF+ES:IFMID$(DE,1,1)=AFTHENIL=1 84 IFIW=1THENIFMID$(DE,1,1)=CHR$(0)THEN86 85 IFIW=1ANDMID$(DE,1,1)<>AFTHENGOSUB19:PRINT#1," ";AP;:GOSUB2:PRINT#1,USING"#,###,###";ES:IFAO<>"1"THENPRINT@280,USING"\ \ #,###,###";AP,ES; 86 NEXTM:NEXTN:DE=CE(LP):GOSUB19 87 IFIW=0THENPRINT#1,SPACE$(LP+1);:PRINT#1,USING"\ \";AP;:GOSUB2:IFAO<>"1"THENPRINT@280,USING"\ \ #,###,###";AP,EF; 88 IFIW=0THENIFEF>0THENPRINT#1,USING"#,###,###";EFELSEPRINT#1, 89 IFIW=1THENIFEF>0THENPRINT#1,SPACE$(30);:PRINT#1,USING"#,###,###";EFELSEPRINT#1, 90 'Locate next folder to sum 91 IFIL=0ANDLP=0THENRETURN 92 IFIL=0ANDLP>0THEN98 93 IL=0:IC=LC(LP):GOSUB13:FORN=0TO1:FORM=0TO11:DE=MID$(DS(N),19+(M*18),16) 94 IFMID$(DE,1,1)=AFTHENIFIL=1ANDLD=1THENLP=LP+1:CE(LP)=DE:LC(LP)=ASC(MID$(DE,11,1)):GOTO81 95 IFMID$(DE,1,1)=AFTHENIFIL=0ANDLD=0THENLP=LP+1:CE(LP)=DE:LC(LP)=ASC(MID$(DE,11,1)):GOTO81 96 IFLD=1ANDDE=DFTHENIL=1 97 NEXTM:NEXTN:IFLP=0THENRETURN 98 LO=LP:LP=LP-1:LD=1:GOTO93 99 PRINT@280,CHR$(27);"p ERROR";ERR;" at";ERL;" ";CHR$(27);"q";:RESUMENEXT