summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/poisk1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/poisk1.cpp')
-rw-r--r--src/mame/drivers/poisk1.cpp105
1 files changed, 56 insertions, 49 deletions
diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp
index d7cf7be86f4..ccb3a81dda8 100644
--- a/src/mame/drivers/poisk1.cpp
+++ b/src/mame/drivers/poisk1.cpp
@@ -41,27 +41,26 @@
#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:
@@ -168,21 +167,21 @@ private:
READ8_MEMBER(p1_state::p1_trap_r)
{
uint8_t data = m_video.trap[offset];
- LOG("trap R %.2x $%02x\n", 0x28 + offset, data);
+ DBG_LOG(1, "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)
{
- LOG("trap W %.2x $%02x\n", 0x28 + offset, data);
+ DBG_LOG(1, "trap", ("W %.2x $%02x\n", 0x28 + offset, data));
}
READ8_MEMBER(p1_state::p1_cga_r)
{
uint16_t port = offset + 0x3d0;
- LOG("cga R %.4x\n", port);
+ DBG_LOG(1, "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);
@@ -193,7 +192,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w)
{
uint16_t port = offset + 0x3d0;
- LOG("cga W %.4x $%02x\n", port, data);
+ DBG_LOG(1, "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;
@@ -202,7 +201,7 @@ WRITE8_MEMBER(p1_state::p1_cga_w)
WRITE8_MEMBER(p1_state::p1_vram_w)
{
- LOG("vram W %.4x $%02x\n", offset, data);
+ DBG_LOG(1, "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);
@@ -224,7 +223,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
{
address_space &program = m_maincpu->space(AS_PROGRAM);
- LOG("color_select_68 W $%02x\n", data);
+ DBG_LOG(1, "color_select_68", ("W $%02x\n", data));
// NMI DISABLE
if (BIT((data ^ m_video.color_select_68), 3))
@@ -267,7 +266,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w)
WRITE8_MEMBER(p1_state::p1_ppi_portc_w)
{
- LOG("mode_control_6a W $%02x\n", data);
+ DBG_LOG(1, "mode_control_6a", ("W $%02x\n", data));
m_video.mode_control_6a = data;
set_palette_luts();
@@ -325,7 +324,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_2bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("cga_gfx_2bpp_update_row\n");
+ if (ra == 0) DBG_LOG(1, "cga_gfx_2bpp_update_row", ("\n"));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -353,7 +352,7 @@ POISK1_UPDATE_ROW(p1_state::cga_gfx_1bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("cga_gfx_1bpp_update_row bg %d\n", bg);
+ if (ra == 0) DBG_LOG(1, "cga_gfx_1bpp_update_row", ("bg %d\n", bg));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -385,7 +384,7 @@ POISK1_UPDATE_ROW(p1_state::poisk1_gfx_1bpp_update_row)
uint16_t odd, offset;
int i;
- if (ra == 0) LOG("poisk1_gfx_1bpp_update_row bg %d\n", bg);
+ if (ra == 0) DBG_LOG(1, "poisk1_gfx_1bpp_update_row", ("bg %d\n", bg));
odd = (ra & 1) << 13;
offset = (ma & 0x1fff) | odd;
for (i = 0; i < stride; i++)
@@ -407,6 +406,8 @@ 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]);
}
@@ -415,6 +416,8 @@ 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();
@@ -475,7 +478,7 @@ WRITE_LINE_MEMBER(p1_state::p1_pit8253_out2_changed)
WRITE8_MEMBER(p1_state::p1_ppi_porta_w)
{
m_kbpoll_mask = data;
- LOGDBG("p1_ppi_porta_w %02X <- %02X\n", m_kbpoll_mask, data);
+ DBG_LOG(2, "p1_ppi_porta_w", ("( %02X -> %02X )\n", data, m_kbpoll_mask));
}
READ8_MEMBER(p1_state::p1_ppi_porta_r)
@@ -483,7 +486,7 @@ READ8_MEMBER(p1_state::p1_ppi_porta_r)
uint8_t ret;
ret = m_kbpoll_mask;
- LOG("p1_ppi_porta_r = %02X\n", ret);
+ DBG_LOG(1, "p1_ppi_porta_r", ("= %02X\n", ret));
return ret;
}
@@ -501,7 +504,7 @@ READ8_MEMBER(p1_state::p1_ppi_portb_r)
}
ret = key & 0xff;
-// LOG("p1_ppi_portb_r = %02X\n", ret);
+// DBG_LOG(1,"p1_ppi_portb_r",("= %02X\n", ret));
return ret;
}
@@ -519,7 +522,7 @@ READ8_MEMBER(p1_state::p1_ppi_portc_r)
}
ret = (key >> 8) & 0xff;
- LOGDBG("p1_ppi_portc_r = %02X\n", ret);
+ DBG_LOG(2,"p1_ppi_portc_r",("= %02X\n", ret));
return ret;
}
@@ -532,7 +535,7 @@ READ8_MEMBER(p1_state::p1_ppi2_portc_r)
data = (data & ~0x10) | (tap_val < 0 ? 0x10 : 0x00);
- LOGDBG("p1_ppi_portc_r = %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context());
+ DBG_LOG(2, "p1_ppi_portc_r", ("= %02X (tap_val %f) at %s\n", data, tap_val, machine().describe_context()));
return data;
}
@@ -559,7 +562,7 @@ READ8_MEMBER(p1_state::p1_ppi_r)
case 3:
return m_ppi8255n2->read(offset);
default:
- LOG("p1ppi R %.2x (unimp)\n", 0x60 + offset);
+ DBG_LOG(1, "p1ppi", ("R %.2x (unimp)\n", 0x60 + offset));
return 0xff;
}
}
@@ -581,7 +584,7 @@ WRITE8_MEMBER(p1_state::p1_ppi_w)
case 3:
return m_ppi8255n2->write(offset, data);
default:
- LOG("p1ppi W %.2x $%02x (unimp)\n", 0x60 + offset, data);
+ DBG_LOG(1, "p1ppi", ("W %.2x $%02x (unimp)\n", 0x60 + offset, data));
return;
}
}
@@ -596,16 +599,21 @@ 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;
}
@@ -634,15 +642,14 @@ static INPUT_PORTS_START( poisk1 )
PORT_INCLUDE( poisk1_keyboard_v91 )
INPUT_PORTS_END
-void p1_state::poisk1(machine_config &config)
-{
+MACHINE_CONFIG_START(p1_state::poisk1)
/* 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);
+ PIT8253(config, m_pit8253, 0);
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? */
@@ -650,7 +657,7 @@ void p1_state::poisk1(machine_config &config)
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);
+ PIC8259(config, m_pic8259, 0);
m_pic8259->out_int_callback().set_inputline(m_maincpu, 0);
I8255A(config, m_ppi8255n1);
@@ -666,38 +673,38 @@ void p1_state::poisk1(machine_config &config)
m_ppi8255n2->in_pc_callback().set(FUNC(p1_state::p1_ppi2_portc_r)); /*62H*/
ISA8(config, m_isabus, 0);
- m_isabus->set_memspace("maincpu", AS_PROGRAM);
- m_isabus->set_iospace("maincpu", AS_IO);
+ m_isabus->set_cputag("maincpu");
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));
- 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_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)
- CASSETTE(config, m_cassette);
- m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED);
+ MCFG_CASSETTE_ADD( "cassette" )
+ MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED)
- SOFTWARE_LIST(config, "flop_list").set_original("poisk1_flop");
-// SOFTWARE_LIST(config, "cass_list").set_original("poisk1_cass");
+ MCFG_SOFTWARE_LIST_ADD("flop_list","poisk1_flop")
+// MCFG_SOFTWARE_LIST_ADD("cass_list","poisk1_cass")
SPEAKER(config, "mono").front_center();
- SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
+ MCFG_DEVICE_ADD( "speaker", SPEAKER_SOUND )
+ MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
- 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));
+ 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 )
/* 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)