Metropoli BBS
VIEWER: whats.new MODE: TEXT (ASCII)
                                         Notes for TE/2 Version 1.30
                                                      March 16, 1994

                                                     Oberon Software
                                                  1405 East Main St.
                                              Mankato, MN 56001-5070

                                                 Voice: 507/388-7001
                                                 BBS:   507/388-1154

  -------------------------------------------------------------

Copyright 1991-94, Oberon Software, Mankato, MN - All Rights Reserved

  -------------------------------------------------------------

The top portion of this document outlines the changes applied between
TE/2 Version 1.24 and 1.30.  The second portion of this document
outlines the changes made between TE/2 Version 1.23 and 1.24.  The third
portion of this document outlines changes made between TE/2 Version
1.20 and 1.23.  The fourth portion of this document outlines the changes
made between TE/2 Version 1.10C and 1.20.

  -------------------------------------------------------------

General Notes

     Please note our NEW ADDRESS given directly above!  All phone numbers
     remain the same.

     Also note that Steven Tower's Internet and GEnie ID's are no longer
     active;  you may contact Steven via the Oberon BBS however.


Features

     Multi-Media, sound file support!  You can specify WAV or VOC files
     to play for various events within TE/2, attach a sound file to
     each dialing directory entry, and play and record WAV files
     directly from your TE/2 or REXX scripts.

     Fully remappable, multiple keyboards!  Use the supplied TE2KBD
     program to create alternate keyboard mapping files.  You can
     attach any script command to any keystroke, and load and save
     keyboards from your scripts.

     You can now pass parameters to your TE/2 syntax or REXX syntax
     TE/2 scripts!

     Greatly enhanced External programs interface including separate
     external file transfer protocol sections.  You can now easily use
     DOS based external file transfer engines with TE/2.  See notes
     later in this document regarding use of DOS based external protocol
     engines.


New INI File Settings

     Variable       Setting and Notes
     -------------  -------------------------------------------------
     ChimeWAV       Filename, default NULL.  Only applicable if you
                    have MMOS2 installed on your system.  This WAV file
                    will be played instead of the regular TE/2 "Chime".

     Chime5         TRUE/FALSE, default FALSE.  Only applicable if you
                    have MMOS2 installed on your system.  Setting this to
                    TRUE will enable playing of the Chime5WAV after every
                    five minutes of on-line time.

     Chime15        TRUE/FALSE, default FALSE.  Only applicable if you
                    have MMOS2 installed on your system.  Setting this to
                    TRUE will enable playing of the Chime15WAV after every
                    fifteen minutes of on-line time.

     Chime60        TRUE/FALSE, default FALSE.  Only applicable if you
                    have MMOS2 installed on your system.  Setting this to
                    TRUE will enable playing of the Chime60WAV after every
                    sixty minutes of on-line time.

     Chime5WAV      Filename, default NULL.  Only applicable if you
                    have MMOS2 installed on your system.  If enabled, this
                    file is played after every five minutes of on-line time.

     Chime15WAV     Filename, default NULL.  Only applicable if you
                    have MMOS2 installed on your system.    If enabled, this
                    file is played after every fifteen minutes of on-line
                    time.

     Chime60WAV     Filename, default NULL.  Only applicable if you
                    have MMOS2 installed on your system.    If enabled, this
                    file is played after every sixty minutes of on-line time.

     DialingWAV     Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played whenever
                    TE/2 dials a number if there is no personalized sound file
                    specified in the dialing directory entry for that number.

     EndingWAV      Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played when
                    TE/2 exits.

     StartupWAV     Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played when you
                    start TE/2.

     XferStartWAV   Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played when TE/2
                    begins a file transfer.

     XferSuccessWAV Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played after
                    successful completion of a file transfer.

     XferFailWAV    Filename, default NULL.  Only applicable if you have MMOS2
                    installed on your system.  This file will be played if a
                    file transfer failed for any reason.

     Telnet         TRUE/FALSE, default FALSE.  If set to TRUE, TE/2 will
                    initiate Telnet handshaking at startup and will respond
                    to Telnet protocol messages throughout operation.

     StatBarAttr    Color Attribute, controls the color of the TE/2 Status Bar.
                    Please note that this attribute is not yet included in the
                    colors you can set via the Te2Color program.  It is set to
                    yellow on blue by the install program and if you wish to
                    modify it you will need to use a text editor on your TE2.INI
                    file to change it "by hand".

     Device         This is not new but it should be noted here that you can
                    now specify "Nul" as a device name.

     MenuActive     This is not new but its functionality has changed.  You may
                    now set it to one of three settings which will determine the
                    initial display of the TE/2 Menu or Status Bar:
                      * 0 -> No menu or status bar
                      * 1 -> Menu
                      * 2 -> Status Bar

     TE2Menu        Filename, default NULL.  If set to a valid file name, the
                    contents of the file will replace the default TE/2 menu
                    (Alt-Z).  The menu lines begin at the beginning of the
                    file and end when the end of file is encountered or when
                    the string "$$END$$" appears at the beginning of a line.
                    The menu is drawn in "MenuNormAttr" color unless changed
                    with one of the two available color-indicator characters:
                        ~ will set "MenuHiAttr" if "MenuNormAttr" is in effect
                          else it will reset "MenuNormAttr"
                        $ will set "LogoAttr" unless "LogoAttr" is already in
                          effect in which case it will reset "MenuNormAttr".
                    NOTE: Setting "TE2Menu" from a script will have absolutely
                          no effect; it is only read and parsed at startup.

     InitWindowPos  Special, no default.  You may set this to one of three
                    values:
                      * Maximize
                      * Minimize
                      * @<filename>
                    This controls the initial placement of TE/2's window, the
                    settings are not valid if you run TE/2 in a full screen
                    session.  The "Maximize" and "Minimize" settings should
                    be self-explanitory; "@<filename>" indicates the name of
                    a file which will be used to store TE/2's window position
                    values between executions so that they may be restored on
                    the next exection.  If this variable does not appear in
                    TE2.INI, TE/2's initial window position will be determined
                    by OS/2.

     CommShared     TRUE/FALSE, default FALSE.  Use this setting WITH GREAT
                    CARE!  This will cause TE/2 to open it's Device in "Shared
                    Mode" which allows other applications to open and use the
                    device simultaneously with TE/2.  This could cause great
                    problems if not used appropriately.

     TE2Pipe        Pipename, default NULL.  If used, the argument should be
                    a valid pipe name, i.e., "\pipe\te2pipe" or some such.
                    External processes may use this pipe to send commands into
                    TE/2; the pipe will accept anything that the Interpret()
                    function will accept.  The external process must send a
                    2-byte word on the pipe stating the length of the
                    following string before the string.  TE/2 will return the
                    length of string it read.  See the supplied TE2PIPE
                    program for an example of using this facility from an
                    external process.

     ErrorPopUp     TRUE/FALSE, default TRUE.  If TRUE, the normal error
                    popup dialog will appear on script syntax errors, file
                    open oerrors, etc.  If FALSE, only a message will be
                    printed to stdout.  This will allow a remote process
                    to pipe in commands that could possibly be invalid and
                    not worry about getting TE/2 into a state where it's
                    waiting for use input.  You would also want to use this
                    in a host mode script to allow the remote user to enter
                    script commands via Interpret().

     KeyMapFile     Filename, defailt NULL.  If this variable is set it should
                    indicate the name of a TE/2 Keyboard Mapping file created
                    via the TE2KBD program.  This file will be read as the
                    default keyboard mapping file at TE/2 startup.

     DialCheckDCD   TRUE/FALSE, default TRUE.  If set to false, TE/2 will NOT
                    check for a carrier signal before dialing a number.

     ANSIBackspace  TRUE/FALSE, default FALSE.  If set to TRUE, the backspace
                    character in either of the ANSI emulations will become
                    non-destructive.

     MaxReDials     Numeric, default 0=infinity.  If set to a non-zero value
                    this becomes the absolute maximum number of dialing
                    attempts that TE/2 will make on any given number before
                    aborting.

     XEXUploadFile  Filename, default TE2Upl.XEX.  Format of the file is
                    identical to the TE2.XEX file, this files contents will
                    determine the External Upload Protocol menu.

     XEXDnloadFile  Filename, default TE2Dnl.XEX.  Format of the file is
                    identical to the TE2.XEX file, this files contents will
                    determine the External Download Protocol menu.


New Script Functions

  integer PlayFile(string fname, integer wait)
   Play a file via MMOS2.
    fname - name of a file 'playable' via MMOS2
    wait  - if 0 willplay file asynchronously, otherwise synchronous
    returns: 0 if no error (asynch mode always returns 0) or an error value

  integer RecordFile(string fname, string wintitle)
   Record a file via MMOS2.
    fname    - name of file to record into bia MMOS2
    wintitle - titlebar text for recorder control
    returns: 0 if no error or an error value
    notes: function not available in full screen mode

  integer MainMenu(integer option)
   Set the TE/2 menu state.
    option should be one of:
     -1 -> cycle
      0 -> No menu or status bar
      1 -> Menu
      2 -> Status bar
    returns: TRUE if menu changed state, FALSE if not

  integer ReStart(integer option)
   Close and reopen the current "Device"
    option - if TRUE, use will be prompted for action after the device
             has been closed and before it is reopened.  User may elect
             to exit TE/2 at this point.  If FALSE, ReStart() procedes
             directly to the reopen phase.
    returns: TRUE if successful, FALSE if not (see notes)
    Notes: function not available if TE/2 was started with a "hot" handle.
           If Restart() fails, usually TE/2 will be exited.
           If Telnet handshaking is enabled, it will be reinitialized. 

  integer WindowMinMax(integer option)
   Set TE/2's window state.
    option should be one of:
      0 -> Minimize
      1 -> Maximize
      2 -> Restore
    returns: 0 if no error or an error value
    notes: function not available in full screen mode

  integer Interpret(string cmd)
   Invoke the script parser on its argument and execute it
   as a script command.  The function always returns TRUE.
   Anything that can be typed at the "Command:" prompt can be
   executed via Interpret().
   Examples:
     Interpret("hangup(false)")
     Interpret("downloadpath = d:\foo")

  integer ReadKeyFile(string filename)
   reads a keyboard definition file into the current keyboard setup
   overwriting the current setup.

  integer PushKeyboard(void)
   saves the currently active keyboard setup and creates a new
   keyboard with all TE/2 default key mappings.

  integer PopKeyboard(void)
   restores a pushed keyboard and discards the current keyboard.

  string QueryKeyFile(void)
   Returns the name of the currently loaded key mapping file (loaded
   via "KeyMapFile" in TE2.INI or the ReadKeyFile() function) or the
   empty string if the default keyboard is in effect.

  integer SetANSIBS(integer flag)
   Sets the ANSI Backspace flag and re-inits the emulation to enable
   this mode.  Returns the previous value of the flag.

  integer SetParms2(string newdev, ... etc)
   exactly like SetParms() in all respects except that it takes a
   string argument for the device name instead of an integer 'port number'
   so it can be used to switch devices with the device name isn't COMx.
   See the docs on SetParms() for info in the rest of the parameter list.

  integer PopupMenu(string title, string items, integer row, integer col,
                      integer at1, integer at2, integer sel)

   title -- Title for the menu, may be "" for no title
   items -- Delimited list of items for menu, first char defines the
            delimiter.  See MuxWait(), it's list of items is constructed
            the same way.
   row   -- For upper left corner of the menu
   col   -- For upper left corner of the menu
   at1   -- Color Attribute for menu
   at2   -- Color Attribute for menu highlights
   sel   -- Initial selection.  If <0 or >number of items, item 1 is
            selected initially

   The menu is sized based on number of items and the longest item
   (or title).  The first character of each item is treated as a
   mnemonic.  Returns the number of the item selected, 0 if the user
   pressed ESCape.

   Example:
     PopupMenu("My Menu", "/One/Two/Three/", 10, 30, 0x17, 0x1f, 2)


Other Script Notes:

  Parameters for script files!  Both the RUN() statement and the
  "CALL" pseudo statement have been enhanced to allow for parameters
  which will be passed to the script file.  A TE/2 script language
  script may retrieve these by querying the read-only string variable:
  "ScriptArgs".  The entire parameter line will be in this variable and
  it is the responsibility of the script to parse it as it sees fit.
  A REXX language TE/2 script retrieves the parameters via the standard
  PARSE ARG methods.

  Note that the RUN() statement now accepts either one or two string
  parameters.  RUN("MyScript", "Arg1 Arg2") will execute "MyScript" and
  place "Arg1 Arg2" in ScriptArgs.  The statement RUN("MyScript") is
  also legal and it is equivalent to RUN("MyScript", "").

  When you use CALL from the TE/2 Alt-/ Command Prompt, any non-space
  characters after the script name will be taken as script parameters.
  Leading spaces are stripped from the parameter string but not trailing
  ones.  Note that because the space is used as a delimiter here you
  cannot CALL a script with a space in its file name.

  You can specify a parameter string to a script started via TE/2's
  command line "-m" switch by using "-a".  Example:

          TE2 -mMyScript "-aArg1 Arg2"

  Similarly, you can pass parameters to TE2START.SCR using "-u".


Notes regarding DOS based External Protocols:

  1. You MUST use SIO.SYS and VSIO.SYS
     1a. You MUST use an minimally documented feature of SIO.  On the
         SIO "device=" line, you have to specify the port and use
         a "-" in the fourth parameter.  I.e.:

           device=d:\usrdev\sio.sys (2,2f8,3,-)
           device=d:\usrdev\vsio.sys (2,2f8,3,-)

  2. You MUST run the DOS program from a .BAT batch file via CMD.EXE
     as a foreground, child task in the current session.  An example
     of an entry for HSLINK from my TE2Upl.XEX file is:

         0x0011,0
         HSLink
         c:\os2\cmd.exe*d:\comm\dosxtern\hslink
         /c hsl.bat %n %?[Send file(s):]

     and HSL.BAT reads:

         @echo off
         hslink -p%1 -uE:\Inbound\Data %2 %3 %4 %5 %6 %7 %8 %9
         exit



  -------------------------------------------------------------

                                         Notes for TE/2 Version 1.24
                                                       July 19, 1993

                                                     Oberon Software
                                                  518 Blue Earth St.
                                              Mankato, MN 56001-2142

                                                 Voice: 507/388-7001
                                                 BBS:   507/388-1154

  -------------------------------------------------------------

Copyright 1991-93, Oberon Software, Mankato, MN - All Rights Reserved

  -------------------------------------------------------------

 =======================================================================
 Changes which effect both the Registered and Shareware Versions of TE/2
 =======================================================================

General Note

     Oberon Software's GEnie ID has changed from "B.FLOWERS" to "BRADY".
     You can address GE Mail to either this ID or to our new Customer
     Support Representative, Steven Tower, at GEnie ID "TOWER".  You
     can send GE Mail to Kimberly Bobrow about Oberon PMQWK at GEnie
     ID "KIMBERLY".

     The Oberon User Support TOPic on GEnie has moved from the IBMPC
     RoundTable to the new OS/2 RoundTable.  To access the OS/2 RoundTable
     on GEnie, type "OS/2" at most any GEnie prompt.  The Oberon User
     Support TOPic is in CATegory 22, TOPic 2.

     The new OS/2 RoundTable is really taking off and Oberon Software is
     excited to be working closely with GEnie to help ensure its success.
     If you are already a GEnie subscriber, please visit the OS/2 RT on
     Page 1400.  If not, you can contact a GEnie representative for
     subscription information at 1-800-638-9636.

     You can also use the new GEnie-Internet Gateway to contact Oberon
     Software now.  Just send Internet mail to brady@genie.geis.com.
     Likewise, contact Steven Tower at tower@genie.geis.com and Kimberly
     Bobrow at kimberly@genie.geis.com.


OS/2 2.1 Notes

     The release of OS/2 2.1 triggered two very visible problems.  For
     one of these problems, a workaround has been effected.  For the
     other, no programmatic workaround has yet been devised however we
     will offer several possible workarounds for the user to try.

     1. Screen is corrupted at TE/2 start-up.
        This problem has been addressed and corrected within TE/2.

     2. Keyboard and/or "Screen handler" problems.
        The problem appears to exist in the OS/2 2.x keyboard handler.
        The symptom is that you may receive one or more of the following
        error messages from TE/2 at start-up:

              "Cannot initialize screen handler."
              "Cannot set logical keyboard state, error 445"
              "Cannot obtain kbd focus for logical keyboard, error 449"

        If this happens it means that OS/2 has been unable to provide
        TE/2 with access to a logical, secondary keyboard which TE/2
        needs to use for its menu and dialog box routines.  TE/2 cannot
        continue if this happens as there would be severe consequences
        during later processing.  The following workarounds have been
        suggested by users and testers and appear to work with varying
        degrees of reliability:

            A. Run TE/2 in a window instead of full screen.  This is the
               only suggestion guaranteed to work 100% of the time.  If
               you have slow video, however, you may be displeased with
               the speed of screen updates.
            B. Some users report that the problem only happens when a
               WinOS2 application is running in the background.  Check to
               see what else is running on your machine and see if closing
               any one of them will allow TE/2 to run.
            C. Most users state that if they delete their TE/2 program
               object from the desktop and recreate it from a template
               that this will correct the problem.  Others have re-installed
               OS/2 and have seen the problem corrected.


New INI File Setting

     Variable       Setting and Notes
     -------------  -------------------------------------------------
     SaveScreen     TRUE/FALSE, default: TRUE.  If FALSE the contents of
                    the screen before TE/2 is run will NOT be saved and
                    restored afterwards.  Saves about 2k of memory and a
                    few milliseconds at startup.  If you're running from
                    the desktop there's no need to save the screen anyway.


Problem Resolution and Other Enhancements

     Under OS/2 2.1 when running TE/2 in a full screen session on certain
     hardware configurations, screen corruption at program startup would
     occur.  This has been corrected.

     Corrected problem regarding "bleed through" of keystrokes from Dialing
     Directory and Scrollback Buffer into main terminal screen when TE/2
     is run in a window.

     Corrected problems encountered when changing COM devices via the
     Alt-P menu in TE/2.

     Corrected problem regarding use of root directory paths for UploadPath,
     DownloadPath, and ScriptPath.

     Function keys behave normally in Chat Mode (i.e., PF Key macros now
     work).

     Backspace in Chat Mode will now wrap backwards across line boundarys.

     Added Alt-Y (Yank) in Chat Mode to retrieve the last transmitted line
     for re-edit and re-transmission.

     Problems regarding various hard and soft traps and machine lockups
     which were occuring during re-upload of marked text from the scroll
     back buffer have apparently been corrected.  If you have or continue
     to have problems with this function, please notify Oberon Software
     immediately.

     Corrected time estimation process on large uploads.


       ========================================================
       Changes which effect only the Registered Version of TE/2
       ========================================================

New Script Function

     integer DrawBox(integer Row, integer Col, integer nRows, integer nCols, integer Attr, integer Style, integer Fill)

     Draws a box with the specified co-ordinates.  Style is 0 for no frame,
     1 for single line frame, 2 for double line frame.  Fill is TRUE or FALSE.
     Returns TRUE on success, FALSE if parameter error.


Changes and corrections to Script Parser

     Problem with using "%%" in the format string for the message() function
     resolved.

     Function SetMark(), the second parameter has rejecting the keyword
     'toggle' which the documentation states should be usable here.
     SetMark() now works correctly.

     ZModem was setting the script language system variables: LastDownload
     and LastUpload incorrectly.  This is fixed.

     Extraneous TIMEOUT events generated by multiple Waitfor()'s, MuxWait()'s,
     and Rgets()'s which were causing synchronization problems have been
     accomodated for and this problem should be resolved.

     All script functions which take a dialing directory "tag" as an
     argument will now accept "#n" instead of a tag to refer to the n-th
     directory entry.


REXX notes

     For some TE/2 fucntions which return either string or numeric
     information, the REXX handler may get confused in certain situations.
     For example, a string which begins with a numeric digit (i.e., "123ABC")
     may get truncated to just the numeric portion ("123" in the example).
     For large numbers, like the return values from OpenDialog() and fopn(),
     REXX may alter the number and, for phone numbers with hyphens embedded,
     it appears that REXX is treating these as numbers and possibly
     attempting to do arithmetic on them!  The solution to this problem is
     to force the return value from TE/2 to REXX to be a string that does
     NOT begin with a numeric digit.  You can do this with sprintf() and
     a subsequent use of REXX's substr() function.  Some examples follow:

       /* TE/2 to REXX string and numeric handling */

       /* 'DirNumber("")' Returns the phone number most recently dialed    */
                       /* from the dialing directory, i.e. 1-800-555-1212. */
                       /* REXX might think that this is an arithmetic      */
                       /* statement!  So instead...                        */

       'sprintf("[%s", DirNumber(""))' /* Will return "[1-800-555-1212"    */
       TheNumber = substr(rc, 2)       /* Makes it "1-800-555-1212" again  */


       /* 'OpenDialog(...)' Returns a 16-bit memory pointer which REXX     */
                       /* will probably not handle correctly as a return   */
                       /* code.  Use the same workaround...                */

       'sprintf("[%s", OpenDialog(...))'
       DlgHandle = substr(rc, 2)


  -------------------------------------------------------------

                                         Notes for TE/2 Version 1.23
                                                      April 15, 1993

                                                     Oberon Software
                                                  518 Blue Earth St.
                                              Mankato, MN 56001-2142

                                                 Voice: 507/388-7001
                                                 BBS:   507/388-1154

  -------------------------------------------------------------

Copyright 1991-93, Oberon Software, Mankato, MN - All Rights Reserved

  -------------------------------------------------------------

 =======================================================================
 Changes which effect both the Registered and Shareware Versions of TE/2
 =======================================================================

New INI File Settings

     Variable       Setting and Notes
     -------------  -------------------------------------------------
     SetVTDefAttr   TRUE or FALSE, default is FALSE.  If set to TRUE,
                    then the value of your TermAttr will be given to
                    the VT100 handler to use as the default attribute.
                    This replaces and overrides any setting for the
                    "V" flag in the COMMPAK2FLAGS environment variable.

     NoHPFSSalvage  TRUE or FALSE, default is FALSE.  If set to TRUE,
                    TE/2 will NOT use the HPFS-type file renaming
                    scheme when a filename collision occurs on a
                    download.

     NoExtSalvage   TRUE or FALSE, default is FALSE.  If set to TRUE
                    TE/2 will use only one digit from 1 to 9 as the
                    final character when attempting to resolve a file
                    name collision on a FAT drive (or when NoHPFSSalvage
                    is TRUE).

     SalvageBrkCh   any number from 1 to 255, default is 59.  Set this
                    to the ASCII value of the character you wish to
                    use as a separator character when resolving file
                    name collisions on an HPFS drive.  By default this
                    is a semi-colon and renamed files have the form:
                    filename;nn (where nn is a number from 1 to 999).
                    Suggested settings for this would be 46 (a period),
                    32 (a space), 45 (a hyphen), or 95 (an underscore).
                    Do NOT use any character which is not valid in an
                    HPFS file name such as +, /, \, :, * or ?

     CursorTop      These are the initial scan line setting for the cursor.
     CursorBottom   If they are left un-set, the cursor will not be changed.
                    If one is set, they must both be set.  They can be
                    queried from the script language but not set, use the
                    new SetCursorSz() function instead.

     ExtendedFIFO   This is not a new setting but it was only partially
                    enabled in TE/2 1.20.  The choices for this setting
                    are now: TRUE, FALSE, or AUTO.  The "fourth choice"
                    is to leave reference to it OUT of TE2.INI.  If it
                    omitted from TE2.INI then the ambient state of the
                    16550 is preserved and used.  If set to anything at all,
                    the device is checked first for Extended Hardware
                    Buffering support.  If supported, then if ExtendedFIFO
                    is set to FALSE, buffering is disabled; if set to TRUE,
                    buffering is enabled with a Receive Trigger level of 8
                    and a Transmit Load Buffer Count of 16; if set to AUTO,
                    then Auto-Buffering is enabled.


Problem Resolution and Other Enhancements

     You may now specify the name of a Named Pipe, either local or remote,
     in the "Device" field in TE2.INI.  If a pipe name is used then the
     various COM-specific functions, like setting the baud rate, parity,
     etc., are silently ignored.

     An add-on product is available for using TE/2 with TCP/IP sockets
     and/or NETBIOS sessions.  Please contact Oberon Software if interested.

     The TE/2 intro screens are no longer garbaged if you start up in
     132 column mode.

     Added command line parameter "-?" which will display a list of TE/2's
     command line parameters, version information, and then exits.


       ========================================================
       Changes which effect only the Registered Version of TE/2
       ========================================================

New Script Functions

     integer CRC16(string strg, integer len)
     integer CRC32(string strg, integer len)

          These compute and return 16-bit and 32-bit CRCs for the
          the first 'len' bytes of the supplied string.  If you set
          len to -1, then the entire string length is used.


     integer SetFNKeyFile(string filename)

          Allows a script to load a new function key definition file.
          Returns 0 on success, 1 if the file was not found or could
          not be opened for reading, and 2 if an error was encountered
          reading the file.

          If the filename parameter is "" then the user will be queried
          for a file name.  If the filename parameter contains path
          information and/or a drive letter, then the name is accepted
          as is, otherwise the standard search alogrithm for TE/2
          support files is used (current directory, dirctory containing
          TE2.EXE, and them each directory in the OS/2 PATH statement).


     string ReadScr(integer row, integer col, integer length)

          Reads 'length' characters from the terminal screen at row 'row'
          and column 'col'.  'row' and 'col' are 0 based (upper left corner
          of screen is [0,0]).  'length' must be greater than zero and
          less than 256.  If 'length' is zero or less, the empty string
          is returned.  If 'length' is greater than 256, 256 is used.  No
          error checking on 'row' and 'col' for validity is performed yet.

     integer StrnStr(string s1, string s2, integer n)

          Finds the n-th occurance of s2 in s1.  The call StrnStr(s1, s2, 1)
          would be identical to StrStr(s1, s2).

     string UniqueFName(string template)

          Creates a temporary file name based on 'template' which is a
          basename plus wildcard characters '?'.  For example:
          C:\TEMP\FILE????.  The function does NOT open the file.
          Returns the empty string if no new names could be generated.
          Note: this function works exactly like the REXX/2 utility function
          SysTempFileName except that you cannot specify an alternate
          filler character.

     integer CancelAllWatch()

          Cancels all active watches.  Returns the number of watchfor's
          which were canceled.

     integer SetCursorSz(integer top, integer bottom)

          Sets the size of the cursor.  'top' and 'bottom' are the
          top and bottom scan lines for the cursor, respectively.
          Returns TRUE on sucsess and FALSE on failure.  If successful,
          system variables 'CursorTop' and 'CursorBottom' are updated.


     integer SetMark(string tag, special)

          "tag" is a dialing directory tag, "special" is TRUE, FALSE, or
          TOGGLE. This function sets the mark for the queue dialer on the
          specified dialing directory entry.  Returns the OLD state of the
          mark for that entry (TRUE or FALSE) or -1 if "tag" was not found.


     integer TermWindow(integer Row, integer Col, integer nRows, integer nCols)

          Resets the terminal window (a subset of the physical screen) to the
          size specified.  Returns TRUE on success, FALSE on error.  It's
          recommended that you perform a cls() before and after this call.
          Take great care with this one, it's a direct back door into the
          terminal emulation code.


New 'system', read-only script variables:

     integer Emulation
          Reports the current emulation mode:
            0 -> TTY
            1 -> ANSI-BBS
            2 -> ANSI-TE/2
            3 -> VT100
            4 -> IBM 3101

     integer Fullscreen
          Set to TRUE (1) if TE/2 executing in a fullscreen
          session or FALSE (0) if in a window

     integer ScreenRows
     integer ScreenCols
          These report the actual number of rows and colums on the
          physical screen.

     string StartScr
          Contains the name of the script specified on the TE/2 command
          line via "-m<scriptfile>".  If none was specified, StartScr
          contains "".

     integer RexxRC
          Contains the return code from the last executed Rexx script
          (0 if none have been executed).  See notes on Rexx scripting
          below.


Changes and corrections to Script Parser

     Change to the way REXX script return codes are handled.
          Previously you had to end your REXX script with "exit 1" (or
          other non-zero value) if you needed to return execution to a
          TE/2 language script.  A return value of 0 would cause script
          execution to end.  TE/2 will now continue executing the current
          script regardless of the REXX return code.  A new, readonly
          script variable "RexxRC" is set to the return value of the last
          executed REXX script.

          Example:

            program
              message("This is a TE/2 script^M^J")
              run("rexxscr.cmd")
              message("REXX return code is %d^M^J", RexxRC)
              end


     Default ScriptPath
          If the ScriptPath setting in TE2.INI was left NULL, it was
          erroneously defaulting the search path to the root directory
          of the current disk.  TE/2 now defaults to the CURRENT
          directory as the documentation suggests.

     Reentrancy and Watchfor()
          Previously the script parser was not reentrant and because of
          this Watchfor() statements could only be excuted between the
          execution of individual lines of the script file.  This
          severely limited the use of Watchfor() in conjunction with
          actions that should occur immediately (i.e., transmitting a
          response to a trigger string).  This limitation has now been
          removed.  Some of the new example scripts use this feature
          extensively, please refer to them for examples.

     Download()
          Because of changes in the TE/2 and Commpak/2 handling of
          input data streams in the 1.20 release, Download() stopped
          working correctly with respect to ZModem.  This has been
          corrected.

     Watchfor()
         The number of available watchfor handles has been increased from
         10 to 32

     Watchfor(), OpenDialog(), and SaveScr()
         These functions may now be called 'directly' from REXX scripts.
         Be sure to retrieve the returned handles immediately from the
         REXX 'RC' variable after calling one of these.

     Transmit()
         The transmit() function was erroneously limiting output
         to the first 64 characters of any given string and discarding
         the remainder.  This has been corrected.

         The transmit() function would behave unpredictably on strings
         containing one or more modem delay characters if local echo
         mode was not ON.  This has been corrected.



  -------------------------------------------------------------

                                         Notes for TE/2 Version 1.20
                                                       June 15, 1992

                                                     Oberon Software
                                                  518 Blue Earth St.
                                              Mankato, MN 56001-2142

                                                 Voice: 507/388-7001
                                                 BBS:   507/388-1154


 =======================================================================
 Changes which effect both the Registered and Shareware Versions of TE/2
 =======================================================================

  * New INI File variables

     DirFile <filename>  -- Names the default dialing directory file
                            which TE/2 will load at startup.

     FnkFile <filename>  -- Names the default function key definition
                            file which TE/2 will load at startup.

     XexFile <filename>  -- Names the default external programs file
                            which TE/2 will load at startup.

     VT100Prn <devname>  -- Names the "printer device" to be used in
                            conjunction with the new printer support
                            in the VT100 emulation (described elsewhere
                            in this document)

     VT100Backspace      -- Set to True or False, default is False.  If
                            "true", the VT100 emulation will interpret
                            incoming backspace characters as "destructive"
                            (That is, a backspace will be equivalent to
                            the sequence backspace-space-backspace).

     SwapBS4Del          -- Set to True or False, default is False.  If
                            "true", TE/2 will transmit a DEL character
                            (ASCII 127) from the backspace key instead of
                            the default backspace character (ASCII 8).
                            Note that this effects ONLY the backspace key
                            itself and not CONTROL+H.

     DialerSendInit      -- Set to True or False, default is False.  If
                            "true" the TE/2 dialer will transmit the modem
                            initialization string ("ModemInitStrg") to the
                            modem at the beginning of each dialing session.


  * New INI file keyword
     INCLUDE <filename>  -- allows you to segregate portions of your
                            INI file settings into separate files.
                            This feature is used in the default INI
                            file for the new modem definition setup
                            described elsewhere in this document.

  * Online Colors Setup!
     Atl-Y from within TE/2 will now execute TE2COLOR.EXE if possible.
     TE2COLOR.EXE must be either
          1) in the current directory,
          2) in the same directory as TE2.EXE, or
          3) somewhere on the PATH.
     Your INI file must be located likewise (if you've changed directories
     since startup, this may cause a problem).  Note that online color
     setup WILL NOT WORK if you have your color attributes in a file which
     has been "included" into your .INI file.  If this is the case, you
     still can run TE2COLOR as a standalone, the command line syntax is
     "TE2COLOR filename".


  * Modem setup files
     A file named MODEMS.ZIP is included with this release of TE/2.
     It contains over 60 modem configuration files designed to be
     "included" into your TE2.INI for various modem types.  To use
     these files, refer to the file MODEMS.DOC which is contained
     in MODEMS.ZIP.


  * Alternate Keyboards
     Alt-= brings up a menu of alternate keyboards for you to choose
     from.  Support is provided for:

               OS2You Mode
               Doorway Mode (Standard)
               Doorway Mode (Enhanced)
               "Pure" Binary Mode for function keys

     See TE2.DOC, the section on "Alternate Keyboards" for a description
     of each of these and further information.


  * PASSWORD Field in Dialing Directory entries
     You can assign a string to be associated with each entry into
     the dialing directory.  The "Toggle" function in the dialing
     directory screen will allow you to view this setting.  In the
     full featured version of TE/2, you may access this value via
     the "PASSWORD()" function (described elsewhere in this document).


  * "Access Codes" in the dialing directory
     This was previously a "registered version only" feature, it
     has now been included into the shareware release of TE/2.
     This feature allows you to enter up to ten strings for each
     dialing directory that may be substituted as "macros" into
     the phone numbers of directory entries.


  * New "Filename Mangling" logic on download filename collisions
     The old filename resolution logic, involving dollar sign
     characters, has been replaced.  TE/2 will resolve filename
     collisions differently depending on whether the target disk
     is formatted with HPFS or not:

          On HPFS, ";xx", where "xx" is a number starting at 1,
          will be appended to the existing file's name.

          On FAT, the last two characters of the existing file's
          name will be replaced with a two digit number beginning
          at 01.


  * COMMPAK2FLAGS Environment Variable
     This environment variable has been instituted as a means of
     passing certain information into Commpak2.Dll to alter its
     behavior.  At this time, there is one valid setting for
     COMMPAK2FLAGS:

        "set COMMPAK2FLAGS=X:Y;"  or "set COMMPAK2FLAGS=X:N;"

     These settings will turn the 16550 Extended Hardware Buffering
     check ON and OFF respectively.  The default is on.  Although the
     com device driver should only return an error in response to a
     check for the 16550 chip, on some machines it causes a fatal
     trap!  If you experience this problem just as a file transfer
     begins, you should set COMMPAK2FLAGS=X:N; in your CONFIG.SYS.


  * New INI Setting: ExtendedFIFO True/False
     TE/2 will not alter the BUFFERS setting for the com port upon
     startup unless this setting appears in the INI file  (that is,
     TE/2 will use whatever is default or has been set via the OS/2
     MODE command).  If ExtendedFIFO is set to "TRUE", TE/2 will
     attempt to set AUTO buffering, if it is set to "FALSE" it will
     attempt turn off the 16550 FIFO buffer.  Do not use this setting
     unless you deem it absolutely necessary.  Note also that the
     file transfer protocols will, by default, attempt to set AUTO
     buffering during file transfer.  If this causes a problem on
     your machine, you can turn this off via the COMMPAK2FLAGS
     environment variable described elsewhere in this document.


  * VT100 Printing
     If the new INI file setting "VT100Prn" is set to a valid
     device or file name before entering VT100 mode, certain VT220
     printing features will be enabled.  This will allow the host
     program to direct the VT100 to perform various print functions:

          Auto Print Mode ON and OFF  (^[[?5i and ^[[?4i)
               All following display lines print when you move the
               cursor off the line using a LF, FF, VT, or auto wrap.
               The printed line ends with a CR and the character which
               moved the cursor off the previous line.  Auto line
               wrap line "ends" with a LF.

          Printer Controller Mode ON and OFF (^[[5i and ^[[4i)
               The terminal sends received characters to the printer
               without displaying them on the screen.  All characters
               and character sequences, except NULL, XON, XOFF, ^[[5i,
               and ^[[4i, are sent to the printer.  Printer controller
               mode has a higher priority than Auto print mode.  It can
               be selected during auto print mode.

          Print Screen (^[[i or ^[[0i)
               Print the screen or the current scrolling region (depending
               on the DECPEX setting).  Each line ends with a CR+LF
               pair and the operation is completed with a FF if DECPFF
               mode is selected.

          DSR response to ^[?15n
               The VT100 will respond to the hosts query for terminal
               printer information with ^[[?10n if a device has been
               named via VT100Prn (implying the printer is "ready") or
               with ^[[?13n if no device is named (printer NOT "ready").

          Print Mode Selection Supported
               ^[[?18h -- DECPFF. Print FF after print screen.
               ^[[?18l -- DECPFF. Don't print FF after print screen.
               ^[[?19h -- DECPEX. ^[[i prints full screen.
               ^[[?19l -- DECPEX. ^[[i prints active scroll region.

          Print cursor line NOT supported
               ^[[1i, "Print current cursor line" is NOT supported by the
               VT100 emulation as it would not be possible to produce
               reasonable printer output from this function given the
               intervention of the OS/2 spooler.


  * Character translation of "[" characters filtered
     For certain European character setups, the "[" needs to be
     translated but it still needs to be accessed "as is" when it
     appears in an ANSI or VT100 control sequence!  When applying
     character translation from the XLat table, TE/2 now checks for
     the special case of '[' immediately following an ESCape character
     and does not translate it in this situation.  Any arbitrary
     number of control characters may appear between the ESC and the
     '[' and it will still be considered "immediately after".


  * High-bit characters allowed in input fields.
     European users can now enter their names properly in the dialing
     directory and other input fields!


  * TE/2 now no longer reports negative numbers for baud rates of
     38400 or greater.

  * The default baud rate for a new entry into the TE/2 dialing
     directory is now set to whatever was specified in your "Baud"
     statement in TE2.INI.


  * TRAP 0008 problem for TE/2 with shared modem over LAN addressed.
     If you have experienced this problem, place the line:

                    NoOvIO    TRUE

     anywhere in your TE2.INI.  This should correct the problem at
     the expense of a small amount of throughput.  If the problem
     persists, please contact Oberon Software.


  * Cursor problem fixed in input fields when screen in 25 line mode.
     Previously the cursor would not display correctly in input fields
     unless the screen was in 43 or 50 line mode.

  * Long "CONNECT" strings no longer overwrite the borders of the dialer
     dialog box.

    ------------------------------------------------------------

       ========================================================
       Changes which effect only the Registered Version of TE/2
       ========================================================

  * REXX/2 Interface for script writers!
     You now have the option of writing your TE/2 scripts in either
     the TE/2 "Original Syntax" Script Language or in the REXX/2
     Procedure language!  See the notes in SCRIPT.DOC regarding
     REXX scripts for further information.


  * New Script Language Functions
     NOTE: In each of the following functions which use "tag" as an
     argument, the string "tag" may be either a value to search the
     directory file's "Tag" field for or it may be "" in which case
     it is interpreted as "the most recently dialed entry".

     Password(tag)                 Returns the "Password" field for the
                                   entry or "" on error.

     DirName(tag)                  Returns the "Name" field for the entry
                                   or "" on error.

     DirPhone(tag)                 Returns the "Number" field for the entry
                                   or "" on error.

     DirScript(tag)                Returns the "Script" field for the entry
                                   or "" on error.

     DirTag(tag)                   Returns the "Tag" field for the entry
                                   or "" on error.

     SaveDirFile(filename)         Saves the current directory as filename,
                                   if filename is "" saves the current
                                   directory without changing the name.
                                   Returns 0 on success, non zero otherwise.

     SetTag(tag, tag2)             Sets the "Tag" field for the entry,
                                   returns 1 on success, 0 on failure.

     SetName(tag, name)            Sets the "Name" field for the entry,
                                   returns 1 on success, 0 on failure.

     SetPassword(tag, password)    Sets the "Password" field for the entry,
                                   returns 1 on success, 0 on failure.

     SetPhone(tag, phone)          Sets the "Number" field for the entry,
                                   returns 1 on success, 0 on failure.

     SetScript(tag, script)        Sets the "Script" field for the entry,
                                   returns 1 on success, 0 on failure.

     StrEval(strg)                 Returns the value of its argument.
                                   This function appears as an aid to the
                                   REXX language script writer.

     SetXlatTable(fname, ioflag)   Reads a new character translation table
                                   from the indicated file.  If ioflag
                                   is non-zero, it will initialize the
                                   OUTPUT translation, if it is zero it
                                   will initialize INPUT translation.  If
                                   fname is "" the corresponding
                                   character translation is turned OFF.

     SetVT100BkSp(flag)            Sets the VT100 backspace mode (see INI
                                   variable VT100Backspace) to ON or OFF
                                   depending on the Boolean "flag".  Returns
                                   the previous state of the VT100 backspace
                                   mode.



  * File Transfer Progress Display revised and cleaned up for CIS B+
     The somewhat confusing "Bytes Transferred" and "Time Remaining"
     statistics for CIS B+ transfers have been reworked and cleaned up.
     TE/2 will now "ring the bell" after a CIS B+ file transfer if
     you have alarms enabled also!

[ RETURN TO DIRECTORY ]