3.5 ISA Option ROMs and Resource Mapping

Given the fact that add-in cards are encouraged to make all of their resource assignments flexible, there arises an interesting issue for Option ROMs, in how does the Option ROM code "know" which resource values to use to communicate with the card? There are several possible solutions to this problem, but the one selected for Plug and Play Option ROMs is as follows.

When the Plug and Play Option ROM is initialized, it will be passed the CSN and Read Data Port. The Option ROM can use this information to determine which resources were assigned to it. When the Option ROM has determined this, it should then setup its entry vectors based upon the resource assignment. For example, if an add-in SCSI controller has two possible I/O Port assignments, 300h and 310h, then it should have two different entry vectors for INT 13h. Depending upon which base I/O address is assigned, the Option ROM will setup the INT 13h vector to point to the proper entry vector. Thereafter, whenever INT 13h is called, the Option ROM may make the assumption that the base I/O address is the one that goes with that entry point.