---


1.0 What is PnPkit v2.10 (Plug-And-Pray Kit)?

   Have you had problems booting your machine, and realized that several
   peripheral cards are freezing the motherboard?  Do you build pc-boards
   and become baffled by the contention between your board other boards
   existing in the machine?  Do you write software drivers that go
   berzerk by several pc-boards competing for resource (ie IRQs, DMA, etc)?

   Viola, PnPkit.  With this software kit, (a) you can queary the PnP-Roms
   of each/every pc-board, (b) force a particular configuration for each/every
   existing pc-board, and (c) isolate pc-board contention problems that are
   inherent to the Plug-And-Pray specs/algorithm.


2.0 Installation Notes

   Two (2) makefiles are provided.  One for linux-gnu compiler and one for
   DJGPP-gnu compiler (go32).  Of couse, cross compiles are supported.  The 
   system should port to any compiler environment without much trouble.  See
   Poring Notes below.  The following steps are necessary for rebuilding.

   1- unload tar/zipped file:
            tar xzvf pnpkit.tgz
      using gnu tar is the easiest with the z option.

   2- sit in the top level directory and:
            make -f Makefile.<os>
      where <os> is either linux or go32.

   3- the .../bin directory contains the executables.

   4- can use:
            make -f Makefile.<os> clean
      to tidy up your disk storage.


3.0 Theory of operation

   Read the 'manual.doc' describing the basic script language processor
   features that PnPKit provides.  It is an advanced language processor;
   but, you gotto follow the rules; which are pretty simple.

   The PnP algorithm expects all cards to detect/respond to a generalized
   set of events called 'isolation'.  If the cards are previously
   configured (usually done during a boot process), then the isolation
   algorithm can gain the attention of a single card.  All communicating
   events are then conspicuous to that card only.  The attention/selection
   process is called 'csn' (card select number).  In PnPKit, commands
   would be like:

     PnP> detect 1                # isolate csn 1
     PnP> PNP_device = 1          # set all 'device' operations on csn 1
         

   To change the PnP valus of card, you use a currency-based method.

         [do the above operations]
     PnP> device begin
     PnP>   device set ...
     PnP>   device set ...
     PnP> device end

   On the 'device end' command, the software initiates the card-operations.

   To query card information:

     PnP> detect <csn>
     PnP> PNP_device = <csn>
     PnP> DUMP [RESOURCES | DEVICE | DEVICE ALL | CARD]

   Other commands are: "STATUS" and "ISOLATE"
   
     PnP> STATUS 
          - Displays status all current information.

     PnP> ISOLATE [arg]
          where arg= [ CSN | RESET | RESET_DRV ]
          - Performs the PNP isolation function (read the PNP-specs).
            This can be destructive, if you don't know what your
            doing.  This means, you better power-down and reboot
            your machine after using the wrong commands.  In some
            cases, you MUST give the proper isolation-command, and
            other cases, not.  Most card contention problems start
            right here.
            

4.0 Porting Notes

   The major porting problem boils down to the 'bitops.h' include file.
   The file 'pnp02.cc' uses 'set_bit' and 'test_bit'.  In the top of
   the file, alternate routines are provided.  Of course, only ports to
   any OS running on the Intel-platform for PnP experiments are valid.


5.0 Support & FAQs

   Contact sekhar@alphaxsys.com for support.


---

