Home Milan Hardware Milan Mainboard Milan Audio Hardware
 

5.3 Milan Hardwareregister


Milan Hardwareregister und I/O Adressen




Memory layout:


Adress Description
$00000000 _phystop ST-RAM
$00E00000 $00E7FFFF TOS
$01000000 _ramtop TT-RAM
$40000000 $7FFFFFFF PCI memory, overlayed with ISA memory[1]
$80000000 $BFFFFFFF PCI I/O, overlayed with ISA I/O[1]
$C0000000 $C000DFFF PCI/ISA I/O using big endian addressing
$FFFF8000 $FFFFBFFF used by ST hardware emulation
$FFFFC000 $FFFFDFFF Milan onboard I/O
$FFFFC000 memory controller
$FFFFC103+4*reg_no MFP
$FFFFC200 PLX 9080
$FFFFE000 $FFFFFFFF used by ST hardware emulation


[1] PCI memory and IO are subtractively decoded, ie. any access that is not claimed by a PCI device is forwarded to the ISA bus.


ISA IO:

byte read adr: read from $C0000000+adr or read from $80000000+(adr^3)
byte write adr: write to $C0000000+adr or write to $80000000+(adr^3)
('adr' is an address on the ISA bus, eg. $278 for parallel port)

word read adr: read from $80000000+(adr^2) or read from $C0000000+adr [2]
word write adr: write to $80000000+(adr^2) or write to $C0000000+adr [2]

[2] When using $C0000000 for WORD I/O, the data read/written needs to be swapped (ror.w #8,d0)



Used ISA addresses:


Adress Description
$20 ISA interrupt controller
$60 Keyboard
$A0 ISA interrupt controller
$15C PC87308 SuperIO configuration registers
$1F0 primary IDE interface
$170 secondary IDE interface
$278 Parallel port
$2A0 serial port 3 (optional)
$2A8 serial port 4 (optional)
$2F8 serial port 2
$3F0 Floppy disk controller
$3F8 serial port 1 (!nl)
$400-$420 onboard (SuperIO etc.)



ISA Interrupts:

ISA Interrupt vectors are located at $140+4*isa_int_vector. You must use Setexc() to set the vector, because otherwise the interrupt is not enabled in the interrupt controller. Restore the old vector using Setexc() when uninstalling your driver.

The interrupt routine must end with an RTE instruction, and does not have to do anything special about the interrupt controller - EOI handling is done by TOS.


Original ST MFP GPIO-Port:


BIT DIR
0 IN Centronics BUSY
1 IN MFP serial port DCD
2 IN MFP serial port CTS
3 IN GPU DONE from blitter
4 IN MIDI/keyboard ACIA interrupt
5 IN FDC/ACSI interrupt
6 IN MFP serial port RI
7 IN monochrome detect signal



MILAN MFP GPIO-Port:


BIT DIR
0 OUT * MFP serial port RTS
1 IN MFP serial port DCD
2 IN MFP serial port CTS
3 OUT * MFP serial port DTR
4 IN * MFP serial port DSR
5 IN * not used
6 IN MFP serial port RI
7 IN * KEYLOCK switch



ISA Interrupts


No. Interrupt
0 Timer
1 keyboard
3 87308 serial port 2
4 87308 serial port 1
5 available
6 FDC
7 printer port
8 RTC
9 available
10 available
11 available
12 PS/2 mouse port
13 available
14 PCI IDE primary channel
15 PCI IDE secondary channel



ISA I/O functions:

#define inb(port) (*(volatile UBYTE *)(0xC0000000L + (port))))
#define inw(port) (*(volatile UWORD *)(0x80000000L + (port)^2)))

#define outb(data, port) *(volatile UBYTE *)(0xC0000000L + (port)) = data;
#define outw(data, port) *(volatile UWORD *)(0x80000000L + (port)^2) = data;


Informationen von Frank Naumann






Copyright © Robert Schaffner (doit@doitarchive.de)
Letzte Aktualisierung am 23. Mai 2004
Home Milan Hardware Milan Mainboard Milan Audio Hardware