Listing of file='PKDIAD' on disk='vmedia/701-2720C.wvd.zip'
# Sector 69, program filename = 'PKDIAD' 0010 REM % C O M M O N V A R I A B L E S 0020 COM G3$(G3)G6,L3$(L3)L6,L3,L5,L6,G3,G5,G6,H7$7,G4$(G3)5,L3$(L3)L6,F7,F1$( F7)2 : COM M3,F5,C9,R9,C8,C6,D5,D6 : GOTO 3001 0050 DEFFNS(Q)=VAL(STR(F1$(Q),1,1)) 0060 DEFFNL(Q)=VAL(STR(F1$(Q),2,1)) 3001 DIM A1$1 3025 LOAD T"PKMAIN"3000,9999BEG 3025 5010 STR(G3$(G5+1),FNS(8),FNL(8))="+" : GOTO 5050 5020 STR(G3$(G5+1),FNS(8),FNL(8))="-" : GOTO 5050 5030 STR(G3$(G5+1),FNS(8),FNL(8))="x" : GOTO 5050 5040 STR(G3$(G5+1),FNS(8),FNL(8))="/" 5050 A4=0 : PRINT AT(18,50,30);AT(19,50,30);AT(20,50,30);AT(21,50,30);AT(22,50,30);AT (23,50,30); : FOR I1=1TO G5 : IF STR(G3$(I1),FNS(1),6)<>"Field-"THEN 5080 : IF STR(G3$(I1),FNS(1)+6,1)<HEX(30)AND STR(G3$(I1),FNS(1)+6,1)>HEX(39)THEN 5080 : CONVERT STR(G3$(I1),FNS(1)+6,1)TO B1 : IF B1>A4THEN A4=B1 5080 NEXT I1 : STR(G3$(G5+1),FNS(1),FNL(1))="Field-" : A4=A4+1 : CONVERT A4TO STR(G3$(G5+1),FNS(1)+6,1),(#) 5084 PRINT AT(16,0,80);AT(16,10);HEX(0E);"Please enter this new field's name: "; : GOSUB '123(STR(G3$(G5+1),FNS(1),FNL(1)),FNL(1),16,46,2424," ",HEX(0D82) ) : STR(G3$(G5+1),FNS(1),FNL(1))=STR(S$,1,FNL(1)) : PRINT HEX(0F); : FOR A4=FNL(1)TO 1STEP -1 : IF STR(G3$(G5+1),FNS(1)+A4-1,1)<>" "THEN 5093 : NEXT A4 5090 IF STR(G3$(G5+1),FNS(1),FNL(1))<>" "THEN 5093 : PRINT HEX(07); : GOTO 5084 5093 FOR I1=1TO G5 : IF STR(G3$(I1),FNS(1),FNL(1))<>STR(G3$(G5+1),FNS(1),FNL(1))THEN GOTO 5100 : IF STR(G3$(I1),FNS(8),FNL(8))="???"THEN 5130 : PRINT HEX(07); : GOTO 5084 5100 NEXT I1 5130 PRINT AT(16,0,80);STR(G3$(G5+1),FNS(1),FNL(1));" = Operand-1 ";STR(G3$(G5 +1),FNS(8),1);" Operand-2";HEX(0E);" Is Operand-1 a constant ? "; : GOSUB '123("N",1,16,65,2424," ",HEX(0D82)) : A1$=S$ : PRINT HEX(0F); : IF A1$="N"THEN 5210 : IF A1$<>"Y"THEN 5130 5170 PRINT AT(16,0,80);STR(G3$(G5+1),FNS(1),FNL(1));" = Operand-1 ";STR(G3$(G5 +1),FNS(8),1);" Operand-2";HEX(0E);" What is the constant ? "; 5171 GOSUB '123(" ",11,16,60,2424," ",HEX(0D82)) : CONVERT STR(S$,1,11)TO A6 : ERRORGOTO 5171 5182 GOSUB '95(A6) : STR(G3$(G5+1),FNS(10),FNL(10))=STR(Z1$,1,8) : STR(G3$(G5+1),FNS(9),FNL(9))="C" : T1=0 : A5=FNL(1) : GOTO 5390 5210 PRINT AT(16,0,80);AT(16,10);HEX(0E);"Please choose Operand-1";HEX(0F); : GOSUB '98(2) : PRINT AT(R9+1,0,80); : FOR I1=1TO G5 : IF STR(G4$(I1),FNS(14),FNL(14))="Y"THEN 5270 : NEXT I1 : GOTO 3025 5270 STR(G3$(G5+1),FNS(9),FNL(9))="F" : STR(G3$(G5+1),FNS(10),FNL(10))=STR(G3$(I1),FNS(1),FNL(1)) : STR(G3$(G5+1),FNS(5),FNL(5))=STR(G3$(I1),FNS(5),FNL(5)) : T1=VAL(STR(G3$(I1),FNS(6),FNL(6))) : PRINT AT(18,50,30);AT(19,50,30);AT(20,50,30);AT(21,50,30);AT(22,50,30);AT (23,50,30); : A5=8 5310 PRINT AT(16,0,80);STR(G3$(G5+1),FNS(1),FNL(1)); : IF STR(G3$(G5+1),FNS(9),FNL(9))="F"THEN 5315 : GOSUB '96(STR(G3$(G5+1),FNS(10),FNL(10))) : GOSUB '100(Z1) : PRINT " = ";STR(G3$,1,12); : GOTO 5320 5315 PRINT " = ";STR(G3$(G5+1),FNS(10),FNL(10));" "; 5320 PRINT " ";STR(G3$(G5+1),FNS(8),1); : PRINT " Operand-2";HEX(0E);" Is Operand-2 a constant ? "; : GOSUB '123("N",1,16,65,2424," ",HEX(0D82)) : A1$=S$ : PRINT HEX(0F); : IF A1$="N"THEN 5390 : PRINT AT(16,37,47);HEX(0E);" What is the constant ? "; 5360 GOSUB '123(" ",11,16,68,2424," ",HEX(0D82)) : CONVERT STR(S$,1,11)TO A6 : ERRORGOTO 5360 5362 GOSUB '95(A6) : STR(G3$(G5+1),FNS(11),FNL(11))="C" : STR(G3$(G5+1),FNS(12),FNL(12))=STR(Z1$,1,8) : T2=0 : GOSUB '100(A6) : A5=FNL(1) : GOTO 5452 5390 PRINT AT(16,0,80);AT(16,10);HEX(0E);"Please choose Operand-2";HEX(0F); : GOSUB '98(2) : PRINT AT(R9+1,0,80); : FOR I1=1TO G5 : IF STR(G4$(I1),FNS(14),FNL(14))="Y"THEN 5450 : NEXT I1 : GOTO 3025 5450 STR(G3$(G5+1),FNS(11),FNL(11))="F" : STR(G3$(G5+1),FNS(12),FNL(12))=STR(G3$(I1),FNS(1),FNL(1)) : STR(G3$(G1+1),FNS(5),FNL(5))=STR(G3$(I1),FNS(5),FNL(5)) : T2=VAL(STR(G3$(I1),FNS(6),FNL(6))) 5452 IF T1>T2THEN STR(G3$(G5+1),FNS(6),FNL(6))=BIN(T1) : ELSE STR(G3$(G5+1),FNS(6),FNL(6))=BIN(T2) 5455 PRINT AT(18,50,30);AT(19,50,30);AT(20,50,30);AT(21,50,30);AT(22,50,30);AT (23,50,30);AT(16,0,80);STR(G3$(G5+1),FNS(1),FNL(1));" = "; : GOSUB '100(A6) : IF STR(G3$(G5+1),FNS(9),FNL(9))="F"THEN 5460 : PRINT STR(G3$,1,12);" "; : GOTO 5465 5460 PRINT STR(G3$(G5+1),FNS(10),FNL(10));" "; 5465 PRINT STR(G3$(G5+1),FNS(8),1);" "; : IF STR(G3$(G5+1),FNS(11),FNL(11))="F"THEN 5470 : PRINT STR(G3$,1,12);" "; : GOTO 5475 5470 PRINT STR(G3$(G5+1),FNS(12),FNL(12)); 5475 PRINT HEX(0E);" Is this okay ?"; : GOSUB '123("Y",1,16,65,2424," ",HEX(0D82)) : A1$=S$ : PRINT HEX(0F); : IF A1$<>"Y"AND A1$<>"N"THEN 5455 : IF A1$="N"THEN 5560 : STR(G3$(G5+1),FNS(7),FNL(7))=BIN(100) : STR(G3$(G5+1),FNS(2),FNL(2))="S" : STR(G3$(G5+1),FNS(13),FNL(13))="Y" : STR(G3$(G5+1),FNS(5),FNL(5))=HEX(0101010101FF) 5514 FOR I=1TO G5 : IF STR(G3$(I),FNS(1),FNL(1))=STR(G3$(G5+1),FNS(1),FNL(1))THEN 5520 : NEXT I : STR(G3$(G5+1),FNS(3),FNL(3))=BIN(1,2) : STR(G3$(G5+1),FNS(4),FNL(4))=BIN(12,2) : GOTO 5550 5520 IF STR(G3$(I),FNS(8),FNL(8))<>"???"THEN STOP "PKDIAD "# : STR(G3$(I),FNS(1),FNL(1))=" " : STR(G3$(G5+1),FNS(3),FNL(3))=STR(G3$(I),FNS(3),FNL(3)) : STR(G3$(G5+1),FNS(4),FNL(4))=STR(G3$(I),FNS(4),FNL(4)) : STR(G3$(G5+1),FNS(5),FNL(5))=STR(G3$(I),FNS(5),FNL(5)) 5550 G5=G5+1 : PRINT AT(16,0,80);AT(16,10);HEX(0E);"Regenerating Diagram ...";HEX(0F);AT (23,50,30);HEX(06); : LOAD T"PKREGEN"3000,9999 5560 PRINT AT(R9+1,0,80);AT(23,50,30); : R9=1 : C9=11 : FOR A2=1TO G5 : STR(G4$(A2),FNS(14),FNL(14))="N" : NEXT A2 : G3$(G5+1)=ALL(" ") : GOTO 3025 8010 DEFFN'99(M1) 8020 Z1=1 : FOR A3=1TO G5 : C9=VAL(STR(G4$(A3),FNS(16),FNL(16)),2) : R9=VAL(STR(G4$(A3),FNS(15),FNL(15))) : T3$=STR(G3$(A3),FNS(2),FNL(2)) : T2$=STR(G3$(A3),FNS(8),FNL(8)) : T4$=STR(G3$(A3),FNS(13),FNL(13)) : T1=VAL(STR(G3$(A3),FNS(6),FNL(6))) : C9=C9-W1(1,2)+W1(1,6) : R9=R9-W1(1,1)+W1(1,5) 8040 IF C9<W1(1,6)OR C9>W1(1,6)+W1(1,4)-1OR R9<W1(1,5)OR R9>W1(1,5)+W1(1,3)-1T HEN 8100 : IF T4$="N"THEN 8100 : IF T3$<>"S"AND T3$<>"U"AND M1=2THEN 8100 : IF T4$="N"THEN 8100 : IF T1=0AND M1=1THEN 8100 : IF T2$<>"NO"AND M1=1THEN 8100 : IF STR(G4$(A3),FNS(14),FNL(14))="Y"THEN PRINT AT(R9+1,C9);HEX(0202020F960 202000E); : ELSE PRINT AT(R9+1,C9);"."; : Z1=0 8100 NEXT A3 : IF Z1=0THEN RETURN 8120 PRINT HEX(06); : KEYIN A$,,8140 8130 PRINT HEX(07); : GOTO 8120 8140 IF A$<>HEX(02)THEN 8170 : IF C6-C8<=80-C8THEN 8130 : C6=C6-C8 : PRINT AT(R9+1,0,80); : GOSUB '222(1,0,C8) : GOSUB '94 : GOTO 8020 8170 IF A$<>HEX(03)THEN 8210 : IF C6+C8>F5THEN 8130 : C6=C6+C8 : PRINT AT(R9+1,0,80); : GOSUB '222(1,0,-1*C8) : GOSUB '94 : GOTO 8020 8210 IF A$<>HEX(F0)AND A$<>HEX(50)THEN 8130 : Z1=1 : R9=1 : C9=11 : RETURN 8240 DEFFN'98(M3) : PRINT AT(18,50,30);AT(19,50,30);AT(20,50,30);AT(21,50,30);AT(22,50);"Retu rn - Select ";AT(23,50);HEX(0E);"CANCEL/EDIT - Cancel ";HEX(0F); : GOSUB '94 : FOR I1=1TO G5 : STR(G4$(I1),FNS(14),FNL(14))="N" : NEXT I1 : A2=1 8290 GOSUB '85 : GOSUB '99(M3) : IF Z1=1THEN 8570 8300 R9=VAL(STR(G4$(A2),FNS(15),FNL(15))) : R9=R9-W1(1,1)+W1(1,5) : C9=VAL(STR(G4$(A2),FNS(16),FNL(16)),2) : C9=C9-W1(1,2)+W1(1,6) : T3$=STR(G3$(A2),FNS(2),FNL(2)) : T4$=STR(G3$(A2),FNS(13),FNL(13)) : IF T4$="N"THEN 8315 : IF M3=2AND T3$<>"S"AND T3$<>"U"THEN 8315 8310 IF C9>=W1(1,6)AND C9<=W1(1,6)+W1(1,4)-1AND R9>=W1(1,5)AND R9<=W1(1,5)+W1( 1,3)-1THEN 8320 8315 IF A2<G5THEN A2=A2+1 : ELSE A2=1 : GOTO 8300 8320 PRINT AT(R9+1,C9);HEX(02050F); : KEYIN A$,,8480 : PRINT AT(R9+1,C9);"."; : IF A$<>" "THEN 8390 8370 A2=A2+1 : IF A2>G5THEN A2=1 : R9=VAL(STR(G4$(A2),FNS(15),FNL(15))) : C9=VAL(STR(G4$(A2),FNS(16),FNL(16)),2) : R9=R9-W1(1,1)+W1(1,5) : C9=C9-W1(1,2)+W1(1,6) : T3$=STR(G3$(A2),FNS(2),FNL(2)) : T4$=STR(G3$(A2),FNS(13),FNL(13)) : IF T4$="N"THEN 8370 : IF M3=2AND T3$<>"S"AND T3$<>"U"THEN 8370 8380 IF C9>=W1(1,6)AND C9<=W1(1,6)+W1(1,4)-1AND R9>=W1(1,5)AND R9<=W1(1,5)+W1( 1,3)-1THEN 8320 : GOTO 8370 8390 IF A$<>HEX(08)THEN 8420 8400 A2=A2-1 : IF A2<1THEN A2=G5 : R9=VAL(STR(G4$(A2),FNS(15),FNL(15))) : C9=VAL(STR(G4$(A2),FNS(16),FNL(16)),2) : R9=R9-W1(1,1)+W1(1,5) : C9=C9-W1(1,2)+W1(1,6) : T3$=STR(G3$(A2),FNS(2),FNL(2)) : T4$=STR(G3$(A2),FNS(13),FNL(13)) : IF T4$="N"THEN 8400 : IF M3=2AND T3$<>"S"AND T3$<>"U"THEN 8400 8410 IF C9>=W1(1,6)AND C9<=W1(1,6)+W1(1,4)-1AND R9>=W1(1,5)AND R9<=W1(1,5)+W1( 1,3)-1THEN 8320 : GOTO 8400 8420 IF A$<>HEX(0D)THEN 8460 : STR(G4$(A2),FNS(14),FNL(14))="Y" : PRINT AT(R9+1,C9);HEX(0202020F960202000E0802050F); : Z1=0 : RETURN 8460 PRINT HEX(07); : GOTO 8320 8480 IF A$<>HEX(02)THEN 8510 : IF C6-C8<=80-C8THEN 8320 : C6=C6-C8 : PRINT AT(R9+1,0,80); : GOSUB '222(1,0,C8) : GOSUB '94 : GOTO 8290 8510 IF A$<>HEX(03)THEN 8550 : IF C6+C8>F5THEN 8320 : C6=C6+C8 : PRINT AT(R9+1,0,80); : GOSUB '222(1,0,-1*C8) : GOSUB '94 : GOTO 8290 8550 IF A$<>HEX(09)THEN 8560 : STR(G4$(A2),FNS(14),FNL(14))="N" : PRINT AT(R9+1,C9);"."; : GOTO 8320 8560 IF A$<>HEX(F0)AND A$<>HEX(50)THEN 8460 8570 PRINT HEX(06);AT(R9+1,0,80);AT(23,50,30); : R9=1 : C9=11 : FOR A2=1TO G5 : STR(G4$(A2),FNS(14),FNL(14))="N" : NEXT A2 : G3$(G5+1)=ALL(" ") : Z1=1 : RETURN 9001 DEFFN'100(G1) : STR(G$,1,12)="-###########" : CONVERT G1TO STR(G3$,1,12),(G$) : CONVERT STR(G3$,1,12)TO G2 : IF G2=G1THEN RETURN : FOR H3=11TO 1STEP -1 : STR(G$,H3,1)="." : CONVERT G1TO STR(G3$,1,12),(G$) : CONVERT STR(G3$,1,12)TO G2 : IF G2=G1THEN RETURN : STR(G$,H3,1)="#" : NEXT H3 : STOP "PKEX1"# 9101 DEFFN'123(S$,S1,S2,S3,S7,S5$,S6$) 9102 S5=S3 : $TRAN(S6$,HEX(FE0D))R : S4=1 : S8$=BIN(INT(S7/1000))&BIN(MOD(INT(S7/100),10)) : PRINT AT(S2,S3);HEX(0202020F0204);STR(S8$,1,2);HEX(0E);STR(S$,1,S1);AT(S2 ,S3); 9103 PRINT HEX(05); : KEYIN S9$,,9105 : PRINT HEX(06); : IF S9$=HEX(84)THEN 9103 : $TRAN(S9$,HEX(FE0D))R : IF POS(HEX(82FEA1E5)=S9$)>0THEN 9106 : IF S9$=HEX(08)THEN 9121 : IF S4>S1THEN 9103 : IF POS(S5$="S")>0AND S9$=" "THEN S9$=HEX(80) : PRINT AT(S2,S5);S9$; : STR(S$,S4,1)=S9$ : IF POS(S5$="A")>0AND S4>=S1THEN 9104 : S5=S5+1 : S4=S4+1 : GOTO 9103 9104 S8$=BIN(MOD(INT(S7/10),10))&BIN(MOD(INT(S7),10)) : IF POS(S5$="L")>0THEN S7=LEN(S$) : ELSE S7=S1 : PRINT AT(S2,S3);HEX(0202020F0204);STR(S8$,1,2);HEX(0E);STR(S$,1,S7);HEX(0 202000F020402000F); : IF POS(S5$="L")>0AND LEN(S$)<S1THEN PRINT STR(S$,LEN(S$)+1,S1-LEN(S$)); : IF POS(S5$="A")>0AND S4>=S1AND POS(S6$=S9$)=0THEN S9$=HEX(FF) : RETURN 9105 PRINT HEX(06); : $TRAN(S9$,HEX(0A4A0A5A094909590C5C0C4C0D5D0D4DE548))R : IF S9$=HEX(0D)THEN 9116 9106 PRINT HEX(06); : IF POS(S6$=S9$)>0THEN 9104 : IF S9$=HEX(E5)THEN 9123 : ON VAL(S9$)-3GOTO 9107,9103,9103,9109,9110,9112,9113,9114,9115,9116,9117 : GOTO 9103 9107 IF LEN(S$)=S1THEN S4=S1 : ELSE IF S$<>" "THEN S4=LEN(S$)+1 : ELSE S4=1 : S5=S3+LEN(S$) : IF S$=" "THEN S5=S3 : IF S5>S3+S1-1THEN S5=S3+S1-1 9108 PRINT AT(S2,S5); : GOTO 9103 9109 S5=S3 : S4=1 : GOTO 9108 9110 STR(S$,S4)=" " 9111 PRINT AT(S2,S3);STR(S$,1,S1);AT(S2,S5); : GOTO 9103 9112 STR(S$,S4)=STR(S$,S4+1) : GOTO 9111 9113 FOR S6=S1TO S4+1STEP -1 : IF S6>1THEN STR(S$,S6,1)=STR(S$,S6-1,1) : NEXT S6 : STR(S$,S4,1)=" " : GOTO 9111 9114 S6=5 : GOTO 9118 9115 S6=1 : GOTO 9118 9116 S6=-1 : GOTO 9118 9117 S6=-5 9118 S5=S5+S6 : S4=S4+S6 : IF S4>0THEN 9119 : S4=1 : S5=S3 9119 S6=LEN(S$) : IF S$=" "THEN S6=0 : IF S4<=S6THEN 9120 : S5=S3+S6 : S4=S6+1 9120 PRINT AT(S2,S5); : GOTO 9103 9121 S4=S4-1 : S5=S5-1 : IF S4>0THEN 9122 : S4=1 : S5=S3 9122 IF POS(S5$="S")=0THEN STR(S$,S4,1)=" " : ELSE STR(S$,S4,1)=HEX(80) : GOTO 9111 9123 S$=" " : GOTO 9102 9201 DEFFN'95(Z1) : $PACKZ1$FROMZ1 : Z1$=STR(Z1$,4,8)&ALL(00) : RETURN 9206 DEFFN'96(Z1$) : Z2$=HEX(800108)&STR(Z1$,1,8)&HEX(80) : $UNPACKZ2$TO Z1 : RETURN 9400 DEFFN'85 : RETURN 9410 KEYIN A$,9420,9420 : GOTO 9430 9420 PRINT HEX(07); : GOTO 9410 9430 RETURN 9500 DEFFN'94 : IF C6-C8<=80-C8THEN PRINT AT(18,50,30); : ELSE PRINT AT(18,50);"'2 - Look Right"; : IF C6+C8>F5THEN PRINT AT(19,50,30); : ELSE PRINT AT(19,50);"'3 - Look Left"; : RETURN 9600 DEFFNR(D4)=17+D4-((INT((D4-1)/D6))*D6) 9610 DEFFNC(D4)=INT((D4-1)/D6)*D5 9701 DEFFNS(Q)=VAL(STR(F1$(Q),1,1)) 9702 DEFFNL(Q)=VAL(STR(F1$(Q),2,1)) 9900 DEFFN'0"\A0HEX(03);:LISTSD 9100, 9699";HEX(0D) : ON SGOTO 5010,5020,5030,5040 9999 % SCRATCH T "PKDIAD":SAVE T ()"PKDIAD"