d
i
g
i
t
a
l
digital equipment corporation · maynard, massachusetts
MEMORY ADDRESS
EMA
RUN
The scroll editor used the scope of a PDP-12 or the point plot display (VC8E) of a PDP8 for file editing.

                      SCROLL: A Scrolling Editor for OS/8


                               Darrell J. Duffy
                                 Computer Lab
                    Department of Physiology and Biophysics
                    West Virginia University Medical Center
                           Morgantown, West Virginia


                                 January 1973
































                         Edited by: Thomas W. McIntyre
                          Current Version SCROLL V11







                           SCROLL Table of Contents



              Preface .................................... 1 

              Using SCROLL ............................... 2 

              General Structure .......................... 3 

              File Edit class commands ................... 4 
                   Creating, Editing, and Deleting ....... 5 
                   Edit Output ........................... 6 
                   Edit Input ............................ 7 

              Command Line Commands 
                   Text Position commands ............... 10 
                   Text Deletion commands ............... 11 
                   Text String commands ................. 12 
                   X Buffer commands .................... 14 
                   Repeat command ....................... 15 

              Text Mode Commands 
                   Formating Characters ................. 16 
                   Text Deletion ........................ 16 
                   Cursor Position ...................... 16 
                   Search and Macro ..................... 17 
                   I/O Switches ......................... 18 

              The Display of SCROLL ..................... 19 
                   Using SCROLL Without Display ......... 20 
                   KBSCRL Display ....................... 21 
                   Auto Tab Insertion ................... 23 
                   Auto Tab for Assembler Users ......... 23 
                   Auto Tab for FORTRAN or BASIC Users .. 24 

              Switching from DIAL to SCROLL ............. 25 

              Protecting Files .......................... 28 

              Advanced Uses of SCROLL 
                   Recovering Overfull Files ............ 29 
                   Extending Files ...................... 29 
                   Recovering Smashed Devices ........... 30 

              PIP and SCROLL files ...................... 31 

              Chaining to SCROLL ........................ 33 

              Patches to SCROLL ......................... 34 

              Error Messages ............................ 35 

              Summary of Commands ....................... 37 











              Preface 

              SCROLL  is  a  bidirectional  editor.   This  means that
         SCROLL edits a single file instead of inputting from  a  file
         and  outputting  edited  text to another file.  SCROLL allows
         moving through the edit file  in  either  direction  with  no
         restrictions.   Formfeed  characters  within the file provide
         convenient markers but do not restrict  movement.   The  file
         currently  being edited is termed the main file.  In addition
         there are two files known as auxiliary  files  which  may  be
         opened.   One  of  these  files  is  for input and one is for
         output.  These auxiliary files allow merging or splitting  of
         edit  files  easily.  A page in either the auxiliary files or
         the main file is the text delimited  by  form  feeds.   Pages
         provide the basis for control of some of the editing commands
         to SCROLL.  

              There are two types of commands to  SCROLL:   Text  Mode
         commands  and  Command Line commands.  Text Mode commands are
         CTRL keys typed in Text Mode and  are  executed  immediately.
         CTRL  keys  are keys typed while the CTRL key on the teletype
         is held down.  Command Line commands are typed into a special
         Command  Line  buffer which is displayed at the bottom of the
         scope.  

              SCROLL maintains the file as a continuous packed  string
         of  characters.   Part of the file is maintained in memory to
         be displayed and changed.  When too much  is  added  for  the
         memory to accomodate, the remainder of the file is moved down
         to allow room.  This is why the block limits of the file must
         be  greater than the actual size of the text edited.  When an
         EXIT or QUIT command is done, SCROLL writes out  all  of  the
         file  from memory so that it is a continuous packed string on
         the editing device.  



























         Using SCROLL

              SCROLL is distributed  as  a  save  file.   To  run  the
         program,  enter  the  following  line  to  the  OS/8 Keyboard
         Monitor's dot.  

                .R SCROLL

         The current version number will be printed out.  

              One of two commands must be given to  SCROLL  before  it
         may  do  anything else.  If you are just starting to create a
         new file, you should enter the command:  

                               $EMSYS:FILE.EX$$                               _             __

         Where $ stands for Altmode.  This  command  will  make  a  10               _                                                      
         block  file called FILE.EX on the system device.  You may now
         type in  your  program  text  or  data  or  whatever.   After
         completing  this  initial  editing  session, you will want to
         return to the OS/8 Keyboard Monitor.  The command  to  return
         to the OS/8 Keyboard Monitor from SCROLL is:  

                                    $QUIT$$                                    _    __


              The  next  time you wish to edit the file called FILE.EX
         you must use the command:  

                               $EDSYS:FILE.EX$$                               _             __

         This gets you to the first  line  of  the  file.   Again,  to
         return to the OS/8 Keyboard Monitor, enter the command 

                                    $QUIT$$                                    _    __





















                                   SCROLL-2





                             Command Line Commands

         General Structure 

              When  Altmode  (Escape  or  Prefix on some terminals) is
         typed  in  Text  Mode,  Command  Mode  is  entered  and   any
         characters  typed are then entered into a Command Line buffer
         to be executed as a command.  During entry of a Command Line,
         RUBOUT and CTRL/U may be used to edit it.  RUBOUT removes the
         last character entered  from  the  Command  Line  and  CTRL/U
         ignores  the  Command  Line  and  returns  to  Text  Mode.  A
         carriage return typed into the Command Line is entered  as  a
         CR/LF  combination  and  a linefeed is entered as a linefeed.
         When an Altmode is typed, it is stored in  the  Command  Line
         unless  the  previous character was an Altmode.  In this case
         the command is executed.  Before the command is  executed  it
         will  be echoed if Command Line echo or full echo is enabled.

              Multiple commands may be entered on a Command Line.  The
         commands  are  executed  in  order  and  any error will cause
         termination of the command string at the point of the  error.
         The  commands  may,  but  need  not,  be  separated by single
         Altmodes.  An Altmode signals three  things  in  the  command
         line:  the  end of a string argument to a string command, the
         end of the device-filename specification  of  an  Edit  class
         command, and the relative locate command if it is immediately
         preceded by a non zero number.  If you find it convenient you
         may  also separate the commands with a space.  Spaces between
         commands are ignored.   This  practice  could  lead  to  some
         confusion  since  -3$ moves the cursor back three lines while                             _                                        
         -3 $ does nothing.              _                

              The  Command  Line  commands  provide   two   functions:
         Complex  editing functions which may be combined for powerful
         text manipulation; and control of the I/O facilities  of  the
         editor  such  as  opening  and  closing of main and auxiliary
         files and transfer of text between  the  main  file  and  the
         auxiliary  files.   All  of the commands may be preceded by a
         decimal number in the range -2048 to +2047.  This  number  is
         an  argument  to  many of the commands and will be ignored if
         the command does not use it.  All the commands which  require
         a  numeric  argument  make  some  useful  assumption  if  the
         argument is missing.  In the following discussion n denotes a
         numeric argument preceding the command.  












                                   SCROLL-3





                           File Edit Class Commands

              Edit  class  commands  connect  SCROLL with the main and
         auxiliary files and control input and output between the main
         file and the auxiliary files.  EM, ED, EO and EI commands are
         followed by an OS/8 standard device-filename specification of
         the  form  dev:filnam.ex.   No  switches or other options are
         recognized except the length of the output file  enclosed  in
         square  brackets  [ ].   The  length  if  present,  must be a
         decimal integer with no embedded spaces.  The device-filename
         specification  must  be  terminated  by an Altmode.  Embedded
         spaces are ignored but must  not  appear  within  the  square
         brackets.  

              If  a  filename  is  entered  without  an extension, the
         following default extensions are used:  

                                 .PA     .RO
                                 .12     .DA
                                 .FT     .BI
                                 .BA     .FA
                                 .RA        

         Each of these extensions is used sequentially.   If  no  file
         exists with the given extension, the next extension is tried.
         An error results if none of the default extensions work.  

              Also, auto tab insertion is used for each file depending
         on  the  extension.   A  'tri-flop'  is used to determine the
         auto-tab  condition.   The  three  tab  stop  conditions  are
         assembler source files, FORTRAN or BASIC source files, and no
         tab stops.  The CTRL/T command will change the tri-flop value
         from its assumed condition.  This feature eliminates the need
         for a separate FSCROL program for FORTRAN source files.  Also
         there  are  no  default extensions for output files.  DSK: is
         assumed if no device is specified.  

              Note that EM and  ED  require  a  directory  device.   A
         filename  is also required for ED and EM.  Devices for the EO
         and EI commands may be either directory or non-directory  and
         the  name  may  be omitted for non-directory devices.  If the
         command EO is given with no  filename  to  a  file-structured
         device,  an error will result.  However, an EI command may be
         given to a file-structured device and no errors will  result.
         But "garbage" characters will be input starting at block 0 of
         the device.  

              There are several things to note about  the  edit  files
         created  and  maintained  by  SCROLL.   When  a file is to be
         edited by SCROLL there should be some extra room at  the  end
         of  the  file  to allow for additions.  SCROLL will not allow
         the file to overflow its area and destroy other files and  it
         will  not  allow  you  to EXIT the file if there is more text



                                   SCROLL-4





         than can be held in the file.  Since SCROLL does not  prescan
         the  file  to find out how much room is left, SCROLL does not
         find out there is not enough room in the file until it  tries
         to  EXIT  or  must shift the file down to make more room.  By
         this time SCROLL has perhaps as much  as  three  blocks  more
         text than can be written in the file.  The recovery procedure
         is fairly easy but it is troublesome to have to recover.   It
         is much easier to plan the length of the file properly.  
















































                                   SCROLL-5





         EMdev:filnam.ex[n]  Edit  Make.  Creates a new file of length
                             n for editing.  The length  of  the  file
                             may   be  specified  in  square  brackets
                             within the device-filename specification.
                             If no length is specified, 10 is assumed.
                             Any file of the same name  and  extension
                             will be deleted from the specified device
                             first.  This command allows for  creation
                             of   large   areas   on  the  device  for
                             scrolling.  The file  is  connected  with
                             the editor as the main file so that entry
                             of text can begin immediately.  

         EDdev:filnam.ex     Edit.  Connects a previously created file
                             with  the  editor  as the main file.  The
                             file should have been created with EM  to
                             allow extra space to make additions.  

         EXIT                This  command  disconnects  the main file
                             from the SCROLL program gracefully.   The
                             main  file  is  written  out.   Auxiliary
                             files are still active if they exist.  If
                             the main file is too long to EXIT, SCROLL
                             will type EX and return at the end of the
                             file.    EXIT   must   be   spelled   out
                             correctly.  

         QUIT                This command does an EXIT if there  is  a
                             main   file   and  returns  to  the  OS/8
                             Keyboard Monitor.  The  auxiliary  output
                             file is closed if there is one.  If there
                             is no main file, QUIT simply  returns  to
                             the  OS/8 Keyboard Monitor.  QUIT must be
                             spelled out.  

         KILL                Completely forgets the  contents  of  the
                             current  main  file.   The  file  is  not
                             deleted from the  directory  or  released
                             from  SCROLL.   It  is  simply cleared to
                             prepare it for new input.  The  tentative
                             output  file,  if  there is one, is still
                             active.  KILL must be spelled out.  

         ABORT               This command immediately disconnects  the
                             main  file  from  SCROLL and releases its
                             handler.  An EXIT is  not  done  and  the
                             contents  of  the  main  file  may not be
                             correct on the device unless the file was
                             LOCKed.   This command is provided to get
                             you out of bad  situations.   It  may  be
                             used  in  place  of  EXIT, if the file is
                             LOCKed.  ABORT must be spelled out.  




                                   SCROLL-6









              Auxiliary files are available to the user.  These  files
         may  be  used  to  split a large file into smaller ones or to
         create a large file from smaller ones.  One may also  extract
         subroutines   or  other  portions  of  coding  from  assembly
         language files.  

              Output to the auxiliary file  is  via  the  EW  and  EWP
         commands.   100EW$  writes 100 lines of text from the current                          _                                           
         line to the output file.  It is usually much easier to insert
         a  form feed in the main file and execute an EWP command than
         to count the lines to be  output.   The  command  2EWP$  will                                                               _      
         output  two  pages starting with the current line.  To output
         the current line use the command EW$.                                              _   

              The EC command closes the auxiliary output file to  make
         it  permanent  in  the device directory (if file structured).
         It may be done at any time and must be done before  a  second
         EO  command  or  the  first  auxiliary  output  file  will be
         discarded.  The output file remains active following an EXIT.
         This allows merging small pieces of large files into a single
         output file.  This can be quite useful in editing  data  sets
         into new configurations.  

         EOdev:filnam.ex     Edit  Output.   Connects  a standard OS/8
                             tentative output file with SCROLL  as  an
                             auxiliary  file.   Output  to the file is
                             via EW and EWP.  The file may  be  closed
                             via an EC.  The length option enclosed in
                             square  brackets  [ ]  may  be  used   to
                             specify  a  maximum  length for the file.
                             The file may be a  non-directory  device.
                             In  this  case the filename and extension
                             need not  be  specified.   All  tentative
                             output  files  not yet closed are deleted
                             by  an  EO  and  the  output  handler  is
                             released.  

         nEW                 Edit  Write.   Write a number of lines of
                             text  to  the   auxiliary   output   file
                             starting  with  the current line.  A file
                             must have been opened by the EO  command.
                             A  positive  number  n  may  precede  the
                             command to control  how  many  lines  are
                             transferred.   One  is  assumed.   As the
                             command  proceeds,   the   cursor   moves
                             through  the  main  file.   The cursor is
                             positioned  after  the   last   character
                             transferred  by  the  command.  EW may be
                             stopped by striking a key.   The  key  is



                                   SCROLL-7





                             ignored  as  is  the  rest of the command
                             line.   In  the  case  of  stopping   the
                             command,  the  process  may  stop  in the
                             middle of the line.  The keyboard command
                             CTRL/V  should  be  used to put that line
                             back together again before any thing else
                             is done.  

         nEWP                Edit  Write  Pages.   Same  as Edit Write
                             except only form feeds are counted.   One
                             page  is  assumed.  As before, the output
                             begins following the  current  line.   If
                             repeated  pages  are to be output, use of
                             EWP1$ to move past the form feed  at  the                                 _                                    
                             end  of the page will allow the CTRL/K to
                             be used.  

         EC                  Edit Close.  The tentative output file is
                             closed  with  the required length and the
                             output handler is  released.   Note  that
                             the  number of blocks specified by the EO
                             command is checked by EW and if too  many
                             blocks  are  output,  the  file is closed
                             with an  EOF  at  the  end.   The  cursor
                             position will show one more than the last
                             character  successfully  output  to   the
                             file.  

              The EI command allows merging of files into a main file.
         Input can be from any  OS/8  device  or  file.   The  command
         EIDTA1:SUBR.PA$ sets up a file on DTA1: for input.                         _                                     

              The  ER  and  ERP commands transfer from the input file.
         10ER$ reads 10 lines into the main file.   1PERP$  reads  one             _                                           _            
         page  into  the  file following the current page.  ER and ERP
         read without auto tab insertion.  ES and ESP behave like  the
         ER  and ERP commands except no text is inserted into the main
         file.  The input is ignored.   These  commands  are  used  to
         position  the input file.  $EIFILE$ 2ESPERP$$ reads the third                                    _      _        __                
         page of FILE on device DSK:.  

              The input file need not be closed.  An error  occurs  if
         an  attempt is made to read beyond the EOF of the input file.
         The error will also occur if the last page is  read  with  an
         ERP  and  it is not ended by a form feed.  If you do not read
         all of an input file  and  wish  to  start  reading  another,
         simply open the new file.  The old file will be dropped.  

         EIdev:filnam.ex     Edit  Input.   Connects  a  standard OS/8
                             input file  to  SCROLL  as  an  auxiliary
                             file.   Input control is via ER, ERP, ES,
                             and ESP.  Non-directory  devices  may  be
                             used.   PTR:  may  be used to input paper



                                   SCROLL-8





                             tapes  to  SCROLL.   RUBOUTs   and   null
                             characters  are  not ignored, so if these
                             occur on the tape it is better to use PIP
                             to  copy  the tapes to a directory device
                             first.  (Paper tapes may also be input by
                             just reading as normal input with the TTY
                             reader  since  linefeeds  are   ignored).
                             Another  EI  command  supercedes the last
                             one.  No input close command  is  needed.
                             The  input file is automatically released
                             if an EOF is encountered  on  input.   Of
                             course,  a  SCROLL  file  may  be used as
                             input with no problems.  

         nER                 Edit Read.  Lines of text are transferred
                             from the auxiliary input file to the main
                             edit file.  n  specifies  the  number  of
                             linefeeds  to  be  transferred.  Input is
                             inserted following the current line.  

         nERP                Edit  Read  Pages.   Pages  of  text  are
                             transferred.   This  command  may also be
                             stopped by striking a key as above.  

         nES                 Edit Skip.  Behaves exactly the  same  as
                             ER  except  that  the  input  is ignored.
                             This command is used for positioning  the
                             auxiliary input file.  

         nESP                Edit Skip Pages.  Analogous to ERP.  

              With  the  use  of auxiliary input and output files, one
         may begin to accumulate a lot of temporary  auxiliary  files.
         The following command allows one to delete unwanted files.  

         EKdev:filnam.ex     Edit  Kill.   Deletes  the file specified
                             from the directory on  the  device.   The
                             command may be done at any time.  

              One may wish to list a line or several lines or pages on
         the console teleprinter either for hard copy or verification.
         SCROLL allows this via the Type commands.  

         nT                  Type.  Type text beginning at the current
                             line onto the teletype.  n specifies  how
                             many  lines.   The text is typed out with
                             tabs expanded and  form  feeds  typed  as
                             nine  line  feeds.  Long lines are broken
                             automatically.  

         nTP                 Type Page.  n specifies how many pages of
                             text will be typed.  




                                   SCROLL-9





                           Text Positioning Commands

              For all the positioning commands, a minus number implies
         motion towards the beginning of the file.   Should  a  typing
         error  cause  a  positioning  command  to run away, it may be
         stopped by typing any key.  Page commands stop at pages,  and
         line commands stop at lines.  The key struck is ignored.  

         n$        $  indicates  the  Altmode  key.   If preceded by a          _        _                                                  
                   decimal number the current line is located  to  the
                   relative line.  If no number is present the command
                   is ignored.  On an unended line (no  CR/LF)  1$  is                                                                 _    
                   equivalent   to   CTRL/V  in  Text  Mode  and  will
                   concatenate the line with the following line.  

         nP        Locate to  the  relative  page.   Move  forward  or
                   backward  over  n  form  feeds.  The cursor will be
                   located after the form feed.  Minus one is  assumed
                   for n.  

         /         Locate  to  the end of the main file.  This command
                   is equivalent to 2047P$.                                           _   

         B         Locate to the beginning of  the  main  file.   This
                   command is equivalent to -2048P$.                                                    _   

         !         Locate  to  the  first  line of the main file after
                   moving to the end first and writing out all of  the
                   file.   This  comand  has  the  same effect as EXIT
                   followed by an ED command reopening  the  file  for
                   editing.   It is much faster than B if you are past
                   the middle of the file.  

         nJ        Jump the cursor n places forward  or  backward.   J
                   has the same effect as n CTRL/A's or CTRL/Q's typed
                   in text mode.  Note the anomaly when moving  across
                   line  feeds  and  form  feeds  still applies.  1 Is
                   assumed for n.  

         F         Place the cursor at the front of the current  line.
                   If  the cursor is at the start of the current line,
                   the cursor will be  placed  at  the  start  of  the
                   previous  line.  The command is exactly the same as
                   the CTRL/F keyboard command.  

         H         Home the cursor.   Move  the  cursor  to  the  home
                   position.  The home position of the current line is
                   the end of it.  Similiar to CTRL/H.  

         V         KBSCRL only- Verify the  current  line.   Echo  the
                   current  line  and mark the cursor position with an
                   uparrow (^).  




                                  SCROLL-10





                            Text Deletion Commands

              The text deletion commands are summarized below.   These
         commands  permit  deletion  of  single  characters, groups of
         adjacent characters, single lines, groups of lines, pages, or
         groups of pages.  

         nD        Delete  n lines forward or backward.  The cursor is
                   homed first  so  that  forward  deletion  will  not
                   delete  the  current line and backward will.  Minus
                   one is assumed so that  D  alone  will  delete  the
                   current line.  

         nDP       Delete  from  the  current line forward or backward
                   until the nth formfeed is encountered.  Be  careful
                   to  insert  an  Altmode  between the D and P if you
                   intend to delete n  lines  and  move  backward  one
                   page.   Carelessness may result in disaster.  Minus
                   one is assumed for n so that DP alone  will  delete
                   back to the previous form feed (or the beginning if
                   no form feed is found).  

         U         Acts exactly as CTRL/U  typed  from  the  keyboard.
                   Deletes all characters to the left of the cursor up
                   to but not including a  line  feed  or  form  feed.
                   This  is  not the same as a D command since D homes
                   the cursor first.  

         nW        Withdraw.  Deletes n characters to the left of  the
                   cursor.  n must be positive.  

              In  addition,  the  file command KILL deletes the entire
         main edit file.  























                                  SCROLL-11





                             Text String Commands

              SCROLL has a wide set of string commands.  Commands  are
         available  to search for text strings, replace the targets of
         search commands, and insert text into the main file.  

              String search commands  search  for  an  arbitrary  text
         string  in the main file.  The cursor is placed at the end of
         the string on successful  completion  of  the  command.   The
         target  string  must  exist on a single line to be found.  It
         may not be split between lines.  Carriage return,  line  feed
         and form feed may be used in the search string but the string
         will  not  be  found  unless  the  carriage   return,   CR/LF
         combination,  or  form  feed  are  the last characters of the
         string.  

              The search  string  is  entered  immediately  after  the
         search  command character and is ended by an Altmode.  If the
         Altmode immediately follows the search command character, the
         previous search string is used.  The numeric argument is used
         to specify the occurrence count for the search.  It specifies
         which  occurrence  of the target string will stop the search.
         One is assumed so that the search  will  stop  at  the  first
         occurrence.   If  the search string specified is too long, an
         SS  error  message  is  printed  and  the  command  line   is
         terminated.   The  maximum length for the search string is 16
         characters.  Before backward searches are begun the cursor is
         backed  up  the  number  of characters plus one more than the
         length of the search string.  Before  forward  searches,  the
         cursor  is moved forward one character.  This is done so that
         each search command will find  the  next  occurrence  of  the
         string in the specified direction.  

              Runaway searches may be stopped by typing any character.
         The character is ignored and the search stops at the end of a
         line.   S  and  _  (backarrow, SHIFT/O) searches stop at form
         feed characters encountered in the main  file.   This  allows
         the  user  to break a very large file into smaller pieces for
         more convenient editing.  In  this  way  searches  that  fail
         because  of  typing  errors or because the target string does
         not exist in the file, may be stopped within a short distance
         of where they were started.  

              The  Insert  and Replace commands allow the insertion of
         characters into the main file which cannot be typed  directly
         into the file via Text Mode.  For instance, CTRL/Z can not be
         typed in Text Mode since it  is  intercepted  as  a  keyboard
         command  to  continue a search.  CTRL/Z in the file marks the
         end of the file.  It is displayed as a block of dots  as  are
         many of the other CTRL characters.  If it is entered into the
         text and subsequently moved backwards off of the  scope,  the
         remainder of the file becomes forever inaccessable to SCROLL.
         This is a clean way to cut a file short.  



                                  SCROLL-12









         nSstring$      Search  forward  from   the   current   cursor                 _                                                    
                        position  for  the  search  string.  Stop if a
                        form feed is encountered.  

         n_string$      (Backarrow - SHIFT/O) Search backward from the                 _                                                    
                        current cursor position for the search string.
                        Stop if a form feed is encountered.  

         nZstring$      Search  forward  from   the   current   cursor                 _                                                    
                        position  for the search string.  Stop only at
                        the end of the file.  

         n^string$      (Uparrow - SHIFT/N) Search backwards from  the                 _                                                    
                        current  cursor postion for the search string.
                        Stop only at the beginning of the file.  

         Istring$       Insert the text ended by an Altmode  into  the                _                                                     
                        main  file.   Auto tab insertion is used if it
                        is  enabled.   If  the   Altmode   immediately
                        follows the I, no text is inserted.  

         Gterminator$   Special  text insertion mode for all normal or                    _                                                 
                        control characters.  The character immediately
                        following   the   G   is  interpreted  as  the
                        terminator.  After the text has been  entered,
                        type  the  terminator to end special insertion
                        mode.  

         nRstring$      Replace the argument of the last search by the                 _                                                    
                        following  string.   n may be specified.  If n
                        is  a  positive  non-zero   number,   then   n
                        characters  are  deleted  to  the  left of the
                        cursor  position.   If  n  is  zero   or   not
                        specified,  the  number  of  characters in the
                        last  search  argument  are  deleted.   R   is
                        followed  by  a  text  string just as is I and
                        behaves as does I.  















                                  SCROLL-13





                               X Buffer Commands

              The X Buffer is an area of storage which is  used  as  a
         temporary  text  buffer.   Lines  or  pages  of  text  may be
         transferred to the X Buffer and the contents of the X  Buffer
         may be transferred back to the main file at any point.  There
         is a provision for transferring the X Buffer  many  times  in
         sequence  into  the  main  file.   The  X  Buffer  will  hold
         approximately 900 characters or roughly 30 average  lines  of
         code.   To  yank  a long string into the middle of a line use
         the command Y2W$.  This will delete the CR/LF at the  end  of                        _                                             
         the  X Buffer and the cursor will be in the middle of the new
         line.  

         nX        Xfer.  Transfer n lines of text into the X  Buffer.
                   The  numeric argument specifies the number of lines
                   beginning with the current line  which  are  to  be
                   transferred.   One is assumed.  n must be positive.
                   If the line is not ended it  will  be  concatenated
                   with the following line.  

         nXP       Xfer  Pages.   Transfer  pages  of  text into the X
                   Buffer.  Lines are  transferred  from  the  current
                   line  to  a  form  feed.   The  number  of pages is
                   specified by n.  One is assumed for n.  

         nY        Yank.  Transfer the X Buffer into the main file  at
                   the   cursor   position.    The   numeric  argument
                   specifies how many times to transfer the text.  One
                   is assumed.  

         CTRL/X    Transfers  one line of text into the X Buffer while
                   in text mode.  


                        CTRL/Y    Transfers  the  contents  of  the  X
                   Buffer  into  the  main file at the cursor position
                   while in text mode.  


















                                  SCROLL-14





                                Repeat Command

              Any  portion  of  a  command  string  may  be   executed
         repeatedly by specifying an appropriate numeric parameter and
         enclosing the portion with '<' and '>'.  The construction  is
         only  legal  for  a  single  level but may be repeated on the
         command line.  

         n<        Begin an iterative command  string.   Any  positive
                   number  may  be  used  as the argument in the range
                   1-4095.  

         >         Terminate the iterative command  string.   '<'  And
                   '>' must be paired and may not be nested.  










































                                  SCROLL-15





                              Text Mode Commands

              The  following  characters  have  the indicated function
         when they are typed in Text Mode, that is, when they are  not
         typed into the Command Line.  The KBSCRL version performs the
         same functions in  addition  to  the  echo  of  the  line  or
         character being modified.  

                                  Formatting Characters

         CR        Enters  a  carriage  return  and line feed into the
                   main file.  

         LF        Always ignored in Text Mode.  

         Altmode   Enter Command Mode.  


                                      Text Deletion

         RUBOUT    Delete one character except that carriage return is
                   deleted  with  a  line  feed  when the line feed is
                   deleted at the end of a line.   KBSCRL  echoes  the
                   character deleted.  

         CTRL/U    Delete text to the left of the cursor up to but not
                   including the CR/LF combination.  KBSCRL echoes the
                   new current line.  

         CTRL/R    Delete  text  to  the  right  of  the cursor on the
                   current  line  including  the  CR/LF   combination.
                   KBSCRL echoes the new current line.  

         CTRL/O    Delete the tab at the beginning of the current line
                   if there is one and home the cursor.   CTRL/O  will
                   delete the tab inserted by the auto tabbing feature
                   of SCROLL.  KBSCRL echoes the new current line.  


                                   Cursor Positioning

         CTRL/F    Move the cursor to the front of the  current  line.
                   The cursor will be just after the line feed or form
                   feed of the previous line.  If the cursor is at the
                   beginning  of  the current line when the command is
                   given, it will be placed at the  beginning  of  the
                   previous  line.  KBSCRL echoes the new current line
                   and marks the cursor position with an uparrow.  

         CTRL/H    Move the cursor to the home position, that  is,  to
                   the end of the current line.  If the line is ended,
                   the cursor will be displayed on the next line.   If
                   the  current  line is not ended, the cursor will be



                                  SCROLL-16





                   displayed at the end of it.  KBSCRL echoes the  new
                   current  line and marks the cursor position with an
                   uparrow.  

         CTRL/A    Move the cursor  forward  one  character.   If  the
                   cursor  is  in  the  home position of the line, the
                   next line is brought onto the scope but the  cursor
                   position  is  not  changed.   The  cursor  is still
                   positioned after the line feed or form feed of  the
                   previous line.  CTRL/A and CTRL/Q will not move off
                   an unended line.  The line must be ended by a  line
                   feed or form feed.  KBSCRL echoes the character the
                   cursor passed over.  

         CTRL/Q    Move the cursor backward  one  character.   If  the
                   cursor  is  at  the  beginning of the current line,
                   that is, immediately after the line  feed  or  form
                   feed  ending  the  previous  line, then the current
                   line is removed from the scope and the cursor is at
                   the  home position of the previous line.  Note that
                   the cursor has not moved with repect to that  line.
                   KBSCRL echoes the character the cursor passed over.

         CTRL/W    Move back one  line.   (Prohibited  on  an  unended
                   line).  KBSCRL echoes the new current line.  

         CTRL/S    Move  forward  one line.  (Prohibited on an unended
                   line).  KBSCRL echoes the new current line.  

         CTRL/V    Move forward one line whether the current  line  is
                   ended or not.  This command allows concatenation of
                   the current line and the next line.  KBSCRL  echoes
                   the new current line.  

         CTRL/G    Move  forward  one page only if the current line is
                   ended.  A page delimiter is defined as a form feed.

         CTRL/P    Move  backward  a  page only if the current line is
                   ended.  A page delimiter is defined as a form feed.


                                    Search and Macro

         CTRL/Z    Continue the last text string search in the forward
                   direction.  If unsuccessful, the search  will  stop
                   at a form feed.  

         CTRL/N    Continue   the  last  text  string  search  in  the
                   backward direction.  Continued searches always stop
                   at   form   feed   characters  in  the  main  file.
                   Underline is backarrow on most TTYs.  





                                  SCROLL-17





         CTRL/C    Execute the last command line again.  


                                      I/O Switches

         CTRL/T    Change the state of the auto tab insertion triflop.
                   The  auto tab mode initially assumed depends on the
                   main file extension.   The  three  auto  tab  modes
                   available are for assembler files, FORTRAN or BASIC
                   files, and files with no tabs.  

         CTRL/E    Advance the state of the echo tri-flop.  (No echo -
                   Command  Line  echo - Full echo).  In no echo mode,
                   no characters  are  echoed  on  the  teletype.   In
                   Command  Line  echo mode, the Command Line is typed
                   on the teletype just before it is  executed.   This
                   allows  the  user  to  check  the arguments of text
                   string searches and  the  names  of  files  opened.
                   Dollar signs ($) are printed for Altmodes.  In full
                   echo mode, all characters typed into the  text  are
                   echoed.   Command  echo  is  also  in  effect.   In
                   KBSCRL, this command is not available.  

         CTRL/D    Controls  the  display   of   certain   characters.
                   Normally  tabs  are  displayed  by  positioning the
                   characters following them at the next 8-column  tab
                   stop.   CTRL/D  causes  them  to  be displayed as a
                   distinctive  underline  character   as   they   are
                   displayed  in  the  Command Line.  Carriage returns
                   are display as a left pointing down arrow  as  they
                   are in the Command Line.  CTRL/D is a complementing
                   switch.  In KBSCRL, all control codes are displayed
                   as  "^alpha"  construction.  Example: CR ^M, LF ^J,
                   FF ^L, TAB ^I 

         CTRL/B    Display the most recent command executed in command
                   mode on the command line.  

         CTRL/K    Shift case of input characters.  

















                                  SCROLL-18





                             The Display of SCROLL

              SCROLL  displays  a  number of lines on the scope ending
         with the current line.  Each line is begun with a  marker  (a
         solid  triangle) to mark it as the beginning of a line.  If a
         line is too long for the  scope,  it  will  automatically  be
         continued  on  the  next line.  No characters are inserted to
         break long lines.  If the current line is ended,  a  triangle
         is displayed on the following line to signify this fact.  

         n#        The  number  of  lines  displayed  on  the scope is
                   changed to n.  

              Five lines is the default value for the number of  lines
         displayed  for  assembler files (.PA and .12).  For all other
         files, three lines is the default value  for  the  number  of
         lines displayed.  

              The cursor, which is the character pointer of SCROLL, is
         displayed as a vertical line between  two  characters.   This
         convention   indicates  the  function  of  the  cursor  since
         insertions are always made at the cursor  point  between  two
         characters  and deletions are made to the left of the cursor.
         The cursor is displayed somewhere on the current line at  all
         times.  

              The  cursor  is  implemented  as  a minus number or zero
         indicating the number of characters back from the end of  the
         current  line  on  which the cursor rests.  This character is
         termed  the  cursor  character.   The  cursor  is   displayed
         immediately   following   the  cursor  character.   The  home
         position for the cursor is at the end  of  the  current  line
         whether it is ended or not.  

              The  front  line position of the cursor is at the end of
         the previous line.  The cursor character is the line feed  or
         form  feed  of the previous line.  The value of the cursor is
         minus the number of characters on  the  current  line.   This
         convention  is  the source of a small anomaly with regards to
         the moving of the cursor forward or  backward  across  lines.
         There  are  two  positions of the cursor for which the cursor
         character are exactly the same.  Consider that the cursor  is
         in  the  front line position.  The cursor is on the line feed
         or form feed of the previous line.  If  we  move  the  cursor
         back  one  position,  the current line is moved off the scope
         and the previous line becomes the current line.   The  cursor
         is  placed  at the home position of this line and is still on
         the line feed or form feed of this line.  To the eye watching
         the  scope,  this  is  perfectly natural.  However, a problem
         develops when we begin to  count  characters  to  use  the  J
         comand to move the cursor.  The same convention holds for the
         J command, so we must take this into  account  when  devising
         counts for the J command.  Note that there are better ways to



                                  SCROLL-19





         get where you are going than using a J command.  Use a search
         or  an  F  or  H  or  locate  command.  It will save a lot of
         trouble.  

              Some special characters are displayed so that  the  user
         can  more  easily  interpret  his  file.  Line feeds and form
         feeds are displayed as a marker on the next line.  The cursor
         is  displayed  after this marker if it is on the line feed or
         formfeed.  In addition, form feeds display as a  curved  down
         arrow, the opposite direction of the carriage return, when it
         is displayed.  The arrow for form feed curves to  the  right.
         Carriage  return  is  not displayed normally in the text.  In
         the Command Line, it is displayed as a curved  arrow  to  the
         left.   The  CTRL/D  switch  causes  carriage  return  to  be
         displayed as the curved arrow in text also.  Although  SCROLL
         tries  to assure that a carriage return is always followed by
         a line feed, by inserting line feed after carriage return and
         deleting  carriage return after any line feed, it is possible
         by trickery with cursor commands to separate them.  This will
         cause  no  end of grief since a non-displayed carriage return
         in the middle of a line will cause line  termination  to  PIP
         and  PAL.   CTRL/D  shrinks tabs to underlines and causes the
         phantom carriage returns to appear.  Strike CTRL/D again  and
         all is normal.  

              Lower case characters display as such.  It's a strain to
         fit them in a 4x6 display matrix but with practice  you  will
         see  them.   They  affect  the  output of no standard program
         there may be a problem with some editors  which  put  rubouts
         after  all  tabs  and form feeds.  If you look at a file with
         SCROLL and it looks very "blocky",  just  copy  it  somewhere
         with PIP and look at it.  PIP should clear it up nicely.  



                         Using SCROLL Without Display

              While  SCROLL  is  a display oriented editor it is quite
         usable  on  machines  without  display.   The  only  possible
         difficulty  is  that  the display IOT codes might be used for
         other functions on  the  computer.   To  use  SCROLL  without
         display  you  need  only  disable the display routines (using
         ODT) and be sure that full  echo  is  on.   A  non-displaying
         SCROLL will run on any OS/8 machine.  












                                  SCROLL-20





                                KBSCRL Display



              KBSCRL  is the hard copy oriented version of the editor.
         The constraints of hard copy output require  modification  of
         the  'display'  and  some of the command structure of SCROLL.
         One clearly cannot  maintain  a  full  display  that  exactly
         reflects  the  current  state  of  the  main  edit file.  The
         changes  primarily  affect  the  positioning  commands.   The
         commands  to  move  the  cursor forward and backward cause an
         echo of the line or character scanned rather than just moving
         the  cursor.   Also RUBOUT, CTRL/U, and CTRL/R cause an echo.
         The letter 'V' appearing on a command  line  functions  as  a
         Verify  and  echoes  the  current  line  marking  the  cursor
         position.  At any time the current status of the file may  be
         examined  by  the  Type  command  which echoes on the editing
         terminal.  For example:  


              $-10$11T$$ 

         Moves the cursor back 10 lines and then echoes those 10 lines
         on the terminal.  Example 2:  


              ^Q^Q^Q^Q^Q$V$$ 

         Moves  the  cursor  back  5  characters  in  the current line
         echoing each and then echoes the line with an uparrow marking
         the  cursor  position.   Moving  backward  into  the  line is
         usually better  accomplished  with  a  search  command.   For
         example:  


              $^TAB$V$$ 

         Searches  forward  for  the string TAB and echoes the line on
         which it is found, marking the position of the cursor with an
         uparrow.  

              In  general,  text  mode commands which alter the cursor
         position echo text and command line commands do not echo  any
         text unless explicitly with Type or Verify.  

              An  attempt  is  made  to  display  all  characters with
         control characters displayed as ^ (uparrow).  If the  display
         tabs  switch  is set (^D) then tabs, carriage return and line
         feed characters are displayed as their ^ construction with CR
         and LF having their formatting function as well.  Turning the
         switch  off  causes  these  characters  to  be  displayed  as
         formatting  functions only.  The Type command does not follow
         the CTRL/D switch and always  outputs  formatted  text.   The



                                  SCROLL-21





         echo triflop is inactive, full echo is always on.  

              There is a minor problem with rubouts on a new line.  It
         is necessary to delete both the carriage return and the  line
         feed  character even though only the CR was typed.  This will
         likely be corrected in the next release but the code on  that
         page is core tight now.  

              There  are  some minor echo problems with tab characters
         on input.  SCROLL automatically inserts tabs for Assembler or
         Fortran  code  if the autotab switch (^T) is set.  These tabs
         do not echo however because they are deleted and replaced  by
         a tab following the comma to designate a label.  In addition,
         explicit  tabs  echo  as  ^I  rather  than  their  formatting
         function  because  frequently  the  formatting effect is more
         confusing than helpful.  The command  CTRL/H  can  always  be
         used  to  display  the current condition of the line on input
         and the tabs will be presented properly.  






































                                  SCROLL-22





                              Auto Tab Insertion

              Auto tab insertion automatically  formats  files  during
         both  initial  entry  and  subsequent  editing.   The mode of
         insertion depends upon the state of  the  auto  tab  triflop.
         The  three  states  of  this  triflop are assembler file auto
         tabs, FORTRAN or BASIC file auto tabs, and no auto  tabs  for
         all other files.  Initially, the auto tab triflop is set to a
         mode corresponding to the  type  of  extension  in  the  main
         filename.   If the extension of the main file is .PA, .12, or
         .RA, the assembler mode of the triflop is  assumed.   If  the
         extension  is  .FT  or .BA, the compiler mode of the auto tab
         triflop is assumed.  For all other extensions the no auto tab
         mode  of  the triflop is assumed.  The CTRL/T command changes
         the value of the triflop by sequentially stepping through the
         three modes.  


                    Auto Tab Insertion for Assembler Users

              The  assembler auto tab mode is assumed by SCROLL if the
         main file has an extension of .PA, .12, or .RA.  It saves the
         programmer  many  key  strokes  per  line, perhaps as many as
         three or four since it inserts all tabs  necessary  to  align
         the  instructions  and  comments  of  the  program.   We will
         describe the algorithm of auto tab insertion but it  is  much
         easier to understand its operation by watching its effects on
         the scope.  

              The prime function of auto tabbing is to  insert  a  tab
         before  every  line  of  text  as  it is entered to align the
         instructions of the program.  If the cursor is  in  the  home
         position  at  the start of a new line, then a tab is inserted
         before any but the following characters: CR, LF,  FF,  *,  /,
         TAB.   If  the  cursor is at the home position and not at the
         start of the line and a  comma  is  typed,  the  tab  at  the
         beginning of the line is deleted if there is one, and a comma
         followed by a tab is inserted.  If there is a slash or  comma
         on  the  line  somewhere  before  the  cursor position or the
         character immediately before the cursor is  a  double  quote,
         the  leading tab is not deleted when a comma is typed.  Also,
         if two or more tabs or spaces are in the current line, SCROLL
         will  not  delete  the leading tab if a comma is typed.  This
         allows special characters to be entered and allows RALF files
         to  formatted properly.  Double quote is checked to avoid tab
         deletion after using an ASCII constant comma (i.e. ",).  

              If a slash is typed and it is not the first character of
         the  line then enough tabs are inserted to bring the slash to
         column 25.  No tabs are inserted if the  slash  would  go  at
         column  25.   If  it  is entered beyond column 24, a space is
         inserted before the slash.  Also, no tabs are inserted if the
         character  before  the  cursor  is a double quote.  Note that



                                  SCROLL-23





         this presents a slight problem when using an  ASCII  constant
         double  quote  followed by a comment.  To avoid this problem,
         enter a space after the second double quote.  

              CTRL/P may be used to remove the tab at the beginning of
         a  given line.  This is generally used to place Pseudo Ops at
         the left margin.  Auto tab insertion is active for text  mode
         and  for  the  I and R commands.  It is not active for the ER
         command.  


                Auto Tab Insertion for FORTRAN and BASIC Users

              If the main file extension is .FT or .BA,  the  compiler
         mode of the auto tab trifop is set to format FORTRAN or BASIC
         files.  The auto tab insertion saves the programmer many  key
         strokes  per  program.   The  algorithm for FORTRAN and BASIC
         auto tab insertion is described below, but again, it is  much
         easier to understand the operation by watching its effects on
         the scope.  

              The  major  function  of  SCROLL's  compiler  auto   tab
         insertion  is  to align all FORTRAN or BASIC statements after
         column 7.  SCROLL aligns all statements in column  8  because
         of the tab which is automatically inserted.  If the cursor is
         in the home position at the start of a new line, then  a  tab
         is  inserted  before  any character except the following: the
         numeric digits 0 through 9, carriage return, line feed,  form
         feed,  and tab.  A tab or a number of spaces must be inserted
         after the FORTRAN or BASIC  statement  number  is  typed,  in
         order to get to column 7 or 8.  To enter FORTRAN continuation
         lines, type a space as  the  first  character  on  the  line.
         SCROLL  will  tab  to  column  6  automatically.  For FORTRAN
         users, comments begin with a 'C' and have a tab  inserted  in
         front of them.  The CTRL/P function will delete the tab which
         is inserted in front of the 'C', so that comments will behave
         normally.  



















                                  SCROLL-24





                         Switching from DIAL to SCROLL

              A  user familiar with DIAL can use SCROLL with a minimum
         of effort.  SCROLL is called from the OS/8  Keyboard  Monitor
         with  ".R SCROLL".   Once  he is in SCROLL he should create a
         file called WA.WA on the disk or system device.  SCROLL  will
         respond  initially to nothing but an Altmode because there is
         no file in which to type.  The command string:  

                              $EMSYS:WA.WA[100]$$                              _                __

         creates a 100 block Working Area.  ($ Indicates Altmode key).                                             _                        
         He  can  now use this space in the same way as DIAL's Working
         Area.  Files can be brought in with the EI command  which  is
         analagous to ->AP in DIAL:  

                            $EIFILNAM.EX$ 100ERP$$                            _           _       __

         will  read  in  a  file containing no more than 100 form feed
         characters.  There will be an error message which  should  be
         ignored  in  this case.  It means the input file did not have
         100 edit pages, but the file was all read.  

              Files  may  be  saved  with  the  EO  command  which  is
         analogous  to  DIALs  ->SP  command.   If  the  file does not
         contain form feeds it is convenient to place one at the  end,
         by executing the command:  

                                     $/$$                                     _ __

         and  inserting the form feed.  Now go to the beginning of the
         file the fast way:  

                                     $!$$                                     _ __

         Now save the file:  

                             $EOFILNAM.EX$EWPEC$$                             _           _     __

         Will write a file with one form feed  at  the  end  onto  the
         device  DSK:.   If  there is an error message, the EC command
         was not performed (probably because you forgot the form feed)
         and it should be done immediately:  

                                     $EC$$                                     _  __

         If  the  file  contains  form  feeds  you  can  use a numeric
         argument to ensure that it is all written:  

                            $EOFILNAM.EX$1000EWP$$                            _           _       __

         In this case you are almost certain to get an  error  message
         because there are not 1000 form feeds in the file.  Ignore it



                                  SCROLL-25





         and use the EC command to close the file.  

              To clear the working area, use the command  KILL.   This
         has the same function as ->CL in DIAL:  

                                    $KILL$$                                    _    __

         The working area is now cleared for new input.  

              SCROLL  does  not  use the knobs to control the display.
         The keys CTRL/S  and  CTRL/W  move  the  cursor  forward  and
         backward  one  line respectively.  The keys CTRL/A and CTRL/Q
         move  the  cursor  forward  and   backward   one   character,
         respectively.   These  keys may be struck with the REPEAT key
         held down to move the cursor faster.  The command:  

                                     $n#$$                                     _  __

         Sets the number of lines to display on the scope to  n.   The
         command:  

                                     $/$$                                     _ __

         Moves to the end of the file.  The command:  

                                     $B$$                                     _ __

         Moves to the beginning of the file.  

              RUBOUT  deletes one character to the left of the cursor.
         CTRL/U deletes everything to the left of the  cursor  on  the
         current  line.  CTRL/R deletes everything to the right of the
         cursor.  

              To  return  to  the  Keyboard  Monitor  to  run  another
         program, i.e., the assembler or another program, type:  

                                    $QUIT$$                                    _    __

         This returns to the OS/8 Keyboard Monitor.  

              After  your  first  editing session you can re-enter the
         working area with:  

                                $EDSYS:WA.WA$$                                _           __

         Programs left in  the  Working  Area  (file  WA.WA)  will  be
         intact.  

              The  above  commands  represent  a  very small subset of
         SCROLL's capabilities, but they serve to get you  almost  all
         the  power  of DIAL.  Once you are comfortable with these you
         should read the full documentation again.  



                                  SCROLL-26









                         Helpful Hints in Using SCROLL

              To position yourself in the main file, you may  use  the
         'nP$'  command  to  move  forward  n  edit pages (over n form            _                                                         
         feeds).  

              Another way to position  yourself  is  to  use  the  'Z'
         search  command.   The command '$Zstring$$' will position the                                         _       __                   
         file after the first occurrence of 'string'.  

              The CTRL/C and CTRL/Z commands are useful when using the
         Search  and Replace commands.  After the first search is made
         for a symbol you wish to  change,  enter  a  Replace  command
         followed  by  a  Search  command with no argument.  As SCROLL
         stops at each occurrence of  the  symbol,  you  may  visually
         inspect  the text.  If you wish to replace the string, strike
         CTRL/C;  Otherwise, type CTRL/Z to continue the  search  from
         the current cursor position.  


































                                  SCROLL-27





                               Protecting Files

              At times it may be desired to protect the main file from
         modification.   LOCK  provides  the  ability  to   completely
         inhibit  insertion  of  text into the main file by any means.
         Also all write operations on the  main  file  are  inhibited.
         This  saves  time  when  examing  a  file.  LOCK inhibits the
         deletion commands also so that it is not possible  to  modify
         the file in any way.  

              The  LOCK  command  must  be  done  when no main file is
         connected with the editor.  The LK  error  message  indicates
         the  inability  to  LOCK  a  file  once  it  is opened.  This
         restriction is enforced since  when  modifications  are  made
         they  must  be  written  out  to  be  preserved.   Since LOCK
         inhibits write operations, if a file  were  LOCKed  after  it
         were  opened the changes might not be written out.  The CLOCK
         command clears the LOCK condition.  CLOCK may be done when  a
         main  file  is  connected with SCROLL.  The file then becomes
         available for modification.  ABORT or EXIT disconnects a main
         file  from  SCROLL.   When  using  the LOCK feature, ABORT is
         sufficient since EXIT will cause a move to  the  end  of  the
         file.   Since nothing is written out this is wasted I/O time.
         Note that ABORT is not sufficient  after  a  CLOCK  has  been
         performed.   KILL  does not release the main file from SCROLL
         and a LOCK cannot be done after a KILL.  Note that  LOCK  and
         CLOCK must be spelled out correctly to have effect.  An error
         message will be printed if a mistake is made.  

         LOCK      Lock  the  main  file   and   inhibit   all   write
                   operations.  Must be executed before an ED command.
                   (It is legal but nonsense before an EM command.) 

         CLOCK     Clear the LOCK condition.  Allows the current  main
                   file to be modified after a LOCK.  





















                                  SCROLL-28





                            Advanced Uses of SCROLL

              The  following  notes  may  help  you  recover  from bad
         situations or at least  save  some  time.   They  are  rather
         dangerous  unless  followed  carefully.   Novice  programmers
         should read them very carefully before attempting them.  



         Recovering Overfull Files 

              When you have added so much to a  file  that  SCROLL  is
         unable  to EXIT or finds no space at the end when it attempts
         to shift the end of the file down,  SCROLL's  main  file  has
         become  full.  No further insertions are allowed.  Characters
         typed from the keyboard are ignored in  text  mode  and  EDIT
         Input  prints  an  error  message.  The deletion commands are
         still active so that you can delete enough to allow SCROLL to
         EXIT.   The  EO  command may be used to create a file to hold
         the overflow text and a couple of pages may be written to the
         file to allow room for SCROLL to EXIT.  

              There are a couple of ways to know when you have deleted
         enough text.  If you are in the middle of the file  somewhere
         and the FL error occurs during a shift operation, SCROLL will
         allow you to insert text  again  when  you  have  deleted  an
         entire  block.   When  you  are  at  the end, you must try to
         either initialize your program with a ! or EXIT command.   If
         you get an EX message, you need to delete some more text.  

              When  you  have EXITed the file, you have two courses of
         action.  You can rebuild a single file or maintain  the  file
         as two separate parts.  The file of overflowed text may serve
         as a start for a second file.  Use the EI  command  to  setup
         the file to add to a new file built with EM.  



         Extending Files 

              If  you are running out of room in a file and would like
         to make it longer, there is a trick you may be able  to  play
         with  SCROLL  to  save  a  lot of time.  If you are sure that
         there is nothing beyond the file you are  editing  and  there
         are  no  empty  files before the file which would contain the
         desired file length, you may EXIT the file, and EM  the  same
         file  longer  on the same device.  You must immediately ABORT
         this new file and reopen it with and ED command.  If  we  are
         editing  a  file  called WORKA and would like more space, the
         command:  

                      EXIT EMWORKA[100]$ ABORT EDWORKA$$                                       _              __




                                  SCROLL-29









         Would lengthen the file to 100 blocks.   Care  must  be  used
         with  this trick or the file may be lost.  If you are already
         out of room, sometimes the X Buffer will hold enough text  to
         allow  you  to EXIT and remake the file longer.  Put the text
         in the X Buffer, then delete it from  the  main  file.   Next
         extend  the  main file as above, then move back to where your
         text belongs and Yank it back in.  

              If the trick cannot be used  because  there  is  a  file
         after  it  in  the directory, you must create a new file with
         EM.  The name must be different if the device  is  the  same.
         Also  if DECTAPE or LINCTAPE is used, the file should be on a
         different tape.  The old file should be opened for input with
         an EI command.  For example, the command:  

                            EDDTA1:WORKA$ 1000ERP$$                                        _        __

         Will read the entire file into the newly created file.  



         Recovering Smashed Devices 

              If the directory of a device gets smashed, SCROLL may be
         able to help you recover ASCII files on  the  device.   After
         zeroing  the  directory  with  PIP, if it has been completely
         destroyed, use SCROLL to create a file which completely fills
         the device.  Now immediately ABORT this file; this will allow
         you to open it again for editing.   Now  LOCK  SCROLL's  edit
         file  and  ED the file.  The LOCK will assure that nothing is
         written out so that it can't be changed and it will save  I/O
         time  also.  SCROLL cannot be destroyed by what it reads from
         the file; the display  may  look  very  bad  but  that  won't
         matter.   Begin  moving  forward through the file with CTRL/S
         commands and watch for your lost file.  If SCROLL stops it is
         because  it  has  encountered  an EOF.  If you remove the EOF
         from SCROLL's memory, SCROLL will continue down the  file  as
         if  nothing  had  happened.   The EOF character is 232(8) and
         should be in location 13007.  Use  the  console  switches  to
         verify  the  EOF  and zero that location.  This is one reason
         for locking the edit file.  The zero you inserted will not be
         written out on tape.  

              Locations  20  and  21  contain  the  block numbers that
         SCROLL is looking at on the  device.   Locations  22  and  23
         contain  the  block  number limits of the file on the device.
         You may skip around on the tape by setting locations  20  and
         21  to the block numbers you would like to examine.  Location
         21 must be always two more than location  20  and  they  must



                                  SCROLL-30





         both  be  within  the  bounds  of locations 22 and 23.  After
         changing the block numbers, moving forward or  backward  will
         move  to  the  new  location on the tape the next time a tape
         operation is done.  This switching of  block  numbers  should
         only  be  done  if  the  tape  is  LOCKed  since  blocks will
         otherwise be written out in the wrong place.  

              SCROLL will not stop on EOF's in the backward direction.
         A tricky thing to do to scan a whole device for lost programs
         would be to open the whole device and begin scanning  at  the
         end  by  setting the block numbers to the end of the file and
         moving backward.  Backward  searches  may  be  used  to  good
         advantage for this.  

              To  save  a  program  when  you  have  found it, open an
         auxiliary file on another device using the EO command.  Write
         the  program  onto  the file using the EW or EWP commands and
         use the EC command to close the file.  SCROLL can  write  out
         from  a  locked  file  without  problems.   As  many files as
         desired can be written from the smashed device  by  repeating
         the above process.  



         PIP and SCROLL Files 

              PIP  may  be  used  to help maintain SCROLL files.  When
         copying a file which will later be edited  with  SCROLL,  use
         the  /I  option of PIP to preserve the extra space at the end
         of the file.  The assumed /A option of  PIP  will  allow  the
         user  to  determine  the  exact length of the file.  PIP will
         copy only the used portion of the file.   The  directory  may
         then be examined to find the exact length of the file.  

              There  are  a  few  problems  encountered when using PIP
         however.  SCROLL has no restrictions on line length, so it is
         possible  to  enter very long lines to SCROLL.  PIP, however,
         does not copy lines longer than 150 characters.  The  EO  and
         EW commands may be used to copy files using SCROLL.  Note the
         LOCK command will save I/O time during copying by eliminating
         writes  to the main file.  Another problem is that PIP cannot
         copy files larger than 255 blocks in /I mode.  They  must  be
         copied  in  /A mode.  SCROLL edit files of this length are of
         questionable use anyway.  It takes over two minutes  to  move
         from  the  beginning  to  the  end  of  a  200  block file on
         LINCtape.  Even with a disk, it would take about 40  seconds.
         Since  SCROLL  allows  easy  transition from one edit file to
         another, it is probably better to maintain the 200 blocks  in
         four shorter files each of about 50 blocks.  







                                  SCROLL-31





              How Do You Like Those Apples?  

              Well,  that  does  it for the commands of SCROLL.  Quite
         impressive, isn't  it?   You'll  probably  never  use  EDIT-8
         again, right?  

              We've  tried to incorporate the power of the commands of
         TECO into a scope oriented scrolling editor.   Also  we  have
         tried  to  design  the  commands  so that the user guides the
         editing process interactively without requiring that the user
         repeat  the  commands  needlessly.   The  CTRL/K  command  to
         execute the Command  Line  again  grew  out  of  this  design
         effort.  

              The  auto tabbing feature is a significant advance.  The
         idea  first  appeared  in  LAP6/DIAL.   We  have  made   some
         improvements  in  the  algorithm  and  added an indispensible
         feature: the ability to turn it off!!  The CTRL/P feature  to
         delete the tab at the beginning of the line is used primarily
         to temporarily combat the efforts of the auto  tab  insertion
         feature.  

              We hope that all of you enjoy using SCROLL as much as we
         who developed it.  



         Acknowledgements 

              I would like to thank Clyde  G.  Roby,  Jr.,  Harold  L.
         Pearson,  Jr., Dr. Thomas W. McIntyre, and James H. Donnelly,
         Jr. for their help and  suggestions  in  the  design  of  the
         command  structure  for  SCROLL.   Clyde Roby helped with the
         display routines and is responsible for the valiant  work  in
         designing  lower case pattern words in the 4x6 matrix imposed
         by the PDP-12 hardware.   He  has  also  modified  SCROLL  to
         display  on  a  PDP-8/I with scope interface.  Darrel G. Hess
         wrote the original version  of  the  summary  for  our  local
         users.   Last  but  foremost  I  would  like to thank Mary A.
         Wilkes (Clark) and the others at Washington  University,  St.
         Louis,  for  LAP6.   Although the implementation of SCROLL is
         entirely new, the idea is based upon earlier work we did with
         LAP6.   The  algorithm  is described in an article by Mary A.
         Wilkes:   'Scroll   Editing:   An   On-Line   Algorithm   for
         Manipulating  Long  Character  Strings', IEEE Transactions on
         Computers, Vol C-19, pp 1009-1015, November 1970.  










                                  SCROLL-32





                               Chaining to SCROLL

              Version 10 and later of SCROLL  has  the  capability  of
         being  chained  to.   This  means that CCL can be modified to
         chain to  SCROLL  on  various  recognized  CCL  commands,  or
         another program may chain to SCROLL.  

              In  order  to  chain to SCROLL, the OS/8 Command Decoder
         area in field 1 must be set up with  legal  SCROLL  commands.
         Multiple  commands may be in this area as long as they follow
         the rules of SCROLL's Command  Line  decoding.   The  Altmode
         character,  if  present,  must  be 233(8).  At the end of the
         SCROLL Command Line in the OS/8 Command Decoder area must  be
         a   0000.    The   OS/8   Command  Decoder  area  resides  in
         17600-17646.  

              When SCROLL is chained to, it  moves  the  OS/8  Command
         Decoder  area  to  its  internal Command Line buffer and then
         executes the commands from there.  SCROLL does not  type  out
         its version number when it is chained to.  




































                                  SCROLL-33





                               Patches to SCROLL

              The  six  characters  which are checked for in assembler
         auto-tab mode and do not cause a tab to be inserted are  TAB,
         LINE FEED, FORM FEED, CARRIAGE RETURN, /, and *.  If you wish
         to have a tab inserted before the *,  change  location  15661
         from 0252 to 0000.  

              Currently SCROLL puts the comment character at the third
         tab stop.  To change  this  to  any  other  tab  stop  change
         location  05035  to  the  negative  of  the  tab stop.  It is
         currently 7746 which is equivalent to -32.  For  example,  to
         change  this  value  to  the  fourth  tab  stop  (42), change
         location 05035 to 7736.  

              SCROLL is currently set up to do auto-tab  insertion  on
         the  PAL8 or PAL12 assembler syntax.  This is with '/' as the
         comment character and ',' as the end of  tag  character.   To
         change  SCROLL  to  recognize other characters as comment and
         end of tag syntax characters, the following locations  should
         be  changed.   This  example  assumes that ';' is the comment
         character and ':' is the end of tag character.  

                .GET SYS SCROLL
                .ODT
                15663/0257 0273         (+) value for semicolon
                15664/0254 0272         (+) value for colon
                15671/0257 0273         (+) value for semicolon
                ^C
                .SAVE SYS SCRL11

         In  addition,  the  above  two  patches  may  be   separately
         implemented.  























                                  SCROLL-34





                                Error Messages

              When   an   error   condition  occurs,  SCROLL  types  a
         two-character error message and proceeds from there.  If  the
         error  occurs  in a Command Line, the rest of the commands on
         the line are not executed.  The error messages are identified
         by mnemonics which indicate the nature of the error.  

              In  addition  to the error messages which are non-fatal,
         SCROLL  contains  many  internal  consistancy   checks.    If
         something  is  amiss, SCROLL will halt.  These errors are all
         fatal and indicate  either  a  hardware  malfunction  of  the
         computer  or  (less  likely) a program bug in SCROLL.  If the
         diagnostic programs run on the computer,  please  convey  the
         halt  address  and  conditions  of  failure to the author for
         clarification.  

              If such a condition occurs, it is likely that your  file
         is  not  completely  bombed  out.  All of the file will be in
         good condition except the portion  that  SCROLL  was  working
         over  at the time.  If you examine the file after a crash you
         will find about three or four blocks are a  little  scrambled
         or  do  not contain the latest changes.  These blocks will be
         the only ones not updated.  





         Error                  Reasons for Error 
         Code 

         ED        Edit error.  No such file on device or a main  file
                   is still active.  

         EE        No such Edit command.  

         EI        Edit Input error.  No such file or no main file.  

         EM        Edit  Make  error.   No room on device or main file
                   still active.  

         EO        Unable to enter output file or no main file.  

         ER        Attempt to  read  when  no  input  file  available.
                   Attempt to read more lines or pages than are in the
                   auxiliary input file.  

         EW        No output file, or attempt was made to  write  from
                   past the end of main file.  

         EX        The  file  is  too long to EXIT.  Encountered after
                   EXIT, QUIT, or !.  



                                  SCROLL-35






         FL        The last shift down found the file was full.  

         HA        Handler  allocation  error.   Only  3   pages   are
                   allotted for all handlers.  

         IC        Illegal  Command  Line command.  A command has been
                   misspelled.  

         IE        Unable to initialize (! command) when there  is  no
                   main file.  

         IF        EOF  encountered  in  input  file or no input file.
                   Attempt was made to  read  past  end  of  auxiliary
                   input file.  

         KI        Unable to KILL.  No main file.  

         LH        Load Handler error.  No such device.  

         LK        Unable to LOCK a file once it is entered.  

         NE        No  EOF before last block encountered during shift.

         NF        No EOF before  last  block  of  file.   Encountered
                   during a move.  

         OC        Error during close of auxiliary output file.  

         OE        No auxiliary output file.  

         RE        Repeat  error.   Attempt was made to nest iteration
                   commands or iteration was not terminated.  

         SS        Search string  too  long.   16  Characters  maximum
                   allowed.  

         XC        Too  many characters transferred to X Buffer or EOF
                   in main file.  

         YC        Unable to insert in main file by Yank command.  The
                   file is full.  














                                  SCROLL-36

                    Summary of SCROLL Commands by Function



              Command  Lines  are  initialized  with  an  Altmode  and
         terminated with  two  Altmodes.   Items  enclosed  in  square
         brackets  [  ]  apply  to  the  hard  copy  version of SCROLL
         (KBSCRL) 



                                           MACRO COMMAND

                                         ****Text Mode****

         CTRL/C              Repeats execution  of  the  last  Command
                             Line.  

                                       ****Command Line****

         n<                  Initiate a repeat section of commands.  n
                             can be any positive number in the range 0
                             to 4095.  1 Is assumed.  

         >                   Terminate  repetitive command set.  There
                             must be a > with every < and they may not
                             be nested.  



                                           FILE COMMANDS

                                       ****Command Line****

         LOCK                Inhibits  writing to the main file.  Must
                             be done before the Edit command.  

         CLOCK               Clears the LOCK and enables writing.  

         EMdev:filnam.ex[n]  Creates a file  of  n  blocks  (if  n  is
                             omitted,  10  is  assumed)  in  length on
                             device DEV: with an alphanumeric name  of
                             up  to six characters and an extension of
                             two characters.  A pre-existing  file  of
                             the  same name and extension on DEV: will
                             be deleted.  

         EDdev:filnam.ex     Connects the file on the given device  as
                             SCROLL's main file.  

         EIdev:filnam.ex     Allows  reading  an  auxiliary input file
                             with ER and ERP commands.  

         EOdev:filnam.ex[n]  Opens  a  tentative  file  which  can  be
                             written  into from the file being edited.
                             Output  is  by  EW   and   EWP.    Length
                             specification is optional.  The file must



                                  SCROLL-37

                    Summary of SCROLL Commands by Function



                             be closed with an EC command to  be  made
                             permanent.    Only  one  output  file  is
                             possible at a time.  

         EC                  The tentative output file is  closed  and
                             made permanent.  

         EKdev:filnam.ex     Deletes   the  specified  file  from  the
                             directory of device DEV:.  



                                       MAIN FILE TERMINATORS

                                       ****Command Line****

         EXIT                After the main file is written out on the
                             device,  it  is  closed and released from
                             SCROLL.  SCROLL awaits a  new  ED  or  EM
                             command.  

         QUIT                Does an EXIT, closes any output file, and
                             returns to the OS/8 Keyboard Monitor.  

         ABORT               Disconnects the  main  file  from  SCROLL
                             without further writing on the device.  



                                         POSITION COMMANDS

                                         ****Text Mode****

         CTRL/F              Move  the cursor to the front of the line
                             [and echo the new line].  

         CTRL/H              Move the cursor to the end  of  the  line
                             [and echo the new current line].  

         CTRL/A              Move  the  cursor  forward  one character
                             [and echo the character the cursor passed
                             over].  

         CTRL/Q              Move  the  cursor  backward one character
                             [and echo the character the cursor passed
                             over].  

         CTRL/S              Move  the  cursor forward one line if the
                             current line is ended [and echo  the  new
                             current line].  

         CTRL/W              Move  the  cursor  back  one  line if the
                             current line is ended [and echo  the  new



                                  SCROLL-38

                    Summary of SCROLL Commands by Function



                             current line].  

         CTRL/V              Move  the cursor forward one line whether
                             the current line is  ended  or  not  [and
                             echo the new current line].  

         CTRL/G              Move  forward  one  page  in the file.  A
                             form feed is the page delimiter.  

         CTRL/P              Move back one page in the file.   A  form
                             feed is the page delimiter.  

                                       ****Command Line****

         n$                  Move  n  lines after homing the cursor, n          _                                                           
                             may be positive or negative.  The current
                             line need not be ended.  

         nP                  Move over n form feeds (pages).  n can be
                             + or -.  -1 Is assumed.  

         /                   Move to the end of the file being edited.

         B                   Move  to  the beginning of the file being
                             edited.  

         !                   Move to the first line of the file  after
                             doing an EXIT.  

         nJ                  Jump the cursor n characters forward (+n)
                             or backward (-n).  1 Is assumed.  

         F                   Same as CTRL/F in Text Mode.  

         H                   Same as CTRL/H in Text Mode.  

         nES                 Positions the auxiliary input file to the
                             beginning of the n+1st line.  

         nESP                Positions the auxiliary input file to the
                             beginning of  the  n+1st  page  (skipping
                             over n form feeds).  

         V                   KBSCRL only- [Verify the current line and
                             mark the cursor position with an  uparrow
                             (^).] 



                                          SEARCH COMMANDS

                                       ****Command Line****




                                  SCROLL-39

                    Summary of SCROLL Commands by Function







         nSstring$           Search  forward up to a form feed (end of                 _                                                    
                             page)  for  the  nth  occurrence  of  the
                             character string.  

         nZstring$           Search forward to the end of file for the                 _                                                    
                             nth occurrence of the character string.  

         n_string$           Search  backward  up  to  a   form   feed                 _                                                    
                             (beginning  of  the  page)  for  the  nth
                             occurrence of the character  string.   (_
                             is Backarrow, SHIFT/O).  

         n^string$           Search  backward  to the beginning of the                 _                                                    
                             file  for  the  nth  occurrence  of   the
                             character   string.    (^   is   Uparrow,
                             SHIFT/N).  

         Rstring$            Replace the character string found by the                _                                                     
                             last search with the character string.  

         nRstring$           Delete  n  characters  to the left of the                 _                                                    
                             cursor and insert the  character  string.
                             ($Sabcde$3Rx$$ gives 'abx').                                _      _   __                

         Istring$            Insert  the  character  string  after the                _                                                     
                             cursor.  

         Gterminator$        Special  text  insertion  mode  for   all                    _                                                 
                             normal   or   control   characters.   The
                             character immediately following the G  is
                             interpreted as the terminator.  After the
                             text   has   been   entered,   type   the
                             terminator to end special insertion mode.

                                         ****Text Mode****

         CTRL/Z              Search forward for the last search string
                             used.  (Equivalent to $S$$).                                                     _ __    

         CTRL/N              Search   backward  for  the  last  search
                             string.  (Equivalent to $^$$).                                                       _ __    



                                         DELETION COMMANDS

                                         ****Text Mode****





                                  SCROLL-40

                    Summary of SCROLL Commands by Function



         RUBOUT              Delete one character to the left  of  the
                             cursor  [and echo the character deleted].

         CTRL/U              Delete the entire line to the left of the
                             cursor [and echo the new current line].  

         CTRL/R              Delete  the  entire  line to the right of
                             the cursor  [and  echo  the  new  current
                             line].  

         CTRL/O              Delete  the  tab  at the beginning of the
                             current line if there is  one  [and  echo
                             the new current line].  

                                       ****Command Line****

         nD                  After  homing  the  cursor delete n lines
                             forward (+n) or  backward  (-n).   -1  Is
                             assumed.  

         nDP                 After  homing  the cursor delete backward
                             (-n) or forward (+n) until the  nth  form
                             feed is encountered.  -1 Is assumed.  

         nW                  Delete  (Withdraw)  n  characters  to the
                             left of the cursor.  n must be  positive.

         U                   Same as CTRL/U in Text Mode.  

         KILL                Erases  entire contents of the main file.



                                      TEXT TRANSFER COMMANDS

                                       ****Command Line****

         nEW                 Starting  from  the  beginning   of   the
                             current  line, write n lines of text into
                             the auxiliary output file.  1 Is assumed.

         nEWP                Starting   from   the  beginning  of  the
                             current line, write n pages (delimited by
                             form feeds) to the auxiliary output file.
                             1 Is assumed for n.  

         nER                 After homing the  cursor,  read  n  lines
                             into  the  main  file  from the auxiliary
                             input file.  1 Is assumed for n.  

         nERP                After homing the  cursor,  read  n  pages
                             (delimited  by  form feeds) into the main
                             file form the auxiliary input file.  1 Is



                                  SCROLL-41

                    Summary of SCROLL Commands by Function



                             assumed for n.  

         nES                 Positions  to  the beginning of the n+1st
                             line of the auxiliary input file.   1  Is
                             assumed for n.  

         nESP                Positions  to  the beginning of the n+1st
                             page of the auxiliary input file.   1  Is
                             assumed for n.  

         nT                  Type  n  lines  on  the teletype from the
                             beginning of  the  current  line.   1  Is
                             assumed  so  that $T$$ prints the current                                               _ __                   
                             line on the teletype.  

         nTP                 Type n pages (to the nth form feed)  from
                             the  beginning of the current line.  1 Is
                             assumed for n.  



                                         X BUFFER COMMANDS

                                       ****Command Line****

         nX                  Transfer  n  lines  into  the  X   Buffer
                             beginning  with  the start of the current
                             line.  1 Is assumed for n.  

         nXP                 Transfer  n  pages  into  the  X   Buffer
                             starting   with   the  beginning  of  the
                             current line.  1 Is assumed for n.  

         nY                  Transfer (Yank) the  contents  of  the  X
                             Buffer  into the main file n times.  1 Is
                             assumed for n.  

         CTRL/X              Transfer one line  of  text  into  the  X
                             Buffer while in text mode.  

         CTRL/Y              Transfer  the  contents  of  the X Buffer
                             into the main file at the cursor position
                             while in text mode.  



                                    DISPLAY AND SWITCH COMMANDS

                                         ****Text Mode****

         CTRL/T              Controls auto tab insertion.  





                                  SCROLL-42

                    Summary of SCROLL Commands by Function



         CTRL/D              Controls  display  of  tabs  and carriage
                             returns on the scope.  

         CTRL/E              Controls the teletype echo.  [Not  active
                             in KBSCRL version.] 

         CTRL/K              Shift case of input characters.  

         CTRL/B              Display  the previous command executed in
                             the command line.  

                                       ****Command Line****

         N#                  Controls the number of lines of  text  to
                             be displayed.  n specifies this number.  









































                                  SCROLL-43




Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search