1 // license:GPL-2.0+ 2 // copyright-holders:Peter Trauner, Dan Boris, Dirk Best, Robbbert 3 /***************************************************************************** 4 * 5 * includes/aim65.h 6 * 7 * Rockwell AIM-65 8 * 9 ****************************************************************************/ 10 #ifndef MAME_INCLUDES_AIM65_H 11 #define MAME_INCLUDES_AIM65_H 12 13 #pragma once 14 15 #include "bus/generic/carts.h" 16 #include "bus/generic/slot.h" 17 #include "cpu/m6502/m6502.h" 18 #include "imagedev/cassette.h" 19 #include "bus/rs232/rs232.h" 20 #include "machine/6522via.h" 21 #include "machine/6821pia.h" 22 #include "machine/mos6530n.h" 23 #include "machine/ram.h" 24 #include "video/dl1416.h" 25 #include "emupal.h" 26 #include "screen.h" 27 28 29 class aim65_state : public driver_device 30 { 31 public: aim65_state(const machine_config & mconfig,device_type type,const char * tag)32 aim65_state(const machine_config &mconfig, device_type type, const char *tag) 33 : driver_device(mconfig, type, tag) 34 , m_palette(*this, "palette") 35 , m_riot_port_a(0) 36 , m_pb_save(0) 37 , m_kb_en(true) 38 , m_ca2(true) 39 , m_cb2(true) 40 , m_printer_x(0) 41 , m_printer_y(0) 42 , m_printer_flag(0) 43 , m_printer_level(0) 44 , m_maincpu(*this, "maincpu") 45 , m_cassette1(*this, "cassette") 46 , m_cassette2(*this, "cassette2") 47 , m_z24(*this, "z24") 48 , m_z25(*this, "z25") 49 , m_z26(*this, "z26") 50 , m_z12(*this, "z12") 51 , m_z13(*this, "z13") 52 , m_z14(*this, "z14") 53 , m_z15(*this, "z15") 54 , m_ram(*this, RAM_TAG) 55 , m_ds(*this, "ds%u", 1) 56 , m_digits(*this, "digit%u", 0U) 57 , m_rs232(*this, "rs232") 58 , m_via0(*this, "via0") 59 , m_via1(*this, "via1") 60 , m_pia(*this, "pia") 61 , m_riot(*this, "riot") 62 , m_io_keyboard(*this, "KEY.%u", 0) 63 { 64 } 65 66 void aim65(machine_config &config); 67 68 DECLARE_INPUT_CHANGED_MEMBER(reset_button); 69 70 private: 71 virtual void machine_start() override; 72 73 void aim65_palette(palette_device &palette) const; 74 void u1_pa_w(u8 data); 75 void u1_pb_w(u8 data); 76 u8 z33_pb_r(); 77 void z32_pa_w(u8 data); 78 void z32_pb_w(u8 data); 79 void z32_cb2_w(bool state); 80 u8 z32_pb_r(); 81 82 template <unsigned D> void update_ds(offs_t offset, u16 data); 83 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z24_load)84 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z24_load) { return load_cart(image, m_z24, "z24"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z25_load)85 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z25_load) { return load_cart(image, m_z25, "z25"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z26_load)86 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z26_load) { return load_cart(image, m_z26, "z26"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z12_load)87 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z12_load) { return load_cart(image, m_z12, "z12"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z13_load)88 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z13_load) { return load_cart(image, m_z13, "z13"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z14_load)89 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z14_load) { return load_cart(image, m_z14, "z14"); } DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z15_load)90 DECLARE_DEVICE_IMAGE_LOAD_MEMBER(z15_load) { return load_cart(image, m_z15, "z15"); } 91 emu_timer *m_print_timer; 92 TIMER_CALLBACK_MEMBER(printer_timer); 93 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 94 95 image_init_result load_cart(device_image_interface &image, generic_slot_device *slot, const char *slot_tag); 96 97 void mem_map(address_map &map); 98 99 optional_device<palette_device> m_palette; 100 uint8_t m_riot_port_a; 101 uint8_t m_pb_save; 102 bool m_kb_en; 103 bool m_ca2; 104 bool m_cb2; 105 u8 m_printer_x; 106 u8 m_printer_y; 107 u8 m_printer_flag; 108 bool m_printer_level; 109 std::unique_ptr<uint16_t[]> m_printerRAM; 110 111 required_device<cpu_device> m_maincpu; 112 required_device<cassette_image_device> m_cassette1; 113 required_device<cassette_image_device> m_cassette2; 114 required_device<generic_slot_device> m_z24; 115 required_device<generic_slot_device> m_z25; 116 required_device<generic_slot_device> m_z26; 117 required_device<generic_slot_device> m_z12; 118 required_device<generic_slot_device> m_z13; 119 required_device<generic_slot_device> m_z14; 120 required_device<generic_slot_device> m_z15; 121 required_device<ram_device> m_ram; 122 required_device_array<dl1416_device, 5> m_ds; 123 output_finder<20> m_digits; 124 required_device<rs232_port_device> m_rs232; 125 required_device<via6522_device> m_via0; 126 required_device<via6522_device> m_via1; 127 required_device<pia6821_device> m_pia; 128 required_device<mos6532_new_device> m_riot; 129 required_ioport_array<8> m_io_keyboard; 130 }; 131 132 133 #endif // MAME_INCLUDES_AIM65_H 134