Listing of file='HLDA010G' on disk='vmedia/letter_editor.wvd.zip'
# Sector 205, program filename = 'HLDA010G' 0010 REM ***** HLDA010G - REVISED 1550 08/18/76 ***** COPYRIGHT WANG LABS, 197 6 0015 DIM C0$(16) : COM CLEAR F$() : U2=1 : GOTO 6800 0210 IF C>=1THEN 230 : C=1 0230 IF C>C0THEN 880 : P=C-INT((C-1)/W)*W : RETURN 0280 J0=1 : PRINT HEX(01); 0300 $GIO/005,(400DA000400A,I0$)P$()<J0,W> : J0=J0+W : IF J0<C0THEN 300 : IF O=0THEN 380 : P,C=1 : PRINT STR(Q$,1,50);HEX(0C) 0380 $GIO/005,(A000,I0$)R1$()<1,(C-1)/W+1> 0390 $GIO/005,(A000,I0$)R2$()<1,P> : RETURN 0430 $GIO/005,(A000,I0$)R1$()<1,(C-1)/W+1> 0440 $GIO/005,(400DA000,I0$)P$()<C-P+1,W> : GOTO 390 0490 IF G$(1)=HEX(08)THEN 580 : L=LEN(G$(1)) : MAT COPY G$()TO P$()<C,L> : IF P+L>WTHEN 670 : PRINT G$(1); : P=P+L : C=C+L 0570 RETURN 0580 IF C=1THEN 570 : G$(1)=" " : C=C-1 : MAT COPY G$()TO P$()<C,1> : GOSUB 210 : GOTO 440 0670 IF G$(1)=" "THEN 790 : MAT COPY -P$()<C-P+1,W>TO C$() : MAT SEARCHC$(),=B$TO E$() : D=VAL(STR(E$(1),2))-1 : MAT COPY -P$()<C-P+W-D+1,L-1+P-W+D>TO -P$()<C-P+W-D+1,L-1+P-W+2*D> : $GIO/005,(400DA000400A,I0$)P$()<C-P+1,W> : C=C+D+L : GOSUB 210 : GOTO 430 0790 MAT COPY P$()<C,1>TO E$() : PRINT E$(1); : C=C-P+W+1 : P=1 : PRINT HEX(0D0A); : RETURN 0880 IF C>=C2THEN 1050 0890 IF C<15*W+1THEN 930 : C=C-W : GOTO 890 0930 IF C<C1THEN 980 : C1=C1+W : GOTO 930 0980 C0=C1 : IF C0<=C2THEN 1010 : C0=C2 1010 IF C0<=15*W+1THEN 1030 : C0=15*W+1 1030 RETURN 1050 O=1 : MAT COPY P1$()<2,W>TO P$()<C,W> : MAT COPY P$()<2401-L1,L1>TO P$()<C-P+W+1,2400-C+P-W> : C1=C-P+W+L1+1 : RETURN CLEAR 1100 GOSUB 280 1130 KEYIN G$(1),1150,1301 : GOTO 1130 1150 STR(G$(1),2)=" " : $TRAN(G$(),H$())R 1180 GOSUB 1210 : GOTO 1130 1210 IF G$(1)>=HEX(80)THEN 1410 : IF G$(1)=HEX(0D)THEN 1250 1230 GOSUB 490 : RETURN 1250 GOSUB 790 1260 MAT COPY P$()<C-W,W>TO C$() : IF F2<>1THEN 1290 : IF U4>=U6THEN 6225 : DATA SAVE DA T#1,(U4,U4)C$() 1290 IF F1=0THEN 1300 : IF C$(1)="/"THEN 6400 1300 RETURN 1301 ON VAL(G$(1))-12GOTO 1302,1307 : K$=G$(1) : $TRAN(G$(),H$())R : IF K$=G$(1)THEN 1150 : GOTO 1180 1302 H$(1)=HEX(8137823883398434853686318732883389828AA18B308C2F8CCC8D2E8E358F2 98FC390A090CB912899E5) : H$(2)=HEX(91C7922B92C6932D93C4942A94C2968F9781970B985E98CA990C9A0A9B1AA71 C9AE6) : Q$="EDIT" 1303 GOSUB 1304 : GOTO 1130 1304 $GIO/005,(A000,I0$)R1$() : $GIO/005,(A000,I0$)Q$ : GOTO 380 1307 H$(1)=HEX(9A0A970B990C9B1AA71C8AA19AE699E5) : Q$="TEXT ENTRY" : GOTO 1303 1330 DEFFN'5 1340 C,P=1 : GOSUB 210 : GOSUB 980 : GOSUB 280 : GOTO 1302 1410 K$=G$(1) : IF K$<HEX(8A)THEN 1520 : IF K$=HEX(A7)THEN 1870 : ADD(K$,77) : ON VAL(K$)GOTO 1590,1490,1910,1620,1670,1490,1490,1490,2590,3710,2540,149 0,1760,6880,1490,1800,1830,1850 1490 RETURN 1520 L=VAL(K$)-128 : C=C+(VAL(R3$(L))-8)*W+VAL(R4$(L))-2 1540 GOSUB 210 : GOSUB 380 : RETURN 1590 C=C-P+1 : GOTO 1540 1620 D$="." : MAT SEARCHP$()<C,C0>,=D$TO E$() : C=C+256*VAL(E$(1))+VAL(STR(E$(1),2)) : GOTO 1540 1670 C=1 : GOTO 1540 1760 MAT COPY P$()<C,1>TO G$() : OR (STR(G$(1),1,1),80) : GOTO 1230 1800 G$(1)="<C-RET>" : GOSUB 490 : GOTO 1250 1830 G$(1)="<TAB>" : GOTO 1230 1850 G$(1)="<C-TAB>" : GOTO 1230 1870 G$(1)="<->" : GOTO 1230 1910 MAT SEARCHP$()<C,C0-C+1>,=B$TO E$() : C=C+256*VAL(E$(1))+VAL(STR(E$(1),2))-1 : MAT SEARCHP$()<C+1,C0-C>,<>B$TO E$() : C=C+256*VAL(E$(1))+VAL(STR(E$(1),2)) : GOTO 1540 1980 I=C-P+1 : D$="<" 2000 MAT COPY P$()<I,10>TO G$() : IF STR(G$(1),1,1)=D$THEN 2110 2020 MAT COPY P$()<I+W,10>TO G$() : IF STR(G$(1),1,1)=B$THEN 2400 : IF STR(G$(1),1,1)=D$THEN 2310 2050 J=1 2060 MAT SEARCHP$()<I+J,W-J>,=D$TO E$() : IF E$(1)>A$THEN 2480 : I=I+W : IF I<=C1THEN 2000 : RETURN 2110 MAT COPY P$()<I,10>TO G$() : GOSUB 2170 : IF K=0THEN 2020 : GOSUB 2210 : IF K=1THEN 2400 : GOTO 2020 2170 K=POS(G$(1)=3E) : IF K=0THEN 2200 : G$=STR(G$(1),1,K) 2200 RETURN 2210 K=1 2220 IF G$="<EOD>"THEN 2300 : IF G$="<CENTER>"THEN 2300 : IF G$="<MEMO>"THEN 2300 : IF G$="<FORMAT>"THEN 2300 : IF G$="<REW-STOP>"THEN 2300 : IF G$="<REW-GO>"THEN 2300 : IF G$="<PAGE>"THEN 2300 : K=0 2300 RETURN 2310 GOSUB 2170 : IF K=0THEN 2050 : GOSUB 2360 : IF K=1THEN 2400 : GOTO 2050 2360 K=1 : IF G$="<TAB>"THEN 2300 : IF G$="<C-TAB>"THEN 2300 : GOTO 2220 2400 H,I=I+W : MAT SEARCHP$()<I,2401-I>,<>B$TO E$() : IF E$(1)=A$THEN 2450 : I=I+256*VAL(E$(1))+VAL(STR(E$(1),2))-1 : I=INT((I-1)/W)*W+1 2450 IF I<=15*WTHEN 2470 : I=14*W+1 2470 RETURN 2480 J=J+VAL(STR(E$(1),2)) : MAT COPY P$()<I+J-1,10>TO G$() : IF STR(G$(1),1,7)="<C-RET>"THEN 2400 : IF STR(G$(1),1,9)="<SW-READ>"THEN 2400 : IF STR(G$(1),1,9)="<BLK-LNK>"THEN 2400 : GOTO 2060 2540 GOSUB 1980 : C=I : GOTO 1540 2590 H$(1)=HEX(9A0A970B990C9B1AA71C8AA199E59AE6) : Q$="EDIT (INSERT)" : GOSUB 1304 : IF O=1THEN 1130 : MAT COPY P$()<C,W-P+1>TO P1$()<2,80> : P1$(1)="+" : MAT COPY P1$()TO P$()<C,W-P+1> : L1=C1-C+P-W-1 : MAT COPY -P$()<C-P+W+1,L1>TO -P$()<C-P+W+1,2400-C+P-W> : C0=C0+L1 : IF C0<15*W+1THEN 2700 : C0=15*W+1 2700 $GIO/005,(400DA000,I0$)P$()<C-P+1,W> : $GIO/005,(A000,I0$)R2$()<1,P> 2720 KEYIN G$(1),2740,2735 : GOTO 2720 2735 K$=G$(1) : $TRAN(G$(),H$())R : IF K$=G$(1)THEN 2720 2740 STR(G$(1),2)=" " : $TRAN(G$(),H$())R : IF G$(1)>=HEX(80)THEN 3600 : IF G$(1)=HEX(0D)THEN 2820 2770 GOSUB 1210 : MAT COPY P1$()TO P$()<C,W-P+1> : GOTO 2700 2820 MAT COPY P1$()<2,80>TO P$()<C,80> : C3=C : C=C-P+1+W : GOSUB 1260 : F2=F2+F2 : C=C3 : GOSUB 3000 : MAT COPY P$()<2401-L1,L1>TO P$()<J0,2401-J0> : C1=J0+L1 : J0=C-P+1 2910 GOSUB 3200 2920 C2=1921 : GOSUB 980 : INIT(0A)R1$() : R1$(1)=HEX(01) : GOSUB 280 : RETURN CLEAR 2970 GOTO 1302 3000 J0=C-P+1 : J1=J0+3*W-1 : MAT SEARCHP$()<J0,W>,<>B$TO E$() : IF E$(1)<>A$THEN 3090 : J0=J0+W : RETURN 3060 MAT SEARCHP$()<J0,W>,<>B$TO E$() : IF E$(1)=A$THEN 3160 3090 MAT COPY -P$()<J0,W>TO C$() : MAT SEARCHC$(),=B$TO E$() : D=VAL(STR(E$(1),2))-1 : MAT COPY -P$()<J0+W-D,J1-J0-W+1>TO -P$()<J0+W-D,J1-J0-W+D+1> : J0=J0+W : J1=J1+W : GOTO 3060 3160 RETURN 3200 GOSUB 1980 3210 H=H-W 3230 IF J0>=HTHEN 3530 : MAT COPY -P$()<J0,W>TO C$() : MAT SEARCHC$(),<>B$TO E$() : M=W+3-VAL(STR(E$(1),2)) : IF E$(1)=A$THEN 3530 : IF M<3THEN 3390 : MAT COPY P$()<J0+M-3,1>TO E$() : IF E$(1)="."THEN 3360 : IF E$(1)="-"THEN 3380 : GOTO 3390 3340 M=1 : GOTO 3390 3360 M=M+1 : GOTO 3390 3380 M=M-1 3390 L=W-M+1 : IF L<=0THEN 3470 : MAT COPY -P$()<J0+W,L>TO C$() : MAT SEARCHC$()<1,L>,=B$TO E$() : IF E$(1)=A$THEN 3470 : D=L-VAL(STR(E$(1),2))+1 : MAT COPY P$()<J0+W,D>TO P$()<J0+M-1,D> : MAT COPY P$()<J0+W+D,W-D>TO P$()<J0+W,W> 3470 J0=J0+W : MAT SEARCHP$()<J0,W>,<>B$TO E$() : IF E$(1)=A$THEN 3540 : D=VAL(STR(E$(1),2)) : MAT COPY P$()<J0+D-1,W-D+1>TO P$()<J0,W> : GOTO 3230 3530 RETURN 3540 MAT COPY P$()<J0+W,2401-J0-W>TO P$()<J0,2401-J0> : C1=C1-W : J0=J0-W : GOTO 3210 3600 ON VAL(G$(1))-152GOTO 2770,2770,2770 : IF G$(1)=HEX(A7)THEN 2770 : IF G$(1)<>HEX(8A)THEN 2720 : MAT COPY -P$()<C-P+1,W>TO -P$()<C-P+1,W+W> : MAT COPY P1$()<2,80>TO P$()<C+W,80> : MAT COPY P$()<2401-L1,L1>TO P$()<C-P+W+W+1,2400-C+P-W-W> : C1=C-P+W+L1+1 : C1=C1+W : GOTO 2920 3710 MAT COPY P$()<C,W-P+1>TO P1$()<2,80> : P1$(1)="-" : Q$="EDIT (DELETE)" : GOSUB 1304 3750 MAT COPY P1$()TO P$()<C,W-P+1> : $GIO/005,(400DA000,I0$)P$()<C-P+1,W> : $GIO/005,(A000,I0$)R2$()<1,P> 3780 KEYIN K$,3810,3780 : GOTO 3780 3810 $TRAN(K$,H$())R : IF K$=HEX(93)THEN 3930 : IF K$=HEX(8C)THEN 4020 : IF K$=HEX(8A)THEN 4100 : IF K$=HEX(8D)THEN 4140 : IF K$=HEX(0D)THEN 3970 : GOTO 3780 3930 MAT COPY P1$()<3,79>TO P1$()<2,80> : GOTO 3750 3970 MAT COPY P1$()<2,80>TO P$()<C,W-P+1> : J0=C-P+1 : GOTO 2910 4020 MAT SEARCHP1$()<2,80>,<>B$TO E$() : I=VAL(STR(E$(1),2)) : MAT SEARCHP1$()<I+1,80-I>,=B$TO E$() : J=VAL(STR(E$(1),2)) : MAT COPY P1$()<I+J+1,80-I-J>TO P1$()<2,80> : GOTO 3970 4100 INIT(20)P1$() : GOTO 3970 4140 D$="." : MAT SEARCHP1$(),=D$TO E$() : IF E$(1)=A$THEN 4200 : D=VAL(STR(E$(1),2)) : MAT COPY P1$()<D+1,80-D>TO P1$()<2,80> : GOTO 3970 4200 INIT(20)P1$() : J0=C-P+1 : MAT SEARCHP$()<J0+W,2400-J0-W>,=D$TO E$() : IF E$(1)=A$THEN 3970 : D=256*VAL(E$(1))+VAL(STR(E$(1),2)) : E$(1)=" " : MAT COPY E$()TO P$()<J0+W,D> : L=INT(D/W)+1 : MAT COPY P$()<J0+L*W,2401-J0-L*W>TO P$()<J0+W,2401-J0-W> : C1=C1-(L-1)*W : MAT SEARCHP$()<J0+W,W>,<>B$TO E$() : IF E$(1)=A$THEN 4350 4320 D=VAL(STR(E$(1),2)) : MAT COPY P$()<J0+W+D-1,W-D+1>TO P$()<J0+W,W> : GOTO 3970 4350 MAT COPY P$()<J0+W+W,2401-J0-W-W>TO P$()<J0+W,2401-J0-W> : GOTO 3970 4510 J0=1 4530 GOSUB 4700 : IF E1=1THEN 1340 : GOTO 6460 4570 J0=1 4580 MAT COPY P$()<J0,1>TO E$() : IF E$(1)=HEX(0F)THEN 4660 : GOSUB 4950 : IF J0>12*WTHEN 4640 : IF J0<C0THEN 4580 4640 GOSUB 6600 : IF S2>0THEN 4530 : C0=J0 : IF J0>1THEN 4570 4660 GOTO 6800 4700 IF S2=0THEN 4800 : GOSUB 4870 : MAT COPY N$()TO P$()<J0,3*W+1> : D$=HEX(0F) : MAT SEARCHP$()<J0,3*W+1>,=D$TO E$()STEP W : IF E$(1)=A$THEN 4840 : J0=J0+256*VAL(E$(1))+VAL(STR(E$(1),2))-1 : IF J0<1200THEN 4700 4800 C0,C1=J0 : IF C0<=15*W+1THEN 4830 : C0=15*W+1 4830 RETURN 4840 STOP "DISK ERROR." 4870 DATA LOAD BA T#2,(5*S2+T2+U,A)N$() : T2=T2+1 : IF T2<=5THEN 4920 : S2=VAL(T$(S2)) : T2=1 4920 RETURN 4950 MAT COPY P$()<J0,W>TO C0$()<U2,W> : J0=J0+W 4960 U2=U2+W : IF U2<3*WTHEN 5070 : E$(1)=HEX(0F) : MAT COPY E$()TO C0$()<U2,1> : DATA SAVE BA T#3,(B1,B1)C0$() : U2=1 : IF B1<B2THEN 5070 : IF T1$(S1)=HEX(00)THEN 5090 : S1=VAL(T1$(S1)) : B1=5*S1+V+1 : B2=B1+5 5070 RETURN 5090 F=F0 : BIN(D$)=F : MAT SEARCHT1$(),=D$TO E$() : S1=VAL(STR(E$(1),2)) : T1$(S1)=HEX(00) : GOTO 5140 5122 E$(1)=HEX(0F) : MAT COPY E$()TO C0$()<U2,1> 5124 DATA SAVE BA T#3,(B1,B1)C0$() : MAT COPY E$()TO C0$()<1,1> : IF B1<B2THEN 5124 : GOTO 9380 5140 GOSUB 5122 : PRINT HEX(03);"THE DISK IS FULL - THE PROGRAM HAS TERMINATED." : PRINT "PRESS RETURN (EXEC) TO RETURN TO THE MENU." 5150 KEYIN K$,5160,5160 : GOTO 5150 5160 GOSUB '15 6170 GOSUB 8460 6180 IF F1=0THEN 6230 6190 IF U3>=U5THEN 6225 : DATA LOAD DA T#1,(U3,U3)Q$ : D=LEN(Q$)+1 : IF END THEN 6210 : GOTO 6260 6210 X$="HLDA010X" : STR(X$,6,1)=Z$ : OR (STR(X$,6,1),30) : LIMITS T#1,X$,U3,U5,U7 : GOTO 6190 6225 STOP "DATA FILE FULL." 6230 GOSUB '32("ENTER DOCUMENT NAME.",5) 6260 Q1$="ENTER DOCUMENT NAME." : N=5 6265 IF Q$=" "THEN 6362 : IF Q$="EDIT"THEN 6370 : IF Q$="edit"THEN 6370 : IF Q$="EDIT OFF"THEN 6380 : IF Q$="edit off"THEN 6380 : IF Q$="PAGE"THEN 6390 : IF Q$="page"THEN 6390 : IF Q$="STOP"THEN 6400 : IF Q$="stop"THEN 6400 : IF LEN(Q$)>5THEN 6362 : M$=Q$ : GOSUB 9090 : IF S2>0THEN 6340 : STR(Q$,LEN(Q$)+2)="IS NOT ON DISK." : GOSUB '34(Q$) : GOTO 6265 6340 GOSUB 8460 : PRINT HEX(010A);"COPYING ";M$ : RETURN 6362 GOSUB '34("INVALID NAME.") : GOTO 6265 6370 E1=1 : GOTO 6180 6380 E1=0 : GOTO 6180 6390 G$(1)="<PAGE>p" : MAT COPY G$()<1,50>TO C0$()<U2,W> : GOSUB 4960 : F2=SGN(F2) : IF U4>=U6THEN 6225 : DATA SAVE DA T#1,(U4,U4)"<PAGE>p",B$ : GOTO 6180 6400 IF U4>=U6THEN 6225 : DATA SAVE DA T#1,(U4,U4)END : F=VAL(T1$(S1)) : T1$(S1)=HEX(00) : GOSUB 5122 : PRINT HEX(03);"END OF PROGRAM" : GOSUB '15 6460 Q$="<MEMO>INSERT" : MAT SEARCHP$()<1,12*W>,=Q$TO E$()STEP W : IF E$(1)=A$THEN 4570 : C=256*VAL(E$(1))+VAL(STR(E$(1),2)) : E$(1)=" " : GOSUB 8460 : PRINT HEX(010A);"INSERT" : $GIO/005,(A000400D400A,I0$)P$()<C+12,W-12> : MAT COPY E$()TO P$()<C,W> : INIT(0D)R1$() : GOSUB 210 : GOSUB 980 : GOSUB 2590 6600 MAT COPY P$()<J0,C1-J0+1>TO P$() : D$=HEX(0F) : MAT SEARCHP$(),=D$TO E$()STEP W : IF E$(1)=A$THEN 6660 : J0=C1-J0+1 : RETURN 6660 STOP "ILLEGAL FORMAT ON DISK." 6800 C2=1921 : GOSUB 6170 : GOTO 4510 6880 PRINT HEX(03);TAB(15);"D O C U M E N T A S S E M B L Y" : RETURN CLEAR 6890 E$(1)=HEX(0F) : MAT COPY E$()TO P$()<C1,1> : GOTO 6460 8050 DEFFN'32(Q1$,N) : GOSUB 8460 8070 PRINT HEX(010A);Q1$;HEX(0D0A) : INIT(2D)Q$ : $GIO/005(40204020A000402F400D,I0$)Q$<1,N> : Q$=" " : D=1 : PRINT "? "; 8150 KEYIN D$,8160,8150 : GOTO 8150 8160 IF D$=HEX(0D)THEN 8330 : IF D$=HEX(08)THEN 8280 : IF D$=HEX(A1)THEN 8250 : IF D>NTHEN 8150 : IF D$=HEX(84)THEN 8350 : STR(Q$,D,1)=D$ 8220 PRINT D$; : D=D+1 : GOTO 8150 8250 PRINT HEX(0D0909); : D=1 : GOTO 8150 8280 IF D=1THEN 8150 : D=D-1 : STR(Q$,D,1)=" " : PRINT HEX(082008); : GOTO 8150 8330 PRINT HEX(0D0A) : RETURN 8350 OR (STR(Q$,D,1),80) : D$=STR(Q$,D,1) : GOTO 8220 8400 DEFFN'34(Q2$) : GOSUB 8460 : PRINT HEX(010A0A0A);Q2$ : GOTO 8070 8460 PRINT HEX(010A); : GOSUB 8490 : GOSUB 8490 8490 $GIO/005(400DA000400A,I$)B$()<1,W> : RETURN 8750 DEFFN'15 : LOAD DC T#1,"HLDA010A" 9090 T2=1 : FOR I=1TO 4 : DATA LOAD BA T#2,(U+I,B1$)N$() : MAT SEARCHN$()<1,250>,=STR(Q$,1,5)TO E$()STEP 5 : IF E$(1)=A$THEN 9160 : S2=50*(I-1)+(VAL(STR(E$(1),2))+4)/5 : ON F1GOTO 9150 : GOSUB '32("ENTER THE NUMBER OF RECORDS TO SKIP",3) 9143 IF Q$=" "THEN 9150 : IF NUM(Q$)=64THEN 9146 : GOSUB '34("INVALID NUMBER.") : GOTO 9143 9146 CONVERT Q$TO I 9147 IF T$(S2)=HEX(00)THEN 9150 : IF I<1THEN 9150 : S2=VAL(T$(S2)) : I=I-1 : GOTO 9147 9150 RETURN 9160 NEXT I : S2=0 : RETURN 9380 N=INT((N9-1)/50) : DATA LOAD BA T#3,(N+V+1,A)N$() : G1$(1)=N9$ : MAT COPY G1$()TO N$()<5*(N9-50*N)-4,5> : DATA SAVE BA T#3,(A-1,A)N$() : MAT COPY T1$()TO N$()<1,200> : BIN(STR(N$(13),9))=F : BIN(STR(N$(13),10))=V0 : BIN(STR(N$(13),11))=W : DATA SAVE BA T#3,(V,A)N$() : RETURN