home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programming
/
powerprogramming1994.iso
/
progtool
/
pibterm
/
pibt41s1.arc
/
EDITSUB2.MOD
< prev
next >
Wrap
Text File
|
1988-03-07
|
39KB
|
403 lines
PROCEDURE II1111II1I;VAR III1II1I11:BYTE;III11I1:INT;BEGIN III1II1I11:=I11I1III11I1I;IF I11II1.II11I
=I11I1I1I THEN EXIT;III11I1:=I11II1.I1I111111;I11I1III11I1I:=III11III;IF I1II1I11I THEN BEGIN
I1I1111I11(1,III11I1);I11II111I111;I111III1I1I1('Line ');END;I1I1111I11(6,III11I1);II1I1I11I(III1I.
II11I11I1II1,4);IF I1II1I11I THEN BEGIN I1I1111I11(12,III11I1);I111III1I1I1('Col ');END;I1I1111I11(16
,III11I1);II1I1I11I(III1I.I11I11,3);IF I1II1I11I THEN BEGIN IF III1I.I1II1 THEN BEGIN I1I1111I11(21,
III11I1);I111III1I1I1('Ins');END;IF III1I.IIIIII1II11I THEN BEGIN I1I1111I11(25,III11I1);
I111III1I1I1('Indent');END;I1I1111I11(34,III11I1);I111III1I1I1(III1I.I111I1I1);END;I11I1III11I1I:=
III1II1I11;I1II1I11I:=FALSE;END;PROCEDURE I1I11111I1I1(III11I1,III111IIIII1I:INT);VAR I1II1I,
III1III1I,I11I1IIIIII,II11I1I11II:INT;BEGIN I1II1I:=0;III1III1I:=0;I11I1IIIIII:=SUCC(III1I.
I111I1I11I1);II11I1I11II:=I11I1IIIIII+I11II1.I111I1II1-1;IF III111IIIII1I=III1I.I111I11111 THEN
BEGIN IF III1I.I11I1II1III1<=II11I1I11II THEN BEGIN III1III1I:=I11II1.I111I1II1;IF III1I.
I11I1II1III1<=I11I1IIIIII THEN BEGIN I1II1I:=1 END ELSE BEGIN I1II1I:=III1I.I11I1II1III1-III1I.
I111I1I11I1;END;END;END;IF III111IIIII1I=III1I.II111I1 THEN BEGIN IF III1I.I1I1II>=I11I1IIIIII THEN
BEGIN IF I1II1I=0 THEN I1II1I:=1;III1III1I:=III1I.I1I1II;IF III1III1I>II11I1I11II THEN III1III1I:=
II11I1I11II;END;END;IF I1II1I<>0 THEN BEGIN IF III1III1I<>0 THEN BEGIN I1I1111I11(I1II1I,III11I1);
IIII11I1(III1III1I-I1II1I+1,I111IIII);END;END;END;PROCEDURE II11II1;LABEL II11I1IIII111;VAR I11I1111
,II11III11I1,II11I11I1II1,III11I1,I111I1II1,II1II11I11,I1I11I1IIIII1:INT;IIII11II1111:I11;BEGIN
II1111II1I;II111IIII:=FALSE;I11I1III11I1I:=I1III1II;IF I11I11I1III THEN BEGIN III11I1:=1;
II11I11I1II1:=III1I.II11I11I1II1;IIII11II1111.I1I:=III1I.I1II1111II1.I1I;IF III1I.III11I1>III1I.
II11I11I1II1 THEN III1I.III11I1:=III1I.II11I11I1II1;I11I1111:=III1I.II11I11I1II1-III1I.III11I1+1;
II11III11I1:=I11I1111+I11II1.II11IIII1I1-1;III1IIIII(I11I1111);WHILE I11I1111<=II11III11I1 DO BEGIN
I1I1111I11(1,III11I1);IF III1I.II11111 THEN IF I11I1111>III1I.I111I11111 THEN IF I11I1111<III1I.
II111I1 THEN I11I1III11I1I:=I111IIII;IF I11I1111=II11I11I1II1 THEN BEGIN I1I111II111(I1IIIIII1I,
II11II1II,III1I.I111I1I11I1);END ELSE BEGIN I111I1II1:=I11I11II11;II1II11I11:=SUCC(III1I.
I111IIIIIII1-III1I.I1II1111II1.I1II1II11111);IF II1II11I11>=0 THEN IF II1II11I11<I111I1II1 THEN
I111I1II1:=II1II11I11;I1I111II111(III1I.I1II1111II1.I1I^,I111I1II1,III1I.I111I1I11I1);END;
I11I1III11I1I:=I1III1II;IF III1I.II11111 THEN I1I11111I1I1(III11I1,I11I1111);I11I1111:=SUCC(I11I1111
);III11I1:=SUCC(III11I1);IF NOT I1II1I11 THEN GOTO II11I1IIII111;END;II11I1IIII111: WHILE III11I1<=
I11II1.II11IIII1I1 DO BEGIN I1I1111I11(1,III11I1);I11II111I111;III11I1:=SUCC(III11I1);END;III1I.
II11I11I1II1:=II11I11I1II1;III1I.I1II1111II1.I1I:=IIII11II1111.I1I;END ELSE IF I111111I11I11 THEN
BEGIN I1I1111I11(1,III1I.III11I1);IF III1I.II11111 THEN IF III1I.II11I11I1II1>III1I.I111I11111 THEN
IF III1I.II11I11I1II1<III1I.II111I1 THEN I11I1III11I1I:=I111IIII;I1I111II111(I1IIIIII1I,II11II1II,
III1I.I111I1I11I1);IF III1I.II11111 THEN I1I11111I1I1(III1I.III11I1,III1I.II11I11I1II1);END;
I11I11I1III:=FALSE;I111111I11I11:=FALSE;II111IIII:=TRUE;END;PROCEDURE II11I1I1(IIIIII1II:INT);VAR
I111III11I1II,I1III1I11III1:INT;BEGIN I111III11I1II:=I11I11II11-I11II1.I111I1II1+III1I.III11I;
I1III1I11III1:=III1I.I11I11+IIIIII1II;IF I1III1I11III1>I111III11I1II THEN I1III1I11III1:=
I111III11I1II ELSE IF I1III1I11III1<III1I.III11I THEN I1III1I11III1:=III1I.III11I;III1I.I111I1I11I1
:=III1I.I111I1I11I1+(I1III1I11III1-III1I.I11I11);III1I.I11I11:=I1III1I11III1;I11I11I1III:=TRUE;END;
PROCEDURE II1I11(III11I:INT);BEGIN III1I.III11I:=III11I;I11I11I1III:=TRUE;III1I.I111I1I11I1:=III1I.
I11I11-III1I.III11I;END;PROCEDURE I111II1II1I(I11I1III1111:INT);BEGIN III1I.I11I11:=III1I.I11I11+
I11I1III1111;IF III1I.I11I11<1 THEN III1I.I11I11:=1;IF III1I.I11I11>I11I11II11 THEN III1I.I11I11:=
I11I11II11;III1I.III11I:=III1I.III11I+I11I1III1111;IF III1I.III11I>I11II1.I111I1II1 THEN II1I11(
I11II1.I111I1II1)ELSE IF III1I.III11I<1 THEN II1I11(1);END;FUNCTION I111I1I(I111I:INT):INT;BEGIN IF
I111I>II11II1II THEN I111I:=II11II1II+IIIIII1;IF I111I=0 THEN I111I:=1;I111I1I:=I111I;END;FUNCTION
I111111111I(I111III1,I111I:INT):I1I;VAR IIII11II1111:I11;BEGIN II11IIII(I111III1);IIII11II1111.I1I:=
III1I.I1II1111II1.I1I;IIII11II1111.I1II1II11111:=PRED(IIII11II1111.I1II1II11111+I111I1I(I111I));
I111111111I:=IIII11II1111.I1I;END;PROCEDURE II11III111III(I1II1II11111:INT);LABEL I1II1I1I1;BEGIN
III111I1;WHILE III1I.I1II1111II1.I1II1II11111<=I1II1II11111 DO BEGIN IF NOT I1II1I11 THEN BEGIN
II1I1I11I1;GOTO I1II1I1I1;END;END;IF I11I1I1II1I THEN;I1II1I1I1: I111II1II1I(SUCC(I1II1II11111-III1I
.I1II1111II1.I1II1II11111)-III1I.I11I11);IF III1I.III11I1>III1I.II11I11I1II1 THEN III1I.III11I1:=
III1I.II11I11I1II1;END;FUNCTION I1III1II111(VAR II1111II1:II1II1I1I):INT;VAR I11III1I:FILE;
II111II1111II:FILE;I1I11111III1,I1I1I,I1IIII1111II:Word;I1I111II1III1:II1II1I1I;IIII11:INTEGER;
II1I111II1:INTEGER;BEGIN I1III1II111:=0;II1111II1:=UpperCase(II1111II1);ASSIGN(I11III1I,II1111II1);
RESET(I11III1I,1);IF (INT24RESULT=0) THEN BEGIN CLOSE(I11III1I);IIII11:=POS('.',II1111II1);IF (
IIII11=0) THEN I1I111II1III1:=II1111II1+'.BAK'ELSE I1I111II1III1:=COPY(II1111II1,1,IIII11)+'BAK';IF
(I1I111II1III1<>II1111II1) THEN BEGIN ASSIGN(II111II1111II,I1I111II1III1);RESET(II111II1111II);IF (
INT24RESULT=0) THEN BEGIN CLOSE(II111II1111II);II1I111II1:=INT24RESULT;ERASE(II111II1111II);
II1I111II1:=INT24RESULT;END ELSE BEGIN CLOSE(II111II1111II);II1I111II1:=INT24RESULT;END;RENAME(
I11III1I,I1I111II1III1);II1I111II1:=INT24RESULT;END;END ELSE BEGIN CLOSE(I11III1I);II1I111II1:=
INT24RESULT;END;ASSIGN(I11III1I,II1111II1);REWRITE(I11III1I,1);IF INT24RESULT<>0 THEN BEGIN
I1III1II111:=II;END ELSE BEGIN I1I11111III1:=0;I1IIII1111II:=III1I.I1IIII1111II;IF I1IIII1111II<>0
THEN BEGIN BLOCKWRITE(I11III1I,III1I.I1III.PTR^,III1I.I1IIII1111II,I1IIII1111II);I1I11111III1:=
INT24RESULT;END;CLOSE(I11III1I);I1I1I:=INT24RESULT;IF (I1I11111III1<>0) OR (I1IIII1111II<>III1I.
I1IIII1111II) THEN BEGIN I1III1II111:=I1III111II1;END ELSE IF I1I1I<>0 THEN BEGIN I1III1II111:=
I11I1II1;END;END;END;PROCEDURE I11111I1III;VAR I11I1II1IIII:BOOLEAN;BEGIN I11I1II1IIII:=III1I.
II11111;III1I.II11111:=FALSE;IF (III1I.II111I1>0) AND (III1I.I1I1II>0) THEN IF (III1I.I111I11111>0)
AND (III1I.I11I1II1III1>0) THEN IF III1I.I111I11111<III1I.II111I1 THEN III1I.II11111:=TRUE ELSE IF
III1I.I111I11111=III1I.II111I1 THEN IF III1I.I11I1II1III1<=III1I.I1I1II THEN III1I.II11111:=TRUE;IF
(III1I.II11111) OR (I11I1II1IIII<>III1I.II11111) THEN I11I11I1III:=TRUE;IF III1I.II11111 THEN III1I.
IIII11II11III:=FALSE;END;PROCEDURE I1III11II(I1IIII1111II:INT);VAR III11I1IIII:I11;II1111I:INT;
BEGIN II1111I:=III1I.III11I1;III11I1IIII.PTR:=III1I.I1II1111II1.PTR;III1I.I111I11111:=III1I.
II11I11I1II1;III1I.I11I1II1III1:=III1I.I11I11;II11III111III(III1I.I1II1111II1.I1II1II11111+III1I.
I11I11+I1IIII1111II-2);III1I.II111I1:=III1I.II11I11I1II1;III1I.I1I1II:=III1I.I11I11;III1I.III11I1:=
II1111I;III1I.I1II1111II1.PTR:=III11I1IIII.PTR;III1I.II11I11I1II1:=III1I.I111I11111;I111II1II1I(
III1I.I11I1II1III1-III1I.I11I11);I11111I1III;END;FUNCTION I1II1I11II11I:BOOLEAN;BEGIN I1II1I11II11I
:=FALSE;IF (III1I.I111I11111<III1I.II11I11I1II1) OR ((III1I.I111I11111=III1I.II11I11I1II1) AND (
III1I.I11I1II1III1<=III1I.I11I11)) THEN IF (III1I.II111I1>III1I.II11I11I1II1) OR ((III1I.II111I1=
III1I.II11I11I1II1) AND (III1I.I1I1II>=III1I.I11I11)) THEN I1II1I11II11I:=TRUE;END;PROCEDURE
II11II1III;BEGIN IF II11II1II>0 THEN BEGIN IF III1I.I11I11<=II11II1II THEN BEGIN IF III1I.I11I11<
II11II1II THEN BEGIN MOVE(I1IIIIII1I[SUCC(III1I.I11I11)],I1IIIIII1I[III1I.I11I11],II11II1II-III1I.
I11I11);END;II11II1II:=PRED(II11II1II);III1I1II:=TRUE;I111111I11I11:=TRUE;IF III1I.II11I11I1II1=
III1I.I111I11111 THEN IF III1I.I11I11<III1I.I11I1II1III1 THEN III1I.I11I1II1III1:=PRED(III1I.
I11I1II1III1);IF III1I.II11I11I1II1=III1I.II111I1 THEN IF III1I.I11I11<III1I.I1I1II THEN III1I.
I1I1II:=PRED(III1I.I1I1II);END;END;END;FUNCTION I1III11:BOOLEAN;BEGIN I1III11:=FALSE;IF I11I1I1II1I
THEN BEGIN III1I.III11I1:=III1I.III11I1-1;IF III1I.III11I1<1 THEN BEGIN III1I.III11I1:=1;I11I11I1III
:=TRUE;END;I1III11:=TRUE;END;END;FUNCTION I111I111III:BOOLEAN;BEGIN I111I111III:=FALSE;IF
II1II1111I THEN BEGIN III1I.III11I1:=III1I.III11I1+1;IF III1I.III11I1>I11II1.II1I1III1I THEN BEGIN
III1I.III11I1:=I11II1.II1I1III1I;I11I11I1III:=TRUE;END;I111I111III:=TRUE;END;END;PROCEDURE
I1I11I11II1I;BEGIN IF III1I.II11I11I1II1>III1I.III11I1 THEN IF I11I1I1II1I THEN I11I11I1III:=TRUE;
END;PROCEDURE I11I1111II1I1;BEGIN IF II1II1111I THEN I11I11I1III:=TRUE;END;PROCEDURE II1111(III11I1:
INT);BEGIN IF III1I.II11I11I1II1<III11I1 THEN III1I.III11I1:=III1I.II11I11I1II1 ELSE BEGIN III1I.
III11I1:=III11I1;I11I11I1III:=TRUE;END;END;PROCEDURE I11I1III(I111III1,III11I1,I111I:INT);BEGIN
II11IIII(I111III1);II1111(III11I1);I111II1II1I(I111I-III1I.I11I11);I11I11I1III:=TRUE;END;PROCEDURE
III1II;BEGIN WHILE III1I.III11I1>1 DO IF NOT I1III11 THEN EXIT;END;PROCEDURE I1I1III111I1;BEGIN
WHILE III1I.III11I1<I11II1.II1I1III1I DO IF NOT I111I111III THEN EXIT;END;PROCEDURE I11III111;VAR
I11I1III1111:INT;BEGIN IF III1I.II11I11I1II1<=III1I.III11I1 THEN BEGIN I11I1III1111:=1;III1I.III11I1
:=1;END ELSE BEGIN I11I1III1111:=III1I.II11I11I1II1-I11II1.II11IIII1I1+1;IF I11I1III1111<III1I.
III11I1 THEN I11I1III1111:=III1I.III11I1;I11I11I1III:=TRUE;END;II11IIII(I11I1III1111);END;PROCEDURE
I1IIII11;BEGIN II11IIII(III1I.II11I11I1II1+I11II1.II11IIII1I1-1);I11I11I1III:=TRUE;END;PROCEDURE
II1III1I1I;BEGIN IF III1I.III11I1<I11II1.II1I1III1I THEN II1111(SUCC(III1I.III11I1))ELSE
I1I11I11II1I;END;PROCEDURE II1111I1I1II;BEGIN IF III1I.III11I1>1 THEN II1111(PRED(III1I.III11I1))
ELSE I11I1111II1I1;END;PROCEDURE II11111II;BEGIN I111II1II1I(1);END;PROCEDURE IIIIIII1III11;BEGIN
I111II1II1I(-1);END;PROCEDURE I1I11III1I1II;BEGIN I111II1II1I(1-III1I.I11I11);END;PROCEDURE
II1111I1111II;BEGIN I111II1II1I(SUCC(II11II1II)-III1I.I11I11);END;PROCEDURE I11I1111I;BEGIN IF III1I
.II11I11I1II1<>1 THEN BEGIN II11IIII(1);I11I11I1III:=TRUE;END;II1111(1);I1I11III1I1II;END;PROCEDURE
III1III1II1;VAR I1I11I1IIIII1:INT;BEGIN I1I11I1IIIII1:=III1I.II11I11I1II1;II11IIII(MAXINT);IF III1I.
II11I11I1II1<>I1I11I1IIIII1 THEN I11I11I1III:=TRUE;II1111(I11II1.II1I1III1I);I1I11III1I1II;END;
PROCEDURE I1III1111;BEGIN II11I1I1(-1);END;PROCEDURE II11III1I;BEGIN II11I1I1(1);END;PROCEDURE
I111II1II;LABEL 9999;VAR III1II1111:INT;BEGIN III1II1111:=PRED(III1I.I11I11);IF III1II1111>
II11II1II THEN III1II1111:=II11II1II;IF III1II1111<=1 THEN BEGIN IF I1III11 THEN II1111I1111II;EXIT;
END;IF NOT(I1IIIIII1I[III1II1111] IN II1II1I1) THEN BEGIN REPEAT III1II1111:=PRED(III1II1111);IF
III1II1111=1 THEN BEGIN IF I1IIIIII1I[III1II1111] IN II1II1I1 THEN I1I11III1I1II ELSE IF I1III11
THEN II1111I1111II;EXIT;END;UNTIL I1IIIIII1I[III1II1111] IN II1II1I1;END;REPEAT III1II1111:=PRED(
III1II1111);IF III1II1111=1 THEN BEGIN IF NOT(I1IIIIII1I[III1II1111] IN II1II1I1) THEN GOTO 9999
ELSE BEGIN I1I11III1I1II;EXIT;END;END;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);9999: III1II1111
:=SUCC(III1II1111);I111II1II1I(III1II1111-III1I.I11I11);END;PROCEDURE I1I1II1II;VAR III1II1111:INT;
BEGIN IF (III1I.I11I11=II11II1II) AND (I1IIIIII1I[III1I.I11I11]<>' ') THEN BEGIN II1111I1111II;EXIT;
END;IF (III1I.I11I11=0) OR (III1I.I11I11>=II11II1II) THEN BEGIN IF I111I111III THEN BEGIN
I1I11III1I1II;IF (II11II1II>0) AND (I1IIIIII1I[III1I.I11I11] IN II1II1I1) THEN EXIT;I1I1II1II;END;
EXIT;END;III1II1111:=III1I.I11I11;IF I1IIIIII1I[III1II1111] IN II1II1I1 THEN BEGIN REPEAT III1II1111
:=SUCC(III1II1111);IF III1II1111>=II11II1II THEN BEGIN II1111I1111II;EXIT;END;UNTIL NOT(I1IIIIII1I[
III1II1111] IN II1II1I1);END;REPEAT III1II1111:=SUCC(III1II1111);IF III1II1111>=II11II1II THEN
BEGIN II1111I1111II;EXIT;END;UNTIL I1IIIIII1I[III1II1111] IN II1II1I1;I111II1II1I(III1II1111-III1I.
I11I11);END;PROCEDURE III11I11II11;VAR I111III,III1I1,III1II1IIIIII:INT;BEGIN I111III:=III1I.
II11I11I1II1;III1I1:=III1I.III11I1;III1II1IIIIII:=III1I.I11I11;I11I1III(III1I.I111III,III1I.III1I1,
III1I.III1II1IIIIII-III1I.I11I11);III1I.I111III:=I111III;III1I.III1I1:=III1I1;III1I.III1II1IIIIII:=
III1II1IIIIII;END;PROCEDURE II1I1111II1;BEGIN III1I1II:=TRUE;I111111I11I11:=TRUE;I1IIIIII1I[III1I.
I11I11]:=I1III111.I1III111.CH;IF III1I.I11I11>II11II1II THEN II11II1II:=III1I.I11I11;II11111II;END;
PROCEDURE III1III1I1I11;VAR IIII1II1I1I1:INT;BEGIN IIII1II1I1I1:=III1I.I11I11-II11II1II;IF
IIII1II1I1I1>0 THEN BEGIN FILLCHAR(I1IIIIII1I[SUCC(II11II1II)],IIII1II1I1I1,' ');II11II1II:=
II11II1II+IIII1II1I1I1;END;END;PROCEDURE I11II1IIII1;BEGIN III1III1I1I11;II1I1111II1;END;PROCEDURE
I1I111I1II;VAR I111I1II1:INT;BEGIN IF III1I.I11I11=I11I11II11 THEN BEGIN II1I1111II1;EXIT;END;IF
III1I.II11I11I1II1=III1I.I111I11111 THEN IF III1I.I11I11<=III1I.I11I1II1III1 THEN III1I.I11I1II1III1
:=SUCC(III1I.I11I1II1III1);IF III1I.II11I11I1II1=III1I.II111I1 THEN IF III1I.I11I11<=III1I.I1I1II
THEN III1I.I1I1II:=SUCC(III1I.I1I1II);IF III1I.I11I11>II11II1II THEN BEGIN I11II1IIII1;EXIT;END;
I111I1II1:=II11II1II-III1I.I11I11+1;IF II11II1II=I11I11II11 THEN I111I1II1:=PRED(I111I1II1);MOVE(
I1IIIIII1I[III1I.I11I11],I1IIIIII1I[SUCC(III1I.I11I11)],I111I1II1);IF II11II1II<I11I11II11 THEN
II11II1II:=SUCC(II11II1II);II1I1111II1;END;PROCEDURE IIIIIIIII1;BEGIN IF III1I.I11I11>=II11II1II
THEN BEGIN I11II1IIII1;EXIT;END;II1I1111II1;END;PROCEDURE II1III1II1II1;BEGIN IF III1I.I1II1 THEN
I1I111I1II ELSE IIIIIIIII1;END;PROCEDURE II1II1I;BEGIN II11II11(I1III111);II1III1II1II1;END;
PROCEDURE I111I1II11I1;BEGIN IF III1I.II11I11I1II1<III1I.I111I11111 THEN III1I.I111I11111:=SUCC(
III1I.I111I11111);IF III1I.II11I11I1II1<III1I.II111I1 THEN III1I.II111I1:=SUCC(III1I.II111I1);IF
III1I.II11I11I1II1=III1I.I111I11111 THEN BEGIN IF III1I.I11I11<=III1I.I11I1II1III1 THEN BEGIN III1I.
I111I11111:=SUCC(III1I.I111I11111);III1I.I11I1II1III1:=III1I.I11I1II1III1-III1I.I11I11+1;END;END;IF
III1I.II11I11I1II1=III1I.II111I1 THEN BEGIN IF III1I.I11I11<=III1I.I1I1II THEN BEGIN III1I.II111I1:=
SUCC(III1I.II111I1);III1I.I1I1II:=III1I.I1I1II-III1I.I11I11+1;END;END;I1III111.I1III111.CH:=
I1I1I111II1I;I1I111I1II;I1III111.I1III111.CH:=I11II111;I1I111I1II;I111II1II1I(-2);III111I1;
II1I1I11I1;I11I11I1III:=TRUE;END;PROCEDURE II1111111I1;VAR III1II1111:INT;BEGIN IF NOT III1I.I1II1
THEN BEGIN IF I111I111III THEN;I1I11III1I1II;END ELSE BEGIN IF III1I.IIIIII1II11I THEN BEGIN
III1II1111:=I1III1I1I(I1IIIIII1I,II11II1II);IF III1I.I11I11<=III1II1111 THEN III1II1111:=0;END;
I111I1II11I1;IF NOT I111I111III THEN BEGIN I111I1II11I1;IF I111I111III THEN;END;I1I11III1I1II;IF
III1I.IIIIII1II11I THEN BEGIN I1III111.I1III111.CH:=' ';WHILE III1I.I11I11<III1II1111 DO I1I111I1II;
END;END;END;PROCEDURE I1IIIII1I11II;BEGIN WHILE III1I.I11I11<=II11II1II DO II11II1III;END;PROCEDURE
III1I11II;BEGIN IF III1I.II11I11I1II1<III1I.I111I11111 THEN BEGIN III1I.I111I11111:=PRED(III1I.
I111I11111);IF III1I.II11I11I1II1=III1I.I111I11111 THEN III1I.I11I1II1III1:=III1I.I11I1II1III1+III1I
.I11I11-1;END;IF III1I.II11I11I1II1<III1I.II111I1 THEN BEGIN III1I.II111I1:=PRED(III1I.II111I1);IF
III1I.II11I11I1II1=III1I.II111I1 THEN III1I.I1I1II:=III1I.I1I1II+III1I.I11I11-1;END;IF NOT III1I.
IIII11II11III THEN I11111I1III;III1III1I1I11;I1IIIII1I11II;IIIIII1:=0;I1I111III111:=I1I11;III1I1II:=
TRUE;III111I1;II1I1I11I1;I11I11I1III:=TRUE;END;PROCEDURE I1I1I1I1III;BEGIN IF III1I.I11I11>1 THEN
BEGIN IIIIIII1III11;II11II1III;END ELSE IF I1III11 THEN BEGIN II1111I1111II;III1I11II;END;END;
PROCEDURE I11111II;BEGIN IF (II11II1II=0) OR (III1I.I11I11>II11II1II) THEN III1I11II ELSE II11II1III
;END;PROCEDURE I111I1I1I;BEGIN IF (II11II1II=0) OR (III1I.I11I11>II11II1II) THEN III1I11II ELSE
BEGIN IF I1IIIIII1I[III1I.I11I11] IN II1II1I1 THEN BEGIN WHILE (III1I.I11I11<=II11II1II) AND (
I1IIIIII1I[III1I.I11I11] IN II1II1I1) DO II11II1III;END ELSE IF I1IIIIII1I[III1I.I11I11]=' 'THEN
BEGIN WHILE (III1I.I11I11<=II11II1II) AND (I1IIIIII1I[III1I.I11I11]=' ') DO II11II1III;END ELSE
II11II1III;END;END;PROCEDURE I11III1I1I1I1;LABEL I11111II1I1;BEGIN IF (III1I.II11I11I1II1=III1I.
I111I11111) AND (III1I.II11I11I1II1=III1I.II111I1) THEN BEGIN III1I.I111I11111:=0;III1I.I11I1II1III1
:=0;III1I.II111I1:=0;III1I.I1I1II:=0;GOTO I11111II1I1;END;IF III1I.II11I11I1II1=III1I.I111I11111
THEN BEGIN III1I.I11I1II1III1:=1;END ELSE IF III1I.II11I11I1II1<III1I.I111I11111 THEN BEGIN III1I.
I111I11111:=PRED(III1I.I111I11111);END;IF III1I.II11I11I1II1<=III1I.II111I1 THEN BEGIN III1I.II111I1
:=PRED(III1I.II111I1);IF III1I.II11I11I1II1=III1I.II111I1 THEN III1I.I1I1II:=I11I11II11;END;
I11111II1I1: IF NOT III1I.IIII11II11III THEN I11111I1III;I1I1111I;I11I11I1III:=TRUE;END;PROCEDURE
IIII1;BEGIN III1I.I111I11111:=0;III1I.I11I1II1III1:=0;III1I.II111I1:=0;III1I.I1I1II:=0;III1I.II11111
:=FALSE;III1I.IIII11II11III:=FALSE;I11I11I1III:=TRUE;END;PROCEDURE I11I1I11II;BEGIN III1I.
IIII11II11III:=NOT III1I.IIII11II11III;IF NOT III1I.IIII11II11III THEN I11111I1III ELSE III1I.
II11111:=FALSE;I11I11I1III:=TRUE;END;PROCEDURE I11I11III1I11;BEGIN III1I.I111I11111:=III1I.
II11I11I1II1;III1I.I11I1II1III1:=III1I.I11I11;I11111I1III;END;PROCEDURE I111I1I1I111;BEGIN III1I.
II111I1:=III1I.II11I11I1II1;III1I.I1I1II:=PRED(III1I.I11I11);IF III1I.I11I11=1 THEN BEGIN III1I.
II111I1:=PRED(III1I.II11I11I1II1);III1I.I1I1II:=I11I11II11;IF III1I.II111I1=0 THEN III1I.I1I1II:=0;
END;I11111I1III;END;PROCEDURE II11IIII1111;LABEL I111II1I,II1IIII1;VAR III1II1111:INT;BEGIN IF
I1IIIIII1I[III1I.I11I11] IN II1II1I1 THEN BEGIN III1I.I111I11111:=III1I.II11I11I1II1;III1I.II111I1:=
III1I.II11I11I1II1;III1I.II11111:=TRUE;III1II1111:=III1I.I11I11;REPEAT III1II1111:=PRED(III1II1111);
IF III1II1111=0 THEN GOTO I111II1I;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);I111II1I: III1I.
I11I1II1III1:=SUCC(III1II1111);III1II1111:=III1I.I11I11;REPEAT III1II1111:=SUCC(III1II1111);IF
III1II1111>II11II1II THEN GOTO II1IIII1;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);II1IIII1:
III1I.I1I1II:=PRED(III1II1111);I111111I11I11:=TRUE;END;END;PROCEDURE II1I1IIII111I;LABEL II11II1I,
I1I1II1I11,I1I111,9999;VAR I11III1I:FILE;II1111II1:II1II1I1I;II11I11II1I1:BYTE ABSOLUTE II1111II1;
I1I11111III1,I1IIII1111II,I11IIII11I:Word;II1I111I,II1II1111II1:I11;IIIII1III1,II1I11I11111I:BOOLEAN
;I1IIII1II11II:INT;III11I1IIII:I11;BEGIN III1III1I1I11;III111I1;I11I11I1III:=TRUE;II1I111I.I1I:=
I111111111I(III1I.II11I11I1II1,III1I.I11I11);III1I.II11111:=FALSE;II1I11I11111I:=FALSE;II11II1I:
II11I11II1I1:=0;IIII1I1I1I1('Read block from file: ',II1111II1);III111I111I(II1111II1,III1I.
III111I111I);IF II11I11II1I1=0 THEN GOTO 9999;ASSIGN(I11III1I,II1111II1);RESET(I11III1I,1024);IF
INT24RESULT<>0 THEN BEGIN I1111II1I11('File '+II1111II1+' not found.');GOTO II11II1I;END;
I1IIII1111II:=FILESIZE(I11III1I);IF I1IIII1111II>=64 THEN GOTO I1I1II1I11;RESET(I11III1I,1);
I1IIII1111II:=FILESIZE(I11III1I);IF I1IIII1111II>III1I.I111I1111 THEN GOTO I1I1II1I11;IF
I1IIII1111II=0 THEN BEGIN I1111II1I11('Empty file.');GOTO I1I111;END;II1I111(II1I111I.I1II1II11111,
I1IIII1111II);BLOCKREAD(I11III1I,II1I111I.PTR^,I1IIII1111II,I11IIII11I);I1I11111III1:=INT24RESULT;
CLOSE(I11III1I);IF I1I11111III1<>0 THEN BEGIN I1111II1I11('Read error.');GOTO 9999;END;II1II1111II1.
PTR:=II1I111I.PTR;II1II1111II1.I1II1II11111:=II1II1111II1.I1II1II11111+I1IIII1111II-1;IF
II1II1111II1.I1I^ =^Z THEN BEGIN II1I111(SUCC(II1II1111II1.I1II1II11111),-1);I1IIII1111II:=PRED(
I1IIII1111II);II1II1111II1.I1II1II11111:=PRED(II1II1111II1.I1II1II11111);END;II1I11I11111I:=TRUE;
GOTO I1I111;I1I1II1I11: I1111II1I11('File too large.');I1I111: CLOSE(I11III1I);9999: IF
II1I11I11111I THEN I1III11II(I1IIII1111II);II1I1I11I1;END;PROCEDURE I11I111I1II11;BEGIN IF III1I.
I111I11111<>0 THEN BEGIN I11I1III(III1I.I111I11111,I11II1.II11IIII1I1 DIV 2,III1I.I11I1II1III1);END;
END;PROCEDURE I1I1111I1;BEGIN IF III1I.II111I1<>0 THEN BEGIN I11I1III(III1I.II111I1,I11II1.
II11IIII1I1 DIV 2,III1I.I1I1II);END;END;FUNCTION I111I111II:BOOLEAN;VAR III1I111II11,I11II,
I1IIII1II1,I1IIII1I11I:I11;II1I1I111I111,I1I1I1:INT;BEGIN I111I111II:=FALSE;IF III1I.II11111 THEN
BEGIN IF NOT I1II1I11II11I THEN BEGIN III1III1I1I11;III111I1;III1I111II11.I1I:=III1I.I1II1111II1.I1I
;II1I1I111I111:=III1I.II11I11I1II1;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);
I1IIII1II1.I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.
II111I1,III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;III1I.II11I11I1II1
:=II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.I1I;IF I1I1I1>III1I.I111I1111 THEN BEGIN
I1111II1I11('Block to large.');END ELSE BEGIN II1I111(I11II.I1II1II11111,I1I1I1);IF I1IIII1II1.
I1II1II11111>I11II.I1II1II11111 THEN BEGIN I1IIII1II1.I1II1II11111:=I1IIII1II1.I1II1II11111+I1I1I1;
I1IIII1I11I.I1II1II11111:=I1IIII1I11I.I1II1II11111+I1I1I1;END;IIII1I1I(I1IIII1II1.I1I^,I11II.I1I^,
I1I1I1);I1III11II(I1I1I1);I11I11I1III:=TRUE;I111I111II:=TRUE;END;II1I1I11I1;END;END;END;PROCEDURE
III111III1;VAR III1I111II11,I11II,I1IIII1II1,I1IIII1I11I:I11;I1I1I1,II1I1I111I111:INT;RESET:BOOLEAN;
BEGIN IF III1I.II11111 THEN BEGIN II1I1I111I111:=III1I.II11I11I1II1;III111I1;III1I111II11.PTR:=III1I
.I1II1111II1.PTR;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);I1IIII1II1.I1I:=I111111111I
(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,III1I.I1I1II);
I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;RESET:=FALSE;III1I.II11I11I1II1:=
II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;IF I11II.I1II1II11111>I1IIII1I11I.
I1II1II11111 THEN BEGIN I11II.I1II1II11111:=I11II.I1II1II11111-I1I1I1;RESET:=TRUE;END ELSE IF I11II.
I1II1II11111>=I1IIII1II1.I1II1II11111 THEN BEGIN I11I111I1II11;END;II1I111(I1IIII1I11I.I1II1II11111+1
,-I1I1I1);IF RESET THEN BEGIN II11IIII(1);II11III111III(I11II.I1II1II11111);END;IIII1;I11I11I1III:=
TRUE;II1I1I11I1;END;END;FUNCTION I11IIIIII:BOOLEAN;VAR III1I111II11,I11II,I1IIII1II1,I1IIII1I11I:I11
;II1I1I111I111,I1I1I1:INT;RESET:BOOLEAN;BEGIN I11IIIIII:=FALSE;IF III1I.II11111 THEN BEGIN IF NOT
I1II1I11II11I THEN BEGIN III1III1I1I11;III111I1;III1I111II11.I1I:=III1I.I1II1111II1.I1I;
II1I1I111I111:=III1I.II11I11I1II1;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);I1IIII1II1
.I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,
III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;III1I.II11I11I1II1:=
II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.I1I;IF I1I1I1>III1I.I111I1111 THEN BEGIN
I1111II1I11('Block to large.');END ELSE BEGIN RESET:=I11II.I1II1II11111>I1IIII1I11I.I1II1II11111;
II1I111(I11II.I1II1II11111,I1I1I1);IF I1IIII1II1.I1II1II11111>I11II.I1II1II11111 THEN BEGIN
I1IIII1II1.I1II1II11111:=I1IIII1II1.I1II1II11111+I1I1I1;I1IIII1I11I.I1II1II11111:=I1IIII1I11I.
I1II1II11111+I1I1I1;END;IIII1I1I(I1IIII1II1.I1I^,I11II.I1I^,I1I1I1);II1I111(I1IIII1I11I.I1II1II11111
+1,-I1I1I1);IF RESET THEN BEGIN I11II.I1II1II11111:=I11II.I1II1II11111-I1I1I1;II11IIII(1);
II11III111III(I11II.I1II1II11111);END;I1III11II(I1I1I1);I11I11I1III:=TRUE;I11IIIIII:=TRUE;END;
II1I1I11I1;END;END;END;PROCEDURE I1III111IIII1;LABEL II11II1I,9999;VAR I11III1I:FILE;II1111II1:
II1II1I1I;II11I11II1I1:BYTE ABSOLUTE II1111II1;BEGIN III111I1;II11I11II1I1:=0;II11II1I: II11I11II1I1
:=0;IIII1I1I1I1('Save File as (<CR> to use current filename): ',II1111II1);III111I111I(II1111II1,
III1I.III111I111I);IF II11I11II1I1=0 THEN II1111II1:=III1I.I111I1I1;ASSIGN(I11III1I,II1111II1);RESET
(I11III1I,1);IF INT24RESULT=0 THEN BEGIN IF II11I1I111II('Overwrite existing file (Y/N)? ',
I11I111I1I1)<>'Y'THEN BEGIN CLOSE(I11III1I);GOTO II11II1I;END;END;REWRITE(I11III1I,1);IF INT24RESULT
<>0 THEN BEGIN I1111II1I11('Error opening file '+II1111II1);GOTO II11II1I;END;CLOSE(I11III1I);IF
INT24RESULT<>0 THEN;IF I1III1II111(II1111II1)<>0 THEN I1111II1I11('Error writing file '+II1111II1);9999
: II1I1I11I1;END;PROCEDURE I11II1I1I;LABEL II11II1I,9999;VAR I11III1I:FILE;II1111II1:II1II1I1I;
II11I11II1I1:BYTE ABSOLUTE II1111II1;III1I111II11,I1IIII1I11I,I1IIII1II1:I11;I1I1I1,II1I1I111I111:
INT;BEGIN IF III1I.II11111 THEN BEGIN II1I1I111I111:=III1I.II11I11I1II1;III1I111II11.I1I:=III1I.
I1II1111II1.I1I;III111I1;II11I11II1I1:=0;II11II1I: II11I11II1I1:=0;IIII1I1I1I1(
'Write block to file: ',II1111II1);III111I111I(II1111II1,III1I.III111I111I);IF II11I11II1I1=0 THEN
GOTO 9999;ASSIGN(I11III1I,II1111II1);RESET(I11III1I,1);IF INT24RESULT=0 THEN BEGIN IF II11I1I111II(
'Overwrite existing file (Y/N)? ',I11I111I1I1)<>'Y'THEN GOTO II11II1I;END;REWRITE(I11III1I,1);IF
INT24RESULT<>0 THEN BEGIN I1111II1I11('Error opening file '+II1111II1);GOTO II11II1I;END;I1IIII1II1.
I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,
III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;BLOCKWRITE(I11III1I,
I1IIII1II1.PTR^,I1I1I1);IF INT24RESULT<>0 THEN I1111II1I11('Error writing file.');CLOSE(I11III1I);
IF INT24RESULT<>0 THEN;9999: III1I.II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.
I1I;II1I1I11I1;END;END;PROCEDURE II111II1IIII1;BEGIN II1I1I11I1;I111111I11I11:=TRUE;END;PROCEDURE
I1IIIII111III;VAR I1IIII1II1:I11;III1II1111,I111III1I1I1I:INT;BEGIN IF NOT I11II1I111I THEN EXIT;
I1IIII1II1.I1I:=III1I.I1II1111II1.I1I;IF I1II1I11 THEN;I111III1I1I1I:=III1I.I1II1111II1.I1II1II11111
-I1IIII1II1.I1II1II11111-1;IF (I111III1I1I1I>0) AND (I111III1I1I1I>III1I.I11I11) THEN BEGIN IF
I111III1I1I1I>I1 THEN I111III1I1I1I:=I1;IIII1I1I(I1IIII1II1.I1I^,I1I1II11I11I,I111III1I1I1I);END
ELSE BEGIN I1I11III1I1II;EXIT;END;III1II1111:=III1I.I11I11+1;WHILE (III1II1111<=I111III1I1I1I) AND (
I1I1II11I11I[III1II1111]<>' ') DO III1II1111:=SUCC(III1II1111);WHILE (III1II1111<=I111III1I1I1I)
AND (I1I1II11I11I[III1II1111]=' ') DO III1II1111:=SUCC(III1II1111);IF III1I.I1II1 THEN BEGIN
I1III111.I1III111.CH:=' ';WHILE III1I.I11I11<III1II1111 DO I1I111I1II END ELSE I111II1II1I(
III1II1111-III1I.I11I11);END;FUNCTION II1I1III1111(VAR IIII:II1II1I1I;UpperCase:BOOLEAN):BOOLEAN;
LABEL 9999;VAR I111III1,I1IIII11III1,I111I1II1,II1I111I:INT;I11I1I:BYTE ABSOLUTE IIII;III1II1:
AnyStr ABSOLUTE I11111I;BEGIN II1I1III1111:=FALSE;III111I1;I111III1:=1;REPEAT I1IIII11III1:=1;IF
I111III1=1 THEN I1IIII11III1:=III1I.I11I11;I111I1II1:=SUCC(II11II1II-I1IIII11III1);IF I111I1II1>=
I11I1I THEN BEGIN I11111I:=II11II1II;IF UpperCase THEN II111I11IIII(I11111I);II1I111I:=POS(IIII,COPY
(III1II1,I1IIII11III1,255));IF II1I111I>0 THEN BEGIN I111II1II1I(PRED(I1IIII11III1+II1I111I+I11I1I)-
III1I.I11I11);I11I11I1III:=TRUE;II1I1III1111:=TRUE;GOTO 9999;END;END;I111III1:=SUCC(I111III1);UNTIL
NOT I111I111III;9999: IF UpperCase THEN II1I1I11I1;END;FUNCTION I1II1I1I111I(VAR I111II1I11:
II1II1I1I;IIIIIII1:BOOLEAN):BOOLEAN;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;BEGIN I1II1I1I111I:=TRUE
;IF NOT IIIIIII1 THEN BEGIN II11I11II1:=0;IIII1I1I1I1('Search string: ',I111II1I11);END;IF
II11I11II1=0 THEN I1II1I1I111I:=FALSE;END;PROCEDURE II1IIII111(IIIIIII1:BOOLEAN);CONST IIIIIIII1I11:
BOOLEAN=FALSE;II111II11II1:BOOLEAN=FALSE;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;II1I1I111I111:INT;
III1I111II11:I11;III1I1I1111:II1II1I1I;I1I11I1I11:BYTE ABSOLUTE III1I1I1111;BEGIN IF NOT
I1II1I1I111I(I111II1I11,IIIIIII1) THEN EXIT;I1III1:=II11II;IF NOT IIIIIII1 THEN BEGIN I1I11I1I11:=0;
IIII1I1I1I1('Options: ',III1I1I1111);II111I11IIII(III1I1I1111);IIIIIIII1I11:=POS('U',III1I1I1111)>0;
II111II11II1:=POS('G',III1I1I1111)>0;IF IIIIIIII1I11 THEN II111I11IIII(I111II1I11);END;II1I1I111I111
:=III1I.II11I11I1II1;III1I111II11.PTR:=III1I.I1II1111II1.PTR;IF II111II11II1 THEN II11IIII(1);IF
II1I1III1111(I111II1I11,IIIIIIII1I11) THEN EXIT;I1111II1I11('"'+I111II1I11+'" NOT found.');III1I.
II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;II1I1I11I1;END;PROCEDURE
III11I111II1I(IIIIIII1:BOOLEAN);CONST IIIIIIII1I11:BOOLEAN=FALSE;II11111I1:BOOLEAN=TRUE;II111II11II1
:BOOLEAN=FALSE;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;I11III1I1:BYTE ABSOLUTE II1II111I1;III1II1111
,II1I1I111I111:INT;III1I111II11:I11;I1I1111:BOOLEAN;CH:CHAR;III1I1I1111:II1II1I1I;I1I11I1I11:BYTE
ABSOLUTE III1I1I1111;BEGIN IF NOT I1II1I1I111I(I111II1I11,IIIIIII1) THEN EXIT;I1III1:=II111I11;IF
NOT IIIIIII1 THEN BEGIN I11III1I1:=0;IIII1I1I1I1('Replace string: ',II1II111I1);END;IF NOT IIIIIII1
THEN BEGIN I1I11I1I11:=0;IIII1I1I1I1('Options: ',III1I1I1111);II111I11IIII(III1I1I1111);IIIIIIII1I11
:=POS('U',III1I1I1111)>0;II11111I1:=POS('N',III1I1I1111)=0;II111II11II1:=POS('G',III1I1I1111)>0;IF
IIIIIIII1I11 THEN II111I11IIII(I111II1I11);END;II1I1I111I111:=III1I.II11I11I1II1;III1I111II11.PTR:=
III1I.I1II1111II1.PTR;IF II111II11II1 THEN II11IIII(1);I1I1111:=FALSE;WHILE II1I1III1111(I111II1I11,
IIIIIIII1I11) DO BEGIN I1I1111:=TRUE;I11I11I1III:=TRUE;II11II1;IF II11111I1 THEN BEGIN I1I1111I11(
III1I.III11I-II11I11II1,III1I.III11I1);IIII11I1(II11I11II1,III11III);I111111I11I11:=TRUE;CH:=
II11I1I111II('Replace (Y/N)? ',I11I111I1I1);END;IF (II11111I1 AND (CH='Y')) OR (NOT II11111I1) THEN
BEGIN FOR III1II1111:=1 TO II11I11II1 DO I1I1I1I1III;FOR III1II1111:=1 TO I11III1I1 DO BEGIN
I1III111.I1III111.CH:=II1II111I1[III1II1111];I1I111I1II;END;END;IF NOT II111II11II1 THEN EXIT;END;
IF NOT I1I1111 THEN BEGIN III1I.II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;
II1I1I11I1;I1111II1I11('"'+I111II1I11+'" NOT found.');END;END;PROCEDURE I1111I;BEGIN IF I1III1=
II11II THEN II1IIII111(TRUE)ELSE IF I1III1=II111I11 THEN III11I111II1I(TRUE);END;PROCEDURE II1III1;
CONST I1III1III1=5;VAR I1II1I1I1II:Menu_Type;II1I11II:BOOLEAN;III1II11II:INTEGER;Local_Save:
Saved_Screen_Ptr;CH:CHAR;PROCEDURE I111II(II1II1II1I:AnyStr);BEGIN WRITELN(' ',
II1II1II1I);END;PROCEDURE II11111I11II1;VAR CH:CHAR;BEGIN WRITELN('CURSOR MOVEMENT');WRITELN(' ');
I111II('Character left ^S Left arrow');I111II('Character right ^D Right arrow');
I111II('Word left ^A Ctrl left arrow');I111II(
'Word right ^F Ctrl right arrow');I111II('Line up ^E Up arrow');
I111II('Line down ^X Down arrow');I111II('Scroll up ^W');I111II(
'Scroll down ^Z');I111II('Page up ^R PgUp');I111II(
'Page down ^C PgDn');I111II('Left end of line ^Q^S Home');I111II(
'Right end of line ^Q^D End');I111II('Top of file ^Q^R Ctrl PgUp');I111II(
'Bottom of file ^Q^C Ctrl PgDn');I111II('End of screen ^Q^X Ctrl Home');I111II(
'Top of screen ^Q^E Ctrl End');I111II('Start of marked block ^Q^B');I111II(
'End of marked block ^Q^K');I111II('Previous position ^Q^P');END;PROCEDURE IIII1111II;VAR CH:
CHAR;BEGIN WRITELN('INSERT AND DELETE');WRITELN(' ');I111II('Insert mode on/off ^V Ins');
I111II('Insert line ^N F6');I111II('Delete line ^Y F7');I111II(
'Delete to end of line ^Q^Y');I111II('Delete right word ^T');I111II('Delete char at cursor ^G');
I111II('Delete left char <BS>');END;PROCEDURE II1I1I1;VAR CH:CHAR;BEGIN WRITELN(
'BLOCK COMMANDS');WRITELN(' ');I111II('Mark block start ^K^B F8');I111II(
'Mark block end ^K^K F9');I111II('Mark single word ^K^T');I111II(
'Hide/show block ^K^H');I111II('Copy block ^K^C');I111II(
'Move block ^K^V');I111II('Delete block ^K^Y');I111II(
'Read block from file ^K^R');I111II('Write block to file ^K^W');END;PROCEDURE III111I11III;VAR CH
:CHAR;BEGIN WRITELN('MISCELLANEOUS');WRITELN(' ');I111II('End edit (save file) ^K^D F5');I111II(
'Quit edit (no save) ^K^X F10');I111II('Tab ^I Tab');I111II(
'Auto tab on/off ^Q^I');I111II('Restore line (undo) ^Q^L F2');I111II(
'Find ^Q^F F3');I111II('Find and replace ^Q^A F4');I111II(
'Repeat last find ^L');I111II('Control char prefix ^P');I111II(
'Help F1');END;BEGIN Save_Screen(Local_Save);Make_A_Menu(I1II1I1I1II,
I1III1III1,10,30,0,0,I1III1III1,'Edit help: ',
'C)ursor movements;I)nsert and delete;B)lock commands;M)iscellaneous;Q)uit;',FALSE);II1I11II:=FALSE;
REPEAT PibTerm_Window(1,2,Max_Screen_Col,PRED(Max_Screen_Line));Clear_Window;Menu_Display_Choices(
I1II1I1I1II);III1II11II:=Menu_Get_Choice(I1II1I1I1II,Erase_Menu);IF (III1II11II<>I1III1III1) THEN
BEGIN CASE III1II11II OF 1:II11111I11II1;2:IIII1111II;3:II1I1I1;4:III111I11III;END;WRITELN;WRITE(
'Hit ESC to return to help menu: ');Read_Kbd(CH);WHILE PibTerm_KeyPressed DO Read_Kbd(CH);END ELSE
II1I11II:=TRUE;UNTIL II1I11II;Restore_Screen(Local_Save);END;PROCEDURE II1III1I(VAR III1I11I111II:
I11I1I11);BEGIN MyFreeMem(III1I11I111II.I1III.PTR,III1I11I111II.III1I1II1I1II);END;PROCEDURE
III1II111III(VAR III1I11I111II:I11I1I11);BEGIN III1I11I111II.III11I:=1;III1I11I111II.III11I1:=1;
III1I11I111II.I111I1I11I1:=0;III1I11I111II.I11I11:=1;III1I11I111II.II11I11I1II1:=1;III1I11I111II.
I111III:=1;III1I11I111II.III1II1IIIIII:=1;III1I11I111II.III1I1:=1;III1I11I111II.II1I1I:=FALSE;
III1I11I111II.I111I1111:=III1I11I111II.III1I1II1I1II;III1I11I111II.I1IIII1111II:=0;III1I11I111II.
I1II1111II1:=III1I11I111II.I1III;III1I11I111II.I111IIIIIII1:=PRED(III1I11I111II.I1III.I1II1II11111);
III1I11I111II.II11111:=FALSE;III1I11I111II.IIII11II11III:=FALSE;III1I11I111II.I111I11111:=0;
III1I11I111II.I11I1II1III1:=0;III1I11I111II.II111I1:=0;III1I11I111II.I1I1II:=0;III1I11I111II.
I111I1I1[0]:=#0;END;PROCEDURE II1I11I1III(VAR III1I11I111II:I11I1I11;VAR II1111II1:II1II1I1I);BEGIN
III1I11I111II.I111I1I1:=II1111II1;END;FUNCTION III1III1II1I(VAR III1I11I111II:I11I1I11;III1II11I111:
Word;I1I111II1I,IIIII1,III11,I1I11III:INT;I1III1I1:BOOLEAN;III111I111I:I1II1111I11I):INT;LABEL 9999;
VAR II1III1III:LongInt;BEGIN II111I11II11(III1I11I111II);III1III1II1I:=0;I1IIIIIII11I(I1I111II1I,
IIIII1,III11,I1I11III,I1III1I1);II1III1III:=MAXAVAIL;IF (II1III1III<III1II11I111) THEN BEGIN
III1III1II1I:=1;GOTO 9999;END;III1I.III1I1II1I1II:=III1II11I111;GETMEM(III1I.I1III.PTR,III1II11I111)
;IF (III1I.I1III.PTR=NIL) THEN BEGIN III1III1II1I:=1;GOTO 9999;END;III1II111III(III1I);III1I.
III111I111I:=III111I111I;III1I.I1II1:=TRUE;III1I.IIIIII1II11I:=TRUE;9999: II1II1II1111(III1I11I111II
);END;FUNCTION II1I111111I(VAR III1I11I111II:I11I1I11;II1111II1:II1II1I1I):INT;LABEL 9999;VAR
I11III1I:FILE;I11I1III1,I1IIII1111II,I11IIII11I:Word;IIII11II1111:I11;BEGIN III1II111III(
III1I11I111II);II111I11II11(III1I11I111II);II1I111111I:=0;III1I.I111I1I1:=II1111II1;ASSIGN(I11III1I,
III1I.I111I1I1);RESET(I11III1I,1024);IF IORESULT<>0 THEN BEGIN II1I111111I:=II;GOTO 9999;END;
I1IIII1111II:=FILESIZE(I11III1I);IF (I1IIII1111II>64) THEN BEGIN II1I111111I:=I1I111I1I;CLOSE(
I11III1I);GOTO 9999;END;RESET(I11III1I,1);I1IIII1111II:=FILESIZE(I11III1I);IF (I1IIII1111II>III1I.
III1I1II1I1II) THEN BEGIN II1I111111I:=I1I111I1I;CLOSE(I11III1I);GOTO 9999;END;IF I1IIII1111II<>0
THEN BEGIN BLOCKREAD(I11III1I,III1I.I1III.PTR^,I1IIII1111II,I11IIII11I);I11I1III1:=IORESULT;CLOSE(
I11III1I);IF I11I1III1<>0 THEN BEGIN II1I111111I:=II111II111;GOTO 9999;END;III1I.I1IIII1111II:=
I11IIII11I;III1I.I111IIIIIII1:=III1I.I1III.I1II1II11111+I11IIII11I-1;III1I.I111I1111:=III1I.
I111I1111-I11IIII11I;IIII11II1111.I1II1II11111:=III1I.I111IIIIIII1;IIII11II1111.II111I11II:=III1I.
I1III.II111I11II;IF IIII11II1111.I1I^ =^Z THEN BEGIN III1I.I111IIIIIII1:=PRED(III1I.I111IIIIIII1);
III1I.I1IIII1111II:=PRED(III1I.I1IIII1111II);III1I.I111I1111:=SUCC(III1I.I111I1111);END;END;9999:
II1II1II1111(III1I11I111II);END;FUNCTION I1I11I1111I1(VAR III1I11I111II:I11I1I11;I1I111II1I,IIIII1,
III11,I1I11III:INT;II11I:I111II1111I;I111III1,I111I:INT;VAR II1II1):INT;LABEL III1II11,9999;VAR
I11II111IIII1,III1II1111,I111I1II1:INT;I111III,III1II1IIIIII,III1I1:INT;II1II1I111II:BOOLEAN;
I111111I1I1:ARRAY[0..100] OF INT ABSOLUTE II1II1;BEGIN II111I11II11(III1I11I111II);IIII111:=0;
II1III1I11I(I1I111II1I,IIIII1,III11,I1I11III,II11I);IF (I111III1<>0) AND (I111I<>0) THEN BEGIN
I11I1III(I111III1,I11II1.II11IIII1I1 DIV 2,I111I-III1I.I11I11);END;II1I1I11I1;II1III11I:=FALSE;
I11I11I1III:=TRUE;I1II1I11I:=TRUE;REPEAT I111III:=III1I.II11I11I1II1;III1II1IIIIII:=III1I.I11I11;
III1I1:=III1I.III11I1;II11II1;II1II111I1I(III1I.III11I,III1I.III11I1);II11II11(I1III111);
II1II1I111II:=FALSE;I11II111IIII1:=1;III1II1111:=0;REPEAT I111I1II1:=I111111I1I1[III1II1111];IF
I111I1II1=0 THEN GOTO III1II11;III1II1111:=SUCC(III1II1111);IF I111111I1I1[III1II1111]=I1III111.
I11I1III1 THEN BEGIN IIII111:=I11II111IIII1;IF I111I1II1=1 THEN GOTO 9999 ELSE BEGIN II1II1I111II:=
TRUE;III1II1111:=SUCC(III1II1111);GOTO III1II11;END;END;III1II1111:=III1II1111+I111I1II1;
I11II111IIII1:=SUCC(I11II111IIII1);UNTIL FALSE;III1II11: IF I1III111.I1I1I1II11=I11III1I11 THEN
I1I111111I(I1III111);IF II1II1I111II THEN BEGIN II1II1I111II:=FALSE;IF I111111I1I1[III1II1111]=
I1III111.I11I1III1 THEN GOTO 9999;END;CASE I1III111.I1I1I1II11 OF I1II1II1:II1III1II1II1;
IIII1I1I11II1:I1I1I1I1III;III1:I11111II;I1I1II111:II1111111I1;II1II1III:IF I111I111III THEN;
II11III1II:IF I1III11 THEN;I1I1III1I:I11III111;I1II1I111I1:I1IIII11;IIIII1I1I:I1I11I11II1I;I1IIIIIII
:I11I1111II1I1;IIII11111I1I1:IIIIIII1III11;I111I1:II11111II;I1111I1111II:I111II1II;I11I:I1I1II1II;
I111IIIIII1II:I1I11III1I1II;III111III:II1111I1111II;II1I1:II11III1I;II1I1I11:I1III1111;I111I1II1I1I:
I11III1I1I1I1;I11I1IIII:II1III1I1I;I1111I1:II1111I1I1II;I111IIII11I:II1III11I:=TRUE;I1I1I111:II1II1I
;I1I1II11111I:III1II;IIIII:I1I1III111I1;II1I1I111:I11I1111I;I11III:III1III1II1;I1II11I1I:
III11I11II11;I11II1111I:BEGIN III1I.I1II1:=NOT III1I.I1II1;I1II1I11I:=TRUE;END;I11I111111I:
I1IIIII1I11II;I1I11I1111I:I111I1II11I1;III1IIII1II:I111I1I1I;IIII1II1111:I11I11III1I11;IIIII1II11:
I111I1I1I111;I1I11III1I1I:II11IIII1111;I1II11I1III11:II1I1IIII111I;I111I11I1:I11I111I1II11;II1IIIII:
I1I1111I1;III111I:IF I111I111II THEN;IIII1I1:III111III1;III1III1I1:IF I11IIIIII THEN;III1I1II1:
I11II1I1I;III111I111II:I11I1I11II;III1II1I11I1:BEGIN III1I.IIIIII1II11I:=NOT III1I.IIIIII1II11I;
I1II1I11I:=TRUE;END;I1I11I:II111II1IIII1;II1III:I1IIIII111III;II11II:II1IIII111(FALSE);II111I11:
III11I111II1I(FALSE);I11IIIIII111I:I1111I;II1:I1III111IIII1;IIII1III1:II1III1;II1II:BEGIN IIII111:=-1
;II1III11I:=TRUE;END;IIIIII:;ELSE ;END;IF (I111III<>III1I.II11I11I1II1) OR (III1II1IIIIII<>III1I.
I11I11) OR (III1I1<>III1I.III11I1) THEN BEGIN III1I.I111III:=I111III;III1I.III1II1IIIIII:=
III1II1IIIIII;III1I.III1I1:=III1I1;END;UNTIL II1III11I;9999: III111I1;II1II1II1111(III1I11I111II);
I1I11I1111I1:=IIII111;END;FUNCTION I1II1I111II11(VAR III1I11I111II:I11I1I11):BOOLEAN;BEGIN
I1II1I111II11:=III1I11I111II.II1I1I;END;FUNCTION II1I1II1(VAR III1I11I111II:I11I1I11):INT;BEGIN
II111I11II11(III1I11I111II);II1I1II1:=I1III1II111(III1I.I111I1I1);III1I.II1I1I:=FALSE;II1II1II1111(
III1I11I111II);END;