JOYTemplate for Footer group  hXV+kIz k phL9̪I Y%z kZ-KiZ-K N"զI` {x R< N"զI` {x R<L$ЦIz yx UL$ЦIz xx UL$ЦIz x UL$ЦIz ~x UL$ЦIz }x UL$ЦIz |x UL$ЦIz sx UL$ЦIz rx U xScript 1: 0x R< @ DiscLibraryIndexx xScript 1: 0x R<  &JPage=== 3(c)copyright1989byGeoffBuckeridge xScript 1: 0x R<  @DiscLibraryIndex(cont)x xScript 1: 0x R<  &JPage=== 3(c)copyright1989byGeoffBuckeridgex xScript 1: 0x R<   J3WhattheDiscLibraryIndexdoesiscatalogueyourentiredisccollection,  andsortallyourfilesinalphabeticalorder.Youcanthendeterminewhich discafileison,justbylookingitupintheindex.Itbecomespossibleto seeataglancewhetherthesamefileisonmorethanonedisc,orevenmorethanoneuserareawithinthesamedisc. Itisextremelyimportanttokeepbackupcopiesofyourfiles,incaseofan  kemergency.Discscaneasilybecomedamagedorcorrupt.Howeveritis  &equallyeasytobecomeparanoidaboutfilebackupandendupwithtoomanyccopiesofaparticularprogram.  {PTheindexwillhighlightallthose'TEST.BAK'or'A.BAS'typefileswhich ~gobviouslyshouldhavebeendeletedlongago.Allyouhavetodoisgo-throughyourdiscsoccasionallyandweedoutredundantfiles.  YBBeforeyoucanusethisprogramitwillbenecessarytoidentifyeachof  pYyourdiscswithauniquename.CP/Mprovidesforthisbyallowingdisc  O8labelling.Adisclabeliseffectivelyaspecialtypeoffilenameandthe  oXsamerulesapplytotheconstructionofboth.Theyconsistofaneight  characternamefollowedbyathreecharacterextensionintheformatz'DISCNAME.EXT'.  \1Usingjusttheextension,upto100discscanbeindividuallyreferenced. Thethirdcharacterdenoteswhichsideofthediscthefileison.Therest  @)ofthefilenameisunimportanttotheindexprogrambutprovidesauseful  ;$descriptionofthecontentsofthedisc.Anamelike'LOCO2SOD.B13'canbe  " usedtoreferencedisc13,sideB,theLocoscript2startofdaydisc.Even doubledensitydiscsofthetypeusedindriveBofthe8512canbedescribedlike'DATABASE.D05'. 'UseSETfromyourCP/Mdisctonameyourdiscs.Itmaybeaswelltocopy,SET.COMtotheMdriveandlogontoit.LoadCP/Mandtype:4 xScript 1: 0x R<  ,PIPM:=SET.COM!M:P xScript 1: 0x R< ThenattheM>promptnameyourdiscslikethis:o ,SETA:[NAME=ACCOUNTS.A08]  v_Don'tforgettonamebothsidesofthesingledensitydiscs.Onceyour&libraryisnamedyoucancommencewithbuildinguptheindex.MFirstlycopytheindextotheMdrivethenruntheprogram: ,PIPM:=INDEX.DATq ,BASICINDEX Nextinsertthediscyouwantaddedtotheindex,intoeitherDriveAifit's 1asingledensitydisc,orDriveBifit'sdoubledensityone.Thentellthe  .programwhichdriveitsin.Theprogramwillsearchthedirectoryuntilit  findsadisclabelthenloadthelatestindexfile.Whilstitisloading,any  referenceitfindstothecurrentdisclabelwillbedeletedsothatonlythe mostrecentdirectoryisadded.Ifthecontentsofadiscchange,asitwilldofromtimetotime,justaddittotheindexagain.  Atthisstageyoumaycontinuetoaddotherdiscs.Alternativelythe  fOprocesscanbehalted,theindexfilesortedintoalphanumericorderand \EstoredbackontheMdrive.Youaregivetheoptiontoprinttheentireindex,eithertothescreenorprinter. 3Figure1showsasampleprintoutofthebeginningoftheindex.Thefirst  sixlinesshowthenamesofthediscsandtheirdiscreferences.  Subsequentlyonlythediscreference,andusernumber,isused.Youcansee kTintheexamplethatBASIC.COMistobefoundinuserareazeroonthree  YBdifferentdiscs.ThefileEXCH.BASisintwodifferentuserareasonthe  samedisc.DEMO.BASoccursonfivedifferentdiscsbutofcoursetheycould  &befivetotallydifferentfileswiththesamename,sobeverycarefulwhencopyingthem. xScript 1: 0x R< Someofthefunctionsofthisprogramtakealittlewhiletooperatebutat notimeareyouleftwithaninactivescreen.Whetheritisloading,adding, sortingorstoring,anumberisincrementedonscreenasanewfilenameis found.Theindexissortedinthreepartsandyoucantellwhichpartisin  progressbecausethenumberstartsbyincrementingfrom2000then1000then zero.Soafterafewsortsyoushouldbeabletodetermineroughlyhowlongitwillbeuntilitfinishes.Rememberattheendofasessiontocopytheindexbacktoyourindexdisc: ,SYSTEM ,PIPA:=M:INDEX.DAT Script 1: 0x R<DFigure1.ASampleIndexPrintout Script 1: 0xR"-< X "LOCO_1 -A01 "CPM3 -B01 "CPM3UTIL -A02 "LOGO -B02 "GPBASIC -B03 "INDEX -D15 Script 1: 0xR&-<lADVERT &.EG -A0101lASSIGN &.SYS -B0200TBASIC &.COM -B0300,B0100,D1500lDATE &.COM -A0200lDDFXHR8 &.PRL -B0200lDDFXLR8 &.PRL -B0200lDDSCREEN.PRL -B0200<DEMO &.BAS -A0100,A0202,D0300,D1500,D1503lDEVICE &.COM -A0200DIR &.COM -B0100,D1500lDISCKIT &.COM -B0100lED &.COM -B0100lERASE &.COM -B0100EXCH &.BAS -D1500,D1508 Script 1: 0x R<  Script 1: 0xi< xScript 1: 0xi< P10REMDISCLIBRARYINDEX20REM(c)1988030REMby40REMGeoffBuckeridge50REM60DEFINTa-z:GOSUB1100p70imax=750:DIMf$(imax),loc$(imax),ind(imax)80e$=CHR$(27):con$=e$+"e":cof$=e$+"f":bel$=CHR$(7):file1$="m:index.dat":dma=&HF52890filfcb=&HF500:setdma=&HF50D:find1=&HF516:find2=&HF522:qtr=&HF527@100IFFIND$(file1$)=""THENOPEN"o",1,file1$:CLOSE#1:GOTO130110REM120REMdisplaysheading130PRINTCHR$(27)+"E"+CHR$(27)+"H"140PRINTTAB(30);"DISCLIBRARYINDEX"150PRINTTAB(30);"------------------":PRINT:PRINT:PRINT@160PRINT"WhichDiscDrive(A/B)";con$;170dr$=UPPER$(INPUT$(1)):IFINSTR("AB",dr$)=0THENPRINTbel$;:GOTO170180PRINTcof$;dr$:flag=0190REM200REMfillsfcbwith'?'sandsetsupdmaaddress210OPTIONFILESdr$P220CALLfilfcb230REM240REMfindsdisclabel250PRINT:PRINT"SearchingforDiscLabel";0260POKEqtr,0:WHILEPEEK(qtr)<>255ANDuser<>32270IFflag=0THENCALLfind1:flag=1ELSECALLfind2280den=dma+(PEEK(qtr)*32):user=PEEK(den)290WEND0300f$="":dn$="NoDiscName"+bel$310IFuser=32THENFORk=1TO11:f$=f$+CHR$(PEEK(den+k)):NEXT:dn$=RIGHT$(f$,3)ELSEPRINTdn$:GOTO520p320flag=0:PRINTf$:GOSUB810@330last=last+1:f$(last)=""+RIGHT$(f$,2)+MID$(f$,9,1)+LEFT$(f$,8):loc$(last)=RIGHT$(f$,3)+"" xScript 1: 0xi< P 340ind(last)=lastP350CALLsetdma360REM370REMreadsdirectory380PRINT:PRINT"AddingNewDirectory";0390POKEqtr,0:WHILEPEEK(qtr)<>255ANDi<=imax-1400IFflag=0THENCALLfind1:flag=1ELSECALLfind2@410f$="":den=dma+(PEEK(qtr)*32)P420FORk=1TO11:f$=f$+CHR$(PEEK(den+k)):NEXT430user=PEEK(den):ext=PEEK(den+12) 440IFuser>15ORext>0THEN480P450last=last+10460user$=STR$(user):loc$(last)=dn$+"-"+RIGHT$("0"+RIGHT$(user$,LEN(user$)-1),2)@470f$(last)=f$:ind(last)=last:i=last:GOSUB1060`480WEND:PRINT 490IFlast>=imaxTHENPRINT:PRINTcon$;"TOOMANYFILES-Tryagainwithanalreadyindexeddisc,but sortthistime.";bel$:GOTO780500REM510REMloopbackoption520PRINT:PRINT"AnotherDisc(Y/N)";con$;530a$=UPPER$(INPUT$(1)):IFINSTR("YN",a$)=0THENPRINTbel$;:GOTO530540PRINTe$;"A";cof$;:IFa$="Y"THENGOSUB960:GOTO130550REM560REMdoesshellsort570PRINT:PRINT"SortingIndexFile";`580arr(1)=5:arr(2)=3:arr(3)=1590FORincr=1TO3 600span=arr(incr)610FORj=span+1TOlast:i=j+((3-incr)*1000):GOSUB1060620y$=f$(ind(j)):y=ind(j):k=j-span:found=0630WHILEk>=1ANDNOTfound640IFy$