diff options
Diffstat (limited to 'src/mame/drivers/poisk1.cpp')
-rw-r--r-- | src/mame/drivers/poisk1.cpp | 105 |
1 files changed, 49 insertions, 56 deletions
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp index ccb3a81dda8..d7cf7be86f4 100644 --- a/src/mame/drivers/poisk1.cpp +++ b/src/mame/drivers/poisk1.cpp @@ -41,26 +41,27 @@ #include "speaker.h" +//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already +#define LOG_KEYBOARD (1U << 1) +#define LOG_DEBUG (1U << 2) + +//#define VERBOSE (LOG_DEBUG) +//#define LOG_OUTPUT_FUNC printf +#include "logmacro.h" + +#define LOGKBD(...) LOGMASKED(LOG_KEYBOARD, __VA_ARGS__) +#define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__) + + #define CGA_PALETTE_SETS 83 /* one for colour, one for mono, 81 for colour composite */ #define BG_COLOR(x) (((x)&7) | (((x)&0x10) >> 1)) -#define VERBOSE_DBG 0 - -#define DBG_LOG(N,M,A) \ - do { \ - if(VERBOSE_DBG>=N) \ - { \ - if( M ) \ - logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \ - logerror A; \ - } \ - } while (0) - #define POISK1_UPDATE_ROW(name) \ void name(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint8_t *videoram, uint16_t ma, uint8_t ra, uint8_t stride) + class p1_state : public driver_device { public: @@ -167,21 +168,21 @@ private: READ8_MEMBER(p1_state::p1_trap_r) { uint8_t data = m_video.trap[offset]; - DBG_LOG(1, "trap", ("R %.2x $%02x\n", 0x28 + offset, data)); + LOG("trap R %.2x $%02x\n", 0x28 + offset, data); if (offset == 0) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); return data; } WRITE8_MEMBER(p1_state::p1_trap_w) { - DBG_LOG(1, "trap", ("W %.2x $%02x\n", 0x28 + offset, data)); + LOG("trap W %.2x $%02x\n", 0x28 + offset, data); } READ8_MEMBER(p1_state::p1_cga_r) { uint16_t port = offset + 0x3d0; - DBG_LOG(1, "cga", ("R %.4x\n", port)); + LOG("cga R %.4x\n", port); m_video.trap[1] = 0x40 | ((port >> 8) & 0x3f); m_video.trap[0] = port & 255; m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); @@ -192,7 +193,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w) { uint16_t port = offset + 0x3d0; - DBG_LOG(1, "cga", ("W %.4x $%02x\n", port, data)); + LOG("cga W %.4x $%02x\n", port, data); m_video.trap[2] = data; m_video.trap[1] = 0xC0 | ((port >> 8) & 0x3f); m_video.trap[0] = port & 255; @@ -201,7 +202,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w) WRITE8_MEMBER(p1_state::p1_vram_w) { - DBG_LOG(1, "vram", ("W %.4x $%02x\n", offset, data)); + LOG("vram W %.4x $%02x\n", offset, data); if (m_video.videoram_base) m_video.videoram_base[offset] = data; m_video.trap[2] = data; m_video.trap[1] = 0x80 | ((offset >> 8) & 0x3f); @@ -223,7 +224,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w) { address_space &program = m_maincpu->space(AS_PROGRAM); - DBG_LOG(1, "color_select_68", ("W $%02x\n", data)); + LOG("color_select_68 W $%02x\n", data); // NMI DISABLE if (BIT((data ^ m_video.color_select_68), 3)) @@ -266,7 +267,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w) WRITE8_MEMBER(p1_state::p1_ppi_portc_w) { - DBG_LOG(1, "mode_control_6a", ("W $%02x\n", data)); + LOG("mode_control_6a W $%02x\n", data); m_video.mode_control_6a = data; set_palette_luts(); @@ -324,7 +325,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_2bpp_update_row) uint16_t odd, offset; int i; - if (ra == 0) DBG_LOG(1, "cga_gfx_2bpp_update_row", ("\n")); + if (ra == 0) LOG("cga_gfx_2bpp_update_row\n"); odd = (ra & 1) << 13; offset = (ma & 0x1fff) | odd; for (i = 0; i < stride; i++) @@ -352,7 +353,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_1bpp_update_row) uint16_t odd, offset; int i; - if (ra == 0) DBG_LOG(1, "cga_gfx_1bpp_update_row", ("bg %d\n", bg)); + if (ra == 0) LOG("cga_gfx_1bpp_update_row bg %d\n", bg); odd = (ra & 1) << 13; offset = (ma & 0x1fff) | odd; for (i = 0; i < stride; i++) @@ -384,7 +385,7 @@ POISK1_UPDATE_ROW(p1_state::poisk1_gfx_1bpp_update_row) uint16_t odd, offset; int i; - if (ra == 0) DBG_LOG(1, "poisk1_gfx_1bpp_update_row", ("bg %d\n", bg)); + if (ra == 0) LOG("poisk1_gfx_1bpp_update_row bg %d\n", bg); odd = (ra & 1) << 13; offset = (ma & 0x1fff) | odd; for (i = 0; i < stride; i++) @@ -406,8 +407,6 @@ POISK1_UPDATE_ROW(p1_state::poisk1_gfx_1bpp_update_row) // Initialise the cga palette void p1_state::p1_palette(palette_device &palette) const { - DBG_LOG(0, "init", ("palette_init()\n")); - for (int i = 0; i < CGA_PALETTE_SETS * 16; i++) palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2]); } @@ -416,8 +415,6 @@ void p1_state::video_start() { address_space &space = m_maincpu->space(AS_PROGRAM); - DBG_LOG(0, "init", ("video_start()\n")); - memset(&m_video, 0, sizeof(m_video)); m_video.videoram_base = std::make_unique<uint8_t[]>(0x8000); m_video.videoram = m_video.videoram_base.get(); @@ -478,7 +475,7 @@ WRITE_LINE_MEMBER(p1_state::p1_pit8253_out2_changed) WRITE8_MEMBER(p1_state::p1_ppi_porta_w) { m_kbpoll_mask = data; - DBG_LOG(2, "p1_ppi_porta_w", ("( %02X -> %02X )\n", data, m_kbpoll_mask)); + LOGDBG("p1_ppi_porta_w %02X <- %02X\n", m_kbpoll_mask, data); } READ8_MEMBER(p1_state::p1_ppi_porta_r) @@ -486,7 +483,7 @@ READ8_MEMBER(p1_state::p1_ppi_porta_r) uint8_t ret; ret = m_kbpoll_mask; - DBG_LOG(1, "p1_ppi_porta_r", ("= %02X\n", ret)); + LOG("p1_ppi_porta_r = %02X\n", ret); return ret; } @@ -504,7 +501,7 @@ READ8_MEMBER(p1_state::p1_ppi_portb_r) } ret = key & 0xff; -// DBG_LOG(1,"p1_ppi_portb_r",("= %02X\n", ret)); +// LOG("p1_ppi_portb_r = %02X\n", ret); return ret; } @@ -522,7 +519,7 @@ READ8_MEMBER(p1_state::p1_ppi_portc_r) } ret = (key >> 8) & 0xff; - DBG_LOG(2,"p1_ppi_portc_r",("= %02X\n", ret)); + LOGDBG("p1_ppi_portc_r = %02X\n", ret); return ret; } @@ -535,7 +532,7 @@ READ8_MEMBER(p1_state::p1_ppi2_portc_r) data = (data & ~0x10) | (tap_val < 0 ? 0x10 : 0x00); - DBG_LOG(2, "p1_ppi_portc_r", ("= %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context())); + LOGDBG("p1_ppi_portc_r = %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context()); return data; } @@ -562,7 +559,7 @@ READ8_MEMBER(p1_state::p1_ppi_r) case 3: return m_ppi8255n2->read(offset); default: - DBG_LOG(1, "p1ppi", ("R %.2x (unimp)\n", 0x60 + offset)); + LOG("p1ppi R %.2x (unimp)\n", 0x60 + offset); return 0xff; } } @@ -584,7 +581,7 @@ WRITE8_MEMBER(p1_state::p1_ppi_w) case 3: return m_ppi8255n2->write(offset, data); default: - DBG_LOG(1, "p1ppi", ("W %.2x $%02x (unimp)\n", 0x60 + offset, data)); + LOG("p1ppi W %.2x $%02x (unimp)\n", 0x60 + offset, data); return; } } @@ -599,21 +596,16 @@ void p1_state::init_poisk1() { address_space &program = m_maincpu->space(AS_PROGRAM); - DBG_LOG(0, "init", ("driver_init()\n")); - program.install_readwrite_bank(0, m_ram->size() - 1, "bank10"); membank("bank10")->set_base(m_ram->pointer()); } void p1_state::machine_start() { - DBG_LOG(0, "init", ("machine_start()\n")); } void p1_state::machine_reset() { - DBG_LOG(0, "init", ("machine_reset()\n")); - m_kbpoll_mask = 0; } @@ -642,14 +634,15 @@ static INPUT_PORTS_START( poisk1 ) PORT_INCLUDE( poisk1_keyboard_v91 ) INPUT_PORTS_END -MACHINE_CONFIG_START(p1_state::poisk1) +void p1_state::poisk1(machine_config &config) +{ /* basic machine hardware */ I8088(config, m_maincpu, 5000000); m_maincpu->set_addrmap(AS_PROGRAM, &p1_state::poisk1_map); m_maincpu->set_addrmap(AS_IO, &p1_state::poisk1_io); m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb)); - PIT8253(config, m_pit8253, 0); + PIT8253(config, m_pit8253); m_pit8253->set_clk<0>(XTAL(15'000'000)/12); /* heartbeat IRQ */ m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w)); m_pit8253->set_clk<1>(XTAL(15'000'000)/12); /* keyboard poll -- XXX edge or level triggered? */ @@ -657,7 +650,7 @@ MACHINE_CONFIG_START(p1_state::poisk1) m_pit8253->set_clk<2>(XTAL(15'000'000)/12); /* pio port c pin 4, and speaker polling enough */ m_pit8253->out_handler<2>().set(FUNC(p1_state::p1_pit8253_out2_changed)); - PIC8259(config, m_pic8259, 0); + PIC8259(config, m_pic8259); m_pic8259->out_int_callback().set_inputline(m_maincpu, 0); I8255A(config, m_ppi8255n1); @@ -673,38 +666,38 @@ MACHINE_CONFIG_START(p1_state::poisk1) m_ppi8255n2->in_pc_callback().set(FUNC(p1_state::p1_ppi2_portc_r)); /*62H*/ ISA8(config, m_isabus, 0); - m_isabus->set_cputag("maincpu"); + m_isabus->set_memspace("maincpu", AS_PROGRAM); + m_isabus->set_iospace("maincpu", AS_IO); m_isabus->irq2_callback().set(m_pic8259, FUNC(pic8259_device::ir2_w)); m_isabus->irq3_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w)); m_isabus->irq4_callback().set(m_pic8259, FUNC(pic8259_device::ir4_w)); m_isabus->irq5_callback().set(m_pic8259, FUNC(pic8259_device::ir5_w)); m_isabus->irq7_callback().set(m_pic8259, FUNC(pic8259_device::ir7_w)); - MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, "isa", p1_isa8_cards, "fdc", false) // FIXME: determine ISA bus clock - MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false) - MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false) - MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, "isa", p1_isa8_cards, nullptr, false) + ISA8_SLOT(config, "isa1", 0, m_isabus, p1_isa8_cards, "fdc", false); // FIXME: determine ISA bus clock + ISA8_SLOT(config, "isa2", 0, m_isabus, p1_isa8_cards, nullptr, false); + ISA8_SLOT(config, "isa3", 0, m_isabus, p1_isa8_cards, nullptr, false); + ISA8_SLOT(config, "isa4", 0, m_isabus, p1_isa8_cards, nullptr, false); - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED) + CASSETTE(config, m_cassette); + m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); - MCFG_SOFTWARE_LIST_ADD("flop_list","poisk1_flop") -// MCFG_SOFTWARE_LIST_ADD("cass_list","poisk1_cass") + SOFTWARE_LIST(config, "flop_list").set_original("poisk1_flop"); +// SOFTWARE_LIST(config, "cass_list").set_original("poisk1_cass"); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD( "speaker", SPEAKER_SOUND ) - MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00); - MCFG_SCREEN_ADD( "screen", RASTER ) - MCFG_SCREEN_RAW_PARAMS( XTAL(15'000'000), 912,0,640, 262,0,200 ) - MCFG_SCREEN_UPDATE_DRIVER( p1_state, screen_update ) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(XTAL(15'000'000), 912,0,640, 262,0,200); + m_screen->set_screen_update(FUNC(p1_state::screen_update)); /* XXX verify palette */ PALETTE(config, m_palette, FUNC(p1_state::p1_palette), CGA_PALETTE_SETS * 16); /* internal ram */ RAM(config, RAM_TAG).set_default_size("512K"); -MACHINE_CONFIG_END +} ROM_START( poisk1 ) ROM_REGION16_LE(0x10000,"bios", 0) |