mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
pc1512: Remove PC_FDC_XT (nw)
i8155: Turn logging back off (nw)
This commit is contained in:
parent
320b2f66b0
commit
229c0aea58
@ -40,7 +40,7 @@ DEFINE_DEVICE_TYPE(I8156, i8156_device, "i8156", "Intel 8156 RAM, I/O & Timer")
|
||||
|
||||
#define LOG_PORT (1U << 0)
|
||||
#define LOG_TIMER (1U << 1)
|
||||
#define VERBOSE (LOG_PORT | LOG_TIMER)
|
||||
#define VERBOSE (0)
|
||||
#include "logmacro.h"
|
||||
|
||||
enum
|
||||
|
@ -567,8 +567,8 @@ uint8_t pc1640_state::io_r(offs_t offset)
|
||||
else if (addr >= 0x078 && addr <= 0x07f) { data = mouse_r(offset & 0x07); decoded = true; }
|
||||
else if (addr >= 0x378 && addr <= 0x37b) { data = printer_r(offset & 0x03); decoded = true; }
|
||||
else if (addr >= 0x3b0 && addr <= 0x3df) { decoded = true; }
|
||||
else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(); decoded = true; }
|
||||
else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(); decoded = true; }
|
||||
else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->msr_r(); decoded = true; }
|
||||
else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fifo_r(); decoded = true; }
|
||||
else if (addr >= 0x3f8 && addr <= 0x3ff) { data = m_uart->ins8250_r(offset & 0x07); decoded = true; }
|
||||
|
||||
if (decoded)
|
||||
@ -637,7 +637,8 @@ void pc1512_state::pc1512_io(address_map &map)
|
||||
map(0x0a1, 0x0a1).w(FUNC(pc1512_state::nmi_mask_w));
|
||||
map(0x378, 0x37b).rw(FUNC(pc1512_state::printer_r), FUNC(pc1512_state::printer_w));
|
||||
map(0x3d0, 0x3df).rw(m_vdu, FUNC(ams40041_device::vdu_r), FUNC(ams40041_device::vdu_w));
|
||||
map(0x3f0, 0x3f7).m(m_fdc, FUNC(pc_fdc_xt_device::map));
|
||||
map(0x3f2, 0x3f2).w(FUNC(pc1512_state::drive_select_w));
|
||||
map(0x3f4, 0x3f5).m(m_fdc, FUNC(upd765a_device::map));
|
||||
map(0x3f8, 0x3ff).rw(m_uart, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w));
|
||||
}
|
||||
|
||||
@ -670,8 +671,8 @@ void pc1640_state::pc1640_io(address_map &map)
|
||||
map(0x080, 0x083).w(FUNC(pc1640_state::dma_page_w));
|
||||
map(0x0a1, 0x0a1).w(FUNC(pc1640_state::nmi_mask_w));
|
||||
map(0x378, 0x37b).w(FUNC(pc1640_state::printer_w));
|
||||
map(0x3f2, 0x3f2).w(m_fdc, FUNC(pc_fdc_xt_device::dor_w));
|
||||
map(0x3f5, 0x3f5).w(PC_FDC_XT_TAG ":upd765", FUNC(upd765_family_device::fifo_w));
|
||||
map(0x3f2, 0x3f2).w(FUNC(pc1640_state::drive_select_w));
|
||||
map(0x3f5, 0x3f5).w(m_fdc, FUNC(upd765a_device::fifo_w));
|
||||
map(0x3f8, 0x3ff).w(m_uart, FUNC(ins8250_device::ins8250_w));
|
||||
}
|
||||
|
||||
@ -984,6 +985,27 @@ WRITE_LINE_MEMBER( pc1512_base_state::fdc_drq_w )
|
||||
update_fdc_drq();
|
||||
}
|
||||
|
||||
void pc1512_base_state::drive_select_w(uint8_t data)
|
||||
{
|
||||
m_fdc->set_floppy((data & 0x03) < 2 ? m_floppy[data & 0x03]->get_device() : nullptr);
|
||||
for (int n = 0; n < 2; n++)
|
||||
{
|
||||
floppy_image_device *img = m_floppy[n]->get_device();
|
||||
if (img != nullptr)
|
||||
img->mon_w((data & 0x03) == n && BIT(data, n + 4) ? 0 : 1);
|
||||
}
|
||||
|
||||
if (m_dreset != BIT(data, 2))
|
||||
{
|
||||
m_dreset = BIT(data, 2);
|
||||
m_fdc->soft_reset();
|
||||
}
|
||||
|
||||
m_nden = BIT(data, 3);
|
||||
update_fdc_int();
|
||||
update_fdc_drq();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// centronics_interface centronics_intf
|
||||
//-------------------------------------------------
|
||||
@ -1069,6 +1091,7 @@ void pc1512_base_state::machine_start()
|
||||
save_item(NAME(m_nden));
|
||||
save_item(NAME(m_dint));
|
||||
save_item(NAME(m_ddrq));
|
||||
save_item(NAME(m_dreset));
|
||||
save_item(NAME(m_neop));
|
||||
save_item(NAME(m_ack_int_enable));
|
||||
save_item(NAME(m_centronics_ack));
|
||||
@ -1098,6 +1121,7 @@ void pc1512_state::machine_start()
|
||||
void pc1512_base_state::machine_reset()
|
||||
{
|
||||
m_nmi_enable = 0;
|
||||
drive_select_w(0);
|
||||
|
||||
m_kb_bits = 0;
|
||||
m_kb->data_w(1);
|
||||
@ -1195,11 +1219,12 @@ void pc1512_state::pc1512(machine_config &config)
|
||||
MC146818(config, m_rtc, 32.768_kHz_XTAL);
|
||||
m_rtc->irq().set(m_pic, FUNC(pic8259_device::ir2_w));
|
||||
|
||||
PC_FDC_XT(config, m_fdc, 0);
|
||||
UPD765A(config, m_fdc, 24_MHz_XTAL / 6, false, false);
|
||||
// SED9420CAC (dedicated 16 MHz XTAL) is used as read data separator only
|
||||
m_fdc->intrq_wr_callback().set(FUNC(pc1512_state::fdc_int_w));
|
||||
m_fdc->drq_wr_callback().set(FUNC(pc1512_state::fdc_drq_w));
|
||||
FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
|
||||
|
||||
INS8250(config, m_uart, 1.8432_MHz_XTAL);
|
||||
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
|
||||
@ -1257,7 +1282,7 @@ void pc1512_state::pc1512(machine_config &config)
|
||||
void pc1512_state::pc1512dd(machine_config &config)
|
||||
{
|
||||
pc1512(config);
|
||||
subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
|
||||
m_floppy[1]->set_default_option("525dd");
|
||||
}
|
||||
|
||||
|
||||
@ -1330,11 +1355,12 @@ void pc1640_state::pc1640(machine_config &config)
|
||||
MC146818(config, m_rtc, 32.768_kHz_XTAL);
|
||||
m_rtc->irq().set(m_pic, FUNC(pic8259_device::ir2_w));
|
||||
|
||||
PC_FDC_XT(config, m_fdc, 0);
|
||||
UPD765A(config, m_fdc, 24_MHz_XTAL / 6, false, false);
|
||||
// FDC91C36 (clocked by CK8K) is used as read data separator only
|
||||
m_fdc->intrq_wr_callback().set(FUNC(pc1512_base_state::fdc_int_w));
|
||||
m_fdc->drq_wr_callback().set(FUNC(pc1512_base_state::fdc_drq_w));
|
||||
FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
|
||||
|
||||
INS8250(config, m_uart, 1.8432_MHz_XTAL);
|
||||
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
|
||||
@ -1394,7 +1420,7 @@ void pc1640_state::pc1640(machine_config &config)
|
||||
void pc1640_state::pc1640dd(machine_config &config)
|
||||
{
|
||||
pc1640(config);
|
||||
subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
|
||||
m_floppy[1]->set_default_option("525dd");
|
||||
}
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include "machine/pic8259.h"
|
||||
#include "machine/pit8253.h"
|
||||
#include "machine/pc1512kb.h"
|
||||
#include "machine/pc_fdc.h"
|
||||
#include "machine/upd765.h"
|
||||
#include "machine/ram.h"
|
||||
#include "sound/spkrdev.h"
|
||||
#include "video/ams40041.h"
|
||||
@ -34,7 +34,7 @@
|
||||
#define I8259A2_TAG "ic109"
|
||||
#define I8253_TAG "ic114"
|
||||
#define MC146818_TAG "ic134"
|
||||
#define PC_FDC_XT_TAG "ic112"
|
||||
#define UPD765A_TAG "ic112"
|
||||
#define INS8250_TAG "ic106"
|
||||
#define AMS40041_TAG "ic126"
|
||||
#define CENTRONICS_TAG "centronics"
|
||||
@ -52,15 +52,14 @@ public:
|
||||
m_pic(*this, I8259A2_TAG),
|
||||
m_pit(*this, I8253_TAG),
|
||||
m_rtc(*this, MC146818_TAG),
|
||||
m_fdc(*this, PC_FDC_XT_TAG),
|
||||
m_fdc(*this, UPD765A_TAG),
|
||||
m_uart(*this, INS8250_TAG),
|
||||
m_centronics(*this, CENTRONICS_TAG),
|
||||
m_cent_data_out(*this, "cent_data_out"),
|
||||
m_speaker(*this, "speaker"),
|
||||
m_kb(*this, PC1512_KEYBOARD_TAG),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_floppy0(*this, PC_FDC_XT_TAG ":0:525dd" ),
|
||||
m_floppy1(*this, PC_FDC_XT_TAG ":1:525dd" ),
|
||||
m_floppy(*this, UPD765A_TAG ":%u", 0U),
|
||||
m_bus(*this, ISA_BUS_TAG),
|
||||
m_lk(*this, "LK"),
|
||||
m_pit1(0),
|
||||
@ -76,6 +75,7 @@ public:
|
||||
m_nden(1),
|
||||
m_dint(0),
|
||||
m_ddrq(0),
|
||||
m_dreset(1),
|
||||
m_fdc_dsr(0),
|
||||
m_neop(0),
|
||||
m_ack_int_enable(1),
|
||||
@ -88,15 +88,14 @@ public:
|
||||
required_device<pic8259_device> m_pic;
|
||||
required_device<pit8253_device> m_pit;
|
||||
required_device<mc146818_device> m_rtc;
|
||||
required_device<pc_fdc_xt_device> m_fdc;
|
||||
required_device<upd765a_device> m_fdc;
|
||||
required_device<ins8250_device> m_uart;
|
||||
required_device<centronics_device> m_centronics;
|
||||
required_device<output_latch_device> m_cent_data_out;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<pc1512_keyboard_device> m_kb;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<floppy_image_device> m_floppy0;
|
||||
optional_device<floppy_image_device> m_floppy1;
|
||||
required_device_array<floppy_connector, 2> m_floppy;
|
||||
required_device<isa8_device> m_bus;
|
||||
required_ioport m_lk;
|
||||
|
||||
@ -139,6 +138,7 @@ public:
|
||||
DECLARE_FLOPPY_FORMATS( floppy_formats );
|
||||
DECLARE_WRITE_LINE_MEMBER( fdc_int_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
|
||||
void drive_select_w(uint8_t data);
|
||||
DECLARE_WRITE_LINE_MEMBER( write_centronics_ack );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_centronics_busy );
|
||||
DECLARE_WRITE_LINE_MEMBER( write_centronics_perror );
|
||||
@ -178,6 +178,7 @@ public:
|
||||
int m_nden;
|
||||
int m_dint;
|
||||
int m_ddrq;
|
||||
int m_dreset;
|
||||
uint8_t m_fdc_dsr;
|
||||
int m_neop;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user