home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / pub / trs80model4 / m4mitdoc.txt < prev    next >
Text File  |  2020-01-01  |  95KB  |  2,179 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                        _T_R_S_-_8_0 _M_o_d_e_l _4_(_p_) _K_E_R_M_I_T_:   _V_e_r_s_i_o_n _5_._2
  8.  
  9.                           _F_o_r _U_s_e _U_n_d_e_r _T_R_S_D_O_S _6_._1 _o_r _L_a_t_e_r
  10.  
  11.  
  12.  
  13.              _P_r_o_g_r_a_m _b_y:        Gregg Wonderly Oklahoma State University,
  14.                                 (gregg@okstate) rewritten from the origi-
  15.                                 nal Model-4 KERMIT which was derived from
  16.                                 the TRS-80 KERMIT done by Stan Barber,
  17.                                 Rice University who modified the CP/M-80
  18.                                 version by Bill Catchings and others.
  19.  
  20.              _L_a_n_g_u_a_g_e:          Z80 Assembler, compatible with M80 and
  21.                                 EDAS from Misosys
  22.  
  23.              _V_e_r_s_i_o_n:           5.2
  24.  
  25.              _D_a_t_e:              Wed Oct 22 10:17:07 CDT 1986
  26.  
  27.              _D_o_c_u_m_e_n_t_a_t_i_o_n _b_y:  Gregg Wonderly
  28.  
  29.  
  30.  
  31.              _1.  _S_u_m_m_a_r_y _o_f _T_R_S_D_O_S _6._1
  32.  
  33.  
  34.                   _T_R_S_D_O_S (The Radio Shack Disk Operating System) has a
  35.              large library of built in commands dealing with files,
  36.              directory maintenance, device I/O, etc.  Programs are also
  37.              used for some functions on some _T_R_S_D_O_S-based DOS's.  Model
  38.              4(p) KERMIT gives you access to all of the library commands
  39.              of _T_R_S_D_O_S versions 6.x via the LOCAL command.  Issue the
  40.              _L_I_B_R_A_R_Y command at _T_R_S_D_O_S _R_e_a_d_y to obtain a list.
  41.  
  42.                   _T_R_S_D_O_S file specifications can be represented as a
  43.              sequence of characters of the form
  44.  
  45.                   FILESPEC/EXT.PASSWORD:D
  46.  
  47.  
  48.              _F_I_L_E_S_P_E_C   is the filename up to eight characters.
  49.  
  50.              _E_X_T        is the file type, up to three characters.
  51.  
  52.              _P_A_S_S_W_O_R_D   is the password for that file, up to eight char-
  53.                         acters.
  54.  
  55.              _D          is a numerical drive specification (0-7).
  56.  
  57.                   File names, file types and passwords may contain
  58.              letters and numbers, but the first character in each must be
  59.              a letter.  No special characters or spaces are allowed.  All
  60.              fields are optional except the filespec.  Any field added
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                         - 2 -
  71.  
  72.  
  73.              must be preceded by its special delimiter '/' for file type,
  74.              '.' for passwords and ':' for drive specifications.  Upper
  75.              and lower case characters are equivalent.
  76.  
  77.              _2.  _T_R_S_D_O_S _C_o_m_m_a_n_d_s _o_f _I_n_t_e_r_e_s_t
  78.  
  79.  
  80.              _2._1.  _C_A_T _P_A_R_T_S_P_E_C:_D (_O_T_H_E_R _O_P_T_I_O_N_S)
  81.  
  82.                   This command is specific to _T_R_S_D_O_S version 6.2 and
  83.                   later.  It displays only the names of visible files on
  84.                   the drive specified, or all drives if no _p_a_r_t_s_p_e_c is
  85.                   given.  (_o_t_h_e_r _o_p_t_i_o_n_s) allows different formats and
  86.                   invisible as well as system files to be selected.  See
  87.                   the _T_R_S_D_O_S manual for specifics
  88.  
  89.              _2._2.  _D_I_R _P_A_R_T_S_P_E_C:_D (_O_T_H_E_R _O_P_T_I_O_N_S)
  90.  
  91.                   DIR is common to all version of TRSDOS.  Versions after
  92.                   6.1 replaced the DIR command with CAT, and changed the
  93.                   DIR command so that always produces a long listing.
  94.  
  95.              _2._3.  _F_R_E_E :_D
  96.  
  97.                   Gives statistics on disk usage.  If D is present, it
  98.                   indicates a drive number, and only the statistics for
  99.                   the specified disk will be shown.
  100.  
  101.              _2._4.  _R_E_M_O_V_E/_P_U_R_G_E _F_I_L_E_S_P_E_C (_P_A_R_A_M_E_T_E_R_S)
  102.  
  103.                   Remove the file(s) given by FILESPEC from the directory
  104.                   and frees the space allocated to the file for reassign-
  105.                   ment.  Purge allows PARTSPECs that specify groups of
  106.                   files.  With no PARAMETERS, PURGE prompts before delet-
  107.                   ing any file.  REMOVE requires a full filespec as the
  108.                   name of the file to remove.  REMOVE allows more than
  109.                   one filespec to be given on the command line.
  110.  
  111.              _2._5.  _L_I_S_T _F_I_L_E_S_P_E_C (_P_A_R_A_M_E_T_E_R_S)
  112.  
  113.                   Lists the file on the display.  Parameters are
  114.                   described in the _T_R_S_D_O_S manual in detail.  (_H_E_X) is
  115.                   sometimes useful to display the hexidecimal values of
  116.                   the characters in a file.
  117.  
  118.              _2._6.  _R_E_N_A_M_E _o_l_d_f_i_l_e _n_e_w_f_i_l_e
  119.  
  120.                   Changes the name of oldfile to newfile, provided that
  121.                   newfile is a unique file name on that disk.
  122.  
  123.              _3.  _C_o_p_y_i_n_g _D_i_s_k_s _a_n_d _F_i_l_e_s:
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                         - 3 -
  137.  
  138.  
  139.                   _3._1.  _C_O_P_Y _f_i_l_e_1 _f_i_l_e_2
  140.  
  141.                        Copies file1 and name the copy file2. If file2
  142.                        exists, it will be replaced.
  143.  
  144.                   _3._2.  _B_A_C_K_U_P :_D :_E
  145.  
  146.                        Makes a copy of the disk in drive D on the the
  147.                        disk in drive E.
  148.  
  149.                   _3._3.  _F_O_R_M_A_T :_D
  150.  
  151.                        Formats the disk in drive D.  The disk will be
  152.                        ready for any normal read or write operation fol-
  153.                        lowing successful completion of this operation.
  154.                        This operation must be performed before use of a
  155.                        blank disk. Reformatting a previously formatted
  156.                        disk will cause all previously stored information
  157.                        to be lost.
  158.  
  159.              _4.  _T_r_a_n_s_f_e_r_s _w_i_t_h_o_u_t _t_h_e _K_E_R_M_I_T _P_r_o_t_o_c_o_l
  160.  
  161.                   Model 4(p) KERMIT adds 2 logical devices to the already
  162.              resident devices.  These devices are used to access the com-
  163.              munications port.  These devices, *FI (File Input) and *FO
  164.              (File Output), can be used as the source, and destination of
  165.              a copy command, respectively.  They make use of the status
  166.              of the SET FLOW-CONTROL parameter, to send and receive data
  167.              using the communications port.  For instance, say you are
  168.              communicating with a computer that does not have KERMIT.
  169.              Say you also wish to transfer a file to this computer to do
  170.              some further processing.  The normal method involves start-
  171.              ing a program on the remote computer to collect the data
  172.              into a file on that system.  On a VAX/VMS system, you might
  173.              use the CREATE command to capture the file.  The following
  174.              _K_E_R_M_I_T commands will accomplish the transmition of a file in
  175.              this case.
  176.  
  177.                   OUTPUT CREATE MYPROG.DAT<CR>
  178.                   LOCAL COPY PROG/DAT *FO
  179.  
  180.              The KERMIT command, OUTPUT, will send the string "CREATE
  181.              MYPROG.DAT<CR>" to the host.  Let's say for now that this is
  182.              sufficient to cause all future characters sent to the host
  183.              to be placed into the file MYPROG.DAT on that system.  The
  184.              KERMIT command LOCAL is then used to invoke the _T_R_S_D_O_S
  185.              library command COPY.  COPY will copy the contents of the
  186.              file "PROG/DAT" to the *FO device.  The driver for this dev-
  187.              ice is part of the KERMIT program, and will take care of
  188.              transmitting the data out of the communications port to the
  189.              HOST.  If the HOST sends XOFF because DATA is arriving TOO
  190.              fast, then the XON/XOFF option to the _K_E_R_M_I_T command, SET
  191.              FLOW-CONTROL, will allow the transfer to pause while the
  192.              HOST catches up.  You may wish to collect the contents of a
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                         - 4 -
  203.  
  204.  
  205.              file that is on another computer.  If particular computer
  206.              does not have _K_E_R_M_I_T, you can use a series of commands simi-
  207.              lar to those listed below to retrieve the file.  It should
  208.              be noted that the _S_E_S_S_I_O_N-_L_O_G can also be used to trap the
  209.              contents of a file.  For that very reason, this is only one
  210.              of several possible ways to get a file from another computer
  211.              that does not have _K_E_R_M_I_T.
  212.  
  213.                   OUTPUT TYPE MYPROG.DAT<CR>
  214.                   INPUT TYPE MYPROG.DAT<CR><LF>
  215.                   LOCAL COPY *FI MYPROG/DAT:1
  216.  
  217.                   It may help to clarify the use of the _O_U_T_P_U_T command,
  218.              and the corresponding _I_N_P_U_T command.  If you use the _K_E_R_M_I_T
  219.              command _C_O_N_N_E_C_T to enter terminal mode, and then proceed to
  220.              tell the host to type out a file, it may start sending data
  221.              before you can escape back, and type the _C_O_P_Y command.  This
  222.              means that some of the data would be lost.  With _F_L_O_W-
  223.              _C_O_N_T_R_O_L set to _X_O_N/_X_O_F_F, and the remote host recognizing
  224.              this fact, the previous commands would not allow any data to
  225.              be lost.  The use of _I_N_P_U_T is only to remove the characters
  226.              ECHOed by the host from the input buffer (The TEXT of the
  227.              command "TYPE MYPROG.DAT").  If you are communicating with a
  228.              half-duplex system in which _M_o_d_e_l (_4)_p _K_E_R_M_I_T is echoing the
  229.              characters typed on the keyboard, then the _I_N_P_U_T command
  230.              need not be used.
  231.  
  232.  
  233.  
  234.  
  235.              _5.  _C_o_n_t_r_o_l _o_f _F_i_l_e _T_r_a_n_s_f_e_r_s _U_s_i_n_g _t_h_e _K_E_R_M_I_T _P_r_o_t_o_c_o_l
  236.  
  237.  
  238.                   During the transfer of a file using either _S_E_N_D, or _G_E_T
  239.              and possibly during the use of the _R_E_M_O_T_E command, protocol
  240.              operations may need to be aborted, or altered.  Several key
  241.              strokes allow the user to control the protocol operations.
  242.              These are listed below, and are listed on the screen after
  243.              issuing either the _S_E_N_D or _G_E_T commands.  The operation of
  244.              the _R_E_M_O_T_E command is purposefully silent.  The key strokes
  245.              are available to the user during _R_E_M_O_T_E commands, for added
  246.              flexibility.  This allows the user to cancel commands like
  247.              _R_E_M_O_T_E _T_Y_P_E that may otherwise cause large amounts of data
  248.              to be displayed for an extended amount of time.  The valid
  249.              key strokes are:
  250.  
  251.  
  252.              _C_o_n_t_r_o_l-_F      During data transfers using the _K_E_R_M_I_T proto-
  253.                             col, _C_o_n_t_r_o_l-_F will terminate the current
  254.                             transaction.  If there are more files to
  255.                             transfer, the next transaction will be
  256.                             started.  _M_o_d_e_l _4(_p) _K_E_R_M_I_T will send a sig-
  257.                             nal to the remote _K_E_R_M_I_T telling it to stop
  258.                             sending packets for the current transaction.
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                         - 5 -
  269.  
  270.  
  271.                             If the remote _K_E_R_M_I_T understands this signal
  272.                             (not all implementations of _K_E_R_M_I_T do), it
  273.                             will comply, otherwise the transaction will
  274.                             continue.
  275.  
  276.              _C_o_n_t_r_o_l-_B      Like  _C_o_n_t_r_o_l-_F, except that if a group of
  277.                             files is being processed this will stop the
  278.                             entire group.  If only a single file is being
  279.                             _S_E_N_T or _R_E_C_E_I_V_E_D, _C_o_n_t_r_o_l-_B behaves exactly
  280.                             like _C_o_n_t_r_o_l-_F.
  281.  
  282.              _C_o_n_t_r_o_l-_C      Aborts the protocol immediately.  This should
  283.                             be a last resort to stopping a transmission
  284.                             as it will leave the remote _K_E_R_M_I_T in an unk-
  285.                             nown state.
  286.  
  287.              _C_o_n_t_r_o_l-_E      Aborts the protocol after sending an ERROR
  288.                             packet to the remote _K_E_R_M_I_T.
  289.  
  290.              _C_o_n_t_r_o_l-_D      Toggles _D_E_B_U_G mode _O_N and _O_F_F.  This is help-
  291.                             ful when trying to figure out why a particu-
  292.                             lar host is unable to talk to _M_o_d_e_l _4(_p) _K_E_R_-
  293.                             _M_I_T.
  294.  
  295.              <_E_N_T_E_R>        If you type <_E_N_T_E_R>, _M_o_d_e_l _4(_p) _K_E_R_M_I_T will
  296.                             resend the current packet.
  297.  
  298.              _C_o_n_t_r_o_l-_H      Displays the list of _K_E_Y_S that you may press
  299.                             during a transfer.  I.E.  the keys described
  300.                             above.  This is the same message that is
  301.                             printed when a SEND, GET, or RECEIVE command
  302.                             is issued.
  303.  
  304.  
  305.  
  306.  
  307.              _6.  _M_o_d_e_l _4(_p) _K_E_R_M_I_T _C_o_m_m_a_n_d_s
  308.  
  309.  
  310.                   _M_o_d_e_l _4(_p) _K_E_R_M_I_T uses a subset of the the _D_E_C_S_Y_S_T_E_M-_2_0
  311.              keyword style command language.  Each keyword may be abbre-
  312.              viated to its minimum unique length.  "?" may be typed to
  313.              request a list of the available options for the current
  314.              field at any point in a command.  If insufficient characters
  315.              have been typed to identify the current field uniquely,
  316.              _M_o_d_e_l _4(_p) _K_E_R_M_I_T will display all available choices, and
  317.              then reprompt to allow you to continue from that point.  If
  318.              there are sufficient characters, then only a single choice
  319.              will be displayed.  The following list of commands are
  320.              available when using _M_o_d_e_l _4(_p) _K_E_R_M_I_T.
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                         - 6 -
  335.  
  336.  
  337.              _6._1.  _B_Y_E
  338.  
  339.                   When talking to a remote _K_E_R_M_I_T Server, this command
  340.                   should shut down a remote server and terminate the
  341.                   login that you had there.  _M_o_d_e_l _4(_p) _K_E_R_M_I_T will then
  342.                   exit to _T_R_S_D_O_S _R_e_a_d_y.
  343.  
  344.                        NOTE: Due to some deviations from the specifica-
  345.                        tion, some systems do not perform exactly in this
  346.                        manner.  You should check the documentation of the
  347.                        _K_E_R_M_I_T on the remote system in order to obtain the
  348.                        operation performed by this command.
  349.  
  350.              _6._2.  _C_L_E_A_R
  351.  
  352.  
  353.                   _6._2._1.  _I_N_P_U_T-_P_O_R_T
  354.  
  355.                        _M_o_d_e_l _4(_p) _K_E_R_M_I_T uses the "Interrupt on received
  356.                        character available" feature of the COM/DVR com-
  357.                        munications line driver.  This driver is part of
  358.                        the standard software on your system diskette.
  359.                        All characters received via the interrupt vector,
  360.                        are placed in a 256 byte circular buffer.  This
  361.                        command clears all characters currently buffered.
  362.                        This is used most commonly with the INPUT, OUTPUT,
  363.                        PULSE, and PAUSE commands, none of which expli-
  364.                        citly clear the input buffer.  YOU MUST DO THIS
  365.                        YOURSELF.  The execution of this command will _n_o_t
  366.                        send an _X_O_N character to the communications port.
  367.                        This is also left up to you to do.
  368.  
  369.                   _6._2._2.  _S_C_R_E_E_N
  370.  
  371.                        As you would expect, this command clears the
  372.                        screen.
  373.  
  374.              _6._3.  _C_L_O_S_E
  375.  
  376.  
  377.                   _6._3._1.  _D_E_B_U_G-_L_O_G
  378.  
  379.                        Closes the file previously opened with the LOG
  380.                        DEBUG-LOG command.  If there is not a debug log-
  381.                        file active, then a message is printed telling you
  382.                        so.
  383.  
  384.                   _6._3._2.  _S_E_S_S_I_O_N-_L_O_G
  385.  
  386.                        Closes the file previously opened with the LOG
  387.                        SESSION-LOG command.  If no file is open, you will
  388.                        be advised so.
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                         - 7 -
  401.  
  402.  
  403.                   _6._3._3.  _T_R_A_N_S_A_C_T_I_O_N-_L_O_G
  404.  
  405.                        Closes the file previously opened with the LOG
  406.                        TRANSACTION-LOG command.  As with the other log-
  407.                        files, if a file is not currently open, then a
  408.                        message to that affect is printed.
  409.  
  410.                   _6._4.  _C_O_N_N_E_C_T (_c_a_n _b_e _a_b_b_r_e_v_i_a_t_e_d _t_o '_C')
  411.  
  412.                        Establish a "virtual terminal" connection to any
  413.                        host that may be connected to the serial port,
  414.                        i.e. pass all typed characters to the serial port
  415.                        and display all input from the serial port on the
  416.                        screen.  A two character sequence of characters is
  417.                        required to return the user to the _K_E_R_M_I_T program.
  418.                        An escape character must be typed followed by a
  419.                        'c' (Case is _n_o_t significant).  The default
  420.                        <ESCAPE> character is entered by pressing the
  421.                        <SHIFT> key, and then and <CLEAR> key, while hold-
  422.                        ing the <SHIFT> key down.  Pressing '?' after the
  423.                        <ESCAPE> character will display a list of valid
  424.                        keystrokes that do helpful things during connect
  425.                        mode.  The first time that you issue the _C_O_N_N_E_C_T
  426.                        command, a message will be displayed telling you
  427.                        what the <ESCAPE> character is.  The <ESCAPE>
  428.                        character should generally be an uncommonly-used
  429.                        control character.  The following characters are
  430.                        valid following the <_E_S_C_A_P_E> character, and gen-
  431.                        erate specific actions.  The actions are described
  432.                        beside the character.
  433.  
  434.                             _C    Return to _M_o_d_e_l _4(_p) _K_E_R_M_I_T command
  435.                                  level.  The contents of the screen and
  436.                                  the cursor location will be saved prior
  437.                                  to displaying the _K_E_R_M_I_T screen.  When
  438.                                  you reconnect to the _H_O_S_T using the _K_E_R_-
  439.                                  _M_I_T command, _C_O_N_N_E_C_T, the old screen
  440.                                  will be restored.
  441.  
  442.                             _?    List available single-character com-
  443.                                  mands, I.E. These commands.
  444.  
  445.                             _B    Send a TRUE modem break.
  446.  
  447.                             _R    Resume logging if file open, and
  448.                                  <ESCAPE>Q was used previously to turn
  449.                                  logging off.  See the _L_O_G command for
  450.                                  more information.
  451.  
  452.                             _Q    Quit logging to file but leave it open.
  453.  
  454.                             _0 (_z_e_r_o)Send a null (0) character out the
  455.                                  communications port.
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                         - 8 -
  467.  
  468.  
  469.                             <_E_S_C_A_P_E>Send the <_E_S_C_A_P_E> character itself to
  470.                                  the remote host.
  471.  
  472.                   _6._5.  _D_I_R _p_a_r_t_s_p_e_c
  473.  
  474.                        Produces a listing of the directory for
  475.                        "partspec".  If partspec is not given, than the
  476.                        directory will be displayed for the _D_E_F_A_U_L_T-_D_I_S_K
  477.                        drive as established by _S_E_T _D_E_F_A_U_L_T-_D_I_S_K.
  478.  
  479.                   _6._6.  _E_X_I_T
  480.  
  481.                        Exit _M_o_d_e_l _4(_p) _K_E_R_M_I_T, and return to _T_R_S_D_O_S.
  482.                        Before the _K_E_R_M_I_T program is terminated, all open
  483.                        files will be closed.  This includes the LOGFILES
  484.                        used for SESSION, TRANSACTION, and DEBUG logging.
  485.                        The *FO, and *FI devices will also be removed.
  486.  
  487.                   _6._7.  _E_C_H_O
  488.  
  489.                        This command echoes text given as an argument to
  490.                        the screen.  It can used in take files to put mes-
  491.                        sages on the screen when TAKE-DISPLAY is OFF,
  492.                        although other uses are possible.
  493.  
  494.                   _6._8.  _F_I_N_I_S_H
  495.  
  496.                        Shuts down a remote server without logging it out.
  497.                        Leaves you at _M_o_d_e_l _4(_p) _K_E_R_M_I_T command level.  A
  498.                        subsequent _C_O_N_N_E_C_T command will reconnect you to
  499.                        the remote host.  The _r_e_m_o_t_e _K_E_R_M_I_T should return
  500.                        to the mode it was in prior to entering _S_E_R_V_E_R
  501.                        mode.
  502.  
  503.                   _6._9.  _G_E_T _f_i_l_e_s_p_e_c
  504.  
  505.                        Get allows you to retrieve files from a remote
  506.                        host.  Get works with either a _S_E_R_V_E_R or a _K_E_R_M_I_T
  507.                        that has initiated a _S_E_N_D command.  Filespec is a
  508.                        filename compatible with _t_h_a_t system.  When _M_o_d_e_l
  509.                        _4(_p) _K_E_R_M_I_T is talking to a _K_E_R_M_I_T Server, you may
  510.                        include a filespec in a form legal to the _H_O_S_T
  511.                        _K_E_R_M_I_T.
  512.  
  513.                   _6._1_0.  _I_N_P_U_T <_c_o_n_t_r_o_l _s_t_r_i_n_g>
  514.  
  515.                        INPUT provides one of 4 commands that provide an
  516.                        automatic logon facility.  INPUT allows you to
  517.                        watch for the occurrence of certain text strings
  518.                        that are made up characters arriving in the com-
  519.                        munications port.  This is useful in _T_A_K_E files
  520.                        that can automatically log you onto a certain sys-
  521.                        tem.
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                         - 9 -
  533.  
  534.  
  535.                             When _I_N_P_U_T in initiated, it begins matching
  536.                        characters in the input to those given in the con-
  537.                        trol string.  When an exact match is found as
  538.                        established by the _S_E_T _I_N_P_U_T options then _I_N_P_U_T
  539.                        will return to the _K_E_R_M_I_T command level.  If _T_A_K_E
  540.                        is active than the next line of the _T_A_K_E file will
  541.                        be read.  The Control string may be comprised of
  542.                        any printable _A_S_C_I_I characters.  _S_P_A_C_E must not
  543.                        occur as either the beginning or end of the
  544.                        string.
  545.  
  546.                             _A_S_C_I_I character codes 0-32 are denoted as
  547.                        <_N_U_L> - <_S_P_A>, and <_D_E_L> represents character 127.
  548.                        The string <_D_L_Y*> signifies an immediate delay.
  549.                        The * should be replaced by a character.  The sig-
  550.                        nificance of the character is this.  Decimal 48 is
  551.                        subtracted from the _A_S_C_I_I value of the character
  552.                        to obtain the number of seconds to delay.  Thus,
  553.                        you can obtain delays 1-9 seconds, with no trick-
  554.                        ery.  Delays longer than that will have to be cal-
  555.                        culated since the formula (ASCII code - 48
  556.                        decimal) is used to calculate the binary value to
  557.                        use as a counter.  The "*" should be replaced with
  558.                        the single proper ASCII character.
  559.  
  560.                             If you use <_D_L_Y*> in a _P_U_L_S_E command, it
  561.                        should be noted that it will only be done once.
  562.                        An alternative format for control characters is to
  563.                        explicitly type a carat ("^") preceding a charac-
  564.                        ter.  The result of subtracting 64 from the _A_S_C_I_I
  565.                        code for the character following will then be
  566.                        used.  Since <, >, and ^ now have special mean-
  567.                        ings, you will need some way to specify them
  568.                        explicitly.  To do this you should precede them
  569.                        with a backslash, "\", character.  In this case,
  570.                        backslash itself now must be represented as "\\".
  571.                        Finally, any and all characters can be represented
  572.                        using a string of the form \nnn where nnn is 1 or
  573.                        more octal digits.  nnn is evaluated, and the
  574.                        resulting value will be the ASCII value of the
  575.                        character.  Some examples might be:
  576.  
  577.                             INPUT login:<SPA>
  578.  
  579.                                  Find the string "login:" followed by a
  580.                                  space.
  581.  
  582.                             INPUT <SPA>^M^Jenter \\userid\\:<CR><LF>
  583.  
  584.                                  Find the string with a space followed by
  585.                                  a carriage return followed by a line
  586.                                  feed followed by the text "enter
  587.                                  \userid\:" followed by carriage return
  588.                                  and another linefeed.
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                         - 10 -
  599.  
  600.  
  601.                             INPUT USERNAME\77\40
  602.  
  603.                                  Find the string "USERNAME? ".  Note that
  604.                                  \77 is the _O_N_L_Y way that a question mark
  605.                                  can be specified since a question mark
  606.                                  is recognized by the command stream as a
  607.                                  request for help.
  608.  
  609.                        While input is waiting for a match, you may type
  610.                        characters on the keyboard to be transmitted.
  611.                        _B_R_E_A_K will abort the _I_N_P_U_T command and if _T_A_K_E is
  612.                        active, close the take file.  _E_S_C_A_P_E will abort
  613.                        the INPUT command, but will just skip to the next
  614.                        line in a _T_A_K_E file, if _T_A_K_E is active.  These
  615.                        same 2 actions apply to the _P_U_L_S_E command while no
  616.                        input has been received.
  617.  
  618.                   _6._1_1.  _K_I_L_L _w_i_l_d_s_p_e_c
  619.  
  620.                        This command performs the task of deleting one or
  621.                        more files from disk.  _W_i_l_d_s_p_e_c is a wild card
  622.                        filespec that will be evaluated.  All files that
  623.                        match the wildspec will be removed.  A _w_i_l_d_s_p_e_c
  624.                        may contain any characters valid is a TRSDOS
  625.                        filespec, plus zero or more occurances of the
  626.                        characters '*', and '$'.  These two characters
  627.                        have special meanings.
  628.  
  629.                             When comparing the _w_i_l_d_s_p_e_c with the name of
  630.                        a file, a '*' matches zero or more of the charac-
  631.                        ters in the filename.  E.g.  If a file FOO/ASM is
  632.                        compared with '*/ASM', then it would match,
  633.                        because '*' can be thought of as 'FOO', and then
  634.                        '/ASM' is matched literally.  M4*/ASM matches
  635.                        M4MIT/ASM, M4XFER/ASM, M4SEND/ASM, and any other
  636.                        filename that begins with M4, and ends with /ASM.
  637.                        The '$' character matches any single character.
  638.                        This means that FILE$/DOC matches the filename
  639.                        FILE1/DOC, but not FILE1A/DOC.
  640.  
  641.                             A drivespec may be appended to the _w_i_l_d_s_p_e_c
  642.                        to force the search for matches to be restricted
  643.                        to a single drive.  An example might be M4*/ASM:1,
  644.                        which limits the matches to those file on drive 1.
  645.  
  646.                             Normally, only visible, nonsystem files are
  647.                        considered in the search.  However, the inclusion
  648.                        of a parameter list containing either, or both of
  649.                        the keywords, INVIS or SYSTEM, will include
  650.                        invisible and/or system files.  An example would
  651.                        be:
  652.                             KILL (I,S) config/sys (I) backup/cmd
  653.                        This example would cause _M_o_d_e_l _4(_p) _K_E_R_M_I_T to
  654.                        attempt to remove the two files listed.  Note that
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                         - 11 -
  665.  
  666.  
  667.                        as this example shows, you must specify the param-
  668.                        eters with each _w_i_l_d_s_p_e_c that you wish to apply
  669.                        them to, as they are nullified each time that a
  670.                        new _w_i_l_d_s_p_e_c is evaluated.  Other examples are
  671.                        given in the description of the _S_E_N_D command.
  672.  
  673.                   _6._1_2.  _L_O_C_A_L <_T_R_S_D_O_S _l_i_b_r_a_r_y _c_o_m_m_a_n_d>  (_C_a_n _b_e
  674.                   _a_b_b_r_e_i_v_i_a_t_e_d _t_o _L)
  675.  
  676.                        This command allows you to issue commands from
  677.                        within _M_o_d_e_l _4(_p) _K_E_R_M_I_T.  You must remember where
  678.                        Model 4(p) KERMIT resides in memory, to assure
  679.                        that you do not overwrite it.  KERMIT loads at
  680.                        6000H, and continues up through LOW$.  From within
  681.                        KERMIT, you can issue the command:
  682.  
  683.                             LOCAL MEMORY
  684.  
  685.                        to see where KERMIT ends.  The value of LOW$ tells
  686.                        you this information.  KERMIT was placed at 6000H
  687.                        to allow most of the TRSDOS library programs and
  688.                        commands to work in conjunction with KERMIT.  Some
  689.                        commands extend above 3000H, and must have memory
  690.                        available up to approximately 5300H.  The COPY
  691.                        command creates a problem because it apparently
  692.                        tries to examine HIGH$ to see if there is space to
  693.                        load a large portion of the source file into
  694.                        memory before writing it to the destination.  This
  695.                        creates problems because KERMIT moves LOW$ up so
  696.                        that HIGH$ has a value that will allow additional
  697.                        high memory module to be loaded.  It is suggested
  698.                        that you not use COPY while KERMIT is running, as
  699.                        the machine may crash when COPY completes.  This
  700.                        is because it will have copied data into the KER-
  701.                        MIT memory space.
  702.  
  703.                   _6._1_3.  _L_O_G
  704.  
  705.                        _6._1_3._1.  _D_E_B_U_G-_L_O_G
  706.  
  707.                             The debug log can be used to debug transfer
  708.                             problems that sometimes arrise when talking
  709.                             to a newly written KERMIT.  The information
  710.                             written to the DEBUG-LOG is nearly identical
  711.                             to that which is displayed on the screen when
  712.                             the command, SET DEBUG ON, is issued, or the
  713.                             CTRL-D key is pressed during a transfer.
  714.                             This file can be closed explicitly with the
  715.                             _C_L_O_S_E _D_E_B_U_G-_L_O_G command.  The EXIT command
  716.                             also causes an implicit closing of this file.
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                         - 12 -
  731.  
  732.  
  733.                        _6._1_3._2.  _S_E_S_S_I_O_N-_L_O_G
  734.  
  735.                             When CONNECTed to a foreign host as a termi-
  736.                             nal, this command establishes a log of the
  737.                             terminal session in the file specified.  This
  738.                             function depends, to some extent, on the
  739.                             remote host's ability to do _X_O_N/_X_O_F_F flow
  740.                             control.  Without _F_L_O_W-_C_O_N_T_R_O_L, data may be
  741.                             lost when _K_E_R_M_I_T writes to the file.  The log
  742.                             file is closed by explicitly typing the _K_E_R_-
  743.                             _M_I_T command _C_L_O_S_E _S_E_S_S_I_O_N-_L_O_G or implicitly
  744.                             when _K_E_R_M_I_T is exited via the _E_X_I_T command.
  745.                             It will also be closed if an I/O error occurs
  746.                             in file processing for the file involved.
  747.                             _L_O_G_G_I_N_G may be toggled on and off during _C_O_N_-
  748.                             _N_E_C_T using the sequence of keys described in
  749.                             the _C_O_N_N_E_C_T description.
  750.  
  751.                        _6._1_3._3.  _T_R_A_N_S_A_C_T_I_O_N-_L_O_G
  752.  
  753.                             The transaction log is used to keep a record
  754.                             of the files transfered during a KERMIT ses-
  755.                             sion.  The information includes whether or
  756.                             not the transaction was SENDING, or RECEIV-
  757.                             ING, the name of the file transfered, and the
  758.                             number of bytes involved in the transfer.
  759.  
  760.                   _6._1_4.  _L_O_G_O_U_T
  761.  
  762.                        Logout tells a _r_e_m_o_t_e _k_e_r_m_i_t _s_e_r_v_e_r to terminate
  763.                        itself, as well as your login session.  When this
  764.                        is completed, you are left at _M_o_d_e_l _4(_p) _K_E_R_M_I_T
  765.                        command level.
  766.  
  767.                   _6._1_5.  _O_U_T_P_U_T <_c_o_n_t_r_o_l _s_t_r_i_n_g>
  768.  
  769.                        This is the other side of the _I_N_P_U_T command.  Con-
  770.                        trol string follows the same conventions as in
  771.                        _I_N_P_U_T, and the resulting character(s) will be out-
  772.                        put to the communications port immediately.  It
  773.                        should be noted that _N_O characters other than what
  774.                        you specify are transmitted.  In other words if
  775.                        you want to simulate typing some string, followed
  776.                        by pressing <_E_N_T_E_R>, then you will have to use a
  777.                        command similar to:
  778.  
  779.                             OUTPUT mypassword<CR>
  780.  
  781.  
  782.                        The <_C_R> will explicitly send the _A_S_C_I_I character
  783.                        13 to the communications port.
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                         - 13 -
  797.  
  798.  
  799.                   _6._1_6.  _P_A_U_S_E <_n_u_m_b_e_r _o_f _s_e_c_o_n_d_s>
  800.  
  801.                        This command is usually used in conjunction with
  802.                        _I_N_P_U_T, _O_U_T_P_U_T, and _P_U_L_S_E as a means of syncroniz-
  803.                        ing _M_o_d_e_l _4(_p) _K_E_R_M_I_T to a remote host.  A delay
  804.                        of the specified number of seconds will be gen-
  805.                        erated based on the accuracy of the 60HZ inter-
  806.                        rupt.  No means has been made for aborting the
  807.                        delay.  The maximum delay is 65536 seconds by
  808.                        specifying 0 as the number.
  809.  
  810.                   _6._1_7.  _P_U_L_S_E <_c_o_n_t_r_o_l _s_t_r_i_n_g>
  811.  
  812.                        This command is an extension/combination of _I_N_P_U_T
  813.                        and _O_U_T_P_U_T.  It allows you to transmit one or more
  814.                        characters repeatedly until a character appears in
  815.                        the input port.  The use of this command is valu-
  816.                        able when logging onto systems that don't always
  817.                        respond immediately after the reception of some
  818.                        control character(s).  For instance, you might
  819.                        (Now that all of the functions of this nature have
  820.                        been described) use the following commands as part
  821.                        of a logon sequence to log onto a computer system.
  822.  
  823.                             SET INPUT CASE-IGNORE ON
  824.                             SET INPUT DISPLAY ON
  825.                             SET OUTPUT HOST-ECHO ON
  826.                             SET OUTPUT DISPLAY ON
  827.                             CLEAR INPUT-PORT
  828.                             PULSE ^T<CR>
  829.                             INPUT <CR><LF>XYZ:
  830.                             PAUSE 2
  831.                             CLEAR INPUT-PORT
  832.                             PULSE <CR>
  833.                             INPUT Username:<SPA>
  834.                             OUTPUT joeblow<CR>
  835.                             INPUT <CR><LF>Terminal type:
  836.                             OUTPUT h19<CR>
  837.                             SET KEY 8 <DEL>
  838.                             SET KEY 128 <ETX>
  839.  
  840.                        After you study this awhile, it should make sense.
  841.                        If these commands are placed into a _T_A_K_E file,
  842.                        then you could use a _C_O_N_N_E_C_T command after the
  843.                        last command, to connect immediately to the host.
  844.                        If this is done, then _o_n_l_y after you escape back
  845.                        to _M_o_d_e_l _4(_p) _K_E_R_M_I_T, will the _T_A_K_E file finally
  846.                        be closed.
  847.  
  848.                   _6._1_8.  _R_E_C_E_I_V_E <_f_i_l_e_s_p_e_c>
  849.                        This command is synonomous with the GET command.
  850.                        It may be abbreviated to the single character 'R',
  851.                        as in:
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                         - 14 -
  863.  
  864.  
  865.                             R *.asm
  866.  
  867.  
  868.                   _6._1_9.  _R_E_M_O_T_E <_c_o_m_m_a_n_d>
  869.  
  870.                        _R_e_m_o_t_e commands are not supported in totality by
  871.                        all _s_e_r_v_e_r_s.  If a _s_e_r_v_e_r supports remote com-
  872.                        mands, then _r_e_m_o_t_e _h_e_l_p should display all of the
  873.                        commands available to the _r_e_m_o_t_e user of the
  874.                        server.  Below are descriptions of the _r_e_m_o_t_e com-
  875.                        mands that _M_o_d_e_l _4(_p) _K_E_R_M_I_T knows how to send to
  876.                        a _r_e_m_o_t_e _s_e_r_v_e_r.  The arguments to most commands
  877.                        are dependent on the _r_e_m_o_t_e system.  You should be
  878.                        familiar with any system before using the _r_e_m_o_t_e
  879.                        _s_e_r_v_e_r commands available from that server.  Usu-
  880.                        ally only a small number of these commands are
  881.                        supported since some require abilities that some
  882.                        operating systems just don't have.
  883.  
  884.  
  885.                        _6._1_9._1.  _C_L_O_S_E-_L_O_G
  886.  
  887.                             Close a remote _L_O_G previously opened via the
  888.                             command _R_E_M_O_T_E _S_T_A_R_T-_L_O_G.
  889.  
  890.                        _6._1_9._2.  _C_O_P_Y
  891.  
  892.                             Copy one file to another.
  893.  
  894.                        _6._1_9._3.  _C_W_D <_d_i_r_e_c_t_o_r_y _p_a_t_h>
  895.  
  896.                             If a particular server's operating system
  897.                             supports the concept of separate directories,
  898.                             then this command will allow you to change to
  899.                             a different directory.
  900.  
  901.                        _6._1_9._4.  _D_E_L_E_T_E
  902.  
  903.                             Deletes file(s) from the _r_e_m_o_t_e system.  Any
  904.                             arguments will probably be file names in the
  905.                             format of the _r_e_m_o_t_e system.
  906.  
  907.                        _6._1_9._5.  _D_I_R
  908.  
  909.                             Display a list of files on the _r_e_m_o_t_e system.
  910.  
  911.                        _6._1_9._6.  _D_I_S_K
  912.  
  913.                             Display information about disk utilization on
  914.                             the _r_e_m_o_t_e system.
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                         - 15 -
  929.  
  930.  
  931.                        _6._1_9._7.  _H_E_L_P
  932.  
  933.                             Get information about _r_e_m_o_t_e capabilities on
  934.                             the _r_e_m_o_t_e system.
  935.  
  936.                        _6._1_9._8.  _H_O_S_T
  937.  
  938.                             Execute a command on the _r_e_m_o_t_e system.
  939.  
  940.                        _6._1_9._9.  _K_E_R_M_I_T
  941.  
  942.                             Execute a _K_E_R_M_I_T command on the _r_e_m_o_t_e sys-
  943.                             tem.  This command should accept a normal
  944.                             _K_E_R_M_I_T command as an argument.  The command,
  945.                             if valid, will then be executed by the remote
  946.                             _K_E_R_M_I_T server.
  947.  
  948.                        _6._1_9._1_0.  _L_O_G_I_N
  949.  
  950.                             Create a login entity on the _r_e_m_o_t_e system.
  951.                             This may be incorporated into a dedicated
  952.                             server.
  953.  
  954.                        _6._1_9._1_1.  _M_E_S_S_A_G_E
  955.  
  956.                             Send a message to a user on the _r_e_m_o_t_e sys-
  957.                             tem.
  958.  
  959.                        _6._1_9._1_2.  _P_R_O_G_R_A_M
  960.  
  961.                             Feed command input to a command executing on
  962.                             the remote system, or control the execution
  963.                             of a program.
  964.  
  965.                        _6._1_9._1_3.  _Q_U_E_R_Y-_V_A_R_I_A_B_L_E
  966.  
  967.                             Get the value of a variable maintained on the
  968.                             _r_e_m_o_t_e system.
  969.  
  970.                        _6._1_9._1_4.  _R_E_N_A_M_E
  971.  
  972.                             Change the name of a file on the _r_e_m_o_t_e sys-
  973.                             tem.
  974.  
  975.                        _6._1_9._1_5.  _S_E_N_D-_L_O_G
  976.  
  977.                             Tells the server to close any open log, and
  978.                             then transfer it to the user.
  979.  
  980.                        _6._1_9._1_6.  _S_E_R_V_E_R-_S_T_A_T_U_S
  981.  
  982.                             Retrieve certain information about the status
  983.                             of a REMOTE server.  The information returned
  984.                             is dependent on the REMOTE system.
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                         - 16 -
  995.  
  996.  
  997.                        _6._1_9._1_7.  _S_E_T-_V_A_R_I_A_B_L_E
  998.  
  999.                             Set the value of a variable on the _r_e_m_o_t_e
  1000.                             system.
  1001.  
  1002.                        _6._1_9._1_8.  _S_T_A_R_T-_L_O_G
  1003.  
  1004.                             Start a transaction log on the _r_e_m_o_t_e system.
  1005.  
  1006.                        _6._1_9._1_9.  _S_T_O_P-_L_O_G
  1007.  
  1008.                             Stops logging to the log file started by the
  1009.                             _R_E_M_O_T_E _S_T_A_R_T-_L_O_G command.  The file is not
  1010.                             closed.  Logging may be started again by
  1011.                             using the the command, _R_E_M_O_T_E _S_T_A_R_T-_L_O_G.
  1012.  
  1013.                        _6._1_9._2_0.  _T_Y_P_E
  1014.  
  1015.                             Display the contents of the file/files given
  1016.                             as arguments.  The _r_e_m_o_t_e server should use
  1017.                             the _K_E_R_M_I_T protocol to send the contents of
  1018.                             the specified file/files to _M_o_d_e_l _4(_p) _K_E_R_-
  1019.                             _M_I_T.  The file contents will be displayed on
  1020.                             the screen using the *SO device.
  1021.  
  1022.                        _6._1_9._2_1.  _W_H_O
  1023.  
  1024.                             Display a list of users on the _r_e_m_o_t_e system.
  1025.  
  1026.                   _6._2_0.  _S_E_N_D <_w_i_l_d_s_p_e_c>        (_M_a_y _b_e _a_b_b_r_e_v_i_a_t_e_d _t_o
  1027.                   '_S');
  1028.  
  1029.                        File specifications may contain wild card charac-
  1030.                        ters.  The recognized wild card characters are '*'
  1031.                        and '$'.  '*' means zero or more of any character.
  1032.                        '$' means exactly one of any character.  There are
  1033.                        a lot of specifics associated with wild carding,
  1034.                        and search order through the drives.
  1035.  
  1036.                             When files by the same name exist on dif-
  1037.                        ferent drives, a wild card match of one will also
  1038.                        match all other occurances.  e.g. if drive 0 con-
  1039.                        tains the file report/dat, and report.dat also
  1040.                        exist on drive 1, then the command other varia-
  1041.                        tions can be used to send only one of the 2 files.
  1042.                        'SEND */dat:1' will only match files on drive 1.
  1043.                        Another alternative would be
  1044.  
  1045.                             Case is NOT significant, so both REPORT/DAT
  1046.                        and report/dat are identical.  so "*/*" is the
  1047.                        same as "*" for all file names with an extension.
  1048.                        "*/*", however, does not match names of the form
  1049.                        "data", "fred", "file", "temp", or others without
  1050.                        extensions.  Other examples are given in the
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                         - 17 -
  1061.  
  1062.  
  1063.                        description of the _K_I_L_L command.
  1064.  
  1065.                   _6._2_1.  _S_E_T <_p_a_r_a_m_e_t_e_r [_v_a_l_u_e(_s)...]>
  1066.  
  1067.                        Set the specified parameter to the specified
  1068.                        value.  Possible settings:
  1069.  
  1070.  
  1071.                        _6._2_1._1.  _B_E_L_L _O_N (_o_r _O_F_F)
  1072.  
  1073.                             When _D_U_M_B terminal emulation is in effect, a
  1074.                             simple noise generator is used to produce a
  1075.                             tone like a bell each time the _B_E_L_L character
  1076.                             is received.  If you don't like it, than use
  1077.                             _S_E_T _B_E_L_L _O_F_F to disable it.
  1078.  
  1079.                        _6._2_1._2.  _B_L_O_C_K-_C_H_E_C_K-_T_Y_P_E
  1080.  
  1081.                             The options are:
  1082.  
  1083.                             _6._2_1._2._1.  _1 (_c_h_a_r_a_c_t_e_r _c_h_e_c_k_s_u_m)
  1084.  
  1085.                                  Normal, default, standard 6-bit check-
  1086.                                  sum.
  1087.  
  1088.                             _6._2_1._2._2.  _2 (_c_h_a_r_a_c_t_e_r _c_h_e_c_k_s_u_m)
  1089.  
  1090.                                  A 12-bit checksum encoded as two charac-
  1091.                                  ters.
  1092.  
  1093.                             _6._2_1._2._3.  _3 (_c_h_a_r_a_c_t_e_r _c_r_c-_c_c_i_t_t)
  1094.  
  1095.                                  A 16-bit CCITT-format Cyclic Redundancy
  1096.                                  Check,  encoded as 3 characters.
  1097.  
  1098.                             The 2 and 3 character options should only be
  1099.                             used under conditions of extreme line noise.
  1100.                             Many implementations of _K_E_R_M_I_T only support
  1101.                             the single character checksum.
  1102.  
  1103.                        _6._2_1._3.  _D_E_B_U_G_G_I_N_G _O_F_F (_o_r _O_N)
  1104.  
  1105.                             When transmitting or receiving packets, con-
  1106.                             trols whether the packets are displayed on
  1107.                             the local screen.
  1108.  
  1109.                        _6._2_1._4.  _D_E_F_A_U_L_T-_D_I_S_K <_d_r_i_v_e _n_u_m_b_e_r>
  1110.  
  1111.                             The default-drive value is used for received
  1112.                             files.  The file names created by _M_o_d_e_l _4(_p)
  1113.                             _K_E_R_M_I_T will have a ':' and the default drive
  1114.                             number affixed to the end so that they will
  1115.                             be forced to be saved on the selected drive.
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                                         - 18 -
  1127.  
  1128.  
  1129.                        _6._2_1._5.  _E_I_G_H_T-_B_I_T-_Q_U_O_T_I_N_G _O_N (_o_r _O_F_F)
  1130.  
  1131.                             This command enables or disables 8th bit
  1132.                             quoting.  This is useful when a full 8 bit
  1133.                             path is available for binary file transfers.
  1134.  
  1135.                        _6._2_1._6.  _E_M_U_L_A_T_I_O_N _N_O_N_E (_o_r _D_U_M_B)
  1136.  
  1137.                             When connected as a terminal to a foreign
  1138.                             host, _S_E_T _E_M_U_L_A_T_I_O_N controls whether the
  1139.                             Model 4 emulates no terminal, allowing the
  1140.                             use of a terminal filter, or whether a _D_U_M_B
  1141.                             terminal emulation is used.  No emulation is
  1142.                             the default.
  1143.  
  1144.                        _6._2_1._7.  _E_S_C_A_P_E
  1145.  
  1146.                             Change the escape character for virtual ter-
  1147.                             minal connections.  _M_o_d_e_l _4(_p) _K_E_R_M_I_T will
  1148.                             prompt you for the new escape character,
  1149.                             which you type in locally.
  1150.  
  1151.                        _6._2_1._8.  _F_I_L_E
  1152.  
  1153.                             _6._2_1._8._1.  _D_I_S_P_O_S_I_T_I_O_N _K_E_E_P (_o_r _D_I_S_C_A_R_D)
  1154.  
  1155.                                  When the transfer of a file is inter-
  1156.                                  rupted, this tells Model 4(p) KERMIT
  1157.                                  what to do if it receives only a partial
  1158.                                  file.  If FILE-DISPOSITION is DISCARD,
  1159.                                  then any partial file is removed.  Oth-
  1160.                                  erwise, the file is left as it is when a
  1161.                                  transfer is interrupted.
  1162.  
  1163.                             _6._2_1._8._2.  _T_Y_P_E (_A_S_C_I_I _o_r _B_I_N_A_R_Y)
  1164.  
  1165.                                  Tells _M_o_d_e_l _4(_p) _K_E_R_M_I_T how to deal with
  1166.                                  the file being sent/received. It is
  1167.                                  _I_M_P_O_R_T_A_N_T to tell KERMIT if the file is
  1168.                                  in _A_S_C_I_I when sending to a _N_O_N _M_o_d_e_l
  1169.                                  _4(_p) _K_E_R_M_I_T.  The action taken with this
  1170.                                  value is as follows.  If _A_S_C_I_I mode is
  1171.                                  set, then CR-LF pairs of characters are
  1172.                                  translated to CR on input, and CR is
  1173.                                  translated to CR-LF on output.  When
  1174.                                  binary mode is in effect, this transla-
  1175.                                  tion does not occur.
  1176.  
  1177.                        _6._2_1._9.  _F_L_O_W-_C_O_N_T_R_O_L _X_O_N/_X_O_F_F (_o_r _N_O_N_E)
  1178.  
  1179.                             When this feature is set to _X_O_N/_X_O_F_F (the
  1180.                             default), _M_o_d_e_l _4(_p) _K_E_R_M_I_T will try its best
  1181.                             to obey and use _X_O_N characters and _X_O_F_F char-
  1182.                             acters for all transmitions through the
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                                         - 19 -
  1193.  
  1194.  
  1195.                             communications port.  _N_O_N_E will disable all
  1196.                             attempts at this sort of flow- control.
  1197.  
  1198.                        _6._2_1._1_0.  _I_N_P_U_T
  1199.  
  1200.                             _6._2_1._1_0._1.  _C_A_S_E-_I_G_N_O_R_E _O_F_F (_o_r _O_N)
  1201.  
  1202.                                  Controls whether of not case matching is
  1203.                                  done on characters during the input com-
  1204.                                  mand. In most instances, you will want
  1205.                                  this _O_N.
  1206.  
  1207.                             _6._2_1._1_0._2.  _D_I_S_P_L_A_Y _O_F_F (_o_r _O_N)
  1208.  
  1209.                                  Controls the display of characters that
  1210.                                  are input during the execution of the
  1211.                                  _I_N_P_U_T command.
  1212.  
  1213.                        _6._2_1._1_1.  _K_E_Y <_k_e_y _v_a_l_u_e> <_s_t_r_i_n_g>
  1214.  
  1215.                             This command allows you to send an arbitrary
  1216.                             (the length of the _K_E_R_M_I_T command line is the
  1217.                             limit) string with a single key stroke.  The
  1218.                             definition of string is identical for that of
  1219.                             the _I_N_P_U_T, _O_U_T_P_U_T, and _P_A_U_S_E commands. KEY
  1220.                             VALUE is the ASCII value of the key stroke as
  1221.                             given in the TRSDOS manual.  If KEY VALUE is
  1222.                             not given, then you will be asked to press
  1223.                             the key corresponding to the key that you
  1224.                             wish to define.  All keys are valid in _s_t_r_i_n_g
  1225.                             except BREAK.  Pressing BREAK signals the end
  1226.                             of the definition string.  While in _C_O_N_N_E_C_T
  1227.                             mode, typing the defined key will cause the
  1228.                             characters typed as the definition to be
  1229.                             typed instead.  Defining a key to have a _N_U_L_L
  1230.                             length deletes any previous definition.
  1231.  
  1232.                        _6._2_1._1_2.  _L_O_C_A_L-_E_C_H_O _O_F_F (_o_r _O_N)
  1233.  
  1234.                             When you _C_O_N_N_E_C_T to a remote host, you must
  1235.                             set _L_O_C_A_L-_E_C_H_O _O_N if the host is half duplex,
  1236.                             _O_F_F if full duplex.
  1237.  
  1238.                        _6._2_1._1_3.  _O_U_T_P_U_T
  1239.  
  1240.                             _6._2_1._1_3._1.  _H_O_S_T-_E_C_H_O _O_N (_o_r _O_F_F)
  1241.  
  1242.                                  When using _O_U_T_P_U_T, and communicating
  1243.                                  with a remote host, the host commonly
  1244.                                  echoes the characters as you type.
  1245.                                  Since _O_U_T_P_U_T effectively types charac-
  1246.                                  ters for you, these characters may be
  1247.                                  echoed back.  If _H_O_S_T-_E_C_H_O is _O_N, _O_U_T_P_U_T
  1248.                                  will wait for the echoed character to
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                                         - 20 -
  1259.  
  1260.  
  1261.                                  reappear in the input buffer before it
  1262.                                  sends the next. In the example for send-
  1263.                                  ing and receiving raw data, that is
  1264.                                  above, setting _H_O_S_T-_E_C_H_O _O_N, will enable
  1265.                                  us to remove the _I_N_P_U_T _T_Y_P_E
  1266.                                  _M_Y_P_R_O_G._D_A_T<_C_R><_L_F> command. Control
  1267.                                  characters are _N_O_T normally echoed, so
  1268.                                  this feature when set _O_N, will not wait
  1269.                                  for them.  If you must catch the echo of
  1270.                                  a control character, then follow the
  1271.                                  _O_U_T_P_U_T command with the appropriate
  1272.                                  _I_N_P_U_T command.
  1273.  
  1274.                             _6._2_1._1_3._2.  _D_I_S_P_L_A_Y _O_F_F (_o_r _O_N)
  1275.  
  1276.                                  This parameter when on controls the
  1277.                                  display of characters that are received
  1278.                                  when _H_O_S_T-_E_C_H_O is _O_N.  Otherwise, They
  1279.                                  are displayed based on the status of the
  1280.                                  _L_O_C_A_L-_E_C_H_O setting.
  1281.  
  1282.                        _6._2_1._1_4.  _P_R_I_N_T_E_R _O_F_F (_o_r _O_N)
  1283.  
  1284.                             Turns copying of _C_O_N_N_E_C_T session to printer
  1285.                             on  and off.  With _F_L_O_W-_C_O_N_T_R_O_L turned on,
  1286.                             and a sending host that will acknowledge the
  1287.                             _X_O_F_F, you should have no problems using the
  1288.                             printer continuously.
  1289.  
  1290.                        _6._2_1._1_5.  _R_E_C_E_I_V_E
  1291.  
  1292.                             _6._2_1._1_5._1.  _E_N_D-_O_F-_L_I_N_E <_A_S_C_I_I _c_o_d_e>
  1293.  
  1294.                                  Set the end of line character in packets
  1295.                                  to some other character than <_C_R> which
  1296.                                  is the default.
  1297.  
  1298.                             _6._2_1._1_5._2.  _P_A_D-_C_H_A_R <_A_S_C_I_I _c_o_d_e>
  1299.  
  1300.                                  If the host you are communicating with
  1301.                                  needs one or more padding characters
  1302.                                  before it receives actual data during
  1303.                                  packet transfers, this character will be
  1304.                                  sent _P_A_D_D_I_N_G times.
  1305.  
  1306.                             _6._2_1._1_5._3.  _P_A_D_D_I_N_G <_d_e_c_i_m_a_l _n_u_m_b_e_r>
  1307.  
  1308.                                  The repeat count for the number of times
  1309.                                  the padding character is transmitted.
  1310.  
  1311.                             _6._2_1._1_5._4.  _Q_U_O_T_E-_C_H_A_R_A_C_T_E_R <_A_S_C_I_I _c_o_d_e>
  1312.  
  1313.                                  The character used to quote control
  1314.                                  characters.  The default is pound "#"
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                                         - 21 -
  1325.  
  1326.  
  1327.                             _6._2_1._1_5._5.  _S_T_A_R_T-_O_F-_P_A_C_K_E_T <_A_S_C_I_I _c_o_d_e>
  1328.  
  1329.                                  The character used to syncronize the
  1330.                                  packets that _K_E_R_M_I_T transmits.  By
  1331.                                  default <_S_O_H>.
  1332.  
  1333.                             _6._2_1._1_5._6.  _T_I_M_E-_O_U_T <_d_e_c_i_m_a_l _n_u_m_b_e_r>
  1334.  
  1335.                                  _M_o_d_e_l _4(_p) _K_E_R_M_I_T uses this value as the
  1336.                                  number of seconds to wait for a response
  1337.                                  to a packet.  If no response is received
  1338.                                  within the number of seconds given, then
  1339.                                  the packet for which the response has
  1340.                                  not been received is retransmitted.
  1341.  
  1342.                             _6._2_1._1_5._7.  _T_U_R_N-_C_H_A_R
  1343.  
  1344.                                  The character used to syncronize KERMIT
  1345.                                  when used over a half duplex line.
  1346.                                  _M_o_d_e_l _4(_p) _K_E_R_M_I_T will wait for this
  1347.                                  character at the end of a packet, and
  1348.                                  will send the SEND TURN-CHAR at the end
  1349.                                  of a packet.
  1350.  
  1351.                        _6._2_1._1_6.  _S_E_N_D
  1352.  
  1353.                             _6._2_1._1_6._1.  _E_N_D-_O_F-_L_I_N_E <_A_S_C_I_I _c_o_d_e>
  1354.  
  1355.                                  Set the end of line character in packets
  1356.                                  to some other character than <_C_R> which
  1357.                                  is the default.
  1358.  
  1359.                             _6._2_1._1_6._2.  _P_A_D-_C_H_A_R <_A_S_C_I_I _c_o_d_e>
  1360.  
  1361.                                  If the host you are communicating with
  1362.                                  needs one or more padding characters
  1363.                                  before it receives actual data during
  1364.                                  packet transfers, this character will be
  1365.                                  sent _P_A_D_D_I_N_G times.
  1366.  
  1367.                             _6._2_1._1_6._3.  _P_A_D_D_I_N_G <_d_e_c_i_m_a_l _n_u_m_b_e_r>
  1368.  
  1369.                                  The repeat count for the number of times
  1370.                                  the padding character is transmitted.
  1371.  
  1372.                             _6._2_1._1_6._4.  _Q_U_O_T_E-_C_H_A_R_A_C_T_E_R <_A_S_C_I_I _c_o_d_e>
  1373.  
  1374.                                  The character used to quote control
  1375.                                  characters.  The default is pound "#"
  1376.  
  1377.                             _6._2_1._1_6._5.  _S_T_A_R_T-_O_F-_P_A_C_K_E_T <_A_S_C_I_I _c_o_d_e>
  1378.  
  1379.                                  The character used to syncronize the
  1380.                                  packets that _K_E_R_M_I_T transmits.  By
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                                         - 22 -
  1391.  
  1392.  
  1393.                                  default <_S_O_H>.
  1394.  
  1395.                             _6._2_1._1_6._6.  _T_I_M_E-_O_U_T <_d_e_c_i_m_a_l _n_u_m_b_e_r>
  1396.  
  1397.                                  This value is given to the _o_t_h_e_r host as
  1398.                                  its' timeout value.  You should assure
  1399.                                  that this is different from the RECEIVE
  1400.                                  TIME-OUT value so that both timeouts do
  1401.                                  not occur simultaneously.
  1402.  
  1403.                             _6._2_1._1_6._7.  _T_U_R_N-_C_H_A_R <_A_S_C_I_I _c_o_d_e>
  1404.  
  1405.                                  The character used to syncronize KERMIT
  1406.                                  when used over a half duplex line.
  1407.                                  _M_o_d_e_l _4(_p) _K_E_R_M_I_T will send this charac-
  1408.                                  ter at the end of a packet.  The RECEIVE
  1409.                                  TURN-CHAR will be waited for before data
  1410.                                  is transmitted.
  1411.  
  1412.                        _6._2_1._1_7.  _T_A_K_E-_D_I_S_P_L_A_Y _O_F_F (_o_r _O_N)
  1413.  
  1414.                             Controls the display of _T_A_K_E files as they
  1415.                             are executed.  By default this feature is
  1416.                             off.
  1417.  
  1418.                        _6._2_1._1_8.  _W_A_R_N_I_N_G _O_N (_o_r _O_F_F)
  1419.  
  1420.                             Warns user if filename conflicts when receiv-
  1421.                             ing files from remote host, and attempt to
  1422.                             generate a unique name by modifying the given
  1423.                             one.  _O_N by default.
  1424.  
  1425.                   _6._2_2.  _S_E_T_C_O_M <_T_R_S_D_O_S _S_E_T_C_O_M _c_o_m_m_a_n_d _p_a_r_a_m_e_t_e_r>
  1426.  
  1427.                        Sets/shows the status of the communications
  1428.                        driver, _C_O_M/_D_V_R.  If no arguments are given, than
  1429.                        the current status will be shown.  Any arguments
  1430.                        must be enclosed in parenthesis as the result of
  1431.                        this command, is a generated _T_R_S_D_O_S command as in:
  1432.  
  1433.                             SETCOM (B=9600,P=N,W=8)
  1434.  
  1435.                        The default values are established according to
  1436.                        you.  If you set up the driver for a certain con-
  1437.                        figuration, and then use _S_Y_S_G_E_N to save it, then
  1438.                        that will be the default.  _N_O sysgen should give
  1439.                        you:
  1440.  
  1441.                             300 BAUD
  1442.                             EVEN PARITY
  1443.                             DTR=YES
  1444.                             7 DATA BITS
  1445.                             1 STOP BIT
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                                         - 23 -
  1457.  
  1458.  
  1459.                   _6._2_3.  _S_H_O_W
  1460.  
  1461.                        Allows one or ALL of the options of the _S_E_T com-
  1462.                        mand to be displayed.  Using the "?" feature will
  1463.                        aid you if you can't figure out where to find
  1464.                        something.  All of the things that can be SET can
  1465.                        be displayed.  The items not listed below can be
  1466.                        displayed by using a command like:
  1467.  
  1468.                             SHOW BLOCK
  1469.  
  1470.                        or
  1471.  
  1472.                             SHOW DEFAULT
  1473.  
  1474.                        SHOW ALL will display all of the set values except
  1475.                        keys.  You must use SHOW KEY to see these values.
  1476.  
  1477.                   _6._2_3._1.  _S_E_N_D
  1478.  
  1479.                        Displays all options described under the _S_E_T _S_E_N_D
  1480.                        command.
  1481.  
  1482.                   _6._2_3._2.  _R_E_C_E_I_V_E
  1483.  
  1484.                        Displays all options described under the _S_E_T
  1485.                        _R_E_C_E_I_V_E command.
  1486.  
  1487.                   _6._2_3._3.  _K_E_Y <_A_S_C_I_I _k_e_y _v_a_l_u_e>
  1488.  
  1489.                        If <ASCII key value> is specified, then the defin-
  1490.                        ition for the specified key number is display.
  1491.                        Otherwise, a prompt is issued for the user to type
  1492.                        the keystroke that should be taken as the key to
  1493.                        display.  \nnn is used to display all values
  1494.                        greater than 127.  ^x where x is a character 64
  1495.                        greater than 0 through 31, and 127 is used to
  1496.                        display control characters.  Any other printable
  1497.                        ASCII character is displayed normally.
  1498.  
  1499.              _6._2_4.  _S_T_A_T_U_S
  1500.  
  1501.                   Shows certain information about the status of _M_o_d_e_l
  1502.                   _4(_p) _K_E_R_M_I_T.  Items currently displayed include the
  1503.                   amount of space left in the _K_E_Y definition table, the
  1504.                   number of bytes written to files during transfers, the
  1505.                   number of bytes read from files during transfers, as
  1506.                   well as statistics on the latest transfer.
  1507.  
  1508.              _6._2_5.  _T_A_K_E <_f_i_l_e_s_p_e_c>
  1509.  
  1510.                   TAKE allows commands to be stored in a file, and then
  1511.                   executed by the _K_E_R_M_I_T command interpreter.  Only _o_n_e
  1512.                   level of _T_A_K_E files is supported.  This means that a
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                                         - 24 -
  1523.  
  1524.  
  1525.                   _T_A_K_E command can not appear inside of a _T_A_K_E file.  No
  1526.                   checking is done to enforce this, so good luck if you
  1527.                   want to try it.  When _K_E_R_M_I_T is first entered, a check
  1528.                   is made for a file called _K_E_R_M_I_T/_I_N_I on all of the
  1529.                   active disk drives as per normal _T_R_S_D_O_S searching
  1530.                   order.  If it is found, than it is used as a _T_A_K_E file
  1531.                   where you can store initialization commands.  Pressing
  1532.                   the _B_R_E_A_K key, or the _E_N_T_E_R key during the startup of
  1533.                   KERMIT (before the TAKE file is opened) will cause _K_E_R_-
  1534.                   _M_I_T to skip processing of the _T_A_K_E file.
  1535.  
  1536.  
  1537.  
  1538.  
  1539.              _7.  _S_e_t_t_i_n_g _u_p _t_o _u_s_e _M_o_d_e_l _4(_p) _K_E_R_M_I_T
  1540.  
  1541.                   To use _M_o_d_e_l _4(_p) _K_E_R_M_I_T, you need to have your Model 4
  1542.              set up properly.  The program expects that the *CL device
  1543.              will be driven by the COM/DVR Communications Driver that
  1544.              comes with TRSDOS.  It also expects that the *SO device is
  1545.              ROUTED to the *DO device, and that the *SI device is ROUTED
  1546.              to the *KI device.  The former 2 are the defaults, and in
  1547.              general, you should not worry about them, unless you have
  1548.              changed them.  Setting up the *CL device involves typing the
  1549.              command:
  1550.  
  1551.                   SET *CL COM/DVR
  1552.  
  1553.              at the _T_R_S_D_O_S _R_e_a_d_y prompt.  If you do not do this, you will
  1554.              get a message of the form
  1555.  
  1556.                   Can't find *CL DCB
  1557.  
  1558.              from _M_o_d_e_l _4(_p) _K_E_R_M_I_T when it is starting up.  The program
  1559.              will return control to TRSDOS after issuing this message, as
  1560.              it is a fatal error.
  1561.  
  1562.                   Model 4(p) KERMIT is not a small program.  It occupies
  1563.              memory starting at 6000H, and extends up past 0D300H.  If
  1564.              you have parts of TRSDOS resident (Using the SYSTEM
  1565.              (SYSRES=....) command), or perhaps other filters or memory
  1566.              resident modules, then you should make sure that they do not
  1567.              extend below the maximum address used by the program.  The
  1568.              last memory address used by _M_o_d_e_l _4(_p) _K_E_R_M_I_T can be
  1569.              obtained by using the command
  1570.  
  1571.                   LOCAL MEMORY
  1572.  
  1573.              from within the _M_o_d_e_l _4(_p) _K_E_R_M_I_T program.
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                                         - 25 -
  1589.  
  1590.  
  1591.              _8.  _I_n_s_t_a_l_l_a_t_i_o_n
  1592.  
  1593.                   To install _M_o_d_e_l _4(_p) _K_E_R_M_I_T, you must obtain the two
  1594.              files _M_4_B_O_O._B_A_S and _M_4_M_I_T._H_E_X.  Because of the size of the
  1595.              executable, the hex file could not be placed into a basic
  1596.              program as data statements.  Instead, the basic program
  1597.              opens and reads the file _M_4_M_I_T._H_E_X.  This file is an _A_S_C_I_I
  1598.              image of the executable.  All that needs to be done, is to
  1599.              run the _B_A_S_I_C program which will convert the file back to
  1600.              its original binary format.  The resulting executable should
  1601.              probably be called _K_E_R_M_I_T/_C_M_D.  Follow the prompts of the
  1602.              BASIC program and there should not be any problems.
  1603.  
  1604.              _9.  _B_u_i_l_d_i_n_g _M_o_d_e_l _4(_p) _K_E_R_M_I_T from the Source.
  1605.  
  1606.                   The Source for _M_o_d_e_l _4(_p) _K_E_R_M_I_T is in approximately 15
  1607.              modules.  The names of the modules are:
  1608.  
  1609.                   M4ADD/ASM      Code for miscellaneous routines.
  1610.  
  1611.                   M4CMD/ASM      Command parser code.
  1612.  
  1613.                   M4EQU/ASM      Mosts constants are defined here
  1614.  
  1615.                   M4FILE/ASM     Additional logfile code such as the LOG
  1616.                                  command, and the CLOSE command.
  1617.  
  1618.                   M4GET/ASM      Receive file routines + other miscel-
  1619.                                  lany.
  1620.  
  1621.                   M4KEY/ASM      Code for handling the SET KEY functions
  1622.  
  1623.                   M4LOG/ASM      INPUT, OUTPUT, PAUSE, PULSE commands.
  1624.  
  1625.                   M4MAC/ASM      Macros used in the program
  1626.  
  1627.                   M4MIT/ASM      Main entry and some command routines.
  1628.  
  1629.                   M4PKT/ASM      New packet routines for encoding and
  1630.                                  decoding packets.
  1631.  
  1632.                   M4RMT/ASM      The base of what will be the remote com-
  1633.                                  mand.
  1634.  
  1635.                   M4SEND/ASM     Send file routines.
  1636.  
  1637.                   M4SET/ASM      Set options routines.
  1638.  
  1639.                   M4SHOW/ASM     Show settings routines.
  1640.  
  1641.                   M4STR/ASM      The majority of storage, prompts, and
  1642.                                  messages.
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                                         - 26 -
  1655.  
  1656.  
  1657.                   M4TERM/ASM     Terminal Emulation, and I/O routines.
  1658.  
  1659.                   M4WILD/ASM     Wild card file name processing.
  1660.  
  1661.                   M4XFER/ASM     File processing, and some packet stuff.
  1662.  
  1663.                   _M_o_d_e_l _4(_p) _K_E_R_M_I_T was developed using the _E_D_A_S assem-
  1664.              bler from Misosys.  Other macro assemblers should be able to
  1665.              assemble the program with minor conversions.  _M_4_M_I_T/_A_S_M is
  1666.              the main source module. It will call the other source files
  1667.              into the assembly (using the *GET directive) as needed.  If
  1668.              any system calls need to be changed, they are all defined in
  1669.              _M_4_A_D_D/_A_S_M for the most part.  All of the SVC's are coded in
  1670.              _M_4_A_D_D/_A_S_M as subroutines that are accessed by CALL Xaaaaa,
  1671.              where aaaaa is the name of the _T_R_S_D_O_S supervisor call (SVC)
  1672.              without the "@" sign.
  1673.  
  1674.                   If this version is moved to another OS, there are
  1675.              several things that you should consider.  The things that
  1676.              come to mind are:
  1677.  
  1678.  
  1679.                   1.   Consider the format of the TRSDOS directory struc-
  1680.                        ture.  The wild card routines depend on this
  1681.                        structure for validating directory entries, and
  1682.                        for retrieving the file name.
  1683.  
  1684.                   2.   There are 2 places where real time counting is
  1685.                        required.  The delay specified in a PAUSE state-
  1686.                        ment can be handled with a counter, as all other
  1687.                        processing is halted (except the interrupt tasks)
  1688.                        during the pause.  Currently, the Real Time Clock
  1689.                        task is used to measure the appropriate delay.
  1690.                        The other use of a Real Time counter occurs in the
  1691.                        Receive packet timeout.  This must be handled
  1692.                        using asyncronous processes in order to be accu-
  1693.                        rate.
  1694.  
  1695.                   3.   There exist code at the beginnning and end of the
  1696.                        segment that accesses the screen which outputs the
  1697.                        bytes 14, and 15 to the *DO device.  These are
  1698.                        used to force the cursor to be invisible before
  1699.                        the screen is accessed, and to then make it reap-
  1700.                        pear after the screen access is completed.
  1701.  
  1702.                   4.   The interrupt driven receiver must also be delt
  1703.                        with.  The code in the routine SETINT, establishes
  1704.                        the interrupt vector that the *CL driver will call
  1705.                        when a "character received interrupt" is gen-
  1706.                        erated.
  1707.  
  1708.                   5.   In many instances, the characters having values
  1709.                        16, and 17 are used to enable, and disable reverse
  1710.                        video respectively.  If the driver for *DO does
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.                                         - 27 -
  1721.  
  1722.  
  1723.                        not recognize this convention, as the current one
  1724.                        does, then these characters must be handled in
  1725.                        some manner.  I.E. either removed from the source,
  1726.                        or filtered from the terminal output stream.  The
  1727.                        PRTSTR() routine is a good place to mask these
  1728.                        characters at, as it is the sole source of output
  1729.                        for strings containing these type of characters.
  1730.  
  1731.  
  1732.                   It should be noted that _K_E_R_M_I_T/_C_M_D loads into RAM at
  1733.              6000H.  This avoids high memory filters and drivers, and
  1734.              also allows use of _T_R_S_D_O_S library commands that use low
  1735.              memory beyond 3000H, as FORMAT, and BACKUP do.  Exclusive
  1736.              use is made of the *DO device for screen output from the
  1737.              KERMIT program, for informational messages and the like.
  1738.              During connect mode, *SI and *SO are used as the input and
  1739.              output devices to allow filters to be attached that will not
  1740.              effect the operation of _M_o_d_e_l _4(_p) _K_E_R_M_I_T during command
  1741.              operations.  If you install a different driver or filter it
  1742.              must be compatible in these areas.
  1743.  
  1744.              _1_0.  _P_e_r_f_o_r_m_a_n_c_e _S_p_e_c_i_f_i_c_s _o_f _M_o_d_e_l _4(_p) _K_E_R_M_I_T
  1745.  
  1746.                   The _M_o_d_e_l _4(_p) _K_E_R_M_I_T has been tested and proven to
  1747.              work properly at 9600 BAUD with flow control on, transfer-
  1748.              ring files between 2 Model 4's.  What makes the _M_o_d_e_l _4(_p)
  1749.              _K_E_R_M_I_T perform so well is the idea of flow control, and the
  1750.              interrupt driven receiver.  With out these features, I
  1751.              expect that 2400 baud would be the reliable limit.  Flow
  1752.              control can be disabled at speeds less than or equal to
  1753.              ~2400 baud, but greater speeds require that flow control be
  1754.              functional in order to protect the integrity of data in the
  1755.              input buffer.
  1756.  
  1757.  
  1758.  
  1759.  
  1760.              _1_1.  _T_h_e _H_e_a_t_h _1_9 _F_i_l_t_e_r
  1761.  
  1762.                   The files _M_4_H_1_9_1._A_S_M, _M_4_H_1_9_2._A_S_M, _M_4_H_1_9._M_A_C, and
  1763.              _M_4_H_1_9._E_Q_U make up the sources for a Heath 19 terminal emula-
  1764.              tion filter for the TRS-80 Models 4 and 4p.  The assembler
  1765.              used was EDAS by Misosys.  To build the filter from sources,
  1766.              you need the above 4 files on a disk.  _M_4_H_1_9_1._A_S_M is the
  1767.              main source module, and it *GETs all the other necessary
  1768.              files.
  1769.  
  1770.                   The structure of the program is pretty simple.  Single
  1771.              character (non escape) sequences, are passed to the filtered
  1772.              device via the @_C_H_N_I_O svc.  This filter depends on the
  1773.              _T_R_S_D_O_S *_D_O driver being at the end of the chain.  Several
  1774.              control characters are merely translated, and then the new
  1775.              values are passed to *DO.
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                                         - 28 -
  1787.  
  1788.  
  1789.                   A multi-character escape sequence is handled by
  1790.              remembering the previous characters that the filter was
  1791.              passed.  The previous characters are remembered by the pres-
  1792.              ence of a non-zero value in the contents of _S_T_A_T_E.  The
  1793.              value in _S_T_A_T_E represents the address of the code to handle
  1794.              the next character, given the previous string of characters.
  1795.  
  1796.                   The filter is relocatable, but _M_U_S_T reside below screen
  1797.              memory because it accesses it directly when performing
  1798.              several of the advanced terminal functions.  For this rea-
  1799.              son, it will never load _a_b_o_v_e _F_3_f_f_H.
  1800.  
  1801.              _1_2.  _T_h_e _S_E_T_H_1_9 _P_r_o_g_r_a_m
  1802.  
  1803.                   The _S_E_T_H_1_9 program allows you to configure a few
  1804.              options that are available to you when using the _H_1_9 _f_i_l_t_e_r.
  1805.              The _S_E_T_H_1_9 program is created from the sources _M_4_H_1_9_S._A_S_M,
  1806.              _M_4_H_1_9._E_Q_U, and _M_4_H_1_9._M_A_C.  _M_4_H_1_9_S._A_S_M is the main source
  1807.              module, and will *GET the other 2 files. The program sup-
  1808.              ports a few parameters that are listed below.
  1809.  
  1810.  
  1811.                   REMOVE         Remove and reclaim if possible.
  1812.  
  1813.                   DURATION       Length of BELL tone.
  1814.  
  1815.                   FREQUENCY      Frequency value (bigger value is lower
  1816.                                  tone) for BELL.
  1817.  
  1818.                   BELL           Turn audible BELL ON or OFF.
  1819.  
  1820.                   BLOCK          Block cursor character.
  1821.  
  1822.                   CURSOR         Normal cursor character.
  1823.  
  1824.                   STRIP8         Control display of 8 bit data.
  1825.  
  1826.                   HELP           Displays information similiar to this.
  1827.  
  1828.                   SHOW           Displays the current settings of the
  1829.                                  parameters, this is the default.
  1830.  
  1831.              These options are specified when you invoke _S_E_T_H_1_9, as per
  1832.              the usual TRSDOS 6.x parameter list.  An example is shown
  1833.              below:
  1834.  
  1835.                   SETH19 (BLOCK=191,CURSOR=23,BELL=ON,SHOW)
  1836.  
  1837.                   This command sets the normal CURSOR, and the edit mode
  1838.              CURSOR values, as well as turning the audible bell on.  The
  1839.              show parameter causes 2 lines similiar to those below to be
  1840.              printed on the screen.
  1841.  
  1842.                   Normal Cursor: 23, Block Cursor: 191
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.                                         - 29 -
  1853.  
  1854.  
  1855.                   Bell: ON, Frequency: 20, Duration: 120
  1856.                   Strip8: ON
  1857.  
  1858.  
  1859.                   The REMOVE option takes several things for granted, as
  1860.              it tries to thoroughly remove the device.  It assumes that
  1861.              the H19 filter is attached to the *HP device, and that this
  1862.              device is a filter hooked to *SO.  Further more, it assumes
  1863.              that *SO is routed to *DO.
  1864.  
  1865.                   This particular set up can be used easily if the fol-
  1866.              lowing commands are used to set up the filter:
  1867.  
  1868.                   SET *HP H19/FLT FILTER *SO *HP
  1869.  
  1870.              This is assuming that *SO is routed to *DO.  The SETH19 com-
  1871.              mand will perform these very operations if you invoke it,
  1872.              and the memory module, $_H_E_A_T_H, is not in place.
  1873.  
  1874.                   The other parameters to the SETH19 command can be used
  1875.              to control certain preferable options to the filter.  Set-
  1876.              ting _B_E_L_L off causes the filter to flash the screen when it
  1877.              receives an ASCII(7) character.  If BELL is set _O_N, then an
  1878.              audible bell is issued when an ASCII(7) is received.
  1879.  
  1880.                   When BELL is ON, then the _D_U_R_A_T_I_O_N, and _F_R_E_Q_U_E_N_C_Y
  1881.              parameters take effect.  These 2 parameters select the
  1882.              length and pitch, respectively, of the BELL tone.  The FRE-
  1883.              QUENCY value is used as a delay between oscillations of the
  1884.              sound port, so the bigger the number, the lower the tone
  1885.              will be.
  1886.  
  1887.                   The _d_e_f_a_u_l_t _D_U_R_A_T_I_O_N is set to 20, and the FREQUENCY is
  1888.              set to 125.  You can adjust them as you please.  The DURA-
  1889.              TION is inversely proportional to the FREQUENCY, since the
  1890.              delay caused by the FREQUENCY value is part of the overall
  1891.              DURATION of the sound.  This means that as you increase FRE-
  1892.              QUENCY, you must _d_e_c_r_e_a_s_e DURATION to maintain the same
  1893.              length of BELL, and vice-versa.
  1894.  
  1895.                   The _B_L_O_C_K and _C_U_R_S_O_R parameters are used to control the
  1896.              characters that are used as the cursor by the H19 filter.
  1897.              The H19 terminal has the ability to use a visual mode cur-
  1898.              sor, or a line mode cursor.  Since the normal visual mode
  1899.              cursor is usually a block cursor, the parameter BLOCK is
  1900.              used to set the ASCII value of the visual mode cursor.  The
  1901.              CURSOR parameter sets the normal line mode cursor.
  1902.  
  1903.                   The switch between cursors must be done by the HOST
  1904.              computer that is attached to the Model 4's communications
  1905.              port.  There is no magic to when the BLOCK cursor is
  1906.              selected, see the description of the recognized control
  1907.              sequences below.
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                                         - 30 -
  1919.  
  1920.  
  1921.                   The STRIP8 parameter controls whether or not data is
  1922.              printed on the screen with the eighth bit set.  Normally,
  1923.              the filter now trims the eighth bit off so that parity can
  1924.              be ignored.  The command
  1925.  
  1926.                   SETH19 (STRIP8=NO)
  1927.  
  1928.              will cause the eighth bit to not be stripped.  That is to
  1929.              say, data will be used as it is received by the filter.
  1930.              Note that when this is done, some control characters with
  1931.              parity bits attached may not be recognized.
  1932.  
  1933.  
  1934.              _1_3.  _F_u_t_u_r_e _m_o_d_i_f_i_c_a_t_i_o_n_s
  1935.  
  1936.                   It should be fairly straight forward to build extra
  1937.              states into the filter so that it will recognize the ANSI
  1938.              3.64 sequences for the operations the filter knows how to
  1939.              perform.  Full support of all the ANSI 3.64 sequences would
  1940.              be a non-trivial investment in time.  The best bet here
  1941.              would, be a completely new device driver, since the overhead
  1942.              of going to *DO is already costly, and trying to implement
  1943.              scroll regions with *DO would be a HACK at best.  If some-
  1944.              body wants to do the conversion, I would like to have a copy
  1945.              of the result.
  1946.  
  1947.              _1_4.  _H_E_A_T_H-_1_9 _f_i_l_t_e_r _c_a_p_a_b_i_l_i_t_i_e_s
  1948.  
  1949.                   The HEATH-19 terminal supports several advanced video
  1950.              capabilities that make it an ideal source for a terminal
  1951.              emulation package.  Below is a list of the functions sup-
  1952.              ported by the Model 4(p) H-19 emulator, and the escape
  1953.              sequences that perform the operations.
  1954.  
  1955.              _1_5.  _H_e_a_t_h/_Z_e_n_i_t_h-_1_9 _C_o_n_t_r_o_l _C_o_d_e_s
  1956.  
  1957.                   The  Heath/Zenith-19 terminal is equivalent to the DEC
  1958.              VT52 with extensions for line and character insertion and
  1959.              deletion.  Items marked with an  asterisk  are not currently
  1960.              supported by Model 4(p) H19 emulation.
  1961.  
  1962.  
  1963.              Cursor Functions
  1964.  
  1965.                Sequence    Mnemonic    Definition
  1966.                 ESC H      HCUH        Cursor Home
  1967.                 ESC C      HCUF        Cursor Forward
  1968.                 ESC D      HCUB        Cursor Backward
  1969.                 ESC B      HCUD        Cursor Down
  1970.                 ESC A      HCUU        Cursor Up
  1971.                 ESC I      HRI         Reverse Index
  1972.                *ESC n      HCPR        Cursor Position Report
  1973.                 ESC j      HSCP        Save Cursor Position
  1974.                 ESC k      HRCP        Set Cursor to Previously Saved Position
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                                         - 31 -
  1985.  
  1986.  
  1987.                 ESC Y      HDCA        Direct Cursor Addressing, 1-based:
  1988.                                        31+line# 31+col# (same as VT52)
  1989.  
  1990.  
  1991.  
  1992.              Erasing and Editing
  1993.  
  1994.                Sequence    Mnemonic    Definition
  1995.                 ESC E      HCD         Clear Display (Shift Erase)
  1996.                 ESC b      HBD         Erase Beginning of Display
  1997.                 ESC J      HEOP        Erase to End of Page (Erase Key)
  1998.                 ESC l      HEL         Erase Entire Line
  1999.                 ESC o      HEBL        Erase Beginning of Line
  2000.                 ESC K      HEOL        Erase to End of Line
  2001.                 ESC L      HIL         Insert Line
  2002.                 ESC M      HDL         Delete Line
  2003.                 ESC N      HDCH        Delete Character
  2004.                 ESC @      HEIM        Enter Insert Character Mode
  2005.                 ESC O      HERM        Exit Insert Character Mode
  2006.  
  2007.  
  2008.  
  2009.              Configuration
  2010.  
  2011.                Sequence    Mnemonic    Definition
  2012.                *ESC z      HRAM        Reset to Power-Up Configuration
  2013.                *ESC r Bn   HMBR        Modify Baud Rate: Bn=
  2014.                                          A=110, B=150, C=300, D=600, E=1200,
  2015.                                          F=1800, G=2000, H=2400, I=3600, J=4800,
  2016.                                          K=7200, L=9600, M=19200
  2017.  
  2018.  
  2019.                 ESC x Ps   HSM         Set Mode(s): Ps=
  2020.                *                         1 = Enable 25th line
  2021.                *                         2 = No key click
  2022.                *                         3 = Hold screen mode
  2023.                                          4 = Block cursor
  2024.                                          5 = Cursor off
  2025.                *                         6 = Keypad shifted
  2026.                *                         7 = Alternate keypad mode
  2027.                                          8 = Auto line feed on CR
  2028.                                          9 = Auto CR on line feed
  2029.  
  2030.  
  2031.                 ESC y Ps   HRM         Reset mode(s): Ps=
  2032.                *                         1 = Disable 25th line
  2033.                *                         2 = Enable key click
  2034.                *                         3 = Exit hold screen mode
  2035.                                          4 = Underscore cursor
  2036.                                          5 = Cursor on
  2037.                *                         6 = Keypad unshifted
  2038.                *                         7 = Exit alternate keypad mode
  2039.                                          8 = No auto line feed
  2040.                                          9 = No auto CR
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                                         - 32 -
  2051.  
  2052.  
  2053.                *ESC <      HEAM        Enter ANSI Mode
  2054.  
  2055.              Modes of Operation
  2056.  
  2057.                Sequence    Mnemonic    Definition
  2058.                *ESC [      HEHS        Enter Hold Screen Mode
  2059.                *ESC \      HXHS        Exit Hold Screen Mode
  2060.                 ESC p      HERV        Enter Reverse Video Mode
  2061.                 ESC q      HXRV        Exit Reverse Video Mode
  2062.                *ESC F      HEGM        Enter Graphics Mode
  2063.                *ESC G      HXGM        Exit Graphics Mode
  2064.                *ESC t      HEKS        Enter Keypad Shifted Mode
  2065.                *ESC u      HXKS        Exit Keypad Shifted Mode
  2066.                *ESC =      HAKM        Enter Alternate Keypad Mode
  2067.                *ESC >      HXAM        Exit Alternate Keypad Mode
  2068.  
  2069.  
  2070.  
  2071.                Additional Operations
  2072.  
  2073.                Sequence    Mnemonic    Definition
  2074.                *ESC }      HDK         Keyboard Disable
  2075.                *ESC {      HEK         Keyboard Enable
  2076.                *ESC v      HEWA        Wrap Around at End of Line
  2077.                *ESC w      HXWA        Discard at End of Line
  2078.                *ESC Z      HID         Identify as VT52 (ESC / K)
  2079.                *ESC ]      HX25        Transmit 25th Line
  2080.                *ESC #      HXMP        Transmit Page
  2081.  
  2082.  
  2083.  
  2084.                Enhanced Character Support
  2085.  
  2086.                 ESC [ p1 ; ... pn m    Set Graphics Rendition
  2087.                 where p1, ..., pn are chosen from the following:
  2088.                 *0            Reset to normal character display.
  2089.                 *1            Display characters in high intensity.
  2090.                 *4            Display characters underlined.
  2091.                 *5            Display characters blinking.
  2092.                 *7            Display characters in reverse video.
  2093.  
  2094.  
  2095.  
  2096.                   The  Heath-19  transmits  the following sequences,  but
  2097.              it  will  not  respond  to them if they are received.  Model
  2098.              4(p) Kermit will transmit them only if they  are  programmed
  2099.              with SET KEY.
  2100.  
  2101.                 ESC S      HF1         Function Key #1
  2102.                 ESC T      HF2         Function Key #2
  2103.                 ESC U      HF3         Function Key #3
  2104.                 ESC V      HF4         Function Key #4
  2105.                 ESC W      HF5         Function Key #5
  2106.                 ESC P      HF7         Function Key #7
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                                         - 33 -
  2117.  
  2118.  
  2119.                 ESC Q      HF8         Function Key #8
  2120.                 ESC R      HF9         Function Key #9
  2121.  
  2122.                   My thanks to Michael Carter and Roland Stolfa for their
  2123.              help in testing and debugging this implementation.
  2124.  
  2125.  
  2126.              Gregg Wonderly
  2127.              Department of Computing and Information Sciences
  2128.              Oklahoma State University
  2129.  
  2130.  
  2131.              UUCP: {cbosgd, ea, ihnp4, isucs1, mcvax, uokvax}!okstate!gregg
  2132.              ARPA:  gregg@A.CS.OKSTATE.EDU
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.  
  2176.  
  2177.  
  2178.  
  2179.