Delta Tau GEO BRICK LV User Manual

Page of 440
Turbo PMAC User Manual 
Writing a Host Communications Program
 
399
 
I93 is an 8-bit value that specifies ISA bus address bits A23 – A16 for the DPRAM.  Usually, it is 
specified as a 2-digit hexadecimal value, and these two digits are the same as the first two digits of the 
six-digit ISA hexadecimal address, $0D in the default case. 
I94 is an 8-bit value that controls the addressing of the DPRAM over the ISA bus.  If only a 16k x 8 block 
is reserved for DPRAM, it also specifies ISA bus address bits A15 – A14.  I94 usually is specified as a 2-
digit hexadecimal number. 
If a 16k x 8 block of memory on the ISA bus is to be used for DPRAM, the first digit should be set to 
equal the third digit of the six-digit base address. It can take a value of $0, $4, $8, or $C.  For the default 
base address of $0D4000, it should be set to 4.  If a 64k x 8 block of memory is to be used, the first digit 
should be set to 0. 
The second digit represents the addressing mode.  It should be set to 5 to use a 16k x 8 address space on 
the ISA bus.  It should be set to 4 to use a 64k x 8 address space. 
For example, to use a 16k x 8 block of memory from $0EC000 to $0EFFFF on the ISA bus, I93 should be 
set to $0E, and I94 should be set to $C5.  To use a 64k x 8 block of memory from $0C0000 to $0CFFFF 
on the ISA bus, I93 should be set to $0C, and I94 should be set to $04. 
To implement these settings and to hold them for future use, these I-variable values must be stored to 
non-volatile flash memory with the SAVE command, and the card must be reset ($$$ command).  
Resetting the card copies the saved values of I93 and I94 back into the I-variable registers in RAM, and 
then into the active control registers at X:$070009 and X:$07000A, respectively. 
If a 16k x 8 block of memory has been used for the larger (32k x 16) DPRAM, the PC can view only one-
quarter of the DPRAM at a time.  Following the instructions given above, this will be the first quarter 
(lowest addresses on the PMAC side).  To get at other parts of the DPRAM, a “bank select” process must 
be used.   
I94 can control the bank select with bits 1 and 3, but it is used only at power-on/reset, so it is not 
appropriate for dynamic bank selection.  Therefore, it is better to use the active control register at 
X:$07000A directly.  With the suggested M-variable definition of M94->X:$07000A,0,7, and I94 set as 
suggested above to select Bank 0 at power-on/reset, the following equations can be used to select each of 
the 4 banks (the vertical bar ‘|’ is the logical bit-by-bit OR operator): 
M94=I94 | $00   
; Bank 0 (PMAC addresses $060000 - $060FFF) 
M94=I94 | $02   
; Bank 1 (PMAC addresses $061000 - $061FFF) 
M94=I94 | $08   
; Bank 2 (PMAC addresses $062000 - $062FFF) 
M94=I94 | $0A   
; Bank 3 (PMAC addresses $063000 - $063FFF) 
VME Bus Setup 
The address setup of the DPRAM on the VME bus is integrated with the general VME setup, including 
the mailbox registers, using variables I90 – I99. 
I90 controls the VME address modifier.  It should be set to $39 for 24-bit addressing, or $09 for 32-bit 
addressing. 
I91 controls the don’t care bits in the address modifier.  Usually, it should be set to $04. 
I92 controls the VME address bus bits A31 – A24 when using 32-bit addressing for both the mailbox 
registers and the DPRAM.  Usually, it is specified as two hex digits, and it should be the same as the first 
two hex digits of the 32-bit address.  For example, if the base address of the DPRAM were $18C40000, 
I92 would be set to $18.  When 24-bit addressing is set up, I92 is not used. 
I93 controls the VME address bus bits A23 – A16 for the mailbox registers.  Although it is possible for 
these address bits to be the same for both the mailbox registers and the small DPRAM, usually they are 
different.