
;   This is a sample PROTOCOL.INI file for the Ungermann-Bass NDIS MAC driver
; for Access/MC, Access/PC-16, and Access/PC-8 network adapter cards.  This
; driver's name is "UBNEA".  The executable files are UBNEA.OS2 and UBNEA.DOS,
; for OS/2 and DOS respectively.
    
    DriverName = UBNEA$

    AdapterType = Access/PC-8
;   AdapterType = Access/PC-16
;   AdapterType = Access/MC
    
    IO_Port = 0x300
    IRQ_Level = 3
;   SlotNumber = 4
    MaxTransmits = 6
    MaxMulticast = 16
    ReceiveMethod = ReceiveChain
    ReceiveBuffers = 64
    ReceiveBufSize = 600

;  Comments about UBNEA parameters:
;  -------------------------------
;  DriverName:
;           This parameter's value must be UBNEA$, or, in the case where
;       multiple adapters are installed, UBNEA$ for the first adapter's
;       DriverName, UBNEA2$ for the second one, UBNEA3$ for the third, and
;       so on.
;  AdapterType:
;           This specifies the type of Ungermann-Bass adapter.  The possible
;       values are:
;           AdapterType = Access/PC-16  for the Access/PC-16 adapter;
;           AdapterType = Access/PC-8   for the Access/PC-8 adapter; and
;           AdapterType = Access/MC     for the Access/MC adapter.
;  IO_Port:    (Default = 0x300; for other choices see the lists below.)
;           This specifies the base address in the Host PC's I/O address space
;       of the adapter's I/O ports.  Its value must agree with the jumpered
;       configuration of the adapter.
;           For the Access/MC, "IO_Port" is not needed and will be ignored.
;           For the Access/PC-8, there are 8 possible choices for the I/O port
;       base address.  They are:
;               0x200, 0x240, 0x280, 0x2C0, 0x300, 0x340, 0x380, 0x3C0.
;           For the Access/PC-16 there are 32 possible choices:
;               0x000, 0x020, 0x040, 0x060, 0x080, 0x0A0, 0x0C0, 0x0E0,
;               0x100, 0x120, 0x140, 0x160, 0x180, 0x1A0, 0x1C0, 0x1E0,
;               0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0,
;               0x300, 0x320, 0x340, 0x360, 0x380, 0x3A0, 0x3C0, 0x3E0.
;       The adapter uses 32 sequential I/O port addresses starting at the base
;       address.  That is, if you choose, for example, 0x300, the entire range
;       of addresses 0x300, 0x301, ..., 0x31F will be used by the adapter.
;           When you install an Access/PC-16 or Access/PC-8 adapter, you must
;       choose an I/O base address for it.  You must choose it such that none
;       of the addresses in the corresponding range are already allocated to
;       a system I/O device or to another adapter which is installed in your
;       system.  Then you set the jumpers on the adapter to select the base
;       address you've chosen, and you also specify that base address as the
;       value for the "IO_Port" parameter. Note that in many cases the default
;       base address (0x300) will be just fine, and you won't have to change
;       the jumpers.
;  IRQ_Level:                   (Default = 3; other choices: see below.)
;           This specifies the interrupt request (IRQ) level that will be used
;       by the adapter-to-PC interrupt. Its value must agree with the jumpered
;       configuration of the adapter.
;           For the Access/MC, "IRQ_level" is not needed and will be ignored.
;       For the Access/PC-8 and Access/PC-16, the choices are as follows.
;       Access/PC-8:    2, 3, 4, 5, and 7.
;       Access/PC-16:   2, 3, 4, 5, 7, 10, 11, 12, and 15.
;           When you install an Access/PC-8 or Access/PC-16, you must choose
;       an IRQ level for the adapter.  You must choose a level that is not
;       already allocated to a system I/O device or to another adapter which
;       is installed in your system.  You set the jumpers on the adapter to
;       select the level you've chosen, and you also specify that level as the
;       value for the "IRQ_Level" parameter.  In many system configurations
;       the default level (IRQ level 3) will be available, and you won't have
;       to change the jumpers.
;  MaxTransmits:                (Default = 8; Min = 1; Max = around 400.)
;           This specifies the number of "TransmitChain"s that the MAC driver
;       guarantees to accept without giving an "OUT_OF_RESOURCE" response.
;  MaxMulticast:                (Default = 16; Min = 0; Max = 255.)
;           This specifies the maximum number of multicast addresses that can
;       be in effect simultaneously. (NOTE that there's no 's' on the end of
;       this keyword.)
;  ReceiveMethod:    Choices: "ReceiveLookahead" and "ReceiveChain".
;                    Default = ReceiveLookahead for Access/MC and Access/PC-16
;                    Default = ReceiveChain for Access/PC-8
;           This determines the method of received frame delivery the MAC
;       driver will use.  The possibilities are described below.  Which one
;       is best to use depends on (a) which kind of adapter you have and on
;       (b) how the Protocol driver you're using works.  As a general rule,
;       use:  ReceiveMethod = ReceiveChain      for the Access/PC-8, and
;       use:  ReceiveMethod = ReceiveLookahead  for the Access/MC and
;                                                       Access/PC-16.
;   (1) ReceiveMethod = ReceiveLookahead
;           When a received frame is available and Indications are On, the MAC
;       driver moves the frame's data from the adapter's receive buffer area
;       into a single, dedicated, MAC buffer in Host memory, and calls the
;       Protocol driver's "ReceiveLookahead" routine.  "ReceiveLookahead" is
;       given the total length of the frame and a pointer to the copy of the
;       frame in the buffer.  If the Protocol driver wants the frame, it must
;       copy the frame before returning from "ReceiveLookahead".  Since the
;       entire frame is available in the buffer, the Protocol driver may copy
;       the frame directly.  Alternatively, it may call the MAC driver's
;       "TransferData" routine to do the copying.  When the Protocol driver
;       returns from "ReceiveLookahead", the MAC driver frees the dedicated
;       buffer for use in delivering more frames.
;           In this method, frames are left in the adapter's receive buffer
;       area until they can be delivered to the Protocol driver.  The small
;       size (4096 bytes) of the receive buffer area in the Access/PC-8 makes
;       this method unsuitable for that adapter, except in applications where
;       the volume of network traffic is low.
;           The important advantage of this method is that the MAC allocates
;       no receive buffers (well, only one) in Host memory.
;           This method works best if the Protocol driver is able to copy the
;       frame to the Protocol driver's client's buffers at the time "Receive-
;       Lookahead" is called.  It is also a good method if the Protocol driver
;       always copies frames into internal buffers of its own.
;   (2) ReceiveMethod = ReceiveChain
;           In this method, the MAC driver moves frames from the adapter's
;       receive buffer area into receive buffers in the Host memory as frames
;       arrive.  It does this independently of whether the frames can be
;       immediately delivered to the Protocol driver, i.e., independently of
;       whether Indications are On or Off.  Its goal is to keep the adapter's
;       receive buffer area free, so that frames arriving from the network
;       are not lost.
;           When Indications are On and a received frame is available in the
;       Host-memory receive buffers, the MAC driver will call the Protocol
;       driver's "ReceiveChain" routine, passing it an "RxBufDescr" which
;       points to the frame in the Host-memory buffers.  The Protocol driver
;       can copy the frame immediately or leave it in the Host-memory buffers.
;       It must eventually call the MAC driver's "ReceiveRelease" routine to
;       free the Host-memory buffers for reuse.
;           In this mode, the MAC driver allocates receive buffers in the Host
;       memory.  These buffers are allocated at driver INIT time. Their number
;       and size are determined by the "ReceiveBuffers" and "RcvBufSize" para-
;       meters.
;           This method is intended primarily to be used with the Access/PC-8
;       adapter, in which the size of the adapter's receive buffer area is
;       small and the possibility of losing frames due to adapter receive
;       buffer overrun is real.
;           Another advantage of this method is that in it the MAC driver can
;       provide a possibly large amount of long-term frame buffering in which
;       a Protocol driver can leave received frames until it can deliver them
;       to its clients.  This advantage comes at the cost of the space devoted
;       to the Host-memory buffers.
;  ReceiveBuffers:              (Default = 32; Min = 16; Max = 512.)
;           This specifies the number of receive buffers that the MAC driver
;       will allocate in the Host memory.  This parameter is meaningful only
;       if "ReceiveMethod = ReceiveChain" is selected.  If "ReceiveMethod =
;       ReceiveLookahead" is used, no receive buffers will be allocated in
;       Host memory -- the "ReceiveBuffers" parameter will be ignored.
;  ReceiveBufSize:              (Default = 600; Min = 256; Max = 1514.)
;           This specifies the size of the receive buffers the MAC driver will
;       allocate in Host memory.  This should be large enough to hold the
;       normal expected received frame.  It need not be large enough to hold
;       the largest expected frame.  The MAC driver will handle large frames
;       in multiple receive buffers. The value of ReceiveBufSize must be even.
;       "ReceiveBufSize" is meaningful only if "ReceiveMethod = ReceiveChain"
;       is selected.  If "ReceiveMethod = ReceiveLookahead" is used, no Host-
;       memory receive buffers will be allocated -- the "ReceiveBufSize"
;       parameter will be ignored.
;  SlotNumber:                  (Min = 1; Max = 8.)
;           This parameter is needed only when multiple Access/MC adapters,
;       and multiple instances of the UBNEA driver, are installed. Even then,
;       this parameter is required only if it is necessary to override the
;       default association between driver instances and adapters. By default,
;       the UBNEA driver instance that comes first in PROTOCOL.INI will be
;       associated with the Access/MC adapter in the lowest numbered slot, the
;       UBNEA driver instance that comes second will be associated with the
;       Access/MC adapter in the second lowest numbered slot, and so on.
;  PermanentAddr:       The value is a string of 12 ASCII hexadecimal digits,
;                       for example:    PermanentAddr = "00DD01AABBCC"
;           This parameter provides a way to override the "Permanent Station
;       Address" that's built into the adapter. Note that this parameter is
;       normally not needed, and shouldn't be used.  The NDIS specification
;       strongly discourages configuring the "Permanent Station Address".
;
;  How Much Host Memory UBNEA Uses
;  -------------------------------
;           You can compute the amount of PC memory UBNEA will use. It depends
;       on the "ReceiveMethod" you select and on the values you choose for the
;       "MaxTransmits", "MaxMulticast", "ReceiveBuffers", and "ReceiveBufSize"
;       parameters. The total space used will be the sum of the following four
;       items.
;   (1) For driver code and data:  11000 (4218 data + 6782 code)
;   (2) For transmit queueing:     16 + (MaxTransmits - 2) * 146
;   (3) For multicast addresses:    4 + (MaxMulticast * 16)     
;   (4) For receive buffers:       16 + ReceiveBuffers * (ReceiveBufSize + 10)
;       Item (4) does not apply if you use "ReceiveMethod = ReceiveLookahead".
;           The total you compute may not be exactly correct but it should be
;       close.  The reasons for inexactness are: (a) the value for item number
;       (1) will vary with different versions of the drivers; and (b) the
;       other items may take up a little more space than the formulas imply,
;       because of the need to allocate buffers and other data structures at
;       doubleword-aligned or paragraph-aligned boundaries.
;           Under DOS, all the space used by the driver is allocated in one
;       contiguous piece.  It will be in "conventional" memory (that is, in
;       the first 640K) if the driver is loaded by a normal "DEVICE=" line in
;       CONFIG.SYS, or in "upper" memory (above 640K) if the driver is loaded
;       by "DEVICEHIGH=" or by "LOADHI".  Note that if the total memory used
;       is large (because of a large value for item (4)), there may not be
;       room to load the driver into "upper" memory.
;           Under OS/2, item (1) is allocated in low memory, and the other
;       items are allocated in high memory if possible.
