image of READY prompt

Wang2200.org

Listing of file='TBO.CKDS' on disk='vmedia/toolbox.wvd.zip'

# Sector 520, program filename = 'TBO.CKDS'
0010 REM  TBO.CKDS   -- DJA  10/9/86
0020 DIM A$(16,2)8,F$(2047)8,C$(4094)2,W$(4094)2,L$(4094)2,B$3
0040 DIM V$2,V0$2,V2$2,M$50,M1$50,T$(5)2,A$3,Q(5)
0050 T$()="SDSP ? P D"
0060 PRINT HEX(03);"Check disk Utility"
0070 LINPUT "Device address to check (or ALL)",-B$
   : A$=B$
0075 IF B$="all" OR B$="ALL" THEN READ A$
   : IF A$="end" THEN END
0080 $TRAN(A$,"AaBbCcDdEeFf")R
0090 SELECT #2 <A$>
0095 PRINT
   : PRINT HEX(0C)
0100 PRINT "    Address=";A$
0110 REM %----- get index information ----------------------------------------
     ---
0120 DATA LOAD BA T #2,(0) A$()
0130 Z=VAL(STR(A$(1,1),2,1))-1
   : REM LAST SECTOR OF INDEX
0140 Q2=VAL(STR(A$(1,1),3,2),2)-1
   : REM CURR END (LAST USED) SECTOR
0150 Q3=VAL(STR(A$(1,1),5,2),2)-1
   : REM HIGHEST LEGAL SECTOR
0160 PRINT Z,"LAST INDEX SECTOR"
   : PRINT Q2,"CURRENT END"
   : PRINT Q3,"END DISK"
0170 REM %----- verify index -------------------------------------------------
     ---
0180 IF Q2<Q1+1 THEN PRINT "CURRENT END OVERLAPS INDEX"
0190 IF Q3<Q2 THEN PRINT "CURRENT END BEYOND ENDOFDISK"
0200 DATA LOAD BA T #2,(Q3)A$()
   : ERRORPRINT "DEFINED END IS BAD SECTOR"
0210 PRINT " ----------  File self-consistency conflicts  --------------------
     ---------"
0220 FOR I=1 TO 5
   : Q(I)=0
   : NEXT I
0225 Q=0
   : F$()=" "
   : C$()=ALL(FF)
0230 REM %----- get index sectors -------------------------------------------
0240 FOR I=0 TO Z
0250 DATA LOAD BA T #2,(I) A$()
0260 IF I=0 THEN J9=2
   : ELSE J9=1
0270 REM %----- verify index sector file entries ----------------------------
0280 FOR J=J9 TO 16
0290 IF STR(A$(J,1),1,1)=HEX(10) THEN GOTO 340
0300 IF STR(A$(J,1),1,1)=HEX(11) THEN GOTO 350
0310 IF STR(A$(J,1),1,1)=HEX(21) THEN GOTO 450
0320 IF STR(A$(J,1),1,1)=HEX(00) THEN GOTO 470
0330 HEXPRINT A$(J,1)
   : STOP "ILLEGAL INDEX ENTRY TYPE"#
0340 % ACTIVE FILE
0350 % SCRATCHED FILE
0360 Q=Q+1
   : F$(Q)=A$(J,2)
0370 REM %----- check file parameters for self consistency -------------
0380 LIMITS T #2, F$(Q),C1,C2,C3,C4
   : Q(C4+3)=Q(C4+3)+1
0390 IF C3<=C2-C1+1 THEN 410
0400 GOSUB '51("Sectors used > Filesize:",F$(Q))
0410 %
0420 REM  should check C4 to see whether it agrees with A$(J,1)
0430 C$(2*Q-1)=BIN(C1,2)
   : C$(2*Q)=BIN(C2,2)
0440 GOTO 490
0450 % DELETED ENTRY
0460 GOTO 490
0470 % UNUSED ENTRY
0480 GOTO 490
0490 NEXT J
0500 NEXT I
0510 PRINT " -----------------  Statistics  ----------------------------------
     --------"
0520 PRINTUSING 529,"Programs",Q(4), "Scratched Programs",Q(2)
   : PRINTUSING 529,"Datafiles",Q(5),"Scratched datafiles",Q(1)
0529 % ##############   ####   ######################  ####
0530 IF Q(3)<>0 THEN STOP "LIMITS BUG "#
0540 REM %----- sort starting and ending sector addresses --------------
0550 PRINT " ----------  File conflicts:  ------------------------------------
     ---------"
0560 MAT SORT C$() TO W$(),L$()
0570 DEFFN'0  "LIST D 400,";HEX(0D)
0580 DEFFN'1
0590 REM %----- check sorted sector address values ---------------
   : REM %.....get next sector address.....
0600 A9=VAL(L$(1),2)
0610 IF VAL(C$(A9),2)<= Z THEN GOSUB '51("File overlaps INDEX:",F$((A9+1)/2))
0620 REM A=number of current file
   : REM B=1 if sector address is start, 2 if end
0630 I=0
   : V$=HEX(FFFF)
   : A,B=9999999
0640 I=I+1
   : V0$=V$
   : A0=A
   : B0=B
   : A9=VAL(L$(I),2)
   : A=INT((A9+1)/2)
   : B=2-MOD(A9,2)
0650 IF C$(A9)=HEX(FFFF) THEN 790
0660 V$=C$(A9)
0670 IF B0=9999999 THEN 780
0680 IF B0<>1 THEN 740
0690 REM %.....last entry was a starting sector.....
0700 IF A=A0  THEN GOTO 780
   : GOSUB '50("Overlapping files (end):")
0710 % ??? IF B<>2 THEN GOSUB '50("Overlapping files (start): ")
0720 GOTO 780
0730 REM %.....last entry was an ending sector.....
0740 IF B=1 THEN 750
   : GOSUB '50("Overlapping files (end):")
   : GOTO 780
0750 IF V$>V0$ THEN 760
   : GOSUB '50("Single sector overlap:")
   : GOTO 780
0760 V2$=V0$ ADDC HEX(01)
   : IF V$=V2$ THEN 780
0770    GOSUB '50("Gap in disk between files:")
0780 GOTO 640
0790 IF Q=0 THEN 800
0792 IF VAL(V$,2)>Q2 THEN GOSUB '51("File beyond current end:",F$(A0))
0800 PRINT "DONE WITH TEST"
0810 IF B$="all" OR B$="ALL" THEN 75
0815 END
0820 REM %----- error message display -------------------------------------
0830 DEFFN'50(M$)
0840 %PRINT F$(A0),F$(A),M$
0850 GOSUB '51(M$,F$(A0))
0860 GOSUB '52(F$(A))
0870 RETURN
0880 DEFFN'51(M1$,F1$)
0890 LIMITS T #2, F1$,C1,C2,C3,C4
0900 PRINTUSING 910, M1$,T$(C4+3),F1$,C1,C2,C3
0910 % ###################################   ##  ########    ##### #####  ####
     #
0920 RETURN
0930 DEFFN'52(F1$)
0940 LIMITS T #2, F1$,C1,C2,C3,C4
0950 PRINTUSING 960,     T$(C4+3),F1$,C1,C2,C3
0960 %                                       ##  ########    ##### #####  ####
     #
0970 RETURN
2000 DATA "d20","d21","d22","d23","d24","d25"
2010 DATA "d60","d61","d62","d63","d64","d65"
2020 DATA "end"