Listing of file='609Escm4' on disk='vmedia/731-0067F-disk1.wvd.zip'
# Sector 911, program filename = '609Escm4'
0010 REM ************************ 609Escm4 ********************************
0030 DIM U1$(8),U2$(8)4,I2$2,V4$1
: UNPACK(############)STR(D8$(),191,6)TO F
0060 DEFFNJ(I)=POS(V0$()=" ")-1
: IF J7(1)=99THEN 220
: IF J7(1)<10OR D1$<>HEX(50)THEN 150
: $PACK(F=HEX(A019A0066006A002A001))V1$()FROMA6$(),A7$(),A0(),A8$(),A9$()
: V4$="A"
: GOSUB '221(A1,1,2,1,1)
: IF R1$<>HEX(00)THEN 2545
0150 IF A1=-1THEN 220
: $PACK(F=HEX(A019A005A007A002))U1$()FROMA6$(),A7$(12),HEX(00000000000000),
"10"
: IF A5=0THEN STR(U1$(),108,1)=HEX(FF)
: GOSUB '235(A1,U1$())
: IF R1$<>HEX(00)THEN GOSUB 2270
0220 GOSUB '212(A1)
: IF POS(HEX(0007)=R1$)=0THEN GOSUB 2275
: A1=J6(3)
: C3,C4=J6(2)
: J1$()=D9$()
: V0=J6(4)
: B4$=J8$
: $UNPACK(F=HEX(A019A0066006A002A001))D8$()TO A6$(),A7$(),A0(),A8$(),A9$()
: A0(3)=F
: V4$="P"
: V1$()=J1$()
: GOSUB '221(A1,1,1,1,1)
: IF R1$<>HEX(00)THEN 2540
: R5$=A7$(1)
: V0$()=J3$()
: J1=J6(1)
0430 GOSUB '100(C3,J1$(),V0)
: MAT J0=ZER
: MAT J7=ZER
: D7=0
: STR(B0$,POS(B0$=".")+1)=STR(C0$,5,1)&"."&STR(C0$,1,4)
: GOSUB 2085
: COM CLEAR J2$()
: LOAD DA T(D7$(1))
1050 DEFFN'100(C3,V1$(),A)
: C4$=" "
: IF C3<1THEN C3=8
: IF C3>123OR STR(V1$(),C3*2-1,2)=HEX(FFFF)THEN C3=INT((POS(-STR(V1$(),15,2
32)<FF)-1)/2)+8
: IF STR(V1$(),2*C3-1,2)=HEX(0000)THEN 1080
: C5=VAL(STR(V1$(),2*C3-1),2)
: IF C3=123OR STR(V1$(),2*C3+1,2)=HEX(FFFF)THEN 1070
: GOSUB 1090
: C6=VAL(STR(V1$(),2*C-1,2),2)-VAL(STR(V1$(),2*C3-1,2),2)
: RETURN
1070 C6=A-C5+1
: C4$="E"
: RETURN
1080 C5$="S"
: RETURN
1090 C=C3
1100 C=C+1
: IF STR(V1$(),2*C-1,2)=HEX(0000)THEN 1100
: RETURN
2085 C3$="Loading Editor"
: GOTO 2445
2220 C3$,B2$="Error closing attached glossary"
: RETURN
2225 C3$,B2$="Error closing file"
: RETURN
2230 C3$,B2$="Error closing glossary file"
: RETURN
2235 C3$,B2$="Error closing prototype document"
: RETURN
2265 C3$,B2$="Error writing FCB"
: RETURN
2270 GOSUB 2265
: GOTO 2295
2275 GOSUB 2225
: GOTO 2295
2295 IF R1$>HEX(29)THEN CONVERT VAL(R1$)TO I2$,(##)
: ELSE HEXUNPACKR1$TO I2$
: IF Y5$<>" "AND B2$<>" "THEN B2$=B2$&" - error = "&I2$
: IF Y5$<>" "THEN GOSUB '31
: PRINT AT(23,0,80);HEX(07);B5$(2);C3$;" - error = ";I2$;" - please Cancel"
;B5$(1);
: KEYIN S2$
: RETURN
2405 DEFFN'37(C3$)
: IF C3$=" "THEN 2420
: PRINT HEX(0706);AT(23,40,39);B5$(2);C3$;B5$(1);
2420 I6$=C3$
: RETURN
2430 PRINT AT(23,0,80);HEX(0706);B5$(2);C3$;" - please Cancel";B5$(1);
: RETURN
2435 PRINT HEX(0306);AT(7,30);B5$(3);C3$;" ";C6$;B5$(1)
: RETURN
2440 PRINT HEX(06);AT(23,40,20);B5$(2);C3$;B5$(1);
: RETURN
2445 PRINT HEX(06);AT(0,63,17);B5$(2);C3$;B5$(1);
: RETURN
2450 PRINT HEX(06);AT(23,0,39);B5$(2);C3$;B5$(1);
: RETURN
2510 B2$="Error reading page"
: CONVERT C3TO STR(B2$,LEN(B2$)+2),(###)
: GOTO 2550
2540 B2$="Error rewriting page table"
: GOTO 2550
2545 B2$="Error rewriting admin page"
: GOTO 2550
2550 IF R1$>HEX(29)THEN CONVERT VAL(R1$)TO I2$,(##)
: ELSE HEXUNPACKR1$TO I2$
: B2$=B2$&" - error = "&I2$
: IF Y5$=" "THEN B2$=B2$&" - please Cancel"
: IF Y5$<>" "THEN GOSUB '31
2560 PRINT AT(23,0,80);HEX(0607);B5$(2);B2$;B5$(1);
: KEYIN S2$,,2570
: GOTO 2560
2570 IF POS(HEX(F050)=S2$)>0THEN GOSUB '31
: GOTO 2560
2689 PACK(############)STR(D8$(),191,6)FROMF
3000 DEFFN'31
: A5=0
: A5$()="609CloseJCATSMAL"
: A5$=R3$()
: R3$()=STR(R3$(),10)
: IF A1>-1OR A2>-1THEN LOAD T<2>A5$()
: COM CLEAR C
: LOAD TA5$
4502 DIM V2$(256)1,V5$(160)1,V2$67,V3$16,U3$(10)2,U2$85,U2(6),R1$1,V8$4,V7$2,U
7$68,V6$1,U1$2,V0$8,U0$(128)2,V7(10),U3(9),U5(10)
: DIM R1$1,V5$(160)1,V1$(3)82,V7$(256)1,U0(23),V9$2,V1$2,U0$3,U3$1,U7$(256)
1,U0$(128)2,U4$4,V4$1,V6(9),V9(9),U5(10),V5(7)
4524 DEFFN'211(U7$,U8$,U9$,V6$)
: M=0
: IF V6$=HEX(01)OR V6$=HEX(FF)THEN 4526
: R1$=BIN(6)
: RETURN
4526 V3$=U8$
: GOSUB 4788
: GOSUB 4610
: IF V7(4)>0THEN 4530
4528 R1$=BIN(3)
: GOTO 4542
4530 U3(1)=V7(4)
: GOSUB 4710
: V7(8)=3
: IF VAL(STR(V2$(),3,1))<>1THEN 4528
: IF STR(V2$(),V7(8)+5,6)=U9$OR STR(V2$(),V7(8)+5,6)=" "THEN 4532
: R1$=BIN(5)
: GOTO 4542
4532 IF STR(V2$(),V7(8)+4,1)<>HEX(FF)THEN 4536
4534 R1$=BIN(6)
: GOTO 4542
4536 IF STR(V2$(),V7(8)+4,1)<>HEX(00)THEN 4538
: STR(V2$(),V7(8)+4,1)=V6$
: GOTO 4540
4538 IF V6$=HEX(01)THEN STR(V2$(),V7(8)+4,1)=BIN(VAL(STR(V2$(),V7(8)+4,1))+1)
: ELSE GOTO 4534
4540 STR(V2$(),V7(8)+23,2)=BIN(U9,2)
: GOSUB 4714
: STR(V5$(),V3*32+1,32)=STR(V2$(),4,32)
: V2=VAL(STR(V5$(),V3*32+29,1))
: U1$()=STR(V2$(),129,128)
: GOTO 4544
4542 STR(U4$,V3+1,1)="0"
4544 $CLOSE#U0
: $CLOSE#0
: RETURN
4546 DEFFN'212(V3)
: M=0
: GOSUB 4726
: U3(1)=VAL(STR(V5$(),V7(8)+15,2),2)
: GOSUB 4710
: IF STR(V5$(),V7(8)+4,1)=HEX(FF)THEN STR(V5$(),V7(8)+4,1)=BIN(0)
: ELSE STR(V5$(),V7(8)+4,1)=BIN(VAL(STR(V5$(),V7(8)+4,1))-1)
: STR(V2$(),4,32)=STR(V5$(),V7(8)+1,32)
: GOSUB 4714
: IF U4=V3THEN U4=-1
: STR(U4$,V3+1,1)="0"
: $CLOSE#U0
: $CLOSE#0
: RETURN
4552 DEFFN'235(V3,U1$())
: M=0
: GOSUB 4726
: U3(1)=VAL(STR(V5$(),V7(8)+15,2),2)
: GOSUB 4710
: STR(V2$(),129,128)=STR(U1$(),,128)
: STR(V2$(),3,33)=BIN(1)&STR(V5$(),V7(8)+1,32)
: GOSUB 4714
: GOTO 4836
4610 M=M+1
: GOSUB 4724
: V7(4)=0
: V7(4)=U3(4)
: U3(9)=0
: STR(U7$,LEN(U7$)+1,1)="."
4612 GOSUB 4722
: U3(9)=U3(9)+1
: U2(U3(9)),U3(1)=V7(4)
: GOSUB 4616
: IF U3(2)<>0THEN 4614
: V7(4)=0
: GOTO 4838
4614 V7(4)=VAL(STR(V2$(),U3(2)+16,2),2)
: V7(3)=V7(3)-1
: IF V7(3)=0THEN 4838
: GOTO 4612
4616 M=M+1
: U3(6)=0
4618 GOSUB 4710
: IF V7(9)<>0THEN 4620
: U3(2)=0
: GOTO 4622
4620 MAT SEARCHSTR(V2$(),6,V7(9)*18),=STR(V3$)TO U3$()STEP 18
: U3(2)=VAL(U3$(),2)
: IF U3(2)=0THEN 4622
: U3(2)=U3(2)+5
: GOTO 4838
4622 U3(6)=U3(1)
: U3(1)=VAL(STR(V2$(),4,2),2)
: IF U3(1)<>0THEN 4618
: GOTO 4838
4698 $OPEN #U0
: ERRORGOTO 4830
4700 DATA LOAD DC OPEN T#U0,V0$
: ERRORIF V0$<>"WPSYSTEM"THEN STR(U4$,POS(U4$="0")-1,1)="0"
: GOTO 4830
4702 LIMITS T#U0,U3(1),U3(2),U3(3)
: ERRORGOTO 4830
4704 U9=U3(1)
: U3(3)=1
: GOSUB 4706
: U3(4)=VAL(STR(V2$(),,2),2)
: U3(1)=U3(4)
: RETURN
4706 DATA LOAD BA T#U0,(U3(3)+U9)V2$()
: ERRORGOTO 4830
4708 RETURN
4710 DATA LOAD BA T#U0,(U3(1)+U9)V2$()
: ERRORGOTO 4830
4712 V7(9)=VAL(STR(V2$(),,2),2)
: RETURN
4714 IF U3(1)>0THEN STR(V2$(),255,2)=BIN(4,2)
: DATA SAVE BA T#U0,(U3(1)+U9)V2$()
: ERRORGOTO 4830
4716 RETURN
4718 STR(V2$(),255,2)=BIN(3,2)
: DATA SAVE BA T#U0,(U3(3)+U9)V2$()
: ERRORGOTO 4830
4720 RETURN
4722 V3$=STR(U7$,,(POS(U7$=".")-1))
: U7$=STR(U7$,POS(U7$=".")+1)
: RETURN
4724 MAT SEARCHU7$,="."TO U3$()
: MAT SEARCHU3$(),=HEX(0000)TO U3$()STEP 2
: V7(3)=(1+VAL(U3$(),2))/2
: RETURN
4726 IF V3>=0AND V3<4THEN 4728
: R1$=BIN(8)
: GOTO 4832
4728 V7(8)=V3*32
: R1$=BIN(0)
: IF VAL(STR(V5$(),V7(8)+4,1))>0THEN 4730
: R1$=BIN(7)
: GOTO 4832
4730 U0=15-V3
: U9=VAL(STR(V5$(),V7(8)+23,2),2)
: RETURN
4756 R1$=BIN(0)
: U0=0
: V0$="WPSYSTEM"
: GOTO 4698
4788 M=M+1
: GOSUB 4756
: GOSUB 4616
: IF U3(2)<>0THEN 4790
: R1$=BIN(3)
: GOTO 4834
4790 HEXUNPACKSTR(V2$(),U3(2)+16,2)TO V8$
: V8$=STR(V8$,,3)
: V3=POS(U4$="0")
: IF V3>0THEN 4792
: R1$=BIN(4)
: GOTO 4834
4792 U0=16-V3
: STR(U4$,V3,1)="1"
: V3=V3-1
: V0$=V3$
: SELECT #U0<V8$>
: GOSUB 4698
: $CLOSE#0
: GOTO 4838
4830 R1$=BIN(ERR)
4832 RETURN CLEAR
4834 IF M=0THEN 4836
: M=M-1
: GOTO 4832
4836 $CLOSE#U0
: $CLOSE#0
: RETURN
4838 M=M-1
: RETURN
4932 DEFFN'240(U5(8),V9(2),V6(2),V6(3))
: U0(21)=V9(2)
: V9(1),U5(9)=U5(8)
: IF V9(2)>0THEN 4934
: V6(3)=1
: V6(2)=U5(8)
: RETURN
4934 IF V9(2)<V6(3)THEN 4936
: U0(21)=V9(2)-V6(3)+1
: U5(9)=V6(2)
4936 FOR U=1TO U0(21)
: V9(1)=U5(9)
: GOSUB 4986
: U5(9)=VAL(STR(V7$(),2*MOD(V9(1)-1,V5)+1,2),2)
: IF V9(1)=0THEN 5004
: NEXT U
: R1$=HEX(00)
: V6(3)=V9(2)
: V6(2)=V9(1)
: RETURN
4938 DEFFN'241(V9(1))
: IF V9(1)<1THEN RETURN
: GOSUB 4986
: U5(9)=VAL(STR(V7$(),2*MOD(V9(1)-1,V5)+1,2),2)
: RETURN
4984 GOSUB 4986
: RETURN
4986 V9(5)=U5(1)+INT((V9(1)-1)/V5)
: IF U5(4)=U0AND U5(6)=V5(2)THEN 4988
: U5(4)=U0
: U5(6)=V5(2)
: GOTO 4992
4988 IF V9(5)=V6(4)AND U3$=HEX(FF)AND V5(7)=0THEN RETURN
: V5(7)=0
: IF U5(10)=0THEN 4992
: DATA SAVE BA T#U0,(V6(4)+V5(2))V7$()
: ERRORGOTO 4996
4990 IF U6=1THEN DATA SAVE BA T#U0,(V6(4)+V5(2)+U5(3)*V2)V7$()
: ERRORGOTO 4996
4992 DATA LOAD BA T#U0,(V9(5)+V5(2))V7$()
: ERRORGOTO 4996
4994 V6(4)=V9(5)
: RETURN
4996 RETURN CLEAR
4998 RETURN CLEAR
5000 RETURN CLEAR
: $CLOSE#U0
5002 U0(18)=-1
: R1$=BIN(ERR)
: RETURN
5004 RETURN CLEAR
5006 U0(18)=-1
: $CLOSE#U0
: RETURN CLEAR
: RETURN
5012 DEFFN'220(V3,V6,V9,V8,U5(2))
: U0(19)=0
: GOSUB 5020
: RETURN
5016 DEFFN'221(V3,V6,V9,V8,U5(2))
: GOSUB 5018
: RETURN
5018 DEFFN'228(V3,V6,V9,V8,U5(2))
: U0(19)=1
5020 U7=V9
: V5(5)=0
: V9(6)=LEN(STR(V0$(),V6))
: GOSUB 5132
: GOSUB 5158
: GOSUB '240(U5(8),V9-1,V6(2),V6(3))
: FOR U=1TO V8
: GOSUB '241(U5(9))
: U0$(U)=BIN(V9(1),2)
: IF V9(1)<>0THEN 5022
: R1$=HEX(20)
: GOTO 5006
5022 IF U5(9)=0THEN R1$=HEX(28)
: IF U0(19)=0THEN 5026
: IF U5(2)=2THEN V1$()=STR(V0$(),V9(9)*(U-1)+V6,V9(9))
: DATA SAVE DA T#U0,(V5(2)+1+V2*(V9(1)-1))V1$(),U0$
: ERRORGOTO 5000
5024 GOTO 5030
5026 DATA LOAD DA T#U0,(V5(2)+1+V2*(V9(1)-1))V1$(),U0$
: ERRORGOTO 5000
5028 IF U=1THEN V4$=U0$
: V5(5)=V5(5)+V9(9)
: IF U5(2)<>2THEN 5030
: IF V5(5)>V9(6)THEN STR(V0$(),V9(9)*(U-1)+V6,V9(9))=STR(V1$(),,V9(9)-(V5(5
)-V9(6)))
: ELSE STR(V0$(),V9(9)*(U-1)+V6,V9(9))=V1$()
5030 NEXT U
: U0(11)=U0(23)
: U0(23)=-1
: GOSUB 5148
: GOSUB 5138
: U0(23)=U0(11)
: RETURN
5132 U5(10)=0
: V6(1)=V3*U0(5)
: V5(7)=1
: GOSUB 5140
: STR(U0$,,1)=V4$
: IF V3=U4THEN RETURN
: U4=V3
: IF V3<>4THEN U0=15-V3
5134 U5(8)=VAL(STR(V5$(),V6(1)+11,2),2)
: U5(7)=VAL(STR(V5$(),V6(1)+17,2),2)
: V6(2)=VAL(STR(V5$(),V6(1)+19,2),2)
: V6(3)=VAL(STR(V5$(),V6(1)+21,2),2)
: V2=VAL(STR(V5$(),V6(1)+29,1))
: MAT REDIM V1$(3*V2)82
: U5(1)=VAL(STR(V5$(),V6(1)+27,2),2)
: U8=VAL(STR(V5$(),V6(1)+25,2),2)
5136 V0=VAL(STR(V5$(),V6(1)+2,2),2)
: U0$=V4$&STR(V5$(),V6(1)+31,2)
: U5(3)=VAL(STR(V5$(),V6(1)+13,2),2)
: V9(9)=246*V2
: U6=VAL(STR(V5$(),V6(1)+30,1))
: RETURN
5138 IF U0(2)=-1THEN $CLOSE#U0
: RETURN
5140 V5(2)=VAL(STR(V5$(),V6(1)+23,2),2)-1
: U0(4)=VAL(STR(V5$(),V6(1)+15,2),2)
: U3$=STR(V5$(),V6(1)+4,1)
: IF U3$=HEX(FF)OR U0(18)=1THEN RETURN
: IF V3<>4THEN U0=15-V3
: DATA LOAD BA T#U0,(U0(4)+V5(2)+1)U7$()
: ERRORGOTO 5000
5142 STR(V5$(),V6(1)+1,U0(5))=STR(U7$(),4,U0(5))
: U4=-1
: RETURN
5144 DATA SAVE BA T#U0,(V6(4)+V5(2))V7$()
: ERRORGOTO 4998
5146 IF U6=1THEN DATA SAVE BA T#U0,(V6(4)+V5(2)+U5(3)*V2)V7$()
: ERRORGOTO 4998
5148 STR(V5$(),V6(1)+11,4)=BIN(U5(8),2)&BIN(U5(3),2)
: STR(V5$(),V6(1)+17,6)=BIN(U5(7),2)&BIN(V6(2),2)&BIN(V6(3),2)
: STR(V5$(),V6(1)+2,2)=BIN(V0,2)
: IF U3$=HEX(FF)AND MOD(V9,U0(23))<>0OR U0(23)=-1THEN RETURN
: IF U3$=HEX(FF)THEN DATA LOAD BA T#U0,(U0(4)+V5(2)+1)U7$()
: ERRORGOTO 4998
5152 STR(U7$(),4,U0(5))=STR(V5$(),V6(1)+1,U0(5))
: DATA SAVE BA T#U0,(U0(4)+V5(2)+1)U7$()
: ERRORGOTO 4998
5154 RETURN
5158 IF U7+V8<V0+2AND U7=INT(U7)AND U7>0THEN 5166
: ELSE GOTO 5162
: IF U7+V8<V0+2AND U7=INT(U7)AND U7>0THEN 5168
5162 R1$=HEX(25)
: GOTO 5004
5164 IF V0=0THEN V9=1
5166 IF V3=4THEN 5170
: IF U5(2)=1THEN U0(1)=LEN(STR(V1$()))
: ELSE U0(1)=LEN(STR(V0$()))
: IF V8*V2*246<=U0(1)-V6+1+245-MOD(U0(1)-1,246)AND V6=INT(V6)AND V6>0THEN 5
170
: R1$=HEX(23)
: GOTO 5004
5168 IF V0<>0THEN 5170
: R1$=HEX(24)
: GOTO 5004
5170 IF V9<=V0AND V9=INT(V9)AND V9>0THEN 5174
: IF V9<>V0+1THEN 5172
: R1$=HEX(28)
: GOTO 5176
5172 R1$=HEX(22)
: GOTO 5004
5174 IF V3<5AND V3>=0AND V3=INT(V3)THEN 5176
: R1$=HEX(08)
: GOTO 5004
5176 IF VAL(U3$)>0THEN 5178
: R1$=HEX(07)
: GOTO 5004
5178 IF V8<>INT(V8)OR V8<1THEN 5162
: IF V8<129THEN 5180
: R1$=HEX(29)
: GOTO 5004
5180 R1$=HEX(00)
: IF V3<>4THEN U0=15-V3
: $OPEN #U0
: RETURN