Listing of file='ISS.110U' on disk='vmedia/701-2423D.wvd.zip'
# Sector 609, program filename = 'ISS.110U' 0010 REM ISS.110U, RELEASE 5-1, (11/07/79) - COPYRIGHT WANG LABS. INC. 0069 DIM I1$3,Z$(16),Z1$(16)10,Z2$(16)2,T$1,N$8,A$16,B$(16) 0120 % THIS MUST BE STATEMENT 120 0250 S1$="ISS.200SISS.254SISS.050SISS.229S" : LOAD DC T#0,<LEN(S1$)/8>S1$10,0BEG 290 0290 PRINT HEX(03) : PRINT AT(4,16);"ALTER DISK INDEX";" (STATION # ";S2;")" : GOSUB '40("ENTER DISK ADDRESS") : I1$=Z1$ : SELECT #1<I1$> : PRINT AT(7,10);"INPUT ADDRESS = ";I1$ 0400 PRINT AT(1,0);"MOUNT INPUT DISK" : GOSUB '254 : DATA LOAD BA T#1,(0)Z$() : ERRORGOTO 400 0470 O1=VAL(STR(Z$(),2,1)) : O2=VAL(STR(Z$(),5,2),2)-1 : O3=VAL(STR(Z$(),3,2),2)-1 : PRINT HEX(03);AT(2,S0/2-10);"DISK ADDRESS - ";I1$; : PRINT AT(1,MAX(S0-23,41));"INDEX SECTORS - ";O1; : PRINT AT(2,MAX(S0-23,41));"END CAT. AREA - ";O2; : PRINT AT(3,MAX(S0-23,41));"CURRENT END - ";O3; 0560 PRINT AT(4,4);"FILE NAME";TAB(S0/3);"START";TAB(S0/3+S0/6);"END ";TAB(2* S0/3);"STATUS"; : PRINT AT(5,4);"----------";TAB(S0/3);"-----";TAB(S0/3+S0/6);"-----";TAB(2 *S0/3);"------"; : I=1 : O=0 0630 INIT(20)Z$(),Z1$(),Z2$() : DATA LOAD BA T#1,(O)Z$() : IF O=0THEN L=2 : ELSE L=1 : PRINT AT(3,0,21);"INDEX SECTOR - ";O; : FOR K=LTO 16 : IF STR(Z$(K),1,1)=HEX(00)THEN 820 : IF STR(Z$(K),1,1)=HEX(10)THEN Z2$(K)="A" : IF STR(Z$(K),1,1)=HEX(11)THEN Z2$(K)="S" : IF STR(Z$(K),1,1)=HEX(21)THEN STR(Z$(K),9,8)=ALL(" ") : ELSE GOTO 780 : Z1$(K)="DEAD SLOT" : Z2$(K)=ALL(" ") 0770 GOTO 820 0780 IF STR(Z$(K),2,1)=HEX(80)THEN STR(Z2$(K),2)="P" : ELSE STR(Z2$(K),2)="D" : CONVERT VAL(STR(Z$(K),3,2),2)TO STR(Z1$(K),1,5),(#####) : CONVERT VAL(STR(Z$(K),5,2),2)TO STR(Z1$(K),6,5),(#####) 0820 NEXT K 0890 IF I>=5THEN 950 : FOR K=0TO 5-I : PRINT AT(6+K,0,12);AT(6+K,S0/3,2*S0/3); : NEXT K 0950 IF I<6THEN E1=6-I : ELSE E1=0 : PRINT HEX(06); : M=16 : FOR J=I-5TO MIN(I+3,M) : IF J<=0THEN 1110 : PRINT AT(MAX(6,5+E1),0,2);J;AT(MAX(6,5+E1),4,8);STR(Z$(J),9,8);AT(MAX(6,5 +E1),S0/3,4); : PRINT STR(Z1$(J),1,5);AT(MAX(6,5+E1),S0/2,4);STR(Z1$(J),6,5);AT(MAX(6,5+E 1),2*S0/3,2);Z2$(J); : IF I=1THEN PRINT AT(6,0,4*S0); : IF E1=5AND J=16THEN PRINT AT(12,0,); : ELSE GOTO 1100 : J=MIN(I+3,M) 1100 E1=E1+1 1110 NEXT J : PRINT AT(5+E1,0,); : PRINT AT(10,14);"<====>";AT(10,4);HEX(05); : IF A$=" "THEN 1190 : RETURN 1190 KEYIN A$,,1230 : PRINT HEX(07); : GOTO 1190 1230 IF A$=HEX(1F)THEN GOSUB '31 : ON VAL(A$)-19GOTO 1360,,,1410,,,,1460,1510,1560,1610 : ON VAL(A$)+1GOTO 2030,2160,2670,3230,1700,,,1790,,,,1830,1870,1910,1950 : PRINT HEX(07); : GOTO 1190 1360 O=O1-1 : I=1 : GOSUB 630 : GOTO 1190 1410 O=0 : I=1 : GOSUB 630 : GOTO 1190 1460 IF O+5>O1-1THEN O=O1-1 : ELSE O=O+5 : I=1 : GOSUB 630 : GOTO 1190 1510 IF O+1>O1-1THEN O=O1-1 : ELSE O=O+1 : I=1 : GOSUB 630 : GOTO 1190 1560 IF O-1<0THEN O=0 : ELSE O=O-1 : I=1 : GOSUB 630 : GOTO 1190 1610 IF O-5<0THEN O=0 : ELSE O=O-5 : I=1 : GOSUB 630 : GOTO 1190 1700 A1$=ALL(00) : MAT SEARCHZ$(),=STR(A1$)TO STR(A1$,,2)STEP 16 : I=(VAL(A1$,2)+15)/16-1 : IF I>0THEN 1760 : IF I<0THEN I=16 : IF I=0THEN I=1 1760 GOSUB 890 : GOTO 1190 1790 I=1 : GOSUB 890 : GOTO 1190 1830 IF I+5>16THEN I=16 : ELSE I=I+5 : GOSUB 890 : GOTO 1190 1870 IF I+1<=16THEN I=I+1 : ELSE I=16 : GOSUB 890 : GOTO 1190 1910 IF I-1<1THEN I=1 : ELSE I=I-1 : GOSUB 890 : GOTO 1190 1950 IF I-5<1THEN I=1 : ELSE I=I-5 : GOSUB 890 : GOTO 1190 2030 IF STR(Z$(I),1,1)<HEX(10)OR STR(Z$(I),1,1)>HEX(11)THEN 2120 : XOR (STR(Z$(I),1,1),01) : GOSUB 3400 : GOSUB 630 : GOTO 1190 2120 PRINT HEX(07); : GOTO 1190 2160 IF STR(Z$(I),1,1)<HEX(10)OR STR(Z$(I),1,1)>HEX(11)THEN 2570 2180 N$=ALL(20) : PRINT AT(0,0);"ENTER NEW NAME";AT(1,0,9);AT(1,0); : LINPUT N$ 2210 PRINT AT(0,0,15);AT(1,1,8);AT(2,0,21); : IF N$="0"THEN PRINT AT(10,4); : ELSE GOTO 2250 : GOTO 1190 2250 PRINT HEX(06); : GOSUB '229(1,N$) : IF R<>0THEN 2600 : LIMITS T#1,STR(Z$(I),9,8),B,A,C : DATA LOAD BA T#1,(A)B$() : T$=STR(Z$(I),2,1) : SCRATCH T#1,STR(Z$(I),9,8) : DATA SAVE DC OPEN T#1,STR(Z$(I),9,8),N$ : ERRORGOTO 2630 2390 IF STR(B$(),4,4)=HEX(FD4D5558)THEN STR(B$(),9,8)=STR(N$) : DATA SAVE BA T#1,(A)B$() : IF STR(Z2$(I),2)="D"THEN 2470 : Z$()=HEX(40)&STR(N$)&HEX(FD) : DATA SAVE BA T#1,(B)Z$() 2470 DATA LOAD BA T#1,(R3)Z$() : STR(Z$(R6),2,1)=T$ : O=R3 : GOSUB 3400 : I=R6 : GOSUB 630 : GOTO 1190 2570 PRINT HEX(07); : GOTO 1190 2600 PRINT HEX(0507);AT(3,0,21);"NAME ALREADY ON INDEX"; : GOTO 2180 2630 PRINT HEX(0507);AT(2,0);"CATALOGUE FULL"; : GOTO 1190 2670 IF O3=O1-1THEN PRINT HEX(07);AT(1,0,38);"EMPTY CATALOGUE"; : ELSE GOTO 2710 : GOTO 1190 2710 A$=ALL(00) : FOR J=0TO O1-1 : DATA LOAD BA T#1,(J)Z$() : IF J=0THEN O6=17 : ELSE O6=1 : MAT SEARCHSTR(Z$(),O6,16),=STR(A$)TO B$STEP 16 : IF VAL(B$,2)=0THEN O5=17 : ELSE O5=INT((VAL(B$,2)+15)/16) 2800 IF O5<=1THEN 2930 : IF STR(Z$(O5-1),1,1)=HEX(21)THEN O5=O5-1 : ELSE GOTO 2850 : GOTO 2800 2850 IF J=0AND O5=2THEN 2930 : IF VAL(STR(Z$(O5-1),5,2),2)<>O3THEN O5=O5-1 : ELSE GOTO 2890 : GOTO 2800 2890 O4=VAL(STR(Z$(O5-1),3,2),2) : I=O5-1 : O=J : J=O1-1 2930 NEXT J : GOSUB 630 2970 A$=" " : PRINT AT(1,0);"DO YOU WANT TO REMOVE THIS FILE? (Y/N) ";AT(2,0); : LINPUT A$ : IF A$<>"Y"AND A$<>"N"THEN PRINT HEX(07); : ELSE GOTO 3020 : GOTO 2970 3020 PRINT AT(1,0,38);AT(2,1,1); : IF A$="N"THEN PRINT AT(10,4); : ELSE GOTO 3070 : GOTO 1190 3070 Z$(I)=ALL(00) : GOSUB 3400 : DATA LOAD BA T#1,(0)Z$() : STR(Z$(1),3,2)=BIN(O4,2) : O=0 : GOSUB 3400 : A$=" " : GOTO 470 3220 PRINT AT(2,0,13);HEX(07);"INACTIVE NAME" 3230 N$=ALL(20) : PRINT AT(0,0,15);"ENTER FILE NAME";AT(1,0,9); : LINPUT N$ : LIMITS T#1,N$,A,B,C,D : IF N$="0"THEN 2210 : IF D=0THEN 3220 : ELSE PRINT AT(0,0,15);AT(1,0,9);AT(2,0,13);HEX(06) : GOSUB '229(1,N$) : O=R3 : I=R6 : GOSUB 630 : GOTO 1190 3400 DATA SAVE BA T#1,(O)Z$() : RETURN 3450 DEFFN'31 : PRINT HEX(03) : RETURN CLEAR ALL 3480 LOAD DC T#0,"ISS.100M" : ERRORGOTO 3490 3490 PRINT HEX(010A);"MOUNT ISS DISK AT ADDRESS ";S$ : GOSUB '254 : GOTO 3480