Listing of file='QSUBS02' on disk='vmedia/701-2739G.wvd.zip'
# Sector 665, program filename = 'QSUBS02' 3801 DEFFN'162 3836 PRINT HEX(06) : Q2$=" " : Q9(1)=LEN(STR(Q8$()))/LEN(STR(Q8$(1))) : ON POS("12345"=STR(Q1$,2))GOTO 3838,3838,3839,3876,3883 : PRINT AT(0,30);"BAD SCREEN CALL" : Q2$=HEX(82) : RETURN 3838 Q9(4)=Q1 : Q9(5)=0 3839 IF Q1$="02"THEN 3852 : PRINT HEX(0306) : IF Q6(1,1)=0THEN 3846 : FOR Q9=1TO Q6(1,1) : READ Q9$ : ERRORQ9=Q6(1,1) : GOTO 3845 3843 IF STR(Q9$,1,1)<>"*"THEN 3844 : CONVERT STR(Q9$,2,2)TO Q9(4) : PRINT AT(Q6(1,2),Q9(4));STR(Q9$,4,LEN(Q9$)) : Q6(1,2)=Q6(1,2)+1 : Q9(4)=1 : GOTO 3845 3844 PRINT AT(Q6(1,2),39-LEN(Q9$)/2);Q9$ : Q6(1,2)=Q6(1,2)+1 3845 NEXT Q9 3846 IF Q6(2,1)=0THEN 3851 : FOR Q9=1TO Q6(2,1) : READ Q9$ : ERRORQ9=Q6(2,1) : GOTO 3850 3848 IF POS(Q9$="*")<>0THEN 3849 : PRINT AT(Q6(2,2),Q6(3,1)-POS(Q9$="-"));Q9$; : Q6(2,2)=Q6(2,2)+1 : GOTO 3850 3849 IF POS(Q9$="*")=1THEN PRINT AT(Q6(2,2),Q6(3,2)-POS(Q9$="-")+1);STR(Q9$,2, LEN(Q9$)-1) : ELSE PRINT AT(Q6(2,2),Q6(3,1)-POS(Q9$="-"));STR(Q9$,1,POS(Q9$="*")-1);AT( Q6(2,2),Q6(3,2)-(POS(-Q9$="-")-POS(Q9$="*")));STR(Q9$,POS(Q9$="*")+1,(LEN (Q9$)-POS(Q9$="*"))) : Q6(2,2)=Q6(2,2)+1 3850 NEXT Q9 3851 IF STR(Q1$,2,1)="3"THEN 3876 : IF Q=0THEN RETURN 3852 FOR Q9=1TO Q : PRINT AT(Q5(Q9,1),Q5(Q9,2));HEX(2E20);STR(Q7$(Q9),3) : NEXT Q9 : IF STR(Q1$,,1)="0"THEN 3855 : Q2$=HEX(82) : RETURN 3855 PRINT HEX(020402000F) : GOTO 3858 3856 Q9(4)=MOD(Q9(4)-2*POS(HEX(08)=Q2$),Q)+1 3857 PRINT AT(Q5(Q9(5),1),Q5(Q9(5),2));HEX(0F2E20);STR(Q7$(Q9(5)),3) 3858 PRINT AT(Q5(Q9(4),1),Q5(Q9(4),2));HEX(0E8B20);STR(Q7$(Q9(4)),3);HEX(0F);A T(Q5(Q9(4),1),Q5(Q9(4),2)); : Q9(5)=Q9(4) 3860 KEYIN Q2$,,3868 : PRINT HEX(06);AT(22,0,80);AT(23,0,80) : ON POS(HEX(0D2008827E)=STR(Q2$,,1))GOTO 3867,3856,3856,3867 : Q9=Q9(4) 3865 Q9(4)=MOD(Q9(4),Q)+1 : IF Q9=Q9(4)THEN GOTO 3860 : IF STR(Q7$(Q9(4)),3,1)=STR(Q2$,,1)AND Q9(5)<>Q9(4)THEN 3857 : Q6$=STR(Q2$,,1)AND HEX(DF) : IF STR(Q7$(Q9(4)),3,1)=STR(Q6$,,1)AND Q9(5)<>Q9(4)THEN 3857 : Q6$=STR(Q2$,,1)OR HEX(20) : IF STR(Q7$(Q9(4)),3,1)=STR(Q6$,,1)AND Q9(5)<>Q9(4)THEN 3857 : GOTO 3865 3867 Q1=Q9(4) : RETURN 3868 PRINT HEX(06);AT(22,0,80);AT(23,0,80) : IF STR(Q2$,,1)=HEX(42)THEN Q2$=HEX(02) : IF STR(Q2$,,1)=HEX(43)THEN Q2$=HEX(03) : FOR Q9=1TO Q9(1) : IF Q8$(Q9)=STR(Q2$,,1)THEN 3867 : NEXT Q9 : IF STR(Q2$,,1)=HEX(7E)OR STR(Q2$,,1)=HEX(05)OR STR(Q2$,,1)=HEX(45)THEN 38 56 : IF STR(Q2$,,1)<>HEX(7F)AND STR(Q2$,,1)<>HEX(06)AND STR(Q2$,,1)<>HEX(46)TH EN 3874 : STR(Q2$,,1)=HEX(08) : GOTO 3856 3874 PRINT AT(23,5);HEX(07200400000E);"Invalid Key";HEX(0F0C) : GOTO 3860 3876 Q1=1 : IF Q=0THEN 3883 : FOR Q9=1TO Q : READ Q9$ : ERRORSTOP "NOT ENOUGH DATA STATEMENTS FOR PROMPTS"# 3879 Q=LEN(Q9$)+Q7(Q9,2) : PRINT AT(Q7(Q9,1),Q7(Q9,2));Q9$;AT(Q7(Q9,1),Q,79-Q); : NEXT Q9 : IF Q7(Q9,1)>=22THEN 3883 : SELECT PRINT 005(80) : PRINT AT(Q7(Q9,1)+1,1,(Q7-Q7(Q9,1)-1)*80) : SELECT PRINT 205(80) 3883 IF Q5=0THEN RETURN : Q9$=HEX(8520) : $TRAN(Q5$(),Q9$)R : PRINT HEX(020402000E) : FOR Q9=1TO Q5 : PRINT AT(Q5(Q9,1),Q5(Q9,2)); : IF Q5(Q9,3)>0THEN PRINT STR(Q5$(Q9),,Q5(Q9,3)); : ELSE GOSUB 3915 : NEXT Q9 : IF STR(Q1$,,1)="0"THEN 3888 : Q2$=HEX(82) : GOTO 3911 3888 Q=0 3889 Q9=Q 3890 IF Q9>79THEN Q9=79 : IF Q9>(ABS(Q5(Q1,3))-1)THEN Q9=0 : PRINT AT(Q5(Q1,1),Q5(Q1,2)+Q9);HEX(02050F); : KEYIN Q2$,,3916 : PRINT HEX(06);AT(22,0,80);AT(23,0,80) : ON POS(HEX(200D0882)=STR(Q2$,1,1))GOTO 3896,3907,3908,3911 : IF STR(Q2$,1,1)<>HEX(FF)THEN 3897 : KEYIN Q2$ : KEYIN Q2$ : IF STR(Q2$,1,1)<HEX(A0)THEN 3890 : GOTO 3898 3896 Q2$=HEX(85) : GOTO 3898 3897 IF STR(Q2$,1,1)>HEX(7F)THEN 3890 3898 IF Q9>(ABS(Q5(Q1,3))-1)THEN Q9=0 : PRINT AT(Q5(Q1,1),Q5(Q1,2)+Q9); : IF Q5(Q1,3)>0THEN PRINT STR(Q2$,1,1); : ELSE PRINT HEX(8B) : STR(Q5$(Q1),Q9+1,1)=STR(Q2$,1,1) 3900 Q9=Q9+1 : IF Q9>ABS(Q5(Q1,3)-1)THEN 3901 : ELSE GOTO 3890 3901 Q1=Q1+1 : Q9=0 : IF Q1<=Q5THEN 3888 : Q1=1 : Q9=0 : GOTO 3888 3907 STR(Q2$,,1)=HEX(0D) : GOTO 3901 3908 STR(Q2$,,1)=HEX(08) : Q9=Q9-1 : IF Q9>=0THEN 3909 : Q1=Q1-1 : IF Q1<1THEN Q1=Q5 : Q=ABS(Q5(Q1,3))-1 : Q9=Q 3909 STR(Q5$(Q1),Q9+1,1)=HEX(85) : PRINT AT(Q5(Q1,1),Q5(Q1,2)+Q9); : IF Q5(Q1,3)>0THEN PRINT HEX(85); : GOTO 3890 3910 STR(Q2$,,1)=HEX(08) : Q9=Q9-1 : GOTO 3930 3911 PRINT HEX(020400000E) : Q9$=HEX(2085) : $TRAN(Q5$(),Q9$)R : FOR Q9=1TO Q5 : PRINT AT(Q5(Q9,1),Q5(Q9,2)); : IF Q5(Q9,3)>0THEN PRINT STR(Q5$(Q9),1,Q5(Q9,3)) : ELSE GOSUB 3915 : NEXT Q9 : RETURN 3915 FOR Q8=1TO ABS(Q5(Q9,3)) : PRINT HEX(8B); : NEXT Q8 : RETURN 3916 PRINT HEX(06);AT(22,0,80);AT(23,0,80) : IF STR(Q2$,,1)=HEX(42)THEN Q2$=HEX(02) : IF STR(Q2$,,1)=HEX(43)THEN Q2$=HEX(03) : FOR Q=1TO Q9(1) : IF Q8$(Q)=STR(Q2$,1,1)THEN 3911 : ELSE NEXT Q : ON VAL(STR(Q2$,1,1))GOTO ,,,,3927,3930,,,,,,3900,3926 : IF STR(Q2$,1,1)=HEX(7E)THEN 3907 : IF STR(Q2$,1,1)=HEX(7F)THEN 3910 3922 IF STR(Q2$,1,1)=HEX(46)OR STR(Q2$,1,1)=HEX(56)THEN 3930 : ELSE IF STR(Q2$,1,1)=HEX(45)OR STR(Q2$,1,1)=HEX(55)THEN 3927 : ELSE IF STR(Q2$,1,1)=HEX(4D)OR STR(Q2$,1,1)=HEX(5D)THEN 3926 : ELSE IF STR(Q2$,1,1)=HEX(4C)OR STR(Q2$,1,1)=HEX(5C)THEN 3900 : PRINT AT(23,5);HEX(07200400000E);"Invalid Key";HEX(0F0C) : GOTO 3890 3926 Q9=Q9-1 : IF Q9>=0THEN 3890 : Q1=Q1-1 : IF Q1<1THEN Q1=Q5 : Q=ABS(Q5(Q1,3))-1 : Q9=Q : GOTO 3890 3927 Q=0 : Q1=Q1+1 : IF Q1>Q5THEN Q1=1 3928 IF Q>ABS(Q5(Q1,3))-1THEN Q=ABS(Q5(Q1,3))-1 : GOTO 3889 3930 Q9=0 : Q=Q9 : Q1=Q1-1 : IF Q1<1THEN Q1=Q5 : GOTO 3928