Listing of file='IDS2PF11' on disk='vmedia/701-2715B.wvd.zip'
# Sector 146, program filename = 'IDS2PF11' 1000 REM "IDS2PF11" - Release 2.1 - DISK SPACE ALLOCATION MODULE 1010 DIM D1$3 : IF F6$(17)<"^"THEN SELECT @PART"IDS2SUBM" : GOSUB '32("IDS2sF11") : IF R3$(1)="IDS2PUSD"OR R3$(1)="IDS2PU09"OR R3$(1)="IDS2PC03"THEN F6$(11)= "N" : IF F6$(18)="R"THEN F6$(11)="N" 1050 IF F6$(53)="Y"AND STR(F4$,4,8)<>"IDS2PCST"THEN 1090 : E$="IDS2fs" : A=(R0-#PART)/16+1 : IF A>0THEN CONVERT ATO STR(E$,7,2),(##) : GOSUB '39(E$,2) : MAT REDIM E3$(9)83 : IF A>0THEN DATA LOAD DA T#2,(A)E3$() : E0$()=STR(E3$(),45*#PART-17,45) : GOTO 1100 1090 LIMITS T#4,STR(F4$,4,8),A,J,J,J : DATA LOAD BA T#4,(A+2)STR(E3$(),,256) : E0$()=STR(E3$(),92,45) 1100 E$=E9$(1)OR ALL(20) : GOSUB '39(E$,5) : MAT REDIM E$(6)83 : DATA LOAD DA T#P,(A)E$() : MAT REDIM E$(E8)1 : STR(E$(),499)=" " : IF D1$<>" "THEN STR(E$(),105,3)=D1$ : E6$=STR(E$(),10) : IF E6$<"2"OR E6$>"3"THEN AND (STR(E2$(3),5,1),FE) : E$=STR(E$(),82,8)OR ALL(20) : GOSUB '39(E$,5) : MAT REDIM E3$(24)83 : DATA LOAD DA T#P,(A)E3$() : MAT REDIM E3$(249)8 1240 IF E6$>"4"AND STR(E$(),201,8)=" "THEN STR(E$(),201,16)=STR(E3$(),201) : IF E6$>"4"THEN CONVERT STR(E3$(),209,8)TO D4 : ELSE D4=0 : C0=0 : IF E6$>"4"THEN C0=INT(VAL(STR(E3$(),417))/3) : GOSUB '37(2) : GOSUB '37(4) : GOSUB '37(1) : C1=Q : GOSUB '37(3) : C2=Q : IF C2>0THEN 1330 : GOSUB '45(3,"1") 1320 C2=Q 1330 STR(F6$(),12,2)="NN" : GOSUB '37(5) : C3=Q : IF Q>0THEN 1420 1370 GOSUB '34(5) : C3=Q : IF Q>0THEN 1420 : GOSUB '38(48," ") : GOTO 1370 1420 GOSUB '55(6,MAX(C3*1.05,D4)) : C4=Q : IF C4=0THEN 1370 : GOSUB '43(7) : C5=Q : GOSUB '43(8) : C6=Q : C5=C5-INT(Q/2) : GOSUB '43(9) : C6=MOD(C6,2)+Q : GOSUB '55(10,1+C5-INT(C6/4)) : C5=Q : IF (C4*C5)/C2<13465600THEN 1560 : CONVERT C2TO F9$,(#) : GOSUB '38(55,F9$) : GOTO 1370 1560 GOSUB '43(16) : C6=Q : IF C1<>4OR C5+C6<83THEN 1630 1590 GOSUB '38(52," ") : GOSUB '34(250) : IF Q<>31THEN 1590 1620 LOAD T#2,R3$(1)1000, 1630 GOSUB '55(19,0) : GOSUB '55(20,0) : IF C0>0OR C4>65536OR C2>1THEN GOSUB '55(20,3) : ELSE GOSUB '55(20,2) : IF C1=1OR C1=4THEN GOSUB '55(20,0) : IF C1=4THEN GOSUB '55(19,C5) : C6=C6+Q : GOSUB '55(17,C6) : IF C1<>4THEN Q=0 : C7=MIN(C4,INT(1983/C6)) : C8=ABS(INT(-C4/C7)) : C9=MIN(C8,32,INT(240/C6),INT(LOG((C8+1)*(C6-Q+4)))) 1740 C7=INT(1983/C6)*C9-C9 : C8=ABS(INT(-C4/C7)) : IF C8*(C7-INT(1983/C6))<C4THEN 1790 : C9=C9-1 : GOTO 1740 1790 C9=C9*8 : GOSUB '55(21,C9) : GOSUB '55(25,C8) : J2=0 : FOR I=249TO 1992STEP 249 : IF C5*INT(I/C5)/I<=J2THEN 1870 : J1=I/249 : J2=C5*INT(I/C5)/I 1870 NEXT I : GOSUB '55(11,J1) : GOSUB '55(12,INT(J1*249/C5)) : J2=Q : J3=ABS(INT(-ABS(INT(-C4/C8))/J2)) : GOSUB '55(23,J3) : J4=C9 : IF C1=2OR C1=3THEN J4=J4+J3*J1 : GOSUB '55(24,J4) : J5=Q*C8+2*C2 : GOSUB '55(26,J5) : C7=MIN(C7,J2*J3) : GOSUB '55(6,C7*C8) : STR(E$(),234,2)=BIN(C7,2) 2010 D1,D3=0 : FOR I=1TO 8 2030 GOSUB 2580 : IF I>C2THEN 2080 : D2=J5 : D1=D1+J6 : D3=D3+J8 2080 NEXT I : GOSUB '55(59,D3) : GOSUB '55(60,D2) : GOSUB '55(61,D1) : IF D1<>D2OR D2>D3THEN 2310 : Q=32 : IF R3$(1)="IDS2PUI8"OR R3$(1)="IDS2PC03"OR R3$(1)="IDS2PU09"THEN 2150 : IF R3$(1)<>"IDS2MF01"AND E$(10)>"4"THEN 2180 2150 GOSUB '38(58," ") : GOSUB '34(250) : IF Q=16THEN 2220 2180 IF Q=15THEN 1370 : IF Q>0OR C1<2OR C1>3OR R3$(1)="IDS2PU09"THEN 2270 2200 GOSUB '34(3) : IF Q<1OR Q>8THEN 2240 : IF Q>1THEN 2260 : GOTO 1320 2220 IF C2>1THEN 2230 : GOSUB '34(27) : GOSUB 3290 : D1$=E$ : IF D>=1THEN 1050 : GOSUB '38(46," ") : GOTO 2220 2230 GOSUB '38(49," ") : GOTO 2150 2240 GOSUB '38(47," ") : GOTO 2200 2260 IF STR(E9$(1),,4)<>"IDS2"AND STR(E9$(1),,4)<>"ids2"THEN 1320 : GOSUB '38(57," ") : GOTO 2200 2270 IF Q>0AND Q<=C2AND C2>1THEN 2350 : IF Q=32THEN 3060 : PRINT HEX(07); : GOTO 2150 2310 GOSUB '38(50," ") : GOSUB '34(250) : ON Q-14GOTO 1370,2220 : IF Q<=C2AND C2>1THEN 2180 : IF Q=31THEN 1620 : IF Q=0THEN 2200 : GOTO 1370 2340 IF Q>=32THEN 2310 2350 I=Q 2360 GOSUB '34(I*4+23) : GOSUB 2580 : IF J9=0THEN 2360 2390 GOSUB '34(I*4+26) : ON C2GOTO 2030 : IF Q<=J8THEN 2440 : GOSUB '38(51," ") : GOTO 2390 2440 IF Q>=J7AND MOD(Q-J7,C8*J1)=0THEN 2010 : F0$="Must be" : $PACK(F=HEX(1006))STR(F0$,LEN(F0$)+1)FROMJ7 : STR(F0$,LEN(F0$)+1)=", or" : $PACK(F=HEX(1006))STR(F0$,LEN(F0$)+1)FROMJ7 : STR(F0$,LEN(F0$)+2)="+ a mult. of" : $PACK(F=HEX(1006))STR(F0$,LEN(F0$)+1)FROMC8*J1 : F0$=F0$&" (try" 2520 $PACK(F=HEX(1006))STR(F0$,LEN(F0$)+1)FROMMAX(J7,C8*J1*INT((Q-J7)/C8/J1)+J 7) : F0$=F0$&" or" : $PACK(F=HEX(1006))STR(F0$,LEN(F0$)+1)FROMMAX(J7+C8*J1,C8*J1*(INT((Q-J7)/C 8/J1)+1)+J7) : F0$=F0$&")" : GOSUB '35(F0$) : GOTO 2390 2580 J9=1 : J6,J7,J8=0 : IF I>C2THEN GOSUB '45(I*4+23," ") : GOSUB '37(I*4+23) : E8$=E$ : IF E$<>" "THEN 2710 : IF I<=C2THEN GOSUB '45(I*4+23,"???") : E8$=E$ : GOSUB '45(I*4+24," ") : IF I>C2THEN GOSUB '45(I*4+25," ") : GOSUB '45(I*4+26," ") : J8=0 : GOTO 2840 2710 IF POS("3BD"=E$)=0OR VER(E$,"X##")<3THEN 2980 : GOSUB 3290 : IF D=0THEN 3000 : FOR D9=1TO C2 : GOSUB '43(D9*4+23) : IF E$=E8$AND D9<>ITHEN 3040 : NEXT D9 : GOSUB '39(E9$(1),D) : J6=N : ON Q+3GOTO 2970,2970,2800,2970 : GOSUB '55(I*4+24,M-A+1) : J8=Q : GOSUB '43(I*4+26) : IF E$=" "THEN GOSUB '55(I*4+26,J6) : GOTO 2840 2800 DATA LOAD BA T#P,(0)E4$() : GOSUB '55(I*4+24,VAL(STR(E4$(),5),2)-VAL(STR(E4$(),3),2)) : J6=0 : J8=Q 2840 IF I>1THEN 2870 : IF C2=1THEN GOSUB '55(I*4+25,J5) : ELSE GOSUB '55(I*4+25,2+C8*C9) : GOTO 2890 2870 IF I>C2THEN 3020 : GOSUB '55(I*4+25,2+C8*J1) 2890 J7=Q : GOSUB '43(I*4+26) : IF C2>1THEN IF J6=0AND Q<>0THEN J6=Q : IF J6=0AND C2=1THEN J6=J7 : IF J6>J7AND C2=1THEN J6=J7 : IF E8$="???"THEN GOSUB '55(I*4+26,0) : ELSE IF C2=1THEN GOSUB '55(I*4+26,MIN(J7,J8)) : GOSUB '43(I*4+26) : J6=Q : RETURN 2970 F0$="File "&STR(E9$(1),,8) : IF Q<0THEN F0$=F0$&" is scratched on disk "&E8$ : ELSE F0$=F0$&" is a program file on disk "&E8$ : GOTO 3010 2980 IF E8$="???"THEN 3020 : F0$=E8$&" is not a valid disk address" : GOTO 3010 3000 F0$="Disk "&E8$&" is not a currently selected peripheral device" 3010 GOSUB '35(F0$) 3020 J9=0 : RETURN 3040 F0$="Disk "&E8$&" is selected for another volume" : GOTO 3010 3060 FOR I=1TO C2 : ON IGOSUB 2580 : X=I*4+23 : GOSUB '43(X) : IF E$=" "THEN 3270 : GOSUB 3290 : IF D=0THEN 3270 : GOSUB '43(X+3) : IF Q<2THEN 3270 : LIMITS T#D,E9$(1),A,B,C,X : IF X=0THEN DATA SAVE DC OPEN T#D,(Q)E9$(1) : ELSE DATA LOAD DC OPEN T#D,E9$(1) : DSKIP #D,Q-2S : DATA SAVE DC #D,END : NEXT I : STR(E3$(),,498)=STR(E$(),,498) : IF C1>4THEN MAT REDIM E3$(6)83 : ELSE MAT REDIM E3$(24)83 : E$=E9$(1)OR ALL(20) : GOSUB '39(E$,5) 3240 DATA SAVE DA T#P,(A)E3$() : MAT REDIM E3$(249)8 : LOAD T#2,"IDS2PF12"1000, 3270 GOSUB '38(59," ") : GOTO 1620 3290 MAT SEARCHE0$()<,45>,=STR(E$,,3)TO F9$STEP 3 : D=INT((VAL(F9$,2)+2)/3) : RETURN 3699 ON ERRORE1$,E2$GOTO 3700 3700 DEFFN'31 : E$="IDS2PF11" : IF E5$<"Y"THEN LOAD T#2,"IDS2PER1"1000, : STOP "ERROR"