The Amiga 9-pin joystick port is compatible with:
Atari 800/VCS joysticks and paddles;
Atari ST joysticks;
Commodore Vic-20, C64, C64GS and C128 joysticks;
Commodore Amiga computer joysticks and joypads; and
Amiga CD32 joypads.
This table from Wikipedia's page on the Atari Joystick Port showing the pin assignments of various systems using a 9-pin input ...
Looking at the pictures on iFixit, the two PCBs that fit behind the shoulder buttons don't seem to be reinforced by anything much:
Excess pressure on the shoulder buttons might bend these boards slightly away and cause the connection to not be made. The alternative is corrosion on the connection traces; you say you have tried contact cleaner.
Try bending ...
Windows XP will not automatically detect DB-15 gameport joysticks. XP has to be told what kind of joystick to expect at the gameport using the Game Controllers item in Control Panel. Flightsticks, arcade joysticks and gamepads are treated the same.
Full instructions for installing a gameport joystick in XP:
First, make sure XP knows you have a gameport. Go ...
It depends on what you call "compatible". On any DB9 joystick, the directions and at least 1 button will work
If you're aiming 1 button joystick, then you can pick any controller you'll find a button that works.
Now if you need 2 buttons, only sega controllers have a chance to work, but the buttons that work aren't the most naturally located. I ...
Assuming the FIRE button on joy1 is pressed, then your joypad1 should store the value %11101111. In order to check this, using your constants:
; handle FIRE pressed
Your code appears to do the opposite. The and opcode above is doing the following bit-wise logical operation:
%11101111 & %...