diff options
Diffstat (limited to 'src/mess/machine/macadb.c')
-rw-r--r-- | src/mess/machine/macadb.c | 811 |
1 files changed, 405 insertions, 406 deletions
diff --git a/src/mess/machine/macadb.c b/src/mess/machine/macadb.c index 27e78c85cae..0f2d588ff2d 100644 --- a/src/mess/machine/macadb.c +++ b/src/mess/machine/macadb.c @@ -7,62 +7,62 @@ #include "emu.h" #include "includes/mac.h" -#define LOG_ADB 0 -#define LOG_ADB_MCU_CMD 0 +#define LOG_ADB 0 +#define LOG_ADB_MCU_CMD 0 #define LOG_ADB_TALK_LISTEN 0 // ADB states -#define ADB_STATE_NEW_COMMAND (0) -#define ADB_STATE_XFER_EVEN (1) -#define ADB_STATE_XFER_ODD (2) -#define ADB_STATE_IDLE (3) -#define ADB_STATE_NOTINIT (4) +#define ADB_STATE_NEW_COMMAND (0) +#define ADB_STATE_XFER_EVEN (1) +#define ADB_STATE_XFER_ODD (2) +#define ADB_STATE_IDLE (3) +#define ADB_STATE_NOTINIT (4) // ADB commands -#define ADB_CMD_RESET (0) -#define ADB_CMD_FLUSH (1) +#define ADB_CMD_RESET (0) +#define ADB_CMD_FLUSH (1) // ADB line states enum { - // receive states - LST_IDLE = 0, - LST_ATTENTION, - LST_BIT0, - LST_BIT1, - LST_BIT2, - LST_BIT3, - LST_BIT4, - LST_BIT5, - LST_BIT6, - LST_BIT7, - LST_TSTOP, - LST_WAITT1T, - LST_RCVSTARTBIT, - LST_SRQNODATA, - - // send states - LST_TSTOPSTART, - LST_TSTOPSTARTa, - LST_STARTBIT, - LST_SENDBIT0, - LST_SENDBIT0a, - LST_SENDBIT1, - LST_SENDBIT1a, - LST_SENDBIT2, - LST_SENDBIT2a, - LST_SENDBIT3, - LST_SENDBIT3a, - LST_SENDBIT4, - LST_SENDBIT4a, - LST_SENDBIT5, - LST_SENDBIT5a, - LST_SENDBIT6, - LST_SENDBIT6a, - LST_SENDBIT7, - LST_SENDBIT7a, - LST_SENDSTOP, - LST_SENDSTOPa + // receive states + LST_IDLE = 0, + LST_ATTENTION, + LST_BIT0, + LST_BIT1, + LST_BIT2, + LST_BIT3, + LST_BIT4, + LST_BIT5, + LST_BIT6, + LST_BIT7, + LST_TSTOP, + LST_WAITT1T, + LST_RCVSTARTBIT, + LST_SRQNODATA, + + // send states + LST_TSTOPSTART, + LST_TSTOPSTARTa, + LST_STARTBIT, + LST_SENDBIT0, + LST_SENDBIT0a, + LST_SENDBIT1, + LST_SENDBIT1a, + LST_SENDBIT2, + LST_SENDBIT2a, + LST_SENDBIT3, + LST_SENDBIT3a, + LST_SENDBIT4, + LST_SENDBIT4a, + LST_SENDBIT5, + LST_SENDBIT5a, + LST_SENDBIT6, + LST_SENDBIT6a, + LST_SENDBIT7, + LST_SENDBIT7a, + LST_SENDSTOP, + LST_SENDSTOPa }; /* ************************************************************************* @@ -78,7 +78,7 @@ int mac_state::adb_pollkbd(int update) int i, j, keybuf, report, codes[2], result; static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3", "KEY4", "KEY5" }; - codes[0] = codes[1] = 0xff; // key up + codes[0] = codes[1] = 0xff; // key up report = result = 0; for (i = 0; i < 6; i++) @@ -301,35 +301,35 @@ void mac_state::adb_talk() m_adb_send = 0; break; - default: // reserved/unused + default: // reserved/unused break; } break; - case 2: // listen - m_adb_datasize = 0; - if ((addr == m_adb_keybaddr) || (addr == m_adb_mouseaddr)) - { - #if LOG_ADB || LOG_ADB_TALK_LISTEN - printf("ADB LISTEN: reg %x address %x\n", reg, addr); - #endif - m_adb_direction = 1; // input from Mac - m_adb_command = 0; - m_adb_listenreg = reg; - m_adb_listenaddr = addr; - if ((ADB_IS_EGRET) || (ADB_IS_CUDA)) - { - m_adb_stream_ptr = 0; - memset(m_adb_buffer, 0, sizeof(m_adb_buffer)); - } - } - else - { - #if LOG_ADB || LOG_ADB_TALK_LISTEN - printf("ADB LISTEN to unknown device, timing out\n"); - #endif - m_adb_direction = 0; - } + case 2: // listen + m_adb_datasize = 0; + if ((addr == m_adb_keybaddr) || (addr == m_adb_mouseaddr)) + { + #if LOG_ADB || LOG_ADB_TALK_LISTEN + printf("ADB LISTEN: reg %x address %x\n", reg, addr); + #endif + m_adb_direction = 1; // input from Mac + m_adb_command = 0; + m_adb_listenreg = reg; + m_adb_listenaddr = addr; + if ((ADB_IS_EGRET) || (ADB_IS_CUDA)) + { + m_adb_stream_ptr = 0; + memset(m_adb_buffer, 0, sizeof(m_adb_buffer)); + } + } + else + { + #if LOG_ADB || LOG_ADB_TALK_LISTEN + printf("ADB LISTEN to unknown device, timing out\n"); + #endif + m_adb_direction = 0; + } break; case 3: // talk @@ -340,7 +340,7 @@ void mac_state::adb_talk() // keep track of what device the Mac last TALKed to m_adb_last_talk = addr; - m_adb_direction = 0; // output to Mac + m_adb_direction = 0; // output to Mac if (addr == m_adb_mouseaddr) { UINT8 mouseX, mouseY; @@ -370,8 +370,8 @@ void mac_state::adb_talk() // get ID/handler case 3: - m_adb_buffer[0] = 0x60 | (m_adb_mouseaddr&0xf); // SRQ enable, no exceptional event - m_adb_buffer[1] = 0x01; // handler 1 + m_adb_buffer[0] = 0x60 | (m_adb_mouseaddr&0xf); // SRQ enable, no exceptional event + m_adb_buffer[1] = 0x01; // handler 1 m_adb_datasize = 2; m_adb_mouse_initialized = 1; @@ -381,10 +381,10 @@ void mac_state::adb_talk() break; } - if (adb_pollkbd(0)) - { - m_adb_srqflag = true; - } + if (adb_pollkbd(0)) + { + m_adb_srqflag = true; + } } else if (addr == m_adb_keybaddr) { @@ -420,19 +420,19 @@ void mac_state::adb_talk() break; // read modifier keys - case 2: - { - this->adb_pollkbd(1); - m_adb_buffer[0] = m_adb_modifiers; - m_adb_buffer[1] = 0xff; - m_adb_datasize = 2; - } + case 2: + { + this->adb_pollkbd(1); + m_adb_buffer[0] = m_adb_modifiers; + m_adb_buffer[1] = 0xff; + m_adb_datasize = 2; + } break; // get ID/handler case 3: - m_adb_buffer[0] = 0x60 | (m_adb_keybaddr&0xf); // SRQ enable, no exceptional event - m_adb_buffer[1] = 0x01; // handler 1 + m_adb_buffer[0] = 0x60 | (m_adb_keybaddr&0xf); // SRQ enable, no exceptional event + m_adb_buffer[1] = 0x01; // handler 1 m_adb_datasize = 2; m_adb_keybinitialized = 1; @@ -442,10 +442,10 @@ void mac_state::adb_talk() break; } - if (adb_pollmouse()) - { - m_adb_srqflag = true; - } + if (adb_pollmouse()) + { + m_adb_srqflag = true; + } } else { @@ -455,10 +455,10 @@ void mac_state::adb_talk() m_adb_buffer[0] = m_adb_buffer[1] = 0; m_adb_datasize = 0; - if ((adb_pollkbd(0)) || (adb_pollmouse())) - { - m_adb_srqflag = true; - } + if ((adb_pollkbd(0)) || (adb_pollmouse())) + { + m_adb_srqflag = true; + } } break; } @@ -471,7 +471,7 @@ void mac_state::adb_talk() printf("Got LISTEN data %02x %02x for device %x reg %x\n", m_adb_command, m_adb_buffer[1], m_adb_listenaddr, m_adb_listenreg); #endif - m_adb_direction = 0; + m_adb_direction = 0; if (m_adb_listenaddr == m_adb_mouseaddr) { @@ -500,135 +500,135 @@ TIMER_CALLBACK(mac_adb_tick) { mac_state *mac = machine.driver_data<mac_state>(); - if ((ADB_IS_EGRET_NONCLASS) || (ADB_IS_CUDA_NONCLASS)) - { - switch (mac->m_adb_linestate) - { - case LST_SRQNODATA: - mac->set_adb_line(ASSERT_LINE); - mac->m_adb_linestate = LST_IDLE; - break; - - case LST_TSTOPSTART: - mac->set_adb_line(ASSERT_LINE); - mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); - mac->m_adb_linestate++; - break; - - case LST_TSTOPSTARTa: - mac->set_adb_line(CLEAR_LINE); - mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); - mac->m_adb_linestate++; - break; - - case LST_STARTBIT: - mac->set_adb_line(ASSERT_LINE); - mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); - mac->m_adb_linestate++; - break; - - case LST_SENDBIT0: - case LST_SENDBIT1: - case LST_SENDBIT2: - case LST_SENDBIT3: - case LST_SENDBIT4: - case LST_SENDBIT5: - case LST_SENDBIT6: - case LST_SENDBIT7: - mac->set_adb_line(CLEAR_LINE); - if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) - { + if ((ADB_IS_EGRET_NONCLASS) || (ADB_IS_CUDA_NONCLASS)) + { + switch (mac->m_adb_linestate) + { + case LST_SRQNODATA: + mac->set_adb_line(ASSERT_LINE); + mac->m_adb_linestate = LST_IDLE; + break; + + case LST_TSTOPSTART: + mac->set_adb_line(ASSERT_LINE); + mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); + mac->m_adb_linestate++; + break; + + case LST_TSTOPSTARTa: + mac->set_adb_line(CLEAR_LINE); + mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); + mac->m_adb_linestate++; + break; + + case LST_STARTBIT: + mac->set_adb_line(ASSERT_LINE); + mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); + mac->m_adb_linestate++; + break; + + case LST_SENDBIT0: + case LST_SENDBIT1: + case LST_SENDBIT2: + case LST_SENDBIT3: + case LST_SENDBIT4: + case LST_SENDBIT5: + case LST_SENDBIT6: + case LST_SENDBIT7: + mac->set_adb_line(CLEAR_LINE); + if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) + { // printf("1 "); - mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); - } - else - { + mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); + } + else + { // printf("0 "); - mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); - } - mac->m_adb_linestate++; - break; - - case LST_SENDBIT0a: - case LST_SENDBIT1a: - case LST_SENDBIT2a: - case LST_SENDBIT3a: - case LST_SENDBIT4a: - case LST_SENDBIT5a: - case LST_SENDBIT6a: - mac->set_adb_line(ASSERT_LINE); - if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) - { - mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); - } - else - { - mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); - } - mac->m_adb_buffer[mac->m_adb_stream_ptr] <<= 1; - mac->m_adb_linestate++; - break; - - case LST_SENDBIT7a: - mac->set_adb_line(ASSERT_LINE); - if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) - { + mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); + } + mac->m_adb_linestate++; + break; + + case LST_SENDBIT0a: + case LST_SENDBIT1a: + case LST_SENDBIT2a: + case LST_SENDBIT3a: + case LST_SENDBIT4a: + case LST_SENDBIT5a: + case LST_SENDBIT6a: + mac->set_adb_line(ASSERT_LINE); + if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) + { + mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); + } + else + { + mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); + } + mac->m_adb_buffer[mac->m_adb_stream_ptr] <<= 1; + mac->m_adb_linestate++; + break; + + case LST_SENDBIT7a: + mac->set_adb_line(ASSERT_LINE); + if (mac->m_adb_buffer[mac->m_adb_stream_ptr] & 0x80) + { // printf(" "); - mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); - } - else - { + mac->m_adb_timer->adjust(attotime::from_ticks(105, 1000000)); + } + else + { // printf(" "); - mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); - } - - mac->m_adb_stream_ptr++; - if (mac->m_adb_stream_ptr == mac->m_adb_datasize) - { - mac->m_adb_linestate++; - } - else - { - mac->m_adb_linestate = LST_SENDBIT0; - } - break; - - case LST_SENDSTOP: - mac->set_adb_line(CLEAR_LINE); - mac->m_adb_timer->adjust(attotime::from_ticks((57*2), 1000000)); - mac->m_adb_linestate++; - break; - - case LST_SENDSTOPa: - mac->set_adb_line(ASSERT_LINE); - mac->m_adb_timer->adjust(attotime::never); - mac->m_adb_linestate = LST_IDLE; - break; - } - } - else - { - // do one clock transition on CB1 to advance the VIA shifter - mac->m_adb_extclock ^= 1; - mac->m_via1->write_cb1(mac->m_adb_extclock); - mac->m_adb_extclock ^= 1; - mac->m_via1->write_cb1(mac->m_adb_extclock); - - mac->m_adb_timer_ticks--; - if (!mac->m_adb_timer_ticks) - { - mac->m_adb_timer->adjust(attotime::never); - - if ((mac->m_adb_direction) && (ADB_IS_BITBANG)) - { - mac->adb_talk(); - } - } - else - { - mac->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(200))); - } - } + mac->m_adb_timer->adjust(attotime::from_ticks(57, 1000000)); + } + + mac->m_adb_stream_ptr++; + if (mac->m_adb_stream_ptr == mac->m_adb_datasize) + { + mac->m_adb_linestate++; + } + else + { + mac->m_adb_linestate = LST_SENDBIT0; + } + break; + + case LST_SENDSTOP: + mac->set_adb_line(CLEAR_LINE); + mac->m_adb_timer->adjust(attotime::from_ticks((57*2), 1000000)); + mac->m_adb_linestate++; + break; + + case LST_SENDSTOPa: + mac->set_adb_line(ASSERT_LINE); + mac->m_adb_timer->adjust(attotime::never); + mac->m_adb_linestate = LST_IDLE; + break; + } + } + else + { + // do one clock transition on CB1 to advance the VIA shifter + mac->m_adb_extclock ^= 1; + mac->m_via1->write_cb1(mac->m_adb_extclock); + mac->m_adb_extclock ^= 1; + mac->m_via1->write_cb1(mac->m_adb_extclock); + + mac->m_adb_timer_ticks--; + if (!mac->m_adb_timer_ticks) + { + mac->m_adb_timer->adjust(attotime::never); + + if ((mac->m_adb_direction) && (ADB_IS_BITBANG)) + { + mac->adb_talk(); + } + } + else + { + mac->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(200))); + } + } } void mac_state::mac_adb_newaction(int state) @@ -646,8 +646,8 @@ void mac_state::mac_adb_newaction(int state) { case ADB_STATE_NEW_COMMAND: m_adb_command = m_adb_send = 0; - m_adb_direction = 1; // Mac is shifting us a command - m_adb_waiting_cmd = 1; // we're going to get a command + m_adb_direction = 1; // Mac is shifting us a command + m_adb_waiting_cmd = 1; // we're going to get a command m_adb_irq_pending = 0; m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); break; @@ -712,13 +712,13 @@ TIMER_CALLBACK(mac_pmu_tick) #if LOG_ADB printf("PM: timer tick, lowering ACK\n"); #endif - mac->m_pm_ack &= ~2; // lower ACK to handshake next step + mac->m_pm_ack &= ~2; // lower ACK to handshake next step } } void mac_state::pmu_one_byte_reply(UINT8 result) { - m_pm_out[0] = m_pm_out[1] = 1; // length + m_pm_out[0] = m_pm_out[1] = 1; // length m_pm_out[2] = result; m_pm_slen = 3; m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(200))); @@ -726,7 +726,7 @@ void mac_state::pmu_one_byte_reply(UINT8 result) void mac_state::pmu_three_byte_reply(UINT8 result1, UINT8 result2, UINT8 result3) { - m_pm_out[0] = m_pm_out[1] = 3; // length + m_pm_out[0] = m_pm_out[1] = 3; // length m_pm_out[2] = result1; m_pm_out[3] = result2; m_pm_out[4] = result3; @@ -736,25 +736,25 @@ void mac_state::pmu_three_byte_reply(UINT8 result1, UINT8 result2, UINT8 result3 void mac_state::pmu_exec() { - m_pm_sptr = 0; // clear send pointer - m_pm_slen = 0; // and send length - m_pm_dptr = 0; // and receive pointer + m_pm_sptr = 0; // clear send pointer + m_pm_slen = 0; // and send length + m_pm_dptr = 0; // and receive pointer // printf("PMU: Command %02x\n", mac->m_pm_cmd[0]); switch (m_pm_cmd[0]) { - case 0x10: // subsystem power and clock ctrl + case 0x10: // subsystem power and clock ctrl break; - case 0x20: // send ADB command (PMU must issue an IRQ on completion) + case 0x20: // send ADB command (PMU must issue an IRQ on completion) #if 0 printf("PMU: Send ADB %02x %02x cmd %02x flag %02x data %02x %02x\n", - m_pm_cmd[0], // 0x20 - m_pm_cmd[1], // ??? - m_pm_cmd[2], // adb flags (2 for autopoll active, 3 to reset bus?) - m_pm_cmd[3], // length of ADB data - m_pm_cmd[4], // adb data - m_pm_cmd[5]); + m_pm_cmd[0], // 0x20 + m_pm_cmd[1], // ??? + m_pm_cmd[2], // adb flags (2 for autopoll active, 3 to reset bus?) + m_pm_cmd[3], // length of ADB data + m_pm_cmd[4], // adb data + m_pm_cmd[5]); #endif #if 0 @@ -777,7 +777,7 @@ void mac_state::pmu_exec() m_adb_waiting_cmd = 1; adb_talk(); - if ((m_pm_cmd[2] & 0xf) == 0xb) // LISTEN register 3 (remap) + if ((m_pm_cmd[2] & 0xf) == 0xb) // LISTEN register 3 (remap) { m_adb_waiting_cmd = 0; m_adb_command = mac->m_pm_cmd[5]; @@ -815,10 +815,10 @@ void mac_state::pmu_exec() #endif break; - case 0x21: // turn ADB auto-poll off (does this need a reply?) + case 0x21: // turn ADB auto-poll off (does this need a reply?) break; - case 0x28: // read ADB + case 0x28: // read ADB if (m_adb_datasize > 0) { m_adb_datasize = 1; // hack @@ -840,7 +840,7 @@ void mac_state::pmu_exec() m_pm_out[2] = 0; m_pm_out[3] = 0; // m_pm_out[3] = m_pmu_last_adb_command; - m_pm_out[4] = 1; // length of following data + m_pm_out[4] = 1; // length of following data m_pm_out[5] = 0; m_pm_slen = 6; } @@ -862,7 +862,7 @@ void mac_state::pmu_exec() } break; - case 0x32: // write extended PRAM byte(s). cmd[2] = address, cmd[3] = length, cmd[4...] = data + case 0x32: // write extended PRAM byte(s). cmd[2] = address, cmd[3] = length, cmd[4...] = data if ((m_pm_cmd[2] + m_pm_cmd[3]) < 0x100) { int i; @@ -886,7 +886,7 @@ void mac_state::pmu_exec() } break; - case 0x39: // read first 20 bytes of PRAM + case 0x39: // read first 20 bytes of PRAM { int i; @@ -900,7 +900,7 @@ void mac_state::pmu_exec() } break; - case 0x3a: // read extended PRAM byte(s). cmd[2] = address, cmd[3] = length + case 0x3a: // read extended PRAM byte(s). cmd[2] = address, cmd[3] = length if ((m_pm_cmd[2] + m_pm_cmd[3]) < 0x100) { int i; @@ -921,14 +921,14 @@ void mac_state::pmu_exec() case 0x41: break; - case 0x58: // read internal modem status + case 0x58: // read internal modem status pmu_one_byte_reply(0); break; - case 0x60: // set low power warning and cutoff battery levels + case 0x60: // set low power warning and cutoff battery levels break; - case 0x68: // read battery/charger level + case 0x68: // read battery/charger level pmu_three_byte_reply(255, 255, 255); break; @@ -936,8 +936,8 @@ void mac_state::pmu_exec() pmu_three_byte_reply(255, 255, 255); break; - case 0x6b: // read extended battery/charger level and status (wants an 8 byte reply) - m_pm_out[0] = m_pm_out[1] = 8; // length + case 0x6b: // read extended battery/charger level and status (wants an 8 byte reply) + m_pm_out[0] = m_pm_out[1] = 8; // length m_pm_out[2] = 255; m_pm_out[3] = 255; m_pm_out[4] = 255; @@ -950,12 +950,12 @@ void mac_state::pmu_exec() m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(200))); break; - case 0x6c: // read battery ID + case 0x6c: // read battery ID pmu_one_byte_reply(1); break; - case 0x78: // read interrupt flag - if (ADB_IS_PM_VIA2_CLASS) // PB 140/170 use a "leaner" PMU protocol where you get the data for a PMU interrupt here + case 0x78: // read interrupt flag + if (ADB_IS_PM_VIA2_CLASS) // PB 140/170 use a "leaner" PMU protocol where you get the data for a PMU interrupt here { #if 0 if ((m_pmu_int_status&0xf0) == 0x10) @@ -965,7 +965,7 @@ void mac_state::pmu_exec() m_adb_datasize = 1; // hack m_pm_out[0] = m_pm_out[1] = 2 + m_adb_datasize; m_pm_out[2] = m_pmu_int_status; // ADB status in low nibble - m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent + m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent for (int i = 0; i < m_adb_datasize; i++) { m_pm_out[4+i] = 0; //m_adb_buffer[i]; @@ -984,8 +984,8 @@ void mac_state::pmu_exec() { m_pm_out[0] = m_pm_out[1] = 2; m_pm_out[2] = m_pmu_int_status; // ADB status in low nibble - m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent OR 0x80 for extra error-ness - m_pm_out[4] = 0; // return data + m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent OR 0x80 for extra error-ness + m_pm_out[4] = 0; // return data m_pm_slen = 4; m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(1500))); } @@ -999,8 +999,8 @@ void mac_state::pmu_exec() { m_pm_out[0] = m_pm_out[1] = 2; m_pm_out[2] = m_pmu_int_status; // ADB status in low nibble - m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent OR 0x80 for extra error-ness - m_pm_out[4] = 0; // return data + m_pm_out[3] = m_pmu_last_adb_command; // ADB command that was sent OR 0x80 for extra error-ness + m_pm_out[4] = 0; // return data m_pm_slen = 4; m_pmu_send_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(1500))); } @@ -1021,15 +1021,15 @@ void mac_state::pmu_exec() case 0x90: // sound power control break; - case 0x98: // read sound power state + case 0x98: // read sound power state pmu_one_byte_reply(1); break; - case 0xd8: // read A/D converter (not sure what this does) + case 0xd8: // read A/D converter (not sure what this does) pmu_one_byte_reply(0); break; - case 0xe0: // write PMU internal RAM + case 0xe0: // write PMU internal RAM break; case 0xe8: // read PMU internal RAM (just return zeroes) @@ -1051,7 +1051,7 @@ void mac_state::pmu_exec() } break; - case 0xec: // PMU self-test (send 1 count byte + reply) + case 0xec: // PMU self-test (send 1 count byte + reply) pmu_one_byte_reply(0); break; @@ -1104,7 +1104,7 @@ void mac_state::adb_vblank() { m_adb_irq_pending = 1; m_adb_command = m_adb_send = 0; - m_adb_timer_ticks = 1; // one tick should be sufficient to make it see the IRQ + m_adb_timer_ticks = 1; // one tick should be sufficient to make it see the IRQ this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); m_adb_srq_switch = 1; } @@ -1134,7 +1134,7 @@ void mac_state::adb_vblank() { m_adb_irq_pending = 1; m_adb_command = m_adb_send = 0; - m_adb_timer_ticks = 1; // one tick should be sufficient to make it see the IRQ + m_adb_timer_ticks = 1; // one tick should be sufficient to make it see the IRQ this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); m_adb_srq_switch = 1; } @@ -1147,7 +1147,7 @@ void mac_state::adb_reset() int i; m_adb_srq_switch = 0; - m_adb_irq_pending = 0; // no interrupt + m_adb_irq_pending = 0; // no interrupt m_adb_timer_ticks = 0; m_adb_command = 0; m_adb_extclock = 0; @@ -1155,7 +1155,7 @@ void mac_state::adb_reset() m_adb_waiting_cmd = 0; m_adb_streaming = MCU_STREAMING_NONE; m_adb_state = 0; - m_adb_srqflag = false; + m_adb_srqflag = false; m_pmu_poll = 0; if (ADB_IS_BITBANG_CLASS) { @@ -1165,7 +1165,7 @@ void mac_state::adb_reset() m_adb_datasize = 0; m_adb_last_talk = -1; - m_adb_linestate = 0; + m_adb_linestate = 0; // mouse m_adb_mouseaddr = 3; @@ -1204,14 +1204,14 @@ WRITE_LINE_MEMBER(mac_state::adb_linechange_w) "srqnodata" };*/ - if (ADB_IS_EGRET) - { - dtime = m_egret->get_adb_dtime(); - } - else if (ADB_IS_CUDA) - { + if (ADB_IS_EGRET) + { + dtime = m_egret->get_adb_dtime(); + } + else if (ADB_IS_CUDA) + { dtime = m_cuda->get_adb_dtime(); - } + } /* if (m_adb_linestate <= 12) { @@ -1222,162 +1222,161 @@ WRITE_LINE_MEMBER(mac_state::adb_linechange_w) printf("linechange: %d -> %d, time %d (state %d)\n", state^1, state, dtime, m_adb_linestate); }*/ - if ((m_adb_direction) && (m_adb_linestate == LST_TSTOP)) - { - if (m_adb_stream_ptr & 1) // odd byte, can't end here - { + if ((m_adb_direction) && (m_adb_linestate == LST_TSTOP)) + { + if (m_adb_stream_ptr & 1) // odd byte, can't end here + { // printf("critical linechange: odd, cont\n"); - m_adb_linestate = LST_BIT0; - } - else - { - if (dtime < 90) - { + m_adb_linestate = LST_BIT0; + } + else + { + if (dtime < 90) + { // printf("critical linechange: even, and it's another bit\n"); - m_adb_linestate = LST_BIT0; - } - } - } + m_adb_linestate = LST_BIT0; + } + } + } - switch (m_adb_linestate) - { - case LST_IDLE: - if ((state) && (dtime >= 4500)) // reset - { + switch (m_adb_linestate) + { + case LST_IDLE: + if ((state) && (dtime >= 4500)) // reset + { // printf("ADB RESET\n"); - } - else if ((state) && (dtime >= 1200)) // attention - { + } + else if ((state) && (dtime >= 1200)) // attention + { // printf("ADB ATTENTION\n"); - m_adb_waiting_cmd = 1; - m_adb_direction = 0; - m_adb_linestate++; - } - break; + m_adb_waiting_cmd = 1; + m_adb_direction = 0; + m_adb_linestate++; + } + break; - case LST_ATTENTION: - if ((!state) && (dtime >= 90)) // Tsync - { + case LST_ATTENTION: + if ((!state) && (dtime >= 90)) // Tsync + { // printf("ADB Tsync\n"); - m_adb_command = 0; - m_adb_linestate++; - } - break; - - case LST_BIT0: - case LST_BIT1: - case LST_BIT2: - case LST_BIT3: - case LST_BIT4: - case LST_BIT5: - case LST_BIT6: - case LST_BIT7: - if (!state) - { - if (dtime >= 90) // "1" bit - { - m_adb_command |= 1; - } + m_adb_command = 0; + m_adb_linestate++; + } + break; + + case LST_BIT0: + case LST_BIT1: + case LST_BIT2: + case LST_BIT3: + case LST_BIT4: + case LST_BIT5: + case LST_BIT6: + case LST_BIT7: + if (!state) + { + if (dtime >= 90) // "1" bit + { + m_adb_command |= 1; + } // printf("ADB bit %d\n", m_adb_command & 1); - if (m_adb_linestate != LST_BIT7) - { - m_adb_command <<= 1; - } - else - { - if (m_adb_direction) - { + if (m_adb_linestate != LST_BIT7) + { + m_adb_command <<= 1; + } + else + { + if (m_adb_direction) + { // printf("listen byte[%d] = %02x\n", m_adb_stream_ptr, m_adb_command); - m_adb_buffer[m_adb_stream_ptr++] = m_adb_command; - m_adb_command = 0; - } - } + m_adb_buffer[m_adb_stream_ptr++] = m_adb_command; + m_adb_command = 0; + } + } - m_adb_linestate++; - } - break; + m_adb_linestate++; + } + break; - case LST_TSTOP: - if (state) - { + case LST_TSTOP: + if (state) + { // printf("ADB TSTOP, command byte %02x\n", m_adb_command); - if (m_adb_direction) - { - m_adb_command = m_adb_buffer[0]; - } - - m_adb_srqflag = false; - adb_talk(); - - if (!m_adb_srqflag) - { - set_adb_line(ASSERT_LINE); - } - else - { - set_adb_line(CLEAR_LINE); - } - - if (m_adb_datasize > 0) - { + if (m_adb_direction) + { + m_adb_command = m_adb_buffer[0]; + } + + m_adb_srqflag = false; + adb_talk(); + + if (!m_adb_srqflag) + { + set_adb_line(ASSERT_LINE); + } + else + { + set_adb_line(CLEAR_LINE); + } + + if (m_adb_datasize > 0) + { /* printf("Device has %d bytes of data: ", m_adb_datasize); for (int i = 0; i < m_adb_datasize; i++) { printf("%02x ", m_adb_buffer[i]); }*/ - m_adb_linestate = LST_TSTOPSTART; // T1t - m_adb_timer->adjust(attotime::from_ticks(324/4, 1000000)); - m_adb_stream_ptr = 0; - } - else if (m_adb_direction) // if direction is set, we LISTENed to a valid device - { - m_adb_linestate = LST_WAITT1T; - } - else // no valid device targetted, time out - { - if (m_adb_srqflag) - { - m_adb_linestate = LST_SRQNODATA; - m_adb_timer->adjust(attotime::from_ticks(486, 1000000)); // SRQ time - } - else - { - m_adb_linestate = LST_IDLE; - } - } - } - break; + m_adb_linestate = LST_TSTOPSTART; // T1t + m_adb_timer->adjust(attotime::from_ticks(324/4, 1000000)); + m_adb_stream_ptr = 0; + } + else if (m_adb_direction) // if direction is set, we LISTENed to a valid device + { + m_adb_linestate = LST_WAITT1T; + } + else // no valid device targetted, time out + { + if (m_adb_srqflag) + { + m_adb_linestate = LST_SRQNODATA; + m_adb_timer->adjust(attotime::from_ticks(486, 1000000)); // SRQ time + } + else + { + m_adb_linestate = LST_IDLE; + } + } + } + break; - case LST_WAITT1T: - if ((!state) && (dtime >= 300)) // T1t - { + case LST_WAITT1T: + if ((!state) && (dtime >= 300)) // T1t + { // printf("ADB T1t\n"); - m_adb_linestate++; - } - break; + m_adb_linestate++; + } + break; - case LST_RCVSTARTBIT: - if ((!state) && (dtime >= 90)) // start - { + case LST_RCVSTARTBIT: + if ((!state) && (dtime >= 90)) // start + { // printf("ADB start\n"); - m_adb_linestate = LST_BIT0; - m_adb_command = 0; - } - break; - } + m_adb_linestate = LST_BIT0; + m_adb_command = 0; + } + break; + } } void mac_state::set_adb_line(int linestate) { - if (ADB_IS_EGRET) - { - m_egret->set_adb_line(linestate); - } - else if (ADB_IS_CUDA) - { - m_cuda->set_adb_line(linestate); - } + if (ADB_IS_EGRET) + { + m_egret->set_adb_line(linestate); + } + else if (ADB_IS_CUDA) + { + m_cuda->set_adb_line(linestate); + } } - |