summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ibm6580.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ibm6580.cpp')
-rw-r--r--src/mame/drivers/ibm6580.cpp107
1 files changed, 53 insertions, 54 deletions
diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp
index f83be36c8d2..8f2639c47b9 100644
--- a/src/mame/drivers/ibm6580.cpp
+++ b/src/mame/drivers/ibm6580.cpp
@@ -109,20 +109,19 @@ Displaywriter System Manual S544-2023-0 (?) -- mentioned in US patents 4648071 a
#define UPD765_TAG "upd765"
-#define VERBOSE_DBG 2 /* general debug messages */
+//#define LOG_GENERAL (1U << 0) //defined in logmacro.h already
+#define LOG_KEYBOARD (1U << 1)
+#define LOG_DEBUG (1U << 2)
-#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 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__)
-uint8_t gfx_expand[16] = {
+
+const uint8_t gfx_expand[16] = {
0x00, 0x03, 0x0c, 0x0f,
0x30, 0x33, 0x3c, 0x3f,
0xc0, 0xc3, 0xcc, 0xcf,
@@ -225,7 +224,7 @@ private:
WRITE8_MEMBER(ibm6580_state::p40_w)
{
- DBG_LOG(2,"___", ("%02x <- %02x\n", 0x40 + (offset << 1), data));
+ LOG("___ %02x <- %02x\n", 0x40 + (offset << 1), data);
switch (offset)
{
@@ -281,14 +280,14 @@ READ8_MEMBER(ibm6580_state::p40_r)
break;
}
- DBG_LOG(3,"___", ("%02x == %02x\n", 0x40 + (offset << 1), data));
+ LOGDBG("___ %02x == %02x\n", 0x40 + (offset << 1), data);
return data;
}
WRITE8_MEMBER(ibm6580_state::video_w)
{
- DBG_LOG(2,"Video", ("%02x <- %02x\n", 0xe000 + (offset << 1), data));
+ LOG("Video %02x <- %02x\n", 0xe000 + (offset << 1), data);
switch (offset)
{
@@ -320,7 +319,7 @@ READ8_MEMBER(ibm6580_state::video_r)
}
if (offset != 8)
- DBG_LOG(2,"Video", ("%02x == %02x\n", 0xe000 + (offset << 1), data));
+ LOG("Video %02x == %02x\n", 0xe000 + (offset << 1), data);
return data;
}
@@ -336,7 +335,7 @@ WRITE_LINE_MEMBER(ibm6580_state::vblank_w)
WRITE16_MEMBER(ibm6580_state::pic_latch_w)
{
- DBG_LOG(2,"PIC", ("latch <- %02x\n", data));
+ LOG("PIC latch <- %02x\n", data);
if (data)
m_p40 |= 8;
@@ -353,7 +352,7 @@ WRITE16_MEMBER(ibm6580_state::pic_latch_w)
WRITE16_MEMBER(ibm6580_state::unk_latch_w)
{
- DBG_LOG(2,"UNK", ("latch <- %02x\n", data));
+ LOG("UNK latch <- %02x\n", data);
m_p40 |= 0x10;
}
@@ -422,7 +421,7 @@ WRITE8_MEMBER(ibm6580_state::led_w)
WRITE8_MEMBER(ibm6580_state::ppi_c_w)
{
- DBG_LOG(2,"PPI", ("Port C <- %02x\n", data));
+ LOG("PPI Port C <- %02x\n", data);
// bit 5 -- acknowledge
// bit 6 -- reset
@@ -442,7 +441,7 @@ READ8_MEMBER(ibm6580_state::ppi_c_r)
data |= (m_kb_strobe << 3);
- DBG_LOG(3,"PPI", ("Port C == %02x\n", data));
+ LOGDBG("PPI Port C == %02x\n", data);
return data;
}
@@ -451,7 +450,7 @@ READ8_MEMBER(ibm6580_state::ppi_a_r)
{
uint8_t data = m_kb_fifo.dequeue();
- DBG_LOG(2,"PPI", ("Port A == %02x (fifo full: %d)\n", data, m_kb_fifo.full()));
+ LOG("PPI Port A == %02x (fifo full: %d)\n", data, m_kb_fifo.full());
return data;
}
@@ -472,7 +471,7 @@ WRITE_LINE_MEMBER(ibm6580_state::kb_strobe_w)
m_kb_strobe = !state;
if (!state && BIT(m_ppi_c, 0)) {
m_kb_fifo.enqueue(m_kb_data);
- DBG_LOG(1,"Kbd", ("enqueue %02x (fifo full: %d, m_ppi_c %02x)\n", m_kb_data, m_kb_fifo.full(), m_ppi_c));
+ LOGKBD("Kbd enqueue %02x (fifo full: %d, m_ppi_c %02x)\n", m_kb_data, m_kb_fifo.full(), m_ppi_c);
}
}
@@ -519,7 +518,7 @@ uint8_t ibm6580_state::floppy_mcu_command()
{
uint8_t data = 0, command = m_floppy_mcu_cr.dequeue(), i;
- DBG_LOG(2,"Floppy", ("mcu_command %02x\n", command));
+ LOG("Floppy mcu_command %02x\n", command);
m_floppy_mcu_sr.clear();
m_floppy_idle = true;
@@ -604,7 +603,7 @@ uint8_t ibm6580_state::floppy_mcu_command()
WRITE8_MEMBER(ibm6580_state::floppy_w)
{
- DBG_LOG(2,"Floppy", ("%02x <- %02x\n", 0x8150 + (offset << 1), data));
+ LOG("Floppy %02x <- %02x\n", 0x8150 + (offset << 1), data);
switch (offset)
{
@@ -618,7 +617,7 @@ WRITE8_MEMBER(ibm6580_state::floppy_w)
break;
case 5: // 815A
- m_fdc->fifo_w(space, offset, data);
+ m_fdc->fifo_w(data);
if (m_floppy_idle)
m_floppy_idle = false;
break;
@@ -647,11 +646,11 @@ READ8_MEMBER(ibm6580_state::floppy_r)
break;
case 4: // 8158
- data = m_fdc->msr_r(space, offset);
+ data = m_fdc->msr_r();
break;
case 5: // 815a
- data = m_fdc->fifo_r(space, offset);
+ data = m_fdc->fifo_r();
break;
case 6: // 815c
@@ -661,22 +660,20 @@ READ8_MEMBER(ibm6580_state::floppy_r)
}
if (offset)
- DBG_LOG(2,"Floppy", ("%02x == %02x\n", 0x8150 + (offset << 1), data));
+ LOG("Floppy %02x == %02x\n", 0x8150 + (offset << 1), data);
else {
floppy_image_device *f = m_flop0->get_device();
if (f)
- DBG_LOG(2,"Floppy", ("%02x == %02x (empty %d hdl %d + idle %d irq %d drq %d + dskchg %d idx %d cyl %d)\n",
- 0x8150 + (offset << 1), data,
- m_floppy_mcu_sr.empty(), m_floppy_hdl,
- m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq(),
- f->dskchg_r(), f->idx_r(), f->get_cyl()
- ));
+ LOG("Floppy %02x == %02x (empty %d hdl %d + idle %d irq %d drq %d + dskchg %d idx %d cyl %d)\n",
+ 0x8150 + (offset << 1), data,
+ m_floppy_mcu_sr.empty(), m_floppy_hdl,
+ m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq(),
+ f->dskchg_r(), f->idx_r(), f->get_cyl());
else
- DBG_LOG(2,"Floppy", ("%02x == %02x (idle %d irq %d drq %d)\n",
- 0x8150 + (offset << 1), data,
- m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq()
- ));
+ LOG("Floppy %02x == %02x (idle %d irq %d drq %d)\n",
+ 0x8150 + (offset << 1), data,
+ m_floppy_idle, m_fdc->get_irq(), m_fdc->get_drq());
}
return data;
@@ -881,19 +878,21 @@ static void dw_floppies(device_slot_interface &device)
device.option_add("8sssd", IBM_6360);
}
-MACHINE_CONFIG_START(ibm6580_state::ibm6580)
- MCFG_DEVICE_ADD("maincpu", I8086, 14.7456_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(ibm6580_mem)
- MCFG_DEVICE_IO_MAP(ibm6580_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
+void ibm6580_state::ibm6580(machine_config &config)
+{
+ I8086(config, m_maincpu, 14.7456_MHz_XTAL / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &ibm6580_state::ibm6580_mem);
+ m_maincpu->set_addrmap(AS_IO, &ibm6580_state::ibm6580_io);
+ m_maincpu->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
RAM(config, RAM_TAG).set_default_size("128K").set_extra_options("160K,192K,224K,256K,320K,384K");
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(25_MHz_XTAL / 2, 833, 0, 640, 428, 0, 400)
- MCFG_SCREEN_UPDATE_DRIVER(ibm6580_state, screen_update)
- MCFG_SCREEN_PALETTE("palette")
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, ibm6580_state, vblank_w))
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(25_MHz_XTAL / 2, 833, 0, 640, 428, 0, 400);
+ m_screen->set_screen_update(FUNC(ibm6580_state::screen_update));
+ m_screen->set_palette("palette");
+ m_screen->screen_vblank().set(FUNC(ibm6580_state::vblank_w));
+
config.set_default_layout(layout_ibm6580);
PALETTE(config, "palette", FUNC(ibm6580_state::ibm6580_palette), 3);
@@ -907,7 +906,7 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
ppi.out_pc_callback().set(FUNC(ibm6580_state::ppi_c_w));
ppi.in_pc_callback().set(FUNC(ibm6580_state::ppi_c_r));
- MCFG_DEVICE_ADD("pit8253", PIT8253, 0)
+ PIT8253(config, m_pit8253, 0);
DW_KEYBOARD(config, m_kbd, 0);
m_kbd->out_data_handler().set(FUNC(ibm6580_state::kb_data_w));
@@ -920,15 +919,15 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
m_dma8257->out_tc_cb().set(m_fdc, FUNC(upd765a_device::tc_line_w));
m_dma8257->in_memr_cb().set(FUNC(ibm6580_state::memory_read_byte));
m_dma8257->out_memw_cb().set(FUNC(ibm6580_state::memory_write_byte));
- m_dma8257->in_ior_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_r));
- m_dma8257->out_iow_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_w));
+ m_dma8257->in_ior_cb<0>().set(m_fdc, FUNC(upd765a_device::dma_r));
+ m_dma8257->out_iow_cb<0>().set(m_fdc, FUNC(upd765a_device::dma_w));
UPD765A(config, m_fdc, 24_MHz_XTAL / 3, false, false);
m_fdc->intrq_wr_callback().set(FUNC(ibm6580_state::floppy_intrq));
// m_fdc->intrq_wr_callback().append(m_pic8259, FUNC(pic8259_device::ir4_w));
m_fdc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq0_w));
- MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats)
+ FLOPPY_CONNECTOR(config, UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats);
+ FLOPPY_CONNECTOR(config, UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats);
i8251_device &upd8251a(I8251(config, "upd8251a", 0));
upd8251a.txd_handler().set("rs232a", FUNC(rs232_port_device::write_txd));
@@ -954,8 +953,8 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580)
rs232b.dsr_handler().set("upd8251b", FUNC(i8251_device::write_dsr));
rs232b.cts_handler().set("upd8251b", FUNC(i8251_device::write_cts));
- MCFG_SOFTWARE_LIST_ADD("flop_list", "ibm6580")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop_list").set_original("ibm6580");
+}
/* ROM definition */
ROM_START( ibm6580 )