static WRITE8_DEVICE_HANDLER( bagman_ls259_w ) { bagman_state *state = device->machine().driver_data<bagman_state>(); address_space *space = device->machine().device("maincpu")->memory().space(AS_PROGRAM); bagman_pal16r6_w(space, offset,data); /*this is just a simulation*/ if (state->m_ls259_buf[offset] != (data&1) ) { state->m_ls259_buf[offset] = data&1; switch (offset) { case 0: case 1: case 2: tmsprom_bit_w(device, 0, 7 - ((state->m_ls259_buf[0]<<2) | (state->m_ls259_buf[1]<<1) | (state->m_ls259_buf[2]<<0))); break; case 3: tmsprom_enable_w(device, state->m_ls259_buf[offset]); break; case 4: tmsprom_rom_csq_w(device, 0, state->m_ls259_buf[offset]); break; case 5: tmsprom_rom_csq_w(device, 1, state->m_ls259_buf[offset]); break; } } }
void bagman_machine_init(void) { bagman_pal16r6_w(0,1); bagman_pal16r6_w(1,1); bagman_pal16r6_w(2,1); bagman_pal16r6_w(3,1); bagman_pal16r6_w(4,1); bagman_pal16r6_w(5,1); bagman_pal16r6_w(6,1); bagman_pal16r6_w(7,1); update_pal(); }
static WRITE8_HANDLER( bagman_ls259_w ) { bagman_pal16r6_w(offset,data); /*this is just a simulation*/ if (ls259_buf[offset] != (data&1) ) { ls259_buf[offset] = data&1; if (offset==3) { if (ls259_buf[3] == 0) /* 1->0 transition */ { reset_talking(); } else { start_talking(); /* 0->1 transition */ } } } }