1 COM A[25],V[2,10] 2 COM A$[255],A1$[255],B0$[5],D0$[255],F0$[1],F1$[11],S0$[6] 3 COM H0$[94],H1$[94],J0$[3],J1$[3],K1$[15],P0$[184],P1$[4] 4 COM N0$[1],U0$[11],U1$[11],V0$[10],V1$[10],W$[102],W0$[8],W1$[255],Z$[255] 5 COM C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,D0 6 COM D,D1,D2,F9,G,G0,G8,L,S0,V0,V1,V2,V3,V5,V7 7 COM W0,W1,W3,W5,W8,W9 10 COM L[5],M[64,2],N[64,2],P[2] 11 COM B$[94],L$[94],M$[94],N$[94],O$[94],P$[94] 12 COM L1,L2,L3,L4,L7,M1,M2,M3,M4,M5,M7,M8,M9,N1,N2,N3,N4 15 REM (C) COPYRIGHT HEWLETT-PACKARD CO. 1976 16 REM ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, 17 REM REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE 18 REM PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD CO. 50 FILES *,* 99 CHAIN "$EDITOR" 100 REM *ENTRY* 110 IF ERROR THEN 9998 120 ASSIGN U0$,C1,J, RR 130 IF J THEN 9998 140 U0=V6=C0 145 D1=D 150 U1=C2 160 GOSUB 1000 165 W1=C0 170 A1$="EDIT00" 175 A1$[C7]=B0$ 180 CHAIN J,A1$,100 190 GOTO 9998 1000 REMP >>INSERT SYNTAX & POSITION<< 1005 IF M5 THEN 1200 1010 PRINT "No lines in WORK file." 1015 GOTO 1190 1020 PRINT "Missing or illegal range list" 1025 GOTO 1190 1030 PRINT "No lines in range" 1035 GOTO 1190 1040 PRINT "'"A1$"' is an illegal increment." 1045 GOTO 1190 1050 PRINT "Position not found" 1190 GOSUB 9700 1195 RETURN 1200 REM2 *SYNTAX* 1205 H=C0 1210 I1=C1 1215 G=A[C6] 1220 IF NOT LEN(A$) THEN 1275 1225 I=POS(A$[I1],"BY")+I1-C1 1230 IF I-I1+C1=C0 THEN 1400 1235 GOSUB 2000 1240 IF I1 THEN 1225 1245 A1$=A$[I+C2,LEN(A$)] 1250 A$=A$[C1,I-C1] 1255 GOSUB 6000 1260 IF NOT F1 THEN 1040 1265 G=F1 1270 IF LEN(A$) THEN 1400 1275 A$="*" 1400 REM2 *FIND POSITION* 1405 F2=C0 1410 F4=C2 1415 GOSUB 4500 1420 IF NOT E THEN 1430 1425 RETURN 1430 P[C1]=Q[C1] 1435 P[C2]=Q[C2] 1440 N4=Q[C3] 1445 M4=F5 1450 A1$="EDIT26" 1455 A1$[C7]=B0$ 1460 D=26 1465 CHAIN J,A1$,100 1470 GOTO 9998 2000 REM2 2005 I1=POS(A$[I],'34) 2010 IF I1 THEN 2030 2015 I1=POS(A$[I],"@") 2020 IF I1 THEN 2030 2025 RETURN 2030 I1=I1+I-C1 2035 RETURN 4500 REM 4502 MAT Q=ZER 4504 I=NUM(A$) 4506 IF I=34 OR I=64 THEN 4512 4508 GOSUB 4800 4510 GOTO 4514 4512 IF F2 THEN 4530 4513 GOSUB 4900 4514 IF E THEN 4594 4516 I=NUM(A$) 4518 IF I#43 AND I#45 THEN 4526 4520 GOSUB 4700 4522 IF E THEN 4594 4523 Q[C2]=F1 4524 Q[C3]=A[C2] 4525 F5=A[C3] 4526 IF A$[C1,C1]#"(" THEN 4646 4528 IF NOT F2 THEN 4534 4530 E=C6 4532 GOTO 4594 4534 X1=Q[C1] 4536 X2=Q[C2] 4538 GOSUB 7200 4540 IF E THEN 4550 4542 Q[C1]=L1 4544 Q[C2]=C0 4546 GOSUB 5300 4548 GOTO 4554 4550 E=C5 4552 GOTO 4594 4554 A$=A$[C2] 4556 I=NUM(A$) 4558 IF I=34 OR I=64 THEN 4566 4562 GOSUB 5500 4564 GOTO 4568 4566 GOSUB 5600 4568 IF E THEN 4594 4570 I=NUM(A$) 4572 IF I#43 AND I#45 THEN 4580 4574 GOSUB 4700 4576 IF E THEN 4594 4578 Q[C3]=Q[C3]+F1 4579 F5=F5+F1 4580 IF Q[C3]A[C3] THEN 4588 4582 IF A$[C1,C1]#")" THEN 4592 4584 A$=A$[C2] 4586 RETURN 4588 E=C9 4590 GOTO 4594 4592 E=C7 4594 GOTO E OF 4644,4596,4600,4604,4608,4612,4616,4620,4626,4630,4630 4596 PRINT "Missing parameter"; 4598 GOTO 4622 4600 PRINT "Illegal line specification" 4602 GOTO 4642 4604 PRINT "Illegal relative specification" 4606 GOTO 4642 4608 PRINT "Position not found" 4610 GOTO 4642 4612 PRINT "Column specification not permitted here." 4614 GOTO 4642 4616 PRINT "Illegal column specification" 4618 GOTO 4642 4620 PRINT "Null string not permitted"; 4622 PRINT " in a position specification." 4624 GOTO 4642 4626 PRINT "Column ";Q[C3];"is out of bounds." 4628 GOTO 4642 4630 PRINT "'"A1$"' not found" 4642 GOSUB 9700 4644 E=100 4646 RETURN 4700 REM 4704 E=C0 4708 J1=C1 4712 IF A$[C1,C1]="+" THEN 4728 4716 IF Q[C1]=-C2 THEN 4768 4720 J1=-C1 4724 GOTO 4732 4728 IF Q[C1]=-C1 THEN 4768 4732 A$=A$[C2] 4736 GOSUB 5100 4740 IF J=43 OR J=45 THEN 4764 4744 IF NOT LEN(A1$) THEN 4776 4748 IF POS(A1$,".") THEN 4768 4752 CONVERT A1$ TO F1,4768 4756 F1=F1*J1 4760 RETURN 4764 A1$=A$[C1,C2] 4768 E=C4 4772 RETURN 4776 E=C2 4780 RETURN 4800 REM 4805 E=C0 4810 GOSUB 5100 4815 IF J=41 THEN 4885 4820 IF NOT LEN(A1$) THEN 4875 4825 I=NUM(A1$) 4830 IF I>47 AND I<58 OR I=46 THEN 4845 4835 GOSUB 5000 4840 RETURN 4845 GOSUB 6000 4850 IF NOT F1 THEN 4885 4855 Q[C1]=F1 4860 Q[C3]=A[C2] 4865 F5=A[C3] 4870 RETURN 4875 E=C2 4880 RETURN 4885 E=C3 4890 RETURN 4900 REM 4903 V4=F4 4906 GOSUB 9800 4909 IF E THEN 4969 4912 IF NOT LEN(A1$) THEN 4972 4915 IF LEN(A1$)>G8 THEN 4978 4918 X1=X2=C0 4921 GOSUB 7200 4924 IF E THEN 4978 4927 W$=B$[A[C2],A[C3] MIN LEN(B$)] 4930 B6=((P[C2]-A[C2]+C2) MIN LEN(W$)) MAX C1 4933 GOSUB 5208 4936 IF F3 THEN 4957 4939 GOSUB 7400 4942 IF E OR SYS(C3) THEN 4978 4945 GOSUB 7600 4948 GOSUB 5300 4951 GOSUB 5200 4954 IF NOT F3 THEN 4939 4957 Q[C1]=L1 4960 Q[C3]=F3 4963 F5=F3+LEN(A1$)-C1 4966 E=C0 4969 RETURN 4972 E=C8 4975 RETURN 4978 E=D0 4981 RETURN 5000 REM <*FL> 5005 RESTORE 5010 5010 DATA 3,1,"*",1,"LAST",1,"FIRST" 5015 GOSUB 9300 5020 IF NOT K2 THEN 5070 5025 Q[C2]=C0 5030 Q[C3]=A[C2] 5035 F5=A[C3] 5040 GOTO K2 OF 5045,5060,5060 5045 Q[C1]=P[C1] 5047 IF D#C7 AND D#C8 THEN 5055 5050 Q[C3]=F5=P[C2] 5055 RETURN 5060 Q[C1]=-K2+C1 5065 RETURN 5070 E=C4 5075 RETURN 5100 REM <+-(),/:> 5110 FOR I=C1 TO LEN(A$) 5120 J=NUM(A$[I,I]) 5130 IF J=40 OR J=41 OR (J>42 AND J<46) OR J=47 OR J=58 THEN 5150 5140 NEXT I 5150 A1$=A$[C1,I-C1] 5160 A$=A$[I] 5170 RETURN 5200 REM 5204 B6=C1 5208 B7=LEN(W$) 5212 B8=C0 5216 IF LEN(W$)96 AND I<123) OR (I>64 AND I<91) OR (I>47 AND I<58) THEN 5264 5244 IF F3+LEN(A1$)>LEN(W$) OR (F3+LEN(A1$)>B7 AND NOT B8) THEN 5256 5248 I=NUM(W$[F3+LEN(A1$)]) 5252 IF (I>96 AND I<123) OR (I>64 AND I<91) OR (I>47 AND I<58) THEN 5264 5256 F3=F3+A[C2]-C1 5260 RETURN 5264 F3=F3+C1 5268 I=POS(W$[F3,B7 MIN LEN(W$)],A1$) 5272 IF NOT I THEN 5288 5276 F3=F3+I-C1 5280 B8=C1 5284 GOTO 5232 5288 F3=C0 5292 RETURN 5300 REM 5310 IF NOT LEN(B$) OR LEN(B$) 5404 RESTORE 5408 5408 DATA 5,1,"*",2,"LAST",1,"FIRST",2,"LEFT",1,"RIGHT" 5412 GOSUB 9300 5416 GOTO K2 OF 5480,5452,5428,5464,5472 5420 E=C4 5424 RETURN 5428 IF NOT LEN(W$) THEN 5464 5432 FOR I=C1 TO LEN(W$) 5436 IF W$[I,I]#" " THEN 5444 5440 NEXT I 5444 Q[C3]=I+A[C2]-C1 5448 GOTO 5484 5452 IF NOT LEN(W$) THEN 5464 5456 Q[C3]=LEN(W$)+A[C2]-C1 5460 GOTO 5484 5464 Q[C3]=A[C2] 5468 GOTO 5484 5472 Q[C3]=A[C3] 5476 GOTO 5484 5480 Q[C3]=P[C2] 5484 E=C0 5488 RETURN 5500 REM 5505 E=C0 5510 GOSUB 5100 5515 IF J=40 THEN 5575 5520 IF NOT LEN(A1$) THEN 5565 5525 I=NUM(A1$) 5530 IF I>47 AND I<58 THEN 5545 5535 GOSUB 5400 5540 RETURN 5545 GOSUB 5700 5550 IF NOT F1 THEN 5575 5555 Q[C3]=F5=F1 5560 RETURN 5565 E=C2 5570 RETURN 5575 E=C7 5580 RETURN 5600 REM 5605 V4=F4 5610 GOSUB 9800 5615 IF E THEN 5670 5620 IF NOT LEN(A1$) THEN 5665 5625 GOSUB 5200 5630 IF NOT F3 THEN 5655 5635 Q[C3]=F3 5640 F5=F3+LEN(A1$)-C1 5645 E=C0 5650 RETURN 5655 E=11 5660 RETURN 5665 E=C8 5670 RETURN 5700 REM 5710 IF NOT LEN(A1$) OR LEN(A1$)>C2 THEN 5760 5720 CONVERT A1$ TO F1,5760 5730 IF F174+20*(A[C1] 6005 F1=POS(A1$,".") 6010 IF (A[C1]=C2 OR (A[C1]=C3 AND H)) AND F1 THEN 6050 6015 IF NOT F1 THEN 6025 6020 IF LEN(A1$[F1])>C3+(A[C1]=C3) THEN 6050 6025 CONVERT A1$ TO F1,6050 6030 IF A[C1]=C3 AND H THEN 6040 6035 F1=INT(F1*100*(((A[C1]=C3)*D0) MAX C1)+.5) 6040 IF (A[C1]=C2 AND F1>999900.) OR F1>999999. OR F1 <= C0 THEN 6050 6045 RETURN 6050 F1=C0 6055 RETURN 7200 REM 7202 IF NOT M5 THEN 7212 7204 GOTO X1+C3 OF 7216,7224,7238 7206 X=X1 7208 GOSUB 7500 7210 IF L4 THEN 7242 7212 E=C1 7214 RETURN 7216 X=C0 7218 GOSUB 7500 7220 GOSUB 7400 7222 GOTO 7242 7224 X=M[M2,C1] 7226 GOSUB 7500 7228 X=N[N2,C1] 7230 GOSUB 7500 7232 X=L[L7] 7234 GOSUB 7500 7236 GOTO 7242 7238 X=P[C1] 7240 GOSUB 7500 7242 FOR J5=C1 TO ABS(X2) 7244 GOSUB (X2>C0)+C1 OF 7300,7400 7246 IF E THEN 7254 7248 NEXT J5 7250 GOSUB 7600 7252 E=C0 7254 RETURN 7300 REM 7304 IF L2=C1 THEN 7328 7308 IF NOT L[L2-C1] THEN 7376 7312 L2=L2-C1 7316 L1=L[L2] 7320 E=C0 7324 RETURN 7328 IF N1=C1 THEN 7340 7332 X=N[N1-C1,C1] 7336 GOTO 7356 7340 IF M1=C1 THEN 7376 7344 X=M[M1-C1,C1] 7348 GOSUB 7500 7352 X=N[N2,C1] 7356 GOSUB 7500 7360 L1=L[L7] 7364 L2=L7 7368 E=C0 7372 RETURN 7376 E=C1 7380 RETURN 7400 REM 7405 IF L2=L7 THEN 7430 7410 L2=L2+C1 7415 L1=L[L2] 7420 E=C0 7425 RETURN 7430 IF N1=N2 THEN 7445 7435 X=N[N1+C1,C1] 7440 GOTO 7455 7445 IF M1=M2 THEN 7470 7450 X=M[M1+C1,C1] 7455 GOSUB 7500 7460 E=C0 7465 RETURN 7470 E=C1 7475 RETURN 7500 REM 7502 IF X >= L[C1] AND X <= L[L7] THEN 7554 7504 IF X >= N[C1,C1] AND X <= N[N2,C1] THEN 7532 7506 I1=C1 7508 I2=M2+C1 7510 M1=INT((I1+I2)/C2) 7512 GOTO SGN(X-M[M1,C1])+C2 OF 7514,7524,7518 7514 I2=M1 7516 GOTO 7510 7518 IF I2-M1=C1 THEN 7524 7520 I1=M1 7522 GOTO 7510 7524 IF M[M1,C2]=N3 THEN 7532 7526 N3=M[M1,C2] 7528 MAT READ #C1,N3;N[64,C2] 7530 N2=N[64,C1] 7532 I1=C1 7534 I2=N2+C1 7536 N1=INT((I1+I2)/C2) 7538 GOTO SGN(X-N[N1,C1])+C2 OF 7540,7550,7544 7540 I2=N1 7542 GOTO 7536 7544 IF I2-N1=C1 THEN 7550 7546 I1=N1 7548 GOTO 7536 7550 L3=N[N1,C2] 7552 GOSUB 7700 7554 L1=X 7556 FOR L2=C1 TO L7 7558 GOTO SGN(X-L[L2])+C2 OF 7562,7568,7560 7560 NEXT L2 7562 L2=L2-C1 7564 L4=C0 7566 RETURN 7568 L4=C1 7570 RETURN 7600 REM 7605 GOTO L2 OF 7610,7620,7630,7640,7650 7610 B$=L$ 7615 RETURN 7620 B$=M$ 7625 RETURN 7630 B$=N$ 7635 RETURN 7640 B$=O$ 7645 RETURN 7650 B$=P$ 7655 RETURN 7700 REM 7710 READ #1,L3;L7,L[C1],L$,L[C2],M$,L[C3],N$,L[C4],O$,L[C5],P$ 7720 RETURN 9300 REM 9310 READ J 9320 FOR K2=C1 TO J 9330 READ J1,K1$ 9340 IF LEN(A1$) 9710 E=C1 9720 Z$="" 9730 IF V2#C2 OR W1 THEN 9760 9740 PRINT "USE file abandoned." 9750 V0=V2=W3=C1 9760 RETURN 9800 REM 9805 V0$=A$[C1,C1] 9810 IF V0$='34 THEN 9835 9815 IF V0$="@" THEN 9840 9820 PRINT "Missing or illegal string." 9825 GOSUB 9700 9830 RETURN 9835 V4=C1 9840 J1=C2 9845 J2=POS(A$[J1],V0$)+J1-C1 9850 IF J2=J1-C1 THEN 9820 9855 IF A$[J2+C1,J2+C1]#V0$ THEN 9875 9860 A$[J2]=A$[J2+C1] 9865 J1=J2+C1 9870 GOTO 9845 9875 A1$=A$[C2,J2-C1] 9880 A$=A$[J2+C1,LEN(A$)] 9885 E=C0 9890 RETURN 9900 REM 9903 V1$=" " 9906 IF A[C1]=C3 THEN 9933 9909 J1=INT(X7/100) 9912 IF NOT J1 THEN 9924 9915 CONVERT J1 TO V0$ 9918 V1$[C5-LEN(V0$)]=V0$ 9921 IF A[C1]=C2 THEN 9972 9924 V1$[C5]=".0" 9927 CONVERT X7-J1*100 TO V0$ 9930 GOTO 9951 9933 J1=INT(X7/1000) 9936 IF NOT J1 THEN 9945 9939 CONVERT J1 TO V0$ 9942 V1$[C4-LEN(V0$)]=V0$ 9945 V1$[C4]=".00" 9948 CONVERT X7-J1*1000 TO V0$ 9951 V1$[C8-LEN(V0$)]=V0$ 9954 FOR J1=C7 TO C1 STEP -C1 9957 IF V1$[J1,J1]#"0" THEN 9963 9960 NEXT J1 9963 IF V1$[J1,J1]#"." THEN 9969 9966 J1=J1-C1 9969 V1$[J1+C1,C7]="" 9972 RETURN 9990 REM 9991 M4=SYS(C0) 9992 N4=SYS(C1) 9993 A1$="EDIT31" 9994 A1$[C7]=B0$ 9995 CHAIN J,A1$,100 9996 PRINT A1$" is missing. ERROR" 9997 STOP 9998 GOTO 9991 9999 END