Listing of file='KFAM0107' on disk='vmedia/701-2427C.wvd.zip'
# Sector 281, program filename = 'KFAM0107' 0010 REM KFAM0107, RELEASE 5-1, (11/07/79) - COPYRIGHT WANG LABS. INC. 0025 COM @V,@Q6$64,@Q6,@Q7,@Q8,@Q9,@Q8$20,@Q0$(16),@T5$10,@V$18,@T : COM @V4$(30)5,@Q,@Q$17,@Q9$17,@Q0$49,@T$(30)17 0040 DEFFN@PART"KFAM" : $PSTAT="KFAM0107" : @V=1 : @T=0 : @T$(),@V4$()=ALL(FF) : @Q=1 : @V$=HEX(5001A002A002A0025004A001A002A002A001) : @T5$=HEX(A003A01EA001A008A002) : @Q8$=HEX(A0025002A00450015002) : STR(@Q8$,11)=STR(@Q8$,9) : $RELEASETERMINAL : $BREAK! 0579 $BREAK1 0580 IF @T=0THEN @T=S2 : ELSE GOTO 579 : RETURN 0590 @T=0 : RETURN 0609 ADDC(V9$,V0$) : DATA LOAD DA T#T1,(V9$)T9$,T0$() : RETURN 0645 T7$=T1$ 0648 V9$=T2$ : FOR T3=T0TO 1STEP -1 : GOSUB 609 : T2$(T3)=T9$ : MAT SEARCHSTR(T0$(),,V7),>STR(T7$,,T4)TO V9$STEP T5 : T=VAL(V9$,2)-T5 : IF T<1THEN T=V1 : $UNPACK(F=V4$)T0$()<T>TO T1$,T4$ : V9$=T4$ : IF V>6THEN Q2=SGN(255-VAL(STR(T0$(),V1)))*(Q2+1) : BIN(STR(T$,T3))=T : NEXT T3 : RETURN 0723 V=4 0726 IF T9>0AND T6=T9THEN 750 : IF V0$(T6)=" "THEN 2908 : GOSUB 858 : T9=T6 : $UNPACK(F=@Q8$)V0$(T9)TO V0$,V6,V4$,V0,T1,T2,T4,T5,V7,V1 : $UNPACK(F=@T5$)T5$(T9)TO T4$,T7$,T8$,T$,T2$() : GOSUB 818 : T9$=HEX(FF) 0750 $CLOSE#T1,#T2 : IF MOD(V0,2)=0THEN 812 : Q$=BIN(V6) : Q2$=BIN(S2)&Q$ : MAT SEARCH@V4$(),=STR(Q2$)TO V9$STEP 5 : T=VAL(V9$,2) : IF T>0THEN STR(@V4$(),T,5)=ALL(FF) : GOSUB 580 : STR(@Q$,@Q)=STR(Q2$,,1) : STR(@Q9$,@Q)=Q$ : STR(@Q0$,@Q*3-2)=STR(@T$(V6),4,3) : @Q=@Q+1 0784 MAT SEARCH@Q0$,=STR(@T$(V6),4,3)TO V7$STEP 3 : IF VAL(STR(@Q$,(VAL(V7$,2)+2)/3))=S2THEN 794 : @T=0 : $BREAK5 : GOSUB 580 : GOTO 784 0794 @T=0 : HEXUNPACKSTR(@T$(V6),10)TO V7$ : T8$=STR(V7$,S2) : HEXPACKQ$FROMT8$ : Q$=AND HEX(60) : IF Q$>HEX(20)THEN GOSUB 818 : Q$=AND HEX(20) : IF Q$=HEX(20)THEN T6$=BIN(0) 0812 IF V>4AND VAL(T6$)<>T9THEN 873 : RETURN 0818 $UNPACK(F=@V$)STR(@T$(V6),7)TO T0,T2$ : RETURN 0824 GOSUB 580 0825 HEXUNPACKSTR(@T$(V6),10)TO V7$ : STR(V7$,S2,1)=T8$ : HEXPACKSTR(@T$(V6),10)FROMV7$ : RETURN 0858 IF T9>0THEN $PACK(F=@T5$)T5$(T9)FROMT4$,T7$,T8$,T$,T2$() : RETURN 0873 DATA LOAD DA T#T1,(V0$)Q2,T$() : T6$=BIN(T9) : RETURN 0880 DATA SAVE DA T$#T1,(V0$)0,T$() : RETURN 0888 IF MOD(Q,2)=0THEN 901 : Q2$=STR(@T$(V6),4,2)SUBCSTR(T4$,,2) 0890 MAT SEARCH@V4$(),=HEX(FFFF)TO V9$STEP 5 : T=VAL(V9$,2) : IF T>0THEN 898 : $BREAK1 : GOTO 890 0898 IF STR(@V4$(),T,2)=HEX(FFFF)THEN STR(@V4$(),T,5)=BIN(S2)&BIN(V6)&STR(@T$( V6),6,1)&Q2$ : ELSE GOTO 890 0901 GOSUB 824 0908 Q2$=BIN(S2) : T=POS(@Q$=Q2$) : STR(@Q0$,T*3-2)=STR(@Q0$,T*3+1) : STR(@Q$,T)=STR(@Q$,T+1) : STR(@Q9$,T)=STR(@Q9$,T+1) : @Q=@Q-1 : GOTO 590 0927 Q$=" " : Q=VAL(STR(T4$,3)) : T6=VAL(T4$,2) : DBACKSPACE #T2,BEG : IF T6>0THEN DSKIP #T2,T6S : RETURN 0954 IF MOD(V0,2)=0THEN RETURN : V9$=STR(@T$(V6),4,2)SUBCSTR(T4$,,2) : V7$=STR(@T$(V6),6,1)&V9$ : MAT SEARCHSTR(@V4$(),3),=STR(V7$,,3)TO V9$STEP 5 : IF V9$=HEX(0000)OR VAL(STR(@V4$(),VAL(V9$,2)))=S2THEN RETURN : Q$="B" : T8$="1" : RETURN CLEAR 0972 GOSUB 901 : $BREAK5 : RETURN 0984 DEFFN'232(T6,Q,T1$) : GOSUB 723 : GOSUB 645 : IF T1$<>T7$THEN 2947 : IF T4$>HEX(FF)THEN 2947 : GOSUB 954 : GOTO 1116 1014 DEFFN'235(T6,Q) : GOSUB 723 : INIT(00)T7$ : GOTO 1059 1032 DEFFN'237(T6,Q) : V=1 : GOSUB 726 : IF T8$="0"THEN 1068 : IF T8$>"7"THEN 2974 1059 GOSUB 648 : GOTO 1083 1068 T=VAL(T$) : IF T2$(1)=T9$THEN 1083 : V9$=T2$(1) : GOSUB 609 1083 T=T+T5 : IF T>V1THEN 1131 : $UNPACK(F=V4$)T0$()<T>TO T1$,T4$ : IF T1$>HEX(FF)THEN 1131 1105 BIN(T$)=T : GOSUB 954 : T7$=T1$ 1116 T8$="0" : IF MOD(V0,2)=1THEN GOSUB 888 : GOTO 927 1131 T3=1 1134 T3=T3+1 : IF T3>T0THEN 2989 : V9$=T2$(T3) : GOSUB 609 : T=VAL(STR(T$,T3)) : T=T+T5 : IF T>V1THEN 1134 : $UNPACK(F=V4$)T0$()<T>TO T1$,T4$ : IF T1$>HEX(FF)THEN 1134 1167 BIN(STR(T$,T3))=T : IF T3=1THEN 1105 : V9$=T4$ : GOSUB 609 : $UNPACK(F=V4$)T0$()TO T1$,T4$ : T3=T3-1 : T=1 : T2$(T3)=T9$ : GOTO 1167 1206 DEFFN'236(T6,Q) : GOSUB 723 : T7$=HEX(FF) : GOSUB 648 : IF T4$>HEX(FF)THEN 2953 : GOTO 1105 1239 DEFFN'212(T6,Q) : V=2 : GOSUB 726 : IF T8$="0"THEN 1278 : IF T8$>"7"THEN 2974 : GOSUB 648 : IF T7$>T1$THEN 1299 : GOTO 1293 1278 T=VAL(T$) : IF T2$(1)=T9$THEN 1293 : V9$=T2$(1) : GOSUB 609 1293 T=T-T5 1299 IF T<1THEN 1317 : $UNPACK(F=V4$)T0$()<T>TO T1$,T4$ 1305 IF T4$>HEX(FF)THEN 2989 : GOTO 1105 1317 T3=1 1320 T3=T3+1 : IF T3>T0THEN 2989 : V9$=T2$(T3) : GOSUB 609 : T=VAL(STR(T$,T3)) : T=T-T5 : IF T<1THEN 1320 1341 $UNPACK(F=V4$)T0$()<T>TO T1$,T4$ : BIN(STR(T$,T3))=T : IF T3=1THEN 1305 : V9$=T4$ : GOSUB 609 : T=INT((POS(-T0$()<FF)-1)/T5)*T5+1 : T3=T3-1 : T2$(T3)=T9$ : GOTO 1341 1410 DEFFN'238(T6) : Q=0 : GOSUB 723 : Q$=" " 1431 ON V0GOTO 901,,901 : RETURN 1443 IF T3=1THEN GOSUB 1524 : IF T=V1THEN 1461 : T6=V1-T : MAT COPY -T0$()<T,T6>TO -T0$()<T+T5,T6> 1461 $PACK(F=V4$)T0$()<T,T5>FROMT1$,T3$ : RETURN 1473 $UNPACK(F=STR(@V$,5))T$(2)<4>TO Q2$,V2$,T8,V6$,V3$,Q3$,V8$ : RETURN 1480 V9$=T9$ADDCV0$ : DATA SAVE DA T$#T1,(V9$)T9$,T0$() : RETURN 1490 V9$=V2$ADDCV0$ : T0$()=@Q0$() : DATA SAVE DA T$#T1,(V9$,V9$)V2$,T0$() : @Q0$()=HEX(A0FDFDFD) : DATA SAVE BA T$#T1,(V9$)@Q0$() : STR(@Q0$(),2,2)=V2$ADDCHEX(03) : V9$=V3$ADDCV0$ADDCHEX(02) : DATA SAVE BA T$#T1,(V9$)@Q0$() : RETURN 1524 IF V=7THEN 1602 : ADDC(T3$,01) : IF STR(T3$,3)<=V8$THEN 1596 : Q2$=ADDCV6$ : T3$=STR(Q2$)&HEX(01) 1596 STR(T$(3),3*S2-2,3)=T3$ 1602 T4$=T3$ : RETURN 1626 DEFFN'234(T6,Q,T1$,V) : V=7 : GOSUB 726 : GOSUB 1473 : IF STR(T4$,1,2)>Q3$THEN 2974 : IF STR(T4$,3,1)>V8$THEN 2974 : T3$=T4$ : GOTO 1686 1662 DEFFN'233(T6,Q,T1$,V) : V=8 : GOSUB 726 : GOSUB 1473 : T4$,T3$=STR(T$(3),3*S2-2) : IF STR(T3$,3)<V8$THEN 1686 : IF Q2$<Q3$THEN 1688 : IF VAL(Q2$)<255THEN 2923 : GOTO 1688 1686 GOSUB 954 1688 IF V0<3THEN 2974 : IF VAL(T1$)=255THEN 2974 : Q2=1 : GOSUB 645 : IF T1$=T7$THEN 2935 : T1$=T7$ : T=T+T5 : T8$="1" : IF Q2=0THEN 1905 : IF Q2>8THEN 2923 : V9$=V2$ADDCBIN(Q2) : IF V3$<V9$THEN 2923 : GOSUB 580 1761 ADDC(V2$,01) : INIT(FF)@Q0$() : Q2,T6=INT(V8*V7/T5+.6)*T5 : IF T<V7-Q2+T5THEN 1791 : Q2=Q2-T5 1791 Q3=V7-Q2+1 : STR(@Q0$(),,Q2)=STR(T0$(),Q3) : STR(T0$(),Q3)=ALL(FF) : IF Q2=T6THEN 1845 : T=T-(V7-Q2) : IF T=Q2+1THEN 1830 : MAT COPY -@Q0$()<T,Q2+1-T>TO -@Q0$()<T+T5,Q2+1-T> 1830 IF T3=1THEN GOSUB 1524 : $PACK(F=V4$)@Q0$()<T,T5>FROMT1$,T3$ : GOTO 1851 1845 GOSUB 1443 1851 T1$=STR(@Q0$(),,T4) : T3$=V2$ : GOSUB 1480 : GOSUB 1490 : T3=T3+1 : IF T3>T0THEN 1944 : V9$=T2$(T3) : GOSUB 609 : T=VAL(STR(T$,T3))+T5 : IF STR(T0$(),V1)<HEX(FF)THEN 1761 : @T=0 1905 GOSUB 1443 : GOSUB 1480 1912 T8=T8+1 1916 $PACK(F=@V$)T$(2)FROMT0,T2$,Q2$,V2$,T8 : GOSUB 880 : IF V0>3THEN 927 : STR(@T$(V6),10)=OR ALL(22) : GOSUB 888 : GOTO 927 1944 ADDC(V2$,01) : @Q0$()=ALL(FF) : STR(@Q0$(),,T5)=ALL(00) : STR(@Q0$(),T4+1,2)=T2$ : $PACK(F=V4$)STR(@Q0$(),T5+1,T5)FROMT1$,T3$ : GOSUB 1490 : T0=T3 : T2$=V2$ : IF V6=0THEN 1974 : $PACK(F=@V$)STR(@T$(V6),7,3)FROMT0,T2$ : STR(@T$(V6),10)=OR ALL(44) 1974 T8$="5" : @T=0 : GOTO 1912 1986 DEFFN'231(T6,Q,T1$) : V=6 : GOSUB 726 : IF V0<3THEN 2974 : IF VAL(T1$)=255THEN 2974 : GOSUB 645 : IF T1$<>T7$THEN 2953 : IF T4$>HEX(FF)THEN 2974 : GOSUB 954 2013 IF T<V1THEN STR(T0$(),T)=STR(T0$(),T+T5) : STR(T0$(),V1)=ALL(FF) 2028 GOSUB 1480 : IF T=1THEN 2052 : GOSUB 1473 : T8=T8-1 : T8$="1" : GOTO 1916 2052 T1$=T0$(1) : T3=T3+1 : V9$=T2$(T3) : GOSUB 609 : T=VAL(STR(T$,T3)) : IF VAL(T1$)=255THEN 2013 : $PACK(F=V4$)T0$()<T,T4>FROMT1$ : GOTO 2028 2091 DEFFN'230(T6,Q,Q2,Q3,V7$,V,T1$,V4$,T3$) : IF INT((S2-1)/16)<>0THEN 2911 : IF V0$(T6)<>" "THEN 2911 : GOSUB 858 : T9=0 : IF V<1OR V>4THEN 2911 : IF VAL(STR(T0$,Q+1))+VAL(STR(T0$,Q2+1))>64THEN 2911 : IF Q=Q2THEN 2911 : V7$(T6),T$=V7$ : STR(T$,5,1)="K" : CONVERT Q3TO STR(T$,6,1),(#) : T1=Q : T2=Q2 : V0=V : T4$=V4$ 2174 IF POS("3BD"=T4$)*POS("123567"=STR(T4$,2))*POS("012345"=STR(T4$,3))=0THEN 2911 : SELECT #Q<T4$> : $GIO#Q,(70A04000870B,V7$) : ERRORGOTO 2911 2184 IF STR(V7$,11,1)<>HEX(D0)AND STR(T4$,3)>"0"THEN 2911 : IF Q=Q2THEN 2194 : Q=Q2 : T4$=T3$ : GOTO 2174 2194 LIMITS T#T1,T$,V,T3,T,Q : $CLOSE#T1 : IF Q<>2THEN 2911 : V0$=BIN(V,2) : Q2=INT(Q3/10) : GOSUB '217(V7$(T6),T2,S2,Q2,V0,T1$,V9$,0) : IF Q$>" "THEN RETURN : GOSUB 873 : STR(T$(2),13,2)=BIN(T3-V-2,2) : T=VAL(STR(T$(2),12)) : STR(T$(2),15,2)=BIN((INT(Q/T)-1)*T,2) : IF V4$<"8"THEN STR(V4$,3)="1" : HEXPACKT8$FROMSTR(V4$,2,2) : IF T3$<"8"THEN STR(T3$,3)="1" 2230 HEXPACKQ$FROMSTR(T3$,2) : V7$=STR(V0$)&T8$&STR(V9$)&Q$&ALL(FF) : T4=VAL(STR(T$(2),22)) : T5=T4+3 : V4$=HEX(A000A003) : BIN(STR(V4$,2))=T4 : V7=INT(240/T5)*T5 : V1=V7-T5+1 : T8$="E" : GOSUB 580 : T3=1 2252 MAT SEARCH@T$(),=STR(V7$,T3,3)TO V9$STEP 17 : T=VAL(V9$,2) : IF T>0THEN 2274 : T3=T3+6 : IF T3<8THEN 2252 : @T=0 : GOSUB '219(V7$(T6),T2,S2," ",0) : Q$="S" : RETURN 2274 V6=(T+16)/17 : IF T3=1THEN 2278 : STR(@T$(V6),1,9)=STR(V7$,,6)&STR(T$(2),,3) : GOSUB 880 2278 $UNPACK(F=@V$)T$(2)TO T0,T2$ : GOSUB 825 : @T=0 : Q$=" " : V8=.5 : T9=T6 : STR(T0$,T1+1,1),STR(T0$,T2+1,1)="X" 2298 $PACK(F=@Q8$)V0$(T9)FROMV0$,V6,V4$,V0,T1,T2,T4,T5,V7,V1 : RETURN 2346 DEFFN'213(T6,T3,T1$) : Q=0 : V=5 : GOSUB 726 : IF T3<1OR T3>4THEN 2974 : GOSUB '217(V7$(T9),T2,S2,-1,T3,T1$,V9$,0) : IF Q$<>" "THEN 2890 : T=V0 : V0=T3 : GOSUB 2298 : T8$="E" : IF MOD(T,2)=1THEN 901 : GOSUB 824 : GOTO 590 2384 DEFFN'239(T6) : Q=0 : V=5 : IF T6>0THEN T3$="P" : ELSE T3$="S" : T6=ABS(T6) : GOSUB 726 : T8$="F" : GOSUB 880 : STR(T0$,T1+1,1),STR(T0$,T2+1,1)=" " : IF V0<3THEN 2415 2409 IF T3$="P"THEN GOSUB 2445 2415 Q$=" " : GOSUB '219(V7$(T9),T2,S2," ",0) : V0$(T9)=" " : T9=0 : GOSUB 824 : IF POS(V7$<>"F")=0THEN @T$(V6)=ALL(FF) : IF MOD(V0,2)=1THEN 908 : GOTO 590 2445 T6=MOD(VAL(STR(T$(2),4),2)+VAL(STR(T$(2),12)),65536) : DATA LOAD DC OPEN T#T2,V7$(T9) : IF T6>0THEN DSKIP #T2,T6S : GOSUB '218(V7$(T9),T2,V9$,0) : LIMITS T#T2,V7$(T9),Q2,T,T3 : T=T-1 : T9$=HEX(FF) : T0$()=HEX(A0FD)&T$() : DATA SAVE BA T$#T2,(T)T0$() : DATA LOAD DC OPEN T#T2,V7$(T9) : RETURN 2488 DEFFN'214(T6) : Q=0 : V=5 : GOSUB 726 : Q$=" " : GOSUB 2445 : GOTO 1431 2504 DEFFN'217(V7$,Q3,S2,Q2,T,T1$,V9$,T8) : GOSUB 2724 : LIMITS T#Q3,V7$,@Q6,@Q7,@Q8,@Q9 : Q=@Q7-@Q6-1 : V9$=BIN(@Q7,2) : Q$="D" : IF ABS(@Q9)=1THEN 2626 2522 IF Q2<=0THEN 2556 : IF @Q9=2THEN 2626 : Q$="S" : T=4 : IF @Q9=0THEN 2548 : IF @Q7-@Q6+1<Q2THEN 2626 : DATA SAVE DC OPEN T#Q3,V7$,V7$ : GOTO 2560 2548 DATA SAVE DC OPEN T#Q3,Q2,V7$ : ERRORGOTO 2626 2550 LIMITS T#Q3,@Q6,@Q7,@Q8 : GOTO 2560 2556 IF @Q9<2THEN 2626 2560 GOSUB 2632 : Q$="M" : IF STR(@Q0$(),4,4)<>HEX(FD4D5558)AND Q2=-2THEN 2626 : STR(@Q0$(1),9)=V7$ : IF STR(@Q0$(),4,4)=HEX(FD4D5558)THEN 2576 : STR(@Q0$(),4,4)=HEX(FD4D5558) : STR(@Q0$(),17)=T1$ 2576 Q$="P" : IF T1$<>@Q0$(2)THEN 2626 : Q$="A" : @Q6$=STR(@Q0$(),33,48) : IF STR(@Q6$,S2,1)=" "XOR Q2<>-1THEN 2626 : STR(@Q6$,S2,1)=" " : ON T-1GOTO 2596,2600,2604 : T1$=" 1 2 3" : GOTO 2602 2596 T1$=" 1 2" : GOTO 2602 2600 T1$=" 1 3" 2602 $TRAN(@Q6$,T1$)R 2604 IF @Q6$<>" "THEN 2626 : CONVERT TTO STR(@Q0$(),32+S2,1),(#) : GOSUB 2638 : DATA LOAD DC OPEN T#Q3,V7$ : Q$=" " 2626 IF T8=0THEN $CLOSE#Q3 : @T=0 : RETURN 2632 DATA LOAD BA T#Q3,(@Q7)@Q0$() : RETURN 2638 DATA SAVE BA T#Q3,(@Q7)@Q0$() : RETURN 2646 DEFFN'218(V7$,Q3,V9$,T8) : GOSUB 2724 : LIMITS T#Q3,@Q6,@Q7,@Q8 : Q$="F" : IF @Q7<=@Q8THEN 2626 : Q$=" " : IF @Q8=@Q7-1THEN Q$="S" : @Q6=@Q8-@Q6+2 : @Q0$()=HEX(A0) : DATA SAVE BA T#Q3,(@Q8)@Q0$() : GOSUB 2632 : STR(@Q0$(),2,2)=BIN(@Q6,2) : GOSUB 2638 : DATA LOAD DC OPEN T#Q3,V7$ : DSKIP #Q3,END : GOTO 2626 2690 DEFFN'219(V7$,Q3,S2,V9$,T8) : GOSUB 2724 : LIMITS T#Q3,V7$,@Q6,@Q7,@Q8 : GOSUB 2632 : Q$,STR(@Q0$(),32+S2,1)=" " : GOSUB 2638 : DATA SAVE DC CLOSE#Q3 : GOTO 2626 2724 $OPEN #Q3 : IF @T=0THEN @T=S2 : ELSE GOTO 2730 : RETURN 2730 $CLOSE#Q3 : $BREAK1 : GOTO 2724 2890 T8$="8" : GOTO 1431 2908 RETURN CLEAR 2911 Q$="X" : RETURN 2923 Q$="S" : GOTO 2890 2935 Q$="D" : GOTO 2890 2947 T8$="1" : Q$="N" : GOTO 1431 2953 Q$="N" : GOTO 2890 2974 Q$="X" : GOTO 2890 2989 IF V=4THEN 2953 : Q$="E" : GOTO 2890