image of READY prompt

Wang2200.org

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