image of READY prompt

Wang2200.org

Listing of file='3277TERM' on disk='vmedia/bsc_3271_rel_1.14.04.wvd.zip'

# Sector 165, program filename = '3277TERM'
0010 REM 3277TERM 12/31/85 --  Wang 2200/3277 Terminal code
0020 COM N,K0,N1,R1$(24)1
   : COM M0,R2$(80)1,U$(16),H0$2,L$1,Q1$(80)1,V$(16)
   : COM L,M,A1$1,C$1,C$(80)1,H8$1,K$1,B1$1
   : COM M$2,M1$2,I,K1$1,J,F$1,F,Q$(24)80
   : COM I$(10)1,I$10,P$(24)80,A,B,C,B1,D,V,W,V1,A2,E
   : DIM N9,P,P1,P$8
   : DIM L$(1920)1,O0$15,O$(54)2,A0$1,C9$(16)16
   : SELECT #4005
0075 $PSTAT="3277TERM"
   : GOTO 9020
0085 ON AGOTO 725
0100 PRINT HEX(020402020E);AT(23,0);" LINE DOWN ";HEX(0F);
0110 IF @C$=" "OR STR(@A$,40,1)="L"THEN 9430
   : IF STR(@A$,40,1)<>"A"THEN 110
   : GOTO 1880
0710 KEYIN K$,720,7570
   : $BREAK
0720 IF STR(@A$,40,1)<>"A"THEN GOSUB 100
   : IF STR(@D$(N),2)=HEX(00)THEN 9420
0725 B$=@T$(N)
   : IF B$=HEX(00)AND L$=" "THEN 770
   : IF B$<HEX(11)THEN 710
0750 ON VAL(B$)-16GOTO 7000,7510,7590,7360
0770 IF I0=1THEN 980
   : KEYIN K$,800,940
   : W=MIN(33,W+.1)
   : $BREAKW
   : GOTO 720
0800 IF K$=HEX(FF)THEN GOSUB 970
   : C$=K$
   : $TRAN(K$,C1$())
   : W=.1
   : IF K$>HEX(1F)THEN 1080
   : ON VAL(K$)GOTO 1840,2010,3750,5020,3460,2020,3080,3920
   : STOP "Invalid translation  see K$ and C$"
0940 IF E=0THEN 943
   : E=0
   : IF K$<HEX(A0)THEN 943
   : AND (K$,7F)
   : GOTO 800
0943 C$=K$
   : $TRAN(K$,F1$())R
   : W=.1
   : ON VAL(K$)GOTO 1840,3300,3750,1840,3430,9510,8510,720,6140,6420,5340,4702
     ,2000,2050,2010,2040,3930,1850,1840,3460,5020,3920
   : GOTO 1840
0960 GOSUB 1880
   : GOTO 720
0970 KEYIN K$,974,972
0972 E=1
   : K$=HEX(60)
0974 RETURN
0980 KEYIN K$,1000,1030
   : K0=K0+1
   : IF K0<21THEN 980
   : K0=0
0985 IF STR(@A$,40,1)<>"A"THEN GOSUB 100
   : B$=@T$(N)
   : IF B$=HEX(00)THEN 980
   : IF B$<HEX(11)THEN 985
   : GOTO 750
1000 IF K$=HEX(FF)THEN GOSUB 970
   : IF L$="I"THEN 1005
   : IF K$<HEX(20)THEN 1010
   : IF K$<HEX(80)THEN 4280
   : GOTO 980
1005 $GIO#4(4007,I$)
   : GOTO 980
1010 IF K$=HEX(08)THEN 4640
   : GOTO 980
1030 C$=K$
   : IF E=0THEN 1036
   : E=0
   : IF K$<HEX(A0)THEN 1036
   : AND (K$,7F)
   : GOTO 1000
1036 $TRAN(C$,F1$())R
   : ON VAL(C$)-2GOTO 3750,,,,,7945
   : GOTO 980
1080 IF STR(P$(),C,1)>=H8$OR F$>=HEX(A0)THEN 1840
   : IF F$<HEX(90)THEN 1150
   : ON N9GOTO 1150
   : IF POS("0123456789-."=K$)=0THEN 1840
1150 STR(P$(),C,1),K1$=K$
   : IF F$<H8$THEN 1225
   : F$=STR(P$(),F,1)
   : AND (F$,0C)
   : IF F$=HEX(0C)THEN K$=" "
   : F$=STR(P$(),F,1)
   : IF F$<H8$THEN 1225
   : OR (F$,01)
   : STR(P$(),F,1)=F$
1225 GOSUB 3010
   : C=C+1
   : J=J+1
   : IF J>80THEN GOSUB 1420
   : IF K1$=HEX(1C)THEN IF K$=HEX(2A)THEN 1300
   : K1$=STR(P$(),C,1)
   : IF K1$<HEX(80)THEN 720
   : C$=K1$AND "0"
   : IF C$<>"0"THEN 1310
1300 F=C
   : IF F=PTHEN F=0
   : F=POS(STR(P$(),F+1)>7F)
   : IF F=0THEN F=POS(P$()>7F)
   : ELSE F=F+C
   : K1$=STR(P$(),F,1)
   : C=F
   : C$=K1$AND HEX(20)
   : IF C$=HEX(20)THEN 1300
1310 F=C
   : IF F=PTHEN F=0
   : K1$=STR(P$(),F+1)
   : GOSUB 2850
   : GOSUB 1970
   : GOTO 720
1420 J=1
   : I=I+1
   : IF I>24THEN 1500
   : $GIO#4(400D400A,I$)
   : RETURN
1500 C,I=1
   : $GIO#4(4001,I$)
   : RETURN
1570 IF I0=1THEN 1750
   : K1$=STR(P$(),C,1)
   : F=1
   : F$=P$(1)
   : AND (F$,BF)
   : MAT COPY -P$()<1,C>TO Q$()<1,C>
   : MAT SEARCHQ$()<1,C>,>=H8$TO M$
   : IF M$=H0$THEN 1700
   : F=C+1
   : GOTO 1730
1700 A=P-C
   : MAT COPY -P$()<C+1,A>TO Q$()<1,A>
   : MAT SEARCHQ$()<1,A>,>=H8$TO M$
   : IF M$=H0$THEN 720
   : F=P1
1730 F=F-VAL(M$,2)
   : F$=STR(P$(),F,1)
   : AND (F$,BF)
1750 ON I0+1GOTO 720,980
   : GOTO 720
1840 $GIO#4(4007,I$)
   : L$="I"
   : GOSUB 1963
   : GOTO 720
1850 IF V=0THEN V=1
   : ELSE V=0
   : PRINT HEX(020402020E);AT(23,0);" ID = ";N$;HEX(0F01);
   : IF V=0THEN 960
   : GOSUB 1970
   : GOTO 720
1880 $GIO#4(40064001,I$)
   : B,B1=0
   : IF V1=1THEN PRINT HEX(03)
   : GOSUB '106(1,1920)
   : $GIO#4(4005)
1963 IF L$="I"AND I0<>1THEN PRINT AT(23,62);HEX(020402020E06);"INPUT INHIBITED
     .";HEX(0F0105)
1970 $GIO#4(A000,I$)R1$()<1,I>
   : $GIO#4(A000,I$)R2$()<1,J>
   : RETURN
1980 B=POS(STR(P$(),C)>7F)
   : IF B<>0THEN RETURN
   : B=POS(STR(P$(),,C)>7F)
   : IF B<>0THEN RETURN
   : B=1921-C
   : RETURN
2000 C=C-79
2010 C=C-1
   : IF C<1THEN C=P+C
   : GOTO 2060
2020 C=1
   : GOTO 2060
2040 C=C+79
2050 C=C+1
   : IF C>PTHEN C=C-P
2060 I=INT((C-1)/80)+1
   : J=MOD(C-1,80)+1
   : IF POS(P$()>=H8$)=0THEN 2180
   : F=POS(-STR(P$(),1,C)>=H8$)
   : IF F=0THEN F=POS(-STR(P$(),1,P)>=H8$)
   : F$=STR(P$(),F,1)
   : AND (F$,BF)
2180 GOSUB 1970
   : GOTO 720
2570 F=C
   : IF STR(P$(),F,1)>=H8$THEN F=C-1
2590 IF F=PTHEN 2740
   : A=P-F
   : MAT COPY P$()<F+1,A>TO Q$()<1,A>
   : $TRAN(Q$()<1,A>,U$())
   : MAT SEARCHQ$()<1,A>,=H8$TO M$
   : MAT SEARCHQ$()<1,A>,=HEX(82)TO M1$
   : IF M$=H0$AND M1$=H0$THEN 2740
   : IF M1$=H0$THEN 2650
   : IF M$>M1$OR M$=H0$THEN M$=M1$
2650 F=F+VAL(M$,2)
   : IF F=PTHEN 2910
   : K1$=STR(P$(),F+1,1)
   : IF K1$>=H8$THEN 2590
   : GOTO 2850
2740 F=0
   : MAT COPY P$()<1,C>TO Q$()<1,C>
   : $TRAN(Q$()<1,C>,U$())
2770 MAT SEARCHQ$()<F+1,C-F>,=H8$TO M$
   : MAT SEARCHQ$()<F+1,C-F>,=HEX(82)TO M1$
   : IF M$=H0$AND M1$=H0$THEN 2900
   : IF M1$=H0$THEN 2790
   : IF M$>M1$OR M$=H0$THEN M$=M1$
2790 F=F+VAL(M$,2)
   : IF F=PTHEN 2970
   : IF F>=CTHEN 2900
   : K1$=STR(P$(),F+1,1)
   : IF K1$>=H8$THEN 2770
2850 C=F+1
   : I=INT((C-1)/80)+1
   : J=MOD(C-1,80)+1
   : IF F=0THEN F=1
2855 F$=STR(P$(),F,1)
   : AND (F$,BF)
   : RETURN
2900 F=1
   : F$=P$(1)
   : AND (F$,BF)
   : A=1919
   : MAT COPY P$()<1,A>TO Q$()<1,A>
   : $TRAN(Q$()<1,A>,U$())
   : B=POS(STR(Q$(),1,A)=HEX(81))
   : IF B=0THEN 2910
   : K1$=STR(P$(),B,1)
   : RETURN
2910 K1$=P$(1)
   : IF K1$>=H8$THEN 2740
   : C,I,J=1
   : GOTO 2855
2970 F$=STR(P$(),P,1)
   : AND (F$,BF)
   : GOTO 2910
2981 $TRAN(Q1$(),V$())
   : B=POS(STR(Q1$())=HEX(82))
   : IF B=0THEN RETURN
   : IF B>=80THEN RETURN
2983 B1=POS(STR(Q1$(),B+1,80-B)>=HEX(80))
   : IF B1=0THEN B1=80-B
   : INIT(20)STR(C$(),B+1,B1)
   : D=B+B1
   : IF D>=80THEN RETURN
   : B=POS(STR(Q1$(),D,80-D)=HEX(82))
   : IF B=0THEN RETURN
   : B=B+D-1
   : IF B>=80THEN RETURN
   : GOTO 2983
3010 $TRAN(K$,C8$())
   : IF F$<HEX(80)THEN 3015
   : AND (F$,08)
   : IF F$<>HEX(08)THEN 3015
   : F$=STR(P$(),F,1)
   : AND (F$,04)
   : IF F$=HEX(04)THEN 3015
   : $GIO#4(HEX(4002400440024000400EA000400F),I$)K$
   : GOTO 3016
3015 $GIO#4(HEX(A000),I$)K$
3016 F$=STR(P$(),F,1)
   : RETURN
3080 IF F$>=H8$THEN 3280
   : C=C-J+81
   : IF C>PTHEN 3210
   : J=1
   : I=I+1
   : GOTO 3310
3210 C,I,J=1
   : GOTO 3310
3280 C=C-J+79
3300 GOSUB 2570
3310 GOSUB 1970
   : GOTO 720
3430 N9=-N9
   : GOTO 720
3460 C$=HEX(81)
   : C,I,J,F=1
   : INIT(00)P$(),K1$,F$
   : PRINT HEX(03);
3750 A1$=C$
   : $TRAN(A1$,F2$)R
   : L$="I"
   : PRINT HEX(020402020E06);AT(23,62);"INPUT INHIBITED.";HEX(0F0105)
   : @T$(N)=HEX(02)
   : ON I0+1GOTO 720,980
   : GOTO 720
3920 K$=HEX(1E)
   : GOTO 1080
3930 K$=HEX(1C)
   : GOTO 1080
4280 IF F$<HEX(90)THEN 4286
   : ON N9GOTO 4286
   : IF POS("0123456789-"=K$)<>0THEN 4286
   : GOTO 4287
4286 IF STR(P$(),C+L-1,1)=HEX(00)OR I2=1THEN 4288
4287 I2=0
   : $GIO#4(4007,I$)
   : L$="I"
   : PRINT HEX(020402020E06);AT(23,62);"INPUT INHIBITED.";HEX(0F05);
   : GOSUB 1970
   : GOTO 980
4288 K1$=K$
   : STR(P$(),C,1)=K1$
   : STR(P$(),F,1)=F$
   : GOSUB 3010
   : F$=STR(P$(),F,1)
   : L=L-1
   : C=C+1
   : IF C<P1THEN 4330
   : J=0
   : C,I=1
   : $GIOHOME#4(4001,I$)
4330 J=J+1
   : IF J<81THEN 4360
   : J=1
   : I=I+1
   : $GIOLF#4(400A,I$)
   : IF L<0THEN L=0
4360 IF L=1AND STR(P$(),C,1)<>HEX(00)THEN 4287
   : ON L+1GOTO 4625,4420
4380 IF STR(P$(),C,1)<>HEX(00)THEN 4381
   : A2=1
   : GOTO 4382
4381 IF STR(P$(),C+L-1,1)<>HEX(00)THEN 4287
4382 IF A2=1AND STR(P$(),C,1)<>HEX(00)THEN 4702
   : IF M<CTHEN 4570
   : IF A2=1THEN 4420
   : MAT COPY Q$()<1,L-1>TO P$()<C+1,L-1>
4420 INIT(5C)STR(P$(),C,1)
   : B,B1=0
   : MAT COPY P$()<C-J+1,80>TO C$()
   : MAT COPY P$()<C-J+1,80>TO Q1$()
   : $TRAN(C$(),C8$())
   : GOSUB 2981
   : GOSUB 1980
   : GOSUB '106(C,B)
   : GOSUB 1970
   : MAT COPY P$()<C-J+1,80>TO Q1$()
   : $GIO#4(A000,I$)R2$()<1,J>
   : IF A2=1THEN I2=0
   : IF I2=1THEN 4287
   : IF STR(P$(),C+L-1,1)<>HEX(00)THEN I2=1
   : GOTO 980
4570 A=P1-C
   : B=L-A
   : IF C=PTHEN 4610
   : MAT COPY Q$()<1,A-1>TO P$()<C+1,A-1>
4610 MAT COPY Q$()<A,B-1>TO P$()<1,B-1>
   : GOTO 4420
4625 M0=0
   : C=C-1
   : IF J<>1THEN 4626
   : I=I-1
   : J=81
4626 J=J-1
   : GOTO 4287
4640 IF C=M0THEN 4675
   : $GIO#4(4008,I$)
   : C=C-1
   : J=J-1
   : L=L+1
   : IF J>0THEN 4380
   : J=80
   : I=I-1
   : $GIO#4(400C,I$)
   : IF I>0THEN 4380
   : I=24
   : C=P
   : GOTO 4380
4675 $GIO#4(4007,I$)
   : GOTO 980
4702 C$=F$
   : $TRAN(C$,U$())
   : I2,A2=0
   : I0=1
   : MAT COPY P$()<1841,80>TO C$()
   : $TRAN(C$(),C8$())
   : PRINT AT(23,0);HEX(020400040E);
   : $GIO#4(HEX(A000400F4001),I$)C$()
   : IF C$=HEX(81)THEN 1840
   : IF C$<H8$THEN 4945
   : IF C$<>HEX(82)THEN 4745
   : I0=0
   : GOTO 1840
4745 IF K1$>=H8$THEN 1840
   : OR (F$,01)
   : STR(P$(),F,1)=F$
   : M0=C
   : MAT COPY P$()<C,P1-C>TO Q$()<1,P1-C>
   : IF C=1THEN 4850
   : MAT COPY P$()<1,C-1>TO Q$()<P+2-C,C-1>
4850 L=P
   : IF C$<H8$THEN 4380
   : MAT SEARCHQ$(),>=H8$TO M$
   : IF M$=H0$THEN 4380
   : L=VAL(M$,2)-1
   : M=M0+L-1
   : IF M<=PTHEN 4380
   : M=M-P
   : GOTO 4380
4945 IF C=PTHEN 4675
   : M0=C
   : M=P-1
   : L=P-C
   : MAT COPY P$()<C,L>TO Q$()<1,L>
   : GOTO 4380
5020 IF C=1THEN 5040
   : MAT COPY -P$()<1,C-1>TO Q$()<1,C-1>
5040 MAT COPY -P$()<C,P1-C>TO Q$()<C,P1-C>
   : $TRAN(Q$(),U$())
   : B=1
5070 MAT SEARCHQ$()<B+1,P-B>,=H8$TO M$
   : MAT SEARCHQ$()<B+1,P-B>,=HEX(82)TO M1$
   : IF M$=H0$AND M1$=H0$THEN 5270
   : IF M1$=H0$THEN 5090
   : IF M$>M1$OR M$=H0$THEN M$=M1$
5090 B=B+VAL(M$,2)
   : K1$=STR(Q$(),B-1,1)
   : IF K1$>=H8$THEN 5260
   : C=C-B+1
5130 IF C>0THEN 5160
   : C=C+P
   : GOTO 5130
5160 K1$=STR(P$(),C,1)
   : I=INT((C-1)/80)+1
   : J=C-80*I+80
   : F=C-1
   : IF F<1THEN F=P
   : F$=STR(P$(),F,1)
5230 AND (F$,BF)
   : GOSUB 1970
   : GOTO 720
5260 IF B<PTHEN 5070
5270 C,I,J,F=1
   : K1$,F$=P$(1)
   : GOTO 5230
5340 C$=F$
   : $TRAN(C$,U$())
   : IF C$=HEX(81)THEN 1840
   : IF K1$>=H8$THEN 1840
   : IF C$=HEX(82)THEN 1840
   : IF F$<H8$THEN 5530
   : OR (F$,01)
   : STR(P$(),F,1)=F$
   : MAT SEARCHP$()<C,81-J>,>=H8$TO M$
   : IF M$=H0$THEN 5530
   : B=VAL(M$,2)-1
5450 MAT COPY P$()<C+1,B-1>TO P$()<C,B>
   : C$(1)=HEX(00)
   : MAT COPY C$()<1,1>TO P$()<C+B-1,1>
   : MAT COPY P$()<C-J+1,80>TO C$()
   : MAT COPY P$()<C-J+1,80>TO Q1$()
   : $TRAN(C$(),C8$())
   : GOSUB 2981
   : GOSUB 1980
   : GOSUB '106(C,MIN(B,81-J))
   : GOSUB 1970
   : MAT COPY P$()<C-J+1,80>TO Q1$()
   : $GIO#4(HEX(A000),I$)R2$()<1,J>
   : GOTO 720
5530 B=81-J
   : GOTO 5450
6140 IF K1$>=H8$THEN 1840
   : IF F$>=HEX(A0)THEN 1840
   : INIT(00)Q$(),K1$
   : IF F$<H8$THEN 6360
   : OR (F$,01)
   : STR(P$(),F,1)=F$
   : IF C>=PTHEN 6260
   : MAT SEARCHP$()<C+1,P-C>,>=H8$TO M$
   : IF M$=H0$THEN 6260
   : M=C+VAL(M$,2)-1
   : MAT COPY Q$()TO P$()<C,M-C+1>
6240 GOSUB 1980
   : GOSUB '106(C,B)
   : GOSUB 1970
   : GOTO 720
6260 MAT COPY Q$()TO P$()<C,P1-C>
   : MAT SEARCHP$()<1,C>,>=H8$TO M$
   : IF M$>H0$THEN 6290
   : PRINT HEX(03)
   : STOP "PGM ERROR"
6290 M=VAL(M$,2)-1
   : IF M=0THEN 6240
   : MAT COPY Q$()TO P$()<1,M>
   : GOTO 6240
6360 MAT COPY Q$()TO P$()<C,P1-C>
   : GOTO 960
6420 IF F$<H8$THEN 6910
   : F=0
   : INIT(00)K1$
   : N1=0
6450 IF F=PTHEN 6840
   : MAT SEARCHP$()<F+1,P-F>,>=H8$TO M$
   : IF M$=H0$THEN 6840
   : F=F+VAL(M$,2)
   : F$=STR(P$(),F,1)
   : AND (F$,20)
   : IF F$=HEX(00)THEN 6540
   : IF F<PTHEN 6450
   : GOTO 6840
6540 N1=N1+1
   : IF F=PTHEN 6760
   : MAT SEARCHP$()<F+1,P-F>,>=H8$TO M$
   : IF M$=H0$THEN 6680
   : L=VAL(M$,2)-1
   : IF L=0THEN 6450
   : STR(P$(),F+1,1)=K1$
   : IF L=1THEN 6610
   : MAT COPY P$()<F+1,L-1>TO P$()<F+2,L-1>
6610 AND (STR(P$(),F,1),FE)
   : F$=STR(P$(),F)
   : F=F+L
   : IF F<PTHEN 6450
   : GOTO 6760
6680 L=P-F
   : IF L=0THEN 6760
   : STR(P$(),F+1,1)=K1$
   : IF L=1THEN 6720
   : MAT COPY P$()<F+1,L-1>TO P$()<F+2,L-1>
6720 AND (STR(P$(),F,1),FE)
   : F$=STR(P$(),F)
6760 MAT SEARCHP$(),>=H8$TO M$
   : L=VAL(M$,2)-1
   : IF L=0THEN 6840
   : INIT(00)STR(P$(),1,1)
   : IF L=1THEN 6840
   : MAT COPY P$()TO P$()<2,L-1>
6840 C=P-1
   : GOSUB 2570
   : GOTO 960
6910 B=POS(P$()>HEX(7F))
   : IF B=0THEN 6920
   : F$=STR(P$(),B,1)
   : GOTO 6420
6920 INIT(00)P$(),K1$,F$
   : C,I,J,F=1
   : GOTO 960
7000 L$="I"
   : PRINT HEX(020402020E06);AT(23,62);"INPUT INHIBITED.";HEX(0F0105);
   : STR(A$,2,1)=HEX(20)
   : GOTO 7362
7360 STR(A$,2,1)=A1$
7362 STR(A$,3)=BIN(C-1,2)
   : $OPEN #6
   : $GIO#6(40054210422040004240423040FEA000,A$)P$()
   : $CLOSE#6
   : @T$(N)=HEX(10)
   : GOTO 720
7510 $OPEN #6
   : INIT("A")I$()
   : INIT("A")P$()
   : $BREAK
   : $GIO#6(87008701870487038702C340,I$())P$()
   : ERRORGOTO 7562
7520 $CLOSE#6
   : B=C
   : C=VAL(STR(I$(),3),2)+1
   : I=INT((C-1)/80)+1
   : J=C-80*I+80
   : B=0
   : C$=I$(1)
   : AND (C$,06)
   : IF C$<HEX(04)THEN 7535
   : $GIOBEEP#4(4007,I$)
7535 AND (C$,02)
   : IF C$>HEX(00)THEN L$,A1$=" "
   : @T$(N)=HEX(00)
   : GOSUB 1880
   : GOTO 1570
7562 $CLOSE#6
   : PRINT AT(23,10);HEXOF(B$);" Term.Buffer UPDATE not received  ";
   : @T$(N)=HEX(00)
   : IF Z<9THEN 710
7570 $TRAN(K$,F1$())R
   : IF K$<>HEX(08)THEN 720
   : IF A1$<>" "THEN 7940
7590 L$=" "
   : @T$(N)=HEX(00)
   : GOSUB '106(80*23+1,80)
   : GOSUB 1970
   : GOTO 720
7935 DEFFN'15
   : RETURN CLEAR
7940 L$="I"
   : @T$(N)=HEX(01)
7945 IF STR(P$(),C,1)=HEX(5C)THEN STR(P$(),C,1)=HEX(00)
   : IF M0=0THEN 8010
   : M0=0
   : IF M<CTHEN 7990
   : IF A2=1THEN 8010
   : MAT COPY Q$()TO P$()<C,L>
   : GOTO 8010
7990 MAT COPY Q$()TO P$()<C,P1-C>
   : MAT COPY Q$()<P+2-C,L-P1+C>TO P$()<1,L-P1+C>
8010 GOSUB 1963
   : L$=" "
   : IF I0=0THEN 1570
   : I0=0
   : GOSUB 1980
   : IF I=24THEN 8019
   : GOSUB '106(C,B)
8019 GOSUB '106(80*23+1,80)
   : GOSUB 1970
   : GOTO 1570
8505 DEFFN'31
8510 STR(@D$(N),2)=HEX(00)
   : @T$(N)=HEX(03)
   : GOSUB '99(8,"Terminal Detached from Cluster")
   : STR(@A$,24+N,1),STR(@A$,12+N,1),STR(@A$,38+(3*N),3)=" "
   : GOTO 9450
9020 SELECT @PART"3270UNIV"
   : PRINT HEX(03)
   : IF N=0THEN N=C
   : A$=@D$(N)
   : IF VAL(STR(@A$,12+N))-48<>#PARTTHEN 9420
   : A=0
9040 IF @T$(N)=HEX(00)THEN 9050
   : A=A+1
   : $BREAK
   : IF A<99THEN 9040
   : @T$(N)=HEX(00)
9050 IF N$(5)=" "THEN 9060
   : IF R1$(1)=HEX(01)THEN 9060
   : STR(@D$(N),2)=HEX(80)
   : @T$(N)=HEX(03)
9060 GOSUB 9140
9070 $IF OFF /001,1570
   : KEYIN K$
   : GOTO 9070
9140 C,I,J,F=1
   : V1,V,A2,E=0
   : P=1920
   : P1=P+1
   : F$=P$(1)
   : AND (F$,BF)
   : N9=VAL(STR(@Z$,35))-49
   : N9=-N9
   : INIT(0A)R1$()
   : INIT(01)R1$(1)
   : INIT(09)R2$()
   : INIT(0D)R2$(1)
   : INIT(00)P$(),Q$(),H0$,Q1$()
   : L$="I"
   : GOSUB 1880
   : A1$=HEX(20)
   : H8$=HEX(80)
   : INIT(31)U$(),V$()
   : INIT(81)U$(11),U$(12),U$(15),U$(16)
9276 V$(9),V$(10),V$(11),V$(12),V$(13),V$(14),V$(15),V$(16)=HEX(83838383838383
     838484848482828282)
   : U$(9),U$(10),U$(13),U$(14)=HEX(80808080808080808080808082828282)
9315 O$()=HEX(1B11D0351E13D0171C25E007012019B01CBDE014400D0B0119C01CCEE0134001
     0C011000D014400A42101000D0001C41D0071C21D006400240040280)
   : STR(O$(),LEN(O$())+1)=HEX(1C12E02340001000D03102841C12E02940001000D031028
     81C12E02F40021000D031028C40004000400E1000D0064000)
9317 C9$()=C8$()
   : FOR A=129TO 256
   : STR(C9$(),A,1)=BIN(A-1)
   : NEXT A
   : STR(C9$(),129)=AND ALL(8C)
   : RETURN
9390 DEFFN'99(A,A$)
   : SELECT PRINT 005
   : PRINT HEX(03);BOX(5,79);HEX(0A0A0E);TAB(40-LEN(A$)/2);A$
   : FOR A=ATO 0STEP -1
   : PRINT A;HEX(0C)
   : $GIO(75FF,A$)
   : NEXT A
   : RETURN
9420 GOSUB '99(10,"Terminal has been detached")
   : GOTO 9450
9430 GOSUB '99(35,"Cluster has been reloaded -- Terminal must be reattached")
9450 COM CLEAR A
   : LOAD DC T#0,N$(1)
9505 DEFFN'29
9510 PRINT HEX(03)
   : IF V1=0THEN 9515
   : V1=0
   : PRINT HEX(0305);
   : GOTO 960
9515 V1=1
   : GOSUB 9560
   : GOTO 720
9560 PRINT AT(0,16);"Wang 2200 / 3277 Terminal emulator keyboard layout";AT(1,
     24);"Special function strip layout"
   : A=2
   : GOSUB 9850
   : A=3
   : GOSUB 9840
   : A=5
   : GOSUB 9840
   : A=6
   : GOSUB 9850
   : A=10
   : GOSUB 9850
   : A=11
   : GOSUB 9850
   : A=10
9660 PRINT AT(A-2,20);"Meaning of special keys on typewriter pad";AT(A-1,27);"
     '";STR(C7$(7),2,6);" KEY' is '3277 KEY'"
   : PRINT C7$(1),C7$(2)
   : PRINT AT(2,0);C7$(6),C7$(4)
   : PRINT AT(5,0);C7$(3),C7$(5)
9755 PRINT AT(13,0);"Cluster = ";STR(@Z$,29,2);
   : PRINT AT(23,16);"   This is Terminal = ";#TERM;"  in Partition = ";#PART;
   : A=22
   : PRINT AT(A-1,1);"Station status --    HH T-P *  HH=stream  T=Terminal   P
     =Partition   *=active"
   : PRINT AT(A,0);
   : FOR B=1TO 7
   : PRINT BOX(1,9);"          ";
   : NEXT B
   : PRINT BOX(1,9)
9814 PRINT AT(A,0);
   : FOR A=1TO VAL(STR(@C$,33))-48
   : P$=" "
   : IF STR(@A$,A+12,1)=" "THEN 9816
   : P$=$PSTAT(VAL(STR(@A$,A+12))-48)
   : ERRORA=8
   : GOTO 9818
9816 PRINT " ";STR(@C$,A*3+38,3);STR(@A$,A+24,1);"-";STR(@A$,A+12,1);" ";
9818 IF P$="3277TERM"THEN PRINT "* ";
   : ELSE PRINT "  ";
   : NEXT A
   : PRINT AT(0,0)
   : GOSUB 9860
   : A=0
9822 A=A+1
   : P$=$PSTAT(MIN(A,16))
   : ERRORGOTO 9830
9825 IF P$<>"HostSimu"THEN 9822
   : L$()=$PSTAT(A)
   : PRINT AT(20,0);P$;" Status =";HEXOF(L$(25))
9830 RETURN
9840 PRINT AT(A,0);BOX(1,79)
   : FOR B=0TO 79STEP 5
   : PRINT AT(A,B);BOX(1,0);
   : NEXT B
   : RETURN
9850 PRINT AT(A,0);BOX(1,19);"                    ";BOX(1,19);"
          ";BOX(1,19);"                    ";BOX(1,19);
   : RETURN
9860 PRINT AT(13,15),"Print streams";TAB(47);
   : IF STR(@P$(1),,1)<>" "THEN 9870
   : PRINT "None configured"
   : RETURN
9870 PRINT "Disk usage    Reports received"
   : PRINTUSING 9910,"No.","Device","Addr","Status","File Name","Used","Total"
     ,"Number and Name"
   : PRINT AT(15,0);BOX(1,60)
   : IF STR(@P$(5),24,4)<>"None"THEN 9890
   : PRINTUSING 9910," .","Spooler"," ",STR(@P$(5),24,10)," "," "," "," "
   : GOTO 9900
9890 PRINTUSING 9910," .","Spooler",STR(@P$(5),55,3),STR(@P$(5),24,10),STR(@P$
     (5),66,8),VAL(STR(@P$(5),35),2),VAL(STR(@P$(5),76),2)
9900 FOR A=1TO VAL(STR(@C$,34))-48
   : PRINTUSING 9910,STR(@P$(A),1,2),STR(@P$(A),6,7),STR(@P$(A),15,5),STR(@P$(
     A),24,10),STR(@P$(A),66,8),VAL(STR(@P$(A),44),2),VAL(STR(@P$(A),41),2),ST
     R(@P$(A),47,18)
   : NEXT A
   : RETURN
9910 %###  ######## ##### ############  #########   #####   #####  ###########
     #######
9919 DEFFN'200(A0$)
   : AND (A0$,0C)
   : D0=POS(HEX(04080C)=A0$)
   : IF D0<>2THEN 9979
   : $GIO#4(HEX(4002400440024000400E),I$)
   : RETURN
9931 DEFFN'106(P5,P6)
   : IF P5=1THEN L$()=P$()
   : ELSE L$()=STR(P$(),P5)&STR(P$(),,P5-1)
   : D0=0
   : ON POS(L$()>7F)+1GOTO 9958,9958
   : GOSUB '200(STR(L$(),POS(-L$()>7F),1))
9958 A=INT((P5-1)/80)
   : B=MOD(P5-1,80)
   : PRINT AT(A,B);
   : STR(O0$,11)=BIN(B)&BIN(A)&HEX(51188C)
   : IF D0=3THEN STR(O0$,2,4)=HEX(8C7FA08C)
   : ELSE STR(O0$,2,4)=HEX(007FA08C)
   : $TRAN(STR(L$(),,P6),C9$())
   : B=1
9975 B1=MIN(P6+1-B,80)
   : $GIO#4(O$(),O0$)STR(L$(),B,B1)
   : B=B+80
   : IF @T$(N)>HEX(10)OR B>P6THEN 9979
9976 GOTO 9975
   : ON AGOTO 9976
9979 $GIO#4(HEX(4002400440004000400E),I$)
   : RETURN