1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 #ifndef MAME_INCLUDES_PROF80_H 4 #define MAME_INCLUDES_PROF80_H 5 6 #pragma once 7 8 #include "bus/ecbbus/ecbbus.h" 9 #include "bus/rs232/rs232.h" 10 #include "cpu/z80/z80.h" 11 #include "imagedev/floppy.h" 12 #include "machine/z80daisy.h" 13 #include "machine/prof80mmu.h" 14 #include "machine/74259.h" 15 #include "machine/ram.h" 16 #include "machine/rescap.h" 17 #include "machine/upd1990a.h" 18 #include "machine/upd765.h" 19 20 #define Z80_TAG "z1" 21 #define UPD765_TAG "z38" 22 #define UPD1990A_TAG "z43" 23 24 // ------------------------------------------------------------------------ 25 26 #define UNIO_Z80STI_TAG "z5" 27 #define UNIO_Z80SIO_TAG "z15" 28 #define UNIO_Z80PIO_TAG "z13" 29 #define UNIO_CENTRONICS1_TAG "n3" 30 #define UNIO_CENTRONICS2_TAG "n4" 31 32 class prof80_state : public driver_device 33 { 34 public: prof80_state(const machine_config & mconfig,device_type type,const char * tag)35 prof80_state(const machine_config &mconfig, device_type type, const char *tag) 36 : driver_device(mconfig, type, tag) 37 , m_maincpu(*this, Z80_TAG) 38 , m_mmu(*this, "mmu") 39 , m_rtc(*this, UPD1990A_TAG) 40 , m_fdc(*this, UPD765_TAG) 41 , m_ram(*this, RAM_TAG) 42 , m_floppy(*this, UPD765_TAG":%u", 0U) 43 , m_ecb(*this, "ecbbus") 44 , m_rs232a(*this, "rs232a") 45 , m_rs232b(*this, "rs232b") 46 , m_flra(*this, "z44") 47 , m_flrb(*this, "z45") 48 , m_rom(*this, Z80_TAG) 49 , m_j4(*this, "J4") 50 , m_j5(*this, "J5") 51 { } 52 53 void prof80(machine_config &config); 54 55 private: 56 required_device<cpu_device> m_maincpu; 57 required_device<prof80_mmu_device> m_mmu; 58 required_device<upd1990a_device> m_rtc; 59 required_device<upd765a_device> m_fdc; 60 required_device<ram_device> m_ram; 61 required_device_array<floppy_connector, 2> m_floppy; 62 required_device<ecbbus_device> m_ecb; 63 required_device<rs232_port_device> m_rs232a; 64 required_device<rs232_port_device> m_rs232b; 65 required_device<ls259_device> m_flra; 66 required_device<ls259_device> m_flrb; 67 required_memory_region m_rom; 68 required_ioport m_j4; 69 required_ioport m_j5; 70 71 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 72 virtual void machine_start() override; 73 74 enum 75 { 76 TIMER_ID_MOTOR 77 }; 78 79 void flr_w(uint8_t data); 80 uint8_t status_r(); 81 uint8_t status2_r(); 82 83 void motor(int mon); 84 85 DECLARE_WRITE_LINE_MEMBER(ready_w); 86 DECLARE_WRITE_LINE_MEMBER(inuse_w); 87 DECLARE_WRITE_LINE_MEMBER(motor_w); 88 DECLARE_WRITE_LINE_MEMBER(select_w); 89 DECLARE_WRITE_LINE_MEMBER(mini_w); 90 DECLARE_WRITE_LINE_MEMBER(mstop_w); 91 92 // floppy state 93 int m_motor; 94 int m_ready; 95 int m_select; 96 97 // timers 98 emu_timer *m_floppy_motor_off_timer; 99 100 void prof80_io(address_map &map); 101 void prof80_mem(address_map &map); 102 void prof80_mmu(address_map &map); 103 }; 104 105 #endif 106