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, PR 
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 >>FILL<<
1005  IF A[C1]=C1 THEN 1020
1010  PRINT "FILL is only permitted when ENVIRONMENT=TEXT."
1015  GOTO 1190
1020  IF M5 THEN 1200
1025  PRINT "No lines in WORK file."
1030  GOTO 1190
1035  PRINT "Missing parameter"
1040  GOTO 1190
1045  PRINT "No lines in range"
1050  GOTO 1190
1055  PRINT "TO parameter missing"
1060  GOTO 1190
1065  PRINT "BY may not preceed TO"
1070  GOTO 1190
1075  PRINT "'"A1$"' is an illegal increment."
1080  GOTO 1190
1085  PRINT "Line number overlap, no lines filled."
1090  GOTO 1190
1095  PRINT "Insufficient space in your account for a temporary file"
1100  GOTO 1190
1105  PRINT "WORK file full, fill terminated."
1110  GOTO 1190
1115  PRINT "Rangelist not permitted here."
1190  GOSUB 9700
1195  RETURN 
1200  REM2 *SYNTAX*
1205  H=C0
1210  G=A[C6]
1215  IF  NOT LEN(A$) THEN 1035
1220  W$="BY"
1225  GOSUB 2200
1230  IF  NOT B0 THEN 1300
1235  A1$=A$[I+C2,LEN(A$)]
1240  A$=A$[C1,I-C1]
1245  GOSUB 6000
1250  IF  NOT F1 THEN 1075
1255  G=F1
1300  REM2 *FILE*
1305  FILES *
1310  J5=C3
1315  GOSUB 8100
1320  IF E THEN 1095
1400  REM2 *RANGE*
1405  F2=C1
1410  F4=C2
1415  GOSUB 4400
1420  IF E=100 OR SYS(C3) THEN 1440
1425  IF E THEN 1045
1430  IF LEN(A$) THEN 1115
1435  GOTO 1500
1440  RETURN 
1500  REM2 *FILL OUT*
1505  B2=C0
1510  X1=E[C1]
1515  X2=C1
1520  GOSUB 7200
1525  IF E THEN 1540
1530  B7=L1
1535  GOTO 1545
1540  B7=1.E+06
1545  X1=B[C1]
1550  X2=C0
1555  GOSUB 7200
1560  E=B0=C0
1565  IF  NOT LEN(B$) THEN 1955
1567  IF B$[C1,C1]#"." THEN 1580
1570  W$=B$
1575  GOTO 1960
1580  A1$=B$
1585  IF LEN(A1$) <= A[C3] THEN 1635
1590  GOSUB 2500
1595  GOSUB 2400
1600  IF SYS(C3) THEN 1685
1605  IF E THEN 1085
1610  A1$=""
1615  A1$[C1,A[C2]-C1]=""
1620  A1$[LEN(A1$)+C1]=W1$
1625  W1$=""
1630  GOTO 1585
1635  IF L1=E[C1] THEN 1655
1640  GOSUB 7400
1645  GOSUB 7600
1650  GOTO 1800
1655  IF  NOT LEN(A1$) THEN 1670
1660  W$=A1$
1665  GOSUB 2400
1670  IF SYS(C3) THEN 1685
1675  IF E THEN 1085
1680  GOTO 2000
1685  RETURN 
1800  REM2 *FILL*
1805  IF  NOT LEN(B$) THEN 1935
1810  IF B$[C1,C1]="." THEN 1850
1815  IF LEN(B$)<A[C2] THEN 1850
1820  FOR I=C1 TO A[C2]-C1
1825  IF B$[I,I]#" " THEN 1850
1830  NEXT I
1835  IF B$[I,I]=" " THEN 1850
1840  B$=B$[A[C2]]
1845  GOTO 1875
1850  W$=A1$
1855  GOSUB 2400
1860  IF SYS(C3) THEN 1930
1865  IF E THEN 1085
1870  GOTO 1565
1875  IF  NOT LEN(A1$) THEN 1920
1880  I=NUM(A1$[LEN(A1$)])
1885  IF I#45 THEN 1900
1890  A1$=A1$[C1,LEN(A1$)-C1]
1895  GOTO 1920
1900  IF (I=33 OR I=46 OR I=63) AND LEN(A1$)#A[C3]-C1 THEN 1915
1905  A1$[LEN(A1$)+C1]=" "
1910  GOTO 1920
1915  A1$[LEN(A1$)+C1]="  "
1920  A1$[LEN(A1$)+C1]=B$
1925  GOTO 1585
1930  RETURN 
1935  W$=A1$
1940  GOSUB 2400
1945  IF SYS(C3) THEN 1995
1950  IF E THEN 1085
1955  W$=""
1960  GOSUB 2400
1965  IF SYS(C3) THEN 1995
1970  IF E THEN 1085
1975  IF L1=E[C1] THEN 2000
1980  GOSUB 7400
1985  GOSUB 7600
1990  GOTO 1565
1995  RETURN 
2000  REM2 *DEL RNG*
2005  IF SYS(C3) THEN 2060
2010  X1=B[C1]
2015  X2=C0
2020  GOSUB 7200
2025  B6=L1
2030  GOSUB 3800
2035  IF B6=E[C1] THEN 2100
2040  X1=X2=C0
2045  GOSUB 7200
2050  IF E THEN 9998
2055  GOTO 2025
2060  RETURN 
2100  REM2 *FILL IN*
2105  B3=C0
2110  READ #C3,C1
2115  READ #C3;X5,B$
2120  B3=B3+C1
2125  GOSUB 6500
2130  IF E THEN 2145
2135  GOSUB V7 OF 2300
2140  IF B3<B1 THEN 2115
2145  P2=A[C3]+C1
2150  GOSUB 3700
2155  IF E THEN 1105
2160  RETURN 
2200  REM2 <FIND KEY>
2205  I=B0=C0
2210  J=C1
2215  I=POS(A$[J],W$)+J-C1
2220  IF I-J+C1=C0 OR I=LEN(A$) THEN 2240
2225  J=(POS(A$[I+C1],'34) MAX POS(A$[I+C1],"@"))+I
2230  IF J-I THEN 2215
2235  B0=C1
2240  RETURN 
2300  REM2 <DISPLAY>
2305  X7=L1
2310  GOSUB 9900
2315  P0$=V1$
2320  P0$[LEN(P0$)+C1]=" "
2325  W6=LEN(P0$)
2330  IF LEN(B$)<A[C2] THEN 2340
2335  P0$[W6+C1]=B$[A[C2]]
2340  GOSUB 6400
2345  RETURN 
2400  REM2 <WRT OUT>
2405  IF B0 THEN 2430
2410  B1=C0
2415  B0=C1
2420  X7=X9=B[C1]
2425  GOTO 2455
2430  IF X7+G<B7 THEN 2450
2435  GOSUB 9200
2440  IF E THEN 2465
2445  GOTO 2430
2450  X7=X7+G
2455  PRINT #C3;X7,W$
2460  B1=B1+C1
2465  RETURN 
2500  REM2 <BL>
2505  J=POS(A1$," ")
2510  IF  NOT J OR J>A[C3]+C1 THEN 2745
2515  FOR I=A[C3]+C1 TO J STEP -C1
2520  IF A1$[I,I]=" " THEN 2530
2525  NEXT I
2530  W1$=A1$[I+C1]
2535  W$=A1$[C1,I-C1]
2540  FOR I=C1 TO LEN(W1$)
2545  IF W1$[I,I]#" " THEN 2560
2550  NEXT I
2555  GOTO 2565
2560  W1$=W1$[I]
2565  IF  NOT A[25] OR LEN(W$)>A[C3]-(C4+(A[C3]>50)) THEN 2755
2570  J2=A[C3]-LEN(W$)
2575  J1=POS(W1$," ")
2580  IF J1 THEN 2590
2585  J1=LEN(W1$)+C1
2590  IF J1<C3 THEN 2755
2595  I=NUM(W1$[C2,C2])
2600  IF J1=C3 AND (I=33 OR I=46 OR I=63) THEN 2755
2605  IF B2 THEN 2620
2610  PRINT "Hyphenate the following word(s):"
2615  B2=C1
2620  P0$=""
2625  P0$[LEN(P0$)+C1]=W1$[C1,J2-C2]
2630  P0$[LEN(P0$)+C1]=" "
2635  P0$[LEN(P0$)+C1]=W1$[J2-C1,J1-C1]
2640  GOSUB 6400
2645  PRINT "  ";
2650  LINPUT A$
2655  IF  NOT LEN(A$) THEN 2755
2660  J=POS(A$,"-")
2665  IF  NOT J THEN 2685
2670  J=J+C2
2675  IF J <= J2-C1 THEN 2710
2680  IF A$[C1,C1]="/" THEN 2700
2685  PRINT "Type a hyphen under a character up to and including the blank."
2690  PRINT "RETURN means don't hyphenate."
2695  GOTO 2640
2700  PRINT "//-commands not permitted here."
2705  GOTO 2640
2710  W$[LEN(W$)+C1]=" "
2715  W$[LEN(W$)+C1]=W1$[C1,J-C1]
2720  W$[LEN(W$)+C1]="-"
2725  W1$=W1$[J]
2730  IF W1$[C1,C1]#"-" THEN 2740
2735  W1$=W1$[C2]
2740  RETURN 
2745  W1$=A1$[A[C3]+C1]
2750  W$=A1$[C1,A[C3]]
2755  RETURN 
3700  REM <PTR>
3705  P[C1]=L1
3710  P2=(P2+A[C2]-C1) MAX A[C2]
3715  IF P2 <= A[C3] THEN 3755
3720  GOSUB 6300
3725  IF  NOT X9 THEN 3745
3730  P[C1]=X9
3735  P[C2]=A[C2]
3740  RETURN 
3745  P[C2]=A[C3]
3750  RETURN 
3755  P[C2]=P2
3760  RETURN 
3800  REM <DEL LI>
3802  IF  NOT M5 THEN 3930
3804  M5=M[64,C2]=M5-C1
3806  GOSUB 6300
3808  IF  NOT X9 THEN 3816
3810  P[C1]=X9
3812  P[C2]=C1
3814  GOTO 3824
3816  GOSUB 7300
3818  P[C1]=L1
3820  P[C2]=A[C3]
3822  GOSUB 7400
3824  IF L7=C1 THEN 3872
3826  REM2 >1 LI IN REC
3828  GOTO L2 OF 3830,3834,3838,3842,3846
3830  L$=M$
3832  L[C1]=L[C2]
3834  M$=N$
3836  L[C2]=L[C3]
3838  N$=O$
3840  L[C3]=L[C4]
3842  O$=P$
3844  L[C4]=L[C5]
3846  P$=""
3848  L[C5]=C0
3850  IF L2#C1 THEN 3860
3852  N[N1,C1]=L[C1]
3854  MAT  PRINT #C1,N3;N
3856  IF N1#C1 THEN 3860
3858  M[M1,C1]=L[C1]
3860  L7=L7-C1
3862  GOSUB 7800
3864  L2=L2 MIN L7
3866  L1=L[L2]
3868  L4=C1
3870  RETURN 
3872  REM2 1 LI IN REC
3874  X3=L3
3876  GOSUB 7100
3878  IF N2=C1 THEN 3898
3880  FOR J=N1 TO N2-C1
3882  N[J,C1]=N[J+C1,C1]
3884  N[J,C2]=N[J+C1,C2]
3886  NEXT J
3888  N[N2,C1]=N[N2,C2]=C0
3890  N2=N[64,C1]=N2-C1
3892  MAT  PRINT #C1,N3;N
3894  M[M1,C1]=N[C1,C1]
3896  GOTO 3926
3898  REM2 REM N[] REC
3900  X3=N3
3902  GOSUB 7100
3904  FOR J=M1 TO M2-C1
3906  M[J,C1]=M[J+C1,C1]
3908  M[J,C2]=M[J+C1,C2]
3910  NEXT J
3912  M[M2,C1]=M[M2,C2]=C0
3914  M2=M[64,C1]=M2-C1
3916  IF M[M1,C2] THEN 3920
3918  M1=M1-C1
3920  MAT  READ #C1,M[M1,C2];N
3922  N2=N[64,C1]
3924  N3=N[64,C2]
3926  X=P[C1]
3928  GOSUB 7500
3930  RETURN 
4000  REM <RE E>
4005  X1=E[C1]
4010  X2=E[C2]
4015  IF X1=-C1 AND  NOT X2 THEN 4025
4020  F7=C0
4025  GOSUB 7200
4030  E[C2]=C0
4035  IF  NOT E THEN 4055
4040  IF  NOT L[L2] THEN 4065
4045  E[C2]=C1
4050  E=C0
4055  E[C1]=L[L2]
4060  RETURN 
4065  E=C1
4070  RETURN 
4100  REM <RE B>
4105  X1=B[C1]
4110  X2=B[C2]
4115  IF X1=-C2 AND  NOT X2 THEN 4125
4120  F7=C0
4125  GOSUB 7200
4130  B[C2]=C0
4135  IF  NOT E THEN 4155
4140  GOSUB 7400
4145  IF E THEN 4160
4150  B[C2]=C1
4155  B[C1]=L1
4160  RETURN 
4400  REM <RNG>
4401  F7=C1
4402  G6=P[C1]
4403  G7=P[C2]
4404  IF A$[C1,C1]#"A" THEN 4426
4405  GOSUB 5100
4406  RESTORE 4407
4407  DATA 1,1,"ALL"
4408  GOSUB 9300
4409  IF K2 THEN 4414
4410  PRINT "Illegal range"
4411  GOSUB 9700
4412  E=100
4413  GOTO 4494
4414  B[C1]=-C2
4416  E[C1]=-C1
4418  B[C2]=E[C2]=C0
4420  B[C3]=A[C2]
4422  E[C3]=A[C3]
4424  GOTO 4454
4426  GOSUB 4500
4427  IF E THEN 4498
4428  MAT B=Q
4429  I=NUM(A$)
4430  IF I#47 AND I#58 THEN 4474
4431  GOSUB 4100
4432  IF  NOT E THEN 4440
4433  I=POS(A$,",")
4434  IF I THEN 4437
4435  A$=""
4436  RETURN 
4437  A$=A$[I]
4438  RETURN 
4440  A$=A$[C2]
4441  I=NUM(A$)
4442  IF I#34 AND I#64 THEN 4446
4443  P[C1]=L1
4444  P[C2]=Q[C3]
4446  GOSUB 4500
4448  IF E THEN 4494
4450  MAT E=Q
4452  E[C3]=F5
4454  GOSUB 4000
4456  IF E THEN 4494
4458  X1=B[C1]
4460  X2=C0
4462  GOSUB 7200
4464  IF E THEN 4494
4466  B[C1]=L1
4468  IF B[C1]>E[C1] OR ((B[C1]=E[C1]) AND (B[C3]>E[C3])) THEN 4490
4470  IF E[C3]>A[C3] THEN 4410
4472  GOTO 4494
4474  F7=C0
4476  X1=B[C1]
4478  X2=B[C2]
4480  GOSUB 7200
4482  IF E THEN 4498
4484  B[C1]=E[C1]=L1
4486  E[C3]=F5
4488  GOTO 4470
4490  IF  NOT B[C2] OR  NOT E[C2] THEN 4410
4492  E=C1
4494  P[C1]=G6
4496  P[C2]=G7
4498  RETURN 
4500  REM <LPOS>
4502  MAT Q=ZER
4504  I=NUM(A$)
4506  IF I=34 OR I=64 THEN 4622
4508  GOSUB 4800
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 4636
4530  E=C6
4594  GOTO E OF 4634,4596,4600,4604,4608,4612,4604,4622,4604,4622,4622
4596  PRINT "Missing parameter in a position specification."
4598  GOTO 4632
4600  PRINT "Illegal line specification"
4602  GOTO 4632
4604  PRINT "Illegal relative specification"
4606  GOTO 4632
4608  PRINT "Position not found"
4610  GOTO 4632
4612  PRINT "Column specification not permitted here."
4614  GOTO 4632
4622  PRINT "String position not permitted here."
4632  GOSUB 9700
4634  E=100
4636  RETURN 
4700  REM <REL SPC>
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,6689
4756  F1=F1*J1
4760  RETURN 
4764  A1$=A$[C1,C2]
4768  E=C4
4772  RETURN 
4776  E=C2
4780  RETURN 
4800  REM <REL L>
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 
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 
5300  REM <EXT>
5310  IF  NOT LEN(B$) OR LEN(B$)<A[C2] THEN 5340
5315  W$=B$[A[C2],A[C3] MIN LEN(B$)]
5325  FOR I=LEN(W$) TO C1 STEP -C1
5330  IF W$[I,I]#" " THEN 5350
5335  NEXT I
5340  W$=""
5345  RETURN 
5350  W$=W$[C1,I]
5355  RETURN 
5360  REM <REPL W$>
5365  IF LEN(B$)>A[C3] THEN 5385
5370  GOSUB 5325
5375  B$=B$[C1,A[C2]-C1]
5380  GOTO 5390
5385  W$[LEN(W$)+C1,G8]=""
5390  B$[A[C2],A[C2]+LEN(W$)-C1]=W$
5395  RETURN 
6000  REM <L#>
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,7273
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 
6300  REM <NXT LI>
6305  IF L2=L7 THEN 6320
6310  X9=L[L2+C1]
6315  RETURN 
6320  IF N1=N2 THEN 6335
6325  X9=N[N1+C1,C1]
6330  RETURN 
6335  IF M1=M2 THEN 6350
6340  X9=M[M1+C1,C1]
6345  RETURN 
6350  X9=C0
6355  RETURN 
6400  REM <PRT P0$>
6410  I=C1
6420  J=A[C9] MIN LEN(P0$)
6430  PRINT P0$[I,J]
6440  I=J+C1
6450  IF  NOT LEN(P0$[I]) THEN 6490
6460  J=(I+A[C9]-W6-C1) MIN LEN(P0$)
6470  PRINT TAB(W6);P0$[I,J]
6480  GOTO 6440
6490  RETURN 
6500  REM <ADD LI>
6502  X=X5
6504  GOSUB 7500
6506  IF  NOT L4 THEN 6512
6508  E=C3
6510  RETURN 
6512  IF L7=C5 THEN 6566
6514  REM: ADD TO CURRENT RECORD
6516  IF L2#C4 THEN 6522
6518  P$=B$
6520  GOTO 6542
6522  P$=O$
6524  IF L2#C3 THEN 6530
6526  O$=B$
6528  GOTO 6542
6530  O$=N$
6532  IF L2#C2 THEN 6538
6534  N$=B$
6536  GOTO 6542
6538  N$=M$
6540  M$=B$
6542  FOR J=L7 TO L2 STEP -C1
6544  L[J+C1]=L[J]
6546  NEXT J
6548  L[L2+C1]=X5
6550  L1=X5
6552  L2=L2+C1
6554  L4=C1
6556  L7=L7+C1
6558  M5=M[64,C2]=M5+C1
6560  E=C0
6562  GOSUB 7800
6564  RETURN 
6566  IF N2#63 THEN 6576
6568  IF M2=63 THEN 6578
6570  GOSUB 7000
6572  J4=X4
6574  IF  NOT J4 THEN 6578
6576  IF M7 OR M8<M9 THEN 6582
6578  E=C2
6580  RETURN 
6582  IF L2>C2 THEN 6588
6584  J2=L2+C1
6586  GOTO 6592
6588  J2=L2
6590  REM: WRITE CURRENT RECORD
6592  READ #C1,L3
6594  UPDATE #C1;J2
6596  ADVANCE #C1;C2*L2,J
6598  IF L2>C2 THEN 6602
6600  PRINT #C1;X5,B$
6602  FOR J1=J2+C1 TO C5
6604  PRINT #C1;C0,""
6606  NEXT J1
6608  GOSUB 7000
6610  REM: WRITE NEW RECORD
6612  PRINT #C1,X4;C6-J2
6614  IF L2 <= C2 THEN 6618
6616  PRINT #C1;X5,B$
6618  FOR J=L2+C1 TO C5
6620  PRINT #C1;L[J]
6622  GOTO J-C1 OF 6624,6628,6632,6636,6638
6624  PRINT #C1;M$
6626  GOTO 6638
6628  PRINT #C1;N$
6630  GOTO 6638
6632  PRINT #C1;O$
6634  GOTO 6638
6636  PRINT #C1;P$
6638  NEXT J
6640  FOR J=C1 TO J2-C1
6642  PRINT #C1;C0,""
6644  NEXT J
6646  L1=X5
6648  IF L2>C2 THEN 6656
6650  L2=L2+C1
6652  J5=L[L2]
6654  GOTO 6662
6656  L2=C1
6658  L3=X4
6660  J5=X5
6662  L4=C1
6664  GOSUB 7700
6666  IF N2#63 THEN 6726
6668  REM: SPLIT INDEX BLOCK
6670  READ #C1,N3
6672  ADVANCE #C1;64,J
6674  MAT  READ #C1;N[31,C2]
6676  J6=N[C1,C1]
6678  MAT  PRINT #C1,J4;N
6680  MAT N=ZER[31,C2]
6682  MAT  PRINT #C1;N
6684  PRINT #C1;C0,C0,31,J4
6686  READ #C1,N3
6688  ADVANCE #C1;64,J
6690  MAT  PRINT #C1;N
6692  PRINT #1;32,N3
6694  REM: ADD ENTRY TO M()
6696  FOR J=M2 TO M1+C1 STEP -C1
6698  M[J+C1,C1]=M[J,C1]
6700  M[J+C1,C2]=M[J,C2]
6702  NEXT J
6704  M[M1+C1,C1]=J6
6706  M[M1+C1,C2]=J4
6708  M2=M[64,C1]=M2+C1
6710  IF N1>32 THEN 6716
6712  N2=32
6714  GOTO 6726
6716  N1=N1-32
6718  N2=31
6720  N3=J4
6722  M1=M1+C1
6724  REM: ADD ENTRY TO N[]
6726  READ #C1,N3
6728  ADVANCE #C1;C2*N1,J
6730  IF N1=62 THEN 6734
6732  MAT  READ #C1;N[62-N1,C2]
6734  READ #C1,N3
6736  ADVANCE #C1;C2*N1,J
6738  PRINT #C1;J5,X4
6740  IF N1=62 THEN 6744
6742  MAT  PRINT #C1;N
6744  PRINT #C1;N2+C1,N3
6746  MAT  READ #C1,N3;N[64,C2]
6748  N1=N1+(L2=C1)
6750  N2=N[64,C1]
6752  E=C0
6754  M5=M[64,C2]=M5+C1
6756  RETURN 
7000  REM <GET REC>
7005  IF M7 THEN 7045
7010  IF M8<M9 THEN 7025
7015  X4=C0
7020  RETURN 
7025  X4=M8=M8+C1
7030  IF M8=M9 THEN 7040
7035  PRINT #C1,M8+C1; END 
7040  RETURN 
7045  X4=M7
7050  READ #C1,M7;M7
7055  RETURN 
7100  REM <ADD REC>
7110  PRINT #C1,X3;M7
7120  M7=X3
7130  RETURN 
7200  REM <FIND LI>
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 <RD PR L>
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 <RD NEXT LI>
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 <RD DIR>
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 <GET B$>
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 <RD REC>
7710  READ #1,L3;L7,L[C1],L$,L[C2],M$,L[C3],N$,L[C4],O$,L[C5],P$
7720  RETURN 
7800  REM <WR REC>
7810  PRINT #1,L3;L7,L[C1],L$,L[C2],M$,L[C3],N$,L[C4],O$,L[C5],P$
7820  RETURN 
8100  REM <SETUP SCR>
8105  IF U0 THEN 8175
8110  IF S0 THEN 8145
8115  A1$=S0$
8120  PURGE J,A1$
8125  IF J=C1 THEN 8155
8130  J1=M9
8135  GOSUB 9400
8140  IF E THEN 8165
8145  ASSIGN S0$,J5,J, PR 
8150  IF  NOT J THEN 8170
8155  PRINT "Someone else is using your temporary file."
8160  E=C1
8165  RETURN 
8170  S0=U0=C1
8175  E=C0
8180  RETURN 
9200  REM <REDUCE INCR>
9205  IF G >= 10001 THEN 9240
9210  IF G <= 10000 AND G >= 1001 THEN 9250
9215  IF G <= 1000 AND G >= 101 THEN 9260
9220  IF G <= 100 AND G >= 11 AND A[C1]#C2 THEN 9270
9225  IF A[C1]=C2 OR G=C1 THEN 9280
9230  G=C1
9235  RETURN 
9240  G=10000
9245  RETURN 
9250  G=1000
9255  RETURN 
9260  G=100
9265  RETURN 
9270  G=D0
9275  RETURN 
9280  E=C1
9285  RETURN 
9300  REM <KEY>
9310  READ J
9320  FOR K2=C1 TO J
9330  READ J1,K1$
9340  IF LEN(A1$)<J1 THEN 9360
9350  IF A1$=K1$[C1,LEN(A1$)] THEN 9380
9360  NEXT K2
9370  K2=C0
9380  RETURN 
9400  REM <CREATE>
9405  CREATE J,A1$,J1
9410  GOTO J+C1 OF 9460,9415,9998,9435,9445
9415  PURGE J,A1$
9420  GOTO J+C1 OF 9405,9425,9998,9998
9425  PRINT "Someone else is using an EDITOR scratch file in your account."
9430  GOTO 9450
9435  PRINT "No space in your account for this operation."
9440  GOTO 9450
9445  PRINT "No space in the System for this operation."
9450  GOSUB 9700
9455  RETURN 
9460  E=C0
9465  RETURN 
9700  REM <ERROR>
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 <GET NEXT STR>
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 <CON LI #>
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 <ERR>
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 
