Next Previous Contents

8. Advanced usage.

8.1 Common configurations on multiple machines, Version 1.11 and earlier.

It is not possible to use the same configuration file on multiple machines with these earlier versions of isapnptools.

However, it is possible to concoct something with a few scripts etc. The key is to split off each board's configuration into it's own file, then use an empty run of isapnp with just an IDENTIFY to discover which board configurations need to be used. Here is what I said to someone with this problem:

I suggest you run isapnp twice (or more!):

  1. The first time, do a probe to find out which cards are present, ie, remove all the ( CONFIGURE...) sections. Use the output of the ( IDENTIFY) command in the isapnp script to choose the next script.
  2. Run the script selected by the above. Note that the second isapnp scripts don't need to run ( ISOLATE), just do a ( CSN x)( IDENTIFY) instead.

If you do this, it may be advisable to fix the READPORT in all four scripts.

Using this method, you could have an individual script for each board, and if you named them by the compacted ident, you could get a list of files to configure thus:

BOARDS=`isapnp probe.conf | grep '^Board' | cut -c22,23,25,26,28,29,31,32,34,35,37,38,40,41,43,44,46,47`
for board in $BOARDS
do
        isapnp $board.conf
done

where probe.conf is little more than

(READPORT 0x3bb) # or whatever
(ISOLATE)
(IDENTIFY *)
(WAITFORKEY)

Note that if you were to use this method with isapnptools version 1.12 or later, you could skip the grep and cut by using an appropriate IDENTIFYFORMAT command.

And each of the board scripts fit the following skeleton:

(READPORT 0x3bb) # or whatever
(CSN 10)         # or whatever
(IDENTIFY *)
(CONFIGURE ....)
(WAITFORKEY)

8.2 Common configurations on multiple machines, Version 1.12 and later.

With version 1.12 and later, CONFIGURE blocks for boards not present will be skipped, so you can just have a single file containing the configurations for all boards in all systems.

If you have machines with the same or similar setup of PnP cards, then this can be further optimised by having a single configuration for each type of card, using #1,#2,etc instead of the real serial numbers. Any systems with a non-standard setup could be overridden by a later CONFIGURE specifying the card's full serial number.

8.3 Sending a RESET CSN command.

Is there a way to issue a "Reset CSN Command", as described in Section 4.3 (p15) of the "Plug and Play ISA Specification 1.0a" using isapnptools?

Sure, just poke the register using the REG command: after selecting a device and logical device (it doesn't matter which !) do

(REG 2 (POKE 4))

See section A.1 on page 51 also.

This might be a good use for CSN, as in

(CSN 1 (LD 0 (REG 2 (POKE 4))))

You may have to reconfigure the cards again afterwards if you want to fiddle with the PnP registers.

8.4 Dumping the boards configuration registers.

For isapnptools up to 1.15 you can modify the Makefile to uncomment the line

PNPDUMPFLAGS += -DDUMPREGS

this will cause pnpdump will dump all the standard configuration registers for each board.

For isapnptools 1.16 and later, just give the option --dumpregs to pnpdump to get this dump.

Note that this dump is dumping the physical registers, and will thus show the settings that have been put in there by the BIOS, or some cards will put a default setting in. Unused registers read back as 0.

But for example, the missing two IO resources on an AWE32 have been reported to show up this way.

It is also handy to check that isapnp has done the right thing.

8.5 Displaying a list of isapnp boards in the system.

The following shell script will display a list of ISA PnP boards in your system:

#!/bin/bash
cat << _EOT | isapnp -
#(DEBUG)
(IGNORECRC)
(IDENTIFY-FORMAT "\"%v/%s\"\n" )
(ISOLATE PRESERVE)
(IDENTIFY *)
(WAITFORKEY)
_EOT

on my system this gives:

"DFX0000/1493"
"CMI0001/16777472"


Next Previous Contents