#B .J NEW 10 *NAME EPCAT 20 : 30 REM EPCAT.BAS -- Program to Catalog EPROM in Slot 3 of Z88 40 : 50 REM Version 1.1 -- 1/16/89 60 : 70 REM Copyright 1989 -- Phil Wheeler -- Distribute freely 80 REM but not for a fee. 90 REM EPCAT is designed to provide info on EPROM files and 100 REM space used/available in an EPROM. 110 : 120 REM Program identifies name and size of each file. 130 REM If name is preceded by an asterisk (e.g., *BAS/EPCAT) 140 REM that copy of the file has been superceded by a new 150 REM by a later Save to EPROM; but it still takes space. 160 : 170 DIM BFR 50, ZZ% 100 180 PROC_ASM:BL$=CHR$(1)+"B" 190 CLS:PRINT BL$;"EPROM Cataloguer -- Phil Wheeler -- Jan 1989";BL$ 200 PAG%=193:PROC_TEST 210 IF ?(BFR+2)=ASC"o" AND ?BFR=2 AND ?(BFR+1)=&7E THEN 280 220 IF ?(BFR+2)=ASC"O" THEN 260 230 PAG%=199:PROC_TEST 240 IF ?(BFR+2)=ASC"o" AND ?BFR=8 AND ?(BFR+1)=&7C THEN 300 250 IF ?(BFR+2)=ASC"O" THEN 260 260 PRINT CHR$(7);TAB(0,3);"No EPROM in Slot 3":PRINT TAB(0,7); 270 END 280 PRINT TAB(0,3);"There is a 32K EPROM installed in Slot 3"; 290 PGM%=193:GOTO 320 300 PRINT TAB(0,3);"There is a 128K EPROM installed in Slot 3"; 310 PGM%=199:GOTO 320 320 PROC_WAIT:PRINT 330 S=0:PAG%=192:LOOP=1:TUSE=0:FLS=0:FUSE=0 340 REPEAT 350 PROC_PEEK(PAG%,S+49152):NN=DE% 355 IF (S+1+49152)>=65536 THEN S=S-16384:PAG%=PAG%+1 360 PROC_PEEK(PAG%,S+1+49152):TYP=DE% 370 IF TYP<>ASC"/" AND TYP<>0 THEN PROC_WAIT:PRINT:PROC_DONE:END 380 IF NN>45 THEN PROC_WAIT:PRINT:PROC_DONE:END 390 FOR M=2 TO NN+4 392 IF (S+M+49152)>=65536 THEN S=S-16384:PAG%=PAG%+1 394 PROC_PEEK(PAG%,S+M+49152):?(BFR+M)=DE%:NEXT 400 FLN=0:FOR M=0 TO 3:FLN=FLN+(?(BFR+NN+1+M))*256^M:NEXT 410 IF TYP=0 THEN PR$="*" ELSE PR$=" " 420 NAM$="":FOR M=2 TO NN:NAM$=NAM$+CHR$(?(BFR+M)):NEXT 430 FUSE=FUSE+FLN:TUSE=TUSE+FLN+NN+5:FLS=FLS+1:IF LOOP=7 THEN PROC_WAIT:PRINT:LOOP=1 440 PRINT "File ";PR$;NAM$;TAB(33);" length is ";FLN;TAB(52);" bytes" 450 S=S+NN+FLN+5:LOOP=LOOP+1 460 IF S>=16384 THEN S=S-16384:PAG%=PAG%+1:GOTO 460 470 IF PAG%>PGM% THEN PROC_WAIT:PRINT:PROC_DONE:END 480 UNTIL FALSE 490 : 500 REM Procedures 510 : 520 DEFPROC_ASM 530 FOR X=0 TO 2 STEP 2 540 P%=ZZ% 550 [ 560 OPT X 570 .PEEKER 580 LD A,(&4D3) 590 PUSH AF 600 LD A,C 610 LD (&4D3),A 620 OUT (&D3),A 630 LD A,(HL) 640 LD L,A 650 POP AF 660 LD (&4D3),A 670 OUT (&D3),A 680 RET 690 ] 700 NEXT 710 ENDPROC 720 : 730 DEFPROC_BEEP 740 PRINTCHR$(7) 750 ENDPROC 760 : 770 DEFPROC_PEEK(C%,A%) 780 H%=A% DIV 256: L% = A% MOD 256 790 DE%=(USR(PEEKER) AND &FF0000) DIV &10000 800 ENDPROC 810 : 820 DEFPROC_WAIT 830 PROC_BOLD 840 PRINT TAB(0,7);">>Press any key to continue<<"; 850 PROC_BOLD 860 WT$=GET$ 870 ENDPROC 880 : 890 DEFPROC_BOLD 900 VDU 1,ASC"B"; 910 ENDPROC 920 : 930 DEFPROC_DEC 940 A%=EVAL("&"+C$)+49152 950 ENDPROC 960 DEFPROC_TEST 970 C$="3FFC":PROC_DEC 980 FOR N= 0 TO 3:I=A%+N 990 PROC_PEEK(PAG%,I) 1000 ?(BFR+N)=DE% 1010 NEXT 1020 ENDPROC 1030 : 1040 DEFPROC_DONE 1050 PRINT:TSPC = 16384*(PGM%+1-192)-64 1060 PRINT "Total usable EPROM space is: ";TSPC 1070 PRINT "Current file space used is : ";FUSE;" in ";FLS;" files" 1080 PRINT "Total space now in use is : ";TUSE 1090 PRINT "Space still remaining is : ";TSPC-TUSE 1100 ENDPROC