|
|
variable is a case insensitive character string that names a configuration parameter.
paramlist is a string of one or more parameter values, the format of which are dependent on the variable used.
The following variables are defined:
When configuring parameters, space and tab characters cannot be used. For example,
Parameters are passed to the tape driver by the daemon program /etc/mcdaemon. Configuration parameters are given on separate lines. The number sign character (#) may be used to open a comment. Comments are terminated by a newline. For example, the mcconfig file might contain:
# this is a comment in the mcconfig file iropt=F 4251=31fWhenever changes are made to the mcconfig file, you need to reboot the system for the changes to take effect.
The values for IROPT are as follows:
B/b: 64KB DMA Boundary Present/Absent
When neither ``B'' nor ``b'' is set, configuration is based upon the result of Micro Channel presence determination (see the M/m option). In a Micro Channel machine, ``b'' is assumed, otherwise ``B'' is used.
D/d: Use Demand/Single Byte DMA with Controllers Having a FIFO
When neither ``D'' nor ``d'' is set, automatic configuration determines whether a floppy controller chip with a FIFO is present on a per controller basis. When a controller having a FIFO is found (for example, Intel 82072/82077 parts return a positive response to the CONFIGURE command), DMA transfers with respect to that controller are set up using the demand mode. Using demand mode decreases the portion of the bus bandwidth consumed by tape read/write transfers.
F/f: Floating/Pulled-Up Drive Search
Model | Type | Sub-type PS/2 model |
---|---|---|
F8 | 0D | 24 MHz Model 70 |
In the PC or AT (not Micro Channel) hardware environment (see the M/m option), when testing for the presence of a 4100 PC controller, the driver reads a byte from a signature port on the controller and compares this against the value 45 hexadecimal. The I/O port address of the signature port is found by adding six to the board's base port address (see the controller configuration section). For a 4100 PC Bus controller with switches set to ``as shipped from the factory'' positions, the signature port address is 0370 (hexadecimal) + 6. If the byte compares, the 4100 PC is present: otherwise it is not. This option is intended to be used when peeking at the factory set (0376 hexadecimal) signature port causes the disruption of some other adapter which is present at this address.
I/i: Do/Don't Wait-for-Index
When neither ``I'' nor ``i'' is set, wait-for-index is enabled by default only when an Olivetti Micro Channel machine is present: otherwise wait-for-index is disabled.
If the following symptoms are experienced, after installing the MC driver in certain Micro Channel machines, the wait-for-index algorithm may need to be enabled:
mc tape write error: Defect list has unrecoverable error
Formatting failed: Block 0 medium error : phase: CERTIFICATION, track: 0, cylinder: 0
A condition exists in some Micro Channel computers which causes errors reading the first sector of each tape block. Included are the IBM models 50, 60, and 80, and the Olivetti P-500.
These machines employ 72065 (except for the Olivetti which has a 765) floppy controllers and data separators with certain characteristics. The 72065 differs from other controllers in that it does not inhibit VCO SYNC when an INDEX signal is received. Characteristically, the data separator circuit will:
Most Irwin drives generate a read data signal with the 50/50 duty cycle when transiting servo headers.
When these factors are combined, and a tape is read, the following sequence of events occurs during a tape read operation: a servo header crosses the head. The drive sends a 50/50 duty cycle 250 KHz signal on the read data line. The PLL looses sync (that is, the loop control voltage goes to a rail). The end of the servo header crosses the head and the drive gives an INDEX pulse. No corresponding VCO SYNC inhibit is generated by the 72065 (this would normally put the PLL back on track). Sector 1 crosses the head but the PLL is still too far off to read the sector. The 72065 generates a record-not-found error.
Some Irwin drives are fitted with a data compensator board. This board has a circuit which alters the 50/50 duty cycle to a value which allows most of these controllers to maintain PLL synchronization. One exception is certain Model 80s.
For Micro Channel systems which do not have the compensator (and certain Model 80s which do), this problem can be circumvented by software. The technique relies on a feature of the 72065 (and other controllers in the 765 class): a VCO SYNC inhibit is generated just after the last byte of a READ command is sent to the controller. Inhibiting the VCO SYNC pin (which is normally telling the PLL to lock on incoming read data) causes the VCO's input to be switched to a reference. This results in quickly returning the PLL to a state in which it will be nearly synchronized with the ``real'' read data. VCO SYNC inhibition results from programming the floppy controller using a ``wait-for-index'' algorithm.
The wait-for-index algorithm sends all but the last byte of the data transfer command to the 72065. It then waits for a logical high to low transition of the floppy INDEX signal. The wait is accomplished by polling a special I/O port (at address 03F0h) provided by the Micro Channel floppy controller. The wait is used to delay the writing of the last byte of the 72065 transfer command until after the INDEX transition. As a result, the 72065 generates an inhibit pulse on VCO SYNC after INDEX, but with sufficient lead time to allow the PLL to achieve synchronization. Thus, sector one's ID can be correctly read.
As no index interrupt is available, wait-for-index polls to accomplish its task. The sought INDEX event is time critical. Under DOS, control for polling comes from either a task time startup thread, or the controller completion or timer tick interrupt. Under OS/2 and UNIX/XENIX a high priority daemon thread is awakened to poll for the index transition. Using the wait-for-index algorithm has the following drawback: all other system task time processing is stopped until index polling is complete. This means that the user will see sluggish system performance at certain times: typically, a 3 or 4 second dead period at tape track switch time. This may prove unacceptable in certain installations.
When neither ``M'' nor ``m'' is set, automatic configuration determines if Micro Channel Architecture hardware is present. The algorithm used depends upon the operating system and driver version. The M/m option is used for automatic configuration of the B/b, I/i, and P/p options.
If the string ``EISA'' is found at physical memory location 0xfffd9, (BIOS ROM location F000:FFD9) this is not a Micro Channel Architecture. Otherwise, if all 8 bits of the I/O port at address 0x0080 (DMA page register 0 in an AT compatibles) can be modified this is an AT 286/386 compatible. Otherwise this is a Micro Channel Architecture.
O/o: System Controller Does/Doesn't Support 1-Meg Transfers
When neither ``O'' nor ``o'' is set, automatic configuration determines whether the system controller supports 1-Megabit transfer rates. This is important when a 2120 is attached to the system controller. If the controller does not support 1- Megabit transfers, 500-Kilobit transfers are used for 80 and 120MB tapes. The driver detects the presence of the following 1-Megabit controllers: Intel 82072 and 82077.
P/p: 4251 Is/Isn't Present
When neither ``P'' nor ``p'' is set, and when running in a PC-bus (non-Micro Channel) machine (see the M/m option), automatic configuration determines the presence of a 4251 board by reading I/O port 0372h and comparing the input byte with the signature of the 4251. The 4251 signature byte is 42h. See also 4151=port.
Q/q: Compaq Portable III Piggy Back Tape Unit Is/Isn't Present
When neither ``Q'' nor ``q'' is set, the algorithm used to test for presence of an alternate (Compaq Portable III piggy back) controller does the following: first the model byte is checked to see if the machine is other than an 8086 class machine (that is, the model byte must be less than FE). If this test passes, the BIOS address F000:FFEA is checked for the string ``COMPAQ''. When a match is found, the I/O port at the 0374 (that is, the floppy controller chip status port) is read and the three low order bits are tested. If all three bits are zero, the alternate controller is present.
When an alternate floppy controller is present, the following port addresses are used by default:
765 | 765 | |||
---|---|---|---|---|
Base DOR | Stat | Data | Clock | |
03F0 03F2 | 03F4 | 03F5 | 03F7 | Primary FLOPPY controller |
0370 0372 | 0374 | 0375 | 0377 | Alternate TAPE controller |
X/x: One Megabit Transfers Are/Aren't Allowed
By default, 1 Megabit transfers ``X'' are allowed. If 1 Megabit transfers overload the system bus, the ``x'' option should be configured.
When ``s'' is set, the result of the tape drive search (presence test) is shown. The following shows an example:
4100MC:3=CTLRNOTFND :2=CTLRNOTFND :1=CTLRNOTFND :0=CTLRNOTFND 4100MCB:3=CTLRNOTFND :2=CTLRNOTFND :1=CTLRNOTFND :0=CTLRNOTFND 4100:3=DRVNOTFND :2=tapedrive :1=DRVNOTFND :0=DRVNOTFND 4100B:3=CTLRNOTFND :2=CTLRNOTFND :1=CTLRNOTFND :0=CTLRNOTFND ALTFDC:3=CTLRNOTFND :2=CTLRNOTFND :1=CTLRNOTFND :0=CTLRNOTFND SYDFDC:3=DRVNOTFND :2=tapedrive :1=nottestedThe order of drive presence testing is shown left to right and top to bottom. On a given line, the left most field has a symbol which represents a controller. Numeric fields preceded by a colon (:) give the unit select in the range 0 through 3. Fields preceded by an equals sign (=) have a symbol which represents result of tape drive presence testing for the controller and unit. These fields normally have an uppercase symbol which represents a driver error code. Two special strings are used: ``tapedrive'' if a drive was found, or ``nottested'' if drive presence was not tested.
When ``i'' is set, certain initialization values are displayed. The following is an example:
hz=18 12_us_scaler=12 scaler_loops=27510 model=0x1FC is64kdma=1 demanddma_ok=1 isuchannel=0 port_4251=3F0 timers=[ 0 1 2 1 2 7 19 37 181 235 ]
When ``r'' is set, a character is displayed for each interrupt processed by the driver's finite state machine. In addition, reset cycles are shown. The following lists the characters and their meanings:
Character | Meaning |
---|---|
N | Floppy controller (NEC) interrupt |
T | Timer Interrupt |
R | Reset sent to floppy controller (start of reset) |
r | Reset complete |
When ``x'' is set, the status of a transfer request is displayed at interrupt time. The display is similar to that shown below:
Cylinder | | DMA | Overruns | | Alternating Track| | Positional Asterisk | | | Retries | | | | | | | | | | Interrupt | | | | | Status | Sector Map +--+ +---+ +--+ +--+ +---------+ | +--------------------+ | | | | | | | | | | | | | T= 2 C= 42 O=12 R= 0 CRC *[-c-- --Cs ---- M-O- --]
Cylinder (C=decimal number) has the transfer request's cylinder number (tape block for the given track).
DMA Overruns (O=decimal number) has a count of DMA overruns (excluding, if indicated by in the Interrupt Status, the current DMAOVERRUN).
Positional Retry (R=decimal number) has the current positional retry number for the request. Note that a ``free'' retry is allowed under the following conditions:
Interrupt Error has the current reason for the interrupt displayed symbolically.
Alternating Asterisk (). This one character field is
alternately set with an asterisk () and a space ( )
character so that screen updates may be distinguished.
Sector Map ([-c-- --Cs ---- M-O- --]
). Gives a visual
indication of the status of each sector when an error
occurs. Each printing character in the sector map
represents the status of a sector. Before the start of a
transfer, each entry is set to ``s''. On successful
transfer of a sector, the corresponding entry is set to a
hyphen (-). The following is a list of characters which
appear in the sector map and their meanings:
Character | Interrupt | Error | |
---|---|---|---|
number | symbol | description | |
- | 0 | IE_NOERR | No error |
C | 12 | IE_CRC | Data CRC error |
c | 13 | IE_IDCRC | ID CRC error |
s | 14 | IE_RECNOTFND | Record not found |
M | 16 | IE_DATAMARK | No data address mark |
O | 17 | IE_DMAOVERRUN | DMA overrun |
? | other | unexpected | Unexpected value |
The tape driver uses a default drive searching sequence to test for the presence of tape drives. The default sequence may be replaced with a user configured sequence using either the IRDRV or IRSRCH variables. This is useful in situations where tape drives are erroneously detected by the default sequence, or where multiple tape drives are supported and a different mapping of logical to physical drives is desired. For example,
IRSRCH=SYSFDC:3,4100:2says search for tape drives at unit select 3 on the system floppy controller, and unit select 2 on an Irwin 4100 PC bus controller.
The equivalent IRDRV specification is:
IRDRV=04,43or alternately:
IRDRV=4,43IRDRV specifications use a 2-digit number to specify a controller and unit select. The high-order digit gives the controller, and the low-order digit the unit select. If the high-order digit is missing, 0 (for the system floppy controller) is assumed. Note that the unit select used by IRDRV is in the range 1-4 while the unit select used by IRSRCH is in the range 0-3.
The following is a list of controllers supported by IRSRCH and IRDRV:
IRSRCH, IRDRV name | High digit | Controller |
---|---|---|
SYSFDC | 0 | System floppy (2.00) |
ALTFDC | 1 | Alternate floppy (2.00) |
4100MC | 2 | Irwin 4100 Micro Channel (2.01) |
4100MCB | 3 | Second 4100 Micro Channel (2.01) |
4100 | 4 | Irwin 4100 PC Bus (2.01) |
4100B | 5 | Second 4100 PC Bus (2.02) |
IRSRCH = | searchlist |
searchlist = | searchspec |
searchspec,searchlist | |
searchspec = | controller:unitlist |
controller = |
SYSFDC (System floppy controller) ALTFDC (Alternate controller) 4100MC (Irwin 4100 Micro Channel tape controller) 4100MCB (Second 4100 Micro Channel controller) 4100 (Irwin 4100 PC Bus tape controller) 4100B (Second 4100 PC Bus controller) |
unitlist = | unit |
unit:unitlist | |
unit = | 0, 1, 2, 3 |
The syntax of an IRDRV drive search sequence specification is:
IRDRV = | searchlist |
searchlist = | searchspec |
searchspec,searchlist | |
searchspec = | controllerdigit:unitdigit |
controllerdigit = |
0 (System floppy controller, may be omitted) 1 (Alternate controller) 2 (Irwin 4100 Micro Channel tape controller) 3 (Second 4100 Micro Channel controller) 4 (Irwin 4100 PC Bus tape controller) 5 (Second 4100 PC Bus controller) |
unitlist = | unit |
unit:unitlist | |
unitdigit = | 0, 1, 2, 3 |
4100=P:370,I:6,D:2,T:2,T:0says an Irwin 4100 PC bus controller is installed and configured with a base I/O Port address (P) 0370 hexadecimal, using IRQ (I) 6, DMA channel (D) 2, and has two tape units (T), one wired for physical unit select number 2, and the other 0.
The general form for controller parameter specifications is:
controller = | paramlist |
paramlist = | parameter |
parameter,paramlist | |
parameter = | name:value |
controller = |
SYSFDC (System floppy controller) ALTFDC (Alternate controller) 4100 (Irwin 4100 PC Bus controller) 4100B (Second 4100 PC Bus controller) |
name = |
P (Base I/O Port address) I (Interrupt Request line (IRQ)) D (DMA channel) T (Tape unit number [0-3]) |
value = | [0123456789abcefABCDEF]+ (Hexadecimal number) |
Base address | SW1 | SW2 | SW3 | SW4 | |
---|---|---|---|---|---|
300 | ON | ON | ON | ON | |
310 | off | ON | ON | ON | |
320 | ON | off | ON | ON | |
330 | off | off | ON | ON | |
340 | ON | ON | off | ON | |
350 | off | ON | off | ON | |
360 | ON | off | off | ON | |
* 370 | off | off | off | ON | |
380 | ON | ON | ON | off | |
390 | off | ON | ON | off | |
3a0 | ON | off | ON | off | |
3b0 | off | off | ON | off | |
3c0 | ON | ON | off | off | |
3d0 | off | ON | off | off | |
3e0 | ON | off | off | off | |
3f0 | off | off | off | off |
DMA channel | SW5 | SW6 | SW7 | SW8 | |
---|---|---|---|---|---|
1 | ON | off | ON | off | |
* 2 | off | ON | off | ON |
IRQ | SW9 | SW10 | |
---|---|---|---|
3 | ON | off | |
* 6 | off | ON |
When a 4251 is configured for the standard address and is connected to:
When configuring the address of the Irwin 4251, the board address jumpers are changed from the ``as shipped'' A0, A2, A3 position. Normally, the change involves reinstalling a jumper stored on one pin of the A7 pin pair to connect the A7 pin pair. This selects the address 372. However, when a secondary floppy controller (such as the Irwin 4100) or other adapter is present, the 372 address may be in conflict. In general, a secondary floppy controller uses addresses in the range 370 through 377, which includes the alternate 372 address of the 4251. To resolve this conflict, the 4251 can be re-addressed. In addition, the tape driver software must be informed of the new address.
The following information is given to aid in understanding of the relationship of the 4251 and tape driver software, the meaning of the 4251 jumpers A0 through A9, and an example of a non-standard configuration.
At initialization, the tape driver software tests for the presence of a 4251 at an alternate address. By default, the alternate address is 372 hexadecimal. (To select the 372 address on the 4251 install jumpers across the A0, A2, A3, and A7 pin pairs.) The test reads a byte from the alternate address and compares the byte with the signature. When the 4251's select port is read, a signature byte (42 hexadecimal) is returned. If the signature compares, the driver sends select bytes to both the system's DOR and the 4251's port. The default alternate address may overridden by using the variable named 4251. For example,
4251=31ftells the driver to test and use, if present, the port at 030F hexadecimal.
The 4251's port uses a single 10-bit I/O port address. The address is set using the jumper pin pairs labeled A0 through A9. Each jumper pin pair corresponds directly with an I/O port address bit. When a jumper pin pair is connected, the corresponding address bit is set to a logical 0. When the pin pair is disconnected, the address bit is set to a logical 1.
For example, to address the 4251 at 31F (an address which is unlikely to conflict with standard adapters), connect jumper pin pairs A5, A6, and A7.