10 COM A$[72],B$[72],D$[52],F$[24],L$[72],M$[72],N$[72],O$[72],P$[72] 15 COM Q$[72],Y$[10],Z$[72] 20 COM A[10],B[6],C[6],D[6],E[6],I[64,2],L[10],M[64,2],P[6],R[6],S[6] 25 COM T[6],A,E,Q,U,D2,F0,F1,M,Q1,X,D 26 REM EDIT2K,HP36838A,6/74, 5 PROGS:EDIT2K,EDITA,EDITB,EDITC,EDITD 30 DIM C$[72],S$[72],W$[72] 35 CHAIN "$EDIT2K" 40 D2=0 45 FILES *,*,*,* 50 FOR I=1 TO 13 STEP 6 55 IF F$[I,I+6]=" " THEN 65 60 ASSIGN F$[I,I+6],(I-1)/6+1,X 65 NEXT I 70 IF D2 THEN 385 75 F2=Q1=0 80 Q=A[7] 85 IF Z$="" THEN 140 90 A$="" 95 X=1 100 IF Z$[X,X]=";" THEN 130 105 A$[X,X]=Z$[X,X] 110 X=X+1 115 IF Z$[X]#"" THEN 100 120 Z$="" 125 GOTO 210 130 Z$=Z$[X+1] 135 GOTO 210 140 IF NOT U THEN 190 145 READ #3,1 150 IF END #3 THEN 180 155 FOR I=1 TO U 160 READ #3;Z$ 165 NEXT I 170 U=U+1 175 GOTO 85 180 U=0 185 F$[13,18]=" " 190 PRINT "/"; 195 ENTER 255,F,Z$ 200 IF F#-256 THEN 205 201 PRINT 202 PRINT "PLEASE RE-ENTER LAST LINE" 203 GOTO 190 205 GOTO 85 210 B$="" 215 A=1 220 PRINT 225 GOSUB 9982 230 IF A$[A]="" THEN 85 235 E=0 240 B$=A$[A,A] 245 IF B$="q" THEN 255 250 IF B$#"Q" THEN 265 255 PRINT A$[A+1] 260 GOTO 85 265 A=A+1 270 IF A$[A,A]="q" THEN 280 275 IF A$[A,A]#"Q" THEN 295 280 GOSUB 9986 285 GOTO 315 290 A=A+1 295 IF A$[A,A]<"A" THEN 305 300 IF A$[A,A] <= "z" THEN 290 305 IF A$[A-1,A-1]="q" THEN 315 310 IF A$[A-1,A-1]#"Q" THEN 325 315 Q=1 320 Q1=1 325 GOSUB 9982 330 FOR D2=1 TO LEN(D$)/2 335 IF B$=D$[D2,D2] THEN 360 340 IF B$=D$[D2+LEN(D$)/2,D2+LEN(D$)/2] THEN 360 345 NEXT D2 350 E=1 355 GOTO 999 360 D=D2 365 IF D2>2 THEN 375 370 CHAIN "$EDIT2K",1900 375 D2=D2-2 380 IF D2>4 THEN 455 385 IF D2#4 THEN 400 390 GOTO 1325 395 GOTO 75 400 IF D2#3 THEN 410 405 GOSUB 3000 410 IF D2#1 THEN 425 415 GOSUB 1000 420 GOTO 75 425 GOSUB 8000 430 GOSUB D2-1 OF 2000,3065 435 IF A$[A]="" THEN 75 440 IF A$[A,A]#"," THEN 990 445 GOSUB 9986 450 GOTO 425 455 D2=D2-4 460 IF D2>5 THEN 500 465 IF D2#5 THEN 495 470 GOSUB 8000 475 MAT T=C 480 IF T[6] THEN 495 485 E=18 490 GOTO 999 495 CHAIN "$EDITB",40 500 D2=D2-5 505 IF D2>3 THEN 515 510 CHAIN "$EDITC",420 515 D2=D2-3 520 GOSUB 8000 525 CHAIN "$EDITD",40 990 E=2 999 CHAIN "$EDIT2K",3000 1000 REM < KEEP > 1005 IF NOT Q1 THEN 1050 1010 T1=F0 MAX F1* NOT (F1>A[8]) 1015 IF T1 THEN 1030 1020 E=14 1025 GOTO 999 1030 MAT PRINT #1,T1;M 1035 MAT PRINT #1,1;A,B,E,P 1040 PRINT #1;F0,F1,M,T1 1047 GOTO 1325 1050 B$="" 1055 I=LEN(B$)+1 1060 B$[I,I]=A$[A,A] 1065 A=A+1 1070 IF A$[A]="" THEN 1095 1075 IF A$[A,A]="(" THEN 1095 1080 IF A$[A,A]="," THEN 1095 1085 IF A$[A,A]#" " THEN 1055 1090 GOSUB 9982 1095 ASSIGN B$,4,X 1100 GOTO X+1 OF 1130,1126 1120 E=13 1125 GOTO 999 1126 PRINT "WARNING : THIS FILE IS BEING ACCESSED" 1130 READ #4,1 1135 IF END #4 THEN 1265 1140 IF A$[A,A]="(" THEN 1160 1145 GOSUB 8020 1150 IF C[5]=0 THEN 1250 1155 GOTO 1185 1160 GOSUB 9986 1165 GOSUB 8000 1170 IF A$[A,A]#")" THEN 990 1175 GOSUB 9986 1180 IF C[6]=2 THEN 1145 1185 MAT T=C 1190 MAT P=D 1195 GOSUB 6200 1200 IF A$[A]="" THEN 1230 1205 IF A$[A,A+10]#",UNNUMBERED" THEN 990 1210 PRINT #4;B$, END 1215 IF T[5] >= D[5] THEN 1250 1220 GOSUB 5100 1225 GOTO 1210 1230 PRINT #4;X,B$, END 1235 IF T[5] >= D[5] THEN 1250 1240 GOSUB 5100 1245 GOTO 1230 1250 READ #4,1 1255 READ #4,2 1260 RETURN 1265 E=21 1270 GOTO 999 1275 REM < END > 1325 MAT PRINT #1,I[63,2];I 1330 GOSUB 6800 1335 STOP 2000 REM < DELETE > 2005 IF C[5] >= D[5] AND C[6]=0 AND D[6]=0 THEN 2400 2010 MAT T=C 2015 GOSUB 6200 2020 T5=T7=I[63,2] 2025 T6=T8=L[8] 2030 IF LEN(B$)=0 THEN 2090 2035 IF C[4]>LEN(B$) THEN 2085 2040 IF C[5]#D[5] THEN 2070 2045 B$[C[4]]=B$[(D[4] MIN LEN(B$))+1] 2050 IF B$="" THEN 2170 2055 GOSUB 6405 2060 GOTO 2370 2065 GOSUB 6605 2070 IF C[4]=1 THEN 2090 2075 B$[C[4]]="" 2080 GOSUB 6405 2085 T[3]=T[3]+1 2090 IF T[3]=1 THEN 2120 2095 T6=L[10] 2100 IF C[1]=D[1] AND C[2]=D[2] THEN 2115 2105 L[7]=T[3]-1 2110 T[3]=1 2115 T[2]=T[2]+1 2120 IF T[3] <= L[7] THEN 2130 2125 T[3]=1 2130 IF T[2]=1 THEN 2165 2135 T5=I[64,2] 2140 IF C[1]=D[1] THEN 2155 2145 I[63,1]=T[2]-1 2150 T[2]=1 2155 T[1]=T[1]+1 2165 MAT C=T 2170 MAT T=D 2175 GOSUB 6200 2180 T7=I[63,2] 2185 T8=L[8] 2190 IF D[4] >= LEN(B$) THEN 2210 2195 B$=B$[D[4]+1] 2200 GOSUB 6405 2205 D[3]=D[3]-1 2210 T[3]=C[3] 2215 FOR I=C[3] TO D[3] 2220 GOSUB 6305 2225 NEXT I 2230 IF NOT L[7] THEN 2255 2235 GOSUB 6800 2240 I[D[2],1]=L[1] 2245 D[2]=D[2]-1 2250 T8=L[9] 2255 IF D[2]=I[63,1] AND C[2]=1 THEN 2270 2260 D[1]=D[1]-1 2265 T7=I[64,1] 2270 T[3]=C[3] 2275 IF D[2]D[1] THEN 2365 2340 FOR I=D[1]+1 TO M 2345 M[I-D[1]+C[1]-1,1]=M[I,1] 2350 M[I-D[1]+C[1]-1,2]=M[I,2] 2355 NEXT I 2360 M=M-D[1]+C[1]-1 2365 GOSUB 2405 2370 T[5]=D[5] 2375 F=0 2380 GOSUB 5505 2385 T[4]=T[6]=1 2390 T[5]=L[T[3]] 2395 MAT P=T 2400 RETURN 2405 REM *RETURN FREE SPACE* 2410 IF D[2] 3005 H=V=R=0 3010 FOR C=A TO LEN(A$)-1 3015 IF A$[C,C+1]=",H" THEN 3035 3020 IF A$[C,C+1]=",h" THEN 3035 3025 NEXT C 3030 RETURN 3035 C1=A 3040 A=C 3045 GOSUB 7505 3050 A$[C]="" 3055 A=C1 3060 RETURN 3065 IF H=0 THEN 3080 3070 READ #2,1 3075 IF END #2 THEN 3290 3080 MAT T=C 3085 MAT P=D 3090 Z=V 3095 GOSUB 6200 3100 Z1=A[3] MIN LEN(B$) MAX A[2] 3105 IF Q THEN 3125 3110 PRINT 3115 GOSUB 7005 3120 PRINT SPA(A[2]-1);B$[A[2],Z1] 3125 IF R AND Z THEN 3135 3130 GOSUB 7005 3135 IF NOT Z THEN 3165 3140 IF E THEN 999 3145 READ #2;C$ 3150 IF R THEN 3210 3155 PRINT TAB((A[2]+8)*(Z1<64));C$ 3160 GOTO 3210 3165 PRINT SPA(A[2]-1); 3170 ENTER 255,Y,C$ 3175 IF Y=-256 THEN 3165 3180 PRINT 3185 IF C$[1,1]='25 THEN 3195 3190 IF C$[1,1]#'25 THEN 3210 3195 IF NOT H THEN 3285 3200 Z=1 3205 GOTO 3125 3210 FOR J=LEN(C$)+1 TO (Z1-A[2]+1)*(LEN(B$) >= A[3]) 3215 C$[J,J]=" " 3220 NEXT J 3225 FOR J=LEN(B$)+1 TO A[2] 3230 B$[J,J]=" " 3235 NEXT J 3240 IF LEN(C$) <= A[3]-A[2]+1 THEN 3255 3245 PRINT "WARNING - LINE LENGTH EXCEEDED:REPLACEMENT TRUNCATED" 3250 C$[A[3]-A[2]+2]="" 3255 C$[LEN(C$)+1]=B$[(A[3] MIN LEN(B$))+1] 3260 B$[A[2]]=C$ 3265 GOSUB 6400 3270 IF T[5] >= D[5] THEN 3285 3275 GOSUB 5100 3280 GOTO 3100 3285 RETURN 3290 PRINT 3295 RETURN 5100 REM * GET NEXT * 5115 IF T[3]+1 <= L[7] THEN 5171 5120 IF L[10] THEN 5135 5125 E=16 5126 T[6]=0 5130 GOTO 5175 5135 T[3]=0 5140 T[2]=T[2]+1 5145 IF T[2] <= I[63,1] THEN 5165 5150 T[1]=T[1]+1 5155 GOSUB 6010 5160 T[2]=1 5165 T9=L[10] 5170 GOSUB 6700 5171 T[3]=T[3]+1 5172 T[4]=1 5175 GOSUB 6215 5185 RETURN 5200 REM * GET LAST REC * 5205 IF NOT L[T[3]] THEN 5260 5207 T[3]=T[3]-1 5210 IF T[3] THEN 5255 5215 T[2]=T[2]-1 5220 IF T[2] THEN 5240 5225 T[1]=T[1]-1 5230 GOSUB 6010 5235 T[2]=I[63,1] 5240 T9=L[9] 5245 GOSUB 6700 5250 T[3]=L[7] 5255 IF L[T[3]] THEN 5270 5260 E=20 5262 T[6]=0 5270 GOSUB 6215 5275 T[4]=LEN(B$) 5285 RETURN 5500 REM * FIND POS * 5505 IF T[5] THEN 5520 5510 E=20 5515 GOTO 999 5520 T[6]=0 5525 T[1]=1 5530 T1=M 5535 T2=INT((T[1]+T1)/2) 5540 IF T2=T[1] THEN 5570 5545 IF T[5].05 OF 7070 7045 GOTO Y>.005 OF 7060 7050 PRINT SPA(5); 7055 RETURN 7060 PRINT USING "#,.DXXX";Y-INT(Y) 7065 RETURN 7070 PRINT USING "#,.DDXX";Y-INT(Y) 7075 RETURN 7500 REM * [,HOLD[Q][,NOW]] * 7505 H=V=0 7510 R=Q 7515 IF A$[A]="" THEN 7605 7520 IF A$[A,A]#"," THEN 990 7525 GOSUB 9986 7527 IF A$[A,A+3]="hold" THEN 7535 7530 IF A$[A,A+3]#"HOLD" THEN 990 7535 IF F$[7,12]#" " THEN 7550 7540 E=11 7545 GOTO 999 7550 H=1 7555 A=A+4 7560 GOSUB 9982 7562 IF A$[A,A]="q" THEN 7570 7565 IF A$[A,A]#"Q" THEN 7580 7570 R=1 7575 GOSUB 9986 7580 IF A$[A]="" THEN 7605 7585 IF A$[A,A]#"," THEN 990 7590 GOSUB 9986 7592 IF A$[A,A+2]="now" THEN 7600 7595 IF A$[A,A+2]#"NOW" THEN 990 7600 V=1 7605 RETURN 8000 REM 8004 C5=A 8005 P[6]=1 8007 IF A$[A,A+2]="all" THEN 8012 8008 IF A$[A,A+2]#"ALL" THEN 8040 8012 A=A+3 8016 GOSUB 9982 8020 GOSUB 6505 8024 MAT C=B 8028 GOSUB 6605 8032 MAT D=E 8036 GOTO 8280 8040 W$="" 8044 F=0 8048 MAT R=ZER 8052 MAT D=ZER 8056 MAT T=ZER 8060 GOSUB 8300 8064 MAT C=T 8068 IF T[1]>0 THEN 8120 8072 IF T[1]<0 THEN 8096 8076 MAT C=P 8088 C[6]=0 8090 MAT D=C 8092 GOTO 8280 8096 W$=S$ 8100 C[2]=A 8104 IF A$[A]="" THEN 8160 8108 IF A$[A,A]="/" THEN 8124 8112 A=A+1 8116 GOTO 8104 8120 IF A$[A,A]#"/" THEN 8160 8124 F=1 8126 IF D=11 THEN 8840 8128 MAT R=ZER 8132 MAT T=ZER 8136 GOSUB 9986 8140 GOSUB 8300 8142 IF NOT T[1] THEN 8268 8144 MAT D=T 8148 IF D[4] THEN 8160 8152 GOSUB 6205 8156 D[4]=LEN(B$) MIN A[3] 8160 IF C[1]>0 THEN 8224 8164 F=(D=11) 8168 IF D[1] THEN 8180 8172 MAT D=E 8176 D[1]=0 8180 S$=W$ 8184 GOSUB 9700 8188 IF A=C[2] THEN 8200 8192 C[3]=A 8196 A=C[2] 8200 IF D=11 THEN 8204 8202 MAT T=R 8204 GOSUB 8530 8208 GOSUB 8345 8212 IF A>C[3] THEN 8220 8216 A=C[3] 8220 MAT C=T 8224 IF D[1] THEN 8244 8228 MAT D=C 8230 D[6]=0 8232 MAT T=D 8236 GOSUB 6200 8240 D[4]=LEN(B$) MIN A[3] MAX C[4] 8244 IF C[4] THEN 8252 8248 C[4]=A[2] 8252 IF NOT D[4] THEN 8232 8256 IF C[5]D[5] THEN 8268 8264 IF C[4] <= D[4] THEN 8280 8268 A=C5 8272 E=4 8276 GOTO 999 8280 RETURN 8300 REM 8305 GOSUB 8400 8310 IF T[1]<0 THEN 8370 8345 IF A$[A,A]#"(" THEN 8370 8350 GOSUB 9986 8355 GOSUB 8600 8360 IF A$[A,A]#")" THEN 990 8365 GOSUB 9986 8370 RETURN 8400 REM 8405 S$="" 8415 C3=A 8417 IF A$[A,A+4]="first" THEN 8422 8420 IF A$[A,A+4]#"FIRST" THEN 8445 8422 GOSUB 6505 8425 MAT T=B 8430 A=A+5 8435 GOSUB 9982 8440 GOTO 8530 8445 IF A$[A,A+3]="LAST" THEN 8447 8446 IF A$[A,A+3]#"last" THEN 8470 8447 GOSUB 6605 8450 MAT T=E 8455 A=A+4 8460 GOSUB 9982 8465 GOTO 8530 8470 IF A$[A,A]#"*" THEN 8490 8475 MAT T=P 8480 GOSUB 9986 8485 GOTO 8530 8490 GOSUB 9000 8495 IF NOT F2 THEN 8520 8500 T[5]=N 8505 GOSUB 5500 8515 GOTO 8530 8520 GOSUB 9500 8525 RETURN 8530 GOSUB 8900 8531 IF NOT N THEN 8543 8532 FOR I=1 TO ABS(N) 8533 IF N<0 THEN 8536 8534 GOSUB 5100 8535 GOTO 8537 8536 GOSUB 5200 8537 IF E THEN 999 8538 NEXT I 8543 RETURN 8600 REM 8605 C3=A 8610 GOSUB 6200 8611 GOSUB 8615 8613 GOTO 8735 8615 IF A$[A,A]#"*" THEN 8635 8620 GOSUB 9986 8625 T[4]=P[4] 8630 GOTO 8720 8635 IF A$[A,A+3]="LAST" THEN 8640 8637 IF A$[A,A+3]#"last" THEN 8657 8640 T[4]=LEN(B$) 8645 A=A+4 8650 GOSUB 9982 8655 GOTO 8720 8657 IF A$[A,A+3]="left" THEN 8665 8660 IF A$[A,A+3]#"LEFT" THEN 8675 8665 T[4]=A[2] 8670 GOTO 8645 8675 IF A$[A,A+4]="RIGHT" THEN 8680 8677 IF A$[A,A+4]#"right" THEN 8700 8680 T[4]=A[3] 8685 A=A+5 8690 GOSUB 9982 8695 GOTO 8720 8700 GOSUB 8950 8705 IF NOT F2 THEN 8730 8710 T[4]=N 8720 GOSUB 8900 8725 T[4]=T[4]+N 8730 RETURN 8735 GOSUB 8900 8745 C=T[4] MAX 1 8750 IF NOT N OR NOT F2 THEN 8820 8755 FOR I=1 TO ABS(N) 8760 C=C+SGN(N) 8765 IF A[2] <= C AND C <= A[3] MIN LEN(B$) THEN 8805 8770 GOTO SGN(N)+1 OF 8775,8780 8775 GOSUB 5200 8777 GOTO 8785 8780 GOSUB 5100 8785 C=1 MAX A[2] 8787 IF E THEN 999 8790 IF N>0 THEN 8765 8795 C=LEN(B$) 8800 GOTO 8765 8805 IF B$[C,C]=" " THEN 8760 8810 NEXT I 8812 T[5]=X 8814 GOSUB 5500 8816 T[4]=C 8820 IF T[4] >= A[2] AND T[4] <= A[3] THEN 8855 8825 A=C3 8830 E=6 8835 GOTO 999 8840 E=3 8845 A=C3 8850 GOTO 999 8855 RETURN 8900 REM 8905 S=-1 8910 N=0 8915 A=A+1 8920 IF A$[A-1,A-1]="-" THEN 8960 8925 IF A$[A-1,A-1]="+" THEN 8955 8930 A=A-1 8935 RETURN 8950 REM 8955 S=1 8960 GOSUB 9000 8965 N=N*S 8970 IF N=INT(N) THEN 8990 8975 E=8 8985 GOTO 999 8990 RETURN 9000 REM 9010 N=D3=F2=0 9015 P=1 9020 GOSUB 9982 9025 C4=A 9030 GOSUB 9100 9035 P=1 9040 IF A$[A,A]#"." THEN 9065 9045 A=A+1 9050 D3=N 9055 N=0 9060 GOSUB 9100 9065 N=N/P+D3 9070 GOSUB 9982 9075 IF N<10000 THEN 9095 9080 A=C4 9085 E=7 9090 GOTO 999 9095 RETURN 9100 FOR I=1 TO 10 9105 IF A$[A,A]=Y$[I,I] THEN 9120 9110 NEXT I 9115 RETURN 9120 N=N*10+I-1 9125 P=P*10 9130 F2=1 9135 A=A+1 9140 GOTO 9100 9500 REM 9505 S$="" 9520 IF A$[A,A]<"(" THEN 9530 9525 IF A$[A,A]<"0" THEN 9572 9530 IF A$[A,A]<" " THEN 9572 9535 IF A$[A,A]>"^" THEN 9572 9540 IF A$[A,A]>"Z" THEN 9560 9545 IF A$[A,A]<"0" THEN 9560 9550 IF A$[A,A] >= "A" THEN 9572 9555 IF A$[A,A] <= "9" THEN 9572 9560 FOR I=A+1 TO LEN(A$) 9565 IF A$[A,A]=A$[I,I] THEN 9580 9570 NEXT I 9572 E=9 9573 RETURN 9575 E=10 9576 GOTO 999 9580 T[1]=-1 9585 IF I=A+1 THEN 9595 9590 S$=A$[A+1,I-1] 9595 A=I+1 9600 GOSUB 9982 9605 IF NOT F THEN 9650 9610 MAT D=E 9615 GOSUB 9700 9650 RETURN 9700 REM 9745 MAT T=P 9750 MAT R=P 9755 IF S$="" THEN 9900 9760 GOSUB 6200 9765 C$=S$ 9775 IF T[4]>LEN(B$) OR LEN(B$)=0 THEN 9835 9780 Z=LEN(C$) MIN (LEN(B$)-T[4]+1) MAX 1 9785 IF C$[1,Z]#B$[T[4],T[4]+Z-1] THEN 9820 9787 T[4]=T[4]+Z-1 9789 GOSUB 9890 9795 C$=C$[Z+1] 9800 IF C$="" THEN 9900 9805 GOSUB 9860 9815 GOTO 9775 9820 T[4]=T[4]+1 9822 GOSUB 9890 9825 GOTO 9847 9835 MAT T=R 9837 GOSUB 9860 9847 MAT R=T 9849 GOTO 9765 9850 E=17 9855 GOTO 999 9860 GOSUB 5100 9861 IF E THEN 9850 9865 IF B$="" THEN 9860 9890 IF (T[5] >= D[5] AND T[4]>D[4]) OR T[5]>D[5] THEN 9850 9895 RETURN 9900 R[6]=T[6]=1 9925 RETURN 9980 REM 9982 IF A>LEN(A$) THEN 9990 9983 IF A$[A]="" THEN 9990 9984 IF A$[A,A]#" " THEN 9990 9986 A=A+1 9988 GOTO 9982 9990 RETURN 9999 END