home *** CD-ROM | disk | FTP | other *** search
/ Power Programming / powerprogramming1994.iso / progtool / pibterm / pibt41s1.arc / EDITSUB2.MOD < prev    next >
Text File  |  1988-03-07  |  39KB  |  403 lines

  1. PROCEDURE II1111II1I;VAR III1II1I11:BYTE;III11I1:INT;BEGIN III1II1I11:=I11I1III11I1I;IF I11II1.II11I
  2. =I11I1I1I THEN EXIT;III11I1:=I11II1.I1I111111;I11I1III11I1I:=III11III;IF I1II1I11I THEN BEGIN 
  3. I1I1111I11(1,III11I1);I11II111I111;I111III1I1I1('Line ');END;I1I1111I11(6,III11I1);II1I1I11I(III1I.
  4. II11I11I1II1,4);IF I1II1I11I THEN BEGIN I1I1111I11(12,III11I1);I111III1I1I1('Col ');END;I1I1111I11(16
  5. ,III11I1);II1I1I11I(III1I.I11I11,3);IF I1II1I11I THEN BEGIN IF III1I.I1II1 THEN BEGIN I1I1111I11(21,
  6. III11I1);I111III1I1I1('Ins');END;IF III1I.IIIIII1II11I THEN BEGIN I1I1111I11(25,III11I1);
  7. I111III1I1I1('Indent');END;I1I1111I11(34,III11I1);I111III1I1I1(III1I.I111I1I1);END;I11I1III11I1I:=
  8. III1II1I11;I1II1I11I:=FALSE;END;PROCEDURE I1I11111I1I1(III11I1,III111IIIII1I:INT);VAR I1II1I,
  9. III1III1I,I11I1IIIIII,II11I1I11II:INT;BEGIN I1II1I:=0;III1III1I:=0;I11I1IIIIII:=SUCC(III1I.
  10. I111I1I11I1);II11I1I11II:=I11I1IIIIII+I11II1.I111I1II1-1;IF III111IIIII1I=III1I.I111I11111 THEN 
  11. BEGIN IF III1I.I11I1II1III1<=II11I1I11II THEN BEGIN III1III1I:=I11II1.I111I1II1;IF III1I.
  12. I11I1II1III1<=I11I1IIIIII THEN BEGIN I1II1I:=1 END ELSE BEGIN I1II1I:=III1I.I11I1II1III1-III1I.
  13. I111I1I11I1;END;END;END;IF III111IIIII1I=III1I.II111I1 THEN BEGIN IF III1I.I1I1II>=I11I1IIIIII THEN 
  14. BEGIN IF I1II1I=0 THEN I1II1I:=1;III1III1I:=III1I.I1I1II;IF III1III1I>II11I1I11II THEN III1III1I:=
  15. II11I1I11II;END;END;IF I1II1I<>0 THEN BEGIN IF III1III1I<>0 THEN BEGIN I1I1111I11(I1II1I,III11I1);
  16. IIII11I1(III1III1I-I1II1I+1,I111IIII);END;END;END;PROCEDURE II11II1;LABEL II11I1IIII111;VAR I11I1111
  17. ,II11III11I1,II11I11I1II1,III11I1,I111I1II1,II1II11I11,I1I11I1IIIII1:INT;IIII11II1111:I11;BEGIN 
  18. II1111II1I;II111IIII:=FALSE;I11I1III11I1I:=I1III1II;IF I11I11I1III THEN BEGIN III11I1:=1;
  19. II11I11I1II1:=III1I.II11I11I1II1;IIII11II1111.I1I:=III1I.I1II1111II1.I1I;IF III1I.III11I1>III1I.
  20. II11I11I1II1 THEN III1I.III11I1:=III1I.II11I11I1II1;I11I1111:=III1I.II11I11I1II1-III1I.III11I1+1;
  21. II11III11I1:=I11I1111+I11II1.II11IIII1I1-1;III1IIIII(I11I1111);WHILE I11I1111<=II11III11I1 DO BEGIN 
  22. I1I1111I11(1,III11I1);IF III1I.II11111 THEN IF I11I1111>III1I.I111I11111 THEN IF I11I1111<III1I.
  23. II111I1 THEN I11I1III11I1I:=I111IIII;IF I11I1111=II11I11I1II1 THEN BEGIN I1I111II111(I1IIIIII1I,
  24. II11II1II,III1I.I111I1I11I1);END ELSE BEGIN I111I1II1:=I11I11II11;II1II11I11:=SUCC(III1I.
  25. I111IIIIIII1-III1I.I1II1111II1.I1II1II11111);IF II1II11I11>=0 THEN IF II1II11I11<I111I1II1 THEN 
  26. I111I1II1:=II1II11I11;I1I111II111(III1I.I1II1111II1.I1I^,I111I1II1,III1I.I111I1I11I1);END;
  27. I11I1III11I1I:=I1III1II;IF III1I.II11111 THEN I1I11111I1I1(III11I1,I11I1111);I11I1111:=SUCC(I11I1111
  28. );III11I1:=SUCC(III11I1);IF NOT I1II1I11 THEN GOTO II11I1IIII111;END;II11I1IIII111: WHILE III11I1<=
  29. I11II1.II11IIII1I1 DO BEGIN I1I1111I11(1,III11I1);I11II111I111;III11I1:=SUCC(III11I1);END;III1I.
  30. II11I11I1II1:=II11I11I1II1;III1I.I1II1111II1.I1I:=IIII11II1111.I1I;END ELSE IF I111111I11I11 THEN 
  31. BEGIN I1I1111I11(1,III1I.III11I1);IF III1I.II11111 THEN IF III1I.II11I11I1II1>III1I.I111I11111 THEN 
  32. IF III1I.II11I11I1II1<III1I.II111I1 THEN I11I1III11I1I:=I111IIII;I1I111II111(I1IIIIII1I,II11II1II,
  33. III1I.I111I1I11I1);IF III1I.II11111 THEN I1I11111I1I1(III1I.III11I1,III1I.II11I11I1II1);END;
  34. I11I11I1III:=FALSE;I111111I11I11:=FALSE;II111IIII:=TRUE;END;PROCEDURE II11I1I1(IIIIII1II:INT);VAR 
  35. I111III11I1II,I1III1I11III1:INT;BEGIN I111III11I1II:=I11I11II11-I11II1.I111I1II1+III1I.III11I;
  36. I1III1I11III1:=III1I.I11I11+IIIIII1II;IF I1III1I11III1>I111III11I1II THEN I1III1I11III1:=
  37. I111III11I1II ELSE IF I1III1I11III1<III1I.III11I THEN I1III1I11III1:=III1I.III11I;III1I.I111I1I11I1
  38. :=III1I.I111I1I11I1+(I1III1I11III1-III1I.I11I11);III1I.I11I11:=I1III1I11III1;I11I11I1III:=TRUE;END;
  39. PROCEDURE II1I11(III11I:INT);BEGIN III1I.III11I:=III11I;I11I11I1III:=TRUE;III1I.I111I1I11I1:=III1I.
  40. I11I11-III1I.III11I;END;PROCEDURE I111II1II1I(I11I1III1111:INT);BEGIN III1I.I11I11:=III1I.I11I11+
  41. I11I1III1111;IF III1I.I11I11<1 THEN III1I.I11I11:=1;IF III1I.I11I11>I11I11II11 THEN III1I.I11I11:=
  42. I11I11II11;III1I.III11I:=III1I.III11I+I11I1III1111;IF III1I.III11I>I11II1.I111I1II1 THEN II1I11(
  43. I11II1.I111I1II1)ELSE IF III1I.III11I<1 THEN II1I11(1);END;FUNCTION I111I1I(I111I:INT):INT;BEGIN IF 
  44. I111I>II11II1II THEN I111I:=II11II1II+IIIIII1;IF I111I=0 THEN I111I:=1;I111I1I:=I111I;END;FUNCTION 
  45. I111111111I(I111III1,I111I:INT):I1I;VAR IIII11II1111:I11;BEGIN II11IIII(I111III1);IIII11II1111.I1I:=
  46. III1I.I1II1111II1.I1I;IIII11II1111.I1II1II11111:=PRED(IIII11II1111.I1II1II11111+I111I1I(I111I));
  47. I111111111I:=IIII11II1111.I1I;END;PROCEDURE II11III111III(I1II1II11111:INT);LABEL I1II1I1I1;BEGIN 
  48. III111I1;WHILE III1I.I1II1111II1.I1II1II11111<=I1II1II11111 DO BEGIN IF NOT I1II1I11 THEN BEGIN 
  49. II1I1I11I1;GOTO I1II1I1I1;END;END;IF I11I1I1II1I THEN;I1II1I1I1: I111II1II1I(SUCC(I1II1II11111-III1I
  50. .I1II1111II1.I1II1II11111)-III1I.I11I11);IF III1I.III11I1>III1I.II11I11I1II1 THEN III1I.III11I1:=
  51. III1I.II11I11I1II1;END;FUNCTION I1III1II111(VAR II1111II1:II1II1I1I):INT;VAR I11III1I:FILE;
  52. II111II1111II:FILE;I1I11111III1,I1I1I,I1IIII1111II:Word;I1I111II1III1:II1II1I1I;IIII11:INTEGER;
  53. II1I111II1:INTEGER;BEGIN I1III1II111:=0;II1111II1:=UpperCase(II1111II1);ASSIGN(I11III1I,II1111II1);
  54. RESET(I11III1I,1);IF (INT24RESULT=0) THEN BEGIN CLOSE(I11III1I);IIII11:=POS('.',II1111II1);IF (
  55. IIII11=0) THEN I1I111II1III1:=II1111II1+'.BAK'ELSE I1I111II1III1:=COPY(II1111II1,1,IIII11)+'BAK';IF 
  56. (I1I111II1III1<>II1111II1) THEN BEGIN ASSIGN(II111II1111II,I1I111II1III1);RESET(II111II1111II);IF (
  57. INT24RESULT=0) THEN BEGIN CLOSE(II111II1111II);II1I111II1:=INT24RESULT;ERASE(II111II1111II);
  58. II1I111II1:=INT24RESULT;END ELSE BEGIN CLOSE(II111II1111II);II1I111II1:=INT24RESULT;END;RENAME(
  59. I11III1I,I1I111II1III1);II1I111II1:=INT24RESULT;END;END ELSE BEGIN CLOSE(I11III1I);II1I111II1:=
  60. INT24RESULT;END;ASSIGN(I11III1I,II1111II1);REWRITE(I11III1I,1);IF INT24RESULT<>0 THEN BEGIN 
  61. I1III1II111:=II;END ELSE BEGIN I1I11111III1:=0;I1IIII1111II:=III1I.I1IIII1111II;IF I1IIII1111II<>0 
  62. THEN BEGIN BLOCKWRITE(I11III1I,III1I.I1III.PTR^,III1I.I1IIII1111II,I1IIII1111II);I1I11111III1:=
  63. INT24RESULT;END;CLOSE(I11III1I);I1I1I:=INT24RESULT;IF (I1I11111III1<>0) OR (I1IIII1111II<>III1I.
  64. I1IIII1111II) THEN BEGIN I1III1II111:=I1III111II1;END ELSE IF I1I1I<>0 THEN BEGIN I1III1II111:=
  65. I11I1II1;END;END;END;PROCEDURE I11111I1III;VAR I11I1II1IIII:BOOLEAN;BEGIN I11I1II1IIII:=III1I.
  66. II11111;III1I.II11111:=FALSE;IF (III1I.II111I1>0) AND (III1I.I1I1II>0) THEN IF (III1I.I111I11111>0) 
  67. AND (III1I.I11I1II1III1>0) THEN IF III1I.I111I11111<III1I.II111I1 THEN III1I.II11111:=TRUE ELSE IF 
  68. III1I.I111I11111=III1I.II111I1 THEN IF III1I.I11I1II1III1<=III1I.I1I1II THEN III1I.II11111:=TRUE;IF 
  69. (III1I.II11111) OR (I11I1II1IIII<>III1I.II11111) THEN I11I11I1III:=TRUE;IF III1I.II11111 THEN III1I.
  70. IIII11II11III:=FALSE;END;PROCEDURE I1III11II(I1IIII1111II:INT);VAR III11I1IIII:I11;II1111I:INT;
  71. BEGIN II1111I:=III1I.III11I1;III11I1IIII.PTR:=III1I.I1II1111II1.PTR;III1I.I111I11111:=III1I.
  72. II11I11I1II1;III1I.I11I1II1III1:=III1I.I11I11;II11III111III(III1I.I1II1111II1.I1II1II11111+III1I.
  73. I11I11+I1IIII1111II-2);III1I.II111I1:=III1I.II11I11I1II1;III1I.I1I1II:=III1I.I11I11;III1I.III11I1:=
  74. II1111I;III1I.I1II1111II1.PTR:=III11I1IIII.PTR;III1I.II11I11I1II1:=III1I.I111I11111;I111II1II1I(
  75. III1I.I11I1II1III1-III1I.I11I11);I11111I1III;END;FUNCTION I1II1I11II11I:BOOLEAN;BEGIN I1II1I11II11I
  76. :=FALSE;IF (III1I.I111I11111<III1I.II11I11I1II1) OR ((III1I.I111I11111=III1I.II11I11I1II1) AND (
  77. III1I.I11I1II1III1<=III1I.I11I11)) THEN IF (III1I.II111I1>III1I.II11I11I1II1) OR ((III1I.II111I1=
  78. III1I.II11I11I1II1) AND (III1I.I1I1II>=III1I.I11I11)) THEN I1II1I11II11I:=TRUE;END;PROCEDURE 
  79. II11II1III;BEGIN IF II11II1II>0 THEN BEGIN IF III1I.I11I11<=II11II1II THEN BEGIN IF III1I.I11I11<
  80. II11II1II THEN BEGIN MOVE(I1IIIIII1I[SUCC(III1I.I11I11)],I1IIIIII1I[III1I.I11I11],II11II1II-III1I.
  81. I11I11);END;II11II1II:=PRED(II11II1II);III1I1II:=TRUE;I111111I11I11:=TRUE;IF III1I.II11I11I1II1=
  82. III1I.I111I11111 THEN IF III1I.I11I11<III1I.I11I1II1III1 THEN III1I.I11I1II1III1:=PRED(III1I.
  83. I11I1II1III1);IF III1I.II11I11I1II1=III1I.II111I1 THEN IF III1I.I11I11<III1I.I1I1II THEN III1I.
  84. I1I1II:=PRED(III1I.I1I1II);END;END;END;FUNCTION I1III11:BOOLEAN;BEGIN I1III11:=FALSE;IF I11I1I1II1I 
  85. THEN BEGIN III1I.III11I1:=III1I.III11I1-1;IF III1I.III11I1<1 THEN BEGIN III1I.III11I1:=1;I11I11I1III
  86. :=TRUE;END;I1III11:=TRUE;END;END;FUNCTION I111I111III:BOOLEAN;BEGIN I111I111III:=FALSE;IF 
  87. II1II1111I THEN BEGIN III1I.III11I1:=III1I.III11I1+1;IF III1I.III11I1>I11II1.II1I1III1I THEN BEGIN 
  88. III1I.III11I1:=I11II1.II1I1III1I;I11I11I1III:=TRUE;END;I111I111III:=TRUE;END;END;PROCEDURE 
  89. I1I11I11II1I;BEGIN IF III1I.II11I11I1II1>III1I.III11I1 THEN IF I11I1I1II1I THEN I11I11I1III:=TRUE;
  90. END;PROCEDURE I11I1111II1I1;BEGIN IF II1II1111I THEN I11I11I1III:=TRUE;END;PROCEDURE II1111(III11I1:
  91. INT);BEGIN IF III1I.II11I11I1II1<III11I1 THEN III1I.III11I1:=III1I.II11I11I1II1 ELSE BEGIN III1I.
  92. III11I1:=III11I1;I11I11I1III:=TRUE;END;END;PROCEDURE I11I1III(I111III1,III11I1,I111I:INT);BEGIN 
  93. II11IIII(I111III1);II1111(III11I1);I111II1II1I(I111I-III1I.I11I11);I11I11I1III:=TRUE;END;PROCEDURE 
  94. III1II;BEGIN WHILE III1I.III11I1>1 DO IF NOT I1III11 THEN EXIT;END;PROCEDURE I1I1III111I1;BEGIN 
  95. WHILE III1I.III11I1<I11II1.II1I1III1I DO IF NOT I111I111III THEN EXIT;END;PROCEDURE I11III111;VAR 
  96. I11I1III1111:INT;BEGIN IF III1I.II11I11I1II1<=III1I.III11I1 THEN BEGIN I11I1III1111:=1;III1I.III11I1
  97. :=1;END ELSE BEGIN I11I1III1111:=III1I.II11I11I1II1-I11II1.II11IIII1I1+1;IF I11I1III1111<III1I.
  98. III11I1 THEN I11I1III1111:=III1I.III11I1;I11I11I1III:=TRUE;END;II11IIII(I11I1III1111);END;PROCEDURE 
  99. I1IIII11;BEGIN II11IIII(III1I.II11I11I1II1+I11II1.II11IIII1I1-1);I11I11I1III:=TRUE;END;PROCEDURE 
  100. II1III1I1I;BEGIN IF III1I.III11I1<I11II1.II1I1III1I THEN II1111(SUCC(III1I.III11I1))ELSE 
  101. I1I11I11II1I;END;PROCEDURE II1111I1I1II;BEGIN IF III1I.III11I1>1 THEN II1111(PRED(III1I.III11I1))
  102. ELSE I11I1111II1I1;END;PROCEDURE II11111II;BEGIN I111II1II1I(1);END;PROCEDURE IIIIIII1III11;BEGIN 
  103. I111II1II1I(-1);END;PROCEDURE I1I11III1I1II;BEGIN I111II1II1I(1-III1I.I11I11);END;PROCEDURE 
  104. II1111I1111II;BEGIN I111II1II1I(SUCC(II11II1II)-III1I.I11I11);END;PROCEDURE I11I1111I;BEGIN IF III1I
  105. .II11I11I1II1<>1 THEN BEGIN II11IIII(1);I11I11I1III:=TRUE;END;II1111(1);I1I11III1I1II;END;PROCEDURE 
  106. III1III1II1;VAR I1I11I1IIIII1:INT;BEGIN I1I11I1IIIII1:=III1I.II11I11I1II1;II11IIII(MAXINT);IF III1I.
  107. II11I11I1II1<>I1I11I1IIIII1 THEN I11I11I1III:=TRUE;II1111(I11II1.II1I1III1I);I1I11III1I1II;END;
  108. PROCEDURE I1III1111;BEGIN II11I1I1(-1);END;PROCEDURE II11III1I;BEGIN II11I1I1(1);END;PROCEDURE 
  109. I111II1II;LABEL 9999;VAR III1II1111:INT;BEGIN III1II1111:=PRED(III1I.I11I11);IF III1II1111>
  110. II11II1II THEN III1II1111:=II11II1II;IF III1II1111<=1 THEN BEGIN IF I1III11 THEN II1111I1111II;EXIT;
  111. END;IF NOT(I1IIIIII1I[III1II1111] IN II1II1I1) THEN BEGIN REPEAT III1II1111:=PRED(III1II1111);IF 
  112. III1II1111=1 THEN BEGIN IF I1IIIIII1I[III1II1111] IN II1II1I1 THEN I1I11III1I1II ELSE IF I1III11 
  113. THEN II1111I1111II;EXIT;END;UNTIL I1IIIIII1I[III1II1111] IN II1II1I1;END;REPEAT III1II1111:=PRED(
  114. III1II1111);IF III1II1111=1 THEN BEGIN IF NOT(I1IIIIII1I[III1II1111] IN II1II1I1) THEN GOTO 9999 
  115. ELSE BEGIN I1I11III1I1II;EXIT;END;END;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);9999: III1II1111
  116. :=SUCC(III1II1111);I111II1II1I(III1II1111-III1I.I11I11);END;PROCEDURE I1I1II1II;VAR III1II1111:INT;
  117. BEGIN IF (III1I.I11I11=II11II1II) AND (I1IIIIII1I[III1I.I11I11]<>' ') THEN BEGIN II1111I1111II;EXIT;
  118. END;IF (III1I.I11I11=0) OR (III1I.I11I11>=II11II1II) THEN BEGIN IF I111I111III THEN BEGIN 
  119. I1I11III1I1II;IF (II11II1II>0) AND (I1IIIIII1I[III1I.I11I11] IN II1II1I1) THEN EXIT;I1I1II1II;END;
  120. EXIT;END;III1II1111:=III1I.I11I11;IF I1IIIIII1I[III1II1111] IN II1II1I1 THEN BEGIN REPEAT III1II1111
  121. :=SUCC(III1II1111);IF III1II1111>=II11II1II THEN BEGIN II1111I1111II;EXIT;END;UNTIL NOT(I1IIIIII1I[
  122. III1II1111] IN II1II1I1);END;REPEAT III1II1111:=SUCC(III1II1111);IF III1II1111>=II11II1II THEN 
  123. BEGIN II1111I1111II;EXIT;END;UNTIL I1IIIIII1I[III1II1111] IN II1II1I1;I111II1II1I(III1II1111-III1I.
  124. I11I11);END;PROCEDURE III11I11II11;VAR I111III,III1I1,III1II1IIIIII:INT;BEGIN I111III:=III1I.
  125. II11I11I1II1;III1I1:=III1I.III11I1;III1II1IIIIII:=III1I.I11I11;I11I1III(III1I.I111III,III1I.III1I1,
  126. III1I.III1II1IIIIII-III1I.I11I11);III1I.I111III:=I111III;III1I.III1I1:=III1I1;III1I.III1II1IIIIII:=
  127. III1II1IIIIII;END;PROCEDURE II1I1111II1;BEGIN III1I1II:=TRUE;I111111I11I11:=TRUE;I1IIIIII1I[III1I.
  128. I11I11]:=I1III111.I1III111.CH;IF III1I.I11I11>II11II1II THEN II11II1II:=III1I.I11I11;II11111II;END;
  129. PROCEDURE III1III1I1I11;VAR IIII1II1I1I1:INT;BEGIN IIII1II1I1I1:=III1I.I11I11-II11II1II;IF 
  130. IIII1II1I1I1>0 THEN BEGIN FILLCHAR(I1IIIIII1I[SUCC(II11II1II)],IIII1II1I1I1,' ');II11II1II:=
  131. II11II1II+IIII1II1I1I1;END;END;PROCEDURE I11II1IIII1;BEGIN III1III1I1I11;II1I1111II1;END;PROCEDURE 
  132. I1I111I1II;VAR I111I1II1:INT;BEGIN IF III1I.I11I11=I11I11II11 THEN BEGIN II1I1111II1;EXIT;END;IF 
  133. III1I.II11I11I1II1=III1I.I111I11111 THEN IF III1I.I11I11<=III1I.I11I1II1III1 THEN III1I.I11I1II1III1
  134. :=SUCC(III1I.I11I1II1III1);IF III1I.II11I11I1II1=III1I.II111I1 THEN IF III1I.I11I11<=III1I.I1I1II 
  135. THEN III1I.I1I1II:=SUCC(III1I.I1I1II);IF III1I.I11I11>II11II1II THEN BEGIN I11II1IIII1;EXIT;END;
  136. I111I1II1:=II11II1II-III1I.I11I11+1;IF II11II1II=I11I11II11 THEN I111I1II1:=PRED(I111I1II1);MOVE(
  137. I1IIIIII1I[III1I.I11I11],I1IIIIII1I[SUCC(III1I.I11I11)],I111I1II1);IF II11II1II<I11I11II11 THEN 
  138. II11II1II:=SUCC(II11II1II);II1I1111II1;END;PROCEDURE IIIIIIIII1;BEGIN IF III1I.I11I11>=II11II1II 
  139. THEN BEGIN I11II1IIII1;EXIT;END;II1I1111II1;END;PROCEDURE II1III1II1II1;BEGIN IF III1I.I1II1 THEN 
  140. I1I111I1II ELSE IIIIIIIII1;END;PROCEDURE II1II1I;BEGIN II11II11(I1III111);II1III1II1II1;END;
  141. PROCEDURE I111I1II11I1;BEGIN IF III1I.II11I11I1II1<III1I.I111I11111 THEN III1I.I111I11111:=SUCC(
  142. III1I.I111I11111);IF III1I.II11I11I1II1<III1I.II111I1 THEN III1I.II111I1:=SUCC(III1I.II111I1);IF 
  143. III1I.II11I11I1II1=III1I.I111I11111 THEN BEGIN IF III1I.I11I11<=III1I.I11I1II1III1 THEN BEGIN III1I.
  144. I111I11111:=SUCC(III1I.I111I11111);III1I.I11I1II1III1:=III1I.I11I1II1III1-III1I.I11I11+1;END;END;IF 
  145. III1I.II11I11I1II1=III1I.II111I1 THEN BEGIN IF III1I.I11I11<=III1I.I1I1II THEN BEGIN III1I.II111I1:=
  146. SUCC(III1I.II111I1);III1I.I1I1II:=III1I.I1I1II-III1I.I11I11+1;END;END;I1III111.I1III111.CH:=
  147. I1I1I111II1I;I1I111I1II;I1III111.I1III111.CH:=I11II111;I1I111I1II;I111II1II1I(-2);III111I1;
  148. II1I1I11I1;I11I11I1III:=TRUE;END;PROCEDURE II1111111I1;VAR III1II1111:INT;BEGIN IF NOT III1I.I1II1 
  149. THEN BEGIN IF I111I111III THEN;I1I11III1I1II;END ELSE BEGIN IF III1I.IIIIII1II11I THEN BEGIN 
  150. III1II1111:=I1III1I1I(I1IIIIII1I,II11II1II);IF III1I.I11I11<=III1II1111 THEN III1II1111:=0;END;
  151. I111I1II11I1;IF NOT I111I111III THEN BEGIN I111I1II11I1;IF I111I111III THEN;END;I1I11III1I1II;IF 
  152. III1I.IIIIII1II11I THEN BEGIN I1III111.I1III111.CH:=' ';WHILE III1I.I11I11<III1II1111 DO I1I111I1II;
  153. END;END;END;PROCEDURE I1IIIII1I11II;BEGIN WHILE III1I.I11I11<=II11II1II DO II11II1III;END;PROCEDURE 
  154. III1I11II;BEGIN IF III1I.II11I11I1II1<III1I.I111I11111 THEN BEGIN III1I.I111I11111:=PRED(III1I.
  155. I111I11111);IF III1I.II11I11I1II1=III1I.I111I11111 THEN III1I.I11I1II1III1:=III1I.I11I1II1III1+III1I
  156. .I11I11-1;END;IF III1I.II11I11I1II1<III1I.II111I1 THEN BEGIN III1I.II111I1:=PRED(III1I.II111I1);IF 
  157. III1I.II11I11I1II1=III1I.II111I1 THEN III1I.I1I1II:=III1I.I1I1II+III1I.I11I11-1;END;IF NOT III1I.
  158. IIII11II11III THEN I11111I1III;III1III1I1I11;I1IIIII1I11II;IIIIII1:=0;I1I111III111:=I1I11;III1I1II:=
  159. TRUE;III111I1;II1I1I11I1;I11I11I1III:=TRUE;END;PROCEDURE I1I1I1I1III;BEGIN IF III1I.I11I11>1 THEN 
  160. BEGIN IIIIIII1III11;II11II1III;END ELSE IF I1III11 THEN BEGIN II1111I1111II;III1I11II;END;END;
  161. PROCEDURE I11111II;BEGIN IF (II11II1II=0) OR (III1I.I11I11>II11II1II) THEN III1I11II ELSE II11II1III
  162. ;END;PROCEDURE I111I1I1I;BEGIN IF (II11II1II=0) OR (III1I.I11I11>II11II1II) THEN III1I11II ELSE 
  163. BEGIN IF I1IIIIII1I[III1I.I11I11] IN II1II1I1 THEN BEGIN WHILE (III1I.I11I11<=II11II1II) AND (
  164. I1IIIIII1I[III1I.I11I11] IN II1II1I1) DO II11II1III;END ELSE IF I1IIIIII1I[III1I.I11I11]=' 'THEN 
  165. BEGIN WHILE (III1I.I11I11<=II11II1II) AND (I1IIIIII1I[III1I.I11I11]=' ') DO II11II1III;END ELSE 
  166. II11II1III;END;END;PROCEDURE I11III1I1I1I1;LABEL I11111II1I1;BEGIN IF (III1I.II11I11I1II1=III1I.
  167. I111I11111) AND (III1I.II11I11I1II1=III1I.II111I1) THEN BEGIN III1I.I111I11111:=0;III1I.I11I1II1III1
  168. :=0;III1I.II111I1:=0;III1I.I1I1II:=0;GOTO I11111II1I1;END;IF III1I.II11I11I1II1=III1I.I111I11111 
  169. THEN BEGIN III1I.I11I1II1III1:=1;END ELSE IF III1I.II11I11I1II1<III1I.I111I11111 THEN BEGIN III1I.
  170. I111I11111:=PRED(III1I.I111I11111);END;IF III1I.II11I11I1II1<=III1I.II111I1 THEN BEGIN III1I.II111I1
  171. :=PRED(III1I.II111I1);IF III1I.II11I11I1II1=III1I.II111I1 THEN III1I.I1I1II:=I11I11II11;END;
  172. I11111II1I1: IF NOT III1I.IIII11II11III THEN I11111I1III;I1I1111I;I11I11I1III:=TRUE;END;PROCEDURE 
  173. IIII1;BEGIN III1I.I111I11111:=0;III1I.I11I1II1III1:=0;III1I.II111I1:=0;III1I.I1I1II:=0;III1I.II11111
  174. :=FALSE;III1I.IIII11II11III:=FALSE;I11I11I1III:=TRUE;END;PROCEDURE I11I1I11II;BEGIN III1I.
  175. IIII11II11III:=NOT III1I.IIII11II11III;IF NOT III1I.IIII11II11III THEN I11111I1III ELSE III1I.
  176. II11111:=FALSE;I11I11I1III:=TRUE;END;PROCEDURE I11I11III1I11;BEGIN III1I.I111I11111:=III1I.
  177. II11I11I1II1;III1I.I11I1II1III1:=III1I.I11I11;I11111I1III;END;PROCEDURE I111I1I1I111;BEGIN III1I.
  178. II111I1:=III1I.II11I11I1II1;III1I.I1I1II:=PRED(III1I.I11I11);IF III1I.I11I11=1 THEN BEGIN III1I.
  179. II111I1:=PRED(III1I.II11I11I1II1);III1I.I1I1II:=I11I11II11;IF III1I.II111I1=0 THEN III1I.I1I1II:=0;
  180. END;I11111I1III;END;PROCEDURE II11IIII1111;LABEL I111II1I,II1IIII1;VAR III1II1111:INT;BEGIN IF 
  181. I1IIIIII1I[III1I.I11I11] IN II1II1I1 THEN BEGIN III1I.I111I11111:=III1I.II11I11I1II1;III1I.II111I1:=
  182. III1I.II11I11I1II1;III1I.II11111:=TRUE;III1II1111:=III1I.I11I11;REPEAT III1II1111:=PRED(III1II1111);
  183. IF III1II1111=0 THEN GOTO I111II1I;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);I111II1I: III1I.
  184. I11I1II1III1:=SUCC(III1II1111);III1II1111:=III1I.I11I11;REPEAT III1II1111:=SUCC(III1II1111);IF 
  185. III1II1111>II11II1II THEN GOTO II1IIII1;UNTIL NOT(I1IIIIII1I[III1II1111] IN II1II1I1);II1IIII1: 
  186. III1I.I1I1II:=PRED(III1II1111);I111111I11I11:=TRUE;END;END;PROCEDURE II1I1IIII111I;LABEL II11II1I,
  187. I1I1II1I11,I1I111,9999;VAR I11III1I:FILE;II1111II1:II1II1I1I;II11I11II1I1:BYTE ABSOLUTE II1111II1;
  188. I1I11111III1,I1IIII1111II,I11IIII11I:Word;II1I111I,II1II1111II1:I11;IIIII1III1,II1I11I11111I:BOOLEAN
  189. ;I1IIII1II11II:INT;III11I1IIII:I11;BEGIN III1III1I1I11;III111I1;I11I11I1III:=TRUE;II1I111I.I1I:=
  190. I111111111I(III1I.II11I11I1II1,III1I.I11I11);III1I.II11111:=FALSE;II1I11I11111I:=FALSE;II11II1I: 
  191. II11I11II1I1:=0;IIII1I1I1I1('Read block from file: ',II1111II1);III111I111I(II1111II1,III1I.
  192. III111I111I);IF II11I11II1I1=0 THEN GOTO 9999;ASSIGN(I11III1I,II1111II1);RESET(I11III1I,1024);IF 
  193. INT24RESULT<>0 THEN BEGIN I1111II1I11('File '+II1111II1+' not found.');GOTO II11II1I;END;
  194. I1IIII1111II:=FILESIZE(I11III1I);IF I1IIII1111II>=64 THEN GOTO I1I1II1I11;RESET(I11III1I,1);
  195. I1IIII1111II:=FILESIZE(I11III1I);IF I1IIII1111II>III1I.I111I1111 THEN GOTO I1I1II1I11;IF 
  196. I1IIII1111II=0 THEN BEGIN I1111II1I11('Empty file.');GOTO I1I111;END;II1I111(II1I111I.I1II1II11111,
  197. I1IIII1111II);BLOCKREAD(I11III1I,II1I111I.PTR^,I1IIII1111II,I11IIII11I);I1I11111III1:=INT24RESULT;
  198. CLOSE(I11III1I);IF I1I11111III1<>0 THEN BEGIN I1111II1I11('Read error.');GOTO 9999;END;II1II1111II1.
  199. PTR:=II1I111I.PTR;II1II1111II1.I1II1II11111:=II1II1111II1.I1II1II11111+I1IIII1111II-1;IF 
  200. II1II1111II1.I1I^ =^Z THEN BEGIN II1I111(SUCC(II1II1111II1.I1II1II11111),-1);I1IIII1111II:=PRED(
  201. I1IIII1111II);II1II1111II1.I1II1II11111:=PRED(II1II1111II1.I1II1II11111);END;II1I11I11111I:=TRUE;
  202. GOTO I1I111;I1I1II1I11: I1111II1I11('File too large.');I1I111: CLOSE(I11III1I);9999: IF 
  203. II1I11I11111I THEN I1III11II(I1IIII1111II);II1I1I11I1;END;PROCEDURE I11I111I1II11;BEGIN IF III1I.
  204. I111I11111<>0 THEN BEGIN I11I1III(III1I.I111I11111,I11II1.II11IIII1I1 DIV 2,III1I.I11I1II1III1);END;
  205. END;PROCEDURE I1I1111I1;BEGIN IF III1I.II111I1<>0 THEN BEGIN I11I1III(III1I.II111I1,I11II1.
  206. II11IIII1I1 DIV 2,III1I.I1I1II);END;END;FUNCTION I111I111II:BOOLEAN;VAR III1I111II11,I11II,
  207. I1IIII1II1,I1IIII1I11I:I11;II1I1I111I111,I1I1I1:INT;BEGIN I111I111II:=FALSE;IF III1I.II11111 THEN 
  208. BEGIN IF NOT I1II1I11II11I THEN BEGIN III1III1I1I11;III111I1;III1I111II11.I1I:=III1I.I1II1111II1.I1I
  209. ;II1I1I111I111:=III1I.II11I11I1II1;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);
  210. I1IIII1II1.I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.
  211. II111I1,III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;III1I.II11I11I1II1
  212. :=II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.I1I;IF I1I1I1>III1I.I111I1111 THEN BEGIN 
  213. I1111II1I11('Block to large.');END ELSE BEGIN II1I111(I11II.I1II1II11111,I1I1I1);IF I1IIII1II1.
  214. I1II1II11111>I11II.I1II1II11111 THEN BEGIN I1IIII1II1.I1II1II11111:=I1IIII1II1.I1II1II11111+I1I1I1;
  215. I1IIII1I11I.I1II1II11111:=I1IIII1I11I.I1II1II11111+I1I1I1;END;IIII1I1I(I1IIII1II1.I1I^,I11II.I1I^,
  216. I1I1I1);I1III11II(I1I1I1);I11I11I1III:=TRUE;I111I111II:=TRUE;END;II1I1I11I1;END;END;END;PROCEDURE 
  217. III111III1;VAR III1I111II11,I11II,I1IIII1II1,I1IIII1I11I:I11;I1I1I1,II1I1I111I111:INT;RESET:BOOLEAN;
  218. BEGIN IF III1I.II11111 THEN BEGIN II1I1I111I111:=III1I.II11I11I1II1;III111I1;III1I111II11.PTR:=III1I
  219. .I1II1111II1.PTR;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);I1IIII1II1.I1I:=I111111111I
  220. (III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,III1I.I1I1II);
  221. I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;RESET:=FALSE;III1I.II11I11I1II1:=
  222. II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;IF I11II.I1II1II11111>I1IIII1I11I.
  223. I1II1II11111 THEN BEGIN I11II.I1II1II11111:=I11II.I1II1II11111-I1I1I1;RESET:=TRUE;END ELSE IF I11II.
  224. I1II1II11111>=I1IIII1II1.I1II1II11111 THEN BEGIN I11I111I1II11;END;II1I111(I1IIII1I11I.I1II1II11111+1
  225. ,-I1I1I1);IF RESET THEN BEGIN II11IIII(1);II11III111III(I11II.I1II1II11111);END;IIII1;I11I11I1III:=
  226. TRUE;II1I1I11I1;END;END;FUNCTION I11IIIIII:BOOLEAN;VAR III1I111II11,I11II,I1IIII1II1,I1IIII1I11I:I11
  227. ;II1I1I111I111,I1I1I1:INT;RESET:BOOLEAN;BEGIN I11IIIIII:=FALSE;IF III1I.II11111 THEN BEGIN IF NOT 
  228. I1II1I11II11I THEN BEGIN III1III1I1I11;III111I1;III1I111II11.I1I:=III1I.I1II1111II1.I1I;
  229. II1I1I111I111:=III1I.II11I11I1II1;I11II.I1I:=I111111111I(III1I.II11I11I1II1,III1I.I11I11);I1IIII1II1
  230. .I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,
  231. III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;III1I.II11I11I1II1:=
  232. II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.I1I;IF I1I1I1>III1I.I111I1111 THEN BEGIN 
  233. I1111II1I11('Block to large.');END ELSE BEGIN RESET:=I11II.I1II1II11111>I1IIII1I11I.I1II1II11111;
  234. II1I111(I11II.I1II1II11111,I1I1I1);IF I1IIII1II1.I1II1II11111>I11II.I1II1II11111 THEN BEGIN 
  235. I1IIII1II1.I1II1II11111:=I1IIII1II1.I1II1II11111+I1I1I1;I1IIII1I11I.I1II1II11111:=I1IIII1I11I.
  236. I1II1II11111+I1I1I1;END;IIII1I1I(I1IIII1II1.I1I^,I11II.I1I^,I1I1I1);II1I111(I1IIII1I11I.I1II1II11111
  237. +1,-I1I1I1);IF RESET THEN BEGIN I11II.I1II1II11111:=I11II.I1II1II11111-I1I1I1;II11IIII(1);
  238. II11III111III(I11II.I1II1II11111);END;I1III11II(I1I1I1);I11I11I1III:=TRUE;I11IIIIII:=TRUE;END;
  239. II1I1I11I1;END;END;END;PROCEDURE I1III111IIII1;LABEL II11II1I,9999;VAR I11III1I:FILE;II1111II1:
  240. II1II1I1I;II11I11II1I1:BYTE ABSOLUTE II1111II1;BEGIN III111I1;II11I11II1I1:=0;II11II1I: II11I11II1I1
  241. :=0;IIII1I1I1I1('Save File as (<CR> to use current filename): ',II1111II1);III111I111I(II1111II1,
  242. III1I.III111I111I);IF II11I11II1I1=0 THEN II1111II1:=III1I.I111I1I1;ASSIGN(I11III1I,II1111II1);RESET
  243. (I11III1I,1);IF INT24RESULT=0 THEN BEGIN IF II11I1I111II('Overwrite existing file (Y/N)? ',
  244. I11I111I1I1)<>'Y'THEN BEGIN CLOSE(I11III1I);GOTO II11II1I;END;END;REWRITE(I11III1I,1);IF INT24RESULT
  245. <>0 THEN BEGIN I1111II1I11('Error opening file '+II1111II1);GOTO II11II1I;END;CLOSE(I11III1I);IF 
  246. INT24RESULT<>0 THEN;IF I1III1II111(II1111II1)<>0 THEN I1111II1I11('Error writing file '+II1111II1);9999
  247. : II1I1I11I1;END;PROCEDURE I11II1I1I;LABEL II11II1I,9999;VAR I11III1I:FILE;II1111II1:II1II1I1I;
  248. II11I11II1I1:BYTE ABSOLUTE II1111II1;III1I111II11,I1IIII1I11I,I1IIII1II1:I11;I1I1I1,II1I1I111I111:
  249. INT;BEGIN IF III1I.II11111 THEN BEGIN II1I1I111I111:=III1I.II11I11I1II1;III1I111II11.I1I:=III1I.
  250. I1II1111II1.I1I;III111I1;II11I11II1I1:=0;II11II1I: II11I11II1I1:=0;IIII1I1I1I1(
  251. 'Write block to file: ',II1111II1);III111I111I(II1111II1,III1I.III111I111I);IF II11I11II1I1=0 THEN 
  252. GOTO 9999;ASSIGN(I11III1I,II1111II1);RESET(I11III1I,1);IF INT24RESULT=0 THEN BEGIN IF II11I1I111II(
  253. 'Overwrite existing file (Y/N)? ',I11I111I1I1)<>'Y'THEN GOTO II11II1I;END;REWRITE(I11III1I,1);IF 
  254. INT24RESULT<>0 THEN BEGIN I1111II1I11('Error opening file '+II1111II1);GOTO II11II1I;END;I1IIII1II1.
  255. I1I:=I111111111I(III1I.I111I11111,III1I.I11I1II1III1);I1IIII1I11I.I1I:=I111111111I(III1I.II111I1,
  256. III1I.I1I1II);I1I1I1:=I1IIII1I11I.I1II1II11111-I1IIII1II1.I1II1II11111+1;BLOCKWRITE(I11III1I,
  257. I1IIII1II1.PTR^,I1I1I1);IF INT24RESULT<>0 THEN I1111II1I11('Error writing file.');CLOSE(I11III1I);
  258. IF INT24RESULT<>0 THEN;9999: III1I.II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.I1I:=III1I111II11.
  259. I1I;II1I1I11I1;END;END;PROCEDURE II111II1IIII1;BEGIN II1I1I11I1;I111111I11I11:=TRUE;END;PROCEDURE 
  260. I1IIIII111III;VAR I1IIII1II1:I11;III1II1111,I111III1I1I1I:INT;BEGIN IF NOT I11II1I111I THEN EXIT;
  261. I1IIII1II1.I1I:=III1I.I1II1111II1.I1I;IF I1II1I11 THEN;I111III1I1I1I:=III1I.I1II1111II1.I1II1II11111
  262. -I1IIII1II1.I1II1II11111-1;IF (I111III1I1I1I>0) AND (I111III1I1I1I>III1I.I11I11) THEN BEGIN IF 
  263. I111III1I1I1I>I1 THEN I111III1I1I1I:=I1;IIII1I1I(I1IIII1II1.I1I^,I1I1II11I11I,I111III1I1I1I);END 
  264. ELSE BEGIN I1I11III1I1II;EXIT;END;III1II1111:=III1I.I11I11+1;WHILE (III1II1111<=I111III1I1I1I) AND (
  265. I1I1II11I11I[III1II1111]<>' ') DO III1II1111:=SUCC(III1II1111);WHILE (III1II1111<=I111III1I1I1I) 
  266. AND (I1I1II11I11I[III1II1111]=' ') DO III1II1111:=SUCC(III1II1111);IF III1I.I1II1 THEN BEGIN 
  267. I1III111.I1III111.CH:=' ';WHILE III1I.I11I11<III1II1111 DO I1I111I1II END ELSE I111II1II1I(
  268. III1II1111-III1I.I11I11);END;FUNCTION II1I1III1111(VAR IIII:II1II1I1I;UpperCase:BOOLEAN):BOOLEAN;
  269. LABEL 9999;VAR I111III1,I1IIII11III1,I111I1II1,II1I111I:INT;I11I1I:BYTE ABSOLUTE IIII;III1II1:
  270. AnyStr ABSOLUTE I11111I;BEGIN II1I1III1111:=FALSE;III111I1;I111III1:=1;REPEAT I1IIII11III1:=1;IF 
  271. I111III1=1 THEN I1IIII11III1:=III1I.I11I11;I111I1II1:=SUCC(II11II1II-I1IIII11III1);IF I111I1II1>=
  272. I11I1I THEN BEGIN I11111I:=II11II1II;IF UpperCase THEN II111I11IIII(I11111I);II1I111I:=POS(IIII,COPY
  273. (III1II1,I1IIII11III1,255));IF II1I111I>0 THEN BEGIN I111II1II1I(PRED(I1IIII11III1+II1I111I+I11I1I)-
  274. III1I.I11I11);I11I11I1III:=TRUE;II1I1III1111:=TRUE;GOTO 9999;END;END;I111III1:=SUCC(I111III1);UNTIL 
  275. NOT I111I111III;9999: IF UpperCase THEN II1I1I11I1;END;FUNCTION I1II1I1I111I(VAR I111II1I11:
  276. II1II1I1I;IIIIIII1:BOOLEAN):BOOLEAN;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;BEGIN I1II1I1I111I:=TRUE
  277. ;IF NOT IIIIIII1 THEN BEGIN II11I11II1:=0;IIII1I1I1I1('Search string: ',I111II1I11);END;IF 
  278. II11I11II1=0 THEN I1II1I1I111I:=FALSE;END;PROCEDURE II1IIII111(IIIIIII1:BOOLEAN);CONST IIIIIIII1I11:
  279. BOOLEAN=FALSE;II111II11II1:BOOLEAN=FALSE;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;II1I1I111I111:INT;
  280. III1I111II11:I11;III1I1I1111:II1II1I1I;I1I11I1I11:BYTE ABSOLUTE III1I1I1111;BEGIN IF NOT 
  281. I1II1I1I111I(I111II1I11,IIIIIII1) THEN EXIT;I1III1:=II11II;IF NOT IIIIIII1 THEN BEGIN I1I11I1I11:=0;
  282. IIII1I1I1I1('Options: ',III1I1I1111);II111I11IIII(III1I1I1111);IIIIIIII1I11:=POS('U',III1I1I1111)>0;
  283. II111II11II1:=POS('G',III1I1I1111)>0;IF IIIIIIII1I11 THEN II111I11IIII(I111II1I11);END;II1I1I111I111
  284. :=III1I.II11I11I1II1;III1I111II11.PTR:=III1I.I1II1111II1.PTR;IF II111II11II1 THEN II11IIII(1);IF 
  285. II1I1III1111(I111II1I11,IIIIIIII1I11) THEN EXIT;I1111II1I11('"'+I111II1I11+'" NOT found.');III1I.
  286. II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;II1I1I11I1;END;PROCEDURE 
  287. III11I111II1I(IIIIIII1:BOOLEAN);CONST IIIIIIII1I11:BOOLEAN=FALSE;II11111I1:BOOLEAN=TRUE;II111II11II1
  288. :BOOLEAN=FALSE;VAR II11I11II1:BYTE ABSOLUTE I111II1I11;I11III1I1:BYTE ABSOLUTE II1II111I1;III1II1111
  289. ,II1I1I111I111:INT;III1I111II11:I11;I1I1111:BOOLEAN;CH:CHAR;III1I1I1111:II1II1I1I;I1I11I1I11:BYTE 
  290. ABSOLUTE III1I1I1111;BEGIN IF NOT I1II1I1I111I(I111II1I11,IIIIIII1) THEN EXIT;I1III1:=II111I11;IF 
  291. NOT IIIIIII1 THEN BEGIN I11III1I1:=0;IIII1I1I1I1('Replace string: ',II1II111I1);END;IF NOT IIIIIII1 
  292. THEN BEGIN I1I11I1I11:=0;IIII1I1I1I1('Options: ',III1I1I1111);II111I11IIII(III1I1I1111);IIIIIIII1I11
  293. :=POS('U',III1I1I1111)>0;II11111I1:=POS('N',III1I1I1111)=0;II111II11II1:=POS('G',III1I1I1111)>0;IF 
  294. IIIIIIII1I11 THEN II111I11IIII(I111II1I11);END;II1I1I111I111:=III1I.II11I11I1II1;III1I111II11.PTR:=
  295. III1I.I1II1111II1.PTR;IF II111II11II1 THEN II11IIII(1);I1I1111:=FALSE;WHILE II1I1III1111(I111II1I11,
  296. IIIIIIII1I11) DO BEGIN I1I1111:=TRUE;I11I11I1III:=TRUE;II11II1;IF II11111I1 THEN BEGIN I1I1111I11(
  297. III1I.III11I-II11I11II1,III1I.III11I1);IIII11I1(II11I11II1,III11III);I111111I11I11:=TRUE;CH:=
  298. II11I1I111II('Replace (Y/N)? ',I11I111I1I1);END;IF (II11111I1 AND (CH='Y')) OR (NOT II11111I1) THEN 
  299. BEGIN FOR III1II1111:=1 TO II11I11II1 DO I1I1I1I1III;FOR III1II1111:=1 TO I11III1I1 DO BEGIN 
  300. I1III111.I1III111.CH:=II1II111I1[III1II1111];I1I111I1II;END;END;IF NOT II111II11II1 THEN EXIT;END;
  301. IF NOT I1I1111 THEN BEGIN III1I.II11I11I1II1:=II1I1I111I111;III1I.I1II1111II1.PTR:=III1I111II11.PTR;
  302. II1I1I11I1;I1111II1I11('"'+I111II1I11+'" NOT found.');END;END;PROCEDURE I1111I;BEGIN IF I1III1=
  303. II11II THEN II1IIII111(TRUE)ELSE IF I1III1=II111I11 THEN III11I111II1I(TRUE);END;PROCEDURE II1III1;
  304. CONST I1III1III1=5;VAR I1II1I1I1II:Menu_Type;II1I11II:BOOLEAN;III1II11II:INTEGER;Local_Save:
  305. Saved_Screen_Ptr;CH:CHAR;PROCEDURE I111II(II1II1II1I:AnyStr);BEGIN WRITELN('               ',
  306. II1II1II1I);END;PROCEDURE II11111I11II1;VAR CH:CHAR;BEGIN WRITELN('CURSOR MOVEMENT');WRITELN(' ');
  307. I111II('Character left        ^S    Left arrow');I111II('Character right       ^D    Right arrow');
  308. I111II('Word left             ^A    Ctrl left arrow');I111II(
  309. 'Word right            ^F    Ctrl right arrow');I111II('Line up               ^E    Up arrow');
  310. I111II('Line down             ^X    Down arrow');I111II('Scroll up             ^W');I111II(
  311. 'Scroll down           ^Z');I111II('Page up               ^R    PgUp');I111II(
  312. 'Page down             ^C    PgDn');I111II('Left end of line      ^Q^S  Home');I111II(
  313. 'Right end of line     ^Q^D  End');I111II('Top of file           ^Q^R  Ctrl PgUp');I111II(
  314. 'Bottom of file        ^Q^C  Ctrl PgDn');I111II('End of screen         ^Q^X  Ctrl Home');I111II(
  315. 'Top of screen         ^Q^E  Ctrl End');I111II('Start of marked block ^Q^B');I111II(
  316. 'End of marked block   ^Q^K');I111II('Previous position     ^Q^P');END;PROCEDURE IIII1111II;VAR CH:
  317. CHAR;BEGIN WRITELN('INSERT AND DELETE');WRITELN(' ');I111II('Insert mode on/off    ^V    Ins');
  318. I111II('Insert line           ^N    F6');I111II('Delete line           ^Y    F7');I111II(
  319. 'Delete to end of line ^Q^Y');I111II('Delete right word     ^T');I111II('Delete char at cursor ^G');
  320. I111II('Delete left char      <BS>');END;PROCEDURE II1I1I1;VAR CH:CHAR;BEGIN WRITELN(
  321. 'BLOCK COMMANDS');WRITELN(' ');I111II('Mark block start      ^K^B  F8');I111II(
  322. 'Mark block end        ^K^K  F9');I111II('Mark single word      ^K^T');I111II(
  323. 'Hide/show block       ^K^H');I111II('Copy block            ^K^C');I111II(
  324. 'Move block            ^K^V');I111II('Delete block          ^K^Y');I111II(
  325. 'Read block from file  ^K^R');I111II('Write block to file   ^K^W');END;PROCEDURE III111I11III;VAR CH
  326. :CHAR;BEGIN WRITELN('MISCELLANEOUS');WRITELN(' ');I111II('End edit (save file)  ^K^D  F5');I111II(
  327. 'Quit edit (no save)   ^K^X  F10');I111II('Tab                   ^I    Tab');I111II(
  328. 'Auto tab on/off       ^Q^I');I111II('Restore line (undo)   ^Q^L  F2');I111II(
  329. 'Find                  ^Q^F  F3');I111II('Find and replace      ^Q^A  F4');I111II(
  330. 'Repeat last find      ^L');I111II('Control char prefix   ^P');I111II(
  331. 'Help                        F1');END;BEGIN Save_Screen(Local_Save);Make_A_Menu(I1II1I1I1II,
  332. I1III1III1,10,30,0,0,I1III1III1,'Edit help: ',
  333. 'C)ursor movements;I)nsert and delete;B)lock commands;M)iscellaneous;Q)uit;',FALSE);II1I11II:=FALSE;
  334. REPEAT PibTerm_Window(1,2,Max_Screen_Col,PRED(Max_Screen_Line));Clear_Window;Menu_Display_Choices(
  335. I1II1I1I1II);III1II11II:=Menu_Get_Choice(I1II1I1I1II,Erase_Menu);IF (III1II11II<>I1III1III1) THEN 
  336. BEGIN CASE III1II11II OF 1:II11111I11II1;2:IIII1111II;3:II1I1I1;4:III111I11III;END;WRITELN;WRITE(
  337. 'Hit ESC to return to help menu: ');Read_Kbd(CH);WHILE PibTerm_KeyPressed DO Read_Kbd(CH);END ELSE 
  338. II1I11II:=TRUE;UNTIL II1I11II;Restore_Screen(Local_Save);END;PROCEDURE II1III1I(VAR III1I11I111II:
  339. I11I1I11);BEGIN MyFreeMem(III1I11I111II.I1III.PTR,III1I11I111II.III1I1II1I1II);END;PROCEDURE 
  340. III1II111III(VAR III1I11I111II:I11I1I11);BEGIN III1I11I111II.III11I:=1;III1I11I111II.III11I1:=1;
  341. III1I11I111II.I111I1I11I1:=0;III1I11I111II.I11I11:=1;III1I11I111II.II11I11I1II1:=1;III1I11I111II.
  342. I111III:=1;III1I11I111II.III1II1IIIIII:=1;III1I11I111II.III1I1:=1;III1I11I111II.II1I1I:=FALSE;
  343. III1I11I111II.I111I1111:=III1I11I111II.III1I1II1I1II;III1I11I111II.I1IIII1111II:=0;III1I11I111II.
  344. I1II1111II1:=III1I11I111II.I1III;III1I11I111II.I111IIIIIII1:=PRED(III1I11I111II.I1III.I1II1II11111);
  345. III1I11I111II.II11111:=FALSE;III1I11I111II.IIII11II11III:=FALSE;III1I11I111II.I111I11111:=0;
  346. III1I11I111II.I11I1II1III1:=0;III1I11I111II.II111I1:=0;III1I11I111II.I1I1II:=0;III1I11I111II.
  347. I111I1I1[0]:=#0;END;PROCEDURE II1I11I1III(VAR III1I11I111II:I11I1I11;VAR II1111II1:II1II1I1I);BEGIN 
  348. III1I11I111II.I111I1I1:=II1111II1;END;FUNCTION III1III1II1I(VAR III1I11I111II:I11I1I11;III1II11I111:
  349. Word;I1I111II1I,IIIII1,III11,I1I11III:INT;I1III1I1:BOOLEAN;III111I111I:I1II1111I11I):INT;LABEL 9999;
  350. VAR II1III1III:LongInt;BEGIN II111I11II11(III1I11I111II);III1III1II1I:=0;I1IIIIIII11I(I1I111II1I,
  351. IIIII1,III11,I1I11III,I1III1I1);II1III1III:=MAXAVAIL;IF (II1III1III<III1II11I111) THEN BEGIN 
  352. III1III1II1I:=1;GOTO 9999;END;III1I.III1I1II1I1II:=III1II11I111;GETMEM(III1I.I1III.PTR,III1II11I111)
  353. ;IF (III1I.I1III.PTR=NIL) THEN BEGIN III1III1II1I:=1;GOTO 9999;END;III1II111III(III1I);III1I.
  354. III111I111I:=III111I111I;III1I.I1II1:=TRUE;III1I.IIIIII1II11I:=TRUE;9999: II1II1II1111(III1I11I111II
  355. );END;FUNCTION II1I111111I(VAR III1I11I111II:I11I1I11;II1111II1:II1II1I1I):INT;LABEL 9999;VAR 
  356. I11III1I:FILE;I11I1III1,I1IIII1111II,I11IIII11I:Word;IIII11II1111:I11;BEGIN III1II111III(
  357. III1I11I111II);II111I11II11(III1I11I111II);II1I111111I:=0;III1I.I111I1I1:=II1111II1;ASSIGN(I11III1I,
  358. III1I.I111I1I1);RESET(I11III1I,1024);IF IORESULT<>0 THEN BEGIN II1I111111I:=II;GOTO 9999;END;
  359. I1IIII1111II:=FILESIZE(I11III1I);IF (I1IIII1111II>64) THEN BEGIN II1I111111I:=I1I111I1I;CLOSE(
  360. I11III1I);GOTO 9999;END;RESET(I11III1I,1);I1IIII1111II:=FILESIZE(I11III1I);IF (I1IIII1111II>III1I.
  361. III1I1II1I1II) THEN BEGIN II1I111111I:=I1I111I1I;CLOSE(I11III1I);GOTO 9999;END;IF I1IIII1111II<>0 
  362. THEN BEGIN BLOCKREAD(I11III1I,III1I.I1III.PTR^,I1IIII1111II,I11IIII11I);I11I1III1:=IORESULT;CLOSE(
  363. I11III1I);IF I11I1III1<>0 THEN BEGIN II1I111111I:=II111II111;GOTO 9999;END;III1I.I1IIII1111II:=
  364. I11IIII11I;III1I.I111IIIIIII1:=III1I.I1III.I1II1II11111+I11IIII11I-1;III1I.I111I1111:=III1I.
  365. I111I1111-I11IIII11I;IIII11II1111.I1II1II11111:=III1I.I111IIIIIII1;IIII11II1111.II111I11II:=III1I.
  366. I1III.II111I11II;IF IIII11II1111.I1I^ =^Z THEN BEGIN III1I.I111IIIIIII1:=PRED(III1I.I111IIIIIII1);
  367. III1I.I1IIII1111II:=PRED(III1I.I1IIII1111II);III1I.I111I1111:=SUCC(III1I.I111I1111);END;END;9999: 
  368. II1II1II1111(III1I11I111II);END;FUNCTION I1I11I1111I1(VAR III1I11I111II:I11I1I11;I1I111II1I,IIIII1,
  369. III11,I1I11III:INT;II11I:I111II1111I;I111III1,I111I:INT;VAR II1II1):INT;LABEL III1II11,9999;VAR 
  370. I11II111IIII1,III1II1111,I111I1II1:INT;I111III,III1II1IIIIII,III1I1:INT;II1II1I111II:BOOLEAN;
  371. I111111I1I1:ARRAY[0..100] OF INT ABSOLUTE II1II1;BEGIN II111I11II11(III1I11I111II);IIII111:=0;
  372. II1III1I11I(I1I111II1I,IIIII1,III11,I1I11III,II11I);IF (I111III1<>0) AND (I111I<>0) THEN BEGIN 
  373. I11I1III(I111III1,I11II1.II11IIII1I1 DIV 2,I111I-III1I.I11I11);END;II1I1I11I1;II1III11I:=FALSE;
  374. I11I11I1III:=TRUE;I1II1I11I:=TRUE;REPEAT I111III:=III1I.II11I11I1II1;III1II1IIIIII:=III1I.I11I11;
  375. III1I1:=III1I.III11I1;II11II1;II1II111I1I(III1I.III11I,III1I.III11I1);II11II11(I1III111);
  376. II1II1I111II:=FALSE;I11II111IIII1:=1;III1II1111:=0;REPEAT I111I1II1:=I111111I1I1[III1II1111];IF 
  377. I111I1II1=0 THEN GOTO III1II11;III1II1111:=SUCC(III1II1111);IF I111111I1I1[III1II1111]=I1III111.
  378. I11I1III1 THEN BEGIN IIII111:=I11II111IIII1;IF I111I1II1=1 THEN GOTO 9999 ELSE BEGIN II1II1I111II:=
  379. TRUE;III1II1111:=SUCC(III1II1111);GOTO III1II11;END;END;III1II1111:=III1II1111+I111I1II1;
  380. I11II111IIII1:=SUCC(I11II111IIII1);UNTIL FALSE;III1II11: IF I1III111.I1I1I1II11=I11III1I11 THEN 
  381. I1I111111I(I1III111);IF II1II1I111II THEN BEGIN II1II1I111II:=FALSE;IF I111111I1I1[III1II1111]=
  382. I1III111.I11I1III1 THEN GOTO 9999;END;CASE I1III111.I1I1I1II11 OF I1II1II1:II1III1II1II1;
  383. IIII1I1I11II1:I1I1I1I1III;III1:I11111II;I1I1II111:II1111111I1;II1II1III:IF I111I111III THEN;
  384. II11III1II:IF I1III11 THEN;I1I1III1I:I11III111;I1II1I111I1:I1IIII11;IIIII1I1I:I1I11I11II1I;I1IIIIIII
  385. :I11I1111II1I1;IIII11111I1I1:IIIIIII1III11;I111I1:II11111II;I1111I1111II:I111II1II;I11I:I1I1II1II;
  386. I111IIIIII1II:I1I11III1I1II;III111III:II1111I1111II;II1I1:II11III1I;II1I1I11:I1III1111;I111I1II1I1I:
  387. I11III1I1I1I1;I11I1IIII:II1III1I1I;I1111I1:II1111I1I1II;I111IIII11I:II1III11I:=TRUE;I1I1I111:II1II1I
  388. ;I1I1II11111I:III1II;IIIII:I1I1III111I1;II1I1I111:I11I1111I;I11III:III1III1II1;I1II11I1I:
  389. III11I11II11;I11II1111I:BEGIN III1I.I1II1:=NOT III1I.I1II1;I1II1I11I:=TRUE;END;I11I111111I:
  390. I1IIIII1I11II;I1I11I1111I:I111I1II11I1;III1IIII1II:I111I1I1I;IIII1II1111:I11I11III1I11;IIIII1II11:
  391. I111I1I1I111;I1I11III1I1I:II11IIII1111;I1II11I1III11:II1I1IIII111I;I111I11I1:I11I111I1II11;II1IIIII:
  392. I1I1111I1;III111I:IF I111I111II THEN;IIII1I1:III111III1;III1III1I1:IF I11IIIIII THEN;III1I1II1:
  393. I11II1I1I;III111I111II:I11I1I11II;III1II1I11I1:BEGIN III1I.IIIIII1II11I:=NOT III1I.IIIIII1II11I;
  394. I1II1I11I:=TRUE;END;I1I11I:II111II1IIII1;II1III:I1IIIII111III;II11II:II1IIII111(FALSE);II111I11:
  395. III11I111II1I(FALSE);I11IIIIII111I:I1111I;II1:I1III111IIII1;IIII1III1:II1III1;II1II:BEGIN IIII111:=-1
  396. ;II1III11I:=TRUE;END;IIIIII:;ELSE ;END;IF (I111III<>III1I.II11I11I1II1) OR (III1II1IIIIII<>III1I.
  397. I11I11) OR (III1I1<>III1I.III11I1) THEN BEGIN III1I.I111III:=I111III;III1I.III1II1IIIIII:=
  398. III1II1IIIIII;III1I.III1I1:=III1I1;END;UNTIL II1III11I;9999: III111I1;II1II1II1111(III1I11I111II);
  399. I1I11I1111I1:=IIII111;END;FUNCTION I1II1I111II11(VAR III1I11I111II:I11I1I11):BOOLEAN;BEGIN 
  400. I1II1I111II11:=III1I11I111II.II1I1I;END;FUNCTION II1I1II1(VAR III1I11I111II:I11I1I11):INT;BEGIN 
  401. II111I11II11(III1I11I111II);II1I1II1:=I1III1II111(III1I.I111I1I1);III1I.II1I1I:=FALSE;II1II1II1111(
  402. III1I11I111II);END;
  403.