home *** CD-ROM | disk | FTP | other *** search
/ Bila Vrana / BILA_VRANA.iso / 019A / ONEFOS09.ZIP / ONEREF.TXT < prev    next >
Text File  |  1996-06-15  |  50KB  |  1,116 lines

  1.              Functions Reference Manual for the ONEFOSsil Developer
  2.             (C) Copyright 1995-96 by Carl Morris and Morris Softronics
  3.          ONEFOSsil, A low level serial communications driver for MS-DOS
  4.                      based FOSSIL 5 compliant applications.
  5.  
  6.                                   Introduction
  7.  
  8.     This document is for developers wanting to use ONEFOSsil specific
  9.     features and for developers just learning about the FOSSIL
  10.     specification.  ONEFOSsil supports most FOSSIL 5 and X00 extended
  11.     functions, and this document will help describe any differences.
  12.     Portions of this document are copyright by VEP Software, Rick Moore, and
  13.     Raymond Gwinn.  The rest of this document is copyright by Morris
  14.     Softronics and Carl Morris.
  15.  
  16.     This documentation is distributed as is and is provided with no
  17.     guarantees.  You use the information contained within at your own risk.
  18.  
  19.                      What is ONEFOSsil and a FOSSIL driver?
  20.  
  21.     ONEFOSsil is a simplified serial communications driver for 8250 series
  22.     UART's and MS-DOS based machines running applications requiring a simple
  23.     FOSSIL 5 communications driver.  ONEFOSsil only provides FOSSIL based
  24.     services.
  25.  
  26.     FOSSIL is an acronym derived from Fido Opus Seadog Standard Interface
  27.     Layer.  The FOSSIL specification was intended to permit machine
  28.     independent software (Fido, Opus, and Seadog at the time) to be created
  29.     and ran on any MS-DOS based 8086 based computer that had a FOSSIL
  30.     compatible driver.  Those days are much over, and FOSSIL compatible
  31.     drivers are only used as a low level communications interface for
  32.     application software.  A better specification is needed to keep up with
  33.     today's quickly changing world, though.
  34.  
  35.     ONEFOSsil does not maintain total compatibility with the FOSSIL 5
  36.     specification.  These differences will be noted in this document, but
  37.     will seldom cause problems with most modern software.
  38.  
  39.                                    Interface
  40.  
  41.     ONEFOSsil's Application Program Interface is partly based on the PC BIOS
  42.     communications interface.  As such, the driver will be entered with an
  43.     8086 instruction INT 14h.  A function number is passed in 8086 register
  44.     AH and other registers are used as needed.  Return codes from functions
  45.     will very from function to function, and is one of the most confusing
  46.     aspect of FOSSIL programming; they're not logical!
  47.  
  48.     Registers are not modified by ONEFOSsil unless otherwise specified.
  49.     Note that this is not true about all FOSSIL drivers.  While this
  50.     document covers basic FOSSIL functions, some differences will be
  51.     encountered from FOSSIL to FOSSIL.
  52.  
  53.     In most cases, functions will require a port number to operate.  In all
  54.     cases, port numbers are passed in register DX.  Most FOSSIL's only
  55.     support ports 0 - 7.  FOSSIL to DigiBoard converters usually only
  56.     support 0 - 15.  ONEFOSsil supports ports 0 - 63.  Notice that in most
  57.     cases, the port number is one less than the COM port number; but, in
  58.     most FOSSIL's, the port can be specified on any address/irq combination,
  59.     or may not even map to a COM port at all.
  60.  
  61.     As a note to developers, FOSSIL functions should not be called in a way
  62.     that could cause active code to be reentered.  ONEFOSsil and many other
  63.     FOSSIL's are re-entrant, but not to that great of a degree.
  64.  
  65.                                    Detection
  66.     Detecting FOSSIL drivers vary.  The FOSSIL specification states that to
  67.     detect a FOSSIL, one should look at the 6th byte (3rd word) after the
  68.     start of the INT 14h service routine for the word 1954h, followed by a
  69.     byte, the maximum function supported by the FOSSIL driver.  However,
  70.     this is unreliable if other utilities and/or drivers have hooked the INT
  71.     14h interrupt vector since the FOSSIL was loaded.  It is not suggested
  72.     to use this method.  Instead, it is better to just make the call to the
  73.     "Activate" function 04h for the port you want to open and check its
  74.     return codes.  Almost all current applications detect the FOSSIL in this
  75.     way.  Another method, which only works for a few drivers, is to call the
  76.     "Information" function, and check its return codes.  X00 only works
  77.     correctly if the FOSSIL port called is active.  ONEFOSsil and BNU work
  78.     all the time.  Refer to function 1Bh for more information on the
  79.     "Information" function; however, this method is not suggested either.
  80.  
  81.                                    Functions
  82.  
  83.     The following functions are supported by most FOSSIL drivers.
  84.  
  85.     Function 00h - Set communications baud, parity, etc.
  86.  
  87.          Input:
  88.               AH = 00h
  89.               AL = Communications parameters:
  90.                   010----- = 300 baud
  91.                   011----- = 600 baud
  92.                   100----- = 1200 baud
  93.                   101----- = 2400 baud
  94.                   110----- = 4800 baud
  95.                   111----- = 9600 baud
  96.                   000----- = 19200 baud (replaces IBM 110 baud setting)
  97.                   001----- = 38400 baud (replaces IBM 150 baud setting)
  98.                   ----0--- = No parity
  99.                   ---01--- = Odd parity
  100.                   ---11--- = Even parity
  101.                   -----0-- = 1 stop bit;
  102.                   -----1-- = 1½ bits for 5-bit byte length, 2 for all
  103.                              others
  104.                   ------00 = 5 bits
  105.                   ------01 = 6 bits
  106.                   ------10 = 7 bits
  107.                   ------11 = 8 bits
  108.               DX = Port number
  109.               BX = 0 (incase BNU tries to extend this function)
  110.  
  111.          Output:
  112.               AH = Line status (see function 03h)
  113.               AL = Modem status (see function 03h)
  114.  
  115.          This function is identical to the IBM PC INT 14h BIOS call except
  116.          that 110 baud and 150 baud have been replaced by 19200 baud and
  117.          38400 baud respectively.  See function 1Eh for an enhanced version
  118.          of this function.  In addition, once function 1Eh has been used,
  119.          this function will not change the baud rate until function 04h is
  120.          used to reactivate the FOSSIL driver.
  121.  
  122.          Note that BNU contains an extension to this function, and that if
  123.          that extension is not desired you should make sure that BX and CX
  124.          are not equal, or that one of them are zero.  If you would like
  125.          information on this extension please write the author of this
  126.          document or David Nugent, author of BNU.
  127.  
  128.     Function 01h - Transmit character with wait.         Input:
  129.               AH = 01h
  130.               AL = Output character
  131.               DX = Port number
  132.  
  133.          Output:
  134.               AH = Line status (see function 03h)
  135.                   1------- = Time-out occurred, all other bits void
  136.                   0------- = Character buffered, all bits valid
  137.               AL = Modem status (see function 03h, void if time-out
  138.               occurred)
  139.  
  140.          If there is no room in the transmit buffer, this function will wait
  141.          until there is room in the buffer or until a time-out occurs.
  142.  
  143.          Notes:
  144.  
  145.            X00 executes functions with the interrupt mask set as it was
  146.            when entered.  That is, if X00 is called with interrupts masked,
  147.            interrupts will remain masked during the processing of the
  148.            function.  If this function is called with interrupts masked, it
  149.            may never return.
  150.            ONEFOSsil always enables interrupts upon the beginning of every
  151.            FOSSIL call, so unless there are severe hardware problems,
  152.            ONEFOSsil should always return.
  153.            It is suggested that applications use function 0Bh instead of
  154.            this function in all cases.  This function is slow, and X00 and
  155.            BNU are prone to lock-ups.  Even if the THRE bit is set in a
  156.            status return, there is a chance that the buffer could be filled
  157.            by another application between calls, and as such the correct
  158.            applicatio