Then, there is
information on the Game port from the old comp.sys.apple2 Usenet newsgroup back in 1998 (some spelling and grammar corrections were applied today):
Apple 16-pin DIP Game Port socket (on the motherboard)
for II, II+, IIe, IIgs
=========
Pushbutton 3 (GS only) 9 | * * | 8 Ground
Gm Ctrl 1 (Stick-1 Y) 10 | * * | 7 Gm Ctrl 2 (Stick-2 X)
Gm Ctrl 3 (Stick-2 Y) 11 | * * | 6 Gm Ctrl 0 (Stick-1 X)
Annunciator 3 12 | * * | 5 /$C040 Strobe
Annunciator 2 13 | * * | 4 Pushbutton 2
Annunciator 1 14 | * * | 3 Pushbutton 1
Annunciator 0 15 | * * | 2 Pushbutton 0
No Connection 16 | * * | 1 +5V
===| |===
^
Notch on socket
(faces toward the front of the computer)
Game Port Information (with BASIC Peek/Poke locations) obtained
from pages 430-433 of the Apple // User's Guide, Second Edition
by Lon Poole:
-16296 Annunciator 0 Off
Turns off game control output (annunciator) number 0. The voltage
on pin 15 of the game control is set to approximately
0 volts (TTL low).
-16295 Annunciator 0 On
Turns on game control output (annunciator) number 0. The voltage
on pin 15 of the game control is set to approximately
+5 volts (TTL high).
The following annunciator soft switches follow the same rules as
annunciator 0 for their respective pin assignments:
-16294 Annunciator 1 Off
-16293 Annunciator 1 On
-16292 Annunciator 2 Off
-16291 Annunciator 2 On
-16290 Annunciator 3 Off
-16289 Annunciator 3 On
-16287 Read Pushbutton 0
When the pushbutton on game control number 0 or the open-apple key
is pressed, the value in this location exceeds 127. When not pressed,
the value is 127 or less.
The following pushbutton soft switches follow the same rules as
pushbutton 0 for their respective pin assignments:
-16286 Read Pushbutton 1
-16285 Read Pushbutton 2
-16320 Stobe Output
Usually, pin 5 of the game control connector is +5 volts. If you
PEEK memory location -16320. It drops to 0 volts for one-half
microsecond. POKE will trigger the strobe twice.
The following is a direct excerpt from page 167 of the Apple //e
Reference Manual:
"The hand-control inputs are connected to the timing inputs of an
NE558 quadruple 555-type analog timer. Addressing $C07x sends a
signal from the 74LS154 that resets all four timers and causes
their outputs to go one (high). A variable resistance of up to
150K ohms connected between one of these inputs and the +5V
supply controls the charging time of one of four 0.022-microfarad
capacitors. When the voltage on the capacitor passes a certain
threshold, the output of the NE558 changes back to zero (low).
Programs can determine the setting of a variable resistor by
resetting the timers and then counting time until the selected
timer input changes from high to low. The resulting count is
proportional to the resistance."
The above excerpt is a long description of the
BASIC PDL() function.