                   STalker 3.01 to 3.02 Patch Program

            This program will upgrade STalker version 3.01 to
            version 3.02.  It will ONLY upgrade version 3.01.

  This program is copyright  1992 by Gribnif Software.  All rights are
  reserved.  This program may be freely distributed to all legitimate
  registered users of STalker 3.

  Any questions or comments, please contact us at:

      Gribnif Software, P.O. Box 350, Hadley, MA 01035, USA
      Tel: (413) 584-7887, Fax: (413) 584-2565
      GEnie: GRIBNIF


What is needed to upgrade
=========================

  1.  An un-modified, registered, STalker 3 Master Disk, version 3.01.

  2.  A hard disk or a blank formatted floppy disk (to place the PATCH302.PRG
      and PATCH302.DAT on).


How to upgrade your STalker version 3.01 to version 3.02
=========================================================

  1.  Make sure you have made a backup copy of the STalker 3 Master Disk.

  2.  Place the PATCH302.PRG and PATCH302.DAT on your hard disk or on the
      blank floppy disk (it may need the extra disk space to write some
      temporary files, depending on free memory.)

  3.  Run the PATCH302.PRG and follow the on-screen prompts.

  4.  Once you have finished upgrading your master disk to version 3.02, make
      a backup copy of this newer version.

  ** VERY IMPORTANT STEP, READ CAREFULLY **

  5.  To install the newer version on your system, you MUST replace the
      following STalker 3.01 files in your system with the 3.02 version files
      from the newly upgraded disk:
      
      \STALKER.ACC
      \STALKER.PRG
      \STALKER.RSC
      \BACKTALK\BACKTALK.PRG
      \BACKTALK\SCRIPTS\PREFIX.BTS
      \BACKTALK\SCRIPTS\PREFIX.BTK
      \BACKTALK\SCRIPTS\STALKER.BTH

      These files were also included with the patch program. They should be
      copied as well:

      \BACKTALK\SCRIPTS\BPLUS.BTS
      \BACKTALK\SCRIPTS\BPLUS.BTK
      \BACKTALK\SCRIPTS\BPLUS.TTP
      

If you get an error message
===========================

  If your STalker 3 Master Disk has been modified in any way (including moving
  files around), the patch program will not be able to perform the upgrade.
  You will get an error message indicating that this has happened.  In this
  case, you should mail us the disk so that we can upgrade it.

  To have your disk upgraded by us, you need to:

  1.  Send in your original, registered, STalker 3.01 Master Disk.
  2.  Enclose a U.S. check for $5 + $2 shipping & handling ($7 total).
  3.  Enclose a note with your name, address, and daytime phone number.

  In return you will receive the upgraded 3.02 Master Disk. If you have
  already purchased this patch disk from us for $5, please just include your
  original disk and $2.


Helpful Hints
=============

  o If you are having trouble with lost characters, the very first thing
    to do is try running AUXINIT.PRG.

  o When using high speed modems (9600 baud or greater) you will have to
    use hardware (RTS/CTS) flow control, rather than XON/XOFF flow control.
    Several pointers:

    o Make sure STalker has been configured for RTS/CTS in the Port Settings
      dialog for each service you plan to connect to at high speed.
    o Make sure your modem is configured for RTS/CTS. This varies from modem
      to modem; some use an AT command, others a DIP switch. Consult your
      modem's manual for more information.
    o Run the appropriate combination of patch programs. These can be found
      in the EXTRAS folder of your STalker disk:
      
      TOS version        Port                Program(s)
       1.0-1.6x      ST-compatible      SERIALFX
       2.00-2.05     ST-compatible      SERIALFX and SERIALFX
                     other              SERPTCH
       2.06          ST-compatible      SERIALFX
                     other              none needed
       3.00-3.05     ST-compatible      SERIALFX and SERIALFX
                     other              SERPTCH
       3.06          ST-compatible      SERIALFX
                     other              none needed

  o If, after dialing a service, you notice that you cannot access any of
    STalker's functions and the "Dial" menu title is still selected, then
    this most likely means that there is a problem with your autologin
    sequence for that service. Press Undo to cancel the autologin and then
    check the appropriate entry in the Autodialer Directory.


Changes for STalker 3.02 - Jun. 7th 1992
========================================

This version contains the following enhancements:
................................................

- A new protocol setting was added: "CIS B-Plus".  If the protocol is set to
  B-Plus, STalker will respond to the CompuServe initiation character by
  attempting to invoke a script called BPLUS from the script directory.
  Enclosed with this new version of STalker is a BPLUS.BTK, which simply runs
  BPLUS.TTP (the actual file transfer program). BPLUS.TTP must reside in the
  script directory in order for this feature to work.

- Baud rates greater than 19,200 are now supported on the MSTe/TT Serial 2 and
  Modem 2 ports.  Due to the way the hardware works, the extra speeds aren't
  the same between the two ports.  Serial 2 has the normal progression of
  speeds: 38400, 57600, 115200, and 230400.  Modem 2 is a bit odd though:
  38400, 76800, and 153600.

  While testing these between a TT and a PC, the system was usually getting a
  maximum ZModem throughput of just over 4100 cps.  A system with TT-RAM may
  do a little better, but it should be pointed out that it's not realistic to
  expect to get close to 100% efficiency once you go higher than 38400.

- Capture and Printer status are now reflected in the window title.  If
  Capture is on, a black dot appears to the left of the window title text
  where a space would normally be.  Similarly, if the Printer is on, a dot
  appears to the right of the text.

- The limit on the number of lines in the scroll-back buffer has been
  increased to 9999.  Unless you've got a very fast machine, at some point the
  number of lines may start to make a noticeable decrease in scrolling speed,
  as the buffer fills up.

- The Terminal settings dialog now has a "Swap Backspace & Delete" option for
  VT100/PC-ANSI emulations.  If you use a VAX with VMS, you've probably been
  wishing for this since VMS uses Delete the way most other systems use
  Backspace.

- The speed of scrolling in a VT100 / PC-ANSI scrolling region has been
  significantly improved.  This new method will only be used, however, if
  STalker's window is on top or is not obscured by another window.

- The path for the "Open configuration..." and "Save configuration as..."
  commands is now remembered, although it doesn't get saved with the
  configuration.  STalker will remember any changes you make to either path
  for the rest of the session, and the upload path will not be affected.

- Older versions of STalker would put the menu bar inside the window if you
  held down the Alt key while launching them as a .PRG.  Since this could be
  done by accident, it has been removed for the new version. If you really want
  to have the menu bar inside the window, you can give STalker "-m" or "-M" as
  the first parameter in its command line.

- Control+Keypad can now be used as an alternative to Alt+Keypad to run
  scripts.  TOS 2.06/3.06 intercepts Alt+KeypadDigit keystrokes, which made it
  impossible to invoke scripts in that fashion.

- The '@' character can now be used in logon strings and other dialogs.  The
  GEM dialog handler treats the '@' character in a special way if it is the
  first character of an editable field - it makes the entire field empty (try
  it with any GEM program!).  To get around this, the '@' character is mapped
  to one of the Hebrew characters that vaguely resembles an @, '' to be
  specific (hex D2).  STalker then translates this Hebrew character to the '@'
  character when the setting is used in the program.

- The alert that appears when a missing or bad .INF file is loaded has been
  split into two alerts.  One now indicates that the file could not be found,
  the other indicates that the file was not a valid STalker configuration
  file.

- STalker now ensures that DTR is enabled when it starts up and any time the
  current port is changed.  This was necessary because many other German comm.
  programs leave DTR disabled when they exit.  Note that STalker leaves DTR
  active even if you quit the PRG version.  If this is a problem, you could
  always write a small script that just does a "port_dtr(FALSE);" call and
  name it STK_EXIT.BTK.

- If STalker is idle for a few seconds and there is no modem activity, it will
  automatically use fewer timer events. This essentially means that there will
  be less of a system slowdown when STalker is open but not doing anything.

- The script buffer can now be up to 64K.

- STalker will look for and execute a script called "STK_EXIT.BTK" when it
  exits in .PRG mode.  Note that this will fail (and hence be ignored) if the
  exit is due to a script issuing the exit_program() call.

- The BackTALK compiler will now handle a Control+Tab keystroke by invoking
  either STalker or STeno, which ever one invoked it last (Control+Tab will be
  added to the next STeno version, it's not in 2.00).

  If the compiler hasn't been invoked by either STalker or STeno since
  startup, it will ignore the Control+Tab keystroke.

- The BackTALK compiler has had its object file size limit increased.  As a
  consequence, more memory is consumed by the compiler *while it is
  compiling*.  Note that this change does not affect the memory consumption of
  the compiler when it is idle - it only allocates memory to hold the compiled
  file when it is ready to start a compilation.

- Some new BackTALK routines were added:

  APPL_FIND
  ---------

    FUNCTION appl_find(STRING appl_name) RETURNS INT;

    This is analagous to the GEM appl_find() call.  As with the GEM version,
    the 'appl_name' must be padded with blanks to be exactly 8 characters
    long.  Do not include the .PRG/.ACC extension.  A value of -1 is returned
    if the application is not presently executing.

    Example:

        int     neo_cli_id;

        neo_cli_id = appl_find("NEO_CLI ");
        if neo_cli_id == -1 then
            puts("Neo CLI not present!\r\n");
        else
            // Do some fancy stuff with the Neo CLI
        endif

  GLOBAL_ADDRESS
  --------------

    FUNCTION global_address(STRING local_address) RETURNS INT;

    This routine converts a BackTALK address (which is relative to the start
    of the script execution buffer) to a "global" physical system address
    suitable for passing to another GEM application.

    Example:

        int     string_address;

        // Pass a null-terminated string in two halves using
        // words 3 and 4 of the GEM message.
        string_address = global_address("My dog has fleas");
        appl_write(neo_cli_id, 9876, string_address,
                   string_address >> 16, 0, 0, 0);

  PORT_DTR
  --------

    FUNCTION port_dtr(INT raise_dtr);    // No return value

    This routine lets you explicitly control the DTR signal.  If 'raise_dtr'
    is TRUE, the DTR signal is asserted, otherwise it is lowered.

    Example:

        // Do the same thing as port_drop_dtr()

        port_dtr(FALSE);    // Drop DTR
        wait(7, FALSE);     // Wait a bit
        port_dtr(TRUE);     // Bring it back up again.

  SET_DUPLEX
  ----------
  
    FUNCTION set_duplex(INT requested_mode) RETURNS INT;

    This function sets the echo mode. It takes one integer parameter (the
    constants DUPLEX_FULL, DUPLEX_ECHO, and DUPLEX_LOCAL are defined for the
    get_duplex() call) and sets the current duplex mode.  The resulting mode
    is returned, which may differ from the requested mode if the requested
    mode is invalid.

    Example:
    
        int old_duplex;
        
        old_duplex = set_duplex(DUPLEX_FULL);   // Get old mode
        // Do some stuff here...
        set_duplex(old_duplex);                 // Reset


- At the request of a few users, an option to ignore Clear/Home requests has
  been added.  This prevents the scroll-back buffer from being cleared under
  host control.

  To control the "ignore clear/home" setting, you must use a script function:

    set_int_param(MISC_PARAM, 666, TRUE);   // To ignore clear/home
    set_int_param(MISC_PARAM, 666, FALSE);  // To obey clear/home

  The get_int_param() call works similarly for retrieving the current setting.

  The clear/home sequence doesn't actually get completely ignored - it causes
  the cursor to move down a line, just as if a CR/LF combo were received.  I
  felt this was necessary since the host expects to be on a fresh line after
  sending a clear/home.

  Note that this is only effective in VT52 and PC-ANSI mode.  A VT100 uses two
  separate sequences to do a clear/home (one to clear the entire screen and
  another to home the cursor).  Since they can be sent in any order and may in
  fact not be used together (the cursor could be homed without clearing the
  screen) it would be difficult to try to detect and ignore the combination.

- An option has been added to control the method STalker uses when passing
  strings from STeno to the modem.  There's a new option for
  get/set_int_param() and a corresponding literal in STALKER.BTH:

    set_int_param(MISC_PARAM, TYPEAHEAD_STYLE, <TRUE/FALSE>);

  Don't let the name mislead you though - it affects both typeahead and the
  "Transmit Line/Selection" command in STeno (in short, any text that STeno
  passes to STalker without using the clipboard).

  If you turn this option on (TRUE), STalker will follow the current ASCII
  upload settings.  With it off (FALSE) STalker just sends the string at full
  speed.

  With the option on, STalker does the following:

    1: Expand the line to the "expand blank lines" string, if necessary.

    2: Send the string.

    If the text being sent ends with a carriage return, it then does the
    following:

    3: Wait for the specified prompt for up to 5 seconds.

    4: Wait for the specified "line wait" time.

  Note that this setting is saved along with the rest of the configuration
  when you use the "Save configuration [as...]" command, hence you'll only
  have to do it once if you want it to always work a certain way.  The default
  value for old .INF files is OFF.

  If you need the setting to act differently for different hosts, you'll need
  to write two scripts; one that turns it on and another that turns it off (or
  maybe one script that prompts you with an alert box), and then specify the
  appropriate script for each dialer entry.


The following problems are addressed in this version:
....................................................

- The shifted F2 function key entry is usable.

- The 3.01 problem in the script writing code (invoked by WRITESCR.BTS) that
  caused FKey numbers to be in hex rather than decimal has been fixed.

- There was a bug in file_printf() that made it print only one character.

- file_gets() will now return all of the file data before returning an
  FERR_EOF error code. Previously, it would return the error condition too
  soon if the file being read did not end with a carriage return.

- The "$$/Hr" and "Limit" fields in the Autodialer dialog handle input in a
  friendlier manner now.  You no longer have to add extra zeros and fill the
  field to get the proper result.

- A bug in the handling of VT100/PC-ANSI cursor movement commands in
  conjunction with scrolling regions was found and fixed.

- Dropping DTR used to mess up the SCC ports (Modem 2 and Serial 2) if you
  were using either 7 bits + zero parity or 7 bits + mark parity.  This is now
  fixed.

- Flow control is now handled in a better fashion.  The TOS Rsconf() call in
  some versions didn't seem to like the "Both" value for flow control, even
  though the rest of the serial routines seem happy with XON/XOFF and RTS/CTS
  being enabled at the same time.  The result was that Rsconf() would ignore
  any request by STalker to set flow control to "Both", leaving the setting it
  at its previous value.  STalker now forces TOS to accept its value, and
  RTS/CTS now seems to be properly enabled.

- Sending a BREAK signal now works from the Modem 2 and Serial 2 ports.

- The BackTALK run_program() function is now only allowed if STalker is
  running as a program, or if MiNT or NeoDesk is present.  If none of the
  above conditions is true, the run_command() will simply return an error code
  of -31006.

- STalker now deletes its window handle once it completes its startup tasks.

- A minor change was made to the handling of VT100 cursor up/down escape
  sequences in conjunction with scrolling regions.

- The shifted F2 function key entry is usable.

- The 3.01 problem in the script writing code (invoked by WRITESCR.BTS) that
  caused FKey numbers to be in hex rather than decimal has been fixed.

- A 32K or larger file transfer buffer used to cause a Paste operation to do
  nothing. This has been fixed.

- All of the "cursor blotch" problems should now be gone.

- Disk full and other errors are now properly detected when saving a dialer
  (.DLR) or function key (.FKY) file.

- The Autodialer dialog now redraws properly after you load a .DLR file.

- Clicking on the grey background of the baud rate selection box in the Remote
  Mode dialog used to cause GEM to crash.

- YModem-G downloads used to abort if a timeout occurred during the initial
  handshake.  This has been fixed and now it will take the usual 10 errors to
  cause it to fail.

- The PREFIX.BTS script has been corrected to deal with files that have an
  incomplete last line.

- The STalker window will now scroll when you're selecting text and the mouse
  pointer gets close to one of the screen edges.  It previously only scrolled
  if you went outside of the window borders.


Notes
-----

- On many Unix hosts, or on networked machines in general, it's a good idea to
  initiate a download with a limit on the ZModem "window size".  For the
  standard Unix "sz" program, use a command such as the following:

    sz -w 16384 files...

  This will make the host request an explicit ACK every 1/4 window size (4K in
  this example).  The host will send ahead up to 1/2 the window size before it
  will wait for an ACK.  This has the effect of throttling the host which,
  with an unlimited window, would otherwise send data as quickly as possible.
  On networked systems or hosts with lots of buffering, the sender can get way
  ahead of the receiver due to all of the data that gets buffered along the
  way.  This makes error recovery slower, and in extreme cases can even cause
  the transfer to fail.  The latter can happen for larger files since the
  sender will output all of the data, only to have a lot of it still buffered
  along the way to the receiver.  Once it thinks it has finished transmitting
  the file, the sender will sit and wait for the receiver to ACK the end of
  file.  Meanwhile, much of the file data is still being transmitted to the
  receiver.  If enough buffering takes place, the sender may timeout before
  the receiver even finishes receiving the file data.
