Using the joystick port

The M3SE's joystick port is designed to work with a wide variety of vintage games. It is software-compatible with the vintage Alpha Products joystick. You'll need an Atari 2600-compatible joystick to use it. Plug the joystick into the 9-pin male D-SUB connector on the MISE.

The majority of vintage games expect the joystick to operate in "5-bit" mode. That is, there are separate I/O port bits for each joystick switch: up, down, left, right, and the "fire" button. A few games, however (notably those produced by Adventure International) require "4-bit" mode, in which the joystick button does not have a separate bit; instead, pressing the button causes the "up" and "down" bits to be seen simultaneously. To enter 4-bit mode, set bit 1 of output port 0xBE. The command "OUT 0xBE 0x02" should do the trick. The Alpha products joystick used a physical switch for selecting the mode.

For maximum compatibility, the joystick switches can be read at three different I/O ports: 0x00, 0x13, and 0xF7. The bit positions are as follows (note that the bits read 0, not 1, if the corresponding switch/button is activated):

5-Bit Mode
	Bit 4 - 0 if "fire" button pressed.
	Bit 3 - 0 if joystick handle pushed right
	Bit 2 - 0 if joystick handle pushed left
	Bit 1 - 0 if joystick handle pushed down
	Bit 0 - 0 if joystick handle pushed up
4-Bit Mode
	Bit 3 - 0 if joystick handle pushed right
	Bit 2 - 0 if joystick handle pushed left
	Bit 1 - 0 if joystick handle pushed down or "fire" button pressed
	Bit 0 - 0 if joystick handle pushed up or "fire" button pressed

The state of unlisted bits should be disregarded.

When pushing the joystick handle diagonally, two switches will be activated simultaneously, so for example you'll see bits 1 and 2 active (low) when the handle is pushed to the lower left.


Back to the main page