Agnus/ Read/ Denise/ Register Address Write Paula Function -------- ------- ----- ------- -------- JOY0DAT 00A R D Joystick-mouse 0 data (left vertical, horizontal) JOY1DAT 00C R D Joystick-mouse 1 data (right vertical, horizontal) These addresses each read a pair of 8-bit mouse counters. 0=left controller pair, 1=right controller pair (four counters total). The bit usage for both left and right addresses is shown below. Each counter is clocked by signals from two controller pins. Bits 1 and 0 of each counter may be read to determine the state of these two clock pins. This allows these pins to double as joystick switch inputs. Mouse counter usage: (pins 1,3=Yclock, pins 2,4=Xclock) BIT# 15,14,13,12,11,10,09,08 07,06,05,04,03,02,01,00 ----------------------- ----------------------- 0DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0 1DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0 The following table shows the mouse/joystick connector pin usage. The pins (and their functions) are sampled (multiplexed) into the DENISE chip during the clock times shown in the table. This table is for reference only and should not be needed by the programmer. (Note that the joystick functions are all "active low" at the connector pins.) Sampled by DENISE Conn Joystick Mouse ----------------- Pin Function Function Pin Name Clock ---- -------- -------- --- ---- ----- L1 FORW* Y 38 M0V at CCK L3 LEFT* YQ 38 M0V at CCK* L2 BACK* X 9 M0H at CCK L4 RIGH* XQ 9 M0H at CCK* R1 FORW* Y 39 M1V at CCK R3 LEFT* YQ 39 M1V at CCK* R2 BACK* X 8 M1H at CCK R4 RIGH* XQ 8 M1H at CCK* After being sampled, these connector pin signals are used in quadrature to clock the mouse counters. The LEFT and RIGHT joystick functions (active high) are directly available on the Y1 and X1 bits of each counter. In order to recreate the FORWARD and BACK joystick functions, however, it is necessary to logically combine (exclusive OR) the lower two bits of each counter. This is illustrated in the following table. To detect Read these counter bits -------- ---------------- Forward Y1 xor Y0 (BIT#09 xor BIT#08) Left Y1 Back X1 xor X0 (BIT#01 xor BIT#00) Right X1
[Back to Amiga Developer Docs]