void ql_state::update_interrupt() { m_zx8302->extint_w(m_extintl || m_qimi_extint); }
UINT32 konendev_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { return m_gcu->draw(screen, bitmap, cliprect); }
virtual void machine_reset() override { m_maincpu->reset(); LOG("--->%s()\n", FUNCNAME); };
void ti990_4_state::hold_load() { m_maincpu->set_input_line(INT_9900_LOAD, ASSERT_LINE); logerror("ti990_4: Triggering LOAD interrupt\n"); m_nmi_timer->adjust(attotime::from_msec(100)); }
void irisha_state::update_speaker() { int level = ( (BIT(m_ppi_portc, 5)) || (BIT(m_ppi_porta, 4)) || !m_sg1_line) ? 1 : 0; m_speaker->level_w(level); }
void tm990189_state::hold_load() { m_load_state = TRUE; m_tms9980a->set_input_line(INT_9980A_LOAD, ASSERT_LINE); machine().scheduler().timer_set(attotime::from_msec(100), timer_expired_delegate(FUNC(tm990189_state::clear_load),this)); }
void mirage_state::fdc_intrq_w(bool state) { m_maincpu->set_input_line(INPUT_LINE_NMI, state); }
void apricot_state::wd2793_intrq_w(bool state) { m_pic->ir4_w(state); m_iop->ext1_w(state); }
void apricot_state::wd2793_drq_w(bool state) { m_iop->drq1_w(state); }
void dfruit_state::ram_bank_w(uint16_t offset, uint8_t data, uint8_t bank_num) { m_vdp->space().write_byte(offset + (m_ram_bank[bank_num]) * 0x1000,data);; }
uint32_t destroyr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i, j; bitmap.fill(0, cliprect); /* draw major objects */ for (i = 0; i < 16; i++) { int attr = m_major_obj_ram[2 * i + 0] ^ 0xff; int horz = m_major_obj_ram[2 * i + 1]; int num = attr & 3; int scan = attr & 4; int flipx = attr & 8; if (scan == 0) { if (horz >= 192) horz -= 256; } else { if (horz < 192) continue; } m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, num, 0, flipx, 0, horz, 16 * i, 0); } /* draw alpha numerics */ for (i = 0; i < 8; i++) { for (j = 0; j < 32; j++) { int num = m_alpha_num_ram[32 * i + j]; m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, num, 0, 0, 0, 8 * j, 8 * i, 0); } } /* draw minor objects */ for (i = 0; i < 2; i++) { int num = i << 4 | (m_minor_obj_ram[i + 0] & 0xf); int horz = 256 - m_minor_obj_ram[i + 2]; int vert = 256 - m_minor_obj_ram[i + 4]; m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, num, 0, 0, 0, horz, vert, 0); } /* draw waves */ for (i = 0; i < 4; i++) { m_gfxdecode->gfx(3)->transpen(bitmap,cliprect, m_wavemod ? 1 : 0, 0, 0, 0, 64 * i, 0x4e, 0); } /* draw cursor */ for (i = 0; i < 256; i++) { if (i & 4) bitmap.pix16(m_cursor ^ 0xff, i) = 7; } return 0; }
uint8_t dfruit_state::ram_bank_r(uint16_t offset, uint8_t bank_num) { return m_vdp->space().read_byte(offset + (m_ram_bank[bank_num]) * 0x1000);; }
UINT32 luckgrln_state::screen_update_luckgrln(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int y,x; int count = 0; const rectangle &visarea = screen.visible_area(); int i; rectangle clip = visarea; bitmap.fill(0, cliprect); for (i= 0;i < 64;i++) { m_reel1_tilemap->set_scrolly(i, m_reel1_scroll[i]); m_reel2_tilemap->set_scrolly(i, m_reel2_scroll[i]); m_reel3_tilemap->set_scrolly(i, m_reel3_scroll[i]); m_reel4_tilemap->set_scrolly(i, m_reel4_scroll[i]); } for (y=0;y<32;y++) { clip.min_y = y*8; clip.max_y = y*8+8; if (clip.min_y<visarea.min_y) clip.min_y = visarea.min_y; if (clip.max_y>visarea.max_y) clip.max_y = visarea.max_y; for (x=0;x<64;x++) { UINT16 tile = (m_luck_vram1[count] & 0xff); UINT16 tile_high = (m_luck_vram2[count]); UINT16 tileattr = (m_luck_vram3[count]); UINT8 col = 0; UINT8 region = 0; UINT8 bgenable; clip.min_x = x*8; clip.max_x = x*8+8; if (clip.min_x<visarea.min_x) clip.min_x = visarea.min_x; if (clip.max_x>visarea.max_x) clip.max_x = visarea.max_x; /* m_luck_vram1 tttt tttt (t = low tile bits) m_luck_vram2 tttt ppp? (t = high tile bits) (p = pal select)? */ tile |= (tile_high & 0xf0) << 4; if (tileattr & 0x02) tile |= 0x1000; // ?? low bit is used too col = tile_high&0xf; // --ss fbt- m_luck_vram3 // - = unused? // s = reel layer select for this 8x8 region // f = fg enabled for this 8x8 region (or priority?) // b = reel enabled for this 8x8 region (not set on startup screens) // t = tile bank bgenable = (tileattr &0x30)>>4; #if 0 // treat bit as fg enable if (tileattr&0x04) { if (bgenable==0) m_reel1_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==1) m_reel2_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==2) m_reel3_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==3) m_reel4_tilemap->draw(screen, bitmap, clip, 0, 0); } if (tileattr&0x08) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0); #else // treat it as priority flag instead (looks better in non-adult title screen - needs verifying) if (!(tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0); if (tileattr&0x04) { if (bgenable==0) m_reel1_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==1) m_reel2_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==2) m_reel3_tilemap->draw(screen, bitmap, clip, 0, 0); if (bgenable==3) m_reel4_tilemap->draw(screen, bitmap, clip, 0, 0); } if ((tileattr&0x08)) m_gfxdecode->gfx(region)->transpen(bitmap,clip,tile,col,0,0,x*8,y*8, 0); #endif count++; } } return 0; }
void mirage_state::fdc_drq_w(bool state) { m_maincpu->set_input_line(M6809_IRQ_LINE, state); }
INPUT_PORTS_END /************************************* * * Machine driver * *************************************/ void mquake_state::mquake(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, amiga_state::CLK_7M_NTSC); m_maincpu->set_addrmap(AS_PROGRAM, &mquake_state::main_map); ADDRESS_MAP_BANK(config, "overlay").set_map(&amiga_state::overlay_512kb_map).set_options(ENDIANNESS_BIG, 16, 22, 0x200000); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ ntsc_video(config); PALETTE(config, m_palette, 4096); m_palette->set_init(FUNC(mquake_state::palette_init_amiga)); MCFG_VIDEO_START_OVERRIDE(mquake_state,amiga) /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); paula_8364_device &paula(PAULA_8364(config, "amiga", amiga_state::CLK_C1_NTSC)); paula.add_route(0, "lspeaker", 0.50); paula.add_route(1, "rspeaker", 0.50); paula.add_route(2, "rspeaker", 0.50); paula.add_route(3, "lspeaker", 0.50); paula.mem_read_cb().set(FUNC(amiga_state::chip_ram_r)); paula.int_cb().set(FUNC(amiga_state::paula_int_w)); ES5503(config, m_es5503, amiga_state::CLK_7M_NTSC); /* ES5503 is likely mono due to channel strobe used as bank select */ m_es5503->set_channels(1); m_es5503->set_addrmap(0, &mquake_state::mquake_es5503_map); m_es5503->add_route(0, "lspeaker", 0.50); m_es5503->add_route(0, "rspeaker", 0.50); /* cia */ MOS8520(config, m_cia_0, amiga_state::CLK_E_NTSC); m_cia_0->irq_wr_callback().set(FUNC(amiga_state::cia_0_irq)); m_cia_0->pa_rd_callback().set_ioport("CIA0PORTA"); m_cia_0->pa_wr_callback().set(FUNC(amiga_state::cia_0_port_a_write)); MOS8520(config, m_cia_1, amiga_state::CLK_E_NTSC); m_cia_1->irq_wr_callback().set(FUNC(amiga_state::cia_1_irq)); /* fdc */ AMIGA_FDC(config, m_fdc, amiga_state::CLK_7M_NTSC); m_fdc->index_callback().set("cia_1", FUNC(mos8520_device::flag_w)); m_fdc->read_dma_callback().set(FUNC(amiga_state::chip_ram_r)); m_fdc->write_dma_callback().set(FUNC(amiga_state::chip_ram_w)); m_fdc->dskblk_callback().set(FUNC(amiga_state::fdc_dskblk_w)); m_fdc->dsksyn_callback().set(FUNC(amiga_state::fdc_dsksyn_w)); }
INPUT_PORTS_END void rainbow_state::machine_reset() { m_unit = INVALID_DRIVE; m_fdc->reset(); m_fdc->set_floppy(NULL); m_fdc->dden_w(0); //m_fdc->set_force_ready(false); /* configure RAM */ address_space &program = m_maincpu->space(AS_PROGRAM); if (m_inp8->read() < END_OF_RAM) { program.unmap_readwrite(m_inp8->read(), END_OF_RAM); } // BIOS can't handle soft resets (=> triggers ERROR 16). if ( COLD_BOOT == 2 ) { // As a fallback, execute a hard reboot - device().machine().schedule_hard_reset(); } if ( COLD_BOOT == 1 ) { COLD_BOOT = 2; m_crtc->MHFU(-100); // reset MHFU counter } m_z80->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); INT88 = false; INTZ80 = false; m_zflip = true; m_z80_halted = true; m_kbd_tx_ready = m_kbd_rx_ready = false; m_kbd8251->write_cts(1); m_KBD = 0; m_irq_high = 0; // RESET ALL LEDs output_set_value("led1", 1); output_set_value("led2", 1); output_set_value("led3", 1); output_set_value("led4", 1); output_set_value("led5", 1); output_set_value("led6", 1); output_set_value("led7", 1); // GREEN KEYBOARD LEDs (1 = on, 0 = off): output_set_value("led_wait", 0); // led8 output_set_value("led_compose", 0); // led9 output_set_value("led_lock", 0); // led10 output_set_value("led_hold", 0); // led11 m_irq_mask = 0; }
void basic52_state::kbd_put(u8 data) { m_maincpu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); m_term_data = data; }
/* LOAD interrupt trigger callback */ void ti990_4_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { m_maincpu->set_input_line(INT_9900_LOAD, CLEAR_LINE); logerror("ti990_4: Released LOAD interrupt\n"); }
void digel804_state::machine_reset() { m_vfd->reset(); }
void blockade_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { // resume cpu, on the real system, this is connected the READY input m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); }