home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / editors / raved.arj / REPROF.DOC < prev    next >
Text File  |  1991-08-30  |  84KB  |  1,958 lines

  1.                                  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.               Ravitz Editor 1.10 Profile Assembler
  21.  
  22.  
  23.               (C) Copyright Ravitz Software Inc. 1989,1991
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.                    Ravitz Software Inc.
  31.                    P.O. Box 25068
  32.                    Lexington, KY  40524-5068
  33.                    USA
  34.                                           
  35.  
  36.                                         p-1
  37.      Contents
  38.  
  39.        RE Profile Assembler ............................................. 3
  40.        Mnemonic Abbreviations                          4
  41.        @BEEP - Beep On Error Messages ................................... 5
  42.        @CMDSAVELEN, @CMDSAVENUM - Command Recall List Qualifiers          5
  43.        @CSRPOSEDIT - Cursor Position After Edit Command ................. 5
  44.        @CSRSPEED, @CSRSPEEDV - Cursor Speed                   5
  45.        @DATEFORM, @TIMEFORM - Date, Time Format ......................... 5
  46.        @DECOASTKB - Decoast Keyboard?                      5
  47.        @DEFPRN - Default Printer ........................................ 5
  48.        @DEFSAVETP - Default Save Type                      5
  49.        @DEFTABHAN - Default Tab Handling ................................ 6
  50.        @DEFWRAP - Default Word Wrap Margins                   6
  51.        @EDCURFL - Edit Current Ffile..................................... 6
  52.        @EMKBBFPRM - Empty Keyboard Buffer For Prompt?              6
  53.        @ENHANCEDKB - Enhanced Keyboard Handling ......................... 6
  54.        @EXCHAR, @EXCHARST - Excluded Line Symbols                  6
  55.        @EXFILENAME - Expand File Names .................................. 6
  56.        @FILETP - File Type                              7
  57.        @FINDWORD(0..31) - Find Command Word Option ...................... 7
  58.        @GOTOMARGIN - Go To Margin                          7
  59.        @HICSRFIND - Highlight Cursor After Find/Change .................. 7
  60.        @HORSCRNCOR, @VERSCRNCOR - Horizontal, Vertical Screen Correction  8
  61.        @INITRPLINS - Initial Replace / Insert Mode ...................... 8
  62.        @LNLEN - Line Length                           8
  63.        @MENUPOS - Menu Position ......................................... 8
  64.        @MOUSE* - Mouse Configuration Parameters                  8
  65.        @NONDOSMEM - Non-DOS Memory ...................................... 8
  66.        @POLLINPUT - Poll Input?                          9
  67.        @SCRNWAIT - Color Screen Update Waits ............................ 9
  68.        @SHOWHIDSYS - Show Hidden and System Files in Directory List       9
  69.        @SORTDIR - Sort Directories ...................................... 9
  70.        @SORTSEQ(0..255) - Sorintg Sequence                      9
  71.        @TBNEWLN - Top Bottom New Line Function .......................... 9
  72.        @TRASHLINES - Number Of Trash Lines                     10
  73.        Screen Colors And Cursor Type ................................... 10
  74.        Function Key Definition                         11
  75.        @specialkey And @specialkal - Special Keys ...................... 11
  76.        Key Assignment Table                          12
  77.        RE Functions .................................................... 15
  78.        RE Functions - Basic                          16
  79.        RE Functions - Cursor, Screen, Window ........................... 17
  80.        RE Functions - Special Characters                     20
  81.        RE Functions - Configuration .................................... 20
  82.        RE Functions - Set And Unset Marks                     20
  83.        RE Functions - Area Mark ........................................ 21
  84.        RE Functions - Line Exclude                         22
  85.        RE Functions - Programming ...................................... 23
  86.        RE Functions - Values                         26
  87.        Macros .......................................................... 28
  88.        Startup Macro                             29
  89.        Variables ....................................................... 29
  90.        Manipulation of Macro Functions                     29
  91.        Handy Macro Sequences ........................................... 30
  92.  
  93.        continued
  94.                                           
  95.  
  96.                                         p-2
  97.        Querying Modes and Situations ................................... 31
  98.        Working With a Split Screen                         31
  99.        Macro Control of Commands ....................................... 32
  100.        Macro Defined Shift Modes                         33
  101.        Multifunction Macros ............................................ 33
  102.        Getkey and Structured User Input                     34
  103.        Messages, Message Types, and User Defined Messages .............. 35
  104.        Tab Sets                                 36
  105.        Help Text ....................................................... 36
  106.        Menus                                 37
  107.        Panels .......................................................... 38
  108.        Compatibility and Technical Information                 40
  109.                                           
  110.  
  111.                                         p-3
  112.      RE Profile Assembler
  113.  
  114.        The Ravitz  Editor EXE file can be set up to make  it more effective
  115.        for specific uses.  The program REPROF (file REPROF.EXE) is used  to
  116.        generate personalized versions of RE.
  117.  
  118.        REPROF reads  a  profile  and  creates a  new  RE.EXE.  The    calling
  119.        sequence is "REPROF (profile) (O-newexefile) (F)".  If no profile is
  120.        specified then the default RE.EXE is  created (this    is the    same as
  121.        using REPROF.1 unmodified).    You  can  specify an output  file  with
  122.        O-filename.    It  must end with extension .EXE.  F says to  do a fast
  123.        help  compression instead of the default compression.  The fast help
  124.        compression is not as  effective as the normal help compression, but
  125.        it is useful if you are debugging macros.
  126.  
  127.        REPROF may  be invoked  from the RE command    line using the    current
  128.        session  as    the  profile   by   using   the   command   "di  reprof
  129.        (o-newexefile) (f)".  If there are any errors the cursor will be put
  130.        on the problem line upon return to RE.
  131.  
  132.        The profile contains a  list of modifications.  First are  byte  and
  133.        word patches, macros, messages, and tab sets. The forms of the lines
  134.        are:
  135.  
  136.          B location value value ...      byte patch in the RE patch area
  137.          W location value value ...      word patch in the RE patch area
  138.          X number function function ...  first line of macro
  139.          Y function function ...         continuation of macro
  140.          M number type message         message definition
  141.          T number tabs             tab set definition.
  142.  
  143.        These are followed by the help text and menus.
  144.  
  145.        Hex numbers    are specified by  prefixing  them with $.  ASCII values
  146.        other  than    0..9, $, ^, &, @, and space may be specified  with that
  147.        character for all  values  and functions (not locations).  Mnemonics
  148.        are    provided  for all  functions  and  locations,  and most values.
  149.        Before the help text,  lines that begin with "*" and blank lines are
  150.        ignored, and  "//" means  that the  following text is a new    profile
  151.        line.  In the help text, lines with a "*" in column one are ignored,
  152.        blank lines are  part of the  help text, and  // is part of the help
  153.        text.
  154.  
  155.        The file  REPROF.1  contains  the  profile  with which  the    default
  156.        version of RE was created.  REPROF.2 contains a  few more  functions
  157.        than  the  default profile and has a shortened help text.  Use these
  158.        profiles as a starting point for creating your own profile.
  159.  
  160.        The size of RE.EXE grows or shrinks to accommodate different profile
  161.        sizes.  The total size of RE.EXE  may not exceed 65536 bytes  (64K).
  162.        (From  56K to  64K can  only be  help  text, but  this  is  rarely a
  163.        limitation.) This leaves at least 18K for your profile.
  164.                                           
  165.  
  166.                                         p-4
  167.      Mnemonic Abbreviations
  168.  
  169.        To  keep the location and function  mnemonics short    and consistent,
  170.        this list of abbreviations is used.
  171.  
  172.        ABBREV  FULL WORD       ABBREV  FULL WORD          ABBREV  FULL WORD
  173.  
  174.        a-       alt-        for       forward          ps      position
  175.        ar       area        ins       insert          rep     repeat
  176.        bk       backward       kb       keyboard          rpl     replace
  177.        c-       ctrl-       lf       left           rt      right
  178.        cmd       command       ln       line           s-      shift-
  179.        csr       cursor       md       mode           scrn    screen
  180.        del       delete       mk       mark           ses     session
  181.        def       default       np       numeric keypad     sp      space
  182.        ent       enter       para    paragraph          tp      type
  183.        ex       exclude(d)       pg       page           txt     text
  184.                                           
  185.  
  186.                                         p-5
  187.      @BEEP - Beep On Error Messages
  188.  
  189.        Normally RE beeps only on severe errors.  To make all error messages
  190.        cause  a  beep,  set  the  byte at @beep  to ^error.  The default is
  191.        ^critical. ^no turns off all beeps.
  192.  
  193.      @CMDSAVELEN, @CMDSAVENUM - Command Recall List Qualifiers
  194.  
  195.        The    byte at @cmdsavelen  specifies the minimum  length of a command
  196.        that will be added to the command recall list. The maximum number of
  197.        commands on the list is specified by the byte at @cmdsavenum.
  198.  
  199.      @CSRPOSEDIT - Cursor Position After Edit Command
  200.  
  201.        After a successful Edit command  you  can  have the cursor placed on
  202.        the command line (default) or in  the  text    area.  Set the byte  at
  203.        @csrposedit to ^cmdln or ^txtar to control this.
  204.  
  205.      @CSRSPEED, @CSRSPEEDV - Cursor Speed
  206.  
  207.        By default the horizontal cursor speed is tripled in typematic mode.
  208.        This is set with B @csrspeed 2. You can slow it to double speed with
  209.        1 and normal speed with 0. Higher numbers also allowed.
  210.  
  211.        @csrspeedv works  like @csrspeed except that it affects the vertical
  212.        cursor speed. 0 is the default.
  213.  
  214.      @DATEFORM, @TIMEFORM - Date, Time Format
  215.  
  216.        The word  at  @dateform  sets  the  date format.  This  defaults  to
  217.        ^MM-DD-YY and  can  also be set to ^YY-MM-DD  and  ^YYYY-MM-DD.  The
  218.        alternate formats are directly sortable.
  219.  
  220.        The byte at @timeform sets the time    format.  The default is ^12hour
  221.        and ^24hour    is the    only alternative.  ^24hour format  is  directly
  222.        sortable.
  223.  
  224.      @DECOASTKB - Decoast Keyboard?
  225.  
  226.        Keyboard decoasting    can  be  turned  off  by  changing the    byte at
  227.        @decoastkb to ^no. The default is ^yes.
  228.  
  229.      @DEFPRN - Default Printer
  230.  
  231.        The    default printer  is specified by a  Turbo Pascal  string with a
  232.        maximum length of  8.  There should be  no  trailing  blanks  in the
  233.        string.  The length byte  is  at @defprn and the file or device name
  234.        begins  immediately    after this.  The default is  PRN.  To  set  the
  235.        default printer to LPT2 use "B @defprn 4 l p t ^2".
  236.  
  237.      @DEFSAVETP - Default Save Type
  238.  
  239.        The byte at @defsavetp sets the default save type.  This is normally
  240.        ^backup, but may be set to ^direct  or ^indirect.  The save type may
  241.        also be set explicitly in each Save command.
  242.                                           
  243.  
  244.                                         p-6
  245.      @DEFTABHAN - Default Tab Handling
  246.  
  247.        By  default    tabs  are  expanded  on  input    but  there  is    no  tab
  248.        compression on output. This is controlled by the byte at @deftabhan.
  249.        It can  be set to ^tabed(2..63) for    tab expansion  during  the edit
  250.        command,  ^tabedsv(2..63)  for  tab    expansion  during  edit and tab
  251.        compression during save, or    taboff(2..63) for  no tab  expansion or
  252.        compression.  The numeric parameter to these functions is the number
  253.        of columns separating tab columns. It is needed even if you turn tab
  254.        handling off because tab handling can be overridden by edit and save
  255.        options. The default is ^tabed(8).
  256.  
  257.      @DEFWRAP - Default Word Wrap Margins
  258.  
  259.        The    initial left and right word wrap margins are one byte values at
  260.        @defwrap. These are initially 1 and 255.  The right word wrap margin
  261.        may be individually accessed with @defwraprt.
  262.  
  263.      @EDCURFL - Edit Current Ffile
  264.  
  265.        To cause  the Edit command to default to the C option, which says to
  266.        look for a  current file before getting it from the disk, change the
  267.        byte at @edcurfl from ^no to  ^yes.    This option is more accurate if
  268.        you also set @exfilename to ^yes.
  269.  
  270.      @EMKBBFPRM - Empty Keyboard Buffer For Prompt?
  271.  
  272.        To  prevent RE from emptying the keyboard  buffer for "Are  you sure
  273.        (Y/N)?" and "Replace file (Y/N)?" change the byte at @emkbbfprm from
  274.        ^yes to ^no.
  275.  
  276.      @ENHANCEDKB - Enhanced Keyboard Handling
  277.  
  278.        By default RE does not look for the enhanced keyboard. If you assign
  279.        functions to keys on the enhanced keyboard (see below), you need  to
  280.        set the byte at @enhancedkb to ^auto to enable these keys.  With the
  281.        enhanced keyboard enabled RE  will still handle  regular  keyboards.
  282.        The default is ^off.
  283.  
  284.        The    reason for not looking for the enhanced keyboard by default  is
  285.        that some resident programs    cause  RE to  think  that the  enhanced
  286.        keyboard is there when it is not.  Outside of such problems, you can
  287.        run on any PC with the enhanced keyboard enabled.
  288.  
  289.      @EXCHAR, @EXCHARST - Excluded Line Symbols
  290.  
  291.        The two characters used to show excluded lines and the start of each
  292.        line in an excluded group are bytes at @exchar  and @excharst.  They
  293.        are defaulted to - and +.
  294.  
  295.      @EXFILENAME - Expand File Names
  296.  
  297.        The byte at @exfilename is  normally ^no, which says  to leave  file
  298.        names as entered. If you change this to ^yes then file names entered
  299.        with  the Edit and  Name commands will be expanded to include a disk
  300.        and path, and any trailing dot is removed.
  301.                                           
  302.  
  303.                                         p-7
  304.      @FILETP - File Type
  305.  
  306.        By default RE reads and writes  old style ASCII files (CR/LF (13,10)
  307.        at the end  of every  line and EOF (26) at the end of the file).  If
  308.        you set  the  byte at @filetp to ^new, RE reads and writes new style
  309.        ASCII files    (CR/LF    at the end of every line except the last and no
  310.        EOF).  The default  is ^old.  The advantage of old  style  files  is
  311.        compatibility with other programs.  The advantage of new style files
  312.        is that ASCII 26 may be used as a character within the file    and the
  313.        trailing  CR/LF/EOF sequence of old style files does not get  in the
  314.        way on printer control files.
  315.  
  316.        If you set RE  up to use new  style files, it can still read an  old
  317.        style file but its final line will be an ASCII 26. If you leave that
  318.        line and save the file, it will still be a good old style file.
  319.  
  320.        If RE is set up for old  style files, it can read new style files in
  321.        general, but it will stop reading at the first ASCII 26, and it will
  322.        save the file as an old style file.
  323.  
  324.      @FINDWORD(0..31) - Find Command Word Option
  325.  
  326.        The characters  that  are considered to be  part of    a word by the W
  327.        (word)  option of the F (find) command, the    uppercase  first letter
  328.        function,  and the ^ifcharinword and ^ifcharnotinword  functions are
  329.        specified by a Turbo Pascal set constant. The set is specified by 32
  330.        bytes at @findword(0..31).  Each character is represented by one bit
  331.        in the set.    Bits that are 1 represent characters that are part of a
  332.        word. Bits that are 0 are word separators.  The default set is #, $,
  333.        %, 0..9, @, A..Z, a..z.  The address of  a bit as  a function of the
  334.        ASCII code that it controls is:
  335.  
  336.          the byte address is @findword(ASCII shr 3)
  337.          the bit within that byte is ASCII and 7.
  338.  
  339.      @GOTOMARGIN - Go To Margin
  340.  
  341.        When RE goes to a  specific line with the go to function, or a Find,
  342.        Change, or line number command, it puts the line  one line down from
  343.        the    first line in the text area.  This can be changed to any number
  344.        from 0 to 40. To do this, set the byte at @gotomargin to the desired
  345.        margin.  The default is 1.  RE dynamically limits  the actual  value
  346.        used to half the text area height, so 40 may be a useful value.
  347.  
  348.      @HICSRFIND - Highlight Cursor After Find/Change
  349.  
  350.        To cause the  cursor to  be highlighted after a  successful    find or
  351.        change, set the byte at @hicsrfind to  1..126 to set  the  number of
  352.        blinks or ^yes for indefinite blinking. The default is 2.
  353.                                           
  354.  
  355.                                         p-8
  356.      @HORSCRNCOR, @VERSCRNCOR - Horizontal, Vertical Screen Correction
  357.  
  358.        When  RE does an  automatic horizontal screen  scroll,  it puts  the
  359.        cursor ten spaces into the  screen.    This correction is specified in
  360.        the byte at @horscrncor and may be from 0 to 39. The default is 10.
  361.  
  362.        When RE does  an automatic vertical    screen    scroll during  vertical
  363.        cursor movement, it puts the cursor on the edge of the screen.  This
  364.        correction is specified in the byte at @verscrncor and may be from 0
  365.        to 40. The default is 0. RE dynamically limits the actual value used
  366.        to half the text area height, so you might find 40 a useful value.
  367.  
  368.      @INITRPLINS - Initial Replace / Insert Mode
  369.  
  370.        To set  the initial replace / insert mode to insert, change the byte
  371.        at @initrplins to ^ins. The default is ^rpl.
  372.  
  373.      @LNLEN - Line Length
  374.  
  375.        The byte  at @lnlen    specifies the maximum line  length  for RE.  It
  376.        defaults to the maximum of  255 and may be  as low as the  number of
  377.        columns on your screen.  If it is less than this then RE will refuse
  378.        to start.
  379.  
  380.      @MENUPOS - Menu Position
  381.  
  382.        By default (B @menupos  ^auto) menus pop up    at the top or bottom of
  383.        the    screen to avoid  covering the  cursor.    If  you prefer    them to
  384.        always pop up at the bottom, set B @menupos ^bottom.
  385.  
  386.      @MOUSE* - Mouse Configuration Parameters
  387.  
  388.        You can configure RE's mouse handling with these patches:
  389.  
  390.        B @mouse     ^yes / ^no       use mouse?          default ^yes
  391.        B @mousereset ^hard / ^soft       mouse reset type      default ^hard
  392.        B @mousehsen  1..255        mouse ticks/column      default 12
  393.        B @mousevsen  1..255        mouse ticks/line      default 16
  394.  
  395.        The @mousereset patch lets you use a software mouse reset.  This may
  396.        be useful  on  computers  that have very  slow hardware mouse resets
  397.        (some IBM PS/2s).  If you  notice a    two second delay  on startup or
  398.        after a DOS shell, try B @mousereset ^soft.
  399.  
  400.        You can also assign functions to the mouse buttons and movement. See
  401.        KEY ASSIGNMENT TABLE.
  402.  
  403.      @NONDOSMEM - Non-DOS Memory
  404.  
  405.        The byte at @nondosmem specifies  what memory between 640K and 1088K
  406.        will be used by  RE.  The default is ^all which includes EMS memory,
  407.        XMS upper memory blocks, and the XMS high memory area.  ^EMS says to
  408.        use just EMS, ^XMS says to use just the XMS areas, and ^none says to
  409.        use only standard DOS memory.
  410.                                           
  411.  
  412.                                         p-9
  413.      @POLLINPUT - Poll Input?
  414.  
  415.        Normally  RE polls the keyboard input.  This is needed  for the caps
  416.        lock  indicator, cursor highlighting, mouse handling,  and automatic
  417.        keyboard  state panels.  However it uses  up battery  power    on some
  418.        laptop computers.  Set  the    byte at  @pollinput to    ^no to turn off
  419.        polling - this will also shut off the caps lock indicator. Set it to
  420.        ^yes to always do polling.  Set it to ^auto to turn off polling only
  421.        when running on a PC Convertible. It is normally ^yes.
  422.  
  423.        Regardless of how you set @pollinput polling will  be turned  on  if
  424.        you use a  mouse  or  automatic panels.  Also polling  is  always in
  425.        effect while the cursor is highlighted, while RE is doing background
  426.        data defragmentation, and for a half second after each keystroke.
  427.  
  428.        When running  under DESQview RE returns unused  time slices,  so you
  429.        can leave polling on and still get good multitasking.
  430.  
  431.      @SCRNWAIT - Color Screen Update Waits
  432.  
  433.        On  a color    graphics adaptor  RE  waits for retraces to update  the
  434.        screen  to prevent "snow".  Some CGAs do  not  need these waits.  RE
  435.        normally does  not do screen update waits on PCjrs, PC Convertibles,
  436.        PS/2 Model 30s and 80s, EGAs,  VGAs,  MDAs,    any display mode  other
  437.        than 2 or 3, and any mode with  other than  80 columns.  The byte at
  438.        @scrnwait  can  be  set to  ^auto (the  default) to let RE  make the
  439.        decision, ^yes to force waits, or ^no to disable waits.
  440.  
  441.      @SHOWHIDSYS - Show Hidden and System Files in Directory List
  442.  
  443.        Normally  directory    lists  ignore  hidden and  system  file.  Set B
  444.        @showhidsys ^yes to include these files. The default is ^no.
  445.  
  446.      @SORTDIR - Sort Directories
  447.  
  448.        RE normally sorts  directory lists.    This can  be  disabled    with  B
  449.        @sortdir ^no.  Subdirectories will be above files, but otherwise the
  450.        order will be the same as with a DIR command. The default is ^yes.
  451.  
  452.      @SORTSEQ(0..255) - Sorintg Sequence
  453.  
  454.        The default    collating sequence for the Order command (without the C
  455.        option) is contained in an array of bytes from 0 to 255.  This array
  456.        does not contain a sequence of ASCII codes  but instead contains the
  457.        sort value for each    ASCII code.  This  lets you define  a number of
  458.        characters  to have the same  sort value.  The address  of the  sort
  459.        value for ASCII code i is @sortseq(i).
  460.  
  461.      @TBNEWLN - Top Bottom New Line Function
  462.  
  463.        When  you type a character  on the  Top ---    or Bottom --- line,  RE
  464.        inserts a new line, puts the cursor on it, and enters the character.
  465.        This  line can be  added  with  one of four    functions: ^newln(1)  -
  466.        cursor column is unchanged; ^newlnalign(1) - cursor is put under the
  467.        first nonblank of the previous line; ^newlncol1(1) -  cursor goes to
  468.        column 1; or ^newlnww(1)  - cursor  goes  to left word  wrap column.
  469.        This is set with W @tbnewln function. The default ^newln(1).
  470.                                           
  471.  
  472.                                        p-10
  473.      @TRASHLINES - Number Of Trash Lines
  474.  
  475.        Set B @savetrash to the number of lines to have RE keep in the trash
  476.        buffer. This can be 0, which disables the buffer, to 255.
  477.  
  478.      Screen Colors And Cursor Type
  479.  
  480.        There  are four sets of screen color  attributes, each with eighteen
  481.        attributes, listed below.  RE  reads the  current  display  mode  on
  482.        startup and after  a  DOS shell and chooses: the mono attributes for
  483.        mode  7; b/w  attributes for modes 0  and  2; lcd attributes for any
  484.        other mode  on  a PC Convertible; and color attributes for  anything
  485.        else. There are no mnemonics for the attribute values.
  486.  
  487.        There is also a  cursor type  byte patch  for  each display    mode  -
  488.        @clrcsrtp,  @b/wcsrtp, @moncsrtp,  and  @lcdcsrtp.  Normally the  PC
  489.        blinking cursor is turned off and moved off the screen - this is set
  490.        with ^noblink (the  default).  If  it is  desirable to have    the  PC
  491.        cursor track the  noblink cursor, use  ^noblink/bios.  The PC cursor
  492.        will still  be turned  off but it will move with the noblink cursor.
  493.        This  may  cause  problems with some resident programs that turn the
  494.        cursor on but do not turn it off when finished. Use ^bios to disable
  495.        the noblink cursor and enable the PC cursor.
  496.  
  497.        ATTRIBUTE         COLOR         B/W     MONO         LCD
  498.                  PATCH         PATCH     PATCH         PATCH
  499.                  LOCATION    LOCATION     LOCATION    LOCATION
  500.  
  501.        text          @clrtxt     @b/wtxt     @montxt     @lcdtxt
  502.        excluded line     @clrextxt   @b/wextxt     @monextxt   @lcdextxt
  503.        area marked text     @clrarmk    @b/warmk     @monarmk    @lcdarmk
  504.        area marked excl     @clrarmkex  @b/warmkex  @monarmkex  @lcdarmkex
  505.        position mark     @clrpsmk    @b/wpsmk     @monpsmk    @lcdpsmk
  506.        insert cursor     @clrinscsr  @b/winscsr  @moninscsr  @lcdinscsr
  507.        replace cursor     @clrrplcsr  @b/wrplcsr  @monrplcsr  @lcdrplcsr
  508.        error message     @clrerrmsg  @b/werrmsg  @monerrmsg  @lcderrmsg
  509.        status line         @clrstln    @b/wstln     @monstln    @lcdstln
  510.        inactive st line     @clriastln  @b/wiastln  @moniastln  @lcdiastln
  511.        command line      @clrcmdln   @b/wcmdln     @moncmdln   @lcdcmdln
  512.        top, bottom line     @clrtopbot  @b/wtopbot  @montopbot  @lcdtopbot
  513.        help title         @clrhlpttl  @b/whlpttl  @monhlpttl  @lcdhlpttl
  514.        help text         @clrhlptxt  @b/whlptxt  @monhlptxt  @lcdhlptxt
  515.        menu title         @clrmenttl  @b/wmenttl  @monmenttl  @lcdmenttl
  516.        menu text         @clrmentxt  @b/wmentxt  @monmentxt  @lcdmentxt
  517.        menu cursor         @clrmencsr  @b/wmencsr  @monmencsr  @lcdmencsr
  518.        menu text 2         @clrmentx2  @b/wmentx2  @monmentx2  @lcdmentx2
  519.                                           
  520.  
  521.                                        p-11
  522.      Function Key Definition
  523.  
  524.        RE  uses  a translation table  on all function keys.  You may change
  525.        this  table to  add or change function  key    assignments.  To make a
  526.        change: find the address in the KEY ASSIGNMENT TABLE that represents
  527.        the key  of    interest;  find  the  RE  function that represents  the
  528.        function of interest; and assign the code to that address. There are
  529.        many functions that take two or more words.    These can only    be used
  530.        in macros, not in direct key assignments.
  531.  
  532.        For example, to assign  the autoscroll cursor movement  functions to
  533.        the cursor keys, use these profile lines:
  534.  
  535.          W @csrlf &csrlf  // W @csrrt &csrrt
  536.          W @csrup &csrup  // W @csrdn &csrdn
  537.  
  538.      @specialkey And @specialkal - Special Keys
  539.  
  540.        Starting  at @specialkey are nine words that define the special keys
  541.        to use for cursor left, cursor right, cursor up, cursor down, enter,
  542.        esc,  pgup, pgdn,  and help    in the    drawing modes,    when a    message
  543.        requests  that you press enter to continue, for the help system, and
  544.        for menus.  The words  contain  the location in  the key translation
  545.        table of the key to use.  The default set is @csrlf, @csrrt, @csrup,
  546.        @csrdn,  @ent, @esc, @pgup, @pgdn, and @a-f1.  You must be  sure  to
  547.        assign  only locations that contain normal  RE  functions, not ASCII
  548.        codes.  Each location must be unique to be seen.  If other keys have
  549.        the same  function as the  ones assigned here, then they will  cause
  550.        the same action in the help system, etc.
  551.  
  552.        At  @specialkal  is    another  set  of nine  words that are alternate
  553.        values for the special keys.  They should have  the same  values  as
  554.        those  for @specialkey unless you want another key to  have the same
  555.        function. The default set is @mouself, @mousert, @mouseup, @mousedn,
  556.        @mousebtnlf,  @mousebtnrt, @pgup, @pgdn, and @a-f1.    This  lets  the
  557.        mouse enter six of the special keys.
  558.                                           
  559.  
  560.                                        p-12
  561.      Key Assignment Table
  562.  
  563.        KEY             PATCH LOCATION     DEFAULT RE FUNCTION
  564.  
  565.        alt -         @a--         &scrolllfcsr
  566.        alt =         @a-=         &scrollrtcsr
  567.        alt 1         @a-1         &repcurfind
  568.        alt 2         @a-2         &repcurchange
  569.        alt 3         @a-3         &fillnum
  570.        alt 4         @a-4         &blankarrem
  571.        alt 5         @a-5         &fillblock
  572.        alt 6         @a-6         &noop
  573.        alt 7         @a-7         &csrupoutline
  574.        alt 8         @a-8         &csrdnoutline
  575.        alt 9         @a-9         &shiftlf
  576.        alt 0         @a-0         &shiftrt
  577.        alt a         @a-a         &asciicode
  578.        alt b         @a-b         &mkcor
  579.        alt c         @a-c         ©lns
  580.        alt d         @a-d         &delar
  581.        alt e         @a-e         ¯o(125)
  582.        alt f         @a-f         &flow
  583.        alt f1         @a-f1         &help
  584.        alt f2         @a-f2         &noop
  585.        .             .             .
  586.        alt f10         @a-f10         &noop
  587.        alt g         @a-g         ¯o(101)
  588.        alt h         @a-h         &hicsr(10)
  589.        alt i         @a-i         &insar
  590.        alt j         @a-j         &rtjustify
  591.        alt k         @a-k         &eraseendln
  592.        alt l         @a-l         &mkln
  593.        alt m         @a-m         &movelns
  594.        alt n         @a-n         &newlnalign(1)
  595.        alt o         @a-o         &overlayar
  596.        alt p         @a-p         &set/re/unpsmk
  597.        alt q         @a-q         &nextses
  598.        alt r         @a-r         &reshow
  599.        alt s         @a-s         &split/join
  600.        alt t         @a-t         &noop
  601.        alt u         @a-u         &unmk
  602.        alt v         @a-v         ¯o(102)
  603.        alt w         @a-w         &setdrawingmd
  604.        alt x         @a-x         &exindentrem
  605.        alt y         @a-y         &recallcmdfor
  606.        alt z         @a-z         ¯o(100)
  607.        back tab         @bktab         &tabbkcurset
  608.        backspace/ctrl h  @bksp         &bksp
  609.        ctrl \         @c-\         28
  610.        ctrl ]         @c-]         29
  611.        ctrl -         @c--         31
  612.        ctrl 2 (null)     @c-2         0
  613.        ctrl 6         @c-6         30
  614.        ctrl a         @c-a         1
  615.        ctrl b         @c-b         2
  616.        ctrl backspace    @c-bksp         &delln
  617.        ctrl c         @c-c         3
  618.                                           
  619.  
  620.                                        p-13
  621.        ctrl d         @c-d         4
  622.        ctrl e         @c-e         5
  623.        ctrl end         @c-end         &bottomoffile
  624.        ctrl ent/ctrl j   @c-ent         10
  625.        ctrl f         @c-f         6
  626.        ctrl f1         @c-f1         &noop
  627.        .             .             .
  628.        ctrl f10         @c-f10         &noop
  629.        ctrl g         @c-g         7
  630.        ctrl home         @c-home         &topoffile
  631.        ctrl k         @c-k         11
  632.        ctrl l         @c-l         12
  633.        ctrl left         @c-lf         &scrolllf(1)
  634.        ctrl n         @c-n         14
  635.        ctrl o         @c-o         15
  636.        ctrl p         @c-p         16
  637.        ctrl page down    @c-pgdn         &scrolldn(1)
  638.        ctrl page up      @c-pgup         &scrollup(1)
  639.        ctrl q         @c-q         17
  640.        ctrl r         @c-r         18
  641.        ctrl right         @c-rt         &scrollrt(1)
  642.        ctrl s         @c-s         19
  643.        ctrl t         @c-t         20
  644.        ctrl u         @c-u         21
  645.        ctrl v         @c-v         22
  646.        ctrl w         @c-w         23
  647.        ctrl x         @c-x         24
  648.        ctrl y         @c-y         25
  649.        ctrl z         @c-z         26
  650.        cursor down         @csrdn         &csrdnwrap
  651.        cursor left         @csrlf         &csrlfwrap(1)
  652.        cursor right      @csrrt         &csrrtwrap(1)
  653.        cursor up         @csrup         &csrupwrap
  654.        delete         @delete         &delchar(1)
  655.        end             @end         &csrendln
  656.        enter/ctrl m      @ent         ^macro(106)
  657.        esc/ctrl [         @esc         &csrcmd/txt
  658.        f1             @f1         ¯o(112)
  659.        f2             @f2         ¯o(113)
  660.        f3             @f3         ¯o(114)
  661.        f4             @f4         ¯o(115)
  662.        f5             @f5         ¯o(116)
  663.        f6             @f6         ¯o(117)
  664.        f7             @f7         ¯o(118)
  665.        f8             @f8         ¯o(119)
  666.        f9             @f9         ¯o(120)
  667.        f10             @f10         ¯o(121)
  668.        home          @home         &csrstartln
  669.        insert         @insert         &insrplmd
  670.        mouse down         @mousedn         &csrdn
  671.        mouse left         @mouself         &csrlf
  672.        mouse lf button   @mousebtnlf     ¯o(124)
  673.        mouse mid button  @mousebtnmd     &noop
  674.        mouse right         @mousert         &csrrt
  675.        mouse rt button   @mousebtnrt     &csrcmd/txt
  676.        mouse up         @mouseup         &csrup
  677.        page down         @pgdn         &scrolldncsr
  678.                                           
  679.  
  680.                                        p-14
  681.        page up         @pgup         &scrollupcsr
  682.        shift f1         @s-f1         &noop
  683.        .             .             .
  684.        shift f10         @s-f10         &noop
  685.        tab/ctrl i         @tab         &tabcurset
  686.        (E) alt [         @e-a-[         &noop
  687.        (E) alt ]         @e-a-]         &noop
  688.        (E) alt ;         @e-a-;         &noop
  689.        (E) alt '         @e-a-'         &noop
  690.        (E) alt `         @e-a-`         &noop
  691.        (E) alt \         @e-a-\         &noop
  692.        (E) alt ,         @e-a-,         &noop
  693.        (E) alt .         @e-a-.         &noop
  694.        (E) alt /         @e-a-/         &noop
  695.        (E) alt backsp    @e-a-bksp         &noop
  696.        (E) alt del         @e-a-del         &noop
  697.        (E) alt down      @e-a-dn         &noop
  698.        (E) alt end         @e-a-end         &noop
  699.        (E) alt enter     @e-a-ent         &noop
  700.        (E) alt esc         @e-a-esc         &noop
  701.        (E) alt f11         @e-a-f11         &noop
  702.        (E) alt f12         @e-a-f12         &noop
  703.        (E) alt home      @e-a-home         &noop
  704.        (E) alt ins         @e-a-ins         &noop
  705.        (E) alt kp *      @e-a-np-*         &noop
  706.        (E) alt kp -      @e-a-np--         &noop
  707.        (E) alt kp +      @e-a-np-+         &noop
  708.        (E) alt kp /      @e-a-np-/         &noop
  709.        (E) alt kp ent    @e-a-np-ent     &noop
  710.        (E) alt left      @e-a-lf         &noop
  711.        (E) alt pg dn     @e-a-pgdn         &noop
  712.        (E) alt pg up     @e-a-pgup         &noop
  713.        (E) alt right     @e-a-rt         &noop
  714.        (E) alt tab         @e-a-tab         &noop
  715.        (E) alt up         @e-a-up         &noop
  716.        (E) center csr    @e-cencsr         &noop
  717.        (E) ctrl del/.    @e-c-del         &noop
  718.        (E) ctrl dn/2     @e-c-dn         &noop
  719.        (E) ctrl f11      @e-c-f11         &noop
  720.        (E) ctrl f12      @e-c-f12         &noop
  721.        (E) ctrl ins/0    @e-c-ins         &noop
  722.        (E) ctrl kp -     @e-c-np--         &noop
  723.        (E) ctrl kp +     @e-c-np-+         &noop
  724.        (E) ctrl kp /     @e-c-np-/         &noop
  725.        (E) ctrl kp *     @e-c-np-*         &noop
  726.        (E) ctrl kp 5     @e-c-np-5         &noop
  727.        (E) ctrl tab      @e-c-tab         &noop
  728.        (E) ctrl up         @e-c-up         &noop
  729.        (E) f11         @e-f11         &noop
  730.        (E) f12         @e-f12         &noop
  731.        (E) shift f11     @e-s-f11         &noop
  732.        (E) shift f12     @e-s-f12         &noop
  733.  
  734.        (E) in front of  a key means  that  the key is  detected only on  an
  735.        enhanced  keyboard.    These  keys  are all  assigned    no operation by
  736.        default.  To  use  any  of the  (E) keys,  you must enable  enhanced
  737.        keyboard handling with the patch "B @enhancedkb ^auto".
  738.                                           
  739.  
  740.                                        p-15
  741.      RE Functions
  742.  
  743.        Below are the RE functions, catagorized into:
  744.  
  745.          BASIC
  746.          CURSOR, SCREEN, WINDOW
  747.          SPECIAL CHARACTERS
  748.          CONFIGURATION
  749.          SET AND UNSET MARKS
  750.          AREA MARK
  751.          LINE EXCLUDE
  752.          PROGRAMMING
  753.          VALUES.
  754.  
  755.        Any    function  (except the ASCII characters) prefixed with & instead
  756.        of ^ will be the same function but keyboard decoasted.  For example,
  757.        &scrolllf(1)  scrolls  left    1   column  and  is   decoasted,  while
  758.        ^scrolllf(1) scrolls left 1 column but is not decoasted.
  759.  
  760.        From a macro the & and ^  distinction is different - & means end the
  761.        macro  if  the function  is not successful and ^ means continue  the
  762.        macro regardless of the outcome. See MACROS.
  763.  
  764.        There  is no range checking on  the numeric parameters of functions,
  765.        so be careful.
  766.  
  767.        Functions  that use parameters that are separate tokens may be  used
  768.        only  in macros.  These parameters  should not be  between $F000 and
  769.        $FFFF.  If they are, they may be mistaken for a label or one of  the
  770.        value functions.
  771.                                           
  772.  
  773.                                        p-16
  774.      RE Functions - Basic
  775.  
  776.        ^a(0..255)           ASCII 0..255
  777.        ^asciicode           enter ASCII code
  778.        ^bksp           backspace
  779.        ^blankln           blank current line
  780.        ^clrchgd           clear session changed flag
  781.        ^clrmodadd           clears the line mod and add status bits
  782.        ^defrag           defragment, display free memory
  783.        ^delchar(1..127)       delete 1..127 characters
  784.        ^delln           delete non-excluded line
  785.        ^eraseendln           erase end of line
  786.        ^execcmd           execute command
  787.        ^execcmdnorecall       execute command - do not save command for
  788.                    recall
  789.        ^help           help
  790.        ^help(1..25)        help starting on page A..Y
  791.        ^hicsr(1..127)       highlight cursor for 1..126 blinks or
  792.                    indefinitely
  793.        ^insmd           insert mode
  794.        ^insrplmd           insert mode/replace mode
  795.        ^join           join lines
  796.        ^newln(1..128)       insert 1..128 new lines, don't change
  797.                    cursor column
  798.        ^newlnalign(1..128)       insert 1..128 new lines, align cursor
  799.        ^newlncol1(1..128)       insert 1..128 new lines, put cursor in col 1
  800.        ^newlnww(1..128)       insert 1..128 new lines, put cursor in
  801.                    left word wrap column
  802.        ^overlaycmd           overlay pending command at cursor
  803.                    Does not work on command line.
  804.        ^overlaydate        overlays date at cursor
  805.        ^overlayfile        overlays file name at cursor
  806.        ^overlaytime        overlays time at cursor
  807.        ^recallcmdbk        recall commands reverse order
  808.        ^recallcmdfor       recall commands
  809.        ^repcurchange       repeats current change (including cmd line)
  810.        ^repcurfind           repeats current find (including cmd line)
  811.        ^repdispchange       repeat displayed change
  812.        ^repdispfind        repeats displayed find
  813.        ^reshow           reshow
  814.        ^rplmd           replace mode
  815.        ^setchgd           set session changed flag
  816.        ^setdrawingmdcc       set drawing mode current character
  817.        ^setdrawingmddl       set drawing mode double line
  818.        ^setdrawingmdoff       set drawing mode off
  819.        ^setdrawingmdsl       set drawing mode single line
  820.        ^setshiftmd(0..26)       set shift mode to off, a..z
  821.        ^settabset(1..10)       set tab set to 1..10
  822.        ^setwwlf           set left word wrap margin to cursor pos
  823.        ^setwwlfx x           set left word wrap margin to x
  824.        ^setwwrt           set right word wrap margin to cursor pos
  825.        ^setwwrtx x           set right word wrap margin to x
  826.        ^split           split line
  827.        ^split/join           split line/join lines
  828.        ^wordcmdln           moves the word at the cursor to cmd line
  829.                                           
  830.  
  831.                                        p-17
  832.      RE Functions - Cursor, Screen, Window
  833.  
  834.        ^bottomoffile       to bottom of file
  835.        ^csrcmd/txt           cursor to command line/text
  836.        ^csrcmdln           cursor to command line
  837.        ^csrcolx x           cursor to column x
  838.        ^csrdn           cursor down without wrap
  839.        ^csrdn(1..78)       cursor down 1..78 lines without wrap
  840.                    (dynamically limited to 1 screen)
  841.        ^csrdnoutline       cursor down to next line that starts on or
  842.                    to the left of the cursor
  843.        ^csrdnoutlinemk       cursor down to next line that starts on or
  844.                    to the left of the cursor ignoring text
  845.                    outside of current area mark margins
  846.        ^csrdnwrap           cursor down with wrap
  847.        ^csrdnwrap(1..77)       cursor down 1..77 lines with wrap
  848.                    (cursor stops at line 1, top and bottom of
  849.                    each window)
  850.        ^csrendln           cursor to end of line
  851.        ^csrlf           cursor left 1 col without wrap
  852.        ^csrlf(0..127)       cursor left 254,1..127 cols without wrap
  853.        ^csrlfwrap           cursor left 1 col with wrap
  854.        ^csrlfwrap(0..127)       cursor left 254,1..127 cols with wrap
  855.                    (cursor stops at col 1, right side)
  856.        ^csrnextendpara       cursor to next line after paragraph
  857.        ^csrnextendparamk       crsr to next line after paragraph ignoring
  858.                    text outside of current area mark margins
  859.        ^csrnextpara        cursor to first line of next paragraph
  860.        ^csrnextparamk       cursor to next paragraph ignoring text
  861.                    outside of current area mark margins
  862.        ^csrprevendpara       cursor to previous line after paragraph
  863.        ^csrprevendparamk       cursor to prev line after paragraph ignoring
  864.                    text outside of current area mark margins
  865.        ^csrprevpara        cursor to first line of prev paragraph
  866.        ^csrprevparamk       cursor to previous paragraph ignoring text
  867.                    outside of current area mark margins
  868.        ^csrreturn           cursor return
  869.        ^csrrt           cursor right 1 col without wrap
  870.        ^csrrt(0..127)       cursor right 254,1..127 cols without wrap
  871.        ^csrrtwrap           cursor right 1 col with wrap
  872.        ^csrrtwrap(0..127)       cursor right 254,1..127 cols with wrap
  873.                    (cursor stops at col 1, right side)
  874.        ^csrstartln           cursor to start of line
  875.        ^csrtxt           cursor to text
  876.        ^csrup           cursor up without wrap
  877.        ^csrup(1..78)       cursor up 1..78 lines without wrap
  878.                    (dynamically limited to 1 screen)
  879.        ^csrupoutline       cursor up to next line that starts on or to
  880.                    the left of the cursor
  881.        ^csrupoutlinemk       cursor up to next line that starts on or
  882.                    to the left of the cursor ignoring text
  883.                    outside of current area mark margins
  884.        ^csrupwrap           cursor up with wrap
  885.        ^csrupwrap(1..77)       cursor up 1..77 lines with wrap
  886.                    (cursor stops at line 1, top and bottom of
  887.                    each window)
  888.                                           
  889.  
  890.                                        p-18
  891.        ^gotoarmk           go to area mark (top left corner)
  892.        ^gotoarmkbl           go to bottom left corner of area mark
  893.        ^gotoarmkbr           go to bottom right corner of area mark
  894.        ^gotoarmktr           go to top right corner of area mark
  895.        ^gotopsmk           go to position mark
  896.        ^nextses           next edit session
  897.        ^prevses           previous edit session
  898.        ^scrollcenln        scroll current line to center of screen
  899.        ^scrolldn(0..78)       scroll down 0..78 lines - max 1 screen
  900.        ^scrolldn1/2pg       scroll down 1/2 page
  901.        ^scrolldn1/4pg       scroll down 1/4 page
  902.        ^scrolldn1/8pg       scroll down 1/8 page
  903.        ^scrolldn1pg        scroll down 1 page
  904.        ^scrolldncsr        scroll down to cursor
  905.        ^scrolllf(0..127)       scroll left 254,1..127 cols
  906.        ^scrolllfcsr        scroll left to cursor
  907.        ^scrollrt(0..127)       scroll right 254,1..127 cols
  908.        ^scrollrtcsr        scroll right to cursor
  909.        ^scrollup(0..78)       scroll up 0..78 lines - max 1 screen
  910.        ^scrollup1/2pg       scroll up 1/2 page
  911.        ^scrollup1/4pg       scroll up 1/4 page
  912.        ^scrollup1/8pg       scroll up 1/8 page
  913.        ^scrollup1pg        scroll up 1 page
  914.        ^scrollupcsr        scroll up to cursor
  915.        ^splitscrn(6..77)       splits the screen at line 6..77
  916.                    This function restricts windows to a minimum
  917.                    of three text lines.
  918.        ^tabauto1ln(0..127)       auto tab looking at current line,
  919.                    max 254,1..127
  920.        ^tabauto2ln(0..127)       auto tab looking at 2 lines,
  921.                    max 254,1..127
  922.        ^tabauto3ln(0..127)       auto tab looking at 3 lines,
  923.                    max 254,1..127
  924.        ^tabauto4ln(0..127)       auto tab looking at 4 lines,
  925.                    max 254,1..127
  926.        ^tabauto5ln(0..127)       auto tab looking at 5 lines,
  927.                    max 254,1..127
  928.        ^tabauto6ln(0..127)       auto tab looking at 6 lines,
  929.                    max 254,1..127
  930.        ^tabauto7ln(0..127)       auto tab looking at 7 lines,
  931.                    max 254,1..127
  932.        ^tabauto8ln(0..127)       auto tab looking at 8 lines,
  933.                    max 254,1..127
  934.        ^tabbkauto1ln(0..127)   auto back tab looking at current line,
  935.                    max 254,1..127
  936.        ^tabbkauto2ln(0..127)   auto back tab looking at 2 lines
  937.                    max 254,1..127
  938.        ^tabbkauto3ln(0..127)   auto back tab looking at 3 lines
  939.                    max 254,1..127
  940.        ^tabbkauto4ln(0..127)   auto back tab looking at 4 lines
  941.                    max 254,1..127
  942.        ^tabbkauto5ln(0..127)   auto back tab looking at 5 lines
  943.                    max 254,1..127
  944.        ^tabbkauto6ln(0..127)   auto back tab looking at 6 lines
  945.                    max 254,1..127
  946.        ^tabbkauto7ln(0..127)   auto back tab looking at 7 lines
  947.                    max 254,1..127
  948.                                           
  949.  
  950.                                        p-19
  951.        ^tabbkauto8ln(0..127)   auto back tab looking at 8 lines
  952.                    max 254,1..127
  953.        ^tabbkcurset        bk tab - ref current tab set
  954.        ^tabcurset           tab - ref current tab set
  955.        ^topoffile           to top of file
  956.        ^unsplitscrn        unsplit the screen
  957.        ^windowa           make window a active
  958.        ^windowa/b           make other window active
  959.        ^windowb           make window b active
  960.                                           
  961.  
  962.                                        p-20
  963.      RE Functions - Special Characters
  964.  
  965.        ^0               0
  966.        ^1               1
  967.        ^2               2
  968.        ^3               3
  969.        ^4               4
  970.        ^5               5
  971.        ^6               6
  972.        ^7               7
  973.        ^8               8
  974.        ^9               9
  975.        ^amp            &
  976.        ^at               @
  977.        ^crt            ^
  978.        ^dlr            $
  979.        ^sp               space
  980.  
  981.      RE Functions - Configuration
  982.  
  983.        ^enhancedkbauto       enable enhanced keyboard (if attached)
  984.        ^enhancedkboff       disable enhanced keyboard support
  985.        ^setatb/w           installs the b/w attribute set
  986.                    All future screen updates use the new
  987.                    attributes and the b/wcsrtp. To rewrite the
  988.                    screen completely, use ^updatescrn.
  989.        ^setatclr           installs the color attribute set
  990.        ^setatcur           installs the current attribute set
  991.        ^setatlcd           installs the lcd attribute set
  992.        ^setatmon           installs the monochrome attribute set
  993.  
  994.      RE Functions - Set And Unset Marks
  995.  
  996.        ^mkcol           mark column of area
  997.        ^mkcolres           mark column of area with mark resizing
  998.        ^mkcor           mark corner of area
  999.        ^mkcorlm           mark corner of area - always uses last area
  1000.                    mark margin, not word wrap margin, for alt-l
  1001.                    alt-b
  1002.        ^mkcorlmres           mark corner of area with mark resizing
  1003.        ^mkcorres           mark corner of area with mark resizing
  1004.        ^mkln           mark line of area
  1005.        ^mklnres           mark line of area with mark resizing
  1006.        ^mkses           mark entire session
  1007.        ^set/re/unpsmk       set/reset/unset position mark
  1008.        ^setpsmk           set position mark
  1009.        ^unmk           unmark area
  1010.        ^unsetpsmk           unset position mark
  1011.                                           
  1012.  
  1013.                                        p-21
  1014.      RE Functions - Area Mark
  1015.  
  1016.        ^blankar           blank area
  1017.        ^blankarnsc           blank area - no on screen check
  1018.        ^blankarrem           blank area - remove mark
  1019.        ^blankarremnsc       blank area - remove mark - no on scrn check
  1020.        ^center           center
  1021.        ^centerrem           center - remove mark
  1022.        ^copylns           copy line area
  1023.        ^delar           delete block/line area
  1024.        ^delblock           delete block area
  1025.        ^delblocknsc        delete block area - no on screen check
  1026.        ^delblockrem        delete block area - remove mark
  1027.        ^delblockremnsc       del blk area - remove mark - no scrn check
  1028.        ^dellns           delete line area
  1029.        ^fillblock           fill with block pattern
  1030.        ^fillblockrem       fill with block pattern - remove mark
  1031.        ^fillnum           fill with numeric line pattern
  1032.        ^fillnumrem           fill with numeric line pattern - remove mark
  1033.        ^flow           flow text
  1034.        ^flowextrasp        flow with extra blank at end of sentence
  1035.        ^flowextraspkp       flow with extra blank at end of sen, kp mark
  1036.        ^flowkp           flow text, keep mark
  1037.        ^flowlist           flow into list
  1038.        ^flowlistkp           flow into list, keep mark
  1039.        ^insar           insert area
  1040.        ^lfside           left side
  1041.        ^lfsiderem           left side - remove mark
  1042.        ^lowercase           lowercase
  1043.        ^lowercaserem       lowercase - remove mark
  1044.        ^mergeoverlay       merging overlay (overlays only where target
  1045.                    is blank)
  1046.        ^movearmk           moves area mark (not contents) to cursor
  1047.        ^movelns           move line area
  1048.        ^overlayar           overlay area
  1049.        ^rtjustify           right justify
  1050.        ^rtjustifyexspkp       rt justify, extra space after sen, keep mark
  1051.        ^rtjustifyextrasp       right justify, extra space after sentence
  1052.        ^rtjustifykp        right justify, keep mark
  1053.        ^rtside           right side
  1054.        ^rtsiderem           right side - remove mark
  1055.        ^shiftdn           shift down area
  1056.        ^shiftdnrem           shift down area - remove mark
  1057.        ^shiftlf           shift left area
  1058.        ^shiftlfrem           shift left area - remove mark
  1059.        ^shiftrt           shift right area
  1060.        ^shiftrtrem           shift right area - remove mark
  1061.        ^shiftup           shift up area
  1062.        ^shiftuprem           shift up area - remove mark
  1063.        ^uppercase           uppercase
  1064.        ^uppercaserem       uppercase - remove mark
  1065.        ^upperfirst           uppercase first letter
  1066.        ^upperfirstrem       uppercase first letter - remove mark
  1067.                                           
  1068.  
  1069.                                        p-22
  1070.      RE Functions - Line Exclude
  1071.  
  1072.        ^exaddnotmod        exclude added and unmodified
  1073.        ^exaddnotmodrem       exclude added and unmodified - remove mark
  1074.        ^exaddnotmodses       exclude added and unmodified in session
  1075.        ^exall           exclude all in mark
  1076.        ^exallrem           exclude all in mark - remove mark
  1077.        ^exallses           exclude all in session
  1078.        ^exchildren           excludes children
  1079.        ^exindent           exclude by indentation
  1080.        ^exindentrem        exclude by indentation - remove mark
  1081.        ^exindentses        exclude by indentation entire session
  1082.        ^exln           exclude one line
  1083.        ^exmkchildren       excludes children ignoring data outside the
  1084.                    area mark margins
  1085.        ^exnone           unexclude all in mark
  1086.        ^exnonerem           unexclude all in mark - remove mark
  1087.        ^exnoneses           unexclude all in session
  1088.        ^exnotadd           exclude old lines
  1089.        ^exnotaddrem        exclude old lines - remove mark
  1090.        ^exnotaddses        exclude old lines in session
  1091.        ^exnotmod           exclude unmodified lines
  1092.        ^exnotmodadd        exclude unmodified old lines
  1093.        ^exnotmodaddrem       exclude unmodified old lines - remove mark
  1094.        ^exnotmodaddses       exclude unmodified old lines in session
  1095.        ^exnotmodrem        exclude unmodified lines - remove mark
  1096.        ^exnotmodses        exclude unmodified lines in session
  1097.        ^expara           exclude by paragraph
  1098.        ^expararem           exclude by paragraph - remove mark
  1099.        ^exparases           exclude by paragraph entire session
  1100.        ^exrestoreses       restores the excluded state for the session
  1101.                    from the last saved state
  1102.        ^exsaveses           saves the excluded state for the session
  1103.        ^revexlns           reverse excluded lines in area
  1104.        ^revexlnsrem        reverse excluded lines in area - remove mark
  1105.        ^revexlnsses        reverse excluded lines in session
  1106.        ^unexchildren       unexcludes children
  1107.        ^unexfirstln        unexclude first line in group
  1108.        ^unexlastln           unexclude last line in group
  1109.        ^unexmkchildren       unexcludes children ignoring text outside
  1110.                    the current area mark margins
  1111.                                           
  1112.  
  1113.                                        p-23
  1114.      RE Functions - Programming
  1115.  
  1116.        ^dispmsg(0..63)       displays message 0..63
  1117.                    See MESSAGE NUMBERS for text/number list.
  1118.        ^dispmsgnum(0..63)       displays message 0..63 followed by var(0)
  1119.        ^endmacro           end macro
  1120.                    This is automatically supplied by REPROF at
  1121.                    the end of each macro, but is needed to end
  1122.                    a macro from inside the macro.
  1123.        ^execfcn           executes function contained in var 0
  1124.        ^getkey           gets a keystroke and puts it in var 0
  1125.                    special keys are translated
  1126.                    (see GETKEY AND STRUCTURED USER INPUT)
  1127.        ^getkeyns           gets a keystroke and puts it in var 0
  1128.                    special keys are not checked for
  1129.        ^halt           breaks out of macro system
  1130.        ^if= x y           if x=y
  1131.        ^if> x y           if x>y
  1132.        ^if< x y           if x<y then don't skip next token
  1133.        ^if<= x y           if x<=y
  1134.        ^if>= x y           if x>=y
  1135.        ^if<> x y           if x<>y (not equal)
  1136.        ^if<>0 x           if x<>0 (not equal)
  1137.        ^if=0 x           if x=0
  1138.        ^ifcharblank        if current character is blank
  1139.        ^ifcharinword       if current char is in a word
  1140.                    This function checks if the current
  1141.                    character is in the set of characters used
  1142.                    with the Find commands Word option.
  1143.        ^ifcharnotblank       if current char is not blank
  1144.        ^ifcharnotinword       if current char is not in a word
  1145.        ^ifcsrcmdln           if cursor on cmd line don't skip next token
  1146.        ^ifcsrtxt           if cursor in text area
  1147.        ^ifeditable           if current line is editable
  1148.        ^ifinsmd           if insert mode
  1149.        ^iflnadd           if current line was added
  1150.        ^iflnblank           if current line or excluded group is blank
  1151.        ^iflnexcluded       if current line is excluded
  1152.        ^iflnmk           if current line has an area mark
  1153.        ^iflnmod           if current line is modified
  1154.        ^iflnnotadd           if current line was not added
  1155.        ^iflnnotblank       if cur line or excluded group not blank
  1156.        ^iflnnotexcluded       if current line not excluded
  1157.        ^iflnnotmk           if current line does not have an area mark
  1158.        ^iflnnotmod           if current line is not modified
  1159.        ^iflnnotpsmk        if current line does not have an pos mark
  1160.        ^iflnnottopbot       if cursor is not on TOP --- or BOTTOM ---
  1161.        ^iflnpsmk           if current line has a position mark
  1162.        ^iflntopbot           if cursor is on TOP --- or BOTTOM --- line
  1163.        ^ifnoteditable       if current line not editable
  1164.        ^ifnotsuccess       if previous function was not successful
  1165.                    "Not found", "No files" messages as well as
  1166.                    any error messages make this true.
  1167.        ^ifpendingcmd x       if uppercase(first nonblank on command
  1168.                    line) is x (set x to ^0 to catch 0..9)
  1169.        ^ifpendingcmdnot x       if uppercase(first nonblank on command line)
  1170.                    is not x (set x to ^0 to catch 0..9)
  1171.                                           
  1172.  
  1173.                                        p-24
  1174.        ^ifrplmd           if replace mode
  1175.        ^ifsuccess           if previous function was successful
  1176.        ^ignoreexlnsmd       sets ignore excluded lines mode on/off
  1177.        ^ignoreexlnsmd1       sets ignore excluded lines mode on only for
  1178.                    the next non-control function
  1179.        ^ignoreexlnsmdoff       sets ignore excluded lines mode off
  1180.        ^ignoreexlnsmdon       sets ignore excluded lines mode on
  1181.                    Sets "permanent" ignore excluded lines mode.
  1182.                    It will be turned on only if there is an
  1183.                    area mark and will be turned off by any
  1184.                    functions that do not use this mode. This is
  1185.                    not used in either REPROF.1 or REPROF.2.
  1186.        ^inhibitscrn        inhibit display updates
  1187.                    Causing an "Are you sure? (Y/N)" prompt,
  1188.                    going into help mode, or not being in a
  1189.                    macro updates the screen and enables screen
  1190.                    updates.
  1191.        ^jumpbk(1..126)       jump backwards 1..126 macro tokens
  1192.        ^jumpbklb(1..63)       jump backward to label
  1193.        ^jumpfor(1..126)       jump 1..126 macro steps
  1194.        ^jumpforlb(1..63)       jump forward to label
  1195.        ^jumpforlbcycle(1..10)  jump forward to label 1..n
  1196.                    ^jumpforlbcycle jumps to label 1..n based on
  1197.                    the number of consecutive macro calls. Each
  1198.                    leg of the macro must end with ^setprevfcn
  1199.                    ^macro(*) to continue the cycle. See
  1200.                    MULTIFUNCTION MACROS.
  1201.        ^keyfcn x           executes the function at address x
  1202.        ^label(1..63)       label noop
  1203.        ^label(*)           label noop catches all jump*lb(1..63)
  1204.        ^macro(0..127)       execute macro 0..127
  1205.        ^macro(*)           execute current macro (this is for use
  1206.                    with ^setprevfcn, ^setvar, etc.)
  1207.        ^menu(1..39)        displays menu A..Y, 1..9, α, ß, Γ, π, Σ
  1208.                    (see MENUS)
  1209.        ^noop           no operation
  1210.        ^panel(1..39)       displays panel A..Y, 1..9, α, ß, Γ, π, Σ
  1211.                    (see PANELS)
  1212.        ^patchbyte a b       patch byte b at address a
  1213.                    Do not patch @lnlen. Colors will not be
  1214.                    updated until after a DOS shell or ^setat*
  1215.                    function.
  1216.        ^patchbytes(1..63) a b  patches 1..63 bytes starting at a
  1217.        ^patchword a w       patch word w at address a
  1218.        ^patchwords(1..63) a w  patches 1..63 words starting at a
  1219.        ^pause           pause for about 1 second
  1220.        ^rescsrps           restores cursor position, ins/rpl mode
  1221.        ^resexmd           restores ignore excluded lines mode
  1222.        ^resfindchange       restores find, change strings, options
  1223.        ^resseschg           restores session chgd state
  1224.        ^savecsrps           saves cursor position, insert/replace
  1225.                    mode, session changed flag, find/change
  1226.                    variables, ignore excluded lines mode flag
  1227.        ^setprevfcn x       set previous function variable to x
  1228.        ^suppressays        suppress "Are you sure?" or "Replace file?"
  1229.                    on next fcn
  1230.                                           
  1231.  
  1232.                                        p-25
  1233.        ^updatescrn           update screen, allow updates
  1234.                    This function is needed to turn the screen
  1235.                    on before a macro is finished or to update
  1236.                    the screen colors after ^setat*. If a macro
  1237.                    ends with the screen disabled, a complete
  1238.                    screen update is done automatically.
  1239.        ^updatescrninh       update screen but keep inhibited
  1240.                    This function may be used to update the
  1241.                    screen with a new permanent panel without
  1242.                    the user seeing anything.
  1243.        ^varadd(0..15) x       var(0..15) := var(0..15) + x
  1244.                    X should be less than $F000.
  1245.        ^varand(0..15) x       var(0..15) := var(0..15) and x
  1246.        ^vardiv(0..15) x       var(0..15) := var(0..15) div x
  1247.        ^varmul(0..15) x       var(0..15) := var(0..15) * x
  1248.        ^varor(0..15) x       var(0..15) := var(0..15) or x
  1249.        ^varset(0..15) x       var(0..15) := x
  1250.        ^varsub(0..15) x       var(0..15) := var(0..15) - x
  1251.        ^vartype(0..15)       types character representation of low byte
  1252.                    of variable 0..15
  1253.  
  1254.        ^if    functions that evaluate to false skip one macro  token.  If the
  1255.        desired  true function uses more than one token,  use the reverse if
  1256.        function and jump around the function. For example, instead of
  1257.  
  1258.          ^if=0 ^var(1) ^varset(0) 1
  1259.  
  1260.        which will not work correctly, use
  1261.  
  1262.          ^if<>0 ^var(1) ^jumpfor(3) ^varset(0) 1.
  1263.                                           
  1264.  
  1265.                                        p-26
  1266.      RE Functions - Values
  1267.  
  1268.        For any functions that have parameters that are separate tokens, the
  1269.        following  functions may be used as parameters.  The  variables that
  1270.        contain the values cannot be directly written - they must be updated
  1271.        by  RE functions that affect them, for example setting an area  mark
  1272.        sets armkcol1 and armkcol2.
  1273.  
  1274.        ^@mac x           the patch offset of macro x
  1275.        ^armkcol1           left area mark column
  1276.        ^armkcol2           right area mark column
  1277.                    These are not accurate unless there is an
  1278.                    area mark.
  1279.        ^armkmd           ^sp, a, or á (032, 097, or 160)
  1280.        ^armknotonscrn       0 if area mark is on the screen
  1281.        ^armkses           session pointer of area mark session
  1282.                    Pointers change during database
  1283.                    defragmentation - across macros, DOS
  1284.                    shells, area mark functions.
  1285.        ^armkwd           area mark width
  1286.        ^bytepatch a        byte at patch address a
  1287.        ^chgd           0 if the session is unchanged
  1288.        ^curchar           character under cursor
  1289.                    This value is not accurate unless the
  1290.                    current line is editable.
  1291.        ^curcol           current cursor file column
  1292.        ^curlinenum           current file line number
  1293.        ^currow           current screen row (1..80)
  1294.        ^curscol           current cursor screen column
  1295.        ^curses           session pointer of current session
  1296.        ^curwindow           current window (0, 1 for a, b)
  1297.        ^drawingmd           drawing mode (0..3)
  1298.        ^inarmk           0 if the cursor is not in the area mark
  1299.        ^maxlnwidth           maximum line length
  1300.        ^msgnum           current message number
  1301.        ^psmkcol           position mark column
  1302.                    This is not accurate unless there is a
  1303.                    position mark.
  1304.        ^psmkses           session pointer of position mark session
  1305.                    This is not accurate unless there is a
  1306.                    position mark.
  1307.        ^insrplmdval        0 for replace, 1 for insert
  1308.        ^otherwinses        session pointer of the inactive window
  1309.        ^scrncol           leftmost column on screen
  1310.        ^scrnheight           virtual screen height in lines
  1311.                    (active window, status, command)
  1312.        ^scrnheightfull       full screen height in lines
  1313.                    (windows, perm panel, status, command)
  1314.        ^scrnsplit           number of text lines in window a or 0 if
  1315.                    there is no split
  1316.        ^scrnwidth           screen width in columns
  1317.        ^shiftmd           shift mode
  1318.        ^var(0..15)           value of variable 0..15
  1319.        ^wordpatch a        word at patch address a
  1320.        ^wordwrapcol1       left word wrap column
  1321.        ^wordwrapcol2       right word wrap column
  1322.                                           
  1323.  
  1324.                                        p-27
  1325.        @*               numeric value of any patch location
  1326.        ^*               numeric value of any function except
  1327.                    those noted here
  1328.  
  1329.        For example:
  1330.  
  1331.          ^if= ^var(0) ^var(1)           compares var(0) and var(1)
  1332.          ^varset(2) ^curchar           sets var(2) to the current
  1333.                            character
  1334.          ^varset(1) ^bytepatch @defwraprt  sets var(1) to the default right
  1335.                            word wrap margin.
  1336.                                           
  1337.  
  1338.                                        p-28
  1339.      Macros
  1340.  
  1341.        RE  lets  you define up  to 127  macros numbered 1 to 127.  To put a
  1342.        macro in in an RE profile, use the line
  1343.  
  1344.          X macronumber function function ...
  1345.  
  1346.        and the macro may be continued on a new line with
  1347.  
  1348.          Y function function ...
  1349.  
  1350.        Macros are nestable to a  depth of 16 calls.  No checking is done to
  1351.        insure that the stack does not overflow - it is  up    to  you to  not
  1352.        exceed  this  maximum.  If  a macro calls another macro and the next
  1353.        function in the first macro is ^endmacro then this is  equivalent to
  1354.        jumping  to    the new macro rather than calling it and no extra stack
  1355.        space is taken.
  1356.  
  1357.        To use macro number i, assign the function ¯o(i) to a key.
  1358.  
  1359.        The functions are listed in RE FUNCTIONS.  When functions are called
  1360.        from  a macro, if a function is prefixed with & instead of ^ then if
  1361.        the    function  causes an  error  message, the  macro  is prematurely
  1362.        ended. If not then the macro continues despite the message. Messages
  1363.        that do not cause the macro to end, even if the function is prefixed
  1364.        with &  are    Changed,  Default disk/dir changed, Enter  ASCII  code,
  1365.        Found,  Free memory    low, Free  paragraphs,    Numeric  fill overflow,
  1366.        Printed, Saved.
  1367.  
  1368.        Some functions  are considered  control functions and cannot  affect
  1369.        the current position  or  database.    These  functions do  not update
  1370.        messages,  reset  cyclic functions, or  reset  the  "are  you sure?"
  1371.        continued  feature  (this lets  you do  repeated destructive  shifts
  1372.        without being prompted each time). The functions are:
  1373.  
  1374.          ^endmacro              ^jump..        ^patch..
  1375.          ^getkey..              ^keyfcn        ^setprevfcn
  1376.          ^halt              ^label        ^updatescrn
  1377.          ^if..              ^macro        ^var.. (except vartype)
  1378.          ^ignoreexlnsmd1          ^menu
  1379.          ^inhibitscrn          ^panel
  1380.  
  1381.        So if you  construct a macro of  just these    functions with a single
  1382.        core operation, any dependance of the core operation on the previous
  1383.        function is transferred through the control functions. The following
  1384.        macro  shifts the contents of the area mark left if    in  insert mode
  1385.        and right if in replace mode, and repeated destructive shifts do not
  1386.        cause "are you sure?" prompts.
  1387.  
  1388.          X 60 ^ifinsmd &shiftlf ^ifrplmd &shiftrt.
  1389.  
  1390.        To use  draw mode  from inside a  macro trace  out the  drawing with
  1391.        ^keyfcn @csrup, ^keyfcn @csrdn, ^keyfcn @csrlf, and ^keyfcn @csrrt.
  1392.                                           
  1393.  
  1394.                                        p-29
  1395.      Startup Macro
  1396.  
  1397.        Macro 0 is  the startup  macro.  When RE has finished reading in its
  1398.        initial file, before user input is allowed, macro 0 is called. Macro
  1399.        0 is just like any other macro except for this.
  1400.  
  1401.        In REPROF.1 and REPROF.2 macro 0 does nothing.
  1402.  
  1403.      Variables
  1404.  
  1405.        RE has 16 word (unsigned 2 byte) variables numbered 0..15.  Variable
  1406.        i  is set with  ^varset(i)  x,  and accessed  as  a    parameter  with
  1407.        ^var(i).  You  can  add  to    a  variable  (^varadd(i)  x),  subtract
  1408.        (^varsub), multiply (^varmul), divide (^vardiv), or (^varor), or and
  1409.        (^varand).  The low byte of a  variable may be typed, as  if entered
  1410.        from the keyboard, with ^vartype(i).
  1411.  
  1412.        Variable 0 is special.  It is used by the functions: ^execfcn  which
  1413.        executes   the  function  represented  by   the  value   of    var(0);
  1414.        ^menu(0..39)  which    processes  a menu  and returns    the  result  in
  1415.        var(0); ^getkey which gets a keyboard entry and puts the  associated
  1416.        function into  var(0),  translating    special  keys  into  ^jumpforlb
  1417.        functions; ^getkeyns  which is like ^getkey except that special keys
  1418.        are not translated;    and ^dispmsgnum(0..63) which displays a message
  1419.        followed by the value of var(0).
  1420.  
  1421.        To  set var(1) to  the value of  var(4)  use ^varset(1) ^var(4).  To
  1422.        compare var(1) to var(4) use ^if= ^var(1) ^var(4).
  1423.  
  1424.      Manipulation of Macro Functions
  1425.  
  1426.        Each token in an  RE macro is one word, with an associated mnemonic.
  1427.        If a function has separate parameters (^setwwrtx x for example) then
  1428.        the parameter is a separate token and a variable may be used for the
  1429.        parameter.     If   the   function   has   an    attached   parameter
  1430.        (^setshiftmd(0..26)    for example) then that parameter is part of the
  1431.        function token and must be a constant.  If you need such a parameter
  1432.        to be variable  you can generate the required function in the macro.
  1433.        Set    variable  0 to the function with a 0 parameter, add the desired
  1434.        parameter to variable  0, and then execute the function in  variable
  1435.        0. For example to do the function ^setshiftmd(^var(1)) (which is not
  1436.        allowed) use this code:
  1437.  
  1438.          ^varset(0) ^setshiftmd(0) ^varadd(0) ^var(1) ^execfcn
  1439.                                           
  1440.  
  1441.                                        p-30
  1442.      Handy Macro Sequences
  1443.  
  1444.        Here are a few useful macro sequences.  The first two put the cursor
  1445.        on the top and bottom of the current window.
  1446.  
  1447.          ^if= ^currow 1 ^csrdn ^if<> ^currow ^scrnheight ^csrdnwrap(77)
  1448.          ^if= ^currow 3 ^jumpfor(3) ^csrcmdln ^csrdn
  1449.  
  1450.        These put the cursor at the left and right side of the screen.
  1451.  
  1452.          ^if<> ^curcol 1 ^csrlfwrap(0)
  1453.          ^if<> ^curcol ^scrnwidth ^csrrtwrap(0)
  1454.  
  1455.        Here are traditional page up and page down sequences.
  1456.  
  1457.          ^savecsrps ^scrollup1pg ^rescsrps
  1458.          ^savecsrps ^scrolldn1pg ^rescsrps
  1459.  
  1460.        Also  see  REPROF.MAC.  This is a set  of macros that  may be useful
  1461.        including:
  1462.  
  1463.          rotating permanent panels
  1464.          record and playback keystrokes
  1465.          move marked area
  1466.          box the perimeter of the area mark
  1467.          delete blank lines in the area mark
  1468.          load multiple files on startup
  1469.          tab functions that insert or delete spaces in insert mode.
  1470.                                           
  1471.  
  1472.                                        p-31
  1473.      Querying Modes and Situations
  1474.  
  1475.        There  are many  direct ^if    statements available for  querying  the
  1476.        state of RE, but there  also are many  possible queries that require
  1477.        looking at  specific  variables.  Here  is  a  list    of  useful  ^if
  1478.        commands.
  1479.  
  1480.        ^if<>0 ^inarmk         if cursor is in area mark
  1481.        ^if<>0 ^chgd          if session has been changed
  1482.        ^if<>0 ^armknotonscrn     if area mark is not in the window
  1483.                      (assumes an area mark exists)
  1484.        ^if<>0 ^psmkses         if there is a position mark
  1485.        ^if=  ^psmkses ^curses     if the current session has a pos mark
  1486.        ^if<> ^armkmd ^sp         if there is an area mark
  1487.        ^if=  ^armkmd a         if there is a completed area mark
  1488.        ^if=  ^armkses ^curses     if area mark is in the current session
  1489.                      (assumes an area mark exists)
  1490.        ^if= ^shiftmd 3         if shift mode is 3
  1491.        ^if<>0 ^drawingmd         if in one of the drawing modes
  1492.        ^if= ^curcol 34         if the cursor is in column 34
  1493.        ^if= ^curcol ^armkcol1     if cursor is in the left area mark col
  1494.                      (assumes an area mark exists)
  1495.        ^if= ^curchar S         if the current character is S
  1496.        ^if<>0 ^scrnsplit         if screen is split
  1497.  
  1498.      Working With a Split Screen
  1499.  
  1500.        To  a macro (and to RE internally) a split screen window  appears to
  1501.        be just an ordinary small screen.  That is, the cursor row (^currow)
  1502.        moves sequentially  1, 3, 4, ..., ^scrnheight.  But you can    get the
  1503.        actual cursor  row by using ^scrnsplit.  To put  the cursor's actual
  1504.        screen row in var(1), use:
  1505.  
  1506.          ^varset(1) ^currow
  1507.          ^if= ^curwindow 0 ^jumpfor(3) ^varadd(1) ^scrnsplit
  1508.  
  1509.        Here is a function  that splits the    screen at the  current line, or
  1510.        unsplits the screen if it is already split.
  1511.  
  1512.          X 1
  1513.          Y ^if=0 ^scrnsplit ^jumpfor(3) ^unsplitscrn ^endmacro
  1514.          Y ^ifcsrcmdln ^jumpfor(4) ^varset(0) ^currow ^jumpfor(7)
  1515.          Y ^varset(0) ^scrnheight ^varadd(0) 2 ^vardiv(0) 2
  1516.          Y ^varadd(0) ^splitscrn(1) ^execfcn
  1517.  
  1518.        The ^splitscrn function  will not allow a window  of less than three
  1519.        text lines. If you unsplit the screen, put up a permanent panel, and
  1520.        then split it again at the same  line (the recommended procedure for
  1521.        displaying a permanent panel), the position of the split may change.
  1522.        And if you change the  number  of lines  on    the screen  from  a DOS
  1523.        shell, RE may reconfigure the screen  split (or even unsplit it)  to
  1524.        insure that each window has three lines.
  1525.                                           
  1526.  
  1527.                                        p-32
  1528.      Macro Control of Commands
  1529.  
  1530.        The enter key may be re-programmed to examine  pending  commands and
  1531.        take  specific action  based on  that information.  In REPROF.1  and
  1532.        REPROF.2 the mouse and keyboard enter functions are:
  1533.  
  1534.        * mouse enter
  1535.          X 105 ^macro(124) ^if=0 ^var(0) ^endmacro
  1536.          Y       ^macro(112)
  1537.        * keyboard enter
  1538.          X 106 ^macro(124) ^if=0 ^var(0) ^endmacro
  1539.          Y       ^csrreturn
  1540.  
  1541.        Macro 124  looks for a  pending  command  and  executes  it, setting
  1542.        var(0) to 0 if it found a command or 1 if not.
  1543.  
  1544.        * execute pending command and set var(0) to 0 or 1 if no command
  1545.          X 124 ^varset(0) 1
  1546.          Y       ^ifcsrtxt ^jumpfor(4)
  1547.          Y       ^iflnblank ^endmacro ^jumpfor(7)
  1548.          Y       ^ifpendingcmd F ^jumpfor(4)
  1549.          Y       ^ifpendingcmdnot C ^endmacro
  1550.          Y       ^execcmd ^varset(0) 0
  1551.  
  1552.        You    can replace macro 124 to change the way it decides if a command
  1553.        is pending or the way that it executes the command. An example is:
  1554.  
  1555.        * execute pending command and set var(0) to 0 or 1 if no command
  1556.          X 124 ^varset(0) 1
  1557.          Y       ^ifcsrtxt ^jumpfor(3)
  1558.          Y       ^iflnblank ^endmacro
  1559.          Y       ^ifpendingcmd F ^jumpforlb(2)
  1560.          Y       ^ifpendingcmd C ^jumpforlb(2)
  1561.          Y       ^ifcsrtxt ^endmacro
  1562.          Y       ^ifpendingcmdnot S ^jumpfor(9)
  1563.          Y         ^varset(0) ^curses       // * save-clear mod add flags
  1564.          Y         &execcmd
  1565.          Y         ^if= ^curses ^var(0) ^clrmodadd
  1566.          Y         ^jumpforlb(1)
  1567.          Y       ^ifpendingcmdnot E ^jumpfor(7)
  1568.          Y         &execcmd              // * edit-exclude at col 3
  1569.          Y         ^csrtxt ^csrrt(2) ^exindentses ^csrcmdln
  1570.          Y         ^jumpforlb(1)
  1571.          Y       ^ifpendingcmdnot ^0 ^jumpfor(3)
  1572.          Y         ^execcmdnorecall          // * don't save line num cmds
  1573.          Y         ^jumpforlb(1)
  1574.          Y       ^label(2) ^execcmd
  1575.          Y       ^label(1) ^varset(0) 0
  1576.                                           
  1577.  
  1578.                                        p-33
  1579.      Macro Defined Shift Modes
  1580.  
  1581.        You    can  set  the  user  shift  mode  with    the  ^setshiftmd(0..26)
  1582.        function.  0 is the default.  1..26 are displayed on top of the caps
  1583.        lock indicator as a..z.
  1584.  
  1585.        Here is a macro that rotates between shift modes a, b, and off
  1586.  
  1587.        X 1 ^if<>0 ^shiftmd ^jumpfor(3) ^setshiftmd(1) ^endmacro
  1588.        Y   ^if<> ^shiftmd 1 ^jumpfor(3) ^setshiftmd(2) ^endmacro
  1589.        Y   ^setshiftmd(0)
  1590.  
  1591.        And    to use    the shift modes,  here is  a macro  that  looks at  the
  1592.        shift mode and does one of three different functions.
  1593.  
  1594.        X 2 ^if<>0 ^shiftmd ^jumpforlb(1)
  1595.        Y   functions for shift mode off ...
  1596.        Y   ^endmacro
  1597.        Y   ^label(1) ^if<> ^shiftmd 1 ^jumpforlb(1)
  1598.        Y   functions for shift mode 1 ...
  1599.        Y   ^endmacro
  1600.        Y   ^label(1) ^if<> ^shiftmd 2 ^endmacro
  1601.        Y   functions for shift mode 2 ...
  1602.  
  1603.        You can also use the patch functions to reset key assignments when a
  1604.        new shift mode is set, so you could reassign the entire function key
  1605.        set based on shift mode.
  1606.  
  1607.        If  you  use shift modes, it is a good idea to set a permanent panel
  1608.        for each  mode.  This  makes it  obvious  what  mode  is current and
  1609.        provides some help for that mode. See PANELS.
  1610.  
  1611.      Multifunction Macros
  1612.  
  1613.        The    RE  macro language  makes  it easy  to    create    macros    that do
  1614.        different  functions on consecutive calls.  This  feature is used in
  1615.        the default profile on the  alt-v key to produce the center function
  1616.        on the first press, left side on the  second, and right side  on the
  1617.        third.  Similar (though  some a little more complex) macros are used
  1618.        to rotate drawing modes (alt-z), move to the various  marks (alt-g),
  1619.        and     exclude  and  unexclude   children   (alt-6).     Here    is  the
  1620.        center/left/right macro.
  1621.  
  1622.          X 102 ^jumpforlbcycle(3)
  1623.          Y       ^label(1) ¢er ^jumpfor(6)
  1624.          Y       ^label(2) &lfside ^jumpfor(3)
  1625.          Y       ^label(3) &rtside
  1626.          Y       ^setprevfcn ^macro(*)
  1627.  
  1628.        ^jumpforlbcycle  jumps to one of  label 1..3  based on the number of
  1629.        consecutive calls to macro 102 (any number up to 10 may be used). To
  1630.        keep  the  cycle going, before the macro is called a second time, RE
  1631.        must think that the most recent function was that macro. ^setprevfcn
  1632.        ^macro(*) just before ending the macro does this.
  1633.                                           
  1634.  
  1635.                                        p-34
  1636.      Getkey and Structured User Input
  1637.  
  1638.        ^getkey  gets a  key from the  user    and puts  the function    that is
  1639.        assigned to that key in variable 0.    If any    of the special keys are
  1640.        pressed then they are returned as ^jumpforlb(i) where i is:
  1641.  
  1642.          1 for cursor left           4 for cursor down    7 for page up
  1643.          2 for cursor right        5 for enter        8 for page down
  1644.          3 for cursor up           6 for escape        9 for help
  1645.  
  1646.        ^getkeyns is the  same as getkey  except  that special  keys are not
  1647.        checked for.
  1648.  
  1649.        This  lets you create structured data input macros.    An example is a
  1650.        macro that gets a user selection from vertical list.  The cursor  is
  1651.        left on the selected line and variable  0 contains ^jumpforlb(5) for
  1652.        enter or ^jumpforlb(6) for escape.
  1653.  
  1654.          M 50 ^msg Select line             // * define message 50
  1655.          X 1
  1656.          Y ^csrtxt ^csrlf(0)
  1657.          Y ^label(1) ^dispmsg(50) ^getkey
  1658.          Y ^if< ^var(0) ^jumpforlb(3) ^jumpbklb(1)
  1659.          Y ^if> ^var(0) ^jumpforlb(9) ^jumpbklb(1)
  1660.          Y ^execfcn
  1661.          Y ^label(3) ^csrup     ^jumpbklb(1) // * csrup
  1662.          Y ^label(4) ^csrdn     ^jumpbklb(1) // * csrdn
  1663.          Y ^label(7) ^keyfcn @pgup    ^jumpbklb(1) // * pgup
  1664.          Y ^label(8) ^keyfcn @pgdn    ^jumpbklb(1) // * pgdn
  1665.          Y ^label(9) ^help(4)    ^jumpbklb(1) // * help pg 4
  1666.          Y ^label(5) ^ifnoteditable ^jumpbklb(1) // * enter
  1667.          Y ^label(6) ^dispmsg(0)             // * esc
  1668.  
  1669.        This macro  puts up    a panel and, on the next  keystroke, removes it
  1670.        and executes the keystroke.
  1671.  
  1672.          X 1 ^panel(34) ^getkeyns ^updatescrn ^execfcn
  1673.  
  1674.        If you need to look for a specific key, rather  than a function, the
  1675.        only way to    do it is to  compare the function returned from ^getkey
  1676.        with the function assigned to that  key.  If the function on the key
  1677.        is  not unique then other keys can  trigger    the same response.  You
  1678.        need to and off $80    from the key function because that  is    used by
  1679.        the keyboard routine and then removed. For example, to get a key and
  1680.        check to see if it was alt-s:
  1681.  
  1682.          ^getkey
  1683.          ^varset(1) ^wordpatch ^@a-s ^varand(1) $FF7F
  1684.          ^if= ^var(0) ^var(1)
  1685.  
  1686.        Functions $4000 to $4FFF are not used by RE. You can assign these to
  1687.        keys, use ^getkey or ^getkeyns to get the function, and have a macro
  1688.        interpret them.  This may be useful when getting  user input that is
  1689.        only  valid when a specific    panel  is  displayed.  Or  $80 with the
  1690.        number to enable keyboard decoasting.
  1691.                                           
  1692.  
  1693.                                        p-35
  1694.      Messages, Message Types, and User Defined Messages
  1695.  
  1696.        NUMBER      MESSAGE           TYPE    NUMBER       MESSAGE       TYPE
  1697.  
  1698.         0 A   wd-     ht-        $18    24 Printed            $08
  1699.         1 Changed            $08    25 Incorrect number        $05
  1700.         2 Found            $08    26 DOS memory error        $2F
  1701.         3 Line(s) too long        $1D    27 Drive not ready        $07
  1702.         4 Saved            $28    28 Disk write protected        $07
  1703.         5 Insufficient free memory    $25    29 Incorrect option        $05
  1704.         6 Line(s) split        $1F    30 Incorrect file name        $05
  1705.         7 Not found         $0C    31 Incorrect Find string     $05
  1706.         8 Saved - file replaced    $28    32 Incorrect Change string   $05
  1707.         9 Memory full - Data Lost    $07    33 Are you sure? (Y/N)        $01
  1708.        10 Parameter too long    $05    34 Mark is not in session    $05
  1709.        11 Area mark already exists    $05    35 Free paragraphs        $08
  1710.        12 No area mark        $05    36 Numeric fill overflow     $08
  1711.        13 reserved            $05    37 Cannot use display mode   $25
  1712.        14 No mark            $05    38 Defragmenting memory        $00
  1713.        15 Free memory low        $08    39 Replace file? (Y/N)        $00
  1714.        16 Incorrect cursor position $05    40 Press Enter to continue   $00
  1715.        17 Disk/device error     $07    41 Default disk/dir changed  $09
  1716.        18 Mark is not on screen    $05    42 No files            $0C
  1717.        19 Enter ASCII code        $00    43 Changed > 10000        $08
  1718.        20 Incorrect command     $05    44 Found > 10000         $08
  1719.        21 Insufficient disk space    $07    45 user defined message        $00
  1720.        22 Not in ring        $05    .  .                .
  1721.        23 Insert A:, press Enter    $00    63 user defined message        $00
  1722.  
  1723.        The message type bytes are at @MSGTP(0..63). The bits of the message
  1724.        type bytes are:
  1725.  
  1726.         $1 - red (and beep if "B @beep ^error" is set)
  1727.         $2 - beep (unless "B @beep ^no" is set)
  1728.         $4 - ends a macro if displayed by an & prefixed function
  1729.          This bit is also queried by the ^ifsuccess function.
  1730.         $8 - this message indicates a command or function was successful If
  1731.          a command finishes with this message then it is stored in  the
  1732.          recall list and the command line is blanked.
  1733.        $10 - this message indicates an edit command was successful
  1734.          An Edit command starts a new session and reads in  a file.  If
  1735.          the  file read finishes with this message then the new session
  1736.          is kept, otherwise the new session is removed from memory.
  1737.        $20 - if RE ends with this message, display it in DOS
  1738.  
  1739.        The message type mnemonics are ^critical  ($07), ^error ($05),  ^msg
  1740.        ($00).
  1741.  
  1742.        You may define messages 45..63 (and rewrite 0..44). To set a message
  1743.        use    the line "M number type message" anywhere in the profile before
  1744.        the help  text.  Number is  the message number, type  is the message
  1745.        type (^critical, ^error, ^msg, or a number), and the message text is
  1746.        up to 25 characters. For example: "M 45 ^msg Macro complete".
  1747.  
  1748.        Use     the   function   ^dispmsg(0..63)   to     display   a   message.
  1749.        ^dispmsgnum(0..63) displays    a message  followed  by  the  value  of
  1750.        variable 0.
  1751.                                           
  1752.  
  1753.                                        p-36
  1754.      Tab Sets
  1755.  
  1756.        You may define  up to ten tabs sets numbered  1..10.  Set 1    must be
  1757.        defined since it is the default that RE sets up on entry.
  1758.  
  1759.        To define a tab set, use the line
  1760.  
  1761.          T setnumber column column ...
  1762.  
  1763.        To choose an automatic tab function, set  column 1 to 0, column 2 to
  1764.        the    number    of lines above the current line to  look at (0..7), and
  1765.        column 3 to the maximum number of columns to move (1..254).
  1766.  
  1767.        The default tab set is an automatic tab function: "T 0 4 8".
  1768.  
  1769.        The    tabs sets are selected with the  T command and are used only by
  1770.        the ^lftabcurset and ^rttabcurset functions.
  1771.  
  1772.      Help Text
  1773.  
  1774.        The help text follows all patches, macro, tab sets, and messages. It
  1775.        starts with a special line containing @  in column one.  This is the
  1776.        bottom line of each help  screen (if there is room for it).    In  the
  1777.        default profile it is blank. Then for each of up to 25 help screens,
  1778.        is the title line beginning with "A".."Y".  Following the title line
  1779.        is  the body of the screen, in columns 2 through 81.  The help pages
  1780.        must be in  order and use consecutive page letters starting    with A.
  1781.        Set B @lastpghelp to the last page of the help text. For example:
  1782.  
  1783.          B @lastpghelp C
  1784.  
  1785.          @F1,Esc-Quit help    A..C-Page A..C    PgDn-Next Page ..
  1786.          AHelp Menu
  1787.           A  Help Menu
  1788.           B  Basic Commands
  1789.           C  Basic Functions
  1790.          BBasic Commands
  1791.           To execute a command, enter the command on the command line, ..
  1792.           .
  1793.           .
  1794.          CBasic Functions
  1795.           Alt-A         Enters an ASCII code
  1796.           .
  1797.           .
  1798.  
  1799.        Note that Z is not a valid help page letter.
  1800.                                           
  1801.  
  1802.                                        p-37
  1803.      Menus
  1804.  
  1805.        Menus  are the  same  as help  screens except they are limited to  9
  1806.        lines  (plus  the title) and the help  screen letter  is extended to
  1807.        cover  39  screens/menus.  The menu    letter    must not  overlap  help
  1808.        screens  and must follow the last help screen (help A..R, menus U..5
  1809.        in REPROF.PR1).  The menu letter may be A..Y, 1..9, α, ß, Γ, π, or Σ
  1810.        and these are referred to as 1..39 in the menu function.
  1811.  
  1812.        The    menu  item fields are columns 2..21, 22..41, 42..61, and 62..81
  1813.        on each line.  These  fields are numbered  11,21,31,41, 12,22,32,42,
  1814.        etc.  If the first character in  a field is nonblank then that field
  1815.        has an item.  If any character in  the field  up to the first  blank
  1816.        (ASCII 32 but  not ASCII 0 or  255) is a capital letter, then it may
  1817.        be selected by the user with that letter.
  1818.  
  1819.        You must write a macro to control a menu. The menu is displayed with
  1820.        ^menu(1..39) and the menu routine has control  until a user response
  1821.        is  made.  When control is given back to the macro the user response
  1822.        is in variable 0.  It may be any RE function except ASCII 0..255 and
  1823.        ^noop.  If the  response  is one of the menu items  then variable  0
  1824.        contains a ^jumpforlb(item) function.  If the response is one of the
  1825.        last four special keys (see @SPECIALKEY - SPECIAL  KEYS) then escape
  1826.        gives  ^jumpforlb(6), page up gives    ^jumpforlb(7), page  down gives
  1827.        ^jumpforlb(8), and help gives ^jumpforlb(9). Any other key gives the
  1828.        function assigned to that key. The response in var(0) may be queried
  1829.        to filter some responses and/or executed.
  1830.  
  1831.        The menu routine always displays the menu, even if ^inhibitscrn mode
  1832.        is on and leaves the display in ^inhibitscrn mode.  ^updatescrn will
  1833.        reset this as will ending the macro.
  1834.  
  1835.        The    menu  function    is  a  control    function  and does  not  update
  1836.        messages, the "are you sure?" continued feature, etc.
  1837.  
  1838.        Here is a sample menu and a macro to control it:
  1839.  
  1840.          NGeneral Functions
  1841.           mark block resize   set position mark   single draw
  1842.           mark line resize      unset position mk   double draw
  1843.           mark column resize
  1844.  
  1845.          X 114 ^label(1) ^menu(14)
  1846.          Y ^if= ^var(0) ^macro(*) ^endmacro  // * toggles menu on/off
  1847.          Y ^execfcn ^endmacro         // * executes response which
  1848.                          // * may be a ^jumpforlb
  1849.          Y ^label(6) ^endmacro         // * esc
  1850.          Y ^label(7) ^macro(113) ^endmacro     // * pgup
  1851.          Y ^label(8) ^macro(115) ^endmacro     // * pgdn
  1852.          Y ^label(9) ^help(8) ^endmacro     // * help page 8
  1853.          Y ^label(11) &mkcorres ^endmacro
  1854.          Y ^label(12) &mklnres ^endmacro
  1855.          Y ^label(13) &mkcolres ^endmacro
  1856.          Y ^label(21) &setpsmk ^endmacro
  1857.          Y ^label(22) &unsetpsmk ^endmacro
  1858.          Y ^label(31) &setdrawingmdsl ^endmacro
  1859.          Y ^label(32) &setdrawingmddl
  1860.                                           
  1861.  
  1862.                                        p-38
  1863.      Panels
  1864.  
  1865.        Panels  are the  same as menus (and    may be mixed with them)  except
  1866.        that they  are displayed  with  ^panel(0..39)  and  once  displayed,
  1867.        control  is    immediately  returned  to the  caller.    The display  is
  1868.        inhibited.  You can get user input with ^getkey or ^getkeyns. Panels
  1869.        may    be  any number of lines, but are dynamically  cut to fit within
  1870.        the screen height - 5 lines.
  1871.  
  1872.        Here  is  a sample  panel  and  control  macro  that  displays  some
  1873.        information    and at the next  keystroke  redisplays    the  screen and
  1874.        executes the keystroke. This assumes special key definitions @csrlf,
  1875.        @csrrt, @csrup, @csrdn, @ent, @esc, @pgup, @pgdn, and @a-f1.
  1876.  
  1877.          OInformation Panel
  1878.           any information ...
  1879.           any information ...
  1880.           any information ...
  1881.  
  1882.          X 115 ^panel(15) ^getkey ^updatescrn ^execfcn ^endmacro
  1883.          Y ^label(1) ^keyfcn @csrlf ^endmacro
  1884.          Y ^label(2) ^keyfcn @csrrt ^endmacro
  1885.          Y ^label(3) ^keyfcn @csrup ^endmacro
  1886.          Y ^label(4) ^keyfcn @csrdn ^endmacro
  1887.          Y ^label(5) ^keyfcn @ent    ^endmacro
  1888.          Y ^label(6) ^keyfcn @esc    ^endmacro
  1889.          Y ^label(7) ^keyfcn @pgup    ^endmacro
  1890.          Y ^label(8) ^keyfcn @pgdn    ^endmacro
  1891.          Y ^label(9) ^keyfcn @a-f1
  1892.  
  1893.        If you don't want to intercept any special keys then you can use:
  1894.  
  1895.          X 115 ^panel(15) ^getkeyns ^updatescrn ^execfcn
  1896.  
  1897.        One panel may be made permanent by setting B @permpanel to the panel
  1898.        number.  Permanent  panels  are  displayed  during  editing    but are
  1899.        overwritten    by  DOS  shells,  help text,  and  generally  by  menus
  1900.        (depending  on  the    cursor    position),   but   they  are   restored
  1901.        automatically after this.
  1902.  
  1903.        This panel may be changed  with a macro but you must insure that the
  1904.        cursor is not covered by the new panel and that  window B  still has
  1905.        at least three text lines. To set a permanent panel which may have a
  1906.        different height than the current permanent panel use this code.  It
  1907.        unsplits the screen,  displays  the    new  panel,  and  resplits  the
  1908.        screen. This avoids all potential problems.
  1909.  
  1910.          y ^inhibitscrn ^savecsrps ^csrcmdln
  1911.          y ^varset(0) ^scrnsplit ^if<>0 ^var(0) ^unsplitscrn
  1912.          y ^patchbyte @permpanel (panel#) ^updatescrninh
  1913.          y ^if=0 ^var(0) ^jumpfor(4) ^varadd(0) ^splitscrn(2) ^execfcn
  1914.          y ^rescsrps ^updatescrn
  1915.                                           
  1916.  
  1917.                                        p-39
  1918.        The    automatic permanent panel feature sets    the  permanent panel to
  1919.        one of four panels based on the  state  of the keyboard.  The  first
  1920.        panel is for the unshifted state, the second for when the alt key is
  1921.        pressed, the  third    for  when the control key  is pressed, and  the
  1922.        fourth for when the shift key is pressed.
  1923.  
  1924.        To use this feature, set B @autopanel and B @permpanel to the number
  1925.        of the first automatic panel. The next three panels (sequential) are
  1926.        for alt, ctrl, and shift.  Each of the panels should  have  the same
  1927.        height - the keyboard  routine rewrites the panels  blindly and does
  1928.        not worry about the details needed for  different sized panels.  The
  1929.        byte  at @apdelay specifies a delay    before the  display of the alt,
  1930.        ctrl, and shift panels  in 1/18 second (one PC timer tick).    Setting
  1931.        this to approximately 9 helps prevent excessive screen changes.
  1932.  
  1933.        RE  updates    the @permpanel byte with the current automatic panel as
  1934.        it polls the keyboard.
  1935.  
  1936.        These panels will not overwrite  help,  menus,  or transient panels,
  1937.        but    will  overwrite any current  permanent    panel.    If  you let  it
  1938.        overwrite a permanent panel, do not    let it take up    more space than
  1939.        the current panel, because the keyboard routine  will not be able to
  1940.        handle the situation if the cursor or window B is covered by the new
  1941.        panel.
  1942.                                           
  1943.  
  1944.                                        p-40
  1945.      Compatibility and Technical Information
  1946.  
  1947.        REPROF will run  on any IBM    compatible MS-DOS computer, in a memory
  1948.        space of 96K, under any standard environment.
  1949.  
  1950.        REPROF is a pure Turbo Pascal program. All input and output uses the
  1951.        Turbo  Pascal library.  Screen writes use  Turbo  Pascal's  standard
  1952.        write functions.  REPROF takes  no interrupts beyond  those taken by
  1953.        the Turbo Pascal startup code.
  1954.  
  1955.        REPROF was  written by Cary Ravitz and compiled with Borland's Turbo
  1956.        Pascal 6.0 and Turbo Assembler 2.0.
  1957.                                           
  1958.