perm filename WFLOW[1,PMP] blob sn#008027 filedate 1971-08-10 generic text, type T, neo UTF8
     There is a flow-chart drawing program. It is essentially
a file editor. It reads a text file with a name of the form
FLx where x is any digit, and writes the updated version on
a new version of the file (with the same name). The file must
be there to start with, so to get started, you must create a
null file. This is done most easily with SOS. 
     The program is called FLOW and exists as a dump on [1,PMP].
When you start it it types out "TYPE FILE NUMBER =", at which
point you type the digit (no CR is needed). The program reads
the file and displays the first 20 lines on the screen. You are
now basically looking at a 120 by 20 character array. You may
move the cursor around in that array, and make changes as you
wish. Since the screen is not 120 characters wide, only the
first part of each line is shown; there are commands for moving
the window left and right. You can also move the text up one
line at a time, but the top line get written out and cannot be
retrieved; a new line (from the file, if any lines left) is
inserted at the bottom. DO NOT USE TAB as tabs are not expanded
by the display program.
     A list of the commands follows:

          (     (with one or more control bits)  --    MOVE CURSOR LEFT (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)

          )     (with one or more control bits)  --    MOVE CURSOR RIGHT (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)

          /     (with one or more control bits)  --    MOVE CURSOR UP (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)

          \     (with one or more control bits)  --    MOVE CURSOR DOWN (1,2 OR 4) AND REMEMBER CR POSITION (SEE CR)

        <BS>                      --                   MOVE CURSOR LEFT AND DO NOT REMEMBER CR POSITION

        <CR>                      --                   MOVE CURSOR DOWN ONE LINE AND LEFT TO POSITION SET BY            
                                                                                           MOST RECENT MOVING COMMAND.

          ←        (with  CONTROL)                     MOVE TEXT LEFT 8 CHR. POSITIONS (WINDOWING)

          →        (with  CONTROL)                     MOVE TEXT RIGHT 8 CHR. POSITIONS (WINDOWING)

          ↑        (with  CONTROL)                     MOVE TEXT UP (PUT TOP LINE OUT ON FILE)

          P        (with  CONTROL)                     REMEMBER CURRENT CURSOR POSITION AS UPPER LEFT CORNER OF A BLOCK

          P        (with  META)                        REMEMBER CURRENT CURSOR POSITION AS LOWER RIGHT CORNER OF A BLOCK

          M        (with  META)                        GO INTO MOVE MODE MOVING THE CURREN REMEMBERED BLOCK (SEE MOVING) 
                                                        
          M        (with  CONTROL)                     GO INTO MOVE MODE MOVING THE BOX YOU ARE INSIDE (SEE MOVING)

        <any chr>  (without control bits)              Insert the character at the current cursor position and step     
                                                       cursor one place right, except if the chr. typed was |
                                                       (vert. bar) in which case cursor is stepped one place down.
                                                       <CR> and <LF> are not inserted.  This does not move any text
                                                       around, it merely changes the chr. at the current position to the
                                                       one typed.

        <space>    (with META)                         INSERT A SPACE AT CURRENT POSITION, MOVING TEXT ON THAT LINE TO
                                                                                           THE RIGHT.

        <space>    (with META and CONROL)              DELETE THE CHR. AT THE CURRENT POSITION, MOVING TEXT ON THAT LINE
                                                                                           TO THE LEFT.

          I        (with CONTROL)                      INSERT A BLANK LINE AT CURRENT LINE POSITION. MOVE THOSE ABOVE UP

          D        (with CONTROL)                      DELETE CURRENT LINE. MOVE THOSE BELOW UP.

          E        (with CONTROL)                      END THE EDIT. REST OF FILE IS READ AND WRITTEN AND FILE IS CLOSED
                                                                 UP TO THIS POINT, SAYING CALL WILL LEAVE THE ORRIGINAL 
                                                                 FILE UNCHANGED.


            MOVING:

      A block to be moved is always square. It may be delineated by the P commands,
or it may be a box which you are inside. The box must be made of | and _ and be of
the following form. Note carefully the corners. No variation of form is allowed.

                ____________________
                | this is a box    |
                | it may have text |
                ____________________

      When you are in move mode, only 5 commands are accepted. They are the moving
commands, and space. The moving commands {i.e.  "()/\"  } move the block one position
in the indicated direction, regardless of control bits. Space gets you out of 
move mode.

      THE CURSOR IS THE _ CHARACTER, IT CAN BE HARD TO FIND.

      Typeing <CNTRL> <DIGIT> (for as many digits as you wish) multiplies the next
character typed (other than control digit) by that many. So <CNTRL> 2 <CNTRL> 4 <CNTRL> ↑
would move the text up 24 lines.