uae_u8 v = DISK_status_ciaa() & 0x3c;
v |= handle_joystick_buttons (ciaapra, ciaadra);
v |= (ciaapra | (ciaadra ^ 3)) & 0x03;
- v = dongle_cia_read (0, reg, v);
+ v = dongle_cia_read (0, reg, ciaadra, v);
v = alg_joystick_buttons(ciaapra, ciaadra, v);
#if DONGLE_DEBUG > 0
if (notinrom())
} else {
tmp = handle_parport_joystick (0, ciaaprb, ciaadrb);
- tmp = dongle_cia_read (1, reg, tmp);
+ tmp = dongle_cia_read (1, reg, ciaadrb, tmp);
#if DONGLE_DEBUG > 0
if (notinrom())
write_log (_T("BFE101 R %02X %s\n"), tmp, debuginfo(0));
tmp |= handle_parport_joystick (1, ciabpra, ciabdra);
}
#endif
- tmp = dongle_cia_read (1, reg, tmp);
+ tmp = dongle_cia_read (1, reg, ciabpra, tmp);
#if DONGLE_DEBUG > 0
if (notinrom ())
write_log (_T("BFD000 R %02X %s\n"), tmp, debuginfo(0));
#endif
tmp = ciabprb;
tmp = DISK_status_ciab(tmp);
- tmp = dongle_cia_read (1, reg, tmp);
+ tmp = dongle_cia_read (1, reg, ciabprb, tmp);
if (ciabcrb & 2) {
int pb7 = 0;
if (ciabcrb & 4)
ciaapra = (ciaapra & ~0xc3) | (val & 0xc3);
bfe001_change ();
handle_cd32_joystick_cia (ciaapra, ciaadra);
- dongle_cia_write (0, reg, val);
+ dongle_cia_write (0, reg, ciaadra, val);
#ifdef AMAX
if (is_device_rom(&currprefs, ROMTYPE_AMAX, 0) > 0)
amax_bfe001_write (val, ciaadra);
write_log (_T("BFE101 W %02X %s\n"), val, debuginfo(0));
#endif
ciaaprb = val;
- dongle_cia_write (0, reg, val);
+ dongle_cia_write (0, reg, ciaadrb, val);
#ifdef PARALLEL_PORT
if (isprinter() > 0) {
doprinter (val);
write_log (_T("BFE201 W %02X %s\n"), val, debuginfo(0));
#endif
ciaadra = val;
- dongle_cia_write (0, reg, val);
+ dongle_cia_write (0, reg, ciaapra, val);
bfe001_change ();
break;
case 3:
ciaadrb = val;
- dongle_cia_write (0, reg, val);
+ dongle_cia_write (0, reg, ciaaprb, val);
#if DONGLE_DEBUG > 0
if (notinrom ())
write_log (_T("BFE301 W %02X %s\n"), val, debuginfo(0));
if (notinrom ())
write_log (_T("BFD000 W %02X %s\n"), val, debuginfo(0));
#endif
- dongle_cia_write (1, reg, val);
+ dongle_cia_write (1, reg, ciabdra, val);
ciabpra = val;
#ifdef SERIAL_PORT
if (currprefs.use_serial)
if (notinrom ())
write_log (_T("BFD100 W %02X %s\n"), val, debuginfo(0));
#endif
- dongle_cia_write (1, reg, val);
+ dongle_cia_write (1, ciabdrb, reg, val);
ciabprb = val;
DISK_select (val);
break;
if (notinrom ())
write_log (_T("BFD200 W %02X %s\n"), val, debuginfo(0));
#endif
- dongle_cia_write (1, reg, val);
+ dongle_cia_write (1, reg, ciabpra, val);
ciabdra = val;
#ifdef SERIAL_PORT
if (currprefs.use_serial)
if (notinrom ())
write_log (_T("BFD300 W %02X %s\n"), val, debuginfo(0));
#endif
- dongle_cia_write (1, reg, val);
+ dongle_cia_write (1, reg, ciabprb, val);
ciabdrb = val;
break;
case 4:
#define RUGBYCOACH 6
#define CRICKETCAPTAIN 7
#define LEVIATHAN 8
+#define MUSICMASTER 9
#define LOGISTIX 10
static int flag;
- POT1Y = 100k
- POT1X * 10 / POT1Y must be between 12 and 33
+Music Master
+- sets joystick port 2 fire button output + low
+- first JOY1DAT AND 0x0303 must be zero.
+- following JOY1DAT AND 0x0303 reads must be nonzero.
*/
memset (oldcia, 0, sizeof oldcia);
}
-uae_u8 dongle_cia_read (int cia, int reg, uae_u8 val)
+uae_u8 dongle_cia_read (int cia, int reg, uae_u8 extra, uae_u8 val)
{
if (!currprefs.dongle)
return val;
return val;
}
-void dongle_cia_write (int cia, int reg, uae_u8 val)
+void dongle_cia_write (int cia, int reg, uae_u8 extra, uae_u8 val)
{
if (!currprefs.dongle)
return;
cycles = get_cycles ();
}
break;
+ case MUSICMASTER:
+ if (cia == 0 && reg == 0) {
+ if (!(val & 0x80) && (extra & 0x80)) {
+ flag = 1;
+ } else {
+ flag = 0;
+ }
+ }
+ break;
}
oldcia[cia][reg] = val;
}
}
flag ^= 1;
break;
+ case MUSICMASTER:
+ if (port == 1 && !flag) {
+ val = 0;
+ } else if (port == 1 && flag == 1) {
+ val = 0;
+ flag++;
+ } else if (port == 1 && flag == 2) {
+ val = 0x0303;
+ }
+ break;
}
return val;
}