1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 /********************************************************************** 4 5 Luxor 55-10828 "slow" floppy disk controller emulation 6 7 *********************************************************************/ 8 9 #ifndef MAME_BUS_ABCBUS_LUXOR10828_H 10 #define MAME_BUS_ABCBUS_LUXOR10828_H 11 12 #pragma once 13 14 #include "abcbus.h" 15 #include "cpu/z80/z80.h" 16 #include "machine/z80daisy.h" 17 #include "formats/abc800_dsk.h" 18 #include "imagedev/floppy.h" 19 #include "machine/wd_fdc.h" 20 #include "machine/z80pio.h" 21 22 23 24 //************************************************************************** 25 // MACROS / CONSTANTS 26 //************************************************************************** 27 28 #define ADDRESS_ABC830 45 29 #define ADDRESS_ABC832 44 30 #define ADDRESS_ABC834 44 31 #define ADDRESS_ABC850 44 32 33 34 #define DRIVE_TEAC_FD55F 0x01 35 #define DRIVE_BASF_6138 0x02 36 #define DRIVE_MICROPOLIS_1015F 0x03 37 #define DRIVE_BASF_6118 0x04 38 #define DRIVE_MICROPOLIS_1115F 0x05 39 #define DRIVE_BASF_6106_08 0x08 40 #define DRIVE_MPI_51 0x09 41 #define DRIVE_BASF_6105 0x0e 42 #define DRIVE_BASF_6106 0x0f 43 44 45 46 //************************************************************************** 47 // TYPE DEFINITIONS 48 //************************************************************************** 49 50 // ======================> luxor_55_10828_device 51 52 class luxor_55_10828_device : public device_t, 53 public device_abcbus_card_interface 54 { 55 public: 56 // construction/destruction 57 luxor_55_10828_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); 58 59 protected: 60 // device-level overrides 61 virtual void device_start() override; 62 virtual void device_reset() override; 63 64 // optional information overrides 65 virtual const tiny_rom_entry *device_rom_region() const override; 66 virtual void device_add_mconfig(machine_config &config) override; 67 virtual ioport_constructor device_input_ports() const override; 68 69 // device_abcbus_interface overrides 70 virtual void abcbus_cs(uint8_t data) override; 71 virtual uint8_t abcbus_inp() override; 72 virtual void abcbus_out(uint8_t data) override; 73 virtual uint8_t abcbus_stat() override; 74 virtual void abcbus_c1(uint8_t data) override; 75 virtual void abcbus_c3(uint8_t data) override; 76 77 private: 78 uint8_t pio_pa_r(); 79 void pio_pa_w(uint8_t data); 80 uint8_t pio_pb_r(); 81 void pio_pb_w(uint8_t data); 82 83 DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w ); 84 DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); 85 86 void ctrl_w(uint8_t data); 87 void status_w(uint8_t data); 88 uint8_t fdc_r(offs_t offset); 89 void fdc_w(offs_t offset, uint8_t data); 90 91 DECLARE_FLOPPY_FORMATS( floppy_formats ); 92 93 void luxor_55_10828_io(address_map &map); 94 void luxor_55_10828_mem(address_map &map); 95 96 required_device<z80_device> m_maincpu; 97 required_device<z80pio_device> m_pio; 98 required_device<mb8876_device> m_fdc; 99 required_device<floppy_connector> m_floppy0; 100 required_device<floppy_connector> m_floppy1; 101 required_ioport m_sw1; 102 required_ioport m_s1; 103 104 bool m_cs; // card selected 105 uint8_t m_status; // ABC BUS status 106 uint8_t m_data; // ABC BUS data 107 bool m_fdc_irq; // floppy interrupt 108 bool m_fdc_drq; // floppy data request 109 int m_wait_enable; // wait enable 110 int m_sel0; // drive select 0 111 int m_sel1; // drive select 1 112 }; 113 114 115 // device type definition 116 DECLARE_DEVICE_TYPE(LUXOR_55_10828, luxor_55_10828_device) 117 118 #endif // MAME_BUS_ABCBUS_LUXOR10828_H 119