1  COM C0$[11],C0,C1$[11],C1
2  COM C4,C5,F3,D1$[255],G1,G2,D0,D4,D5,D6,D7,D8,D9,A6,A7,A9,N8,N9,L2
3  COM U[20],V[60],F1$[16],C[25],C,B1,L0,L1,K4,K9,B$[255],L$[100]
4  COM H[3,11],G[3,22],H0$[4],H6,K$[11],D0$[255],G$[66]
5  COM P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,L4,Q$[5],R$[6],S$[12],S0$[7],S1$[6],Q3
6  REM (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975
7  REM mod by S.KELLEY for any acc't.
8  REM ALL RIGHTS RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,
9  REM REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT THE
10  REM PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.
11  FILES *,*,*,*,*
12  GOTO 24
13  K$[1,6]="FCOPYC"
14  K$[7]=".W500"
16  ASSIGN K$,4,H9
17  IF H9>2 THEN 22
18  K$[1,6]="FCOPYM"
19  ASSIGN K$,5,H9
20  IF H9>2 THEN 22
21  RETURN 
22  PRINT "FCOPYC or FCOPYM missing"
23  STOP 
24  DIM A$[80],E$[80],M1$[3],I$[10],I0$[80],H$[72],H1$[80]
28  DIM N$[255],X$[20],X0$[20],X1$[20],Y$[72]
29  GOSUB 13
30  Q$="FCP"
32  ENTER #Q
34  IF Q >= 10 THEN 38
36  Q$[4]="0"
38  CONVERT Q TO Q$[LEN(Q$)+1]
39  R$="#,   A"
40  G$[1,66]=""
41  S0$='27"&p s0R"
42  S1$='27"&p dW"
43  D1$=""
44  F1$="0123456789ABCDEF"
45  IF C0$="" THEN 56
46  F3=3
48  G2=2
50  N8=C1
52  N9=C1=0
54  GOTO 58
56  F3=G2=D9=1
58  G1=1
59  REM K$[7] where package is
60  REM K$="$"
61  REM C was for K$[C]="FCOPY-"
62  C=2
64  MAT H=ZER
66  DATA 0,1,2,3,4,5,6,7,8,9
68  READ P0,P1,P2,P3,P4,P5,P6,P7,P8,P9
70  MAT  READ #P4,P1;U
72  MAT  READ #P5,P1;V
74  SYSTEM H0$[P1,P4],"TIM"
76  DATA "Version 2."
78  A=1041
80  A2=P1
82  B1=P0
84  GOSUB 4000
86  READ E$
88  IF A$=E$ THEN 96
90  A1=15
92  GOSUB 4700
94  STOP 
96  IF F3=P3 THEN 100
97  PRINT A$
98  GOTO 101
99  REM 100 - External entry pt. (skip file re-assignment)
100  GOSUB 13
101  SYSTEM H,"ECHO-ON"
102  C6=30
103  H9=BRK(P1)
104  C7=-P1
110  I7=.5
112  IF F3=P1 THEN 1000
520  ASSIGN C1$,P3,H9
530  IF H9 <= P2 THEN 560
540  G9=13
542  GOSUB 7000
550  STOP 
560  IF  END #P3 THEN 600
570  READ #P3,N8
580  ADVANCE #P3;N9,H9
590  GOTO 1015
600  G9=16
610  GOSUB 7000
620  GOTO 1015
1000  REM
1004  IF I7=-C6 THEN 1170
1015  C7=C6
1020  FOR I6=P1 TO 128
1030  GOTO SGN(U[I6])+P2 OF 1080,1060,1040
1040  GOTO SGN(U[I6]-C6)+P2 OF 1050,1090,1080
1050  I7=I6
1060  NEXT I6
1080  I6=I7
1090  READ #P4,I6
1100  GOTO TYP(P4) OF 1110,1130,1102
1102  PRINT "** MODULE"C6"IS MISSING **"
1104  STOP 
1110  READ #P4;I7
1112  IF I7#-C6 THEN 1100
1114  GOTO 1170
1130  READ #P4;A$
1140  GOTO 1100
1170  READ #P4;C8,C9
1180  MAT  READ #P4;C[C9]
1182  READ #P4;I7
1190  GOSUB C8 OF 8000,9998,8020,8030,8160,8200,8260,8279
1192  GOSUB C8-P8 OF 8340,8374,8382,8398
1200  C6=C[F5]
1202  IF  END #P4 THEN 1208
1204  READ #P4;A$,I7
1206  GOTO 1000
1208  I7=P0
1210  GOTO 1000
2000  REM
2005  F9=P0
2010  A1=F2
2020  IF LEN(D1$)>P0 THEN 2250
2030  GOTO F3 OF 2040,2070,2070
2040  GOSUB 3800
2050  LINPUT D0$
2060  GOTO 2160
2070  IF TYP(P3)=P2 THEN 2150
2080  IF F3=P3 THEN 2110
2090  F3=P1
2100  GOTO 2010
2110  CHAIN F4,C0$,C0
2112  IF F4#P1 THEN 2120
2114  A1=99
2116  GOSUB 4700
2118  STOP 
2120  A1=P2
2130  X$=C0$
2132  GOSUB 4700
2140  STOP 
2150  READ #P3;D0$
2160  IF LEN(D0$)+LEN(D1$) <= 255 THEN 2200
2170  G9=P3
2180  GOSUB 7000
2190  GOTO 2010
2200  D1$[LEN(D1$)+1]=D0$
2210  IF D1$[LEN(D1$) MAX P1]#"&" THEN 2250
2220  D1$=D1$[P1,LEN(D1$)-P1]
2230  A1=201
2240  GOTO 2030
2250  F4=POS(D1$,";")
2260  IF F4=P0 THEN 2300
2270  D0$=D1$[P1,F4-P1]
2280  D1$=D1$[F4+P1,LEN(D1$)]
2290  GOTO 2380
2300  D0$=D1$
2310  D1$=""
2380  GOSUB 5000
2400  IF LEN(D0$)>P0 THEN 2480
2410  F5=P2
2420  RETURN 
2480  F4=P2
2490  IF F4>LEN(D0$) THEN 2590
2500  IF D0$[F4,F4]=" " THEN 2530
2510  F4=F4+P1
2520  GOTO 2490
2530  F6=F4+P1
2540  IF D0$[F6,F6]#" " THEN 2570
2550  F6=F6+P1
2560  GOTO 2540
2570  D0$[F4+P1]=D0$[F6,LEN(D0$)]
2580  GOTO 2510
2590  FOR F4=P1 TO LEN(D0$)
2600  IF NUM(D0$[F4]) >= 32 THEN 2640
2610  G9=P6
2620  GOSUB 7000
2630  GOTO 2010
2640  NEXT F4
2650  D0$=UOS$(D0$)
2660  IF D0$[P1,P2]="//" THEN 2770
2670  GOTO F7 OF 2680,2700
2680  F5=P3
2690  RETURN 
2700  A1=F8
2702  G9=F0
2704  GOSUB 8700
2710  IF F5=P1 THEN 2010
2720  RETURN 
2770  A1=103
2775  G9=P7
2780  GOSUB 8700
2800  GOTO F5 OF 2010,9998,2840,2910,2930,2950,2980,3010
2810  GOTO F5-P8 OF 3030,3050,3070,3115,3120
2820  GOTO 3214
2840  F9=F9+P1
2850  A=(F2+P1)*10+F9
2855  PRINT 
2860  GOSUB 4720
2870  GOTO B6 OF 2895,2880
2880  A1=P8
2890  GOSUB 7310
2895  PRINT 
2900  GOTO 2010
2910  H7=P0
2915  GOSUB 8282
2920  STOP 
2930  H7=P0
2935  GOSUB 8282
2940  SYSTEM F6,"BYE"
2950  F5=P1
2970  RETURN 
2980  H7=P0
2990  GOSUB 8282
3000  K$[1,6]="FCOPY"
3002  CHAIN K$,100
3010  G1=P1
3020  GOTO 3072
3030  G1=P2
3040  GOTO 3072
3050  G2=P1
3060  GOTO 3072
3070  G2=P2
3072  A1=F5+134
3074  GOSUB 7310
3080  GOTO 2010
3115  A1=105
3116  GOSUB 4700
3117  A$=D0$
3118  GOTO 2010
3120  IF G7#P0 THEN 3130
3122  G9=P4
3124  GOTO 3208
3130  G3=POS(D0$,",")
3140  IF G3#P0 THEN 3170
3145  G3=LEN(D0$)+P1
3150  F4=P1
3160  GOTO 3177
3170  CONVERT D0$[G3+P1,LEN(D0$)] TO F4,3974
3172  IF F4<P1 OR F4#INT(F4) THEN 3206
3173  IF G3-G7<20 THEN 3176
3174  G9=57
3175  GOTO 3208
3176  I=P1
3177  A$=D0$[G7+P1,G3-P1]
3180  H$="CAT-"
3182  H$[P5]=A$
3184  SYSTEM H1$,H$
3185  X$=A$
3186  IF H$[P5,10]=H1$[P1,P6] THEN 3192
3188  G9=84
3190  GOTO 3208
3192  IF H1$[P8,P8]#"A" THEN 3195
3193  G9=78
3194  GOTO 3208
3195  ASSIGN A$,P3,H9, PR 
3196  IF H9 <= 2 THEN 3199
3197  G9=13
3198  GOTO 3208
3199  IF  END #P3 THEN 3206
3200  C1$=A$
3201  G2=P2
3202  READ #P3,F4
3203  F3=P2
3204  GOTO 2010
3206  G9=16
3208  GOSUB 7000
3210  GOTO 2010
3214  D0$=D0$[P3]
3216  L=F5-13
3218  GOSUB 3700
3220  GOTO 2010
3700  REM *COMMAND*
3701  GOTO L OF 3703,3703,3703,3703,3703,3703
3702  GOTO L-P6 OF 3703,3727,3753,3710,3710,3710
3703  SYSTEM F1,D0$
3704  IF F1=P0 THEN 3760
3705  IF L#P1 THEN 3708
3706  G9=68
3707  GOTO 3758
3708  G9=57
3709  GOTO 3758
3710  A1=115
3711  GOSUB 4700
3712  B4=P1
3713  SYSTEM E$,D0$
3714  IF E$="" THEN 3762
3715  IF B4<20 THEN 3720
3716  Q4=P1
3717  GOSUB 7700
3718  B4=P0
3719  GOTO M1 OF 3720,3762
3720  PRINT E$
3721  IF LEN(E$)<50 THEN 3762
3722  B4=B4+P1
3723  D0$[P4]="-"
3724  D0$[P5]=E$[49,54]
3725  D0$[10]=CHR$(NUM(D0$[10])+P1)
3726  GOTO 3713
3727  K6=POS(D0$,",")
3728  IF K6#P0 THEN 3731
3729  G9=58
3730  GOTO 3758
3731  K7=POS(D0$[K6+P1],",")
3732  IF K7#P0 THEN 3736
3733  K7=LEN(D0$)+P1
3734  K8=256
3735  GOTO 3742
3736  K7=K6+K7
3737  IF LEN(D0$)-K7-P1>10 THEN 3740
3738  CONVERT D0$[K7+P1,LEN(D0$)] TO K8,4299
3739  IF K8 >= 64 AND K8 <= 256 AND K8=INT(K8) THEN 3742
3740  G9=59
3741  GOTO 3758
3742  IF K7-K6>10 THEN 3745
3743  CONVERT D0$[K6+P1,K7-P1] TO K7,4344
3744  IF K7 >= P1 AND K7 <= 32767 AND K7=INT(K7) THEN 3747
3745  G9=60
3746  GOTO 3758
3747  K=POS(D0$,"-")
3748  IF K=P0 OR K>K6 THEN 3729
3749  CREATE H9,D0$[K+P1,K6-P1],K7,K8
3750  IF H9=P0 THEN 3760
3751  G9=H9+60
3752  GOTO 3758
3753  K=POS(D0$,"-")
3754  IF K=P0 THEN 3729
3755  PURGE H9,D0$[K+P1,LEN(D0$)]
3756  IF H9=P0 THEN 3760
3757  G9=H9+64
3758  GOSUB 7000
3759  RETURN 
3760  A1=L+105
3761  GOSUB 7310
3762  RETURN 
3800  REM
3805  A=A1*10+P1
3810  A2=P1
3820  GOSUB 4000
3840  PRINT TAB(B1);A$;
3850  GOSUB 4000
3860  GOTO A3 OF 3870,3890
3870  PRINT 
3880  GOTO 3840
3890  PRINT " ";
3895  RETURN 
4000  REM
4010  GOTO A2 OF 4020,4160
4020  A2=P2
4025  FOR A4=P2 TO 128
4030  GOTO SGN(V[A4])+P2 OF 4060,4070,4040
4040  GOTO SGN(V[A4]-A)+P2 OF 4050,4080,4070
4050  A5=A4
4060  NEXT A4
4065  GOTO 4140
4070  A4=A5
4080  READ #P5,A4
4090  GOTO TYP(-P5) OF 4100,4120,4140,4140
4100  READ #P5;A5
4110  IF A5=A THEN 4160
4115  GOTO 4090
4120  READ #P5;A$
4130  GOTO 4090
4140  B6=P2
4150  RETURN 
4160  B6=P1
4165  IF TYP(P5)#P2 THEN 4200
4170  READ #P5;A$
4180  A3=P1
4190  RETURN 
4200  A3=P2
4210  RETURN 
4700  REM
4710  A=A1*10+P1
4720  A2=P1
4730  GOSUB 4000
4740  IF B6=P2 THEN 4830
4750  B4=P0
4751  X9=POS(A$,"@")
4752  IF X9=P0 THEN 4768
4753  Y$=A$
4754  IF X$="" THEN 4758
4755  A$[X9]=X$
4756  X$=""
4757  GOTO 4763
4758  IF X0$="" THEN 4762
4759  A$[X9]=X0$
4760  X0$=""
4761  GOTO 4763
4762  A$[X9]=X1$
4763  IF A$[LEN(A$)]#" " THEN 4766
4764  A$=A$[P1,LEN(A$)-P1]
4765  GOTO 4763
4766  A$[LEN(A$)+P1]=Y$[X9+P1]
4767  GOTO 4751
4768  PRINT TAB(B1);A$
4770  B4=B4+P1
4780  GOSUB 4000
4790  IF A3=P2 THEN 4830
4800  IF B4<20 THEN 4751
4810  Q4=P1
4812  GOSUB 7700
4820  GOTO M1 OF 4750,4830
4830  F5=P1
4840  RETURN 
5000  REM *D0$*
5010  FOR N=P1 TO LEN(D0$)
5020  IF D0$[N,N]#" " THEN 5040
5030  NEXT N
5040  D0$=D0$[N,LEN(D0$)]
5050  FOR N=LEN(D0$) TO P1 STEP -P1
5060  IF D0$[N,N]#" " THEN 5080
5070  NEXT N
5080  D0$=D0$[P1,N]
5090  RETURN 
5100  REM *OPTIONS*
5102  N2=P0
5104  IF H[H8,P3]=P8 THEN 5112
5106  A6=P1
5108  A7=D0=P2
5110  GOTO 5130
5112  A6=P2
5114  D0=P1
5116  GOTO K9 OF 5118,9998,9998,9998,5124,5128,9998,5128
5118  A7=P2
5120  D9=P1
5122  GOTO 5132
5124  A7=P2
5126  GOTO 5130
5128  A7=P1
5130  D9=P2
5132  D4=D6=D7=D8=P2
5134  D5=P3
5136  IF LEN(D0$)=P0 THEN 5780
5138  N$=D0$
5140  N0=POS(N$,",")
5142  IF N0#P0 THEN 5160
5150  N0=LEN(N$)+P1
5160  D0$=N$[P1,N0-P1]
5170  GOSUB 5000
5180  IF LEN(D0$)>P0 THEN 5220
5190  G9=19
5200  GOTO 5360
5220  A1=116
5230  G9=20
5235  X$=D0$
5240  GOSUB 8700
5250  IF F5=P1 THEN 5370
5260  IF N2=P0 THEN 5380
5270  RESTORE 5410
5280  G9=20
5290  FOR N3=P1 TO 14
5300  READ N4,N5
5310  G9=G9+P1
5315  FOR N1=P1 TO N2
5320  IF N4=N[N1] MIN (F5-P2) AND N5=N[N1] MAX (F5-P2) THEN 5360
5325  NEXT N1
5330  NEXT N3
5340  IF N2<10 THEN 5380
5350  G9=40
5360  GOSUB 7000
5370  RETURN 
5380  N2=N2+P1
5390  N[N2]=F5-P2
5402  IF N0=LEN(N$)+P1 THEN 5510
5404  N$=N$[N0+P1]
5406  GOTO 5140
5410  DATA 1,2,1,3,1,4,1,5,2,3,2,4,2,5,3,5,3,8,4,5,4,8,6,7,6,12,9,10
5510  FOR N3=P1 TO N2
5520  GOTO N[N3] OF 5530,5550,5570,5590,5610,5630,5650,5670,5690,5710,5730,5750
5530  D5=P2
5540  GOTO 5760
5550  D5=P1
5560  GOTO 5760
5570  D7=P1
5580  GOTO 5760
5590  D6=P1
5600  GOTO 5760
5610  D8=P1
5620  GOTO 5760
5630  A6=P1
5640  GOTO 5760
5650  A6=P2
5660  GOTO 5760
5670  D9=P1
5680  GOTO 5760
5690  D0=P1
5700  GOTO 5760
5710  D0=P2
5720  GOTO 5760
5730  D4=P1
5740  GOTO 5760
5750  A7=P1
5760  NEXT N3
5770  IF D5#P3 THEN 5790
5780  D4=P1
5790  G9=P0
5800  RETURN 
7000  REM
7002  G2=P1
7010  GOTO F3 OF 7012,7012,7120
7012  A1=G9
7013  PRINT CHR$(7)
7014  GOSUB 4700
7016  IF F3=P1 THEN 7040
7018  A1=98
7020  GOSUB 4700
7022  F3=P1
7024  K$[1,6]="FCOPY"
7026  CHAIN K$,100
7040  IF LEN(D1$)=P0 THEN 7110
7050  A1=101
7060  GOSUB 4700
7070  PRINT TAB(B1);D1$
7100  D1$=""
7110  PRINT 
7115  RETURN 
7120  C1=G9
7140  CHAIN F4,C0$,C0
7142  IF F4#P1 THEN 7150
7144  A1=99
7146  GOSUB 4700
7148  STOP 
7150  A1=2
7152  X$=C0$
7160  GOSUB 4700
7170  STOP 
7310  REM *NEWS*
7320  IF G2=P2 THEN 7340
7330  GOSUB 4700
7340  RETURN 
7700  REM *CONT*
7720  PRINT 
7722  GOTO Q4 OF 7730,7734
7730  PRINT "CONTINUE? ";
7732  GOTO 7740
7734  PRINT "WILL YOU WAIT? ";
7740  LINPUT M1$[P1,P3]
7750  FOR M1=P1 TO LEN(M1$)
7760  IF M1$[M1,M1]#" " THEN 7780
7770  NEXT M1
7780  M1$=M1$[M1,LEN(M1$)]
7790  IF M1$="" THEN 7850
7800  M1$=UOS$(M1$)
7810  IF M1$[P1,P1]="Y" THEN 7850
7820  IF M1$[P1,P1]="N" THEN 7870
7830  PRINT "** TYPE 'YES' (OR JUST A CARRIAGE RETURN) OR 'NO' **"
7840  GOTO 7730
7850  M1=P1
7860  GOTO 7880
7870  M1=P2
7880  PRINT 
7890  RETURN 
8000  REM #1
8002  READ #P4;F2,B1,F7,F8,F0
8004  GOSUB 2000
8006  RETURN 
8020  REM #3
8022  READ #P4;I,H8,I9
8024  GOSUB 9000
8026  RETURN 
8030  REM #4
8031  READ #P4;H8
8032  FOR J6=P1 TO 22
8033  G[H8,J6]=P0
8034  NEXT J6
8036  F5=P2
8038  IF H[H8,P3]=P8 THEN 8054
8040  F2=209
8042  B1=P4
8044  F7=P1
8046  GOSUB 2000
8054  GOTO F5 OF 8062,8056,8064
8056  G[H8,P1]=P1
8058  G[H8,P2]=-P1
8060  G[H8,P3]=P0
8062  RETURN 
8064  I6=P1
8066  J8=P0
8068  F5=P2
8070  IF D0$[P1,P1]#" " THEN 8078
8072  IF LEN(D0$)=P0 THEN 8078
8074  D0$=D0$[P2]
8076  GOTO 8070
8078  J6=POS(D0$,",")
8080  J7=POS(D0$,":")
8082  GOTO SGN(J6)*P2+SGN(J7)+P1 OF 8098,8090,8086,8084
8084  GOTO SGN(J6-J7)+P2 OF 8086,9998,8090
8086  I7=P2
8088  GOTO 8104
8090  IF I6=P3 THEN 8146
8092  I7=P3
8094  J6=J7
8096  GOTO 8104
8098  J6=LEN(D0$)+P1
8100  I7=P4
8104  CONVERT D0$[P1,J6-P1] TO I8,6069
8106  IF I8 >= P1 AND I8=INT(I8) THEN 8114
8108  GOTO 8146
8110  IF D0$#"LAST" THEN 8146
8111  IF J8=INT(J8/P2)*P2 THEN 8146
8112  I8=-P1
8114  IF I6=P3 OR I7=P3 THEN 8120
8116  J8=J8+P1
8118  G[H8,J8]=I8
8120  J8=J8+P1
8122  G[H8,J8]=I8
8124  IF J6#LEN(D0$)+P1 THEN 8140
8126  FOR I8=P1 TO J8-P1 STEP P2
8128  IF G[H8,I8]>G[H8,I8+P1] AND G[H8,I8+P1]#-P1 THEN 8132
8130  IF G[H8,I8+P1]<G[H8,I8+P2] OR G[H8,I8+P2] <= P0 THEN 8136
8132  G9=70
8134  GOTO 8148
8136  NEXT I8
8138  GOTO 8062
8140  IF J8 <= 18 THEN 8152
8142  G9=69
8144  GOTO 8148
8146  G9=54
8148  GOSUB 7000
8150  GOTO 8040
8152  D0$=D0$[J6+P1,LEN(D0$)]
8154  I6=I7
8156  GOTO 8070
8160  REM #5
8162  READ #P4;H4,H5
8164  IF H[H4,P2]=P1 AND H[H5,P2]=P1 AND K9#9 THEN 8192
8166  H$=G$[(H4-P1)*22+12,(H4-P1)*22+22]
8178  H1$=G$[(H5-P1)*22+12,(H5-P1)*22+22]
8190  IF H$=H1$ THEN 8196
8192  F5=P2
8194  RETURN 
8196  G9=79
8197  GOSUB 7000
8198  F5=P1
8199  RETURN 
8200  REM #6
8202  READ #P4;H8
8204  B1=P4
8206  IF H[H8,P3]=P5 THEN 8218
8207  IF H[H8,P3]=P8 AND K9=P1 THEN 8252
8208  IF H[H8,P3]=P7 OR H[H8,P3]=P8 THEN 8232
8210  F2=213
8212  F7=P1
8214  GOSUB 2000
8216  GOTO F5 OF 8250,8218,8222
8218  G[H8,P1]=P1
8220  GOTO 8248
8222  CONVERT D0$ TO G[H8,P1],6469
8224  IF G[H8,P1] >= 1 AND G[H8,P1]=INT(G[H8,P1]) THEN 8248
8226  G9=43
8228  GOSUB 7000
8230  GOTO 8210
8232  F2=215
8234  F7=P1
8240  GOSUB 2000
8242  GOTO F5 OF 8250,8244,8244
8244  GOSUB 5100
8246  IF G9#P0 THEN 8232
8248  F5=P2
8250  RETURN 
8252  D9=P1
8254  F5=P2
8256  RETURN 
8260  REM #7
8261  GOTO K9 OF 8270,8272,8272,8262,8270,8270,8272,8270,8272,8272,8272
8262  I=P2
8263  A$=""
8264  H8=3
8265  I9=P2
8266  GOSUB 9000
8267  IF F5=P2 THEN 8270
8268  RETURN 
8270  K$[1,6]="FCOPY1"
8271  GOTO 8273
8272  K$[1,6]="FCOPY2"
8273  IF F3=P1 THEN 8276
8274  N8=REC(P3)
8275  N9=ITM(P3)
8276  CHAIN K$,100
8277  PRINT "** PROGRAM "K$" IS MISSING **"
8278  STOP 
8279  REM #8
8280  READ #P4;H7
8282  IF H7#P0 THEN 8316
8290  H1$="CAT-FCP"
8296  SYSTEM H$,H1$
8298  IF H$[P1,P3]#"FCP" THEN 8312
8300  CONVERT H$[P4,P5] TO H9,6725
8302  PURGE H9,H$[P1,P6]
8304  GOTO 8296
8312  MAT H=CON
8314  GOTO 8336
8316  ASSIGN *,H7
8318  H[H7,P1]=P1
8320  IF H[H7,P7]#P2 THEN 8336
8322  PURGE H9,G$[(H7-P1)*22+P1,(H7-P1)*22+11]
8334  H[H7,P7]=P1
8336  F5=P1
8338  RETURN 
8340  REM #9
8342  F5=P2
8344  READ #P4;M3
8346  GOTO M3 OF 8348,8362
8348  IF D0$#"" THEN 8354
8350  L0=0
8352  GOTO 8372
8354  CONVERT D0$ TO L0,6844
8356  IF L0 >= P0 AND L0=INT(L0) THEN 8372
8358  G9=71
8360  GOTO 8368
8362  CONVERT D0$ TO L1,6871
8364  IF L1 >= P1 AND L1=INT(L1) THEN 8372
8366  G9=72
8368  GOSUB 7000
8370  F5=P1
8372  RETURN 
8374  REM #10
8376  READ #P4;L2
8378  F5=P1
8380  RETURN 
8382  REM #11
8384  READ #P4;L3,L4
8386  GOTO L3 OF 8388,8394,8392
8388  H[P3,P3]=L4
8390  GOTO 8394
8392  L$=D0$
8394  F5=P1
8396  RETURN 
8398  REM #12
8400  L=F5-13
8402  GOSUB 3700
8404  F5=P1
8406  RETURN 
8700  REM *MATCH*
8710  A2=P1
8720  A=A1*10+P1
8730  F5=P2
8740  GOSUB 4000
8750  IF A3=P2 THEN 8840
8760  F5=F5+P1
8770  G6=POS(A$,"@")
8800  IF D0$[P1,G6-P1]#A$[P1,G6-P1] THEN 8740
8801  A$[G6]=A$[G6+P1,LEN(A$)]
8802  G7=POS(D0$,"-")
8804  IF G7#P0 THEN 8810
8806  G7=LEN(D0$)+P1
8810  IF D0$[P1,G7-P1]=A$[P1,G7-P1] THEN 8880
8830  GOTO 8740
8840  GOSUB 7000
8860  F5=P1
8870  RETURN 
8880  IF A1#118 THEN 8888
8882  K9=F5-P2
8888  RETURN 
9000  REM *FILE*
9004  FOR I6=P1 TO 11
9008  H[H8,I6]=1
9012  NEXT I6
9016  I0=I1=I3=P0
9020  I6=I8=P1
9024  GOTO I9 OF 9028,9036,9044,9044,9040
9028  A$=D0$[1,LEN(D0$) MIN 80]
9032  GOTO 9040
9036  A$="#LP"
9040  IF A$#"" THEN 9068
9044  H[H8,P2]=P3
9048  H[H8,P3]=P8
9052  H[H8,P6]=P2
9056  I3=P0
9060  I1=P1
9064  GOTO 9592
9068  FOR I7=P1 TO LEN(A$)+P1
9072  I8=P1
9076  IF I7=P1 AND (NUM(A$)=35 OR NUM(A$)=36 OR NUM(A$)=42) THEN 9132
9080  IF I7=LEN(A$)+P1 THEN 9116
9084  K=NUM(A$[I7])
9088  IF K=32 AND I6#P5 THEN 9248
9092  IF K=32 AND I6=P5 THEN 9132
9096  IF (K >= 48 AND K <= 57) OR (K >= 65 AND K <= 90) THEN 9132
9100  IF K=46 THEN 9128
9104  IF K=44 THEN 9124
9108  IF K=34 THEN 9120
9112  GOTO 9240
9116  I8=I8+P1
9120  I8=I8+P1
9124  I8=I8+P1
9128  I8=I8+P1
9132  GOTO I6 OF 9136,9148,9164,9180,9196,9212
9136  GOTO I8 OF 9140,9240,9240,9240,9998
9140  I6=P2
9144  GOTO 9248
9148  GOTO I8 OF 9248,9152,9168,9240,9248
9152  I0=I7
9156  I6=P3
9160  GOTO 9248
9164  GOTO I8 OF 9248,9240,9168,9240,9248
9168  I1=I7
9172  I6=P4
9176  GOTO 9248
9180  GOTO I8 OF 9224,9240,9240,9184,9240
9184  I3=I7
9188  I6=P5
9192  GOTO 9248
9196  GOTO I8 OF 9248,9200,9248,9200,9240
9200  I4=I7
9204  I6=P6
9208  GOTO 9248
9212  GOTO I8 OF 9240,9240,9216,9240,9248
9216  CONVERT A$[I7+1,LEN(A$)] TO H[H8,8],7563
9220  GOTO 9228
9224  CONVERT A$[I7,LEN(A$)] TO H[H8,8],7563
9228  IF H[H8,8] >= P1 AND H[H8,8]=INT(H[H8,8]) THEN 9252
9232  G9=10
9236  GOTO 9836
9240  G9=P9
9244  GOTO 9836
9248  NEXT I7
9252  IF I1#P0 THEN 9260
9256  I1=LEN(A$)+P1
9260  IF A$[P1,P1]="#" THEN 9492
9264  IF NUM(A$)=36 OR NUM(A$)=42 OR I0#0 THEN 9428
9268  H$="CAT-"
9272  H$[P5]=A$[P1,I1-P1]
9276  SYSTEM H1$,H$
9280  IF H$[P5,10]=H1$[P1,P6] THEN 9292
9284  G9=13
9288  GOTO 9836
9292  IF H1$[P8,P8]="A" THEN 9368
9296  IF H1$[P8,P8]="F" THEN 9316
9300  IF H1$[P8,P8]="M" THEN 9316
9304  G9=85
9308  X$=H$[P5]
9312  GOTO 9836
9316  IF H1$[P9,P9]#"P" THEN 9328
9320  H[H8,P9]=P2
9324  GOTO 9348
9328  IF H1$[P9,P9]#"L" THEN 9340
9332  H[H8,P9]=P3
9336  GOTO 9348
9340  IF H1$[P9,P9]#" " THEN 9348
9344  H[H8,P9]=P4
9348  CONVERT H1$[11,15] TO H[H8,P4],8857
9352  CONVERT H1$[19,21] TO H[H8,P5],7823
9356  GOTO 9592
9360  H[H8,P5]=256
9364  GOTO 9592
9368  REM - ASCII
9372  H[H8,P2]=P2
9376  CONVERT H1$[14,15] TO H,7874
9380  H[H8,P3]=P2
9384  GOTO 9592
9388  RESTORE 9392
9392  DATA "MT","PR","PP","CR","LP","TC"
9396  FOR H3=P3 TO P7
9400  READ H$
9404  IF H1$[13,14]=H$ THEN 9420
9408  NEXT H3
9412  G9=P9
9416  GOTO 9836
9420  H[H8,P3]=H3
9424  GOTO 9592
9428  REM - NOT IN CAT
9432  H[H8,P6]=P2
9436  ASSIGN A$[P1,I1-P1],P1,H9
9440  IF H9 <= P2 THEN 9464
9444  GOTO H9-P2 OF 9448,9998,9998,9456,9998,9998
9448  G9=13
9452  GOTO 9836
9456  G9=14
9460  GOTO 9836
9464  ASSIGN A$[P1,I1-P1],P2,H9
9468  IF H9>P2 THEN 9484
9472  ASSIGN *,1
9476  ASSIGN *,2
9480  GOTO 9592
9484  H[H8,P2]=H[H8,P3]=P2
9488  GOTO 9592
9492  REM - #
9496  H[H8,P2]=H[H8,P6]=H[H8,P7]=P2
9500  RESTORE 9392
9504  FOR H3=P3 TO P8
9508  READ H$
9512  IF A$[P2,P3]=H$ THEN 9528
9516  NEXT H3
9520  G9=P9
9524  GOTO 9836
9528  IF H3#P8 THEN 9588
9532  H[H8,P2]=P3
9540  H[H8,P6]=P2
9544  H[H8,P7]=P1
9546  IF NUM(A$[P4])#76 THEN 9552
9548  H[H8,P9]=P1
9550  GOTO 9560
9552  IF NUM(A$[P4])=82 THEN 9558
9554  G9=301
9556  GOTO 9836
9558  H[H8,P9]=P2
9560  H3=P9
9562  S$='27"^"
9564  SYSTEM H,"ECHO-OFF"
9566  PRINT S$;
9570  ENTER P1,H,H$
9571  SYSTEM H1,"ECHO-ON"
9572  IF H >= P0 AND LEN(H$) >= P8 THEN 9576
9573  G9=309
9574  GOTO 9836
9576  IF H[H8,P8] <= 255 THEN 9588
9580  G9=300
9584  GOTO 9836
9588  H[H8,P3]=H3
9592  REM - CHECK READ/WRITE
9596  H3=H[H8,P3]
9600  GOTO I OF 9604,9616,9628,9640,9652,9664,9676
9604  IF H3#P5 AND H3#P7 THEN 9688
9608  G9=11
9612  GOTO 9836
9616  IF H3#P4 AND H3#P6 THEN 9688
9620  G9=12
9624  GOTO 9836
9628  IF H3 <= P3 OR H3=P9 THEN 9688
9632  G9=52
9636  GOTO 9836
9640  IF H3=7 OR H3=8 THEN 9688
9644  G9=51
9648  GOTO 9836
9652  IF H3=P1 THEN 9688
9656  G9=17
9660  GOTO 9836
9664  IF H3=P3 OR H3=P5 OR H3 >= P8 THEN 9688
9668  G9=87
9672  GOTO 9836
9676  IF H3=P3 OR H3=P4 OR H3 >= P8 THEN 9688
9680  G9=90
9684  GOTO 9836
9688  REM - CHECK SUBFILE
9692  IF H[H8,P8]=P1 OR H3=P1 OR H3=P3 OR H3=P4 OR H3=P6 OR H3=P9 THEN 9704
9696  G9=10
9700  GOTO 9836
9704  REM - CHECK MASK
9708  IF H[H8,P2]#P1 THEN 9728
9712  IF I3=P0 THEN 9740
9716  H[H8,10]=P2
9720  B$=A$[I3+P1,I4-P1]
9724  GOTO 9740
9728  IF I3=P0 THEN 9740
9732  G9=88
9736  GOTO 9836
9740  IF H[H8,P7]=P2 THEN 9752
9744  A$=A$[P1,I1-P1]
9748  GOTO 9848
9752  REM - CREATE FILE
9756  H$=A$[P2,I1-P1]
9760  IF H$[LEN(H$)]#" " THEN 9772
9764  H$=H$[P1,LEN(H$)-P1]
9768  GOTO 9760
9772  IF LEN(H$)=P2 THEN 9796
9776  IF LEN(H$)#P3 THEN 9788
9780  CONVERT H$[P3,P3] TO H1,8632
9784  GOTO 9796
9788  G9=P9
9792  GOTO 9836
9796  H1$="FILE-"
9800  H1$[P6]=Q$
9804  H1$[11]=CHR$(H8+64)
9808  H1$[12]=","
9812  H1$[13]=H$
9816  SYSTEM H1,H1$
9820  IF H1#P0 THEN 9832
9822  H[H8,P7]=P2
9823  G$[H8*22-10,H8*22]=A$[P1,I1-P1]
9824  A$=H1$[P6,11]
9825  H[H8,11]=I1-P2
9828  GOTO 9850
9832  IF I1=P5 THEN 9835
9833  G9=90+H[H8,P3]
9834  GOTO 9836
9835  G9=299+H[H8,P3]
9836  GOSUB 7000
9840  F5=P1
9844  RETURN 
9848  G$[(H8-P1)*22+12,(H8-P1)*22+22]=A$
9850  G$[(H8-P1)*22+P1,(H8-P1)*22+11]=A$
9872  G[H8,P1]=P1
9876  G[H8,P2]=-P1
9880  F5=P2
9884  RETURN 
9998  PRINT "** ERROR **"
9999  END 
