mirror of
https://github.com/holub/mame
synced 2025-04-16 05:24:54 +03:00
apple2gs: add some missing ADB commands. (#7753)
This commit is contained in:
parent
0637e99cc1
commit
f102bc364c
@ -629,6 +629,7 @@ private:
|
||||
void adb_post_response(const u8 *bytes, size_t length);
|
||||
void adb_post_response_1(u8 b);
|
||||
void adb_post_response_2(u8 b1, u8 b2);
|
||||
void adb_post_response_3(u8 b1, u8 b2, u8 b3);
|
||||
void adb_do_command();
|
||||
void adb_write_datareg(u8 data);
|
||||
void adb_write_kmstatus(u8 data);
|
||||
@ -965,6 +966,15 @@ void apple2gs_state::adb_post_response_2(u8 b1, u8 b2)
|
||||
adb_post_response(b, 2);
|
||||
}
|
||||
|
||||
void apple2gs_state::adb_post_response_3(u8 b1, u8 b2, u8 b3)
|
||||
{
|
||||
u8 b[3];
|
||||
b[0] = b1;
|
||||
b[1] = b2;
|
||||
b[2] = b3;
|
||||
adb_post_response(b, 3);
|
||||
}
|
||||
|
||||
void apple2gs_state::adb_do_command()
|
||||
{
|
||||
int device;
|
||||
@ -980,6 +990,12 @@ void apple2gs_state::adb_do_command()
|
||||
case 0x00: /* ??? */
|
||||
break;
|
||||
|
||||
case 0x01: /* abort */
|
||||
break;
|
||||
|
||||
case 0x02: /* reset keyboard uC */
|
||||
break;
|
||||
|
||||
case 0x03: /* flush keyboard buffer */
|
||||
break;
|
||||
|
||||
@ -1011,12 +1027,20 @@ void apple2gs_state::adb_do_command()
|
||||
adb_post_response_1(adb_read_memory(address));
|
||||
break;
|
||||
|
||||
case 0x0a: /* ??? */
|
||||
case 0x0b: /* ??? */
|
||||
case 0x0a: /* read modes */
|
||||
adb_post_response_1(m_adb_mode);
|
||||
break;
|
||||
|
||||
case 0x0b: /* read config */
|
||||
adb_post_response_3(0, 0, 0); /* ignored for now */
|
||||
break;
|
||||
|
||||
case 0x0c: /* read adb error */
|
||||
adb_post_response_1(0);
|
||||
break;
|
||||
|
||||
case 0x0d: /* get version */
|
||||
adb_post_response_1(0x06);
|
||||
adb_post_response_1(m_is_rom3 ? 0x06 : 0x05); /* rom0 0x04 */
|
||||
break;
|
||||
|
||||
case 0x0e: /* read available charsets */
|
||||
@ -1027,10 +1051,25 @@ void apple2gs_state::adb_do_command()
|
||||
adb_post_response_2(0x01, 0x00);
|
||||
break;
|
||||
|
||||
case 0x12: /* mystery command 0x12 */
|
||||
case 0x13: /* mystery command 0x13 */
|
||||
case 0x10: /* reset system */
|
||||
break;
|
||||
|
||||
case 0x11: /* send adb keycode */
|
||||
break;
|
||||
|
||||
case 0x12: /* mystery command 0x12 - mouse key parameters */
|
||||
case 0x13: /* mystery command 0x13 - disk key parameters */
|
||||
break;
|
||||
|
||||
case 0x40: /* reset adb */
|
||||
break;
|
||||
|
||||
case 0x49: case 0x4a: case 0x4b: case 0x4c:
|
||||
case 0x4d: case 0x4e: case 0x4f:
|
||||
/* transmit adb bytes. first byte is adb device command */
|
||||
break;
|
||||
|
||||
|
||||
case 0x84: // ACS demo disk #2 has a bug and writes this accidentally to $C026
|
||||
break;
|
||||
|
||||
@ -1101,6 +1140,7 @@ void apple2gs_state::adb_write_datareg(u8 data)
|
||||
{
|
||||
case 0x00: /* ??? */
|
||||
case 0x01: /* abort */
|
||||
case 0x02: /* reset keyboard uC */
|
||||
/* do nothing for now */
|
||||
break;
|
||||
|
||||
@ -1129,30 +1169,52 @@ void apple2gs_state::adb_write_datareg(u8 data)
|
||||
m_adb_command_length = 2;
|
||||
break;
|
||||
|
||||
case 0x0a: /* ??? */
|
||||
case 0x0b: /* ??? */
|
||||
m_adb_command_length = 0;
|
||||
break;
|
||||
|
||||
case 0x0a: /* read modes */
|
||||
case 0x0b: /* read config */
|
||||
case 0x0c: /* read adb error */
|
||||
case 0x0d: /* get version */
|
||||
m_adb_command_length = 0;
|
||||
break;
|
||||
|
||||
case 0x0e: /* read available charsets */
|
||||
m_adb_command_length = 0;
|
||||
m_adb_state = ADBSTATE_INCOMMAND; /* HACK */
|
||||
break;
|
||||
|
||||
case 0x0f: /* read available layouts */
|
||||
m_adb_command_length = 0;
|
||||
m_adb_state = ADBSTATE_INCOMMAND; /* HACK */
|
||||
break;
|
||||
|
||||
case 0x12: /* mystery command 0x12 */
|
||||
case 0x13: /* mystery command 0x13 */
|
||||
case 0x10: /* reset system */
|
||||
/* do nothing for now */
|
||||
break;
|
||||
|
||||
case 0x11: /* send adb keycode */
|
||||
m_adb_command_length = 1;
|
||||
break;
|
||||
|
||||
case 0x12: /* mystery command 0x12 - mouse key parameters? */
|
||||
case 0x13: /* mystery command 0x13 - disk eject parameters? */
|
||||
m_adb_command_length = 2;
|
||||
break;
|
||||
|
||||
case 0x40: /* reset ADB */
|
||||
break;
|
||||
|
||||
/* 0x49 - 0x4f - transmit ADB bytes where length = command & 0xf - 6*/
|
||||
case 0x49: case 0x4a: case 0x4b: case 0x4c:
|
||||
case 0x4d: case 0x4e: case 0x4f:
|
||||
m_adb_command_length = (m_adb_command & 0x0f) - 6;
|
||||
break;
|
||||
|
||||
case 0x50: /* enable SRQ device 0 */
|
||||
case 0x51: /* enable SRQ device 1 */
|
||||
case 0x52: /* enable SRQ device 2 */
|
||||
case 0x53: /* enable SRQ device 3 */
|
||||
/* ignore for now */
|
||||
break;
|
||||
|
||||
case 0x60: /* flush adb buffer device 0 */
|
||||
case 0x61: /* flush adb buffer device 1 */
|
||||
case 0x62: /* flush adb buffer device 2 */
|
||||
case 0x63: /* flush adb buffer device 3 */
|
||||
/* ignore for now */
|
||||
break;
|
||||
|
||||
case 0x70: /* disable SRQ device 0 */
|
||||
case 0x71: /* disable SRQ device 1 */
|
||||
case 0x72: /* disable SRQ device 2 */
|
||||
|
Loading…
Reference in New Issue
Block a user