Janus IO Memory Map

AMIGA I/O MEMORY MAP

(REGISTER DESCRIPTION)

AMIGA Register Interface / Memory Offset Address
INTERFACE
Offset Address
AMIGA
AMIGA INTERRUPT STATUS read register 1FFF1 7FFF1
PC INTERRUPT STATUS read register 1FFF3 7FFF3
NEGATE PC RESET read register 1FFF5 7FFF5
MODE REGISTER read register / write register 1FFF7 7FFF7
INTERRUPT MASK read memory / write register 1FFF9 7FFF9
PC INTERRUPT CONTROL read memory / write register 1FFFB 7FFFB
CONTROL REGISTER read memory / write register 1FFFD 7FFFD
KEYBOARD REGISTER read memory / write register 1FFFF 7FFFF
PC SIDE

System Status Register:

How to Enable/Disable Interrupts from Amiga to PC A write access to this register (i/o location 62 hex) forces a /SYSINT interrupt on the AMIGA side
A write access to bit 6 of i/o location 379 hex enables/disables the AMIGA forced interrupts IRQ1 (keyboard), 1RQ3 (serial interface COM2) and IRQ7 (parallel interface LPT1) as follows:

D6 Function
0 interrupts enabled
1 interrupts disabled

Note:

The access to i/o location 379 hex is enabled if PARON is high. That is, the AMIGA has to write a "1" to MODE REGISTER bit 1. (See 'Amiga Mode Register.')
The following initialization routine must be used to allow an external printer card on the pc side:

  • AMIGA: set MODE REGISTER bit 1 to "1" ; switch parallel interface on
  • PC : set i/o location 379 hex bit 6 to "0"; keyboard and serial interr. off
  • AMIGA: set MODE REGISTER bit 1 to "0" ; switch parallel interface off

Now the keyboard and the serial interface emulation is enabled, the parallel interface emulation is disabled.

HOW to Clear an Asserted Interrupt Signal

INT Negation
RQ3_a Read to i/o location 3B0 hex
IRQ3_b Read com2 register 2F8 hex
IRQ7 Read line printer status register 379 hex

AMIGA SIDE

All registers on the memory locations 1FFF0 TO 1FFFF are only accessable from the AMIGA side.

AMIGA ACCESS: Amiga Interface Offset Address = Base Addr.

  • Base Addr. + (00000 - 1FFFF) : Byte Access
  • Base Addr. + (20000 - 3FFFF) : Word Access
  • Base Addr. + (40000 - 5FFFF) : Graphic Access
  • Base Addr. + (60000 - 7FFFF) : I/O Register Access

All Registers on the Memorylocations 1FFF0 to 1FFFF are only accessable from the AMIGA side.

Function Description Amiga Address
    Byte Word Grafic I/O
Amiga Interruptstatus read register
read clears pc -> amiga ints
1FFF1     7FFF1
PC Interruptstatus read register
r/o, amiga -> pc ints
1FFF3     7FFF3
negate pc reset read register
r/o, strobe release pc's reset
1FFF5     7FFF5
PC-Configuration
Mode Register
read register/write register
give/set PC config
1FFF7     7FFF7
Interrupt mask read memory/write register
r/w, enables pc int lines
1FFF9     7FFF9
PC Interrupt Control w/o, bit == 0 -> cause pc int 1FFFB     7FFFB
Control register read memory/write register
w/o, random control lines
1FFFD     7FFFD
Keyboard register read memory/write register 1FFFF     7FFFF

Amiga Interrupt Status Register (R/O)(1FFF1/7FFF1)

Reading this register returns the interrupt events caused on PC accesses as follows:

Bit no. Function  
0 Mono Video Ram /MINT
1 Color Video Ram /GINT
2 Mono CRT /CRT1INT
3 Color CRT /CRT2INT
4 Keyboard Register /ENBKB
5 LPT1 Control Reg /LPT1INT
6 COM2 Data Reg /COM2INT
7 see PC System Status Res /SYSINT

The event was valid if the bit is set to " 1". After reading the register all bits turns to "0" automatically and the interrupt flag will be negated.

 PC Interrupt Status Register (R/O) (1FFF3/7FFF3)

Reading this register returns the pending PC interrupts on the lower nibble. The PC interrupt is asserted as shown by the corresponding bit in the table.

Bit no. Function Asserted if
0 IRQ1 (Keyboard interrupt) 1
1 IRQ3_a 0
2 IRQ3_b 0
3 IRQ7 0
4-7 NOT USED always HIGH

Bit 1 and bit 2 (IRQ3_a and lRQ3_b) are externally "ORed" to IRQ3

Negate PC Reset (R/O)(1FFF5/7FFF5)

A read access to this register negates the PC reset line and allows the PC to start the boot procedure. On power-on the PC reset line is asserted (default).

Mode Register (R/W) (1FFF7/7FFF7)

Reading this register returns system configuration information

Bit no Name Function
0 SERON serial interface enabled
1 PARON parallel interface enabled
2 KEYON keyboard interface enable
3 MON monochrome display emulation enabled
4 COLOR color display emulation enabled
5 SEL1 select the PC/AT memory bank, s.b.
6 SEL2 select the PC/AT memory bank, s.b.
7 PC/AT LOW = AT mode
HIGH = PC mode

Writing to this register sets system configuration information

Bit no. Name Function
0 SERON switch serial interface on
1 PARON switch parallel interface on
2 KEYON switch keyboard interface on
3 MON enable monochrome display emulation
4 COLOR enable color display emulation
5 SEL1 select the PC/AT memory bank, s.b.
6 SEL2 select the PC/AT memory bank, s.b.
7 /STOPCLK LOW = disable the clock for video retrace and keyboard
HIGH = enable the clock for video retrace and keyboard

 select the PC/AT memory bank

SEL2 SEL1 PC memory AT memory
0 0 not used not used
0 1 A0000-AFFFF A0000-AFFFF
1 0 D0000-DFFFF D4000-DFFFF
1 1 E0000-EFFFF not used

Interrupt Mask Register (R/W)(1FFF9/7FFF9)

You can mask each PC interrupt event separately by writing a "1" to the corresponding bit as shown below.

Bit no. Maskable Event (cmp. to Amiga interrupt status reg.)
0 /MINT
1 /GINT
2 /CRT1INT
3 /CRT2INT
4 ENKBKB
5 /LPT1INT
6 /COM2INT
7 /SYSINT

PC Interrupt Control Register (R/W) (1FFFB/7FFFB)

A PC interrupt can be forced by writing a "0" to the corresponding bit of the lower nibble except the keyboard interrupt, which can be asserted by writing a "1", as shown below:

Bit no. Asserted PC interrupt level
0 KBSTART (start keyboard shift-register)
1 IRQ3_a (forces interrupt IRQ3)
2 IRQ3_b (forces interrupt IRQ3)
3 IRQ7

Bit 1 and bit 2 (IRQ3_a and lRQ3_b) are externally "ORed" to IRQ3

Control Register (R/W)(1FFFD/7FFFD)

All control function will be done by writing a "0" to the corresponding bit Only bits 0 to 4 are used.

Bit no. usage
0 general interrupt enable to the AMIGA
1 general interrupt disable to the AMIGA
(default)
2 assert the PC reset line
3 negate all PC interrupt levels except the keyboard interrupt
4 reset line printer BUSY (port 379 hex bit 7)
The line printer BUSY bit will be set by writing
a " 1" to bit 0 of port 37A hex from PC side.

Keyboard Register (R/W) (1FFFF/7FFFF)

Keyboard emulation is done by writing a character to this register and then asserting a "1" to bit 0 of the PC INTERRUPT CONTROL REGISTER.

Last Update: 05.06.2022