dioscuri.module.pic
Class PIC

java.lang.Object
  extended by dioscuri.module.AbstractModule
      extended by dioscuri.module.ModulePIC
          extended by 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