Mahjong controller



A special controller designed to play mahjong games. It provides 21 push buttons organized in two rows:


 * First row: A B C D E F G H I J K L M N.
 * Second row: SELECT START, then PON CHI KAN REACH RON (Japanese: pon chî kan rîchi ron).

=Software=

The mahjong controller is suported by all original system ROMs.

The MVS system ROM doesn't detect the controller, but reads hardware DIPs #3 and sets the status byte of INPUT_1 to 3 if set. It never sets INPUT_2 to 3, meaning that the mahjong controller is a single-player setup only on MVS.

The home console system ROM can detect the controller on both ports (by writing 1 to OUT3 and reading the SELECT button) and sets the corresponding input status byte to 3, allowing the use of two mahjong controllers. Calling SYSTEM_IO reports the controller's status and updates the input data in RAM.

=Hardware=

The controller is built using a multiplexed array of buttons, using the controller port outputs to select which group of buttons to read. OUT3 and SELECT are hardwired to enable detection of the controller by home systems.

The button array is organized as follows:

SELECT and START are always enabled.

Schematic of the controller: