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 *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
170  A1$="EDIT00"
175  A1$[C7]=B0$
180  CHAIN J,A1$,100
190  GOTO 9998
1000  REMP >>L<<
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 "Illegal parameter"
1035  GOTO 1190
1040  PRINT "Missing equal sign"
1045  GOTO 1190
1050  PRINT A1$" is not a positive integer"
1055  GOTO 1190
1060  PRINT "Right margin exceeds width"
1065  GOTO 1190
1070  PRINT "Margins preclude text"
1075  GOTO 1190
1080  PRINT "Page has no room for text"
1085  GOTO 1190
1090  PRINT "Facing offset too large"
1095  GOTO 1190
1100  PRINT "No lines in rangelist."
1105  GOTO 1190
1110  PRINT "Missing or illegal file name"
1115  GOTO 1190
1120  PRINT "DISPLAY=OFF and NOTEXT conflict"
1125  GOTO 1190
1130  PRINT "Right margin may not exceed 132"
1135  GOTO 1190
1140  PRINT "TO file too short"
1145  REM EMR EX
1150  GOSUB 9700
1155  GOTO 170
1160  PRINT "You can't list to your WORK file."
1165  GOTO 9700
1170  PRINT "You can't list to your USE file."
1190  GOSUB 9700
1195  RETURN 
1200  REMP *LST*
1203  GOSUB 2000
1206  IF  NOT LEN(W1$) THEN 1020
1209  N1$="!"
1212  R1=R3=C1
1215  R2=G8+V7*C8-V7*(A[C1]=C2)*C3
1218  R4=R5=R6=R7=R8=R9=B0=B6=H=C0
1221  IF  NOT LEN(A$) THEN 1600
1224  REM2 *SNTX*
1227  I=POS("LRSNPTU",A$[C1,C1])
1230  IF  NOT I THEN 1030
1233  GOTO I OF 1236,1236,1236,1299,1335,1434,1299
1236  REM2 *=TPS*
1239  I=POS(A$,"=")
1242  IF  NOT I THEN 1040
1245  A1$=A$[C1,I-C1]
1248  A$=A$[I+C1]
1251  RESTORE 1254
1254  DATA 3,1,"LEFT",1,"RIGHT",1,"SPACE"
1257  GOSUB 9300
1260  IF  NOT K2 THEN 1030
1263  GOSUB 6900
1266  IF  NOT LEN(A1$) THEN 1030
1269  CONVERT A1$ TO I,3384
1272  IF I#INT(I) OR I<C1 THEN 1050
1275  GOTO K2 OF 1278,1287,1293
1278  R1=I
1281  R2=I+G8+V7*C8-V7*(A[C1]=C2)*C3-C1
1284  GOTO 1473
1287  R2=I
1290  GOTO 1473
1293  R3=I
1296  GOTO 1473
1299  REM2 *PREP*
1302  GOSUB 6900
1305  IF  NOT LEN(A1$) THEN 1030
1308  RESTORE 1311
1311  DATA 2,1,"NOTEXT",1,"UPSHIFT"
1314  GOSUB 9300
1317  GOTO K2 OF 1323,1329
1320  GOTO 1030
1323  R4=C1
1326  GOTO 1473
1329  R7=C1
1332  GOTO 1473
1335  REMP *PAG*
1338  W$=""
1341  GOSUB 6900
1344  IF  NOT LEN(A1$) THEN 1030
1347  I=POS(A1$,"=")
1350  IF  NOT I THEN 1362
1353  IF LEN(A1$[I+C1])>C8 THEN 1030
1356  W$=A1$[I+C1]
1359  A1$=A1$[1,I-C1]
1362  RESTORE 1365
1365  DATA 1,1,"PAGINATE"
1368  GOSUB 9300
1371  IF  NOT K2 THEN 1030
1374  IF LEN(W$) THEN 1386
1377  R5=C1
1380  F9=C0
1383  GOTO 1473
1386  A1$=W$
1389  IF A1$[C1,C1]="C" THEN 1413
1392  CONVERT A1$ TO F9,3384
1395  IF F9#INT(F9) THEN 1050
1398  IF  NOT F9 THEN 1407
1401  F9=F9-C1
1404  GOTO 1425
1407  R5=C2
1410  GOTO 1473
1413  RESTORE 1416
1416  DATA 1,1,"CONTINUE"
1419  GOSUB 9300
1422  IF  NOT K2 THEN 1030
1425  R5=-C1
1428  GOTO 1473
1431  REM2 *TO*
1434  IF A$[C1,C2]#"TO" THEN 1030
1437  A$=A$[C3]
1440  GOSUB 6900
1443  IF  NOT LEN(A1$) OR LEN(A1$)>11 THEN 1110
1446  IF A1$=U0$ THEN 1160
1449  IF V2=C1 THEN 1455
1452  IF A1$=U1$ THEN 1170
1455  J3=J4=C2
1458  GOSUB 9500
1461  IF E THEN 1195
1464  R6=C1
1467  IF J=C8 THEN 1473
1470  IF  END #C2 THEN 1140
1473  IF  NOT LEN(A$) THEN 1600
1476  IF A$[C1,C1]#"," THEN 1227
1479  A$=A$[C2]
1482  GOTO 1227
1600  REMP *CHK*
1603  IF R6 THEN 1612
1606  R2=R2 MIN A[C9]
1609  GOTO 1615
1612  R2=R2 MIN 132
1615  IF R1>R2 THEN 1070
1618  IF V7 AND R2-R1<C8-(A[C1]=2)*C3 THEN 1070
1621  R3=R3 MIN C4
1624  IF  NOT R5 THEN 1645
1627  F6=A[11]-A[18]-A[19]-A[20]-A[21]-C2
1630  IF F6<C1 THEN 1080
1639  IF A[17] AND  NOT R6 AND ABS(A[17])>A[C9]-(R2-R1+C1) THEN 1090
1642  IF V7 AND R4 THEN 1120
1645  A$=W1$
1648  I=SYS(C3)
1651  B4=B5=B9=F8=C0
1654  F2=F5=C1
1657  F4=C2
1660  B1=R2-R1+C1
1663  IF  NOT R5 THEN 1700
1666  GOSUB 3800
1700  REMP *NR*
1705  GOSUB 4400
1710  IF E=100 THEN 1765
1715  IF E THEN 1735
1720  P[C1]=L1
1725  P[C2]=A[C2]
1730  GOTO 1785
1735  IF LEN(A$) THEN 1770
1740  IF  NOT F8 THEN 1100
1745  IF  NOT R5 THEN 1755
1750  GOSUB 3850
1755  IF  NOT R6 THEN 1765
1760  PRINT '7"End of listing"
1765  RETURN 
1770  IF A$[C1,C1]#"," THEN 1020
1775  A$=A$[C2]
1780  GOTO 1705
1785  REM2 *LR*
1790  GOSUB 7600
1795  GOSUB 5300
1800  B3= NOT LEN(W$)
1805  IF B3 AND B9 AND V7=C0 THEN 1890
1810  B9=C0
1815  IF R5 AND  NOT V7 AND A[C2]=C1 AND NUM(W$)=46 AND A[C1]=C1 THEN 3000
1820  IF  NOT R5 THEN 1880
1825  IF B5 THEN 1875
1830  IF B3 OR  NOT B4 THEN 1880
1835  B5=C4
1840  IF F6-B0>C3 THEN 1880
1845  GOSUB 3850
1850  IF E THEN 1920
1855  GOSUB 3800
1860  B9=C0
1865  GOSUB 5300
1870  GOTO 1880
1875  B5=B5-C1
1880  GOSUB 2100
1885  IF E THEN 1190
1890  IF SYS(C3) THEN 1920
1895  IF L1=E[C1] THEN 1735
1900  GOSUB 7400
1905  IF E THEN 9998
1910  B4=B3
1915  GOTO 1790
1920  RETURN 
2000  REMP <SEP>
2005  K=C1
2010  I=POS(A$[K],",")+K
2015  IF I-K THEN 2035
2020  W1$=A$
2025  A$=""
2030  RETURN 
2035  J=POS("LNPRSTU",A$[I,I])
2040  IF  NOT J THEN 2060
2045  IF J#C1 THEN 2070
2050  IF A$[I+C1,I+C1]="=" THEN 2070
2055  IF A$[I+C1,I+C1]="E" THEN 2070
2060  K=I
2065  GOTO 2010
2070  W1$=A$[C1,I-C2]
2075  A$=A$[I]
2080  RETURN 
2100  REM2 <PR L>
2103  F8=F8+C1
2106  IF V7 THEN 2115
2109  P0$=""
2112  GOTO 2127
2115  X7=L1
2118  GOSUB 9900
2121  P0$=V1$
2124  P0$[LEN(P0$)+C1]=" "
2127  W6=LEN(P0$)
2130  IF  NOT R4 AND LEN(W$) THEN 2139
2133  W$=""
2136  GOTO 2187
2139  IF  NOT A[23] THEN 2157
2142  FOR I=C1 TO LEN(W$)
2145  J=NUM(W$[I,I])
2148  IF J>31 AND J<127 THEN 2154
2151  W$[I,I]=N0$
2154  NEXT I
2157  IF  NOT A[22] OR V7 THEN 2181
2160  J=C1
2163  I=POS(W$[J],F0$)+J-C1
2166  IF  NOT (I-J+C1) THEN 2181
2169  W$[I,I]=" "
2172  IF I=LEN(W$) THEN 2181
2175  J=I+C1
2178  GOTO 2163
2181  IF  NOT R7 THEN 2187
2184  W$=UOS$(W$)
2187  P0$[LEN(P0$)+C1]=W$
2190  GOSUB 2300
2193  GOSUB 3900
2196  RETURN 
2300  REMP <P P0$>
2303  J1=B1
2306  W$=""
2309  W$[C1,R1-C1+(A[17]*(F9-C2*INT(F9/C2)))]=""
2312  W1$=""
2315  IF LEN(P0$) <= J1 THEN 2348
2318  R9=C0
2321  FOR I=J1+C1 TO C1 STEP -C1
2324  IF P0$[I,I]=" " THEN 2339
2327  NEXT I
2330  W1$=P0$[J1+C1]
2333  P0$=P0$[C1,J1]
2336  GOTO 2348
2339  IF I=W6 AND J1=B1 THEN 2330
2342  W1$=P0$[I+C1]
2345  P0$=P0$[C1,I-C1]
2348  IF  NOT R8 THEN 2357
2351  P0$[LEN(P0$)+C1,J1+C1]=""
2354  P0$[LEN(P0$)+C1]=N1$
2357  GOSUB 2400
2360  B0=B0+C1
2363  IF  NOT LEN(W1$) THEN 2384
2366  GOSUB 3900
2369  P0$=W1$
2372  IF W6 AND J1=B1-W6 THEN 2312
2375  W$[LEN(W$)+C1,LEN(W$)+W6]=""
2378  J1=B1-W6
2381  GOTO 2312
2384  IF  NOT R8 THEN 2390
2387  R8=R8+C1
2390  RETURN 
2400  REM2 <PRT>
2405  A1$=W$
2410  A1$[LEN(A1$)+C1]=P0$
2415  IF R6 THEN 2445
2420  A1$[LEN(A1$)+C1]='13
2425  PRINT A1$;
2430  IF R9 THEN 2450
2435  PRINT '10;
2440  GOTO 2450
2445  PRINT #C2;A1$,CTL(13+ NOT R9)
2450  R9=C0
2455  RETURN 
2500  REM2 <PAU>
2505  IF B0<A[12] OR L1=E[C1] THEN 2545
2510  PRINT "Continue? ";
2515  LINPUT W$[C1,C1]
2520  I=NUM(W$)
2525  IF  NOT V3 THEN 2535
2530  PRINT '27"A"'27"J"'13;
2535  IF I=78 OR I=110 OR SYS(C3) THEN 170
2540  B0=C0
2545  RETURN 
2600  REMP <PR H,P>
2605  W$=""
2610  W$[C1,R1-C1+(A[17]*(F9-C2*INT(F9/C2)))]=""
2615  GOSUB 2400
2620  RETURN 
2700  REM2 <TIME>
2705  DIM T$[8]
2710  GOTO B6 OF 2780
2715  I1=TIM(C1)
2720  I4=(I1 >= 12)
2725  I1=I1-12*I4
2730  I1=I1+12*(I1=C0)
2735  CONVERT I1 TO T$
2740  T$[LEN(T$)+C1]=":"
2745  IF TIM(C0) >= D0 THEN 2755
2750  T$[LEN(T$)+C1]="0"
2755  CONVERT TIM(C0) TO T$[LEN(T$)+C1]
2760  IF I4 THEN 2775
2765  T$[LEN(T$)+C1]=" AM"
2770  GOTO 2780
2775  T$[LEN(T$)+C1]=" PM"
2780  W$[LEN(W$)+C1]=T$
2785  RETURN 
3000  REM2 *FC*
3005  W1$=A$
3010  A$=W$[C2]
3015  GOTO 3200
3020  PRINT "'"A1$"' is an illegal";
3025  GOTO 3065
3030  PRINT "Illegal";
3035  GOTO 3065
3040  PRINT "'"A1$"' is an illegal integer in";
3045  GOTO 3065
3050  PRINT "Missing = in";
3055  GOTO 3065
3060  PRINT A1$" illegal flag character in";
3065  X7=L1
3070  GOSUB 9900
3075  A$=V1$
3080  GOSUB 9650
3085  PRINT " format command in line "A$
3090  GOSUB 9700
3095  RETURN 
3200  REMP LP
3205  GOSUB 3650
3210  A1$=UOS$(A1$)
3215  RESTORE 3220
3220  DATA 9,1,"ODDPAGE",2,"SUPPRESS",1,"PAGE",1,"HEADING",3,"NEED"
3225  DATA 2,"SPACING",2,"SKIP",3,"NEWPAGE",1,"FLAG"
3230  GOSUB 9300
3235  GOTO K2 OF 3245,3280,3295,3295,3340,3340,3340,3265,3420
3240  GOTO 3020
3245  REM2 O,N
3250  IF F9-C2*INT(F9/C2)=C0 THEN 3265
3255  GOSUB 3850
3260  GOSUB 3800
3265  GOSUB 3850
3270  GOSUB 3800
3275  GOTO 3615
3280  REM2 SU
3285  R9=C1
3287  B0=B0-1
3290  GOTO 3615
3295  REM2 PH
3300  V4=C2
3305  GOSUB 9800
3310  IF E THEN 3090
3315  IF K2=C4 THEN 3330
3320  H1$=A1$
3325  GOTO 3605
3330  H0$=A1$
3335  GOTO 3605
3340  REM2 NSS
3345  IF J2#61 THEN 3370
3350  GOSUB 3650
3355  IF J2=61 THEN 3030
3360  CONVERT A1$ TO I,5735
3365  GOTO 3380
3370  IF K2=C5 OR K2=C6 THEN 3050
3375  I=C1
3380  GOTO K2-C4 OF 3385,3395,3405
3385  IF F6-B0<I THEN 3265
3390  GOTO 3615
3395  R3=INT(I) MIN C4
3400  GOTO 3615
3405  B2=INT(I)
3410  GOSUB 3906
3415  GOTO 3615
3420  REMP *FL*
3425  IF J2#61 THEN 3050
3430  I=NUM(A$)
3435  IF I>47 AND I<58 THEN 3520
3440  I=POS(A$,",")
3445  IF  NOT I OR I>C4 THEN 3465
3450  A1$=A$[C1,I-C1]
3455  A$=A$[I]
3460  GOTO 3470
3465  GOSUB 3650
3470  RESTORE 3475
3475  DATA 2,2,"OFF",2,"ON"
3480  A1$=UOS$(A1$)
3485  GOSUB 9300
3490  IF  NOT K2 THEN 3020
3495  R8=K2-C1
3500  J=NUM(A$)
3505  IF J#44 THEN 3615
3510  A$=A$[C2]
3515  GOTO 3580
3520  FOR I=C1 TO LEN(A$)
3525  J=NUM(A$[I,I])
3530  IF J=44 OR J=59 THEN 3555
3535  NEXT I
3540  A1$=A$
3545  A$=""
3550  GOTO 3565
3555  A1$=A$[C1,I-C1]
3560  A$=A$[I+C1]
3565  CONVERT A1$ TO I,5735
3570  R8=-INT(I)
3575  IF J#44 THEN 3615
3580  V4=C2
3585  GOSUB 9800
3590  IF E THEN 3030
3595  IF  NOT LEN(A1$) OR LEN(A1$)>C1 THEN 3060
3600  N1$=A1$
3605  IF A$[C1,C1]#";" THEN 3615
3610  A$=A$[C2]
3615  REM2 *NXT*
3620  IF  NOT LEN(A$) THEN 3640
3625  IF A$[C1,C1]#"." THEN 3200
3630  A$=A$[C2]
3635  GOTO 3200
3640  A$=W1$
3645  GOTO 1890
3650  REMP <=;>
3653  FOR I=C1 TO LEN(A$)
3656  J2=NUM(A$[I,I])
3659  IF J2=61 OR J2=59 THEN 3674
3662  NEXT I
3665  A1$=A$
3668  A$=""
3671  RETURN 
3674  A1$=A$[C1,I-C1]
3677  A$=A$[I+C1]
3680  RETURN 
3700  REM2 <BH>
3703  W$=H0$
3706  GOSUB  NOT NUM(W$) AND LEN(W$) OF 2700
3709  IF LEN(W$) <= B1 THEN 3733
3712  IF  NOT NUM(W$) THEN 3721
3715  PRINT "Heading too long"
3718  GOTO 1150
3721  W$=W$[POS(W$,",  ")+C3]
3724  IF B1<LEN(W$) THEN 3730
3727  GOTO 3733
3730  W$=""
3733  I=A[14]
3736  GOTO 3763
3739  REM2 <BPI>
3742  W$=H1$
3745  IF R5=C2 THEN 3751
3748  CONVERT F9 TO W$[LEN(W$)+C1]
3751  IF LEN(W$) <= B1 THEN 3760
3754  PRINT "Page indicator too long"
3757  GOTO 1150
3760  I=A[16]
3763  P0$=""
3766  GOTO I OF 3784,3769,3775,3781
3769  P0$[C1,INT((B1-LEN(W$))/C2) MAX C1]=""
3772  GOTO 3784
3775  P0$[C1,(B1-LEN(W$)) MAX C1]=""
3778  GOTO 3784
3781  IF F9/C2#INT(F9/C2) THEN 3775
3784  P0$[LEN(P0$)+C1]=W$
3787  RETURN 
3800  REMP <NP>
3802  IF  NOT (R6 AND B6) THEN 3806
3804  PRINT #C2;CTL(C1)
3806  F9=F9+C1
3808  B2=A[18]
3810  GOSUB 3950
3812  IF B2 THEN 3810
3814  IF  NOT A[15] THEN 3822
3816  IF  NOT A[14] THEN 3830
3818  GOSUB 3700
3820  GOTO 3824
3822  GOSUB 3739
3824  GOSUB 2600
3826  B0=C0
3828  GOTO 3832
3830  GOSUB 3950
3832  B2=A[19]
3834  B6=C0
3836  GOSUB 3950
3838  IF B2 THEN 3836
3840  B6=B9=C1
3842  B0=C0
3844  RETURN 
3850  REM2 <EP>
3852  IF B0=F6 THEN 3860
3854  B2=C1
3856  GOSUB 3950
3858  GOTO 3852
3860  B2=A[20]
3862  GOSUB 3950
3864  IF B2 THEN 3862
3866  IF  NOT A[15] THEN 3876
3868  GOSUB 3739
3870  GOSUB 2600
3872  GOTO 3876
3874  GOSUB 3950
3876  IF R6 THEN 3886
3878  B2=A[21]
3880  GOSUB 3950
3882  IF B2 THEN 3880
3884  GOSUB A[12]#C0 OF 2515
3886  RETURN 
3900  REMP <NL>
3902  B2=R3-C1
3904  IF  NOT R5 THEN 3928
3906  REM2 <SKn>
3908  IF B0=F6 THEN 3918
3910  GOSUB 3950
3912  IF B2 THEN 3908
3914  IF B0=F6 THEN 3918
3916  RETURN 
3918  IF L1=E[C1] AND  NOT LEN(A$) AND  NOT LEN(W1$) THEN 3926
3920  GOSUB 3850
3922  IF E THEN 3926
3924  GOSUB 3800
3926  RETURN 
3928  GOSUB  NOT R6 AND A[12] OF 2500
3930  IF E THEN 3936
3932  GOSUB 3950
3934  IF B2 THEN 3928
3936  RETURN 
3950  REM2 <S1>
3952  IF  NOT B2 THEN 3966
3954  IF R6 THEN 3960
3956  PRINT  USING "#,"'34'10'34
3958  GOTO 3962
3960  PRINT #C2;CTL(C3)
3962  B2=B2-C1
3964  B0=B0+C1
3966  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 <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
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,8101
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 
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 
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 
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,8600
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 
6900  REM
6910  J4=POS(A$,",")
6920  IF J4<C2 OR J4=LEN(A$) THEN 6960
6930  A1$=A$[C1,J4-C1]
6940  A$=A$[J4+C1]
6950  RETURN 
6960  A1$=A$
6970  A$=""
6980  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$)<J1 THEN 9360
9350  IF A1$=K1$[C1,LEN(A1$)] THEN 9380
9360  NEXT K2
9370  K2=C0
9380  RETURN 
9500  REM
9504  ASSIGN A1$,J3,J, PR 
9508  GOTO J+C1 OF 9564,9512,9512,9524,9998,9998,9532,9532,9540
9512  IF J4=C1 THEN 9564
9516  PRINT "File "A1$" is not available for writing."
9520  GOTO 9548
9524  PRINT "File "A1$" does not exist, or is not accessible."
9528  GOTO 9548
9532  PRINT "File "A1$" is in use by someone else."
9536  GOTO 9548
9540  IF J4=C2 THEN 9564
9544  PRINT "File "A1$" is not available for reading."
9548  GOSUB 9700
9552  RETURN 
9564  IF  ERROR  THEN 9584
9568  READ #J3,C1
9572  IF  ERROR  THEN 9998
9576  U2=C1
9580  GOTO 9592
9584  IF  ERROR  THEN 9998
9588  U2=C0
9592  E=C0
9596  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 
