home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / vrac / x00v201.zip / X00USER.DOC < prev    next >
Text File  |  1993-02-26  |  64KB  |  1,448 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.                                      USERS MANUAL
  28.  
  29.                   X.00 A Low Level Serial I/O Communications Driver
  30.                         for MS DOS and like Operating Systems.
  31.  
  32.                         Copyright (c) 1993 by Raymond L. Gwinn
  33.                                  12469 Cavalier Drive
  34.                               Woodbridge, Virginia 22192
  35.                                  All Rights Reserved
  36.  
  37.                                   Oktober 02, 1993
  38.  
  39.  
  40.                                Fidonet address 1:265/1
  41.                                   Data 703-494-8331
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.                                                                           i
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.                                      INTRODUCTION
  67.  
  68.           Previously,  the documentation  for X00  was little  more  than a
  69.           collection of notes.  The notes were added  to as the development
  70.           process continued and enhancements were made.  I honestly did not
  71.           suspect  that X00  would become as  widely used  as it  is.  This
  72.           manual is an attempt at some decent documentation for X00.
  73.  
  74.           But who  do I document  for?  The user  that is setting  up a BBS
  75.           just wants to get X00 installed  and to move on to more important
  76.           things.  The user that is having problems needs information about
  77.           serial  I/O communications  in general  and the  PC specifically.
  78.           The application developer (programmer) needs detailed information
  79.           about each individual function and the information generated.
  80.  
  81.           This manual is intended for the X00 user.  A separate Application
  82.           Programmers manual is being written.
  83.  
  84.           This manual and the software distributed with it is provided with
  85.           no guarantees.  Use at your own risk.
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.                                                                          ii
  94.  
  95.                                   TABLE OF CONTENTS
  96.  
  97.  
  98.           WHAT IS X00 . . . . . . . . . . . . . . . . . . . . . . . . .   1
  99.  
  100.           Warranty  . . . . . . . . . . . . . . . . . . . . . . . . . .   1
  101.  
  102.           Licensing Information . . . . . . . . . . . . . . . . . . . .   2
  103.                Non-Commercial License . . . . . . . . . . . . . . . . .   2
  104.                Commercial License . . . . . . . . . . . . . . . . . . .   2
  105.  
  106.           GETTING STARTED . . . . . . . . . . . . . . . . . . . . . . .   4
  107.                Installing X00 . . . . . . . . . . . . . . . . . . . . .   4
  108.                Quick Start  . . . . . . . . . . . . . . . . . . . . . .   4
  109.  
  110.           OVERVIEW OF X00 USAGE . . . . . . . . . . . . . . . . . . . .   5
  111.                General Information  . . . . . . . . . . . . . . . . . .   5
  112.                     X00 loaded as a DOS Device Driver . . . . . . . . .   5
  113.                     X00 loaded as a TSR . . . . . . . . . . . . . . . .   5
  114.                     COMn and PORTn  . . . . . . . . . . . . . . . . . .   5
  115.  
  116.           COMMAND LINE OPTIONS  . . . . . . . . . . . . . . . . . . . .   6
  117.                Specifying number of ports . . . . . . . . . . . . . . .   6
  118.                B option, Locking Baud, Data, Parity and Stop bits . . .   6
  119.                Valid locked baud rates  . . . . . . . . . . . . . . . .   7
  120.                Eliminate  . . . . . . . . . . . . . . . . . . . . . . .   7
  121.                Defer  . . . . . . . . . . . . . . . . . . . . . . . . .   7
  122.                DV . . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  123.                FIFO . . . . . . . . . . . . . . . . . . . . . . . . . .   8
  124.                NOFIFO . . . . . . . . . . . . . . . . . . . . . . . . .   9
  125.                NOPOST . . . . . . . . . . . . . . . . . . . . . . . . .   9
  126.                SLOWCPU  . . . . . . . . . . . . . . . . . . . . . . . .   9
  127.                R, Set Receive Buffer Size . . . . . . . . . . . . . .    10
  128.                T, Set Transmit Buffer Size  . . . . . . . . . . . . .    10
  129.                VP or Master Interrupt Enable  . . . . . . . . . . . .    10
  130.                Mapping port assignments . . . . . . . . . . . . . . .    10
  131.                Un-installing X00  . . . . . . . . . . . . . . . . . .    12
  132.  
  133.           Multi-Tasking . . . . . . . . . . . . . . . . . . . . . . .    13
  134.  
  135.           THE BIOS INT 14h EMULATOR . . . . . . . . . . . . . . . . .    15
  136.  
  137.           IRQ SHARING . . . . . . . . . . . . . . . . . . . . . . . .    16
  138.  
  139.           Appendix A, Hardware Port and IRQ Assignments . . . . . . .    17
  140.                Addresses and IRQs for COM1 and COM2 . . . . . . . . .    17
  141.                Defacto standard for COM3 and COM4 . . . . . . . . . .    17
  142.                Addresses and IRQ for COM3 through COM8 on the PS/2  .    17
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.                                                                         iii
  151.  
  152.  
  153.           Appendix B, SIO Chips . . . . . . . . . . . . . . . . . . .    18
  154.                8250 . . . . . . . . . . . . . . . . . . . . . . . . .    18
  155.                8250A  . . . . . . . . . . . . . . . . . . . . . . . .    18
  156.                16450  . . . . . . . . . . . . . . . . . . . . . . . .    19
  157.                16C451 . . . . . . . . . . . . . . . . . . . . . . . .    19
  158.                16550 Non A  . . . . . . . . . . . . . . . . . . . . .    19
  159.                16550A . . . . . . . . . . . . . . . . . . . . . . . .    19
  160.                16550AF  . . . . . . . . . . . . . . . . . . . . . . .    19
  161.                16550AFN . . . . . . . . . . . . . . . . . . . . . . .    19
  162.                16550s Made by Western Digital . . . . . . . . . . . .    20
  163.                16C551 . . . . . . . . . . . . . . . . . . . . . . . .    20
  164.                16C552 . . . . . . . . . . . . . . . . . . . . . . . .    20
  165.                82510  . . . . . . . . . . . . . . . . . . . . . . . .    20
  166.  
  167.           Appendix C, Multi-Port Serial I/0 Cards . . . . . . . . . .    21
  168.                Connect-Com 4  . . . . . . . . . . . . . . . . . . . .    21
  169.                4 and 8 Port Boards from Decision-Computer . . . . . .    21
  170.                Stargate Plus 8 board from Software Link . . . . . . .    22
  171.  
  172.           INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . .    23
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.                                                                           1
  181.  
  182.                                      WHAT IS X00
  183.  
  184.           X00 is  a Serial Input/Output  (SIO) communications  driver.   It
  185.           provides  an interface  between  an application  program and  the
  186.           serial communications hardware.
  187.  
  188.           X00 was  originally designed as  a FOSSIL  driver.  FOSSIL  is an
  189.           acronym containing the first  character of several communications
  190.           programs.   The FOSSIL specification is basically an extension of
  191.           the PC's BIOS services for serial communications.
  192.  
  193.           Except as noted in  the Programmers Manual, X00 meets  the FOSSIL
  194.           level 5  specification.   X00 provides additional  functions that
  195.           are not contained in the FOSSIL level 5 specification.
  196.  
  197.           X00 only works with 8250 (TYPE) serial I/O devices.  Such devices
  198.           include the 8250A,  16450, 16550, 16550A and  the 82510.   If you
  199.           have a PC that  is an IBM or  near compatible which has  a serial
  200.           communication  port, it is likely  that it contains  one of these
  201.           devices.  XU, a  utility distributed with X00, will  identify the
  202.           existence of compatible SIO devices.
  203.  
  204.           Like  other  Device Drivers,  X00  will do  very  little standing
  205.           alone.  There must be an application(s) program to use X00 before
  206.           you will gain benefit.
  207.  
  208.           Since  the introduction  of the  FOSSILs, a  great number  of new
  209.           communications  programs have  come into  existence.   I like  to
  210.           think  that the FOSSILs are  largely responsible for  this.  Many
  211.           programs that contain their own communications drivers have added
  212.           FOSSIL support.  One notable example is RBBS.
  213.  
  214.           Many  programs  written  to  use  BIOS's   serial  communications
  215.           services will also work  with X00.  This gives those programs the
  216.           benefits of buffered interrupt driven I/O.
  217.  
  218.           Warranty
  219.  
  220.           There is none.  Use at your own risk.
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.                                                                           2
  229.  
  230.  
  231.                                 Licensing Information
  232.  
  233.           Non-Commercial License:
  234.  
  235.           A  non-commercial license  for  use of  X00  is included  in  the
  236.           distribution file called LICENSE.TXT.
  237.  
  238.           I  have received  several unsolicited  checks from users  of X00.
  239.           All  of the checks  have been returned  or uncashed.   To date, I
  240.           have not accepted any payments for X00.  If you feel that  X00 is
  241.           useful  enough that some sort  of payment is  justified then read
  242.           on.
  243.  
  244.           Our  local (public)  High School  desperately needs  funds.   The
  245.           school officials work at keeping the students off the streets and
  246.           away from  drugs.   The local School  Board is unable  to provide
  247.           needed  funds for  non-academic activities.   I suggest  a $10.00
  248.           contribution be sent to:
  249.  
  250.                Woodbridge Senior High School
  251.                3001 Old Bridge Road
  252.                Woodbridge, Virginia, 22192
  253.  
  254.           You  can make the  check payable to  "WSHS, Ballfield Improvement
  255.           Fund".   Please make a  note "X00 contribution"  somewhere on the
  256.           check.
  257.  
  258.           Many of you have used X00 for years.  I believe  $10.00 is easily
  259.           affordable to most X00 users.   Please take the time to sit down,
  260.           make out the check, address the envelope and mail a contribution.
  261.  
  262.           Shareware authors that wish to  distribute X00 with their product
  263.           should contact me.  Permission will usually be granted.
  264.  
  265.           Commercial License:
  266.  
  267.           Commercial Licenses will  be liberally  granted in  return for  a
  268.           donation (usually tax deductible).   Each commercial license will
  269.           be individually granted.  That is, there is no single policy that
  270.           can be stated  here.  Some  generally uniform commercial  license
  271.           policies follow.
  272.  
  273.           1 - X00 is usually licensed by product.
  274.  
  275.           2 - All  commercial licensees of X00 will receive  a special copy
  276.           of X00 that will identify, at boot time, the commercial product.
  277.  
  278.           3 -  I may require a fully licensed, fully featured, copy of your
  279.           product for personal use on multiple computers.
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.                                                                           3
  288.  
  289.           4 - The required  contribution, which is never to  me personally,
  290.           will usually be a one time contribution of $100.00.
  291.  
  292.           5 -  Proof of licensing belongs to you.   That is, I am not going
  293.           to be responsible for keeping records.  I suggest that you keep a
  294.           copy of the donation  check so that you can  send me a copy  if a
  295.           question  arises.    Otherwise  you  may  have  to  make  another
  296.           contribution.
  297.  
  298.           6  - You may  only distribute versions  of X00 that  contain your
  299.           product name in the X00 banner (at boot time).
  300.  
  301.           7 - If you wish  to have the latest version of  X00 automatically
  302.           sent to you with your product name in the X00 banner, then do the
  303.           following:  Send me a check  for $10.00, in advance, along with a
  304.           pre-addressed mailing label.  If you require a 3.5 inch diskette,
  305.           then write "3.5 inch" on the pre-addressed mailing label and send
  306.           $15.00 (instead of  $10.00).   For updates, the  check should  be
  307.           made  out to Raymond  L. Gwinn.   The checks will  be cashed when
  308.           received.  Individuals that wish to receive a mailed  copy of the
  309.           latest X00 version may  also use this  procedure.  Once you  have
  310.           received an  update, you will need  to resend the  update fee and
  311.           pre-addressed mailing  label if  you desire  to receive the  next
  312.           update.
  313.  
  314.           8  -   Your  contribution  check  should   state  "X00  Licensing
  315.           contribution" in the Memo or comment field.
  316.  
  317.           If  you write  me about  a commercial  license, please  include a
  318.           voice phone number.  You may  not receive a response if the voice
  319.           phone number is omitted.  Correspondence should be sent to:
  320.  
  321.                     Raymond L. Gwinn
  322.                     12469 Cavalier Dr.
  323.                     Woodbridge, Va. 22192
  324.  
  325.           Prior to making the special version of X00 available, I  may wait
  326.           for  the check to clear the bank.   If the check bounces, I will,
  327.           most  likely, not give any further  consideration to a commercial
  328.           license.
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.                                                                           4
  337.  
  338.  
  339.                                    GETTING STARTED
  340.  
  341.           Installing X00
  342.  
  343.           X00  is distributed  as a  ZIP file.   To extract  the individual
  344.           files  from the distribution file you need the program PKUNZIP or
  345.           an  equivalent.   PKUNZIP  is  a  product of  PKWARE  and  can be
  346.           downloaded from  almost any  bulletin board  system  (BBS).   You
  347.           probably already have PKUNZIP and know how to use it, otherwise I
  348.           doubt that  you would be reading  this.  When PKUNZIP  is used to
  349.           extract the various files, -AV should appear after each file name
  350.           as it is extracted.  In addition, the message:
  351.  
  352.                Authentic files Verified!
  353.  
  354.           should appear after the extraction process.  If this message does
  355.           not appear, or  appears with a name other than  Raymond L. Gwinn,
  356.           the file is not an original X00 distribution file.
  357.  
  358.           The  only file  that the  basic user  actually needs  is X00.SYS.
  359.           Copy  this file to a convenient directory or subdirectory on your
  360.           system.   I suggest that all users  also install XU.EXE also.  XU
  361.           can provide important  information about X00 that  may be helpful
  362.           when problems occur.
  363.  
  364.  
  365.           Quick Start
  366.  
  367.           Copy X00.SYS and XU.EXE to the root  directory of your boot drive
  368.           or diskette.
  369.  
  370.           If you  are going  to use  standard communications  ports, either
  371.           COM1 or COM2 on  a PC or AT, or COM1 through COM8 on a PS/2, then
  372.           add the following line to your CONFIG.SYS file:
  373.  
  374.                DEVICE=X00.SYS E
  375.  
  376.           If  you wish  to have  more than  one communications  port active
  377.           simultaneously,  then  modify the  command  line  to include  the
  378.           number of simultaneously active  ports you wish to support.   For
  379.           example,  if you are using DESQview and you  wish to run a BBS in
  380.           two  different  windows,  then  add the  following  line  to your
  381.           CONFIG.SYS file:
  382.  
  383.                DEVICE=X00.SYS E 2
  384.  
  385.           It  should be  noted that the  above command  tells X00  how many
  386.           ports that are to  be used simultaneously, not which  ports.  The
  387.           application program may use ANY 2 serial ports in any order.
  388.  
  389.           If your setup is more complex, you must read on.
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.                                                                           5
  398.  
  399.                                 OVERVIEW OF X00 USAGE
  400.  
  401.                                  General Information
  402.  
  403.           Things  can get  a little confusing  here.   At the  time of this
  404.           writing,  X00 is almost (if not completely) unique in its ability
  405.           to function as a DOS device driver or as a Terminate (or Torment)
  406.           and Stay Resident program (TSR).
  407.  
  408.           X00 loaded as a DOS Device Driver
  409.  
  410.           If X00 is to be used as a DOS device driver, it must be installed
  411.           using  the CONFIG.SYS  file.   For a  precise description  of the
  412.           CONFIG.SYS file  and  its  function, please  refer  to  your  DOS
  413.           manual.  Basically,  you use a text  editor to add a  line to the
  414.           CONFIG.SYS  file.    The  line  that  you add  is  DEVICE=X00.SYS
  415.           followed by optional parameters.  The optional parameters will be
  416.           described later.  If X00.SYS is  not in the current directory you
  417.           will need to provide a DOS path  to the directory containing X00.
  418.           For  example, if X00.SYS is in  a subdirectory called COMM on the
  419.           hard  disk drive  C, the  line  in the  CONFIG.SYS file  would be
  420.           DEVICE=C:\COMM\X00.SYS.
  421.  
  422.           X00 loaded as a TSR
  423.  
  424.           If  X00 is  to be  used as  a Terminate  and Stay  Resident (TSR)
  425.           program,  then you must rename  or copy X00.SYS  to X00.EXE.  The
  426.           EXE  version of  X00 must  be in  the current  directory or  in a
  427.           directory  in the  DOS  path when  it is  executed.   X00.EXE  is
  428.           executed like  any other DOS program.   That is, you  type X00 at
  429.           the  DOS prompt followed by any optional parameters.  In reality,
  430.           you will probably be using a batch file to execute X00.
  431.  
  432.  
  433.           COMn and PORTn
  434.  
  435.           X00 allows communications ports  to be swapped around.   That is,
  436.           the serial port that DOS calls COM1 can be mapped (reassigned) to
  437.           any X00 port.   Therefore, when a  reference in this  document is
  438.           made about  PORTn, it  refers to  the serial  I/O device  that is
  439.           mapped to  that X00  port.   When  a reference  is  made to  COM1
  440.           through  COM8,  it  refers to  the  serial  I/O  device that  DOS
  441.           knows/uses as COMn.   Also worth noting  is that DOS numbers  the
  442.           serial  I/0 devices  starting at  1 (COM1  through COM8)  and X00
  443.           numbers them starting at 0 (PORT0 through PORT7).
  444.  
  445.           X00's  default is to assign  PORT0 through PORT7  to COM1 through
  446.           COM8.
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.                                                                           6
  455.  
  456.                                  COMMAND LINE OPTIONS
  457.  
  458.           The  command line options are  included in the  command line that
  459.           invokes X00.  In several  cases only the first 1 or  2 characters
  460.           of the option need be entered.  In other cases, the entire option
  461.           name  must  be  spelled out.    Unless  otherwise  stated in  the
  462.           following descriptions,  the entire  option name must  be spelled
  463.           out.  The parameters are given one after another on the same line
  464.           and in any order.  The length of the command line is limited only
  465.           by DOS.
  466.  
  467.           Specifying number of ports
  468.  
  469.           If a  single  decimal number  is  in  the X00  command  line,  it
  470.           specifies  the number  of  ports that  X00  is to  simultaneously
  471.           support.   The default is  one port.   The maximum  value of  the
  472.           number of ports is 4 for non PS/2 systems and 8 for PS/2 systems.
  473.           If you  desire to use more than 4 ports  on a non PS/2, each port
  474.           address must  be specified (see mapping  port assignments below).
  475.           Input  and output  buffers are  allocated for  each of  the ports
  476.           specified.  Examples of usage are:
  477.  
  478.                When X00 is loaded as a Device Driver
  479.                     DEVICE=X00.SYS 3
  480.                     DEVICE=X00.SYS 8
  481.  
  482.                When X00 is loaded as a TSR
  483.                     X00 3
  484.                     X00 8
  485.  
  486.           B option, Locking Baud, Data, Parity and Stop bits
  487.  
  488.           Normally, the  application program sets  the baud rate  and other
  489.           parameters  controlling the  serial  I/O hardware.   Some  modems
  490.           provide  better  performance  when  the  communications  from the
  491.           computer to modem is constant (Locked).  That is, the computer to
  492.           modem speed is not the same as the modem to modem speed.  If this
  493.           option  is   used,  the  modem  must   support  RTS/CTS  hardware
  494.           handshaking and the feature must be enabled on the modem.
  495.  
  496.           The B command  line option  requires 2 parameters  and allows  an
  497.           optional  third parameter.  The  option is specified  in the form
  498.           B,PORTn,BAUD  RATE,PARITY.  You  will most  likely never  want to
  499.           lock the parity, data and stop bits.  Examples of usage are:
  500.  
  501.                When X00 is loaded as a Device Driver
  502.                     DEVICE=X00.SYS B,0,2400 B,1,19200 or
  503.                     DEVICE=X00.SYS B,1,19200,8N1
  504.  
  505.                When X00 is loaded as a TSR
  506.                     X00 B,0,2400 B,0,19200 or
  507.                     X00 B,1,19200,8N1
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.                                                                           7
  516.  
  517.  
  518.           Valid locked baud rates are: 75, 110, 135.5, 150, 300, 600, 1200,
  519.           1800, 2000,  2400, 3600, 4800,  7200, 9600, 19200,  28800, 38400,
  520.           57600, and 115200.
  521.  
  522.           I can  think of few conditions  where it is necessary  to use the
  523.           optional  third  parameter of  the B  command  line option.   The
  524.           optional  third parameter is made up of 3 characters that specify
  525.           the  locked setting for data  bits per character,  parity bit and
  526.           stop bit(s) in  that order.  The optional  third parameter can be
  527.           made up of  any combination  of the following  first, second  and
  528.           third characters.
  529.  
  530.                     First     Second         Third
  531.                     5         N = None       1
  532.                     6         E = Even       2
  533.                     7         O = Odd
  534.                     8         M = Mark (always 1)
  535.                               S = Space (always 0)
  536.  
  537.  
  538.           The first  character  specifies  the  number  of  data  bits  per
  539.           character,  the second  character specifies  the handling  of the
  540.           parity bit and the  third character specifies the number  of stop
  541.           bits.   When 5 data bits and  2 stop bits (eg 5N2) are specified,
  542.           the  number of stop bits will actually  be 1.5.  As stated above,
  543.           locking of the parity etc, is not advisable.
  544.  
  545.           Anytime an application program attempts to program the baud rate,
  546.           parity etc, through X00, the locked values will be substituted.
  547.  
  548.           Eliminate
  549.  
  550.           Normally,  when X00 is loaded a copyright notice is displayed for
  551.           5 seconds.  Using the eliminate  option will disable the 5 second
  552.           display  of the copyright  notice.  Only the  first letter (E) is
  553.           required to invoke this option.  Examples of usage are:
  554.  
  555.                When X00 is loaded as a Device Driver:
  556.                     DEVICE=X00.SYS ELIMINATE or
  557.                     DEVICE=X00.SYS E
  558.  
  559.                When X00 is loaded as a TSR
  560.                     X00 ELIMINATE or
  561.                     X00 E
  562.  
  563.           Defer
  564.  
  565.           The Defer option  creates problems  on most systems.   The  Defer
  566.           option should be avoided by most users.  X00 must  use several of
  567.           the  80x86 interrupts.  Normally,  X00 will hook  itself into the
  568.           80x86 interrupts when it is executed.  The Defer option tells X00
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.                                                                           8
  577.  
  578.           to  postpone hooking  into some  interrupts until  an XU  CAPTURE
  579.           command  is  executed.    If  the defer  option  is  used  and  a
  580.           subsequent  XU  CAPTURE  is  not  issued,  X00  may not  function
  581.           correctly.  Additionally,  the XU CAPTURE must be  executed prior
  582.           to  executing  a multitasker  like DESQview.    Only the  first 2
  583.           letters (DE) need  to used to specify  this option.   Examples of
  584.           usage are:
  585.  
  586.                When X00 is loaded as a Device Driver
  587.                     DEVICE=X00.SYS DEFER or
  588.                     DEVICE=X00.SYS DE
  589.  
  590.                When X00 is loaded as a TSR
  591.                     X00 DEFER or
  592.                     X00 DE
  593.  
  594.           The  default for  Defer is  off.   That is,  X00 will  by default
  595.           immediately hook into all necessary 80x86 interrupt vectors.
  596.  
  597.           DV
  598.  
  599.           The  DV command  line option is  only of interest  to those using
  600.           DESQview.   The  default for  this option  is off.   When  on (DV
  601.           specified  in the  command line),  X00 will  make DESQview  Pause
  602.           calls when it seems that  the application program is idle.   This
  603.           may make  time available for other  tasks to use.   Refer to your
  604.           DESQview manuals for details about the DESQview pause command.
  605.  
  606.           If you are  using DESQview, try  the DV option.   If it does  not
  607.           adversely affect your system, leave it enabled (on).  Examples of
  608.           usage are:
  609.  
  610.                When X00 is loaded as a Device Driver
  611.                     DEVICE=X00.SYS DV
  612.  
  613.                When X00 is loaded as a TSR
  614.                     X00 DV
  615.  
  616.           FIFO
  617.  
  618.           Only the first  letter of the command  (F) is required to  invoke
  619.           this option.  Some of the serial I/O hardware  devices have First
  620.           In First Out (FIFO) buffers.  This command line option is used to
  621.           specify the  number of characters that X00 can load into the FIFO
  622.           during  a single  transmit  interrupt.   In  general this  number
  623.           should be set  the size of the  FIFO minus 1.   For example,  the
  624.           popular 16550A has a 16  byte FIFO on both transmit and  received
  625.           data.  Thus, if this option is used, I suggest the value of 15 be
  626.           used for the 16550A.  Examples of usage are:
  627.  
  628.                When X00 is loaded as a Device Driver
  629.                     DEVICE=X00.SYS FIFO=10
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.                                                                           9
  638.  
  639.                     DEVICE=X00.SYS F=15
  640.  
  641.                When X00 is loaded as a TSR
  642.                     X00 FIFO=15
  643.                     X00 F=8
  644.  
  645.           The size of the receive FIFO is always set to the maximum by X00.
  646.  
  647.           NOFIFO
  648.  
  649.           This command line option is used to completely disable the use of
  650.           hardware FIFOs.  Examples of usage are:
  651.  
  652.                When X00 is loaded as a Device Driver
  653.                     DEVICE=X00.SYS NOFIFO
  654.  
  655.                When X00 is loaded as a TSR
  656.                     X00 NOFIFO
  657.  
  658.           NOPOST
  659.  
  660.           Normally,  when X00 is executed,  it will alter  the COM1 through
  661.           COM4 hardware port addresses  in BIOS RAM to match  the addresses
  662.           being used by X00.  By doing so, many DOOR type programs that use
  663.           INT  14h  for  their serial  I/O  will  work  correctly with  X00
  664.           installed.   This option (NOPOST) instructs X00 to leave the BIOS
  665.           RAM unchanged.  Examples of usage are:
  666.  
  667.                When X00 is loaded as a Device Driver
  668.                     DEVICE=X00.SYS NOPOST
  669.  
  670.                When X00 is loaded as a TSR
  671.                     X00 NOPOST
  672.  
  673.           SLOWCPU
  674.  
  675.           This command line option  is provided for those using  slower PCs
  676.           and those using software  that executes large amounts of  code on
  677.           an interrupt  level (such  as the timer  tick).  When  SLOWCPU is
  678.           specified,  X00 will make  the serial ports  the highest priority
  679.           interrupt.     This  feature  allows   (most)  4.77  mhz  PCs  to
  680.           receive/transmit at full  speed.  This option  may cause problems
  681.           in  some  environments.    Most  protected  mode  programs,  like
  682.           DESQview, will not  allow the  priority of the  interrupts to  be
  683.           changed.
  684.  
  685.                When X00 is loaded as a Device Driver
  686.                     DEVICE=X00.SYS SLOWCPU
  687.  
  688.                When X00 is loaded as a TSR
  689.                     X00 SLOWCPU
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.                                                                          10
  698.  
  699.           R, Set Receive Buffer Size
  700.  
  701.           The R command line option allows the user to set the  size of the
  702.           receive buffer.   The default size  of the receive buffer  is 512
  703.           bytes.   The size  of the  buffer must  be a power  of 2.   Valid
  704.           buffer sizes are:  256, 512,  1024, 2048, 4096,  8192, 16384  and
  705.           32768.   If an invalid buffer  size is specified, the  next lower
  706.           correct buffer size is used.
  707.  
  708.           Many users needlessly set  the size of the receive  (or transmit)
  709.           buffer too large.  Examples of usage are:
  710.  
  711.                When X00 is loaded as a Device Driver
  712.                     DEVICE=X00.SYS R=1024
  713.                     DEVICE=X00.SYS R=2048
  714.  
  715.                When X00 is loaded as a TSR
  716.                     X00 R=1024
  717.                     X00 R=2048
  718.  
  719.  
  720.           T, Set Transmit Buffer Size
  721.  
  722.           This option is identical to the R command line option (see above)
  723.           except it sets the size of the transmit buffer.
  724.  
  725.  
  726.           VP or Master Interrupt Enable
  727.  
  728.           VP stands for Vector Port which  is not a very good name for  the
  729.           option.  Some multiple port serial I/O cards default  to only two
  730.           ports enabled when power is turned on.  A specified value must be
  731.           written to an  I/O port  to enable the  additional serial  ports.
  732.           Simply stated the VP  command line option says to write the given
  733.           value to the given port.  Examples of usage are:
  734.  
  735.                When X00 is loaded as a Device Driver
  736.                     DEVICE=X00.SYS VP=03FF,80
  737.  
  738.                When X00 is loaded as a TSR
  739.                     X00 VP=3FF,80
  740.  
  741.           Both  of the above  examples in effect  says, write the  value 80
  742.           (hex) the I/O port at 3FF.
  743.  
  744.  
  745.  
  746.           Mapping port assignments
  747.  
  748.           This  is the most complicated command line option for many users.
  749.           By default,  X00 maps up to  8 serial I/O ports  (PORTS 0 through
  750.           7).  X00 will (attempt to) determine the hardware architecture on
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.                                                                          11
  759.  
  760.           which  it is  being executed.   If  a PS/2  is detected  then the
  761.           default Serial I/O  port addresses will be set to  match the PS/2
  762.           (see Appendix .   If X00  detects that the  system is not a  PS/2
  763.           type system, then the default port addresses are as follows:  1 -
  764.           Standard  addresses for COM1 and  COM2, 2 -  The defacto standard
  765.           for COM3  and COM4,  and nothing for  COM5 through COM8  (ports 4
  766.           through 7).
  767.  
  768.           Port mapping is necessary if your hardware configuration does not
  769.           match the PS/2 or  defacto standard for  non PS/2 systems.   COM1
  770.           and COM2  are the  same for the  PC, XT,  AT and PS/2.   However,
  771.           hardware  specifications for COM3  through COM8  became available
  772.           only when IBM released the PS/2.
  773.  
  774.           Many  multiple  serial port  cards  are  available for  pre  PS/2
  775.           systems that use a defacto standard.  The most common assignments
  776.           that I have  seen for COM3 and COM4 are: COM3 at port address 3E8
  777.           using  IRQ 3.  COM4  at port address 2E8 using  IRQ 4.  Above the
  778.           fourth port,  I have not  observed anything resembling  a defacto
  779.           standard.
  780.  
  781.           X00 will  support almost any serial  I/O card.   However, in most
  782.           cases,  port mapping  is required  for anything  beyond  COM1 and
  783.           COM2.
  784.  
  785.           Mapping port assignments uses two basic forms.  They are:
  786.                PORTn=COMn,IRQn
  787.                PORTn=HEXADDRESS,IRQn
  788.  
  789.           Where:
  790.                PORTn is the X00 port number and must be 0 through 7.
  791.  
  792.                COMn is a standard DOS port and must be COM1 through COM8.
  793.  
  794.                IRQn is the IRQ use by the serial port and must be IRQ0
  795.                through IRQ15.
  796.  
  797.                HEXADDRESS is a hexadecimal I/O port address that addresses
  798.                the serial I/O device.
  799.  
  800.           In both basic forms, the IRQn is optional.  X00 defaults all IRQn
  801.           to IRQ3  except COM1 which  defaults to IRQ4.   Examples of usage
  802.           are:
  803.  
  804.                When X00 is loaded as a Device Driver
  805.                     DEVICE=X00.SYS 0=COM4
  806.                     DEVICE=X00.SYS 0=COM4,IRQ5
  807.                     DEVICE=X00.SYS 0=2E8,IRQ3
  808.                     DEVICE=X00.SYS 2=2E8
  809.  
  810.                When X00 is loaded as a TSR
  811.                     X00 0=COM4
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.                                                                          12
  820.  
  821.                     X00 0=COM4,IRQ5
  822.                     X00 0=2E8,IRQ3
  823.                     X00 2=2E8
  824.  
  825.  
  826.           Un-installing X00
  827.  
  828.           When X00 is installed as a TSR, it can be  un-installed by simply
  829.           executing X00 with no command line parameters.  If you wish to be
  830.           sure that you do not accidently un-install X00, always execute it
  831.           with a harmless parameter like X00 E.
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.                                                                          13
  840.  
  841.                                     Multi-Tasking
  842.  
  843.           By  far, DESQview seems to be the multi-tasking software that X00
  844.           is  most  often used  with.    At the  time  of  this writing,  I
  845.           personally use DESQview to run a multi line BBS.
  846.  
  847.           I believe it is best to load X00 before the multi-tasking program
  848.           and  to load  it as a  device driver.   This  enables all windows
  849.           (tasks)  access to X00.   Loading X00 first  also allows multiple
  850.           windows to share the same IRQ.
  851.  
  852.           If  you have loaded X00 prior to  DESQview, you need to configure
  853.           the window  for no  communications.   That is,  answer NO  to the
  854.           configuration   questions,   Uses  Serial   Ports   and  Optimize
  855.           communications.     I  also  suggest  that   you  enable  printer
  856.           management within the window.  Enabling printer management allows
  857.           a  remote drop  to DOS  to work  on many  systems.   The Optimize
  858.           communications  option and  the  Printer  management  option  are
  859.           established with  the DESQview  SETUP program.   The  Uses serial
  860.           ports  (Y,N,1,2) option is in  the "Change a  Program" portion of
  861.           window configuration.
  862.  
  863.           In  several  cases  I  have  gained  a  significant  increase  in
  864.           performance by turning X00 on prior  to executing a program.  Two
  865.           notable cases are GATEWAY and DOORWAY.  I used XU to turn X00 on.
  866.           For example, XU PORT:n:ON just before invoking DOORWAY or GATEWAY
  867.           produced significantly better input and output from the programs.
  868.           Depending  on your environment, an  XU PORT:n:OFF may  have to be
  869.           issued after  the program terminates.   Also note that the  n for
  870.           PORTn is 1 less than the n in GATEn and COMn.
  871.  
  872.           The communications windows seem  to work better if the  ticks for
  873.           the  foreground and  background  are set  relatively  low.   Most
  874.           people that  I have talked to use 2 ticks for both foreground and
  875.           background.  Only experimentation will determine the best setting
  876.           for your system.
  877.  
  878.           If you do  not wish to share  an IRQ, you can  load X00 as a  TSR
  879.           inside  a DESQview window.  When loaded inside a DESQview window,
  880.           X00 is  only available to programs in that window.  X00 should be
  881.           configured  to  support   only  1  serial  port  and  you  should
  882.           specifically name the port that X00 will use in the command line.
  883.           For example use X00 0=COM1,  instead of X00 1 or just  plain X00.
  884.           Identifying the specific  serial port  to be used  in the  window
  885.           eliminates the chance that X00 will interfere with another active
  886.           window.
  887.  
  888.           I strongly recommend that you use the 16550A (or later)  SIO chip
  889.           if you are using a multi-tasking system of any kind.
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.                                                                          14
  898.  
  899.  
  900.           Most programs written to use BIOS INT 14h will work directly with
  901.           X00's enhanced services.  You should try turning  X00 on using an
  902.           XU  PORT:n:ON  command  just  prior  to  executing  the  program.
  903.           Programs  that  do not  have their  own  interrupt I/O  will most
  904.           likely give better performance.
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.                                                                          15
  913.  
  914.                               THE BIOS INT 14h EMULATOR
  915.  
  916.           X00 is a  BIOS INT 14h enhancement.   So what  is the need for  a
  917.           BIOS  emulator also?   Well, when X00  is turned off  for a given
  918.           port,  it  does  not process  the  INT  14h  functions using  the
  919.           enhanced code.   Prior  to the introduction  of the BIOS  INT 14h
  920.           emulator, X00 simply passed calls to inactive serial ports to the
  921.           BIOS INT 14h.
  922.  
  923.           Serial   communications  has   changed  considerably   since  the
  924.           definition of  the original BIOS for  the PC.   However, the BIOS
  925.           services for  serial  communications have  changed  very  little.
  926.           Many  program are still written  to use the  original BIOS serial
  927.           communications  services.  Many older  programs that use the BIOS
  928.           communications services are still widely used.
  929.  
  930.           Problems occur  when advanced  high  speed modems  are used  with
  931.           these programs.  Many of the  programs are totally unaware of the
  932.           concept of RTS/CTS handshaking that most of the high speed modems
  933.           use.  The programs cannot be aware that the user  may have mapped
  934.           the port  addresses.   BIOS  for  all systems  (that  I know  of)
  935.           support only  4 serial  communications ports except  PS/2 systems
  936.           which support 8.
  937.  
  938.           I added  the BIOS emulator to X00 to support many of the programs
  939.           that  are not (or cannot  be) aware of  the active communications
  940.           environment.
  941.  
  942.           By default,  X00's BIOS INT 14h  emulator is enabled.   It can be
  943.           disabled by adding USEBIOS to the command line that invokes X00.
  944.  
  945.           When the emulator is enabled, port mapping, baud rate locking and
  946.           hardware handshaking for the serial  port(s) are maintained and 8
  947.           serial ports are supported.   If the serial  I/O chip is  FIFOed,
  948.           the  emulator allows the FIFOs to be  used.  This means that many
  949.           programs  written to use  BIOS can be  used in  the more advanced
  950.           communications environments.
  951.  
  952.           The BIOS  emulator can  be activated and  deactivated dynamically
  953.           using XU.
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.                                                                          16
  962.  
  963.                                      IRQ SHARING
  964.  
  965.           Sharing the same IRQ for multiple communications ports is not for
  966.           the weak of heart (or mind).
  967.  
  968.           Most popular  multitasking software  seems to do  everything they
  969.           can to  prevent the sharing of  a single IRQ between  two or more
  970.           tasks (windows).   This big brother attitude  of the multitaskers
  971.           is cause of most of the  problems in sharing a single IRQ between
  972.           several  serial  communications  ports.    Several communications
  973.           ports  sharing a single IRQ is not  too difficult to manage.  The
  974.           problem is the multitaskers not allowing the sharing of an IRQ by
  975.           more than one task (window).
  976.  
  977.           In any  case, version 1.20 of X00  has been tested with DESQview,
  978.           RBBS  and  8 comm  ports  sharing  IRQ 3.    I  have also  tested
  979.           MultiLink  with  2  comm  ports  sharing  the  same  IRQ.    With
  980.           MultiLink, I had to use  the NASTY option.  Do not  use the NASTY
  981.           option with DESQview.
  982.  
  983.           The  method  I  have developed  to  force sharing  of  an  IRQ by
  984.           multiple  comm   ports  should   work  on  most,   if  not   all,
  985.           multitaskers.  It is too big a job, and too costly for me to test
  986.           them all.
  987.  
  988.           Some general rules are as follows:
  989.  
  990.           1  - X00 should  be loaded before  the multitasker.   That is, if
  991.           your multitasker allows the  loading of device drivers  into each
  992.           window, DO NOT DO  IT if you wish to  share an IRQ.  Load  X00 at
  993.           boot time and it should then be available to all tasks (windows).
  994.  
  995.           2 - Two different  boards (plugged into different slots)  can not
  996.           share the same IRQ.  This is a hardware limitation and can not be
  997.           corrected  by software.  This means that  you can not plug in two
  998.           internal  modems, set them  for the same  IRQ and  expect them to
  999.           work.   This  does not  apply to  PS/2 systems.   The  problem of
  1000.           multiple  boards sharing the same IRQ was corrected in the PS/2's
  1001.           buss design.
  1002.  
  1003.           3 -  When  configuring  the DESQview  windows,  we  specified  NO
  1004.           communications  in the  window.   Remember, it  is X00  (which is
  1005.           hopefully  outside   any  window)   that  is  doing   the  actual
  1006.           communications and not the application program inside the window.
  1007.  
  1008.           4 - X00 can not  (will not) share an IRQ with other software.  If
  1009.           you attempt to run a program in a window that uses an IRQ that is
  1010.           being used by X00, the results are unpredictable.
  1011.  
  1012.           5 - Do not load X00 into EMS memory.  Loading high is okay.
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.                                                                          17
  1021.  
  1022.                     Appendix A, Hardware Port and IRQ Assignments
  1023.  
  1024.           I have  obtained the following information  from various sources.
  1025.           Accuracy is not guaranteed.  In fact, nothing in this document is
  1026.           guaranteed.
  1027.  
  1028.           Addresses and IRQs for COM1 and COM2
  1029.  
  1030.                COM1 uses 03F8h and IRQ4
  1031.                COM2 uses 02F8h and IRQ3
  1032.  
  1033.           Defacto standard for COM3 and COM4 for PC, XT and AT
  1034.  
  1035.                COM3 uses 03E8h and IRQ4
  1036.                COM4 uses 02E8h and IRQ3
  1037.  
  1038.           Addresses and IRQ for COM3 through COM8 on the PS/2
  1039.  
  1040.                COM3 uses 3220h and IRQ3
  1041.                COM4 uses 3228h and IRQ3
  1042.                COM5 uses 4220h and IRQ3
  1043.                COM6 uses 4228h and IRQ3
  1044.                COM7 uses 5220h and IRQ3
  1045.                COM8 uses 5228h and IRQ3
  1046.  
  1047.           All  PCs prior to the PS/2 only  used 12 bits to address hardware
  1048.           I/0 ports.   Systems prior to  the PS/2 and EISA  can not address
  1049.           the standard  addresses for COM3 through COM8.  If an AT of below
  1050.           attempts  to  address  COM3   through  COM8  using  the  standard
  1051.           addresses, only  the low 12 bits  of the address are  used.  That
  1052.           is,  the high digit of  the hexadecimal address  will be ignored.
  1053.           This  means that any reference to COM3 through COM8 will actually
  1054.           address ports 220h through 22Fh.
  1055.  
  1056.           You  should avoid  expansion boards that  use ports  220h through
  1057.           22Fh unless the expansion board is a serial I/O board. 
  1058.  
  1059.           X00 will (attempt to) determine the hardware architecture that it
  1060.           is being executed  on and  use to appropriate  port addresses  as
  1061.           defaults.
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.                                                                          18
  1070.  
  1071.                                 Appendix B, SIO Chips
  1072.  
  1073.  
  1074.           The following is a collection of comments developed from hearsay,
  1075.           random documents, experience,  and technical specifications.  So,
  1076.           take it with a grain of salt.  Order information from the various
  1077.           manufactures if you want accurate information.
  1078.  
  1079.           A very good reference book that I use is  available from National
  1080.           Semiconductor Corporation.   It  covers most  of the  SIO devices
  1081.           (also  called UARTs)  that you will  find in all  PCs and clones.
  1082.           The title  of the book is  Microcommunications Elements Databook.
  1083.           The publication number (manual number) is  400066.  I am not sure
  1084.           that   the   book  can   be   ordered   directly  from   National
  1085.           semiconductor.  They  may   require  that  you  get   it  from  a
  1086.           distributor.   In any case, the address on the back of the manual
  1087.           is:
  1088.  
  1089.                National Semiconductor Corporation
  1090.                2900 Semiconductor Drive
  1091.                P.O. Box 58090
  1092.                Santa Clara, CA 95052-8090
  1093.  
  1094.                Tel:(408)721-5000
  1095.                TWX:(910)339-9240
  1096.  
  1097.           8250
  1098.  
  1099.           As best that I know, the 8250 was the first  SIO chip (integrated
  1100.           circuit) that was  used by the  IBM PC  and many clones.   In  my
  1101.           opinion,  it was a poor choice  on the part of IBM.   I feel many
  1102.           superior devices, at comparable  prices, were readily  available.
  1103.           At that time, I feel the 8251A or the 8530 would have been better
  1104.           choices.   I feel IBM  used the 8250  to insure the PC  would not
  1105.           have   synchronous  communications   capability  in   a  standard
  1106.           configuration.
  1107.  
  1108.           From  a hardware standpoint the 8250 is a relatively slow device.
  1109.           It is advisable that programmers not perform successive inputs or
  1110.           outputs to this device.  It seems that software programs can load
  1111.           the various registers of the 8250 faster  than it can process the
  1112.           information.    The  8250  had  a  total  of  7 registers.    The
  1113.           specifications state that 56kb is the maximum baud rate.
  1114.  
  1115.           8250A
  1116.  
  1117.           I believe the 8250A is the  8250 with some bug fixes.  I  have no
  1118.           idea  what  the bugs  may  have  been.   A  quick  glance at  the
  1119.           specifications shows the speed  of the 8250 and 8250A  to be much
  1120.           the  same.   The 8250A  added an  8th register.   This additional
  1121.           register enables software to detect if an 8250 is installed.  The
  1122.           specifications state that 56kb is the maximum baud rate.
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.                                                                          19
  1131.  
  1132.           16450
  1133.  
  1134.           The  16450 seems to be a speeded up  version of the 8250A.  There
  1135.           is no  direct way (that  I know  of) for software  to detect  the
  1136.           difference between an 8250A and a 16450.  I believe the 16450 was
  1137.           developed to  eliminate the  need for  software to  insert delays
  1138.           between successive  accesses to  the device.   The specifications
  1139.           indicate the 16450 is a much faster device than its predecessors.
  1140.           The additional speed is only the speed at which the processor can
  1141.           access the  device.  The maximum baud rate for the 16450 is still
  1142.           stated at  56kb.  However, I  have been told by  some people that
  1143.           they have run the  16450 successfully at much higher speeds. I do
  1144.           not believe there was ever a 16450A.
  1145.  
  1146.           16C451
  1147.  
  1148.           The  16C451 is a CMOS version  of the 16450.  CMOS  is a term for
  1149.           the  material and  manufacturing process  used to make  the part.
  1150.           CMOS typically uses less  power than other technologies.   If you
  1151.           are  not  designing hardware,  you should  view  the 16C451  as a
  1152.           16450.
  1153.  
  1154.           16550 Non A
  1155.  
  1156.           It is  hard to  find a 16550  (Non A).   I  was told by  National
  1157.           Semiconductor that  they did  everything  they could  to get  all
  1158.           16550s  back.  X00 (and  XU) will detect a 16550  and tell you if
  1159.           you have one.   I am told  that the 16550 was  installed in early
  1160.           PS/2 systems.
  1161.  
  1162.           The 16550  was the first  shot at  a FIFOed version  of the  8250
  1163.           family  from  National semiconductor.    However, I  was  told by
  1164.           National  Semiconductor  that the  FIFOs  of  the 16550  are  not
  1165.           reliable and  they should not be enabled.  X00 will treat a 16550
  1166.           like  a 16450.    In  this mode,  they  are  reliable.   National
  1167.           Semiconductor would not provide  me with a specification for  the
  1168.           16550.  However, I suspect  its maximum baud rate is the  same as
  1169.           the 16550A which is 256kb.
  1170.  
  1171.  
  1172.           16550A, 16550AF and 16550AFN
  1173.  
  1174.           In the  manuals  that I  have,  National Semiconductor  does  not
  1175.           explain  the differences between the  16550A and the  16550AF.  I
  1176.           suspect the AF part may have a few bug fixes.  I believe the N in
  1177.           AFN  describes packaging,  ceramic  versus  plastic,  DIP  versus
  1178.           surface mount etc.
  1179.  
  1180.           In  the opinion  of the  author, there is  no substitute  for the
  1181.           16550A (and its  successors) in the 8250 type series.  The 16550A
  1182.           is compatible with software written for the entire family of 8250
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.                                                                          20
  1191.  
  1192.           type  devices.  Programs that  are 16550A aware  can provide much
  1193.           improved performance over previous devices.
  1194.  
  1195.           The  maximum  baud rate  for the  16550A  is specified  at 256kb.
  1196.           However, due to the hardware design of the PC et al, 115kb is the
  1197.           maximum baud rate that can be programmed.
  1198.  
  1199.           The 16550A can be  plugged into the same socket that  contains an
  1200.           8250, 8250A  or 16450.  If  your SIO expansion board  has the SIO
  1201.           chips  in  sockets,  you can  upgrade  to  the  16550A by  simply
  1202.           removing the old chips and replacing them with 16550As.
  1203.  
  1204.           The key to  the performance increase of the 16550A  is its FIFOs.
  1205.           It has 16 byte FIFOs for both transmit and receive data.
  1206.  
  1207.           16550s Made by Western Digital
  1208.  
  1209.           I have been told, but I have not verified for myself, that 16550s
  1210.           made  by Western  Digital have  a problem  with their  FIFOs when
  1211.           working at 2400 baud or below.
  1212.  
  1213.           16C551
  1214.  
  1215.           The  16C551 is  a CMOS  version of  the 16550AF.   See  the above
  1216.           description of  the 16C451 for a discussion of CMOS.  Do not feel
  1217.           you need to upgrade from a 16550A or AF to a 16C551.  There is no
  1218.           gain from an existing users point of view.
  1219.  
  1220.           16C552
  1221.  
  1222.           The 16C552 is two 16C551s  on a single chip.  These  devices will
  1223.           start showing up on multi-port serial I/O cards.
  1224.  
  1225.           82510
  1226.  
  1227.           I  believe Intel is the only company that manufactures the 82510.
  1228.           The 82510  is feature rich with several  modes of operation.  Its
  1229.           default  mode is to operate as  a 16450.  The 82510  has a 4 byte
  1230.           FIFO  for both  transmit and  receive  data.   A 4  byte FIFO  is
  1231.           sufficient to provide significant performance over a basic 16450.
  1232.  
  1233.           The  82510 is small in size.  Therefore,  it is found in many lap
  1234.           tops.
  1235.  
  1236.           The 82510 is  somewhat of a sleeper.  I believe  it would be much
  1237.           more widely used if Intel had promoted it more.  However, given a
  1238.           choice  between  the 82510  and the  16550A,  I would  select the
  1239.           16550A.
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.                                                                          21
  1248.  
  1249.                        Appendix C, Multi-Port Serial I/0 Cards
  1250.  
  1251.           I  get many requests for information  about multi-port serial I/O
  1252.           card.   I will describe  the boards  that I know  about (or  have
  1253.           heard about) here.  I  will add to the list as  I receive precise
  1254.           information from users.
  1255.  
  1256.           My  personal experience  is with two  boards that  allow multiple
  1257.           serial I/O ports to share  a single IRQ.  The first board  that I
  1258.           experimented with  was the  Connect-Com 4  from Software  Link in
  1259.           Atlanta Georgia.  The second board is the 4 PORT RS-232 CARD from
  1260.           Decision-Computer International in Taipei, Taiwan.
  1261.  
  1262.           Connect-Com 4
  1263.  
  1264.           I found the manual for the Connect-Com 4 to be very confusing and
  1265.           their  tech support  even less helpful.   I  was able  to get the
  1266.           board  configured to  use  the standard  COM1  and COM2  and  the
  1267.           defacto standard for COM3  and COM4.  If you use  the Connect-Com
  1268.           4, I suggest  that you use it  in this manner.   This means  that
  1269.           COM1 and COM3 will use IRQ4 and COM2 and COM4 will use IRQ3.  The
  1270.           Connect-Com 4  has an  8 position DIP  switch for  configuration.
  1271.           The setting that I used was positions 2, 3, 7 and  8 ON (up), and
  1272.           all  other positions OFF (down).  In retrospect the Connect-Com 4
  1273.           seems  a bit expensive.   However, once  configured properly, the
  1274.           Connect-Com  4  worked without  problem.   Software  Link  can be
  1275.           reached in Atlanta Georgia at 404-448-5465.
  1276.  
  1277.           4 and 8 Port Boards from Decision-Computer
  1278.  
  1279.           The second  board that I have personally used, and the one that I
  1280.           am  currently using  is from  Decision-Computer.   The  manual is
  1281.           written  well enough that I  did not need  any technical support.
  1282.           There are two boards of interest from Decision-Computer, one is a
  1283.           4 port  serial I/O card  and the  other is an  8 port  serial I/O
  1284.           card.   I read  somewhere in the  documentation (which  I can not
  1285.           find  at this  time)  that  the  boards are  a  clone  of  boards
  1286.           available from AST.
  1287.  
  1288.           The boards from  Decision-Computer are configured by jumpers.   I
  1289.           use 4  ports of  the 8  port card.   I  selected the  (so called)
  1290.           Compatible Mode.  This means that the first two  serial I/O ports
  1291.           operate   as  standard  COM1   and  COM2  using   IRQ4  and  IRQ3
  1292.           respectively.  The jumper setting for Compatible Mode is  clearly
  1293.           shown  in  the manual  (page  8  of my  manual).    The I/O  port
  1294.           addressed used in that mode are  also clearly defined on the same
  1295.           page.
  1296.  
  1297.           A second jumper that must be set (JP2) defines the number of wait
  1298.           states.   I set  the  jumper in  position 3  which  means 2  wait
  1299.           states.  This was  for a 20 mhz  386 system.  This setting  works
  1300.           fine for me.  More wait  states may be required or less  may work
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.                                                                          22
  1309.  
  1310.           on your system.   The amount of time lost due to  wait states for
  1311.           serial I/O is very minimal.
  1312.  
  1313.           The  last jumper(s) for the Decision-Computer 8 port RS-232 board
  1314.           is the selection of the IRQ(s) for ports other than  the first 2.
  1315.           I selected  IRQ3 for the additional  ports that I am  using (I am
  1316.           only using 4 of the 8).  This means that the first port (COM1) is
  1317.           using IRQ4, all of the other (3) ports are using  IRQ3.  Position
  1318.           2 of JP3 (left side) is the jumper that I installed.
  1319.  
  1320.           Now  for the  seemingly tough  part.   I  ordered the  board from
  1321.           Decision-Computer in  Taipei, Taiwan.   Why?  Simple,  the price.
  1322.           The 4 port version of the card is $36.00 US dollars.  The  8 port
  1323.           version of the  card is $100.00  US dollars.   I have not  really
  1324.           looked very hard, but I have not seen anything near  this pricing
  1325.           in the US.
  1326.  
  1327.           With a few exceptions, I found ordering from Taiwan about as easy
  1328.           as ordering  from a US company.  The exceptions are, they like to
  1329.           use a FAX for ordering  etc. and you will have to pay in advance.
  1330.           I  have ordered several items from Taiwan, paying in advance, and
  1331.           I  have not  lost  a nickel  yet.   Decision-Computer  will  send
  1332.           brochures  if  you request  them.   They  can be  reached  at the
  1333.           following address (FAX is best):
  1334.  
  1335.                Decision-Computer International Co., LTD.
  1336.                4/F No. 31-3 Alley 4, Lane 906
  1337.                Ming-Shen East Road Taipei, Taiwan
  1338.                R. O. C.
  1339.  
  1340.                Tel: (02) 766-5753 or 765-9782 or 796-5786
  1341.                FAX: 886-2-7665702
  1342.                TELEX: 16059 DECISION
  1343.  
  1344.           To send a FAX from this area to Decision, I dial:
  1345.                011-886-2-7665702
  1346.  
  1347.           The  best  way to  order  is to  have  your bank  wire  the money
  1348.           directly to Taiwan.   Be sure that you specify Federal Express as
  1349.           the shipper  from Taiwan to  the US.   Federal Express  will take
  1350.           care  of any  Customs hassle.   In  most cases  there will  be no
  1351.           customs fees.   In the worst case that I  have experiences, I had
  1352.           to pay Federal 2 or 3 dollars in customs fees.
  1353.  
  1354.           Stargate Plus 8 board from Software Link
  1355.  
  1356.           Dan  Fox originally helped me with the testing of multiple serial
  1357.           I/O ports sharing  a single IRQ.  He informed  me that the serial
  1358.           I/O board that he uses is a  Stargate Plus 8 Board.  He purchased
  1359.           the board  from Software  Link in Atlanta  Georgia, 404-448-5465.
  1360.           Dan has all 8 ports using IRQ3.
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.                                                                          23
  1369.  
  1370.                                         INDEX
  1371.  
  1372.           16450 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1373.           16550 Non A . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1374.           16550A  . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1375.           16550AF . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1376.           16550AFN  . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1377.           16550s Made by Western Digital  . . . . . . . . . . . . . . .  20
  1378.           16C451  . . . . . . . . . . . . . . . . . . . . . . . . . . .  19
  1379.           16C551  . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  1380.           16C552  . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  1381.           8250  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  1382.           8250A . . . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  1383.           82510 . . . . . . . . . . . . . . . . . . . . . . . . . . . .  20
  1384.           Addresses and IRQ for COM3 through COM8 on the PS/2 . . . . .  17
  1385.           Addresses and IRQs for COM1 and COM2  . . . . . . . . . . . .  17
  1386.           Appendix A, Hardware Notes  . . . . . . . . . . . . . . . . .  17
  1387.           Appendix B, SIO Chips . . . . . . . . . . . . . . . . . . . .  18
  1388.           Appendix C, Multi-Port Serial I/0 Cards . . . . . . . . . . .  21
  1389.           B option, Locking Baud, Data, Parity and Stop bits  . . . . . . 6
  1390.           Baud rates  . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  1391.           BIOS RAM  . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  1392.           CAPTURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  1393.           COMn and PORTn  . . . . . . . . . . . . . . . . . . . . . . . . 5
  1394.           CONFIG.SYS  . . . . . . . . . . . . . . . . . . . . . . . .  4, 5
  1395.           Defacto standard for COM3 and COM4  . . . . . . . . .  11, 17, 21
  1396.           Defer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  1397.           DESQview  . . . . . . . . . . . . . . . . . . . . .  4, 8, 13, 16
  1398.           DV  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
  1399.           Eliminate . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  1400.           FIFO  . . . . . . . . . . . . . . . . . . . . .  8, 9, 15, 19, 20
  1401.           FOSSIL  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  1402.           GETTING STARTED . . . . . . . . . . . . . . . . . . . . . . . . 4
  1403.           IRQ SHARING . . . . . . . . . . . . . . . . . . . . . . . . .  16
  1404.           Licensing Information . . . . . . . . . . . . . . . . . . . . . 2
  1405.                Commercial License . . . . . . . . . . . . . . . . . . . . 2
  1406.                Non-Commercial License . . . . . . . . . . . . . . . . . . 2
  1407.           Locked  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  1408.           Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  1409.                Baud . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  1410.                Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
  1411.                Parity and Stop bits . . . . . . . . . . . . . . . . . . . 6
  1412.                Valid locked baud rates  . . . . . . . . . . . . . . . . . 7
  1413.           Mapping port assignments  . . . . . . . . . . . . . . . . . .  10
  1414.           Multi-Tasking . . . . . . . . . . . . . . . . . . . . . . . .  13
  1415.           NOFIFO  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  1416.           NOPOST  . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  1417.           Number of data bits . . . . . . . . . . . . . . . . . . . . . . 7
  1418.           Number of stop bits . . . . . . . . . . . . . . . . . . . . . . 7
  1419.           Parity bit  . . . . . . . . . . . . . . . . . . . . . . . . . . 7
  1420.           PKUNZIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  1421.                Authentic files  . . . . . . . . . . . . . . . . . . . . . 4
  1422.  
  1423.  
  1424.  
  1425.  
  1426.  
  1427.  
  1428.  
  1429.                                                                          24
  1430.  
  1431.           Port assignments  . . . . . . . . . . . . . . . . . . . . . .  10
  1432.           Quick Start . . . . . . . . . . . . . . . . . . . . . . . . . . 4
  1433.           R, Set Receive Buffer Size  . . . . . . . . . . . . . . . . 9, 10
  1434.           RBBS  . . . . . . . . . . . . . . . . . . . . . . . . . . . .  16
  1435.           SIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  1436.           SIO Chips . . . . . . . . . . . . . . . . . . . . . . . . . .  18
  1437.           SLOWCPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
  1438.           Specifying number of ports  . . . . . . . . . . . . . . . . . . 6
  1439.           T, Set Transmit Buffer Size . . . . . . . . . . . . . . . . .  10
  1440.           Terminate and Stay Resident . . . . . . . . . . . . . . . . . . 5
  1441.           THE BIOS INT 14h EMULATOR . . . . . . . . . . . . . . . . . .  15
  1442.           TSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
  1443.           Uninstalling X00  . . . . . . . . . . . . . . . . . . . . . .  12
  1444.           VP or Master Interrupt Enable . . . . . . . . . . . . . . . .  10
  1445.           Warranty  . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  1446.           WHAT IS X00 . . . . . . . . . . . . . . . . . . . . . . . . . . 1
  1447.  
  1448.