






















                  AnDan Software FOSSIL Version 1.20

                  Users Manual

                  Scandinavian Digital Systems
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          Table of contents

           1  Overview ...............................................    3
              1.1  Features of ADF ...................................    3
           2  Shareware ..............................................    3
              2.1  Use as shareware ..................................    3
              2.2  How to register ...................................    4
           3  Support and new versions ...............................    5
              3.1  ADF doesn't work ..................................    5
           4  Included files .........................................    5
           5  Installation ...........................................    6
           6  Command line arguments .................................    6
           7  Execution examples .....................................    6
           8  Baud rate calculation ..................................    7
           9  Receiver FIFO trigger level ............................    8
           10 Error messages .........................................    9
           11 Benchmarks .............................................   10
              11.1 Memory consumption ................................   10
              11.2 Execution speed ...................................   11
           12 The ADFComCh program ...................................   12
           13 The ADFDebug program ...................................   12
              13.1 Using ADFDebug ....................................   12
           14 The ADFTerm program ....................................   13
           15 The ADFTest program ....................................   14
           16 Version history ........................................   14


          Copyright (c) 1994-1995 Scandinavian Digital Systems AB

          This product, including the manual and the software, is provided
          as is. Scandinavian Digital Systems AB and Anders Danielsson
          disclaims all warranties of any kind, whether expressed or
          implied, and are not liable to you or anyone else for any damages
          or costs due to the use or inability to use this product.

          Acknowledgments:

          AnDan Software is a trademark of Scandinavian Digital Systems AB.
          FidoNet is a trademark of Tom Jennings.
          Windows is a trademark of Microsoft Corporation.
          X00 is a program made by Raymond L. Gwinn.
          BNU is a program made by David Nugent, Unique Computing Pty
          Limited.













          
          Scandinavian Digital Systems                               Page 2
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          1  Overview

          ADF is a FOSSIL revision level 5 driver, including the additional
          functions defined by Raymond L. Gwinn in X00 v1.50.

          ADF is specially designed for users of high speed modems with or
          without the 16550 UART, using DOS or a multitasking environment.

          Some communication parameters cannot be set in ADF, they are hard
          coded for best optimization. These hard coded parameters will
          work fine for almost all users of high speed modems (users using
          a locked baud-rate).

          By doing this hard coding and by writing the complete ADF program
          in the assembly language, the FOSSIL driver will be fast and
          small.

          ADF was initially written some years ago because other FOSSIL
          drivers did not always work properly in protected mode
          multitasking environments, where the UART is emulated.

          ADF is designed to work well with both emulated UARTs and real
          UARTs, without any drawbacks.


          1.1  Features of ADF

          * Always a locked baud-rate.
          * Locked baud-rate of any speed (2 bps - 115200 bps).
          * Always 8 databits, no parity, and 1 stop bit (8N1).
          * Always CTS/RTS handshake. Never DSR/DTR or XON/XOFF handshake.
          * One port per ADF (load ADF in different tasks for many ports).
          * COM-port address configurable (0H-FFFFH).
          * COM-port IRQ configurable (0-15).
          * Full support of the 16550 UART.
          * Fills transmit 16550-FIFO buffer with all 16 bytes.
          * Receiver 16550-FIFO configurable (1, 4, 8 or 14 bytes).
          * Only 8088/8086 compatible code used.


          2  Shareware

          The files in this package may be copied and distributed if no fee
          is charged, if no changes are done and as no part of other
          products, in purpose to test and evaluate this product for a
          period of 30 days.


          2.1  Use as shareware

          To use ADF.EXE as shareware, you must first execute the supplied
          REGISTER.EXE and register ADF.EXE as shareware to be able to use
          it for a test period of 30 days.



          
          Scandinavian Digital Systems                               Page 3
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          Run REGISTER.EXE, specify ADF.EXE as file to register and do not
          enter any user name. ADF.EXE may then be used as shareware.

          When ADF.EXE is executed it will display the number of days left
          of the test period.

          After 30 days, ADF.EXE will stop executing!


          2.2  How to register

          To register the program and use it for more than 30 days, you
          must pay 60 SEK, DM 10 or an amount equal to the sum of USD 10 in
          a currency of your own choice.

          You can either send cash to:

                  Scandinavian Digital Systems AB
                  Billerudsgatan 20
                  S-661 30  Saffle
                  Sweden

          or you can deposit the amount to the Swedish postal giro account
          970159-0.

          Only if you give your FidoNet or Internet e-mail address as
          sender, you will receive an e-mail receipt of your deposit.

          After depositing the fee, send an electronic mail through FidoNet
          to Reg at 2:203/620 or through Internet to reg@andan.edv.se. The
          mail should contain the following lines:

                  Prod=ADF
                  User=<Your name and your e-mail address, BBS or location>

          You will recieve an automatic reply to the address you mailed
          your registration. The reply will contain the following
          information:

                  Prod=ADF
                  File=ADF.EXE
                  User=<Same thing as you wrote>
                  Code=<Your private registration code>

          When you have received the reply, run REGISTER.EXE and enter the
          required information.

          When you specify your user registration name after the "User=",
          you should use your name together with some kind of address or
          location information. Examples:

                  User=Anders Danielsson, AnDan BBS, 2:203/620
                  User=Charles Smith, cs@someplace.com
                  User=Hans Schultz, Dernauer Str., Hamburg, Germany


          
          Scandinavian Digital Systems                               Page 4
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          You may also phone AnDan BBS at +46-533-13700 and register
          on-line. The on-line registration is similar to the mail
          registration.

          E-mail registration replys through FidoNet are routed. If you
          don't want routed mail, use the on-line registration.


          3  Support and new versions

          If you have questions, comments or find bugs in the program,
          please send electronic mail to the author, Anders Danielsson at
          FidoNet 2:203/620 or ad@andan.edv.se.

          Well documented reports of new bugs and suggestions are honored
          with a free registration.

          The latest version can be file requested as ADF from FidoNet
          2:203/620.

          You may also phone AnDan BBS at +46-533-13700, where the newest
          versions and other shareware programs from AnDan Software always
          are downloadable for all users.


          3.1  ADF doesn't work

          ADF is of cause tested to work with a lot of programs that uses
          FOSSIL drivers, in many different environments.

          The author is convinced that ADF will work together with all well
          behaved programs, and if not, it is our intention to as fast as
          possible make it work.

          However, it is our policy not to make memory or time consuming
          changes in ADF only to make it work with bad behaved programs
          that do not use the FOSSIL properly.


          4  Included files

          You should have received the following files:

          File name:    Description:

          ADF.TXT       This file
          ADF.EXE       The FOSSIL driver
          ADFCOMCH.EXE  Checks COM-ports
          ADFDEBUG.EXE  FOSSIL debugger
          ADFTERM.EXE   Very small and simple communication program
          ADFTEST.EXE   FOSSIL tester
          REGISTER.EXE  Registration program
          ADFCOM1.BAT   Example of use of ADF with COM1
          ADFCOM2.BAT   Example of use of ADF with COM2


          
          Scandinavian Digital Systems                               Page 5
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          5  Installation

          Just copy ADF.EXE to a directory included in your PATH.

          If you are only running DOS, edit your AUTOEXEC.BAT and insert a
          line that loads ADF.

          You may insert (or call) one of the files ADFCOM1.BAT or
          ADFCOM2.BAT for quick and easy editing.

          If you are using a protected mode multitasking environment, such
          as Windows, load one copy of ADF in each wanted DOS session using
          different ports. Do not load ADF in AUTOEXEC.BAT. In fact, this
          applies for all FOSSIL drivers, and this is the reason why ADF
          only uses one port per load.


          6  Command line arguments

          When you run ADF without any arguments, it will display the
          following help text (use ADF|MORE for more prompt):

          adf port addr irq baud recbuf trabuf trig

          port    FOSSIL port number, 0-127. Example: 0
          addr    Address in hex of COM-port, 0-FFFF. Example: 3F8
          irq     IRQ number of COM-port, 0-15. Example: 4
          baud    Locked baud-rate, 1-115200. Example: 38400
          recbuf  Size of receive buffer, 256-16384. Example: 2048
          trabuf  Size of transmit buffer, 256-16384. Example: 1024
          trig    Receiver FIFO trigger level, 1, 4, 8 or 14. Example: 8

          ADF will stay resident when using the above command line.

          adf unload

          ADF will remove itself from memory when using the above command
          line.

          adf watch on|off

          ADF will turn carrier watchdog on or off when using the above
          command line.


          7  Execution examples

          Example of loading ADF using COM1 (see ADFCOM1.BAT):

          adf 0 3F8 4 38400 2048 1024 8






          
          Scandinavian Digital Systems                               Page 6
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          Example of loading ADF using COM2 (see ADFCOM2.BAT):

          adf 1 2F8 3 38400 2048 1024 8


          Example of unloading ADF:

          adf unload


          Example of REMOTE.BAT, to execute on DOS-Shell in a BBS:

          @echo off
          rem %1 = Baud rate (used to detect local call)
          if not %1@==0@ ctty COM%2
          if not %1@==0@ adf watch on
          command
          adf watch off
          ctty CON

          The carrier watchdog will try to reboot the computer after about
          10 seconds from the carrier drops. This may be dangerous,
          especially in a multitasking environment (such as Windows).


          8  Baud rate calculation

          A PC compatible serial port uses the following formula to
          calculate the baud rate:

          Baud = 115200 / Divisor

          The Divisor is an integer number (whole number), 1 to 65535, used
          to program the serial port (the UART chip). This means that only
          certain baud rates are allowed.

          Divisor:        Baud rate:

             1            115200 bps
             2             57600 bps
             3             38400 bps
             4             28800 bps
             5             23040 bps
             6             19200 bps
             7             16457 bps
             8             14400 bps
             9             12800 bps
            10             11520 bps
            11             10473 bps
            12              9600 bps
             .               .
             .               .
             X             115200/X
             .               .


          
          Scandinavian Digital Systems                               Page 7
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


             .               .


          When you specify a baud rate on the command line to ADF, ADF
          calculates the Divisor and checks that the baud-rate is valid
          (realizable).

          If you for example use 76800 bps as a baud rate to ADF, the
          Divisor will be 115200/76800 = 1.5, but this is not an integer
          (whole number) and cannot be set. ADF will in this case display
          an error message.


          9  Receiver FIFO trigger level

          The last argument to ADF when loading it, is the receiver FIFO
          trigger level. This used by the 16550 UART, if you don't have a
          16550 or compatible, it will have no effect, but must still be
          specified on the command line.

          The receiver FIFO trigger level can be set to 1, 4, 8 or 14.

          The value is the number of bytes in the receiver FIFO buffer that
          will generate an interrupt from the UART to the CPU.

          The receiver FIFO buffer and it's trigger level, is the main
          reason why many people replaces their old 8250 and 16450 UARTs
          with 16550.

          If you for example use a baud rate of 38400 bps, there will be a
          new byte received each 260 us (microseconds). With an ordinary
          UART, the CPU must answer to an interrupt from the UART each 260
          us, and read the byte and store it in memory.

          If the CPU is unable to answer an interrupt at this rate, or if
          some program has disable interrupts longer than 260 us, received
          bytes will be lost. If you are downloading a file, you will get a
          lot of resends.

          The 16550 UART has a 16 byte receiver FIFO buffer (and also a 16
          byte transmitter FIFO) so it can store up to 16 bytes until the
          CPU must read and empty the buffer.

          The receiver FIFO trigger level specifies when an interrupt
          should be generated by the UART to the CPU.

          If the trigger level is set to 4, the UART will generate an
          interrupt after 4 bytes have been received, but will still fill
          the buffer up to 16 bytes if the CPU doesn't answer the
          interrupt. The rate of interrupts at 38400 bps will be
          4*260 = 1040 us, and the tolerance to no answer from the CPU will
          be (16-4)*260 = 3120 us.




          
          Scandinavian Digital Systems                               Page 8
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          The most common problem with high baud rates, is that programs
          turns of interrupts during too long time. A trigger level of 14
          would in most cases not be a good solution, normally a trigger
          level of 8 is good enough, in some cases you may lower it to 4.
          You should not choose a lower trigger level then necessary,
          because it would load the CPU without giving any benefits.


          10 Error messages

          When ADF displays an error message, it will wait a moment before
          continuing, so you are able to read the message when ADF is
          executed among other programs in batch files (such as
          AUTOEXEC.BAT).

          All error messages with explanations:


          "Argument error (command line error)."

          ADF was unable to understand the command line arguments, please
          see section 6 above. This error message will also be displayed if
          numerical values on the command line are out of range.


          "DOS v3.1 or newer required."

          Your DOS is too old, you need to upgrade to a newer DOS version.


          "Unable to handle TSRs in this environment."

          ADF does a check that it can search and find it self in the DOS
          memory (lower or upper). If this fails it will display this
          message. Try using plain DOS without special memory managers or
          program loaders.


          "Error when releasing memory."

          DOS reports error when freeing memory. This can occur during both
          load and unload of ADF. Probably is the DOS memory allocation
          blocks damaged (by some program).


          "Invalid (not realizable) baud-rate."

          The specified baud-rate cannot be used. Please see section 8
          above.


          "Not enough memory for buffers."




          
          Scandinavian Digital Systems                               Page 9
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          The memory given to ADF by DOS at load time is not enough to
          satisfy the wanted size of the receive and transmit buffers.
          Decrease the sizes or load ADF in low memory or in a larger high
          memory block.


          "Error when restoring interrupts."

          This may occur when unloading ADF. Most common cause is that some
          other programs also are using the same interrupts. Try to unload
          all TSRs in the reverse order of how they where loaded.


          "ADF already loaded."

          This message will be displayed if you try to load ADF a second
          time.


          "ADF not loaded."

          This message will be displayd if you use some of the ADF command
          lines that requires ADF to be loaded as a TSR first (e.g. unload
          and watch).


          11 Benchmarks

          Users have asked how much memory ADF will consume and how fast it
          is compared with other well known FOSSIL drivers.

          Below are tables of memory consumption and execution speed.

          X00 v1.50 and BNU v1.70 have been used as references.

          The drivers where loaded using the following command lines:

          x00 E 0=3F8,IRQ4 B,0,38400 R=2048 T=1024
          bnu /T1024 /R2048 /P1 /L0:38400,8N1
          adf 0 3F8 4 38400 2048 1024 8

          Please note that ADF has not been written with any special
          efforts to make it small and fast. These benchmarks are only
          included here to show that ADF is as good as any other FOSSIL
          driver written in the assembly language.


          11.1 Memory consumption

          How much memory ADF (and other FOSSILs) will use depends on how
          large receive and transmit buffers are being used.

          The memory consumption was determined using the DOS command
          MEM /d.


          
          Scandinavian Digital Systems                              Page 10
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          Program:        Bytes used:

          ADF.EXE          6240 bytes
          X00.SYS          9808 bytes
          X00.EXE         10288 bytes + environment size
          BNU.SYS          8272 bytes
          BNU.EXE          8304 bytes + environment size

          Probably due to ADF uses only locked baud and always one port, it
          is somewhat smaller than the others.


          11.2 Execution speed

          The execution speed has been measured using ADFDebug and ADFTest
          (see below). ADFTest was executed 8 times per FOSSIL, and the
          most common value was used.

          The computer used was a 486DX-50 with no significant TSRs. The
          internal cache (8 KB) and the external cache were both disabled.

          Each time value has the unit 0.838095 us (microseconds).


          FOSSIL function:                         ADF:    X00:    BNU:

          00   Set communications parameters        83     134     120
          01   Transmit character and wait          82     195     132
          02   Get received character with wait     61      79      56
          03   Return serial port status            67      82      53
          04   Activate port                       109     583   38710
          05   Deactivate port                      65     273     236
          06   Raise/lower DTR                      43      60      66
          07   Return timer tick information        33      38      39
          08   Flush output buffer                  43      78      47
          09   Purge output buffer                  43      65      48
          0A   Purge input buffer                   42      77      53
          0B   Transmit no wait                     63     106      74
          0C   Non-destructive read-ahead           54      62      53
          0F   Flow control for serial I/O          44      64      48
          18   Block Read                          104     362      72
          19   Block Write                         108     257      87


          These values should be compared with care. All three FOSSIL
          drivers have about the same execution speed. Only large
          differences (50% or more) are to be considered.

          Due to difference in implementation, some function takes much
          longer time, for example, BNU writes to the screen during
          function 01 Activate port.

          One thing to remember is that ADF actually does more job for all
          read and write (transmit) functions, due to safer operation with


          
          Scandinavian Digital Systems                              Page 11
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          protected mode multitaskers using emulated UARTs. As you can see,
          this has been achieved without any significant time losses.

          The times for 'Block Read' and 'Block Write' are probably not
          fair, because only a few characters were transmitted in the test.

          Note that no execution speed of the interrupt services routine
          has been measured.


          12 The ADFComCh program

          When you run ADFComCh without any arguments, it will display the
          following help text:

          adfcomch addr

          addr    Address in hex of COM port, 0-FFFF. Example: 3F8

          ADFComCh checks if there is an UART at the specified port
          address. The most common port addresses are:

              COM1    3F8
              COM2    2F8
              COM3    3E8
              COM4    2E8

          If the UART is a 16550, ADFComCh will enable the FIFO and change
          the trigger level.


          13 The ADFDebug program

          When you run ADFDebug without any arguments, it will display the
          following help text:

          adfdebug command

          'command' is one of the following commands:

          L [opt] Load TSR, should be done after the FOSSIL load. Options:
                  /t    Use time measurement.
                  /sNN  Use ASCII NN as separator, default is 13 and 10 (CR
                  and LF).
          U       Unload TSR, should be done before the FOSSIL unload.
          N       No output (default at load time).
          S       Screen output.
          F file  File output to the specified file.


          13.1 Using ADFDebug

          ADFDebug is a FOSSIL debugger. It is loaded as a TSR after the
          FOSSIL has been loaded, and may write debug (trace) information


          
          Scandinavian Digital Systems                              Page 12
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          to the screen or to a file.

          It is included for application programmers, and for advanced
          users.

          ADFDebug is loaded using the command L with or without the
          options /t or /s. If /t is used, it will do time measurements of
          the FOSSIL driver functions using timer ticks with the unit
          0.838095 us (microseconds). The time will always include a small
          offset error, independent of the FOSSIL driver used. Execution
          time of interrupts that occurs during FOSSIL execution will be
          included in the time measurement.

          When loading with the option /t, ADFDebug may cause the internal
          DOS clock (BIOS Timer Tick) to be incorrectly updated. Do only
          use /t in plain DOS without any timer depending TSRs, including
          hard disk caches (e.g. smartdrv), and reboot when done with
          testing. During testing, do not hold down keys or move the mouse.

          After loading ADFDebug, the command S or F is used to start debug
          output, and the command N is used to stop the output.

          When using the command F, you must also specify a file name. The
          file is opened, written to and closed at each FOSSIL call, so
          most programs using the FOSSIL will run very slow. The file may
          also get very large.

          ADFDebug uses DOS to write to the file, which may cause a system
          crash when the FOSSIL is used by some programs (programs that
          calls the FOSSIL from interrupt routines).

          For testing purposes the program ADFTest (see below) is included.
          It calls a lot of FOSSIL functions, and the calls are done
          immediate after a BIOS Timer Tick count, to minimize time
          measurement errors.

          Example of usage of ADFDebug and ADFTest:

          @echo off
          del adf.lst
          adf 0 3F8 4 38400 2048 1024 8
          adfdebug L /t /s9
          adfdebug F adf.lst
          adftest 0
          adfdebug U
          adf unload


          14 The ADFTerm program

          When you run ADFTerm without any arguments, it will display the
          following help text:




          
          Scandinavian Digital Systems                              Page 13
          AnDan Software FOSSIL Version 1.20                   Users Manual
          


          adfterm port

          port    FOSSIL port number, 0-127. Example: 0

          ADFTerm is a very small and simple communication program, that
          uses the ADF or any FOSSIL driver. It will set 2400 bps and 8N1
          if FOSSIL is not locked.

          You may call BBSes and use ANSI-BBS if you have ANSI.SYS loaded.


          15 The ADFTest program

          When you run ADFTest without any arguments, it will display the
          following help text:

          adftest port

          port    FOSSIL port number, 0-127. Example: 0

          ADFTest is a FOSSIL test program.

          ADFTest will send "AT<cr>" to the port and expect at least one
          character as reply. A modem connected to the port will in most
          cases do the job.

          ADFTest is intended to be used with ADFDebug for testing and
          verifying FOSSIL drivers.


          16 Version history

          v1.10 November 22, 1995

          This is the first non-BETA version. The setting of the receiver
          FIFO trigger level on the command line has been added since the
          v1.00 BETAs from 1994.


          v1.20 December 9, 1995

          Many improvements and bug fixes has been done. ADF now includes
          all FOSSIL functions 01H to 21H as X00 v1.50 does. It also
          includes function 7EH and 7FH for "external application". ADF
          will now display an error message if the baud-rate is not
          realizable. Some more utility programs have been included, the
          debug function has been moved into a separate program (option /d
          is no longer valid).








          
          Scandinavian Digital Systems                              Page 14
