image of READY prompt

Wang2200.org

Listing of file='SE.SUBS' on disk='vmedia/701-2720C.wvd.zip'

# Sector 691, program filename = 'SE.SUBS'
3800 REM SE.SUBS, RELEASE 5.12, (01/27/82) SCREEN MANAGEMENT ROUTINES
3802 DIM T1(8),S1$8,S2$,S4$80,S3$(32)2,T1$1,T2$80,T3$(48)3,T$(10)1,S5$,T4$2
3806 DEFFN'125(T1)
   : T9$=HEX(060204)&BIN(INT(ABS(T1/10)))&BIN(MOD(T1,10))&HEX(0E)
   : IF T1<0THEN STR(T9$,5,1)=HEX(0F)
   : PRINT STR(T9$,,6);
   : RETURN
3810 DEFFN'126(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1$(),S0$,S2$,I5,T9,T$())
   : IF S2$=HEX(A5)THEN T1(8)=T1(3)
   : ELSE T1(8)=1
   : $TRAN(T$(),HEX(202E))R
   : I5=MAX(1,I5)
   : T$(5)="5"
   : IF S2$=HEX(A5)THEN 3832
3814 IF T9<0THEN 3816
   : T$(5)="5"
   : IF POS("+-#"=STR(S2$,1,1))>0THEN T$(10)="#"
   : GOSUB '127(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),01,T1$(),T$())
   : IF T9=0THEN 3828
3816 S4$=STR(T1$(),(I5-1)*T1(3)+1,T1(3))
   : T2=I5
   : GOSUB 3868
   : IF S2$=HEX(A6)THEN STR(T$(),,3)="123"
   : GOSUB '130(T0,T1,T1(3),S2$,S4$,S0$," ",T$())
   : IF S<1THEN 3828
   : STR(T1$(),(I5-1)*T1(3)+1,T1(3))=S4$
   : IF S<5THEN 3828
   : IF S<7AND S2$=HEX(A6)THEN 3828
   : IF S<>99THEN 3824
   : IF T$(1)>" "THEN IF T1$<>HEX(08)THEN S=5
   : IF T$(2)>" "THEN IF T1$=HEX(08)THEN S=6
3824 IF S=5THEN I5=I5+1
   : ELSE I5=I5-1
   : IF S2$<>HEX(A6)THEN 3826
   : I5=MOD(I5,T1(6))
   : IF I5=0THEN I5=T1(6)
   : GOTO 3816
3826 IF I5>=1AND I5<=T1(6)THEN 3816
3828 IF T$(7)>" "AND T9<>0THEN GOSUB '127(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),
     01,T1$(),T$())
   : R1,U=S
   : RETURN
3832 T2=I5
   : IF T9<0THEN 3835
   : FOR T2=1TO T1(6)
   : IF STR(T1$(),(T2-1)*I3+1,I3)=" "THEN 3834
   : IF T2=I5THEN T4$=HEX(8B0E)
   : ELSE T4$=HEX(900F)
   : GOSUB 3868
   : GOSUB 3846
3834 NEXT T2
   : T2=I5
   : IF T9=0THEN 3848
3835 IF STR(T1$(),(T2-1)*I3+1,I3)=" "THEN 3836
   : GOSUB 3868
   : STR(T$(),,3)="123"
   : T4$=HEX(8B0E)
   : GOSUB 3846
   : GOSUB '130(T0,T1,1,HEX(A5)," ",S0$," ",T$())
   : IF S<7THEN 3848
   : T4$=HEX(900F)
   : GOSUB 3846
3836 ON POS(HEX(2008)=T1$)GOTO 3838,3840
   : IF I3>0THEN GOSUB 3850
   : GOTO 3835
3838 T2=MOD(T2+1,T1(6))
   : GOTO 3842
3840 T2=MOD(T2-1,T1(6))
3842 IF T2=0THEN T2=T1(6)
   : GOTO 3835
3846 PRINT HEX(06);AT(T0-1,T1-1);HEX(0E0202020F);T4$;
   : IF I3>0THEN PRINT HEX(09);STR(T1$(),(T2-1)*I3+1,I3)
   : RETURN
3848 T0=T2
   : R1=S
   : RETURN
3850 MAT SEARCHT1$(),=T1$TO S3$()STEP I3
   : I1=0
3852 I1=I1+1
   : I=INT((VAL(S3$(I1),2)+I3-1)/I3)
   : IF I=0THEN 3856
   : IF I<=T2THEN 3852
   : T2=I
   : GOTO 3858
3856 I=INT((VAL(S3$(1),2)+I3-1)/I3)
   : IF I>0THEN T2=I
3858 RETURN
3862 DEFFN'127(T1(1),T1(2),T1(3),T1(4),T1(5),T1(6),T1(8),T1$(),T$())
   : IF T1(8)<1OR T1(8)>10THEN T1(8)=1
   : $TRAN(T$(),HEX(202E))R
   : IF T$(7)=" "THEN GOSUB '125(20)
   : ELSE PRINT HEX(0F);
   : SELECT PRINT 205(080)
   : PRINT HEX(0202020F);
   : FOR T2=1TO T1(6)
   : IF T$(3)=" "THEN S4$=STR(T1$(),(T2-1)*T1(3)+1,T1(3))
   : ELSE S4$=" "
3865 IF T$(10)>" "THEN GOSUB 3869
   : IF T$(5)>" "THEN $TRAN(S4$,HEX(8520))R
   : GOSUB 3868
   : PRINT AT(T0-1,T1-1);STR(S4$,,T1(3));
   : NEXT T2
   : PRINT HEX(020402000F);HEX(0202000F);
   : $TRAN(T1$(),HEX(2085))R
   : SELECT PRINT 005(080)
   : RETURN
3868 IF T$(4)>" "THEN T0=INT((T2-1)/T1(4))*T1(8)+T1(1)
   : ELSE T0=MOD((T2-1),T1(4))*T1(8)+T1(1)
   : IF T$(4)>" "THEN T1=MOD((T2-1),T1(4))*T1(5)+T1(2)
   : ELSE T1=INT((T2-1)/T1(4))*T1(5)+T1(2)
   : RETURN
3869 I=POS(S2$=".")
   : IF I=0THEN I=T1(3)
   : I1=POS(S4$>"0")
   : IF I1>0THEN I=MIN(I,I1)
   : IF I>1THEN $TRAN(STR(S4$,,I-1),HEX(2030))R
   : RETURN
3872 DEFFN'128(T1$(),I0,T7,T5)
   : T6=0
   : IF T7<>99THEN 3874
   : T7=40-(LEN(T1$())/2)
   : GOTO 3876
3874 IF I0<>99THEN GOTO 3876
   : IF T1$()>" "AND T7<>99THEN PRINT HEX(07);
   : I0=24
   : T7=01
   : T6=80
   : T=1
3876 GOSUB '125(T5)
   : IF T1$()<>" "THEN STR(T1$(),POS(-T1$()>HEX(20))+1,1)=HEX(AF)
3878 PRINT AT(I0-1,T7-1,T6);
   : IF T1$()=" "THEN GOTO 3880
   : $GIO/005(A000)STR(T1$(),,POS(T1$()=HEX(AF))-1)
   : MAT COPY STR(T1$(),POS(T1$()=HEX(AF))+1)TO T1$()
   : I0=I0+1
   : IF T1$()<>" "THEN GOTO 3878
3880 PRINT HEX(020402000F);
   : RETURN
3884 DEFFN'129(S1$,I8)
   : SELECT PRINT 005(205)
   : R1=0
   : S8=1
   : IF S1$=" "THEN 3890
   : IF S1$="DATA"THEN 3894
   : DATA LOAD DC OPEN T#I8,S1$
   : ERRORE=ERR
   : R1=-2
   : GOTO 3900
3886 DSKIP #I8,1S
   : DATA LOAD DC #I8,S0$()
   : ERRORE=ERR
   : R1=-2
   : GOTO 3900
3890 IF S1$="DATA"THEN 3894
3892 I7=VAL(STR(S0$(),S8))
   : IF I7=0THEN RETURN
   : I9=VAL(STR(S0$(),S8+1))
   : S5=VAL(STR(S0$(),S8+2))
   : T2$=STR(S0$(),S8+3,S5)
   : GOSUB 3902
   : S8=S8+3+S5
   : GOTO 3892
3894 READ I7,I9,T5,T2$
   : ERRORGOTO 3900
3896 IF I7=0THEN RETURN
   : IF T5=99THEN 3898
   : IF T5=0THEN PRINT HEX(0F);
   : ELSE GOSUB '125(T5)
   : GOSUB 3902
   : GOTO 3894
3898 PRINT HEX(06);AT(I7-1,I9-1);BOX(VAL(T2$),VAL(STR(T2$,2)))
   : GOTO 3894
3900 PRINT AT(23,0,80);HEX(020404000E);"WARNING: can't read screen image, pres
     s (-RETURN-)";HEX(0F);
   : KEYIN T1$
   : IF POS(HEX(F050)=T1$)=0THEN 3900
   : RETURN
3902 PRINT HEX(06);AT(I7-1,I9-1);T2$;
   : RETURN
3906 DEFFN'130(I9,I7,I2,S2$,S4$,S0$,T2$,T$())
   : SELECT PRINT 005(255)
   : PRINT HEX(0202020F);
   : T=0
   : S=99
   : I4=1
   : IF S2$=" "THEN S2$="X"
   : S9=POS("+-#"=STR(S2$,,1))
   : IF S9=0THEN 3912
   : GOSUB 3869
   : IF I>0THEN I4=I
3912 IF T2$>" "THEN PRINT HEX(060F);AT(I9-1,MAX(0,I7-2-LEN(T2$)));T2$;
   : PRINT HEX(06020402000F)
3914 $TRAN(STR(S4$,,I2),HEX(8520))R
   : IF T$(3)=" "THEN GOSUB 3952
3918 GOSUB 3954
3920 IF T$(9)=" "THEN PRINT HEX(02050F);
   : I=1
   : KEYIN T1$,,3956
   : I=0
   : IF T$(9)>" "THEN 3956
   : IF T>0THEN GOSUB 3950
   : IF T0$<>" "THEN GOSUB 3948
   : ON POS(HEX(81820D0884E5A1)=T1$)GOTO 3964,3966,3974,3936,3920,3920,3920
   : IF I4<=I2THEN 3922
   : PRINT HEX(07);
   : GOTO 3920
3922 IF S2$=HEX(A6)THEN 3978
   : STR(S4$,I4,1)=T1$
   : $TRAN(S4$,HEX(8020))R
   : IF T$(3)=" "THEN PRINT HEX(0E);STR(S4$,I4,1);HEX(08);
   : ELSE PRINT HEX(0E8B08);
   : IF I4=I2AND T$(1)>" "THEN 3978
   : GOTO 3934
3924 IF I2<I4THEN 3918
   : STR(S4$,I4)=ALL(85)
   : PRINT HEX(0E06);STR(S4$,I4,I2-I4+1);
   : GOTO 3918
3926 IF S2$<>HEX(A6)THEN 3928
   : S4$=HEX(8B)
   : T1$=HEX(20)
   : PRINT HEX(060E8B);
   : GOTO 3978
3928 IF I2<I4THEN 3918
   : MAT COPY -S4$<I4,I2-I4>TO -S4$<I4+1,I2-I4>
   : STR(S4$,I4,1)=HEX(85)
   : IF T$(3)=" "THEN PRINT HEX(0E06);STR(S4$,I4,I2-I4+1);
   : GOTO 3918
3930 IF S2$<>HEX(A6)THEN 3932
   : S4$,T1$=" "
   : PRINT HEX(060E85);
   : GOTO 3978
3932 IF I2<I4THEN 3918
   : MAT COPY S4$<I4+1,I2-I4>TO S4$<I4,I2-I4>
   : STR(S4$,I2,1)=HEX(85)
   : IF T$(3)=" "THEN PRINT HEX(0E06);STR(S4$,I4,I2-I4+1);
   : GOTO 3918
3934 IF POS(HEX(A5A6)=S2$)>0THEN 3920
   : I4=I4+1
   : IF I4<I2+2THEN PRINT HEX(09);
   : I4=MIN(I2+1,I4)
   : GOTO 3920
3936 I4=I4-1
   : IF T$(2)>" "THEN IF I4<1THEN 3978
   : IF I4>0THEN PRINT HEX(08);
   : I4=MAX(1,I4)
   : IF I=1THEN 3920
   : STR(S4$,I4,1)=HEX(85)
   : PRINT HEX(8508);
   : GOTO 3920
3938 PRINT HEX(06070E);AT(23,0,80);" Invalid character in field";
3940 T=1
   : GOTO 3914
3942 PRINT HEX(06070E);AT(23,0,80);" Information required, please enter";
   : GOTO 3940
3944 PRINT HEX(06070E);AT(23,0,80);" Numeric characters only";
   : GOTO 3940
3946 PRINT HEX(06070E);AT(23,0,80);" Number too large";
   : GOTO 3940
3948 SELECT PRINT 005(80)
   : PRINT HEX(06);AT(VAL(STR(T0$,1))-1,VAL(STR(T0$,2))-1,VAL(STR(T0$,3))*VAL(
     STR(T0$,4)));
   : T0$=" "
   : SELECT PRINT 005(255)
3950 PRINT HEX(06);AT(23,0,80);
   : T=0
   : GOSUB 3954
   : RETURN
3952 PRINT HEX(060E);AT(I9-1,I7-1);STR(S4$,,I2);
   : RETURN
3954 PRINT AT(I9-1,I7-2+I4);
   : RETURN
3956 $TRAN(T1$,HEX(42054306))R
   : IF T>0THEN GOSUB 3950
   : IF T0$<>" "THEN GOSUB 3948
   : IF POS(S0$=T1$)>0THEN 3972
   : IF T$(9)>" "THEN 3959
   : IF S2$<>HEX(A6)THEN 3958
   : $TRAN(T1$,HEX(08462045))R
   : ON POS(HEX(0820)=T1$)GOTO 3978,3978
3958 ON POS(HEX(1F7E7F0C0D090A4D4C4A494808)=T1$)GOTO 3964,3974,3976,3934,3936,
     3930,3926,3936,3934,3926,3930,3924,3924
3959 ON POS(HEX(50F0424382)=T1$)GOTO 3962,3964,3968,3970,3966
3960 PRINT HEX(0607020402000E);AT(23,0,80);" Invalid key ignored";
   : S=99
   : T=1
   : GOSUB 3954
   : GOTO 3920
3962 S=-1
   : GOTO 3978
3964 S=0
   : GOTO 3978
3966 IF T$(9)>" "THEN IF POS(S0$="E")=0THEN 3960
   : S=1
   : GOTO 3978
3968 IF POS(S0$="P")=0THEN 3960
   : S=2
   : GOTO 3978
3970 IF POS(S0$="N")=0THEN 3960
   : S=3
   : GOTO 3978
3972 S=4
   : S0=VAL(T1$)
   : IF S0>31THEN 3960
   : GOTO 3978
3974 S=5
   : GOTO 3978
3976 S=6
3978 $TRAN(S4$,HEX(20802085))R
   : IF S<1OR S=2OR S=3OR S=4THEN 3988
   : IF POS(HEX(A5A6)=S2$)>0THEN 3988
   : IF S4$=" "AND T$(6)>" "THEN 3942
   : IF S9=0THEN 3984
   : CONVERT S4$TO I
   : ERRORGOTO 3944
3982 S5$=S2$
   : $TRAN(S5$,HEX(3923))R
   : CONVERT S5$TO J
   : IF ABS(INT(I))>ABS(INT(J))THEN 3946
   : CONVERT ITO S4$,(S2$)
   : GOSUB 3869
   : GOSUB 3952
   : $TRAN(S4$,HEX(2085))R
   : GOTO 3988
3984 IF S4$=" "THEN 3988
   : I4=0
   : FOR I=1TO I2
   : IF STR(S4$,I,1)=" "THEN 3986
   : IF VER(STR(S4$,I,1),STR(S2$,,1))>0THEN 3986
   : I4=I
   : I=I2
3986 NEXT I
   : IF I4>0THEN 3938
3988 SELECT PRINT 005(80)
   : PRINT HEX(020402000F0202000F06)
   : R1,U=S
   : RETURN
3990 % ---------------------------
3992 %S$="SE.SUBS": SCRATCH TS$: SAVE <S>T()S$3800,3999: PRINT HEX(0E);S$;HEX(
     0F);" updated"