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
50  FILES *,*
99  CHAIN "$EDITOR"
100  REM
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>CHA<
1005  IF M5 THEN 1200
1010  PRINT "No lines in WORK file."
1015  GOTO 1190
1020  PRINT "Missing or illegal rangelist"
1025  GOTO 1190
1030  PRINT "No lines in range"
1035  GOTO 1190
1040  PRINT "Missing parameter"
1045  GOTO 1190
1050  PRINT "Illegal column specification"
1055  GOTO 1190
1060  PRINT "Column out of bounds"
1065  GOTO 1190
1070  PRINT "Illegal relative specification"
1075  GOTO 1190
1080  PRINT "Null search string not permitted"
1085  GOTO 1190
1090  PRINT "Start column > stop column"
1095  GOTO 1190
1100  PRINT "//ASK is only legal from a USE file"
1105  GOTO 1190
1180  GOTO E OF 1050,1040,1060,1070
1190  GOSUB 9700
1195  RETURN 
1200  REM4 *CHA*
1210  F8=H=C0
1215  DIM L0$[94],L1$[94]
1220  DIM S[4]
1300  REM2*SNTX*
1302  B1=C1
1304  B4=C0
1306  B0=C0
1308  IF  NOT LEN(A$) THEN 1040
1310  J=NUM(A$)
1312  IF J#34 AND J#64 THEN 1330
1314  V4=C2
1316  GOSUB 9800
1318  B9=V4
1320  IF E THEN 1396
1322  IF  NOT LEN(A1$) THEN 1080
1324  L1$=A1$
1326  GOTO 1360
1328  REM2*S/S C*
1330  MAT S=ZER
1332  GOSUB 1500
1334  IF E THEN 1180
1336  B1=C2
1338  S[C1]=S[C3]
1340  S[C2]=S[C4]
1342  S[C3]=S[C4]=C0
1344  J=NUM(A$)
1346  IF J#47 AND J#58 THEN 1360
1348  A$=A$[C2]
1350  GOSUB 1500
1352  IF E THEN 1180
1354  B1=C3
1356  IF S[C1]<C1 OR S[C3]<C1 THEN 1360
1358  IF (S[C1]+S[C2])>(S[C3]+S[C4]) THEN 1090
1360  REM2 *TO*
1362  IF LEN(A$)<C3 THEN 1040
1364  IF A$[C1,C2]#"TO" THEN 1040
1366  A$=A$[C3]
1368  IF A$[C1,C1]="/" THEN 1400
1370  GOSUB 9800
1372  IF E THEN 1396
1374  L0$=A1$
1376  REM2 *IN*
1378  IF  NOT LEN(A$) THEN 1388
1380  IF LEN(A$)<C3 THEN 1040
1382  IF A$[C1,C2]#"IN" THEN 1040
1384  A$=A$[C3]
1386  GOTO 1700
1388  B4=C1
1390  A$="*(*)/*"
1392  F2=C0
1394  GOTO 1710
1396  RETURN 
1400  REM2*//A*
1403  IF V2#C2 THEN 1100
1406  IF LEN(A$)<C3 THEN 1040
1409  IF A$[C1,C2]#"//" THEN 1040
1412  A$=A$[C3]
1415  I=POS(A$,'34)
1418  IF  NOT I THEN 1040
1421  A1$=A$[C1,I-C1]
1424  A$=A$[I]
1427  RESTORE 1430
1430  DATA 1,1,"ASK"
1433  GOSUB 9300
1436  IF  NOT K2 THEN 1040
1439  V4=C2
1442  GOSUB 9800
1445  IF E THEN 1487
1448  P0$=A1$
1451  V9=LEN(P0$)
1454  IF LEN(A$)<C3 THEN 1040
1457  IF A$[C1,C2]#"IN" THEN 1040
1460  W1$=A$[C3]
1463  GOSUB 8300
1466  IF E OR V5=C1 THEN 1487
1469  IF LEN(A$)<94 THEN 1478
1472  PRINT "Input too long, retype line"
1475  GOTO 1463
1478  L0$=A$
1481  A$=W1$
1484  GOTO 1700
1487  RETURN 
1500  REM2<S/S C>
1502  E=C0
1504  GOSUB 1568
1506  IF  NOT LEN(A1$) THEN 1554
1508  I=NUM(A1$)
1510  IF I>47 AND I<58 THEN 1524
1512  RESTORE 1514
1514  DATA 4,1,"FIRST",2,"LAST",2,"LEFT",1,"RIGHT"
1516  GOSUB 9300
1518  IF  NOT K2 THEN 1562
1520  S[C3]=-K2*(K2<C3)+(K2 >= C3)+(A[C3]-A[C2])*(K2=C4)
1522  GOTO 1530
1524  GOSUB 5700
1526  IF  NOT F1 THEN 1550
1528  S[C3]=F1
1530  IF  NOT LEN(A$) THEN 1554
1532  I=NUM(A$)
1534  IF I#43 AND I#45 THEN 1542
1536  GOSUB 1586
1538  IF E THEN 1548
1540  S[C4]=F1
1542  IF S[C3]<C0 THEN 1548
1544  I=S[C3]+S[C4]
1546  IF I<A[C2] OR I>A[C3] THEN 1558
1548  RETURN 
1550  E=C1
1552  RETURN 
1554  E=C2
1556  RETURN 
1558  E=C3
1560  RETURN 
1562  E=C4
1564  RETURN 
1566  REM2<FI DLIM>
1568  FOR I=C1 TO LEN(A$)
1570  J=NUM(A$[I,I])
1572  IF J=43 OR J=45 OR J=47 OR J=58 THEN 1580
1574  IF J#84 THEN 1578
1576  IF A$[I+C1,I+C1]="O" THEN 1580
1578  NEXT I
1580  A1$=A$[C1,I-C1]
1582  A$=A$[I]
1584  RETURN 
1586  REM2<R SP>
1588  E=C0
1590  J1=C1
1592  IF A$[C1,C1]="+" THEN 1596
1594  J1=-C1
1596  A$=A$[C2]
1598  GOSUB 1568
1600  IF J=43 OR J=45 THEN 1610
1602  IF  NOT LEN(A1$) THEN 1614
1604  CONVERT A1$ TO F1,4490
1606  F1=F1*J1
1608  RETURN 
1610  E=C4
1612  RETURN 
1614  E=C2
1616  RETURN 
1700  REM2*NR*
1705  F2=C1
1710  F4=C2
1715  GOSUB 4400
1720  IF  NOT E THEN 1800
1725  IF E=100 THEN 1770
1730  REM1-RG DN-
1735  IF  NOT LEN(A$) THEN 1755
1740  IF A$[C1,C1]#"," THEN 1020
1745  A$=A$[C2]
1750  GOTO 1715
1755  IF  NOT F8 THEN 1030
1760  IF  NOT (B1=C1 AND  NOT B0) THEN 1770
1765  PRINT "'"L1$"' not found."
1770  RETURN 
1800  REM2*DR*
1805  GOSUB 7600
1810  GOSUB 5300
1815  F8=F8+C1
1820  GOSUB 2000
1825  IF E THEN 1090
1830  IF  NOT B2 THEN 1845
1835  GOSUB 5360
1840  GOSUB 6800
1845  IF SYS(C3) THEN 1870
1850  IF L1=E[C1] THEN 1875
1855  GOSUB 7400
1860  IF E THEN 9998
1865  GOTO 1805
1870  RETURN 
1875  IF P[C2] <= A[C3] THEN 1730
1880  GOSUB 6300
1885  IF  NOT X9 THEN 1905
1890  P[C1]=X9
1895  P[C2]=A[C2]
1900  GOTO 1730
1905  P[C2]=A[C3]
1910  GOTO 1730
2000  REM2<PL>
2005  E=B2=C0
2010  GOSUB B1 OF 2100,2300,2400
2015  IF  NOT B2 THEN 2075
2020  B0=C1
2025  P[C1]=L1
2030  P[C2]=B6
2035  IF  NOT V7 THEN 2075
2040  X7=L1
2045  GOSUB 9900
2050  P0$=V1$
2055  P0$[LEN(P0$)+C1]=" "
2060  W6=LEN(P0$)
2065  P0$[W6+C1]=W$
2070  GOSUB 6400
2075  RETURN 
2100  REM2<O/N>
2105  IF  NOT LEN(W$) THEN 2250
2110  B6=C1
2115  IF L1#B[C1] THEN 2125
2120  B6=B[C3]-A[C2]+C1
2125  B7=A[C3]
2130  IF L1#E[C1] THEN 2140
2135  B7=E[C3]-A[C2]+C1
2140  A1$=L1$
2145  B8=C0
2150  V4=B9
2155  GOSUB 5216
2160  IF  NOT F3 THEN 2250
2165  B0=C1
2170  B3=F3-A[C2]+C1
2175  IF LEN(W$)-LEN(L1$)+LEN(L0$)>G8 THEN 2220
2180  P0$=W$[B3+LEN(L1$)]
2185  W$=W$[C1,B3-C1]
2190  W$[B3]=L0$
2195  W$[LEN(W$)+C1]=P0$
2200  B6=B3+LEN(L0$)
2205  B2=B2+C1
2210  IF  NOT B4 THEN 2155
2215  RETURN 
2220  IF  NOT W3 THEN 2245
2225  PRINT "Rbound violated, no changes made in line ";
2230  X7=L1
2235  GOSUB 9900
2240  PRINT V1$
2245  B2=C0
2250  RETURN 
2300  REM2<I>
2305  B6=S[C1]+S[C2]
2310  J=S[C1]
2315  IF J>C0 THEN 2335
2320  GOSUB 2600
2325  B6=J+S[C2]
2330  IF B6<A[C2] OR B6>A[C3] THEN 2220
2335  B6=B6-A[C2]+C1
2340  IF LEN(W$)+LEN(L0$)>G8 THEN 2220
2345  IF B6>LEN(W$) THEN 2375
2350  P0$=W$[B6]
2355  W$[B6]=L0$
2360  B6=LEN(W$)+A[C2]
2365  W$[LEN(W$)+C1]=P0$
2370  GOTO 2390
2375  W$[LEN(W$)+C1,B6-C1]=""
2380  W$[LEN(W$)+C1]=L0$
2385  B6=LEN(W$)+A[C2]
2390  B2=C1
2395  RETURN 
2400  REM2<R>
2405  B6=S[C1]+S[C2]
2410  J=S[C1]
2415  IF J>C0 THEN 2435
2420  GOSUB 2600
2425  B6=J+S[C2]
2430  IF B6<A[C2] OR B6>A[C3] THEN 2220
2435  B7=S[C3]+S[C4]
2440  J=S[C3]
2445  IF J>C0 THEN 2465
2450  GOSUB 2600
2455  B7=J+S[C4]
2460  IF B7<A[C2] OR B7>A[C3] THEN 2220
2465  IF B6 <= B7 THEN 2480
2470  E=C1
2475  RETURN 
2480  B6=B6-A[C2]+C1
2485  B7=B7-A[C2]+C1
2490  IF LEN(W$)+LEN(L0$)-B7+B6-C1>G8 THEN 2220
2495  IF B6>LEN(W$)+C1 THEN 2535
2500  P0$=""
2505  IF B7+C1>LEN(W$) THEN 2515
2510  P0$=W$[B7+C1]
2515  W$[B6]=L0$
2520  B6=LEN(W$)+A[C2]
2525  W$[LEN(W$)+C1]=P0$
2530  GOTO 2550
2535  W$[LEN(W$)+C1,B6-C1]=""
2540  W$[LEN(W$)+C1]=L0$
2545  B6=LEN(W$)+A[C2]
2550  B2=C1
2555  RETURN 
2600  REM2<RCOL>
2605  IF  NOT LEN(W$) THEN 2635
2610  IF J=-C2 THEN 2645
2615  FOR J=C1 TO LEN(W$)
2620  IF W$[J,J]#" " THEN 2650
2625  NEXT J
2630  GOTO 2650
2635  J=C1
2640  GOTO 2650
2645  J=LEN(W$)
2650  J=J+A[C2]-C1
2655  RETURN 
4000  REM
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
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
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
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[C2] OR 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,6714
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
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$)<B6 THEN 5288
5220  F3=POS(W$[B6,B7 MIN LEN(W$)],A1$)+B6-C1
5224  IF  NOT (F3-B6+C1) THEN 5288
5228  IF V4=C1 THEN 5256
5232  IF F3=C1 OR (F3=B6 AND  NOT B8) THEN 5244
5236  I=NUM(W$[F3-C1])
5240  IF (I>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$)<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
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 
5400  REM
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,7955
5730  IF F1<C1 THEN 5760
5740  IF F1>74+20*(A[C1]<C3) THEN 5760
5750  RETURN 
5760  F1=C0
5770  RETURN 
6000  REM
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,8079
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
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
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 
6800  REM
6805  GOTO L2 OF 6810,6820,6830,6840,6850
6810  L$=B$
6815  GOTO 6855
6820  M$=B$
6825  GOTO 6855
6830  N$=B$
6835  GOTO 6855
6840  O$=B$
6845  GOTO 6855
6850  P$=B$
6855  GOSUB 7800
6860  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 
7800  REM
7810  PRINT #1,L3;L7,L[C1],L$,L[C2],M$,L[C3],N$,L[C4],O$,L[C5],P$
7820  RETURN 
8300  REM <5 IN, //ASK>
8302  J=SYS(C3)
8303  E=C0
8312  A$=""
8316  J0=C0
8318  IF  NOT J0 THEN 8366
8319  P1$="????"
8320  GOTO 8372
8366  PRINT P0$;
8368  GOTO 8373
8372  PRINT P1$;
8373  LINPUT A1$
8374  GOTO 8420
8420  IF LEN(A$)+LEN(A1$) <= 255 THEN 8426
8422  PRINT "Total line length exceeds 255 characters."
8424  GOTO 8300
8426  IF J0 THEN 8430
8428  A$=P0$[V9+C1,LEN(P0$)]
8429  P0$=P0$[C1,V9]
8430  IF  NOT LEN(A1$) THEN 8448
8432  A$[LEN(A$)+C1]=A1$
8434  IF A$[LEN(A$)]#"&" THEN 8448
8436  A$=A$[C1,LEN(A$)-C1]
8442  J0=C1
8446  GOTO 8318
8448  IF  NOT A[24] THEN 8466
8450  FOR J=C1 TO LEN(A$)
8452  J1=NUM(A$[J,J])
8454  IF J1 >= 32 AND J1 <= 126 THEN 8462
8456  IF J1=C9 AND A[13] THEN 8462
8458  PRINT "No control characters allowed."
8460  P0$[LEN(P0$)+C1]=A$[C1,J-C1]
8461  GOTO 8300
8462  NEXT J
8466  REM
8468  IF LEN(A$) THEN 8474
8470  V5=C1
8472  GOTO 8586
8474  V5=C2
8475  IF  NOT A[D0] THEN 8586
8476  IF A$[C1,C2]="//" THEN 8802
8586  IF SYS(C3) THEN 8596
8588  V5=C3
8590  RETURN 
8596  V0=C1
8598  RETURN 
8802  REM
8804  A$=A$[C3,LEN(A$)]
8816  A$=UOS$(A$)
8820  RESTORE 8822
8822  DATA 3,1,"HELP",2,"STOP",1,"BREAK"
8824  GOSUB 9300
8828  IF K2 THEN 8862
8858  PRINT "Illegal or unpermitted //-command."
8860  GOTO 8300
8862  GOSUB 9650
8866  GOTO K2 OF 8874,8924,8970
8874  REM
8914  PRINT "To terminate the operation, type the BREAK key before pressing RETURN."
8922  GOTO 8300
8924  REM
8925  IF D1=-C1 THEN 8935
8926  PRINT #C1,M3-C2;M7,M8,M9
8927  MAT  PRINT #C1,M3;M
8928  MAT  PRINT #C1,N3;N
8929  PRINT #C1,M3-C1; END 
8930  IF  NOT S0 THEN 8935
8932  ASSIGN *,C3
8934  PURGE I,S0$
8935  STOP 
8970  REM
8978  V0=V5=C1
8980  RETURN 
9300  REM
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 
9650  REM
9652  FOR J=C1 TO LEN(A$)
9654  IF A$[J,J]#" " THEN 9658
9656  NEXT J
9658  A$=A$[J,LEN(A$)]
9660  RETURN 
9700  REM
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 
