1 // license:BSD-3-Clause 2 // copyright-holders:Robbbert, Vas Crabb 3 #ifndef MAME_INCLUDES_ZORBA_H 4 #define MAME_INCLUDES_ZORBA_H 5 6 #pragma once 7 8 #include "sound/beep.h" 9 10 #include "bus/ieee488/ieee488.h" 11 12 #include "imagedev/floppy.h" 13 14 #include "machine/6821pia.h" 15 #include "machine/i8251.h" 16 #include "machine/wd_fdc.h" 17 #include "machine/z80dma.h" 18 19 #include "video/i8275.h" 20 21 #include "emupal.h" 22 23 24 class zorba_state : public driver_device 25 { 26 public: zorba_state(const machine_config & mconfig,device_type type,const char * tag)27 zorba_state(const machine_config &mconfig, device_type type, const char *tag) 28 : driver_device(mconfig, type, tag) 29 , m_config_port(*this, "CNF") 30 , m_rom(*this, "maincpu") 31 , m_ram(*this, "mainram") 32 , m_bank1(*this, "bank1") 33 , m_p_chargen(*this, "chargen") 34 , m_maincpu(*this, "maincpu") 35 , m_dma(*this, "dma") 36 , m_uart0(*this, "uart0") 37 , m_uart1(*this, "uart1") 38 , m_uart2(*this, "uart2") 39 , m_pia0(*this, "pia0") 40 , m_pia1(*this, "pia1") 41 , m_palette(*this, "palette") 42 , m_crtc(*this, "crtc") 43 , m_beep(*this, "beeper") 44 , m_fdc (*this, "fdc") 45 , m_floppy0(*this, "fdc:0") 46 , m_floppy1(*this, "fdc:1") 47 , m_ieee(*this, IEEE488_TAG) 48 { 49 } 50 51 DECLARE_INPUT_CHANGED_MEMBER(printer_type); 52 void zorba(machine_config &config); 53 54 private: 55 virtual void machine_start() override; 56 virtual void machine_reset() override; 57 58 void zorba_io(address_map &map); 59 void zorba_mem(address_map &map); 60 61 // Memory banking control 62 uint8_t ram_r(); 63 void ram_w(uint8_t data); 64 uint8_t rom_r(); 65 void rom_w(uint8_t data); 66 67 // Interrupt vectoring glue 68 void intmask_w(uint8_t data); 69 template <unsigned N> DECLARE_WRITE_LINE_MEMBER(tx_rx_rdy_w); 70 template <unsigned N> DECLARE_WRITE_LINE_MEMBER(irq_w); 71 72 // DMA controller handlers 73 DECLARE_WRITE_LINE_MEMBER(busreq_w); 74 uint8_t memory_read_byte(offs_t offset); 75 void memory_write_byte(offs_t offset, uint8_t data); 76 uint8_t io_read_byte(offs_t offset); 77 void io_write_byte(offs_t offset, uint8_t data); 78 79 // PIT handlers 80 DECLARE_WRITE_LINE_MEMBER(br1_w); 81 82 // PIA handlers 83 void pia0_porta_w(uint8_t data); 84 uint8_t pia1_portb_r(); 85 void pia1_portb_w(uint8_t data); 86 87 // Video 88 I8275_DRAW_CHARACTER_MEMBER(zorba_update_chr); 89 90 // Printer port glue 91 DECLARE_WRITE_LINE_MEMBER(printer_fault_w); 92 DECLARE_WRITE_LINE_MEMBER(printer_select_w); 93 94 required_ioport m_config_port; 95 96 required_region_ptr<u8> m_rom; 97 required_shared_ptr<u8> m_ram; 98 required_memory_bank m_bank1; 99 required_region_ptr<uint8_t> m_p_chargen; 100 101 required_device<cpu_device> m_maincpu; 102 required_device<z80dma_device> m_dma; 103 required_device<i8251_device> m_uart0; 104 required_device<i8251_device> m_uart1; 105 required_device<i8251_device> m_uart2; 106 required_device<pia6821_device> m_pia0; 107 required_device<pia6821_device> m_pia1; 108 109 required_device<palette_device> m_palette; 110 required_device<i8275_device> m_crtc; 111 112 required_device<beep_device> m_beep; 113 114 required_device<fd1793_device> m_fdc; 115 required_device<floppy_connector> m_floppy0; 116 required_device<floppy_connector> m_floppy1; 117 118 required_device<ieee488_device> m_ieee; 119 120 uint8_t m_intmask; 121 uint8_t m_tx_rx_rdy; 122 uint8_t m_irq; 123 124 bool m_printer_prowriter; 125 int m_printer_fault; 126 int m_printer_select; 127 128 uint8_t m_term_data; 129 }; 130 131 #endif // MAME_INCLUDES_ZORBA_H 132