@J@ "MDISK" HEAVILY COMMENTED PARSER FOR 1750 RAMDISK IN VON ERTWINE'S@ CP/M FORMAT. REPORTS DIRECTORY INFO & SETS UP BASIC VARS FOR USE@ BY VARIOUS POSSIBLE UTILITIES. USE AS A BASIS FOR FURTHER PROGRAMS.A (C) 3/87 W. H. MOORE ;C'SVE [73316,2207],Q'LNK HOT TIGERQA CONTRIBUTED TO THE PUBLIC DOMAIN BY IT'S AUTHOR.WAA BA$ IS A 2-K BLOCK ALLOCATION STRING. THE 1750 HAS 256 SUCH BLOCKS,A NUMBERED 0 .. 255. BA$ COVERS 1 .. 255. BLOCKS 0 AND 1 ARE RESERVEDB FOR THE DIRECTORY (4K)AB BA$"0":I17:BA$BA$BA$::BA$BA$(BA$,(BA$)1)TB(BA$,1,1)"1"B FOR UP TO 126 VALID DIRECTORY ENTRIES RESERVE ROOM FOR:B DA(Q) DIRECTORY ENTRY POINTER .. NA$(Q) NAME .EXT OF ENTRYC NX(Q) EXTENT NR. 0 IF FILE <32K & FITS IN ONE CP/M ENTRY, ORCC 1, 2, ... FOR MULTIPLE ENTRY FILES.C XL(Q) LENGTH OF ENTRY SO FAR, IN K. A 75.375K FILE WILL HAVE THREEC DIRECTORY EXTENTS HAVING NX =1,2,3 AND XL=32,64,75.375. CP/MD ROUNDS THIS UP TO NEAREST 128 BYTES ("RECORD").KD XV%(Q,X) ALLOCATION MAP VECTOR: ENTRY Q POINTS TO UP TO 16 DATAD BLOCKS AT XV%(Q,X)*2K IN RAM. 0 INDICATES NO BLOCK.DDA(126),NA$(126),NX(126),XL(126),XV%(126,15)D# RESERVE BIT-GRAPH SCREEN FOR DIR BUFFER... E((0)0XX$"":1,1:0:XX$" ":1,1:0:5cE- FETCH M:DIR INFO TO BUFFER ... NOTE FIRST 32 BYTES ARE AN IDE. TO IDENTIFY A PROPERLY FORMATTED M:DISK ... FOR A SERIOUSE/ APPLICATION, FETCH & USE FOR ERROR DETECTION (BUT NOT HERE)F2&:15:!4064,("1C00"),32,0IF7 SCAN THROUGH BUFFERED DIR, PARSE, REPORT TO SCREEN AND LOADwF8 THE VALID INFO INTO THE BASIC VARIABLESF<SA("1C00"):EASA4032:DA32FFHD$"NAME EXT L [KB] NAME EXT L [KB] "FPHD$;:(0)0HD$;FZ:Gd ISAEADA:U(I)GnU168GxA$"":J18:A$A$((IJ)127):eGA$A$".":J13:A$A$((IJ8)127):GB(128(I12)(I15))8GB$(B)" ":B$(B$,7)GB$" 32 "B$" X1 -->"GB$" 64 "B$" X2--->"H INFO NOW ON HAND FOR ENTRY, LOAD INTO VARS.DHQQ1:NA$(Q)A$:XL(Q)B:DA(Q)I:NX(Q)(B32)hHB32B32NX(Q)NX(Q)NX(Q)1}H ..& UPDATE BA$HK015:XV%(Q,K)(I16K)HXV%(Q,K)(BA$,XV%(Q,K),1)"1"H: END BA$ UPDATEHA$B$,:H: END DIR SCAN LOOP6I NOW REPORT IT ALL BACK, TO SHOW USE OF VARIABLESGIQMQ:R1$""mI:" REPORT ON FILES..."I"NR.","NAME .EXT","XNR.","LENGTH","DIR ADD."IR1$" 2K BLOCK ADDRESS POINTERS"I" Q1QM:Q,NA$(Q),NX(Q),XL(Q),DA(Q)J,R1$;: CX015:XV%(Q,CX);::"":SJ6," 2-K BLOCK ALLOCATIONS 1 RAM BANK/LINE"J@XX$XX$"1";(BA$,31): NOTE: "1" COVERS BLOCK0, NOT IN BA$JJ BN17:XX$XX$(BA$,32BN,32):