1 // license:BSD-3-Clause 2 // copyright-holders:Miodrag Milanovic 3 /***************************************************************************** 4 * 5 * includes/vector06.h 6 * 7 ****************************************************************************/ 8 #ifndef MAME_INCLUDES_VECTOR06_H 9 #define MAME_INCLUDES_VECTOR06_H 10 11 #pragma once 12 13 #include "bus/generic/carts.h" 14 #include "bus/generic/slot.h" 15 16 #include "cpu/i8085/i8085.h" 17 18 #include "imagedev/cassette.h" 19 #include "imagedev/floppy.h" 20 21 #include "machine/i8255.h" 22 #include "machine/pit8253.h" 23 #include "machine/ram.h" 24 #include "machine/wd_fdc.h" 25 26 #include "sound/ay8910.h" 27 #include "sound/spkrdev.h" 28 29 #include "emupal.h" 30 #include "screen.h" 31 32 class vector06_state : public driver_device 33 { 34 public: vector06_state(const machine_config & mconfig,device_type type,const char * tag)35 vector06_state(const machine_config &mconfig, device_type type, const char *tag) 36 : driver_device(mconfig, type, tag) 37 , m_maincpu(*this, "maincpu") 38 , m_rom(*this, "maincpu") 39 , m_speaker(*this, "speaker") 40 , m_cassette(*this, "cassette") 41 , m_cart(*this, "cartslot") 42 , m_fdc(*this, "fdc") 43 , m_floppy0(*this, "fdc:0") 44 , m_floppy1(*this, "fdc:1") 45 , m_ay(*this, "aysnd") 46 , m_ram(*this, RAM_TAG) 47 , m_palette(*this, "palette") 48 , m_screen(*this, "screen") 49 , m_ppi1(*this, "ppi1") 50 , m_ppi2(*this, "ppi2") 51 , m_pit(*this, "pit") 52 , m_bank1(*this, "bank1") 53 , m_bank2(*this, "bank2") 54 , m_bank3(*this, "bank3") 55 , m_io_keyboard(*this, "LINE.%u", 0U) 56 , m_io_reset(*this, "RESET") 57 { } 58 59 void vector06(machine_config &config); 60 DECLARE_INPUT_CHANGED_MEMBER(f11_button); 61 DECLARE_INPUT_CHANGED_MEMBER(f12_button); 62 63 private: 64 DECLARE_FLOPPY_FORMATS(floppy_formats); 65 66 uint8_t ppi1_portb_r(); 67 uint8_t ppi1_portc_r(); 68 void ppi1_porta_w(uint8_t data); 69 void ppi1_portb_w(uint8_t data); 70 void color_set(uint8_t data); 71 uint8_t ppi2_portb_r(); 72 void ppi2_portb_w(uint8_t data); 73 void ppi2_porta_w(uint8_t data); 74 void ppi2_portc_w(uint8_t data); 75 void disc_w(uint8_t data); 76 void status_callback(uint8_t data); 77 void ramdisk_w(uint8_t data); 78 DECLARE_WRITE_LINE_MEMBER(speaker_w); 79 void machine_start() override; 80 void machine_reset() override; 81 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 82 IRQ_CALLBACK_MEMBER(irq_callback); 83 void update_mem(); 84 85 void io_map(address_map &map); 86 void mem_map(address_map &map); 87 88 required_device<i8080_cpu_device> m_maincpu; 89 required_region_ptr<u8> m_rom; 90 required_device<speaker_sound_device> m_speaker; 91 required_device<cassette_image_device> m_cassette; 92 required_device<generic_slot_device> m_cart; 93 required_device<kr1818vg93_device> m_fdc; 94 required_device<floppy_connector> m_floppy0; 95 required_device<floppy_connector> m_floppy1; 96 required_device<ay8910_device> m_ay; 97 required_device<ram_device> m_ram; 98 required_device<palette_device> m_palette; 99 required_device<screen_device> m_screen; 100 required_device<i8255_device> m_ppi1, m_ppi2; 101 required_device<pit8253_device> m_pit; 102 required_memory_bank m_bank1; 103 required_memory_bank m_bank2; 104 required_memory_bank m_bank3; 105 required_ioport_array<9> m_io_keyboard; 106 required_ioport m_io_reset; 107 108 uint8_t m_keyboard_mask; 109 uint8_t m_color_index; 110 uint8_t m_romdisk_msb; 111 uint8_t m_romdisk_lsb; 112 uint8_t m_vblank_state; 113 uint8_t m_rambank; 114 uint8_t m_aylatch; 115 bool m_video_mode; 116 bool m_stack_state; 117 bool m_romen; 118 }; 119 120 #endif // MAME_INCLUDES_VECTOR06_H 121