1 // license:BSD-3-Clause 2 // copyright-holders:Curt Coder 3 #ifndef MAME_INCLUDES_BW2_H 4 #define MAME_INCLUDES_BW2_H 5 6 #pragma once 7 8 #include "bus/bw2/exp.h" 9 #include "cpu/z80/z80.h" 10 #include "formats/bw2_dsk.h" 11 #include "imagedev/floppy.h" 12 #include "bus/centronics/ctronics.h" 13 #include "machine/i8251.h" 14 #include "machine/i8255.h" 15 #include "machine/pit8253.h" 16 #include "machine/ram.h" 17 #include "machine/wd_fdc.h" 18 #include "video/msm6255.h" 19 #include "emupal.h" 20 #include "rendlay.h" 21 22 #define Z80_TAG "ic1" 23 #define I8255A_TAG "ic4" 24 #define WD2797_TAG "ic5" 25 #define MSM6255_TAG "ic49" 26 #define CENTRONICS_TAG "centronics" 27 #define RS232_TAG "rs232" 28 #define SCREEN_TAG "screen" 29 30 class bw2_state : public driver_device 31 { 32 public: bw2_state(const machine_config & mconfig,device_type type,const char * tag)33 bw2_state(const machine_config &mconfig, device_type type, const char *tag) : 34 driver_device(mconfig, type, tag), 35 m_maincpu(*this, Z80_TAG), 36 m_uart(*this, "ic7"), 37 m_fdc(*this, WD2797_TAG), 38 m_lcdc(*this, MSM6255_TAG), 39 m_pit(*this, "ic6"), 40 m_centronics(*this, CENTRONICS_TAG), 41 m_exp(*this, BW2_EXPANSION_SLOT_TAG), 42 m_ram(*this, RAM_TAG), 43 m_floppy0(*this, WD2797_TAG":0"), 44 m_floppy1(*this, WD2797_TAG":1"), 45 m_floppy(nullptr), 46 m_rom(*this, Z80_TAG), 47 m_y(*this, "Y%u", 0), 48 m_video_ram(*this, "videoram") 49 { } 50 51 required_device<cpu_device> m_maincpu; 52 required_device<i8251_device> m_uart; 53 required_device<wd2797_device> m_fdc; 54 required_device<msm6255_device> m_lcdc; 55 required_device<pit8253_device> m_pit; 56 required_device<centronics_device> m_centronics; 57 required_device<bw2_expansion_slot_device> m_exp; 58 required_device<ram_device> m_ram; 59 required_device<floppy_connector> m_floppy0; 60 required_device<floppy_connector> m_floppy1; 61 floppy_image_device *m_floppy; 62 required_memory_region m_rom; 63 required_ioport_array<10> m_y; 64 65 virtual void machine_start() override; 66 67 uint8_t read(offs_t offset); 68 void write(offs_t offset, uint8_t data); 69 70 void ppi_pa_w(uint8_t data); 71 uint8_t ppi_pb_r(); 72 void ppi_pc_w(uint8_t data); 73 uint8_t ppi_pc_r(); 74 75 DECLARE_WRITE_LINE_MEMBER( mtron_w ); 76 77 DECLARE_WRITE_LINE_MEMBER( fdc_drq_w ); 78 DECLARE_FLOPPY_FORMATS( floppy_formats ); 79 80 // keyboard state 81 uint8_t m_kb; 82 83 // memory state 84 uint8_t m_bank; 85 86 // floppy state 87 int m_mtron; 88 int m_mfdbk; 89 90 // video state 91 optional_shared_ptr<uint8_t> m_video_ram; 92 void bw2_palette(palette_device &palette) const; 93 94 DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); 95 int m_centronics_busy; 96 void bw2(machine_config &config); 97 void bw2_io(address_map &map); 98 void bw2_mem(address_map &map); 99 void lcdc_map(address_map &map); 100 }; 101 102 #endif // MAME_INCLUDES_BW2_H 103