Listing of file='REC-JCAT' on disk='vmedia/731-0067F-disk2.wvd.zip'
# Sector 925, program filename = 'REC-JCAT'
4508 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)
4870 DEFFN'243(U8,V5(2),V2,V3$,U6)
: R1$=HEX(00)
: U8=V2*FIX(U8/V2)
: IF V2>0AND V2<256AND V2=INT(V2)AND V5(2)>0AND V5(2)<99999AND V5(2)=INT(V5
(2))AND U8>99AND U8<65536AND U8=INT(U8)AND U6<4AND U6>0AND U6=INT(U6)THEN
4872
: R1$=HEX(26)
: RETURN
4872 V5(2)=V5(2)-1
: V9(4)=U8/V2
: U0(3),V8=1+FIX(V9(4)/V5/V2)
: U5(3)=2+FIX((64+(U8/V2/V5))/V2)
: V9(8)=FIX(V9(4)/V5)
: U0(20)=MAX(1,FIX(8/V2))
: V5(6)=FIX(.5*(V9(4)-(1+MOD(U6,2))*V8-U0(20)))+1
: IF V5(6)+U5(3)>V9(4)THEN U5(3)=V9(4)-V5(6)-1
: U5(1)=V2*(V5(6)-1)+1
4874 IF V5-(U5(1)-(INT(U5(1)/V5)*V5)-1)<V8THEN U5(1)=(INT(U5(1)/V5)*V5)+V5-V8+
1
: IF V5-((U5(1)+U5(3))-(INT((U5(1)+U5(3))/V5)*V5)-1)<V8THEN U5(3)=((INT((U5
(1)+U5(3))/V5)*V5)+V5-V8+1)-U5(1)
: V7$()=ALL(00)
: FOR U=1TO U8
: DATA SAVE BA T#U0,(V5(2)+U)V7$()
: ERRORGOTO 5000
4876 NEXT U
: V7$()=ALL(FF)
: STR(V7$(),255)=HEX(0001)
: FOR U=0TO V9(8)
: DATA SAVE BA T$#U0,(U5(1)+V5(2)+U)V7$()
: ERRORGOTO 5000
4880 NEXT U
: STR(V7$(),2*MOD(V9(4),V5)+1)=ALL(00)
: STR(V7$(),255)=HEX(0001)
: DATA SAVE BA T$#U0,(V5(2)+U5(1)+V9(8))V7$()
: ERRORGOTO 5000
4884 U0(15)=V5(6)
: V5(7)=1
: GOSUB 4892
: IF U6=2THEN 4886
: IF V2=1THEN V8=3
: GOTO 4888
4886 IF V2=2THEN V8=2
: ELSE V8=1
4888 U0(15)=1
: GOSUB 4892
: V8=U0(20)
: U0(15)=V5(6)+U0(3)
: GOSUB 4892
: V0=V0+V8
: V3=4
: V6(1)=V3*U0(5)
: STR(V5$(),V6(1)+1,22)=ALL(00)
: STR(V5$(),V6(1)+5,6)=STR(V3$,,6)
: STR(V5$(),V6(1)+13,2)=BIN(U5(3),2)
: STR(V5$(),V6(1)+23,10)=BIN(V5(2)+1,2)&BIN(U8,2)&BIN(U5(1),2)&BIN(V2)&BIN(
U6)&HEX(0004)
4890 U0(4)=0
: U3$=BIN(0)
: STR(U7$(),251,4)=HEX(322E3030)
: STR(U7$(),255,2)=HEX(0002)
: GOSUB 5144
: GOSUB 4894
: U4=-1
: RETURN
4892 V9(1)=U0(15)
: GOSUB '244(V9(1),V8)
: IF R1$<>HEX(00)THEN RETURN
: V0,U5(7),U5(8)=0
: V6(2)=VAL(U0$(1),2)
: IF U0(15)<>VAL(U0$(1),2)THEN U0(15)=VAL(U0$(1),2)
: V6(3)=1
: V9=1
: GOSUB '242(U0$(),V8,U0(15))
: RETURN
4894 V7$()=ALL(00)
: T=0
: FOR U=1TO V8
: FOR H=1TO V2
: T=T+1
: STR(V7$(),2*(T-1)+5,2)=BIN((VAL(U0$(U),2)-1)*V2+H-1,2)
: NEXT H
: NEXT U
: STR(V7$(),255)=HEX(0003)
: STR(V7$(),,4)=BIN(2,2)&BIN(U*V2,2)
: DATA SAVE BA T#U0,(V5(2)+2)V7$()
: ERRORGOTO 4998
4896 V6(4)=0
: RETURN
4902 DEFFN'242(U0$(),V8,U5(8))
: U5(10)=1
: IF V9>1THEN 4908
: V9(1)=VAL(U0$(1),2)
: GOSUB 4986
: IF U5(7)<>0THEN 4904
: U5(7)=V9(1)
: STR(V7$(),2*MOD(U5(8)-1,V5)+1,2)=BIN(0,2)
: GOTO 4906
4904 STR(V7$(),2*MOD(V9(1)-1,V5)+1,2)=BIN(U5(8),2)
4906 U5(8)=V9(1)
: V9$=U0$(1)
: U0$()=STR(U0$(),3)
: STR(U0$(),2*V8+1)=ALL(00)
: V8=V8-1
4908 IF V8<1THEN 4922
: U0(6)=0
: FOR U=1TO V8+1
: GOSUB 4986
: V9(7)=1+2*MOD(V9(1)-1,V5)
: IF U>1THEN 4912
: IF VAL(STR(V7$(),V9(7),2),2)=0THEN 4910
: U5(9)=VAL(STR(V7$(),V9(7),2),2)
: STR(V7$(),V9(7),2)=U0$(1)
: GOTO 4918
4910 U0(6)=1
: STR(V7$(),V9(7),2)=U0$(U)
: GOTO 4918
4912 IF U<V8+1THEN 4916
: IF U0(6)=1THEN 4914
: IF V0=0THEN 4920
: STR(V7$(),V9(7),2)=BIN(U5(9),2)
: GOTO 4920
4914 STR(V7$(),V9(7),2)=BIN(0,2)
: U5(7)=V9(1)
: GOTO 4920
4916 STR(V7$(),V9(7),2)=U0$(U)
4918 V9(1)=VAL(U0$(U),2)
4920 NEXT U
4922 IF V9<>1THEN 4926
: IF V8=0THEN 4924
: FOR U=0TO V8-1
: STR(U0$(),2*(V8-U+1)-1,2)=STR(U0$(),2*(V8-U)-1,2)
: NEXT U
4924 V8=V8+1
: STR(U0$(),,2)=V9$
: IF U5(8)<>V6(2)THEN V6(3)=V6(3)+V8
4926 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
4946 DEFFN'244(V9(1),V8)
: U0(14)=V9(1)
: U0$()=ALL(00)
: GOSUB 4986
: GOSUB 5118
: IF V5(1)<>0THEN GOSUB 4972
: V9(1)=U0(14)
: IF V5(1)<V8THEN 4962
: RETURN
4958 MAT SEARCHU0$(),=HEX(0000)TO V9$STEP 2
: V6(5)=(VAL(V9$,2)-1)/2
: IF V6(5)-V5(1)=0THEN RETURN
: FOR I=V5(1)+1TO V6(5)
: U0$(I)=BIN(V5*(V6(4)-U5(1))+(VAL(U0$(I),2)+1)/2,2)
: NEXT I
: V5(1)=V6(5)
: RETURN
4962 V9(4)=U8/V2
: U0(17)=V5
: U0(22)=2*(MAX(INT(ABS(V9(1)-1)/V5),INT(ABS(V9(1)-V9(4))/V5))+1)
: FOR U=1TO U0(22)
: IF V5(1)>=V8THEN 4970
: V9(1)=V9(1)+V5*U*(-1)^U
: IF INT((V9(1)-1)/V5)>INT((V9(4)-1)/V5)OR V9(1)<2THEN 4968
: IF V9(1)<V9(4)THEN 4966
: V9(1)=V9(4)
: U0(17)=MOD(V9(1)-1,V5)
4966 GOSUB 4986
: MAT SEARCHV7$(),=HEX(FFFF)TO STR(U0$(),2*V5(1)+1,2*MIN((V8-V5(1)),U0(17))
)STEP 2
: GOSUB 4958
4968 NEXT U
: IF U=U0(22)AND V5(1)<>V8THEN R1$=HEX(01)
: ELSE R1$=HEX(00)
4970 V9(1)=U0(14)
: RETURN
4972 U0(16)=1
: IF V5(1)<=V8THEN 4978
: U0(10)=66000
: FOR U=1TO V5(1)-V8+1
: U0(9)=ABS(MOD(V9(1),V5)-VAL(U0$(U),2))
: IF V8<=1THEN 4974
: U0(9)=U0(9)+VAL(U0$(U+V8-1),2)-VAL(U0$(U),2)
4974 IF U0(9)>=U0(10)THEN 4976
: U0(10)=U0(9)
: U0(16)=U
4976 NEXT U
: V5(1)=V8
4978 FOR U=1TO V5(1)
: U0$(U)=BIN((V6(4)-U5(1))*V5+VAL(U0$(U+U0(16)-1),2),2)
: NEXT U
: STR(U0$(),2*V5(1)+1)=ALL(00)
: 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
5118 MAT SEARCHV7$(),=HEX(FFFF)TO U0$()STEP 2
: MAT SEARCHU0$(),=HEX(0000)TO V9$STEP 2
: V5(1)=(VAL(V9$,2)-1)/2
: IF V5(1)<0THEN V5(1)=V5
: IF V5(1)<=2*V8THEN 5126
: V9$=BIN(2*MOD(U0(14)-1,V5)+1,2)
: MAT SEARCHU0$(),>V9$TO V1$STEP 2
: V6(5)=MAX((VAL(V1$,2)-1)/2,0)
: IF V6(5)>=V8THEN 5122
: V5(1)=V8+V6(5)
: GOTO 5124
5122 V5(1)=MIN(2*V8,V8+V5(1)-V6(5))
: U0$()=STR(U0$(),2*(V6(5)-V8)+1)
5124 STR(U0$(),2*V5(1)+1)=ALL(00)
5126 FOR U=1TO V5(1)
: U0$(U)=BIN((VAL(U0$(U),2)+1)/2,2)
: NEXT U
: 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