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"