home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / LNF / READ.ME < prev    next >
Text File  |  1991-01-03  |  51KB  |  1,107 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                             Look & Feel 3.2 read.me
  11.          Copyright (c) 1990, Oakland Group, Inc.  All rights reserved.
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21. 1:  INTRODUCTION
  22.  
  23.      Thank you for purchasing Look & Feel version 3.2.
  24.  
  25.      Please return your registration card so we can send you information of new
  26.      versions and features.  We automatically notify registered users of new
  27.      versions.
  28.  
  29.      This file contains a description of the Look & Feel disk, recompiling
  30.      instructions for various compilers, and a list of errors, omissions,
  31.      updates to the Look & Feel manual, and instructions for converting Look &
  32.      Feel version 2.1 .lnf files into Look & Feel version 3.2 .lnf files.
  33.  
  34.      Sections that describe new information for Look & Feel 3.2 begin with the
  35.      phrase "NEW FOR 3.2:".
  36.  
  37.      If you wish, you can also purchase the source code of Look & Feel from us.
  38.  
  39. 2:  INSTALLATION
  40.  
  41.      DOS users: read the section below for installation.  VMS, UNIX users:
  42.      consult the installation documentation for your operating system
  43.  
  44. 2.1:  DOS
  45.  
  46.      We suggest that you create an "lnf" directory on your hard disk to install
  47.      Look & Feel.
  48.  
  49.      To save space, most of the files on the Look & Feel distribution disks
  50.      have been archived into the file "lnfarc.exe".  To decompress the archive,
  51.      type "lnfarc" on the command line, followed by the drive and directory in
  52.      which you wish to place the files.  For instance, the command
  53.  
  54.           lnfarc c:\lnf
  55.  
  56.  
  57.      unpacks the archive and place its contents on your c: drive in the \lnf
  58.      directory.
  59.  
  60.      Before you begin using Look & Feel, make a backup copy of the lnf.oak
  61.      file.  This file contains all Look & Feel's dialogue boxes and basic
  62.      screens.  If you destroy or alter it, you may be unable to perform any
  63.      actions on your files.
  64.  
  65. 3:  DISK CONTENTS
  66.  
  67.      After installing the files from your distribution media, your Look & Feel
  68.      directory should contain the following files:
  69.  
  70.      lnf.c            source for Look & Feel's main, for recompilation and
  71.                       linking your own functions (see below)
  72.  
  73.      lnf.exe          Look & Feel's executable file
  74.  
  75.      lnf.hlp          Look & Feel's help file
  76.  
  77.      lnf.oak          screen file with Look & Feel's screens
  78.  
  79.      lnfpack.c        source code for the lnfpack utility
  80.  
  81.      piano.c          code generated for screen "piano" in sample.lnf
  82.  
  83.      piano.tem        a sample template file to accompany piano.c
  84.  
  85.      sample.lnf       sample screens (including sample_screen from Chapter 2 of
  86.                       the manual)
  87.  
  88.      screen.c         code generated for the example in Chapter 2 of the manual
  89.  
  90.      table.c          symbol table for the example in the manual
  91.  
  92.      On a more obvious note, your disk also contains the file "read.me".
  93.  
  94.      Your distribution also contains platform specific library files, as
  95.      specified below:
  96.  
  97. 3.1:  DOS
  98.  
  99.      The following library files are also in lnfarc.exe on the disk:
  100.  
  101.      m1llnf.lib       Look & Feel's library file, for recompilation and linking
  102.                       under the Microsoft C 5.1 compiler (see below)
  103.  
  104.      m6llnf.lib       Look & Feel's library file, for recompilation and linking
  105.                       under the Microsoft C 6.0 compiler (see below)
  106.  
  107.      t2llnf.lib       Look & Feel's library file, for recompilation and linking
  108.                       under the Borland Turbo-C 2.0 compiler (see below)
  109.  
  110.      tpllnf.lib       Look & Feel's library file, for recompilation and linking
  111.                       under the Borland Turbo-C++ 1.0 compiler (see below)
  112.  
  113. 3.2:  VMS
  114.  
  115.      The following file is also in [.LNF] directory as a result of the
  116.      installation restoration of the tape saveset cslnf.bck:
  117.  
  118.      lnf.olb          Look & Feel's library file, for recompilation and linking
  119.                       (see below)
  120.  
  121. 3.3:  SCO UNIX, Interactive 386/ix, and SPARC SunOS
  122.  
  123.      The following file is also in the lnf directory on your machine:
  124.  
  125.      liblnf.a         Look & Feel's library file, for recompilation and linking
  126.                       (see below)
  127.  
  128. 4:  IF YOU OWN AN OLDER VERSION OF LOOK & FEEL...
  129.  
  130.      Conversion of .lnf files from versions previous to Look & Feel 3.1 to new
  131.      .lnf files is simple.  Import the screen from old .lnf file with the
  132.      Disk-Import command.  When you save the screen, Look & Feel places it in a
  133.      new .lnf file.  Sfiles from versions 3.1 are compatible with those for
  134.      version 3.2; you can load them with the Disk-Load command.
  135.  
  136.      For your own convenience, you may wish to keep the old .lnf files in a
  137.      different directory from that in which the new version and its files
  138.      reside.
  139.  
  140. 5:  IF YOU ARE RUNNING LOOK & FEEL ON A UNIX SYSTEM...
  141.  
  142.      NEW FOR 3.2: Because of restrictions on key mappings under UNIX, you
  143.      cannot use the accelerator keys as specified in the manual.  Instead of
  144.      pressing CTRL and a key simultaneously, press CTRL-X and then the
  145.      particular key.  For instance, to open a new screen, press CTRL-X and then
  146.      "O", instead of CTRL-O.  The unique key ("O", in this example) is always
  147.      the same key as is named in the manual.
  148.  
  149. 6:  IF YOU ARE RUNNING LOOK & FEEL ON A VMS SYSTEM...
  150.  
  151.      The VMS version of Look & Feel is functionally identical to the DOS
  152.      version with these exceptions:
  153.  
  154.         *    Some Quick-Keys are simulated by a Meta key sequence:
  155.  
  156.                 Quick Key             Meta key Sequence Equivalent
  157.  
  158.                 Control-M             Control-X M
  159.                 Control-I             Control-X I
  160.                 Control-Q             Control-X Q
  161.                 Control-Home          Control-X Find
  162.                 Control-End           Control-X Select
  163.  
  164.  
  165.              See the INSTALL.TXT file for a description of the Meta keys.
  166.  
  167.         *    Only single lines are available for line-drawing, if your terminal
  168.              supports the line-drawing characters.
  169.  
  170.         *    The 43-line mode setting in the Tools-Global box has no effect.
  171.  
  172.         *    The dialogue boxes of Disk-Load, Disk-Save, and Editor-Open behave
  173.              slightly different.  In the "File" field, only filename
  174.              specifications are significant; relative path specifications are
  175.              disregarded and not appended to the path specification of the
  176.              "Dir" field.
  177.  
  178. 6.1:  LNF.EXE and screen files
  179.  
  180.      The VMS version of Look & Feel expects to find the LNF.OAK system screen
  181.      file in one of two places.  It first looks in the current default
  182.      directory, then in the directory in which LNF.EXE resides.
  183.  
  184. 6.2:  Dialogue boxes
  185.  
  186.      Dialogue boxes may contain fields labeled "dir" and "file".  Under DOS and
  187.      UNIX Look & Feel, when you specify a relative path in the "file" field,
  188.      Look & Feel attempts to join this to the entry in the "dir" field to form
  189.      the complete path specification.  Under VMS, Look & Feel ignores any path
  190.      specification entered into the "file" field.
  191.  
  192. 6.3:  File saving and revision numbers
  193.  
  194.      The creation of files with incremental revision numbers occurs in a
  195.      different manner for screen files than editor files.
  196.  
  197.      Screen files (.LNF files) saved to a file with a filename that already
  198.      exists overwrite the current version of that file, unless you specify a
  199.      particular revision number in the filename when saving the file.
  200.  
  201.      Editor window contents saved to a file with a filename that already
  202.      exists  create a new file with a revision number one greater than the
  203.      current revision, unless you specify a particular revision number when
  204.      saving the file.
  205.  
  206.      If you do specify a revision number in the filename when saving either a
  207.      screen file or the contents of an editor window and that file revision
  208.      exists, then the file overwritten.  Finally, if you specify a filename or
  209.      a filename with a particular revision number that does not yet exist, then
  210.      a new file is created.
  211.  
  212. 7:  RECOMPILING AND LINKING FUNCTIONS
  213.  
  214.      To include custom field functions, border functions, and any other
  215.      functions, you must make the appropriate changes to lnf.c and recompile
  216.      it.
  217.  
  218. 7.1:  Changing lnf.c
  219.  
  220.      For information on linking new functions into Look & Feel, consult lnf.c.
  221.  
  222. 7.2:  Recompiling lnf.exe
  223.  
  224.      Recompiling Look & Feel has different requirements for the different
  225.      compilers.
  226.  
  227. 7.2.1:  Microsoft 5.1
  228.  
  229.      Use the following command line arguments to compile under MS C 5.1:
  230.  
  231.           cl /c /DM5 /AL /Olt /Gs /FPc /I\cscape\include lnf.c
  232.  
  233.  
  234.      Then use the following arguments when you link.  Make sure you use the
  235.      Microsoft large model libraries (m1llnf.lib, m1llnf.lib, m1lowl.lib).
  236.      You MUST link to m1llnf.lib BEFORE the C-scape libraries.
  237.  
  238.           link /SE:500 /NOE lnf, , , m1llnf.lib \cscape\lib\m1lcscap.lib
  239.           \cscape\lib\m1lowl.lib;
  240.  
  241.  
  242. 7.2.2:  Turbo C 2.0
  243.  
  244.      For Turbo C 2.0, use the following command line arguments to compile:
  245.  
  246.           tcc -c -ml -I. -I\cscape\include lnf.c
  247.  
  248.  
  249.      Then use the following arguments when you link.  Make sure you use the
  250.      Turbo-C large model libraries (t2llnf.lib, t2llnf.lib, t2lowl.lib).  You
  251.      MUST link to t2llnf.lib BEFORE the C-scape libraries.
  252.  
  253.           tlink \tc\lib\c0l lnf, , , \tc\lib\emu \tc\lib\mathl \tc\lib\cl
  254.           t2llnf.lib \cscape\lib\t2lcscap.lib \cscape\lib\t2lowl.lib
  255.  
  256.  
  257. 7.2.3:  Microsoft C 6.0
  258.  
  259.      Use the following command line arguments to compile under MS C 6.0:
  260.  
  261.           cl /c /AL /I\cscape\include lnf.c
  262.  
  263.  
  264.      Then use the following arguments when you link.  Make sure you use the
  265.      Microsoft large model libraries (m6llnf.lib, m6llnf.lib, m6lowl.lib).
  266.      You MUST link to m6llnf.lib BEFORE the C-scape libraries.
  267.  
  268.           link /SE:500 /ST:4096 /NOE lnf, , , m6llnf.lib
  269.           \cscape\lib\m6lcscap.lib \cscape\lib\m6lowl.lib;
  270.  
  271.  
  272. 7.2.4:  Turbo C++ 1.0
  273.  
  274.      For Turbo C++ 1.0, use the following command line arguments to compile:
  275.  
  276.           tcc -P -c -ml -I\cscape\include lnf.c
  277.  
  278.      Then use the following arguments when you link.  Make sure you use the
  279.      Turbo-C++ large model libraries (tpllnf.lib, tpllnf.lib, tplowl.lib).  You
  280.      MUST link to tpllnf.lib BEFORE the C-scape libraries.
  281.  
  282.           tlink \tc\lib\c0l lnf, lnf, , tpllnf.lib \cscape\lib\tplcscap
  283.           \cscape\lib\tplowl \tc\lib\emu \tc\lib\mathl \tc\lib\cl
  284.  
  285.  
  286. 7.2.5:  Interactive 386/ix, SCO UNIX, and SPARC SunOS
  287.  
  288.      As discussed in the C-scape for UNIX Installation Notes, Look & Feel is
  289.      distributed on a tar formatted diskette for these three platforms; refer
  290.      to that document for more information on installation.
  291.  
  292.      To rebuild Look & Feel, use the makefile in the lnf directory.  You must
  293.      customize the makefile for the system on which you are running.  Use the
  294.      instructions from the C-scape for UNIX Installation Notes concerning the
  295.      OWL and C-scape makefiles.
  296.  
  297.      Once you have done this, compile and link Look & Feel by typing:
  298.  
  299.           make lnf
  300.  
  301. 7.2.6:  VMS C
  302.  
  303.      Use the MAKELNF.COM file provided on your distribution tape to recompile
  304.      LNF.EXE.
  305.  
  306.  
  307. 8:  ABOUT LNFPACK
  308.  
  309.      When you delete screens from an sfile, the space that they use is not
  310.      automatically deleted.  As you add new screens, Look & Feel uses this
  311.      empty space.  If you want to remove this empty space (for instance, for
  312.      the sfiles that you wish to ship with a product), we have included the
  313.      source code for the utility lnfpack, which does this.  (Compile it as you
  314.      would any other C-scape program.)  When you run lnfpack on a file, it
  315.      packs it and gives the packed version of the file the .pak suffix.
  316.  
  317.      For example, to pack the file screens.lnf, type
  318.  
  319.          lnfpack screens.lnf
  320.  
  321.      lnfpack then creates the file screens.pak.  After creating the file, it
  322.      prints the message "screens.pak created." to the display.
  323.  
  324. 9:  UPDATES TO THE MANUAL
  325.  
  326.      Since printing the manual, there have been several commands added to Look
  327.      & Feel.  Certain commands have been changed and are now more powerful.
  328.      The structure of this chapter parallels that of the manual, and includes
  329.      both new and changed commands.
  330.  
  331.      NEW FOR 3.2: IMPORTANT: If you are using Look & Feel on a UNIX system, you
  332.      cannot use the accelerator keys as specified in the manual.  Instead of
  333.      pressing CTRL and a key simultaneously, press CTRL-X and then the
  334.      particular key.  For instance, to open a new screen, press CTRL-X and then
  335.      O, instead of CTRL-O.  The unique key ("O", in this example) is always the
  336.      same key as is named in the manual.
  337.  
  338. 9.1:  General Changes
  339.  
  340.      This section discusses changes involving the main menu and status bar,
  341.      mouse support, dialogue boxes, screen types and the help system.  Its
  342.      contents encompass changes to both "What is Look & Feel?" and "Inside Look
  343.      & Feel."
  344.  
  345. 9.1.1:  The Main Menu
  346.  
  347.      There is an additional choice in the Main Menu, the Help choice.  This
  348.      choice allows you to call Look & Feel's help system with the mouse.
  349.  
  350. 9.1.2:  The Status Bar
  351.  
  352.      The status bar displays the current cursor position within the active
  353.      screen.  Note the uppermost row is row zero and the leftmost column is
  354.      column zero.
  355.  
  356. 9.1.3:  Dialogue Boxes and LNFPATH
  357.  
  358.      In all dialogue boxes with a "Dir" field, the field only displays the
  359.      working directory if you are performing an action on a screen whose
  360.      directory is different from that of lnf.exe.
  361.  
  362.      NEW FOR 3.2: Look & Feel loads its dialogue boxes from the file lnf.oak
  363.      using the environment variable LNFPATH.  When you start Look & Feel
  364.      running, Look & Feel gets a copy of lnf.oak from your computer.  It first
  365.      searches the directory in which you have lnf.exe, then searches according
  366.      the path specified by LNFPATH, and then according to your PATH.  (You can
  367.      set LNFPATH like other environment variables, either in your autoexec.bat
  368.      or at your operating system prompt.)  If Look & Feel gets lnf.oak locally,
  369.      the Config File field of the Global Settings box displays only the file
  370.      name "lnf.oak"; if Look & Feel gets lnf.oak by searching LNFPATH or PATH,
  371.      the path of the directory from which it gets lnf.oak appears in the Config
  372.      File field.  Note: Look & Feel also searches for and gets its copies of
  373.      lnf.hlp in the same manner as it finds lnf.oak.
  374.  
  375. 9.1.4:  Mouse Support
  376.  
  377.      You can pop up the Field Edit box by double-clicking on a field or
  378.      clicking on a field in the field list.  The Screen Edit box pops up if you
  379.      double-click on any other area in a screen.  Clicking over the screen list
  380.      removes the list and returns control to whatever screen you clicked on.
  381.  
  382.      You can remove any popup box by clicking outside of it.
  383.  
  384.      Fields in which the Space Bar toggles between choices also toggle with a
  385.      mouse click.
  386.  
  387.      Look & Feel now has an additional mouse handler, sedmou_Framer.  This
  388.      handler is designed exclusively for use with Framer menuing system.
  389.      Framers must have it to support the mouse.
  390.  
  391. 9.1.5:  Sleds
  392.  
  393.      In addition to seds, teds, framers, and slugs, Look & Feel supports the
  394.      creation and use of the "sled" screen.  A sled (Scrolling List EDitor)
  395.      allows you to view and manipulate a list of data whose size you cannot
  396.      predict.
  397.  
  398.      It has a small number of identical rows, each of which contains one or
  399.      more fields and manages its own data in internal arrays called column
  400.      arrays.  The field variables point to successive elements in the column
  401.      array.  The sled automatically creates and maintains a column array for
  402.      each of its field columns.  It also governs mapping of field variables to
  403.      the data of the column arrays.
  404.  
  405.      Because they are dynamically resizable, sleds are useful, for instance, as
  406.      interfaces into databases, and can even be embedded in seds.  To create a
  407.      sled, select sled in the Type field of the Screen Open box.  The basic
  408.      sled is three fields wide; the field functions for its fields are
  409.      string_funcs, pint_funcs, and cmoney_funcs.  It has the border bd_prompt
  410.      and the special function spc_Sled.
  411.  
  412.      To add a row to a running sled, press "+"; to delete a row, press "-".
  413.  
  414. 9.1.6:  The Help System
  415.  
  416.      You can use Look & Feel's help system with either the keyboard (as
  417.      discussed in the manual) or with the mouse.
  418.  
  419.      To select a keyword with the mouse, click on it.  Control then passes to
  420.      the keyword's screen.  You can move back to the screen from which the
  421.      keyword was selected by choosing the "Previous Screen" keyword.  You can
  422.      enter the help index from any screen by selecting the "Index" keyword.
  423.  
  424.      To exit the help system, select the "Quit" keyword.
  425.  
  426. 9.1.7:  Keystroke Recording and Playback
  427.  
  428.      NEW FOR 3.2: Look & Feel now has the feature of keystroke recording and
  429.      playback (as in the Look & Feel demo).  The -r (or R) option starts it
  430.      running in RECORD mode; the -p (or P) option starts it running in PLAYBACK
  431.      mode.
  432.  
  433.      To specify the file that you would like to record or play, pass it to Look
  434.      & Feel as an argument after you specify its mode.  For example, to record
  435.      the file "test.key", start Look & Feel running with the following:
  436.  
  437.           lnf -rtest.key
  438.  
  439.  
  440.      To play this script, start Look & Feel running with:
  441.  
  442.           lnf -ptest.key
  443.  
  444.  
  445. 9.2:  Disk Commands
  446.  
  447.      Disk-Code:  The Code Generate box is different from that described in the
  448.      manual.  Instead of automatically generating code for the active screen,
  449.      you can specify the screen for which you wish to generate code.  (By
  450.      default, the screen listed for generation is the active screen, but you
  451.      can indicate a different one.)  You can specify the directory from which
  452.      the screen and template both originate.  You can also specify the
  453.      destination directory for the generated code.  The Template File field
  454.      uses the Plus key interface and checks for files with the ".tem" suffix.
  455.  
  456.      NEW FOR 3.2: Disk-Code: Selecting "Yes" in the ANSI field of the Code
  457.      Generate box causes Look & Feel to create code that conforms to ANSI
  458.      standard C; selecting "No" creates K&R-style code.
  459.  
  460.      Disk-Table:  The Symbol Table Generate box is different from that
  461.      described in the manual.  Instead of automatically generating a symbol
  462.      table for the active screen's sfile, you can select the sfile for which
  463.      you wish to generate a symbol table.  (By default, the sfile listed for
  464.      generation is the active screen's sfile, but you can select a different
  465.      one.)  You can specify the directory from which the sfile and template
  466.      both originate.  You can also specify the destination directory for the
  467.      generated symbol table.  The Template File field uses the Plus key
  468.      interface and checks for files with the ".tem" suffix.
  469.  
  470.      Disk-Import:  The manual states that the "Import From" field has two
  471.      choices, but, in fact, it has three: ASCII, DBD, and OLDLNF.  The OLDLNF
  472.      option allows you to import screens designed with version 2.1 of Look &
  473.      Feel.  See above, in Section 4.
  474.  
  475.      Disk-Save:  You cannot include the "." (period) character in screen
  476.      names.  If you do this, Look & Feel truncates the name; for instance, the
  477.      name "input.screen" becomes "input".  This is because Look & Feel uses the
  478.      period to indicate that a screen is nested.  For instance, if you embed a
  479.      text editor called "my_edit" in a data entry screen called "my_data", Look
  480.      & Feel calls the text editor "my_data.my_edit".
  481.  
  482. 9.3:  Screen Commands
  483.  
  484.      Screen-Edit:  The Screen Edit box has an additional field in its border
  485.      features area.  You can now give a border a "Top" feature, which brings
  486.      the window to the foreground when you click the mouse on it.  Look & Feel
  487.      gives all its windows this feature in EDIT mode, but, in GO mode or when
  488.      running, you can only top those windows whose borders have this feature
  489.      enabled.
  490.  
  491.      Screen-Edit:  There are several additional functions which allow you to
  492.      customize your screens.  The mouse handler "sedmou_Framer" is available
  493.      for use with Framer menus.  The special function "spc_Sled" is for use
  494.      with sleds (Scrolling List EDitors).  Two additional attributes are
  495.      available for each screen: HiSel and HiReg.  HiSel and HiReg define the
  496.      colors of the highlighted character in a field when the field is selected
  497.      and unselected, respectively.  See the entry under field commands for more
  498.      information on highlighted fields.
  499.  
  500.      Screen-Edit:  The Screen Edit box's "name" field is not a protected
  501.      field.  If you wish to change the name of a screen, call the Screen Edit
  502.      box and edit its name there.
  503.  
  504.      Screen-Wipe:  This command allows you to clear all text and fields from
  505.      the active screen.  When you call this command, Look & Feel asks you if
  506.      you wish to remove the screen's contents.  If you choose to do this, the
  507.      contents of the screens are removed permanently.  Once you have wiped a
  508.      screen, there is no way to restore its contents.
  509.  
  510.      Screen-Open:  You can give a screen a name and an sfile when you open it.
  511.      To see which screen names are in use in an sfile, you can use the Plus
  512.      interface in the screen field of the Screen Open box.  If you select a
  513.      name in use, Look & Feel uses it.  If you then save the screen, you will
  514.      destroy the screen that had the name first.  (NOTE: You cannot include the
  515.      "." (period) character in screen names.  If you do this, Look & Feel
  516.      truncates the name; for instance, the name "input.screen" becomes
  517.      "input".  This is because Look & Feel uses the period to indicate that a
  518.      screen is nested.  For instance, if you embed a text editor called
  519.      "my_edit" in a data entry screen called "my_data", Look & Feel calls the
  520.      text editor "my_data.my_edit".)
  521.  
  522.      NEW FOR 3.2: Screen-Freshen:  This command clears and redraws the screen,
  523.      in the event that any "trash" appears on the screen, from line noise, OS
  524.      messages, or other sources.  This command is specifically designed for
  525.      multi-tasking operating systems, such as UNIX, VMS, and QNX.  This
  526.      command's quick key is Ctrl-Z.
  527.  
  528. 9.4:  Field Commands
  529.  
  530.      Field-Edit:  The manual states that the Field Edit box's Bobtype field
  531.      displays the string "Bob-A," "Bob-E," "Ufunc," or "N/A". It has been
  532.      changed to instead display the less arcane "Attach," "Embed," "Ufunc," or
  533.      "*", for the non-bob case.
  534.  
  535.      NEW FOR 3.2: Field-Edit:  Look & Feel now allows you to highlight a
  536.      character in every field.  Highlighted characters have their own
  537.      attributes; in a menu, they serve as an identifier for the field during a
  538.      search (instead of the first letter).  To highlight a character, go to the
  539.      spec field of the field edit box and press the Space Bar.  This allows you
  540.      to move across the spec with the arrow keys.  When you are over the
  541.      character you wish to highlight, press F5.  Exit the field edit box and
  542.      the character you selected is now colored with the screen's highlighted
  543.      attributes.  You can change these attributes in the Screen Edit box.
  544.  
  545.      NEW FOR 3.2: Field-Edit: To set the highlighted character for the
  546.      selection items from a list_funcs list, place an "@" immediately before
  547.      the character you wish to highlight.  For instance, if your choices are
  548.      blue, black, and brown, and you wish to highlight the "b" in "blue", the
  549.      "l" in "black", and the "r" in "brown", the string in the second pointer
  550.      of the Field Edit box should then be "@blue,b@lack,b@rown".
  551.  
  552.      Field-Edit: To move from editing one field to another while in the Field
  553.      Edit box, press Ctrl-N.  This passes control to the next field and places
  554.      all the information about that field in the Field Edit box.  Control
  555.      remains in the same field in the box (i.e., Spec, Name, or wherever it
  556.      is).
  557.  
  558.      Field-Global Edit:  With this command, you alter all a screen's fields.
  559.      You can give every field the same field function, variable type, field
  560.      width, and protection mode.  For instance, if you decide that all your
  561.      fields should have a width of six, enter a six in the width field and then
  562.      check off the field.  If you do not check off a field, its value is not
  563.      made global.  You can unmark any fields which you have marked and you can
  564.      also choose whether or not the screens bobs are affected.  For more
  565.      information on the parameters that you can set, consult Section 6.1 of the
  566.      Look & Feel Manual.
  567.  
  568. 9.5:  Block Commands
  569.  
  570.      NEW FOR 3.2: You can now use the mouse to execute all Look & Feel block
  571.      commands.  To use a block command, click the mouse at one corner of the
  572.      region you wish to manipulate and hold it down; next, drag it to the end
  573.      of that region and release it.  Look & Feel then places a popup on the
  574.      display with a list of the block commands; click on the one you want and
  575.      Look & Feel calls it.  Note that in this interface, marking is always by
  576.      column in regular screens and by row in editor windows.
  577.  
  578. 9.6:  Editor Commands
  579.  
  580.      Editor-Open:  This command now has the quick key "F6".
  581.  
  582. 9.7:  Nesting Commands
  583.  
  584.      NEW FOR 3.2: Nesting-Attach:  When you attach a screen to a field in
  585.      another screen, the field in the parent screen should have bob_funcs as
  586.      its field function.
  587.  
  588.      NEW FOR 3.2: Nesting-Attach:  When you attach one screen to another, you
  589.      have control of the child screen's position.  (This is a change from Look
  590.      & Feel 3.1, in which the child position was set automatically.)
  591.  
  592. 9.8:  Tools
  593.  
  594.      Tools-Global Settings:  The Global Settings box has more options than
  595.      listed in the manual.  The "Sound" field turns your computer's sound on
  596.      and off.  The "Overwrite Prompt" field allows you to choose whether or not
  597.      Look & Feel prompts you before you overwrite a screen or file.  The
  598.      "Monochrome" field allows you to toggle between a color display and a
  599.      simulation of a monochrome display; this allows you to see how your color
  600.      applications look on a monochrome monitor.  The "43 Line Mode" field
  601.      allows you to toggle between 25 and 43 line mode on EGA and VGA monitors;
  602.      on other monitors, toggling this field does nothing.
  603.  
  604.      Tools-Character:  Under DOS, if you place the right arrow character (hex
  605.      1a, dec 26) in a text file, the file is truncated at that character when
  606.      it is next loaded.  This is because the character is the DOS end of file
  607.      character.
  608.  
  609. 9.9:  Help Commands
  610.  
  611.      Help-Help:  This command calls Look & Feel's help system.  See below for
  612.      more information on the help system.
  613.  
  614.      Help-Quick Keys:  This command displays a list Look & Feel's Quick Keys.
  615.  
  616. 9.10:  Field Functions
  617.  
  618.      Look & Feel offers several field functions which are not listed in the
  619.      manual.  These are click_funcs, nowrite_funcs, plong_funcs, radio_funcs,
  620.      and togint_funcs.
  621.  
  622.      click_funcs       boolean *     Treats the field as a menu choice.
  623.                                      Supports grid movement among fields.
  624.                                      Pressing the first letter of a field or
  625.                                      Enter selects that choice and exits the
  626.                                      sed.
  627.  
  628.      nowrite_funcs     char *        Treats the field as a menu choice.
  629.                                      Supports grid movement among fields.
  630.                                      Identical to menu_funcs except it uses
  631.                                      string_senter.  The text of the menu
  632.                                      choice is determined by the contents of
  633.                                      the field's string variable.  Hence, it
  634.                                      can be changed at run-time but the user
  635.                                      may not edit the field.  Upon exit the
  636.                                      value of the field is not written back to
  637.                                      the variable.
  638.  
  639.      plong_funcs       long *        Positive integer function, identical to
  640.                                      long_funcs except that it allows only
  641.                                      positive values.  Needs no space for a
  642.                                      minus sign.
  643.  
  644.      togint_funcs      int *         Allows the user to cycle through a list of
  645.                                      choices by pressing the space bar.  The
  646.                                      field's second data pointer contains
  647.                                      choice definitions.  Copies the number of
  648.                                      the final choice into the field's
  649.                                      variable.
  650.  
  651.      NEW FOR 3.2:
  652.  
  653.      radio_funcs     boolean *     Allows for the exclusive selection of one
  654.                                    field from a group of fields, each of which
  655.                                    has the same field name.  Requires at least
  656.                                    one writeable position.
  657.  
  658.      Look & Feel does not include select_funcs in its available field functions
  659.      because it requires a structure for its variable.  If you need a field to
  660.      hold list of options, use toggle_funcs.
  661.  
  662. 9.11:  User Functions
  663.  
  664.      For pedagogical purposes, we have included a sample user function,
  665.      lnf_Beep.  This function sounds your computer's speaker at a tone.  The
  666.      idata value you select for field's user function determines the pitch of
  667.      the tone.  Refer to the "piano" screen in sample.lnf for a sample of its
  668.      use.  See lnf.c for the function's code.
  669.  
  670. 10:  ERRATA IN THE MANUAL
  671.  
  672.      Page     Correction
  673.  
  674.      6        Warning box directly above 1.3.3: The manual states that "all
  675.               quick key sequences are keystroke mappings of calls to the main
  676.               menu."  Ctrl-G, which allows you to move to a selected line, does
  677.               not have an equivalent menu choice.
  678.  
  679.      7        Table: The table refers to FMARK mode, which does not exist.
  680.               When marking a field, you enter FEDIT (FIELD EDIT) mode (which is
  681.               discussed in Sections 6.1 and 6.2).
  682.  
  683.      8        Third paragraph under Dialogue Boxes: You can pop up a list of
  684.               choices not only by pressing "+", but by clicking the mouse.
  685.  
  686.      9        Third paragraph:  The manual says that the Type field in the
  687.               Screen-Open box toggles among several choices.  It actually uses
  688.               the Plus key interface to pop up a list of choices.
  689.  
  690.      11       Mouse box: There is a missing "is" between "which" and
  691.               "equivalent" in the first sentence.
  692.  
  693.      13       Last paragraph in Section 2.1: The manual says that the main
  694.               editing area is obscured by the menu and status bar.  In fact,
  695.               the main editing area is only twenty-two lines tall (including
  696.               its border) and resides between the menu and the status bar.
  697.  
  698.      15       Step 1 in the procedure: The manual says that Field-Mark takes us
  699.               into FIELD mode, but, in fact, we enter FEDIT mode.
  700.  
  701.      15       Step 3 in the procedure: The manual says, "After writing the
  702.               spec, press Enter."  Before pressing Enter, move the cursor over
  703.               the last character in the field with the Left arrow.  This
  704.               ensures that the spec has the proper width.
  705.  
  706.      19       Step 1 in the procedure:  The manual mentions the "phone" field,
  707.               but should call it the "Phone" field.
  708.  
  709.      19       Step 2 in the procedure: The manual refers to FIELD MARK mode,
  710.               but, in fact, we enter FEDIT mode.
  711.  
  712.      25       Screen shot: The screen shot mistakenly places a blank row
  713.               between each field, while the instructions assume there is no
  714.               space between the fields.
  715.  
  716.      27       Procedure for code generation: The manual does not describe the
  717.               Code Generation box as it is.  See Section 6.2 of this document
  718.               for a discussion of the Code Generation box.  The code in
  719.               screen.c includes test code and conforms to ANSI standards,
  720.               though the manual does not mention this.
  721.  
  722.      27       Screen shot: Same error as in screen shot on p. 25.
  723.  
  724.      35       "A Ted from a Sed," paragraph 2: The special function that you
  725.               must attach to the screen is spc_EmbedTed.
  726.  
  727.      58       Warning in Section 5.1.8:  The manual states "that shadow color
  728.               determines the screen's color whether or not it is in a shadow."
  729.               The shadow color determines the color of that section of the
  730.               screen that is in the shadow.  The rest of the screen has its
  731.               usual colors.
  732.  
  733.      76       Section 6.2 text:  The manual states that Field-Mark (Ctrl-F)
  734.               puts Look & Feel in MARK mode (which does not exist).  Look &
  735.               Feel, in fact, enters FEDIT mode.
  736.  
  737.      91       First paragraph in Section 9.1: The manual says the Editor-Open
  738.               command pops up the Screen Load box, but it actually pops up the
  739.               Editor Load box.
  740.  
  741.      108      Section 12.2:  The manual does not mention the FSYM_CLASS
  742.               delimiter, which indicates the start of the class function
  743.               symbols.  Consult the C-scape read.me for more information on
  744.               this topic.
  745.  
  746.      111      Data type of bob_funcs:  Manual says that bob_funcs take NULL
  747.               when they in fact take void.
  748.  
  749.      112      Data type of framer_funcs:  Manual says that framer_funcs take
  750.               NULL when they in fact take void.
  751.  
  752.      113      Data type of slug_funcs:  Manual says that slug_funcs take NULL
  753.               when they in fact take void.
  754.  
  755.      116      Quick Keys, by Keystroke:  The manual states that Ctrl-Z resets a
  756.               dialogue box to default values.  It actually clears and redraws
  757.               the screen, to remove any "trash" that appears from line noise,
  758.               OS messages, or other sources.
  759.  
  760.      116      Quick Keys, by Keystroke:  The manual contains no references to
  761.               the "F6" key.  F6 calls the Editor Load box.
  762.  
  763.      117      Quick Keys, by Function:  The manual states that Ctrl-Z resets a
  764.               dialogue box to default values.  It actually clears and redraws
  765.               the screen, to remove any "trash" that appears from line noise,
  766.               OS messages, or other sources.
  767.  
  768.      118      Quick Keys, by Function:  The manual contains no references to
  769.               the "F6" key.  F6 calls the Editor Load box.
  770.  
  771. 11:  COMMON QUESTIONS AND ANSWERS
  772.  
  773.      NEW FOR 3.2: Here we offer answers to questions that we have received from
  774.      Look & Feel users.
  775.  
  776. 11.1 How do I create a menuing system with Look & Feel?
  777.  
  778.      There are four basic steps to creating a menuing system from scratch:
  779.  
  780.      * design the entire menu;
  781.  
  782.      * create the main menu;
  783.  
  784.      * create each of the submenus; and
  785.  
  786.      * attach each of the submenus to the main menu.
  787.  
  788.      Before you begin building a menuing system, figure out how the entire
  789.      structure works.  For instance, let's suppose you have a main menu with
  790.      four selections: two call submenus, one calls a user function, and the
  791.      last returns a value.  This means that you have to build the main menu and
  792.      two submenus.  You can set up fields that return values or call functions
  793.      later.
  794.  
  795.      To create the main menu screen, start with a basic sed and lay out fields
  796.      in it in whatever form you like.  For a standard vertical slug, you must
  797.      create a vertical menu:  Fields should all have the same width and sit in
  798.      successive rows.  For a framer or a horizontal slug, you must create a
  799.      horizontal menu:  Fields should sit end-to-end in a single row.  (You can
  800.      also create a menu in which the fields are laid out some other way, though
  801.      a framer menu does not work properly if its fields are laid out
  802.      vertically.)  Give these fields either slug_funcs or framer_funcs; the
  803.      only functional difference between the two is that the main menu of a slug
  804.      menu disappears when submenus are displayed, while a framer menu displays
  805.      main and sub menus simultaneously.  Once you have laid out all the fields
  806.      and given them functions, resize the screen so it holds fields and no
  807.      more.  You now have a main menu and can proceed onward.
  808.  
  809.      Having created the main menu, you must now create the submenus.  Begin by
  810.      opening a basic sed.  This will be the submenu for your first main menu
  811.      selection.  (When you open any new screen, make sure you give it a name[--]
  812.      having several screens called "*" can be very confusing.)  To create this
  813.      submenu, use the same method as for the main menu.  If your menuing system
  814.      is a framer or vertical slug, this must be a vertical menu; if it is
  815.      horizontal slug menu, this must be a horizontal menu.  All the fields in
  816.      this menu should have the same field function as those in the main menu.
  817.      Now resize the screen to hold only the fields.  Once this is finished, use
  818.      the same procedure to create the second submenu.
  819.  
  820.      You should now place the menus where you want them to appear on the
  821.      display.  For a standard framer, the parent menu runs across the top of
  822.      the display; the submenus should be immediately below the fields that call
  823.      them.  For a slug, the parent menu either runs across the top of the
  824.      display (horizontal) or down the side (vertical); in either case, the
  825.      submenus should cover the same section of the display as the parent.  Look
  826.      & Feel allows you to select whatever layout you want[--]these or something
  827.      new.
  828.  
  829.      As you place the parent menu and submenus on the display, you may decide
  830.      that the default border, bd_prompt, is not the best border for your
  831.      menuing system.  For instance, if you want your horizontal slug menu to
  832.      resemble a Lotus menuing system, you can use the border, bd_123; bd_123 is
  833.      a simple border that displays a prompt string immediately below its
  834.      screen, without putting a box around the screen.  If you want your border
  835.      to display instructive prompts for your users, you must use a border that
  836.      can hold prompts, such as bd_123, bd_mouse, bd_null, bd_prompt, or
  837.      bd_std.  Keep in mind the difference between a menu with a visible outline
  838.      and an invisible one; each has its advantages.
  839.  
  840.      Once you are satisfied with the location and border of each menu, you can
  841.      attach the submenus to the main menu.  Returning to the particulars of the
  842.      example, there are two submenus and the main menu.  To attach the submenus
  843.      to the main menu, pass control into the main menu, move to a field to
  844.      which you want to attach a submenu, and call Look & Feel's Nesting-Attach
  845.      command, Ctrl-W.  Look & Feel then places a list of screen on the
  846.      display.  Go to the submenu you want to select and press Enter.  At this
  847.      point, Look & Feel places the Field Edit box on the display.  Make sure
  848.      that the field to which you are attaching the main menu already has
  849.      framer_funcs or slug_funcs as its field function and press Enter.  You
  850.      have given the main menu field a submenu.  Now repeat the process for the
  851.      other field with a submenu.
  852.  
  853.      If you enter GO mode and select a choice with a submenu, the submenu now
  854.      pops up.
  855.  
  856. 11.2 When I generate code for a menuing system, it looks different then when I
  857. write code to create one according to instructions in the C-scape manual.
  858.  
  859.      Both framers and slugs are actually seds.  As higher level objects,
  860.      C-scape allows you to manipulate them with routines that are macros for
  861.      sed_ functions.  In fact, a framer and its pulldowns are a sed and some
  862.      independent bobs.  Though the terminology for menuing systems differs from
  863.      that of bobs, the two are operationally identical--that's why Look &
  864.      Feel's generated code for framers and slugs looks as if it's just for a
  865.      sed with some bobs.
  866.  
  867.      If you are looking for frame_Open, slug_Go, or some other function, you
  868.      will only find their sed_ equivalents.  Though this is different from the
  869.      paradigm described in the C-scape manual, it allows you greater ability to
  870.      customize your work, since you can manipulate each menu individually, and
  871.      not only as part of a larger structure.
  872.  
  873. 11.3 After I have opened a basic framer or basic horizontal slug, the display
  874. becomes blank when I press Enter.  Why is this?
  875.  
  876.      Basic framers and horizontal slugs have several traits in common: they are
  877.      only one line tall, have no border, and have a background attribute of
  878.      0x07.  If you press Enter, the single row of the basic screen is no longer
  879.      displaying the menu choices--it's displaying the row beneath the menu
  880.      choices.  This row appears to be invisible because it's black and is
  881.      sitting on top of the background sed, which is also black.
  882.  
  883.      To view the fields in the menuing system, press the UP key to move to the
  884.      row that contains the fields.  You can also give the screen a border,
  885.      which clearly demarcates the difference between it and the background.
  886.      Another option is change the menuing system's attributes in the Screen
  887.      Edit box; by giving it a background attribute with a background color that
  888.      is not black, the screen will always be visible on a black background.
  889.  
  890. 11.4 How can I or should use the type field in Field Edit box?
  891.  
  892.      The type field in the Field Edit box holds the C variable type that the
  893.      field uses.  Normally, you do not need to edit this field or even pay
  894.      attention to it.  If you select a standard field function, Look & Feel
  895.      automatically sets the type for the field.  If you select a field function
  896.      that is not linked in, the field's variable type is, by default, whatever
  897.      type the field presently holds.  Since, by default, fields have
  898.      string_funcs as their field functions, the default type is char *.  If you
  899.      select, for instance, click_funcs and then enter a custom field function,
  900.      the type is void, since click_funcs take a void.
  901.  
  902.      Look & Feel actually sets the variable for field by combining the type and
  903.      the variable.  For instance, if you select string_funcs as a field
  904.      function (with char * as the type) and give the field the variable name,
  905.      the field's variable is char *name.  Look & Feel takes care of this on its
  906.      own, so you usually need not even think about this; it only becomes
  907.      important when your application involves arrays (see below).
  908.  
  909. 11.5 How can I use arrays as variables in Look & Feel?
  910.  
  911.      To use an array of variables to hold the variables for a screen, you need
  912.      to perform two actions:
  913.  
  914.      (1) pass the variables in question values along the array and
  915.  
  916.      (2) ensure that the variable types handle array entries properly.
  917.  
  918.      These changes are fairly simple, but vary according to variable types.
  919.  
  920.      For instance, if you wish to use an array of strings, you need only set
  921.      the variables to array values, such as list[0], list[1], and list[2].
  922.      Since an array of strings is an array of pointers to characters, you don't
  923.      need to change the variable type and are finished.
  924.  
  925.      For any other kind of variable, you must change the variable's type.  For
  926.      instance, suppose you are creating an array of integers.  First, set the
  927.      variables to array members (as above).  Next, change the variables' types
  928.      so that instead of being pointers to ints (int *) they are simply ints
  929.      (int).  This is because when you select a field function that uses ints,
  930.      Look & Feel automatically sets the variable type to int *; you need to
  931.      change this to int, so that the code generated for the field will be int
  932.      list[2], which is the third member of an array of ints.  If you do not
  933.      change the field's variable type, the generated code will be int *list[2],
  934.      which is the third member of an array of pointers to ints.
  935.  
  936.      Remember that when Look & Feel generates code it simply concatenates the
  937.      contents of the type and variable fields from the Field Edit box.
  938.  
  939.      Example:
  940.  
  941.           type:     char *
  942.  
  943.           var:      name
  944.  
  945.           code:     char *name;
  946.  
  947.  
  948.  
  949.           type:     int *
  950.  
  951.           var:      x[3]
  952.  
  953.           code:     int *x[3];
  954.  
  955.  
  956.  
  957.           type:     int
  958.  
  959.           var:      x[3]
  960.  
  961.           code:     int x[3];
  962.  
  963.  
  964.  
  965.      If your needs indicate that you may need an array of mixed variable types,
  966.      use a structure (next).
  967.  
  968. 11.6 How can I use structures as variables in Look & Feel?
  969.  
  970.      Using elements of a structure to hold variables has three major steps.
  971.      These are:
  972.  
  973.      (1) defining your variables to hold elements of a structure,
  974.  
  975.      (2) generating test code, and
  976.  
  977.      (3) defining the structure.
  978.  
  979.      Suppose you are designing a screen to hold product registration
  980.      information, such as the product owner's name, phone number, and serial
  981.      number.  Let's call this screen "reg_screen".  It has three fields; one
  982.      with string_funcs and the other two with digit_funcs.  When you create
  983.      each field, you need to pass it the definition of an element of a
  984.      structure (instead of the usual variable name).  For instance, let's say
  985.      that you want the structure to be a "reg_struct" (short for registration
  986.      structure) called "my_struct".  A sample variable might be:
  987.  
  988.           struct reg_struct my_struct->name
  989.  
  990.  
  991.      This construction of a variable refers to the structure my_struct of type
  992.      reg_struct.  To use this variable, you enter it in the var field of the
  993.      Field Edit box.  The phone and serial number fields would hold the phone
  994.      and serial elements, respectively.
  995.  
  996.      Example:
  997.  
  998.           type:     char *
  999.  
  1000.           var:      struct reg_struct my_struct->name
  1001.  
  1002.  
  1003.      Having finished creating your screen, generate code for it that includes
  1004.      test code.
  1005.  
  1006.      The generated code will not work, however, as Look & Feel knows nothing
  1007.      about your new structure.  You must fix the code by bringing it into Look
  1008.      & Feel's editor.  Here, you have to define the structure type that you are
  1009.      using.  This definition looks like this:
  1010.  
  1011.           struct reg_struct {
  1012.                char name[100];
  1013.                char phone[100];
  1014.                char serial[100];
  1015.           };
  1016.  
  1017.      This is a structure with three elements, each of which is an array of up
  1018.      to 100 characters.  (Even though the fields probably aren't one hundred
  1019.      characters wide, making the structure's arrays one hundred characters wide
  1020.      ensures that there won't be a memory overwrite.)  Place this definition
  1021.      immediately after the #includes in the test code.
  1022.  
  1023.      Within main, place a declaration of the particular structure that you wish
  1024.      to use.  In this example, this declaration should be:
  1025.  
  1026.           struct struct_reg my_struct;
  1027.  
  1028.  
  1029.      Next, initialize the values of the variables in the structure:
  1030.  
  1031.           my_struct.name[0] = '\0';
  1032.           my_struct.phone[0] = '\0';
  1033.           my_struct.serial[0] = '\0';
  1034.  
  1035.  
  1036.      Also in main is a function that displays the registration screen, which,
  1037.      by default, has the same name as the screen within Look & Feel:
  1038.  
  1039.           reg_screen(&my_struct);
  1040.  
  1041.  
  1042.      Below main is the reg_screen function.  With the alterations you have made
  1043.      to the code, you can now compile it and display an operational screen.
  1044.  
  1045.      If you want to continue manipulating the screen, delete the reg_screen
  1046.      function from the file and save everything you have done.  After you are
  1047.      finished with any changes to the screen, generate code without generating
  1048.      test code and calling the file with definitions and declarations as a
  1049.      template file.  This gives you code with a structure definition, variable
  1050.      initializations, and a routine to display the screen.
  1051.  
  1052. 11.7 When I generate code or a symbol table, why does Look & Feel not always
  1053. include the right header files?
  1054.  
  1055.      Look & Feel cannot check your screens to see which header files you need
  1056.      when you generate code or a symbol table.  It automatically includes
  1057.      stdio.h, cscape.h, teddecl.h, msys.h and no other header files.  If you
  1058.      want your generated file to call the appropriate header files, you must
  1059.      use a template file.
  1060.  
  1061.      A template file is a file that you create[--]it contains only the
  1062.      "include" lines for a .c  file.  A sample template file might look like
  1063.      this:
  1064.  
  1065.           #include <stdio.h>
  1066.           #include <string.h>
  1067.           #include <cscape.h>
  1068.           #include <teddecl.h>
  1069.           #include <sled.h>
  1070.           #include <msys.h>
  1071.  
  1072.  
  1073.      To ensure that your generated code has all the headers you need, create a
  1074.      template file that calls them.  When you are in the Code Generate or the
  1075.      Symbol Table Generate box, go to the Template field and enter the name of
  1076.      the file with the headers in it.  When Look & Feel generates the code, it
  1077.      automatically includes your template and calls the appropriate headers.
  1078.  
  1079. 12:  OAKLAND GROUP BBS
  1080.  
  1081.      NEW FOR 3.2: Our BBS supports color ANSI screens.  Here is basic
  1082.      information to use it:
  1083.  
  1084.          BBS Phone Number:        (206) 236-6485
  1085.  
  1086.          Baud Rates               1200 and 2400
  1087.  
  1088.          Line Protocol:           8  data bits
  1089.                                   1  stop bit
  1090.                                   No parity
  1091.  
  1092.          Download Protocols:      ASCII
  1093.                                   XMODEM
  1094.                                   XMODEM-CRC
  1095.                                   YMODEM
  1096.                                   YMODEM/BATCH
  1097.                                   ZMODEM
  1098.  
  1099.  
  1100.  
  1101.      We encourage all to use the bulletin board as a forum by which to share
  1102.      C-scape ideas, comments and code.  If you have a problem and cannot solve
  1103.      it with the methods described above, call Oakland Group technical
  1104.      support.  For more information on technical support and on our user groups
  1105.      on BIX and UUNET, see the pamphlet Oakland Group Support and Training,
  1106.      which is part of the C-scape package.
  1107.