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
13  DIM R$[11]
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 >>TEXT<<
1005  FILES *
1010  A1$=A$
1015  B0=B8=C0
1020  B9=50
1025  B1=(A[C2]#C1+C7*(A[C1]=C3))
1030  GOSUB 3400
1035  IF E THEN 1200
1040  H4=C1
1045  V0=H1
1050  GOSUB 4200
1055  IF V0=C1 OR V5=C1 THEN 1200
1060  GOSUB 7900
1065  IF H1=C2 THEN 1085
1070  X5=A[C5]
1075  G=A[C6]
1080  GOTO 1090
1085  X5=L
1090  B$=A$
1095  GOSUB 2700
1100  IF  NOT E THEN 1115
1105  PRINT "Work file full.  Cannot TEXT all of file "F1$"."
1110  GOTO 1195
1115  IF LEN(B$) <= A[C3] THEN 1125
1120  B1=C1
1125  IF B0 THEN 1145
1130  P[C1]=L1
1135  P[C2]=A[C2]
1140  B0=C1
1145  IF V5=C1 THEN 1215
1150  GOSUB 4200
1155  GOSUB 1400
1160  IF V0=C1 THEN 1200
1165  IF V5=C1 THEN 1215
1170  IF V0=C2 THEN 1085
1175  GOSUB 6200
1180  IF X9 THEN 1205
1185  PRINT "Highest line number exceeded."
1190  SYSTEM J,"ECHO-ON"
1195  GOSUB 9700
1200  RETURN 
1205  X5=X9
1210  GOTO 1090
1215  A$='7'7
1220  CONVERT M5 TO A$[C3]
1225  IF M5=C1 THEN 1240
1230  A1$="s"
1235  GOTO 1245
1240  A1$=""
1245  IF  NOT V3 OR M5<50 THEN 1255
1250  PRINT '27"A"'27"J"'13;
1255  GOTO A[C1] OF 1260,1270,1280
1260  PRINT A$" line"A1$" of text";
1265  GOTO 1285
1270  PRINT A$" BASIC statement"A1$;
1275  GOTO 1285
1280  PRINT A$" COBOL line"A1$;
1285  PRINT " in your Work file."
1290  IF  NOT B1 THEN 1300
1295  PRINT "Warning: Text out of bounds in one or more lines."
1300  RETURN 
1400  REM2 <REPORT LINES>
1405  B8=B8+C1
1410  IF B8<B9 THEN 1440
1415  CONVERT B9 TO R$
1420  IF B9=50 OR  NOT V3 THEN 1430
1425  PRINT '27"A"'27"J"'13;
1430  PRINT R$" lines entered."
1435  B9=B9+50
1440  RETURN 
2700  REM2 <SERIAL ADD>
2705  IF L7=C5 THEN 2785
2710  GOTO L2 OF 2715,2725,2735,2745
2715  M$=B$
2720  GOTO 2750
2725  N$=B$
2730  GOTO 2750
2735  O$=B$
2740  GOTO 2750
2745  P$=B$
2750  L7=L2=L2+C1
2755  L1=L[L2]=X5
2760  L4=C1
2765  M5=M[64,C2]=M5+C1
2770  E=C0
2775  GOSUB 7800
2780  RETURN 
2785  REM2 *ST NEW REC*
2790  IF N2#63 THEN 2815
2795  IF M2=63 THEN 2820
2800  GOSUB 7000
2805  J4=X4
2810  IF  NOT J4 THEN 2820
2815  IF M7 OR M8<M9 THEN 2830
2820  E=C2
2825  RETURN 
2830  GOSUB 7000
2835  L3=X4
2840  L2=L4=L7=C1
2845  L1=J5=X5
2850  M5=M[64,C2]=M5+C1
2855  PRINT #C1,L3;C1,X5,B$,C0,"",C0,"",C0,"",C0,""
2860  GOSUB 7700
2865  IF N2#63 THEN 2920
2870  REM2 *NEW INDEX BLOCK*
2875  MAT N=ZER
2880  N1=N2=C0
2885  N3=J4
2890  N[64,C2]=N3
2895  M1=M1+C1
2900  M[M1,C1]=X5
2905  M[M1,C2]=N3
2910  M[64,C1]=M2=M2+C1
2915  MAT  PRINT #C1,M3;M
2920  REM2 *ADD ENTRY TO N[]*
2925  N1=N1+C1
2930  N[N1,C1]=J5
2935  N[N1,C2]=X4
2940  N[64,C1]=N2=N2+C1
2945  MAT  PRINT #C1,N3;N
2950  E=C0
2955  RETURN 
3300  REM <YES/NO>
3305  J=SYS(C3)
3310  PRINT P0$;
3315  LINPUT A$
3320  IF SYS(C3) THEN 3370
3322  IF  NOT LEN(A$) THEN 3380
3325  IF LEN(A$)<C4 THEN 3340
3330  PRINT "Response limited to YES (or return) or NO (or break)."
3335  GOTO 3310
3340  A1$=UOS$(A$)
3345  RESTORE 3350
3350  DATA 2,1,"YES",1,"NO"
3355  GOSUB 9300
3360  IF  NOT K2 THEN 3330
3365  RETURN 
3370  K2=C2
3375  RETURN 
3380  K2=C1
3385  RETURN 
3400  REM <FR PAR/CART>
3402  H1=C2
3404  H2=C1
3406  H3=1.E+06
3408  H=U3=C0
3410  A$=A1$
3412  J1=POS(A$,"(")
3414  IF J1 THEN 3418
3416  J1=LEN(A$)+C1
3418  J2=POS(A$,",")
3420  J6=C2
3422  IF J2 THEN 3428
3424  J2=LEN(A$)+C1
3426  J6=C1
3428  J3=J1 MIN J2
3430  IF J3 >= C2 AND J3 <= 12 THEN 3436
3432  PRINT "Missing or illegal file name."
3434  GOTO 3520
3436  F1$=A$[C1,J3-C1]
3438  IF F1$[C1,C1]#"#" THEN 3454
3440  IF V3#C2 THEN 3432
3442  IF F1$#"#TCL" THEN 3448
3444  U3=C1
3446  GOTO 3460
3448  IF F1$#"#TCR" THEN 3432
3450  U3=C2
3452  GOTO 3460
3454  IF F1$#U0$ THEN 3460
3456  PRINT "You can't use your Work file here."
3458  GOTO 3520
3460  IF V2=C1 THEN 3468
3462  IF F1$#U1$ THEN 3468
3464  PRINT "You can't use your USE file here."
3466  GOTO 3520
3468  GOTO SGN(J1-J2)+C2 OF 3470,3526,3508
3470  J4=POS(A$,":") MAX POS(A$,"/")
3472  J5=POS(A$,")")
3474  IF J1>J5 OR J5>J2 THEN 3518
3476  IF  NOT J4 THEN 3500
3478  IF J1>J4 OR J4>J5 THEN 3518
3480  A1$=A$[J1+C1,J4-C1]
3482  GOSUB J6 OF 6000,5900
3484  IF  NOT F1 THEN 3518
3486  H2=F1
3488  A1$=A$[J4+C1,J5-C1]
3490  GOSUB J6 OF 6000,5900
3492  IF  NOT F1 THEN 3518
3494  H3=F1
3496  IF H2>H3 THEN 3518
3498  GOTO 3508
3500  A1$=A$[J1+C1,J5-C1]
3502  GOSUB J6 OF 6000,5900
3504  IF  NOT F1 THEN 3518
3506  H2=H3=F1
3508  IF J6=C1 THEN 3526
3510  A1$=A$[J2+C1,LEN(A$)]
3512  IF  NOT LEN(A1$) THEN 3518
3514  A$="UNNUMBERED"
3516  IF A1$=A$[C1,LEN(A1$)] THEN 3524
3518  PRINT "Illegal format in specifying the FROM file."
3520  GOSUB 9700
3522  RETURN 
3524  H1=C3
3526  E=C0
3527  H=C1
3528  RETURN 
4200  REM <FR F/CART>
4201  IF H4=C2 THEN 4242
4202  J5=H2-C1
4203  IF  NOT U3 THEN 4223
4204  X6=U2=C0
4205  SYSTEM J,"ECHO-OFF"
4206  CONVERT U3 TO I$
4207  P0$='27"&p u0C"
4208  P0$[C4,C4]=I$
4209  PRINT P0$
4210  ENTER 255,J,A$
4211  IF A$[C1,C1]="S" THEN 4214
4212  PRINT "No tape in "F1$
4213  GOTO 4315
4214  IF V0=C2 THEN 4242
4215  FOR I=C1 TO J5
4216  GOSUB 4350
4217  IF V5=C0 THEN 4314
4218  IF V5=C1 THEN 4298
4219  IF SYS(C3) THEN 4315
4220  NEXT I
4221  X6=J5
4222  GOTO 4242
4223  A1$=F1$
4224  J3=C3
4225  J4=C1
4226  GOSUB 9500
4227  IF E THEN 4315
4228  X6=C0
4229  IF V0=C2 THEN 4241
4230  IF U2 THEN 4238
4231  IF  END #C3 THEN 4298
4232  IF  ERROR  THEN 4307
4233  FOR I=C1 TO J5
4234  LINPUT #C3;A$
4235  NEXT I
4236  IF  ERROR  THEN 9998
4237  GOTO 4240
4238  ADVANCE #C3;J5,J
4239  IF J THEN 4298
4240  X6=J5
4241  IF  END #C3 THEN 4298
4242  IF  NOT U3 THEN 4247
4243  GOSUB 4350
4244  IF  NOT V5 THEN 4314
4245  IF V5=C1 THEN 4316
4246  GOTO 4257
4247  IF U2 THEN 4253
4248  IF  ERROR  THEN 4307
4249  LINPUT #C3;A$
4250  J5=J5+C1
4251  IF  ERROR  THEN 9998
4252  GOTO 4257
4253  IF TYP(C3)#C1 THEN 4256
4254  READ #C3;I
4255  GOTO 4253
4256  READ #C3;A$
4257  IF SYS(C3) THEN 4316
4258  IF V0=C2 THEN 4262
4259  X6=X6+C1
4260  IF H4=C2 THEN 4295
4261  W1$=A$
4262  GOSUB 9650
4263  FOR J=C1 TO LEN(A$)
4264  J1=NUM(A$[J,J])
4265  IF J1<48 AND J1#46 OR J1>57 THEN 4267
4266  NEXT J
4267  A1$=A$[C1,J-C1]
4268  GOSUB 6000
4269  IF F1 THEN 4274
4270  IF V0=C3 THEN 4289
4271  IF H4=C1 AND  NOT U2 AND ((J5=C1 AND LEN(A$)<C7) OR (J5=C2 AND  NOT LEN(A$))) THEN 4248
4272  PRINT "Missing or illegal line number encountered in file "F1$"."
4273  GOTO 4315
4274  IF V0=C3 THEN 4281
4275  IF A[C1]=C3 THEN 4291
4276  IF J1=32 OR J1=58 THEN 4279
4277  A$=A$[J]
4278  GOTO 4291
4279  A$=A$[J+C1]
4280  GOTO 4291
4281  IF V2=C2 AND  NOT W1 THEN 4295
4282  PRINT "File "F1$" seems to have numbered lines."
4283  SYSTEM J,"ECHO-ON"
4284  P0$="Do you want to continue? "
4285  GOSUB 3300
4286  IF  NOT U3 THEN 4288
4287  SYSTEM J,"ECHO-OFF"
4288  GOTO K2 OF 4289,4316
4289  A$=W1$
4290  GOTO 4295
4291  IF F1>X6 THEN 4294
4292  PRINT "Line numbers out of sequence in file "F1$"."
4293  GOTO 4315
4294  L=X6=F1
4295  IF H4=C2 THEN 4304
4296  IF X6<H2 THEN 4242
4297  IF X6 <= H3 THEN 4300
4298  PRINT "No lines in range."
4299  GOTO 4315
4300  H4=C2
4301  IF U3 THEN 4305
4302  IF  END #C3 THEN 4316
4303  GOTO 4305
4304  IF X6>H3 THEN 4316
4305  GOSUB 9670
4306  IF LEN(A$) <= 94 THEN 4309
4307  PRINT "Warning: Input line truncated to 94 characters."
4308  A$=A$[C1,94]
4309  IF X6=H3 THEN 4312
4310  V5=C3
4311  RETURN 
4312  V5=C2
4313  GOTO 4317
4314  PRINT "Transmission error on file "F1$
4315  GOSUB 9700
4316  V5=C1
4317  SYSTEM J,"ECHO-ON"
4318  RETURN 
4350  REM2 <READ CART>
4352  V5=C3
4354  P0$='27"&p s0R"
4356  P0$[C4,C4]=I$
4358  PRINT P0$;
4360  ENTER 40,J,A$
4362  IF A$[C1,C1]#'30 THEN 4376
4364  PRINT '27"^"
4366  ENTER 12,J,A$
4368  IF NUM(A$[C5,C5])#48 THEN 4374
4370  V5=C1
4372  GOTO 4376
4374  V5=C0
4376  RETURN 
5900  REM <F#>
5910  FOR J7=C1 TO LEN(A1$)
5920  J8=NUM(A1$[J7,J7])
5930  IF J8<48 OR J8>57 THEN 5970
5940  NEXT J7
5950  CONVERT A1$ TO F1,5856
5960  RETURN 
5970  F1=C0
5980  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,5982
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 
6200  REM <CALC NXT LI>
6204  GOSUB 6300
6208  IF X9 THEN 6216
6212  X9=1.E+06
6216  IF L1+G >= X9 THEN 6228
6220  X9=L1+G
6224  RETURN 
6228  IF L1+1000 >= X9 OR A[C1]#C3 THEN 6240
6232  X9=L1+1000
6236  RETURN 
6240  IF L1+100 >= X9 THEN 6252
6244  X9=L1+100
6248  RETURN 
6252  IF A[C1]=C2 THEN 6280
6256  IF L1+D0 >= X9 THEN 6268
6260  X9=L1+D0
6264  RETURN 
6268  IF L1+C1 >= X9 THEN 6280
6272  X9=L1+C1
6276  RETURN 
6280  X9=C0
6284  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 
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 
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 
7900  REM <DEL ALL>
7904  MAT L=ZER
7908  MAT M=ZER
7912  MAT N=ZER
7916  MAT P=ZER
7920  L1=M5=M7=C0
7924  L2=L4=L7=M1=M2=M[64,C1]=N1=N2=N[64,C1]=C1
7928  L3=M8=N[C1,C2]=M3+C2
7932  M[C1,C2]=M3+C1
7936  N3=N[64,C2]=M3+C1
7940  L$="Dummy line 0"
7944  M$=""
7948  N$=""
7952  O$=""
7956  P$=""
7960  MAT  PRINT #C1,M3;M
7964  MAT  PRINT #C1,N3;N
7968  GOSUB 7800
7972  PRINT #C1,M3-C2;M7,M8,M9
7976  IF M9<M3+C3 THEN 7984
7980  PRINT #C1,M3+C3; END 
7984  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 
9500  REM <ASSN>
9502  IF A1$[C1,C1]="$" THEN 9510
9504  I=POS(A1$,".A000")
9506  IF I>C1 THEN 9514
9508  GOTO 9526
9510  W$=A1$[C2]
9512  GOTO 9516
9514  W$=A1$[C1,I-C1]
9516  W1$="LIB-"
9518  W1$[C5]=W$
9520  SYSTEM W1$,W1$
9522  IF W1$[C1,LEN(W$)]#W$ THEN 9536
9524  IF W1$[C9,C9]="L" THEN 9536
9526  ASSIGN A1$,J3,J, PR 
9528  GOTO J+C1 OF 9552,9530,9530,9536,9998,9998,9540,9540,9544
9530  IF J4=C1 THEN 9552
9532  PRINT "File "A1$" is not available for writing."
9534  GOTO 9548
9536  PRINT "File "A1$" does not exist, or is not accessible."
9538  GOTO 9548
9540  PRINT "File "A1$" is in use by someone else."
9542  GOTO 9548
9544  IF J4=C2 THEN 9552
9546  PRINT "File "A1$" is not available for reading."
9548  GOSUB 9700
9550  RETURN 
9552  IF  ERROR  THEN 9562
9554  READ #J3,C1
9556  IF  ERROR  THEN 9998
9558  U2=C1
9560  GOTO 9566
9562  IF  ERROR  THEN 9998
9564  U2=C0
9566  E=C0
9568  RETURN 
9650  REM <TLEB>
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 
9670  REM <TTB>
9672  FOR J=LEN(A$) TO C1 STEP -C1
9674  IF A$[J,J]#" " THEN 9678
9676  NEXT J
9678  A$=A$[C1,J]
9680  RETURN 
9700  REM <ERR>
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 
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 
