Listing of file='TBO.E1 ' on disk='vmedia/toolbox.wvd.zip'
# Sector 233, program filename = 'TBO.E1' 0025 REM SCREEN EDITOR 08/10/82 AT 5 PM 0020 COM A$(K)80 : DIM S$(4)62,B1$(1)1,Q$(2)2 : X=1 0030 DEFFN'0 : SELECT PRINT 005(80) : GOSUB '61 : PRINT " D a t a e n t r y ";A1$(1);" (records in edit ";L1; " max. ";K;"records)" : INIT(2D)C$() : $GIO#5,(A200,B$)C$() : PRINT : B=12 : C=43 : PRINT TAB(B-3);"\C6\CE\A0\CB\C5\D9";TAB(C-3);"\C6\CE\A0\CB\C5\D9" : PRINT TAB(B);"00 Menu";TAB(C);"16 Format" 0040 PRINT TAB(B);"01 List";TAB(C);"17 Hardcopy" : PRINT TAB(B);"02 Load";TAB(C);"21 Next 15 records" : PRINT TAB(B);"03 Save";TAB(C);"22 Previous 15 records" : PRINT TAB(B);"04 Edit last record";TAB(C);"23 Home" 0050 PRINT TAB(B);"05 Cursor down";TAB(C);"24 Erase 80 char" : PRINT TAB(B);"06 Cursor up";TAB(C);"25 Delete 80 char" : PRINT TAB(B);"07 Begin";TAB(C);"26 Insert 80 char" : PRINT TAB(B);"08 Erase";TAB(C);"27 Copy records" 0060 PRINT TAB(B);"09 Delete";TAB(C);"28 Ascii <===> Ebcdic" : PRINT TAB(B);"10 Insert";TAB(C);"29 Hex Edit" : PRINT TAB(B);"11=>14 Edit";TAB(C);"30 Delete/number records" : PRINT TAB(B);"15 \C4\C1\D4\C1\A0\C5\CE\D4\D2\D9";TAB(C);"31 or 'CLEAR' Clear memory" 0070 PRINT : PRINT "FORMAT LINE " : $GIO#5(A200400D400A,B$)F0$() 0080 PRINT " 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8" : PRINT " 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5 0" : SELECT PRINT 005(K9) : PRINT AT(23,0);"For instructions load file : 'Ewritup'";AT(20,0); 0090 $GIO/001(C660,B$)B$(1) : IF STR(B$,8,1)<>" "THEN 110 : B$()=STR(B$,6,1) : GOTO 100 0100 ON VAL(B$(1))+1GOTO 30,780,840,890,410,90,90,90,90,90,90,90,90,90,90,760, 970,800,90,90,90,90,90,90,90,90,90,90,990,1100,1010,120 : IF B$()=HEX(F0)THEN LOAD RUN T"START" : GOTO 90 0110 IF B$(1)<>HEX(81)THEN 90 0120 PRINT : INPUT "OK TO CLEAR EDIT FILE ",B$(1) : IF B$(1)="Y" THEN 420 : GOTO 30 0130 DEFFN'7 : X=1 : L=0 : GOSUB '40(0) : GOTO 190 0140 DEFFN'37(M,N) : IF N=0THEN RETURN : IF A1$(1)="EBCDIC"THEN $TRAN(C$(),Y2$()) : $TRAN(C$(),Z1$())R : PRINT STR(C$(),M,N); : RETURN 0150 DEFFN'40(A) : REM DISPLAY SCREEN : PRINT : $GIO#5(4003,B$) : T=A 0160 GOSUB '62(1+T*K9) : T=T+1 : IF T>=K7+1THEN 170 : IF T>=A+L9THEN 170 : $GIO#5(400A,B$) : GOTO 160 0170 $GIO#5(4001,B$) : X=1 : RETURN 0180 DEFFN'50(A) : REM CUR POS : A1=INT((A-1)/K9) : $GIO#5("@\A2 ",B$)I$()<25-A1,A-(K9-1)*A1-1> : RETURN 0189 $GIO/001(C660,B$)B$(1) : IF STR(B$,8,1)<>" "THEN 220 : B$()=STR(B$,6,1) : GOTO 440 0190 REM %MAINLOOP : KEYIN B$(),220,440 : $GIO("qu@") : $IF ON /001,190 0200 REM DISP OF CUR POS : IF X<81AND X>72THEN 510 : $GIO#5("@@@ @@@") : A$=" " : CONVERT X-K9*INT((X-1)/K9)TO STR(A$,6,2),(##) : CONVERT 1+L+INT((X-1)/K9)TO STR(A$,2,3),(###) : GOSUB '50(73) : $GIO#5("\A0 @@@ @ @")A$<,8> 0210 REM RESTORE CURSOR : GOSUB '50(X) : $GIO#5("@@@") : GOTO 189 0220 $TRAN(B$(),T$())R : ON 1+VAL(B$(1))GOTO 190,260,230,490,230,230,120,190,430,980,240 0230 REM CHAR : IF X=1920THEN SELECT PRINT 005 : PRINT B$(1); : IF A1$(1)="EBCDIC"THEN $TRAN(B$(),Y1$()) : MAT COPY B$()TO A$()<X+L*K9,1> : IF INT(X/K9)=X/K9THEN 270 : X=X+1 : ON X-K4 GOTO 250 : GOTO 190 0240 REM UNDERSC : IF A1$(1)="EBCDIC"THEN 190 : OR (STR(A$(),X+L*K9,1),80) : PRINT STR(A$(),X+L*K9,1); : X=X+1 : ON X-K4GOTO 250 : GOTO 190 0250 X=K3+1 : IF L=K7+1-24THEN 290 : L=L+1 : GOSUB '62((L+23)*K9+1) : GOTO 190 0260 REM RET : ON X2GOTO 660 0270 GOSUB 280 : GOTO 190 0280 SELECT PRINT 005 : IF INT((X-1)/K9)+L<K-1THEN X=K9+1+K9*INT((X-1)/K9) : IF X<>K4+1THEN 290 : X=K3+1 : IF L>=K7+1-L9 THEN 290 : L=L+1 : PRINT : GOSUB '62((L+L9-1)*K9+1) 0290 GOSUB '50(X) : RETURN 0300 PRINT "" : GOSUB '61 : IF L1=0THEN RETURN : X,I=1 : L=0 : PRINT ""; : SELECT PRINT 005 : GOSUB '40(L) 0310 KEYIN B$(1),320,340 : GOTO 330 0320 KEYIN B$(1) : IF B$(1)=" "THEN 330 : GOTO 340 0330 GOSUB 360 : I=I+1 : IF I>=L1THEN 340 : GOTO 310 0340 RETURN CLEAR : GOTO 190 0350 DEFFN'60 : PRINT "\D4\C8\C5\D2\C5\A0\C1\D2\C5\A0"; : GOSUB '61 : PRINT L1;"\A0\D2\C5\C3\CF\D2\C4\D3\A0\C9\CE\A0\C5\C4\C9\D4" : $GIO("q u\FAu\FAu\FA") : RETURN 0360 REM LINE DOWN : IF X>K3THEN 370 : X=X+K9 : GOSUB '50(X) : RETURN 0370 SELECT PRINT 005 : X=K9+1+K9*INT((X-1)/K9) : IF X<>K4+1THEN 380 : X=K3+1 : IF L>=K7+1-L9 THEN 380 : L=L+1 : PRINT : GOSUB '62((L+L9-1)*K9+1) 0380 GOSUB '50(X) : RETURN 0390 DEFFN'61 : REM DEFINE LAST LINE : L1=1+ INT((POS(-A$()<>S1$(1))-1)/K9) : RETURN 0400 DEFFN'62(D) : MAT COPY A$()<D,K9>TO W$() : IF A1$(1)="EBCDIC"THEN $TRAN(W$(),Y2$()) : $TRAN(W$(),Z1$())R : $GIO#5(A000400D,B$)W$()<1,K9> : RETURN 0410 GOSUB '60 : PRINT ""; : IF L1>15THEN L=L1-15 : IF L<0THEN L=0 : GOSUB '40(L) : IF L1>15THEN X=K9*14+1 : GOSUB '50(X) : GOTO 190 0420 REM CLEAR : L=0 : X=1 : INIT(S1$(1))A$() : GOSUB '40(L) : GOTO 190 0430 REM BACKSP : ON X-K9*INT((K9-1)/K9)GOTO 190 : B$(1)=S1$(1) : MAT COPY B$()TO A$()<X+K9*L-1,1> : $GIO#5(40084020,B$) : GOTO 550 0440 REM SF KEY : IF B$()=HEX(7E)OR B$()=HEX(7F)THEN 980 : IF B$()=HEX(F0)OR B$()=HEX(50)THEN 30 0450 ON VAL(B$())+1GOTO 30,780,190,190,410,470,480,580,490,500,520,530,540,550 ,570,760,30,800,190,190,410,720,740,590,750,600,610,630,540,1100,1010,120 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,740,720,,470,480,,490,500,520,,540,550 ,,,,,740,720,,720,740,,,600,610 0460 GOTO 190 0470 REM LINE DOWN : IF X>K3OR INT((X-1)/K9)+L>=K-1THEN 270 : X=X+K9 : GOSUB '50(X) : GOTO 190 0480 REM LINE UP : IF X<=K9THEN 190 : X=X-K9 : GOSUB '50(X) : GOTO 190 0490 REM ERASE : Z=X-K9*INT((X-1)/K9) : INIT(S1$(1))W$() : MAT COPY W$()<1,K9+1-Z>TO A$()<L*K9+X,K9+1-Z> : GOTO 510 0500 REM DEL : Z=X-K9*INT((X-1)/K9) : MAT COPY A$()<X+L*K9+1,K9-Z>TO A$()<X+L*K9,K9-Z> : B$(1)=S1$(1) : MAT COPY B$()TO A$()<K9+L*K9+K9*INT((X-1)/K9),1> 0510 $GIO#5(400D4006) : GOSUB '62(1+(L+INT((X-1)/K9))*K9) : GOSUB '50(X) : $GIO#5(4005) : GOTO 190 0520 REM INS : Z=X-K9*INT((X-1)/K9) : MAT COPY -A$()<X+L*K9,K9-Z>TO -A$()<1+X+L*K9,K9-Z> : B$(1)=S1$(1) : MAT COPY B$()TO A$()<X+L*K9,1> : GOTO 510 0530 REM -----> : Z=X-K9*INT((X-1)/K9) : Z1=5-(INT(Z/(K9-4))*(Z-K9+5)) : ON Z1+1GOTO 190 : MAT COPY A$()<X+K9*L,5>TO C$()<1,5> : X=X+Z1 : GOSUB '37(1,Z1) : GOTO 190 0540 REM -> : MAT COPY A$()<X+K9*L,1>TO B$() : ON K9+1-(X-K9*INT((X-1)/K9))GOTO 190 : X=X+1 : IF A1$(1)="EBCDIC"THEN $TRAN(B$(),Y2$()) : $TRAN(B$(),Z1$())R : PRINT B$(1); : GOTO 190 0550 REM <- : Z=X-K9*INT((X-1)/K9) : ON ZGOTO 190 : Z=Z-1 : X=X-1 0560 ON Z+1GOTO 190 : SELECT PRINT 005 : $GIO#5(400D,B$) : ON ZGOTO 190 : MAT COPY A$()<1+K9*(L+INT((X-1)/K9)),Z-1>TO W$()<1,Z-1> : IF A1$(1)="EBCDIC"THEN $TRAN(W$(),Y2$()) : $TRAN(W$(),Z1$())R : PRINT STR(W$(),1,Z-1); : GOTO 190 0570 REM <----- : Z=X-K9*INT((X-1)/K9) : Z1=Z-1-(Z-6)*SGN(INT(Z/6)) : Z=Z-Z1 : X=X-Z1 : GOTO 560 0580 REM BEGIN : X=K9*INT((X-1)/K9)+1 : GOSUB '50(X) : SELECT PRINT 005 : GOTO 190 0590 REM HOME : X=X-K9*INT(X-1)/K9 : GOSUB '50(X) : GOTO 190 0600 REM DEL LINE : Z=X-K9*INT(X-1)/K9 : IF Z<>1THEN 190 : INIT(S1$(1))W$() : MAT COPY A$()<K9+X+K9*L,1+K7 *K9-X-K9*L>TO A$()<X+K9*L,1+K7*K9-X-K9*L> : MAT COPY W$()TO A$()<1+K7*K9,K9> : GOTO 620 0610 REM INS LINE : Z=X-K9*INT(X-1)/K9 : Z2=X+K9*L : IF INT((X-1)/K9)+L>=K-1OR Z<>1THEN 190 : INIT(S1$(1))W$() : MAT COPY -A$()<Z2,K7 *K9-Z2+1>TO -A$()<K9+Z2,K7 *K9-Z2+1> : MAT COPY W$()TO A$()<Z2,K9> 0620 Z=X : GOSUB '40(L) : X=Z : GOSUB '50(X) : GOTO 190 0630 X=K9*INT((X-1)/K9)+1 : X1=X+L*K9 : X2=1 : GOSUB '50(X) : PRINT " "; : SELECT PRINT 005 : GOSUB '62(X+L*K9) : PRINT " "; : SELECT PRINT 005 0640 KEYIN B$() : IF B$(1)=HEX(05)OR B$(1)=HEX(45)THEN GOSUB 700 : IF B$(1)=HEX(06)OR B$(1)=HEX(46)THEN GOSUB 690 : IF B$(1)=HEX(F0)THEN 680 : IF B$(1)=HEX(0D)THEN 650 : GOTO 640 0650 X3=X+L*K9-X1+K9 : X=1 : L=0 : GOSUB '40(0) : SELECT PRINT 005 : GOSUB '50(1904) : PRINT " Copy to where ? "; : SELECT PRINT 005 : GOTO 190 0660 REM COPY IT X3=# OF BYTES TO INSERT : X2=0 : X=K9*INT((X-1)/K9)+1 : GOSUB '61 : $GIO#5(4003) : IF L1+X3/K9>K7THEN PRINT "MEMORY OVERRUN" : IF X+L*K9> X1AND X+L*K9< X1+X3THEN STOP "INVALID COPY AREA" : IF X+L*K9<X1THEN 710 0670 MAT COPY -A$()<X+L*K9,(K7+1)*K9-X-L*K9-X3>TO -A$()<X+L*K9+X3,(K7+1)*K9-X- L*K9-X3> : MAT COPY A$()<X1,X3>TO A$()<X+L*K9,X3> : X=1 : L=0 : GOSUB '40(0) : GOTO 190 0680 REM CANCEL COPY : X1,X2=0 : GOTO 760 0690 REM LINE UP : IF X<=X1THEN 640 : $GIO#5(400D) : GOSUB '62(X+L*K9) : $GIO#5(400C,B$) : X=X-K9 : RETURN 0700 REM PRINT NEXT LINE IN REV.VIDEO : PRINT " "; : SELECT PRINT 005 : GOSUB 280 : GOSUB '62(X+L*K9) : PRINT " "; : SELECT PRINT 005 : RETURN 0710 X1=X1+X3 : GOTO 670 0720 REM NEXT PAGE : IF L>=K7-23 THEN 190 : L=L+15 : IF L<K7-23THEN 730 : L=K7-23 0730 GOSUB '40(L) : GOTO 210 0740 REM PREV PAGE : ON L+1GOTO 190 : L=L-15 : IF L>=0THEN 730 : L=0 : GOTO 730 0750 REM ERASE 1 LINE : INIT(S1$(1))W$() : X=K9*INT((X-1)/K9)+1 : MAT COPY W$()TO A$()<X+K9*L,K9> : INIT(20)W$() : $GIO#5(400DA200400D,B$)W$() : SELECT PRINT 005 : GOTO 190 0760 REM RECALL BEGIN : X=1 : L=0 : GOSUB '40(0) : GOTO 190 0770 GOSUB '60 0780 PRINT ""; : SELECT PRINT 005 : GOSUB 300 : L8=23 : L=L1-L8 : IF L=K7-22THEN L=L-1 : IF L>0THEN 790 : L=0 : L8=L1 0790 X=K9*L8+1 : GOTO 190 0800 REM %HARDCOPY : SELECT PRINT 005 : PRINT ""; : GOSUB '60 : B$="215" : PRINT AT(10,10);"PRINTER ADDRESS <DEFAULT = 215 >"; : LINPUT -STR(B$,1,3) : SELECT #4<STR(B$,1,3)> : $GIO#4(400C) 0810 FOR T=1TO L1 : INIT(S1$(1))Y$() : D=1 : MAT COPY A$()<1+(T-1)*K9,K9>TO Y$()<1,K9> : IF A1$(1)="EBCDIC"THEN $TRAN(Y$(),Y2$()) : IF A1$(1)="EBCDIC"THEN 820 : Y$()=Y$()AND ALL(80) : MAT SEARCHY$()<1,K9>,=HEX(80)TO Q$() : IF STR(Q$(),1,2)<>HEX(0000)THEN D=2 : INIT(20)Y$() : MAT COPY A$()<1+(T-1)*K9,K9>TO Y$()<1,K9> 0820 Y$()=AND ALL(7F) : $TRAN(Y$(),Z1$())R : $TRAN(Y$(),"................. ")R : ON DGOTO 830 : $GIO#4(A200,B$)Y$()<1,132> : INIT(20)Y$() : MAT COPY A$()<1+(T-1)*K9,K9>TO Y$()<1,K9> : Y$()=Y$()AND ALL(80) : $TRAN(Y$()<1,132>,HEX(20005F802020))R 0830 $GIO#4(A200400D,B$)Y$()<1,LEN(Y$())> : NEXT T : $GIO#4(400C) : GOTO 760 0840 REM %LOAD : PRINT AT(21,0); : IF D$=" "THEN D$="310" : LINPUT "LOAD FROM ",-D$ : SELECT #2<D$> 0850 PRINT AT(21,40); : LINPUT "FILE ",-F$ : PRINT "SKIP # OF RECORDS IN FILE <DEFAULT=0> "; : S1=0 : INPUT S1 : S2=S1 : INIT(S1$(1))A$() : Z=1 : LIMITS T#2,F$,P9,P9,P9,P9 : IF P9<>2THEN 850 : DATA LOAD DC OPEN T#2,F$ 0860 DATA LOAD DC #2,S$() : IF END THEN 770 : A6=VAL(STR(S$(1),2,1)) : A5=3 0870 MAT COPY S$()<A5,1>TO B1$() : IF S1=0THEN MAT COPY S$()<A5+1,VAL(B1$(1))>TO A$()<Z,VAL(B1$(1))> : IF S1=0THEN Z=Z+K9 : IF S1<>0THEN S1=S1-1 : IF Z<K9*(1+K7)THEN 880 : PRINT "Memory overrun record ";S2+1;"to record ";S2+K;" are loaded." : STOP 0880 A5=A5+VAL(B1$(1))+1 : IF A5<A6THEN 870 : IF STR(S$(1),1,1)<>HEX(F0)THEN 860 : GOTO 770 0890 REM %SAVE : PRINT : IF D$=" "THEN D$="310" : LINPUT "SAVE ON ",-D$ : SELECT #3<D$> : S=0 : B$="N" : PRINT ,,"CREATE A ";A1$(2);" FILE <DEFAULT = N>"; : INPUT B$ : IF B$<>"Y"THEN 900 : IF A1$(1)="EBCDIC"THEN S=2 : ELSE S=1 0900 LINPUT "FILE ",-F$ : GOSUB '60 : B$(1)="N" : LIMITS T#3,F$,S1,S2,S3,P9 : IF P9=2THEN 910 : IF P9<>0THEN 900 : PRINT "A NEW FILE HAS TO BE CREATED" : INPUT "HOW MANY EMPTY RECORDS TO ADD",L2 : DATA SAVE DC OPEN T#3,((L1+L2)/3+3),F$ : GOTO 920 0910 DATA LOAD DC OPEN T#3,F$ : B$(1)="N" : LINPUT "Add records to existing file ",B$(1) : IF B$(1)<>"Y"AND B$(1)<>"y"THEN 920 : IF S2-S1-S3<L1/3THEN STOP "NOT ENOUGH SPACE IN THIS FILE" : DSKIP #3,END : DBACKSPACE #3,1 : DATA LOAD DC #3,S$() : STR(S$(1),1,1)=HEX(00) : DBACKSPACE #3,1 : DATA SAVE DC #3,S$() 0920 INIT (00)S$() : Z=1 : A5=3 0930 A=LEN(A$(Z)) : IF S=1OR A1$(1)="EBCDIC"THEN A=K9 : ON F+1 GOTO 940 : IF A>=K9 THEN 940 : A=K9 0940 F=0 : BIN(B1$(1))=A : IF A+A5<248THEN 950 : DATA SAVE DC #3,S$() : INIT(00)S$() : A5=3 0950 MAT COPY B1$()TO S$()<A5,1> : MAT COPY A$()<(Z-1)*K9+1,A>TO S$()<A5+1,A> : IF S=1THEN $TRAN(S$()<A5+1,A>,Y1$()) : IF S=2THEN $TRAN(S$()<A5+1,A>,Y2$()) : A5=A5+1+A : BIN(STR(S$(1),2,1))=A5 : Z=Z+1 : IF Z<=L1 THEN 930 0960 STR(S$(1),1,1)=HEX(F0) : DATA SAVE DC #3,S$() : DATA SAVE DC #3,END : GOTO 30 970REM %FORMAT LINE:PRINT " ";AT(17,79);:LINPUT F0$():$TRAN(F0$(),"\80-\80 ")R:F0$()=F0$()OR ALL(7F):$TRAN(F0$(),HEX(2DFF547F2020))R:X=1:$GIO#5("@@@ @ @@@\A0 @ @ ")F0$():GOTO 90 0971 PRINT HEX(03); : INPUT "Number records beginning with ",N1 : IF N1<=0THEN 971 : INPUT "At position (- for right alignment) ",N2 : N4=ABS(SGN(N2)-1)/2 : N2=ABS(N2) : IF N2>80THEN 971 : GOSUB '60 0972 FOR T=1TO L1 : CONVERT T+N1-1TO B$,(########) : N3=POS(STR(B$,1,8)<>"0") : IF A1$(1)="EBCDIC"THEN $TRAN(B$,Y1$()) : MAT COPY B$<N3,9-N3>TO A$()<K9*(T-1)+N2+N4*(N3-8),9-N3> : NEXT T : GOTO 760 0980 REM TAB : Z=X-K9*INT((X-1)/K9) : MAT SEARCHF0$()<Z+1,K9-Z>,<>"-"TO Q$() : Z1=VAL(STR(Q$(1),2,1)) : ON Z1+1GOTO 270 : MAT COPY A$()<X+K9*L,Z1>TO C$()<1,Z1> : X=X+Z1 : GOSUB '37(1,Z1) : GOTO 190 0990 REM SWITCH ASCII <==> EBCDIC : GOSUB '61 : IF A1$(1)="ASCII"THEN 1000 : A1$()="ASCII EBCDIC" : S1$()=" " : GOTO 1001 1000 A1$()="EBCDIC ASCII" : S1$(1)="@" 1001 IF L1=0THEN INIT(S1$())A$() : GOTO 30 1010 REM DELETE RECORDS : GOSUB '61 : T=1 : PRINT "Delete empty records (1)";AT(2,0);"Delete records (2) ";AT(4 ,0);"Number records (3)"; : INPUT T : IF T>3OR T<1THEN 1010 : ON T-1GOTO 1030,971 1020 PRINT "Deleting . . ."; : ON L1+1GOTO 760 : INIT(S1$(1))W$() : FOR T=L1TO 1STEP -1 : IF STR(A$(),K9*(T-1)+1,K9)<>STR(W$(),1,K9)THEN 1021 : MAT COPY A$()<T*K9+1,>TO A$()<(T-1)*K9+1,> : INIT(S1$())STR(A$(),(K-1)*K9+1) 1021 NEXT T : GOSUB '60 : GOTO 760 1030PRINT " Start deleting at record # ";:ON L1+1GOTO 30:INPUT T1:IF T1<1OR T1>L1THEN 1030 1040 PRINT AT(2,0,80);"Delete ending record # "; : T2=T1 : INPUT T2 : IF T2<T1OR T2>L1THEN 1040 : MAT COPY A$()<T2*K9+1,>TO A$()<(T1-1)*K9+1,> : INIT(S1$(1))STR(A$(),1+K9*(K-(T2-T1+1))) : GOSUB '60 : GOTO 760 1050 REM POSITION HEX : PRINT AT(11,34);T5;AT(13+INT((T5-1)/20),3*(T5-1-20*INT((T5-1)/20))); : RETURN 1060 REM POSITION ASCII : PRINT AT(13+INT((T5-1)/20),59+T5-20*INT((T5-1)/20)); : HEXPACKSTR(W$(),T5,1)FROMSTR(Y$(),1+2*(T5-1),2) : IF A1$(1)="EBCDIC"THEN $TRAN(W$(),Y2$()) : $TRAN(W$(),Z1$())R : $GIO#5(A200,L$)W$()<T5,1> : RETURN 1070 SELECT PRINT 005(80) : PRINT " ";BOX(3,60);AT(0,15);" - - - H E X E D I T O R - - - ";AT(2,40);"sf 01 = Goto Record # ";AT(2,10);"sf 00 = Ex it"; : FOR T=1TO 3 : PRINT AT(4+(T-1)*7,5);"Record # ";AT(4+(T-1)*7,60);A1$(1);" Translation" ; : NEXT T : RETURN 1080 DEFFN'63(T3) : IF T4+T3=2OR T4+T3>=K7+4THEN RETURN : PRINT AT((T3-1)*7+4,14);T4+T3-2; : HEXUNPACKSTR(A$(),(T4+T3-3)*K9+1,K9)TO STR(Y$(),1,160) : MAT COPY A$()<(T4+T3-3)*K9+1,K9>TO W$()<1,K9> : IF A1$(1)="EBCDIC"THEN $TRAN(W$(),Y2$()) : $TRAN(W$(),Z1$())R 1090 FOR T=0TO 3 : PRINT AT((T3-1)*7+6+T,0); : FOR T1=1TO 40STEP 2 : $GIO#5(A2004020,L$)Y$()<T1+40*T,2> : NEXT T1 : $GIO#5(A000400D,L$)W$()<T*20+1,20> : NEXT T : RETURN 1100 REM %^HEX EDIT : GOSUB 1070 1110 IF X=0THEN X=1 : L=L+INT((X-1)/K9) : T5=X-K9*INT((X-1)/K9) : X=1 : T4=L+1 1120 PRINT AT(11,25);"Position "; : GOSUB '63(1) : GOSUB '63(3) : GOSUB '63(2) : PRINT AT(13,0);BOX(0,80);AT(13,59);BOX(4,0);AT(17,0);BOX(0,80);AT(13,0); : REM T5=1 : T6=0 : GOSUB 1050 1130 KEYIN B$(),1140,1150 : GOTO 1130 1140 REM CHAR : IF B$(1)=HEX(0D)THEN 1220 : IF B$(1)=HEX(E5)THEN 1210 : IF B$(1)=" "THEN 1310 : IF B$(1)=HEX(08)THEN 1350 : L$=B$() : $TRAN(L$,"000102030405060708090A0B0C0D0E0F")R : IF STR(L$,1,1)<>"0"THEN 1130 : STR(Y$(),1+2*(T5-1)+T6,1)=B$(1) : $GIO#5(A000,L$)B$()<1,1> : T6=1-T6 : GOSUB 1060 : GOSUB 1050 : IF T6=1THEN $GIO#5(4009) : IF T6=0THEN 1310 : GOTO 1130 1150 REM SF : ON VAL(B$(1))+1 GOTO 1180,1160,,,1200,1290,1300,1190,1210,1240,1250,1280, 1310,1320,1330,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1290 ,1300,,1210,1240,1250,,1310,1320,,,,,,,,1290,1300,,,1240,1250,,1310,1320 : IF B$(1)=HEX(7E)OR B$(1)=HEX(7F)THEN 1340 : GOTO 1130 1160 REM ENTER # : GOSUB 1230 1170 GOSUB 1070 : PRINT AT(2,60); : INPUT T4 : IF T4<1OR T4>K7+1THEN 1170 : L=T4-1 : X=1 : GOTO 1120 1180 REM EXIT : GOSUB 1230 : GOSUB '40(L) : X=T5 : SELECT PRINT 005 : GOSUB '62(L*K9+1) : IF T5<>1THEN PRINT STR(W$(),1,T5-1); : GOTO 190 1190 REM BEGIN : T5=1 : GOTO 1270 1200 REM END : T5=K9 : GOTO 1270 1210 REM ERASE : GOSUB 1230 : INIT(S1$())STR(A$(),(T4-1)*K9+T5,K9-T5+1) : GOSUB '63(2) : GOTO 1270 1220 REM RET : GOSUB 1230 : L=L+1 : IF L=K7+1THEN L=K7 : T6=0 : GOTO 1110 1230 HEXPACKSTR(A$(),1+(T4-1)*K9,K9)FROMSTR(Y$(),1,160) : RETURN 1240 REM DEL : GOSUB 1230 : MAT COPY A$()<(T4-1)*K9+T5+1,K9-T5>TO A$()<(T4-1)*K9+T5,K9-T5> : STR(A$(),T4*K9,1)=S1$(1) : GOTO 1260 1250 REM INS : GOSUB 1230 : MAT COPY -A$()<(T4-1)*K9+T5,K9-T5>TO -A$()<(T4-1)*K9+T5+1,K9-T5> : STR(A$(),(T4-1)*K9+T5,1)=S1$(1) 1260 GOSUB '63(2) 1270 GOSUB 1050 : T6=0 : GOTO 1130 1280 REM =====> : T5=T5+5 : IF T5>K9THEN T5=K9 : GOTO 1270 1290 REM DOWN : IF T5>60THEN 1220 : T5=T5+20 : GOTO 1270 1300 REM UP : IF T5<21THEN 1301 : T5=T5-20 : GOTO 1270 1301 ON L+1GOTO 1130 : L=L-1 : GOSUB 1230 : T6=0 : GOTO 1110 1310 REM => : IF T5=K9THEN 1130 : T5=T5+1 : GOTO 1270 1320 REM <= : ON T5GOTO 1130 : T5=T5-1 : GOTO 1270 1330 REM <===== : T5=T5-5 : IF T5<1THEN T5=1 : GOTO 1270 1340 REM TAB : IF T5=K9THEN 1130 : MAT SEARCHF0$()<T5+1-INT(T5/K9),K9-(T5-INT(T5/K9))>,<>"-"TO Q$() : Z1=VAL(STR(Q$(1),2,1)) : ON Z1+1GOTO 1290 : T5=T5+Z1 : GOTO 1270 1350 REM BS : ON T5GOTO 1130 : T5=T5-1 : STR(W$(),T5,1)=S1$(1) : HEXUNPACKS1$(1)TO STR(Y$(),1+(T5-1)*2,2) : GOSUB 1050 : SELECT PRINT 005 : HEXPRINT S1$(); : GOTO 1270 9999 DEFFN'31 : F$=HEX(020400020E450F) : SCRATCH TF$ : SAVE T()F$ : F$=HEX(020400020E45430F) : SCRATCH TF$ : SAVE <SR>T() F$ : STOP "E SAVED"