Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## dioscuri.module.pic
Class PIC

    java.lang.Object
      dioscuri.module.AbstractModule
          dioscuri.module.ModulePIC
              dioscuri.module.pic.PIC

All Implemented Interfaces:
  Addressable, Module

    public class PIC

extends ModulePIC

See Also:
  `

  Metadata module ******************************************** general.type : pic general.name : Programmable Interrupt Controller (Intel 8259A compatible) general.architecture : Von Neumann general.description : Implements a standard PIC, a manager of the interrupt-driven system. general.creator : Tessella Support Services, Koninklijke Bibliotheek, Nationaal Archief of the Netherlands general.version : 1.0 general.keywords : PIC, controller, interrupt, IRQ general.relations : cpu, motherboard general.yearOfIntroduction : general.yearOfEnding : general.ancestor : general.successor :

  Notes: - PIC is also an I/O device itself - All IRQ numbers are managed by PIC`

Nested Class Summary

Nested classes/interfaces inherited from interface dioscuri.interfaces.Module
`Module.Type`

Field Summary
`static int` | `MASTER`
`static int` | `SLAVE`

Fields inherited from class dioscuri.module.AbstractModule
`type`

Constructor Summary
`PIC(Emulator owner)` Class constructor

Method Summary
`void` | `clearIRQ(int irqNumber)` Lowers an interrupt request (IRQ) of given IRQ number
`java.lang.String` | `getDump()` Return a dump of module status
`byte` | `getIOPortByte(int portAddress)`
`byte[]` | `getIOPortDoubleWord(int portAddress)`
`byte[]` | `getIOPortWord(int portAddress)`
`int` | `interruptAcknowledge()` Acknowledges an interrupt request from PIC by CPU Note: only the CPU can acknowledge an interrupt
`int` | `requestIRQNumber(AbstractModule module)` Returns an IRQ number.
`boolean` | `reset()` Reset all parameters of module.
`void` | `setIOPortByte(int portAddress, byte data)`
`void` | `setIOPortDoubleWord(int portAddress, byte[] dataDoubleWord)`
`void` | `setIOPortWord(int portAddress, byte[] dataWord)`
`void` | `setIRQ(int irqNumber)` Raises an interrupt request (IRQ) of given IRQ number

Methods inherited from class dioscuri.module.AbstractModule
`getConnection, getConnections, getDebugMode, getExpectedConnections, getType, isConnected, setConnection, setDebugMode, start, stop`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface dioscuri.interfaces.Module
`getConnection, getConnections, getDebugMode, getExpectedConnections, getType, isConnected, setConnection, setDebugMode, start, stop`

Field Detail

### MASTER

    public static final int MASTER

See Also:
  Constant Field Values

### SLAVE

    public static final int SLAVE

See Also:
  Constant Field Values

Constructor Detail

### PIC

    public PIC(Emulator owner)

  Class constructor

  Parameters:
    `owner` -

Method Detail

### reset

    public boolean reset()

  Reset all parameters of module.

  Specified by:
    `reset` in interface `Module`
  Specified by:
    `reset` in class `AbstractModule`
  Returns:
    true iff the AbstractModule was reset properly.
  See Also:
    `AbstractModule`

### getDump

    public java.lang.String getDump()

  Return a dump of module status

  Provides a dummy implementation since many of the subclasses of this abstract module class do not need or use a getDump() implementation. The ones that do, can override this method.

  Specified by:
    `getDump` in interface `Module`
  Overrides:
    `getDump` in class `AbstractModule`
  Returns:
    string containing a dump of this module
  See Also:
    `AbstractModule`

### getIOPortByte

    public byte getIOPortByte(int portAddress)
                       throws UnknownPortException

  Returns:
  Throws:
    `UnknownPortException`
  See Also:
    `Addressable`

### setIOPortByte

    public void setIOPortByte(int portAddress,
                              byte data)

  See Also:
    `Addressable`

### getIOPortWord

    public byte[] getIOPortWord(int portAddress)

  Returns:
  See Also:
    `Addressable`

### setIOPortWord

    public void setIOPortWord(int portAddress,
                              byte[] dataWord)

  See Also:
    `Addressable`

### getIOPortDoubleWord

    public byte[] getIOPortDoubleWord(int portAddress)

  Returns:
  See Also:
    `Addressable`

### setIOPortDoubleWord

    public void setIOPortDoubleWord(int portAddress,
                                    byte[] dataDoubleWord)

  See Also:
    `Addressable`

### requestIRQNumber

    public int requestIRQNumber(AbstractModule module)

  Returns an IRQ number.

  Specified by:
    `requestIRQNumber` in class `ModulePIC`
  Parameters:
    `module` - that would like to have an IRQ number
  Returns:
    int IRQ number between 1 to 16, or -1 if not allowed/possible
  See Also:
    `ModulePIC`

### setIRQ

    public void setIRQ(int irqNumber)

  Raises an interrupt request (IRQ) of given IRQ number

  Specified by:
    `setIRQ` in class `ModulePIC`
  See Also:
    `ModulePIC`

### clearIRQ

    public void clearIRQ(int irqNumber)

  Lowers an interrupt request (IRQ) of given IRQ number

  Specified by:
    `clearIRQ` in class `ModulePIC`
  See Also:
    `ModulePIC`

### interruptAcknowledge

    public int interruptAcknowledge()

  Acknowledges an interrupt request from PIC by CPU Note: only the CPU can acknowledge an interrupt

  Specified by:
    `interruptAcknowledge` in class `ModulePIC`
  Returns:
    int address defining the jump address for handling the IRQ by the CPU
  See Also:
    `ModulePIC`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD