diff options
Diffstat (limited to 'src/devices/machine/fdc37c93x.h')
-rw-r--r-- | src/devices/machine/fdc37c93x.h | 100 |
1 files changed, 55 insertions, 45 deletions
diff --git a/src/devices/machine/fdc37c93x.h b/src/devices/machine/fdc37c93x.h index a4a67d2ccf3..7ec1922498f 100644 --- a/src/devices/machine/fdc37c93x.h +++ b/src/devices/machine/fdc37c93x.h @@ -7,24 +7,19 @@ fdc37c93x.h SMSC FDC37C93x Plug and Play Compatible Ultra I/O Controller ***************************************************************************/ - #ifndef MAME_MACHINE_FDC37C93X_H #define MAME_MACHINE_FDC37C93X_H #pragma once -#include "machine/8042kbdc.h" -// floppy disk controller -#include "machine/upd765.h" +#include "bus/isa/isa.h" #include "imagedev/floppy.h" -#include "formats/pc_dsk.h" -#include "formats/naslite_dsk.h" -// parallel port -#include "machine/pc_lpt.h" -// serial port +#include "machine/8042kbdc.h" +#include "machine/ds128x.h" #include "machine/ins8250.h" +#include "machine/pc_lpt.h" +#include "machine/upd765.h" -// make sure that pckeybrd.cpp 8042kbdc.cpp are present in project class fdc37c93x_device : public device_t, public device_isa16_card_interface { @@ -51,36 +46,37 @@ public: void remap(int space_id, offs_t start, offs_t end) override; // for the internal floppy controller - DECLARE_WRITE_LINE_MEMBER(irq_floppy_w); - DECLARE_WRITE_LINE_MEMBER(drq_floppy_w); + void irq_floppy_w(int state); + void drq_floppy_w(int state); // for the internal parallel port - DECLARE_WRITE_LINE_MEMBER(irq_parallel_w); + void irq_parallel_w(int state); // for the internal uarts - DECLARE_WRITE_LINE_MEMBER(irq_serial1_w); - DECLARE_WRITE_LINE_MEMBER(txd_serial1_w); - DECLARE_WRITE_LINE_MEMBER(dtr_serial1_w); - DECLARE_WRITE_LINE_MEMBER(rts_serial1_w); - DECLARE_WRITE_LINE_MEMBER(irq_serial2_w); - DECLARE_WRITE_LINE_MEMBER(txd_serial2_w); - DECLARE_WRITE_LINE_MEMBER(dtr_serial2_w); - DECLARE_WRITE_LINE_MEMBER(rts_serial2_w); + void irq_serial1_w(int state); + void txd_serial1_w(int state); + void dtr_serial1_w(int state); + void rts_serial1_w(int state); + void irq_serial2_w(int state); + void txd_serial2_w(int state); + void dtr_serial2_w(int state); + void rts_serial2_w(int state); // chip pins for uarts - DECLARE_WRITE_LINE_MEMBER(rxd1_w); - DECLARE_WRITE_LINE_MEMBER(ndcd1_w); - DECLARE_WRITE_LINE_MEMBER(ndsr1_w); - DECLARE_WRITE_LINE_MEMBER(nri1_w); - DECLARE_WRITE_LINE_MEMBER(ncts1_w); - DECLARE_WRITE_LINE_MEMBER(rxd2_w); - DECLARE_WRITE_LINE_MEMBER(ndcd2_w); - DECLARE_WRITE_LINE_MEMBER(ndsr2_w); - DECLARE_WRITE_LINE_MEMBER(nri2_w); - DECLARE_WRITE_LINE_MEMBER(ncts2_w); + void rxd1_w(int state); + void ndcd1_w(int state); + void ndsr1_w(int state); + void nri1_w(int state); + void ncts1_w(int state); + void rxd2_w(int state); + void ndcd2_w(int state); + void ndsr2_w(int state); + void nri2_w(int state); + void ncts2_w(int state); // rtc - DECLARE_WRITE_LINE_MEMBER(irq_rtc_w); + void irq_rtc_w(int state); // keyboard - DECLARE_WRITE_LINE_MEMBER(irq_keyboard_w); - DECLARE_WRITE_LINE_MEMBER(kbdp21_gp25_gatea20_w); - DECLARE_WRITE_LINE_MEMBER(kbdp20_gp20_reset_w); + void irq_keyboard_w(int state); + void irq_mouse_w(int state); + void kbdp21_gp25_gatea20_w(int state); + void kbdp20_gp20_reset_w(int state); void unmap_fdc(address_map &map); void map_lpt(address_map &map); @@ -100,9 +96,11 @@ public: uint8_t keybc_status_r(); void keybc_command_w(uint8_t data); - DECLARE_FLOPPY_FORMATS(floppy_formats); + static void floppy_formats(format_registration &fr); protected: + fdc37c93x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; @@ -111,6 +109,9 @@ protected: virtual void dack_w(int line, uint8_t data) override; virtual void eop_w(int state) override; + u8 m_device_id = 0; + u8 m_device_rev = 0; + private: // put your private members here enum OperatingMode @@ -147,10 +148,10 @@ private: devcb_write_line m_txd2_callback; devcb_write_line m_ndtr2_callback; devcb_write_line m_nrts2_callback; - required_device<pc_fdc_interface> floppy_controller_fdcdev; + required_device<smc37c78_device> floppy_controller_fdcdev; required_device<pc_lpt_device> pc_lpt_lptdev; - required_device<ns16450_device> pc_serial1_comdev; - required_device<ns16450_device> pc_serial2_comdev; + required_device<ns16550_device> pc_serial1_comdev; + required_device<ns16550_device> pc_serial2_comdev; required_device<ds12885_device> ds12885_rtcdev; required_device<kbdc8042_device> m_kbdc; int sysopt_pin; @@ -185,17 +186,26 @@ private: void write_auxio_configuration_register(int index, int data); uint16_t read_global_configuration_register(int index); uint16_t read_logical_configuration_register(int index); - uint16_t read_fdd_configuration_register(int index) { return 0; } - uint16_t read_ide1_configuration_register(int index) { return 0; } - uint16_t read_ide2_configuration_register(int index) { return 0; } - uint16_t read_parallel_configuration_register(int index) { return 0; } - uint16_t read_serial1_configuration_register(int index) { return 0; } - uint16_t read_serial2_configuration_register(int index) { return 0; } + uint16_t read_fdd_configuration_register(int index) { return configuration_registers[logical_device][index]; } + uint16_t read_ide1_configuration_register(int index) { return configuration_registers[logical_device][index]; } + uint16_t read_ide2_configuration_register(int index) { return configuration_registers[logical_device][index]; } + uint16_t read_parallel_configuration_register(int index) { return configuration_registers[logical_device][index]; } + uint16_t read_serial1_configuration_register(int index) { return configuration_registers[logical_device][index]; } + uint16_t read_serial2_configuration_register(int index) { return configuration_registers[logical_device][index]; } uint16_t read_rtc_configuration_register(int index); uint16_t read_keyboard_configuration_register(int index); uint16_t read_auxio_configuration_register(int index); }; +class fdc37m707_device : public fdc37c93x_device +{ +public: + fdc37m707_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + ~fdc37m707_device() {} +}; + DECLARE_DEVICE_TYPE(FDC37C93X, fdc37c93x_device); +DECLARE_DEVICE_TYPE(FDC37M707, fdc37m707_device); + #endif // MAME_MACHINE_FDC37C93X_H |