Programmable Peripheral Interface
This page was last modified 11:40, 1 June 2019 by Gdx. Based on work by Rderooy and NYYRIKKI.

On MSX, the PPI (Programmable Peripheral Interface) is a chip used to switch the Slots, to manage the keyboard (clatter included) and the cassette player. The PPI used by MSX systems is based on the Intel 8255, although in most systems a clone is present, or the functionality is integrated in a MSX Engine chip.

PPI Registers

PPI registers can be acceded too by the following I/O ports.

A8h is the port to access the primary Slot selection register. (PPI's port A is used)
  • bit 0~1 = Number of slot to select on page 0 (0000h~3FFFh)
  • bit 2~3 = Number of slot to select on page 1 (4000h~7FFFh)
  • bit 4~5 = Number of slot to select on page 2 (8000h~BFFFh)
  • bit 6~7 = Number of slot to select on page 3 (C000h~FFFFh)
A9h is the port to read the keyboard matrix row specified via the port AAh. (PPI's port B is used)
AAh is the port to access the register that control the keyboard CAP LED, two signals to data recorder and a matrix row (use the port C of PPI).
  • bits 0~3 = Row number of specified keyboard matrix to read via port B
  • bit 4 = Data recorder motor (reset to turn on)
  • bit 5 = Set to write on tape
  • bit 6 = Keyboard LED CAPS (reset to turn on)
  • bit 7 = 1, then 0 shortly thereafter to make a clicking sound (used for the keyboard).
ABh is the port to access the ports control register. (Write only)
  • bit 0 = Bit status to change
  • bit 1~3 = Number of the bit to change at port C of the PPI
  • bit 4~6 = Unused
  • bit 7 = Must be always reset on MSX.