home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG023.ARK / EDIT.DOC < prev    next >
Text File  |  1984-04-29  |  8KB  |  256 lines

  1.  
  2.  
  3. ***************************************************************************
  4. ** COPYRIGHT (C) MASSACHUSETTS INSTITUTE OF TECHNOLOGY AND HARVARD       **
  5. ** UNIVERSITY, BIOMEDICAL ENGINEERING CENTER 1977.  ALL RIGHTS RESERVED. **
  6. ***************************************************************************
  7.  
  8. STOIC DISPLAY EDITOR
  9. J. SACHS
  10. 2/8/77
  11.  
  12.     THE STOIC DISPLAY EDITOR IS SIMILAR TO THE NOVA DISPLAY
  13. EDITOR.  WHEN INVOKED, IT MODIFIES THE STOIC PROMPT MESSAGE TO
  14. INCLUDE TYPING OUT A SECTION OF TEXT ON EITHER SIDE OF THE
  15. CURSOR.  THE CURSOR ITSELF IS DISPLAYED AS A "~".  THE TWO
  16. AUXILLIARY CURSORS (P1 AND P2) ARE DISPLAYED AS "{" AND "}"
  17. RESPECTIVELY.  THE FIRST LINE OF THE DISPLAY GIVES THE INPUT
  18. FILE NAME ("*" IF NONE) FOLLOWED BY THE OUTPUT FILE NAME
  19. ("*" IF NONE).  THE EDITOR ALSO MODIFIES THE ERROR MESSAGE HANDLER
  20. TO ERASE THE SCREEN, DISPLAY THE ERROR MESSAGE, AND WAIT FOR A
  21. CARRIAGE RETURN TO RESTORE THE NORMAL TEXT DISPLAY.  A LIST OF EDITOR
  22. COMMANDS FOLLOWS:
  23.  
  24. COMMAND    DESCRIPTION
  25.  
  26. EDIT    ENTER EDITOR
  27.  
  28. H    EXIT EDITOR
  29.  
  30. B    MOVE CURSOR TO BEGINNING OF TEXT BUFFER
  31. Z    MOVE CURSOR TO END OF TEXT BUFFER
  32.  
  33. N M    MOVE CURSOR N CHARACTERS (N MAY BE NEGATIVE)
  34. N L    MOVE CURSOR N LINES (N MAY BE NEGATIVE)
  35.  
  36. N <M>    SET P1 AT CURRENT CURSOR LOCATION, MOVE N
  37.     CHARACTERS, SET P2 AT CURRENT CURSOR LOCATION,
  38.     SWAP P1 AND P2 IF P1 > P2.
  39.  
  40. N <L>    SET P1 AT CURRENT CURSOR LOCATION, MOVE N
  41.     LINES, SET P2 AT CURRENT CURSOR LOCATION,
  42.     SWAP P1 AND P2 IF P1 > P2.
  43.  
  44. <ALL>    SET P1 TO BEGINNING OF TEXT BUFFER, SET P2 TO
  45.     END OF TEXT BUFFER.
  46.  
  47. LINE#    PUSH THE LINE NUMBER OF THE LINE CONTAINING THE CURSOR.  LINE
  48.     NUMBERS START AT ZERO.
  49.  
  50. <S>    GIVEN A FLAG AT TOP-2, A POINTER AT TOP-1 AND A BYTE COUNT AT TOP;
  51.  
  52.     IF THE FLAG IS NON-ZERO,
  53.      SEARCH FORWARDS, STARTING AT THE CURRENT CURSOR LOCATION FOR
  54.      THE SPECIFIED STRING.  IF FOUND, P1 POINTS TO THE BEGINNING
  55.      OF THE STRING, P2 AND THE CURSOR POINT TO THE END AND
  56.      A -1 IS RETURNED ON THE STACK.  IF NOT FOUND, A ZERO
  57.      IS RETURNED ON THE STACK.
  58.  
  59.     IF THE FLAG IS ZERO,
  60.      SEARCH BACKWARDS, STARTING AT THE CURRENT CURSOR LOCATION FOR
  61.      THE SPECIFIED STRING.  IF FOUND, P1 AND THE CURSOR POINT TO
  62.      THE BEGINNING OF THE STRING, P2 POINTS TO THE END AND
  63.      A -1 IS RETURNED ON THE STACK.  IF NOT FOUND, A ZERO
  64.      IS RETURNED ON THE STACK.
  65.  
  66. 'STR S    SEARCH FOR THE GIVEN STRING.  IF NOT FOUND, THE ERROR
  67.     "MISSING" IS GIVEN.
  68.  
  69. 'STR BS    BACKWARDS SEARCH FOR THE GIVEN STRING.  IF NOT FOUND,
  70.     THE ERROR "MISSING" IS GIVEN.
  71.  
  72. <N>    SIMILAR TO <S>, EXECPT THAN IF THE STRING IS NOT FOUND,
  73.     A "1 R" IS EXECUTED AND THE SEARCH IS CONTINUED ON THE
  74.     NEXT PAGE.  THE SEARCH FAILS IF EOF IS ENCOUNTERED.
  75.  
  76. 'STR N    GLOBAL SEARCH FOR THE GIVEN STRING.  IF NOT FOUND, THE
  77.     ERROR "MISSING" IS GIVEN.
  78.  
  79. <D>    DELETE THE TEXT BETWEEN P1 AND P2.
  80.  
  81. D    DELETE N CHARACTERS STARTING AT THE CURSOR.
  82. DL    DELETE N LINES STARTING AT THE CURSOR.
  83. DA    DELETE THE ENTIRE TEXT BUFFER.
  84.  
  85. <I>    GIVEN BYTE COUNT AT TOP AND BYTE POINTER AT TOP - 1,
  86.     INSERT THE SPECIFIED STRING AT THE CURSOR LOCATION.
  87.     IF THE INSERT WILL NOT FIT, THE ERROR "CORE FULL" IS
  88.     GIVEN.
  89.  
  90. <IL>    GIVEN BYTE COUNT AT TOP AND BYTE POINTER AT TOP - 1,
  91.     INSERT THE SPECIFIED STRING FOLLOWED BY A RETURN.
  92.  
  93. <IP>    GIVEN BYTE COUNT AT TOP AND BYTE POINTER AT TOP - 1,
  94.     INSERT THE SPECIFIED STRING FOLLOWED BY A FORM FEED.
  95.  
  96. 'STR IS    INSERT STRING.
  97. 'STR IL    INSERT STRING FOLLOWED BY RETURN.
  98. 'STR IP    INSERT STRING FOLLOWED BY FORM FEED.
  99. ICR    INSERT A RETURN.
  100. IFF    INSERT A FORM FEED.
  101. N I#    CONVERT N TO A STRING AND INSERT IT.
  102.  
  103. I/    CAUSES THE EDITOR TO ENTER INSERT MODE; THE DISPLAY IS REDRAWN
  104.     MINUS THE TEXT FOLLOWING THE CURSOR.  ALL CHARACTERS TYPED IN
  105.     AT THE KEYBOARD ARE INSERTED INTO THE TEXT BUFFER UP TO THE
  106.     THE FIRST ESCAPE CHARACTER.  AT THIS POINT, NORMAL DISPLAY IS
  107.     RESUMED.  RUBOUT OR NULL MAY BE USED TO DELETE THE LAST CHARACTER
  108.     OR THE ENTIRE INSERT RESPECTIVELY.  THE ASCII CODE FOR THE ESCAPE
  109.     CHARACTER MAY BE RESET BY MODIFYING THE VARIABLE "ESC".
  110.  
  111. 'STR U        DELETE TEXT BETWEEN P1 AND P2, INSERT STRING.
  112. 'STR1 'STR2 C    CHANGE STRING 1 TO STRING 2.
  113. 'STR1 'STR2 BC    BACKWARDS CHANGE STRING 1 TO STRING 2.
  114. 'STR1 'STR2 V    CHANGE STRING 1 TO STRING 2; A GLOBAL SEARCH ("N") FOR
  115.         STRING 1 IS PERFORMED.
  116.  
  117. 'STR SD        SEARCH FOR AND DELETE STRING.
  118.  
  119. 'STR1 'STR2 CC    CONDITIONAL CHANGE STRING 1 TO STRING 2.
  120. 'STR1 'STR2 BCC    BACKWARDS CONDITIONAL CHANGE STRING 1 TO STRING 2.
  121. 'STR1 'STR2 CV    CONDITIONAL CHANGE STRING 1 TO STRING 2
  122.         A GLOBAL SEARCH ("N") FOR STRING 1 IS PERFORMED.
  123.  
  124.         CONDITIONAL CHANGES FIRST SEARCH FOR STRING 1
  125.  
  126.         IF NOT FOUND, THE ERROR "MISSING" IS GIVEN
  127.  
  128.         IF FOUND, THE COMMAND WAITS FOR THE OPERATOR
  129.         TO TYPE A KEY
  130.  
  131.         IF A LINE FEED IS TYPED, STRING 1 IS REPLACED BY
  132.         STRING 2 AND ANOTHER SEARCH FOR STRING 1 IS
  133.         PERFORMED.
  134.  
  135.         IF A CARRIAGE RETURN IS TYPED, STRING 1 IS NOT
  136.         REPLACED BY STRING 2 AND ANOTHER SEARCH FOR
  137.         STRING 1 IS PERFORMED.
  138.  
  139.         IF ANY OTHER KEY IS TYPED, THE COMMAND RETURNS.
  140.  
  141. <XC>    COPY THE TEXT BETWEEN P1 AND P2 INTO THE "X" BUFFER.
  142.  
  143. N XC    COPY N CHARACTERS INTO THE "X" BUFFER.
  144. N XCL    COPY N LINES INTO THE "X" BUFFER.
  145.  
  146. N XM    MOVE N CHARACTERS INTO THE "X" BUFFER.
  147. N XML    MOVE N LINES INTO THE "X" BUFFER.
  148.  
  149. XG    INSERT THE CONTENTS OF THE "X" BUFFER AT THE CURRENT
  150.     CURSOR LOCATION.
  151.  
  152. 'FILE GR    OPEN THE SPECIFIED FILE FOR INPUT
  153. 'FILE GW    OPEN THE SPECIFIED FILE FOR OUTPUT
  154.  
  155. GX        FLUSH INPUT AND OUTPUT FILES
  156.         OUTPUT FILE IS DELETED.
  157.  
  158. 'FILE O    OPEN THE SPECIFIED FILE FOR INPUT,
  159.     OPEN "<EDSC>" FOR OUTPUT,
  160.     DO A "1 YP" TO READ THE FIRST PAGE
  161.     OF THE INPUT FILE.
  162.  
  163. W    IF THERE IS AN INPUT FILE, ANY REMAINING PAGES
  164.     ARE COPIED INTO THE OUTPUT FILE, TWO EOF'S ARE
  165.     OUTPUT, THE OUTPUT FILE IS CLOSED, THE INPUT FILE
  166.     IS DELETED AND THE OUTPUT FILE IS RENAMED TO THE
  167.     INPUT FILE.
  168.  
  169.     IF THERE IS NO INPUT FILE, THE TEXT BUFFER IS
  170.     WRITTEN OUT, FOLLOWED BY TWO EOF'S AND THE
  171.     OUTPUT FILE IS CLOSED.
  172.  
  173. 'FILE WR
  174.     IF THERE IS AN INPUT FILE, ANY REMAINING PAGES
  175.     ARE COPIED INTO THE OUTPUT FILE, TWO EOF'S ARE
  176.     OUTPUT, THE OUTPUT FILE IS CLOSED, THE OUTPUT
  177.     FILE IS RENAMED TO THE THE GIVEN FILE NAME.
  178.  
  179.     IF THERE IS NO INPUT FILE, THE TEXT BUFFER IS
  180.     WRITTEN OUT, FOLLOWED BY TWO EOF'S AND THE
  181.     OUTPUT FILE IS RENAMED TO THE GIVEN FILE NAME.
  182.  
  183. WO    WRITE OUT THE CURRENT FILE AND REOPEN IT; I.E. START
  184.     A NEW EDIT PASS.
  185.  
  186. 'FILE WRO
  187.     WRITE OUT THE CURRENT FILE AND RENAME IT.  OPEN THE
  188.     NEW FILE.  THE ORIGINAL INPUT FILE REMAINS INTACT.
  189.  
  190. <P>    OUTPUT TEXT BETWEEN P1 AND P2
  191. PEOF    OUTPUT AN EOF.
  192. N P    OUTPUT N CHARACTERS STARTING AT CURSOR.
  193. N PL    OUTPUT N LINES STARTING AT CURSOR.
  194. PA    OUTPUT ENTIRE TEXT BUFFER.
  195.  
  196. M N <A>    APPEND M LINES USING CHARACTER N AS A LINE TERMINATOR.
  197.     LEAVE EOF FLAG ON STACK.
  198.  
  199. N <AL>    APPEND N LINES.
  200.     LEAVE EOF FLAG ON STACK.
  201.  
  202. N <AP>    APPEND N PAGES.
  203.     LEAVE EOF FLAG ON STACK.
  204.  
  205. N AL    APPEND N LINES.
  206.     GIVE ERROR ON EOF.
  207.  
  208. N AP    APPEND N PAGES.
  209.     GIVE ERROR ON EOF.
  210.  
  211. N <YL>    DELETE TEXT BUFFER AND APPEND N LINES.
  212.     LEAVE EOF FLAG ON STACK.
  213.  
  214. N <YP>    DELETE TEXT BUFFER AND APPEND N PAGES.
  215.     LEAVE EOF FLAG ON STACK.
  216.  
  217. N YL    DELETE TEXT BUFFER AND APPEND N LINES.
  218.     GIVE ERROR ON EOF.
  219.  
  220. N YP    DELETE TEXT BUFFER AND APPEND N PAGES.
  221.     GIVE ERROR ON EOF.
  222.  
  223. N <R>    OUTPUT TEXT BUFFER AND READ NEXT N PAGES
  224.     LEAVE EOF FLAG ON STACK.
  225.  
  226. N R    OUTPUT TEXT BUFFER AND READ NEXT N PAGES.
  227.     GIVE ERROR ON EOF.
  228.  
  229. FL    DISPLAYS THE DIRECTORY.  NORMAL DISPLAY IS
  230.     RESTORED BY TYPING RETURN.
  231.  
  232. <T>    TYPE TEXT BETWEEN P1 AND P2.
  233.  
  234. N T    TYPE N CHARACTERS STARTING AT CURSOR.
  235.  
  236. N TL    TYPE N LINES STARTING AT CURSOR.
  237.  
  238. TA    TYPE ENTIRE TEXT BUFFER.
  239.  
  240.  
  241. NOTE:
  242.  
  243.     WHEN GENERATING A CORE IMAGE OF THE EDITOR, THE FOLLOWING
  244. PROCEDURE SHOULD BE USED:
  245.  
  246. 'ED LOAD
  247. 'EDCI WRCI EDIT
  248.  
  249. THIS WILL WRITE OUT AN EDITOR CORE IMAGE "EDCI" WHICH MAY BE USED
  250. ON MACHINES WITH DIFFERENT AMOUNTS OF MEMORY, SINCE ALL THE EDITOR
  251. POINTERS ARE RE-INITIALIZED EVERY TIME IT IS READ IN.
  252.  
  253.  
  254.  
  255. ***EOF***
  256.