diff options
Diffstat (limited to 'src/mame/includes/microtan.h')
-rw-r--r-- | src/mame/includes/microtan.h | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/src/mame/includes/microtan.h b/src/mame/includes/microtan.h new file mode 100644 index 00000000000..29640649763 --- /dev/null +++ b/src/mame/includes/microtan.h @@ -0,0 +1,103 @@ +// license:GPL-2.0+ +// copyright-holders:Juergen Buchmueller +/****************************************************************************** + * Microtan 65 + * + * variables and function prototypes + * + * Juergen Buchmueller <pullmoll@t-online.de>, Jul 2000 + * + * Thanks go to Geoff Macdonald <mail@geoff.org.uk> + * for his site http://www.geo255.redhotant.com + * and to Fabrice Frances <frances@ensica.fr> + * for his site http://www.ifrance.com/oric/microtan.html + * + ******************************************************************************/ + +#ifndef MICROTAN_H_ +#define MICROTAN_H_ + +#include "imagedev/snapquik.h" +#include "machine/6522via.h" +#include "imagedev/cassette.h" + +class microtan_state : public driver_device +{ +public: + enum + { + TIMER_READ_CASSETTE, + TIMER_PULSE_NMI + }; + + microtan_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_videoram(*this, "videoram"), + m_maincpu(*this, "maincpu"), + m_cassette(*this, "cassette"), + m_via6522_0(*this, "via6522_0"), + m_via6522_1(*this, "via6522_1"), + m_gfxdecode(*this, "gfxdecode") + { } + + required_shared_ptr<UINT8> m_videoram; + UINT8 m_chunky_graphics; + UINT8 *m_chunky_buffer; + UINT8 m_keypad_column; + UINT8 m_keyboard_ascii; + emu_timer *m_timer; + int m_via_0_irq_line; + int m_via_1_irq_line; + int m_kbd_irq_line; + UINT8 m_keyrows[10]; + int m_lastrow; + int m_mask; + int m_key; + int m_repeat; + int m_repeater; + tilemap_t *m_bg_tilemap; + DECLARE_READ8_MEMBER(microtan_sound_r); + DECLARE_WRITE8_MEMBER(microtan_sound_w); + DECLARE_READ8_MEMBER(microtan_bffx_r); + DECLARE_WRITE8_MEMBER(microtan_bffx_w); + DECLARE_WRITE8_MEMBER(microtan_videoram_w); + DECLARE_DRIVER_INIT(microtan); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + virtual void machine_reset(); + virtual void video_start(); + UINT32 screen_update_microtan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(microtan_interrupt); + TIMER_CALLBACK_MEMBER(microtan_read_cassette); + TIMER_CALLBACK_MEMBER(microtan_pulse_nmi); + DECLARE_READ8_MEMBER(via_0_in_a); + DECLARE_WRITE8_MEMBER(via_0_out_a); + DECLARE_WRITE8_MEMBER(via_0_out_b); + DECLARE_WRITE_LINE_MEMBER(via_0_out_ca2); + DECLARE_WRITE_LINE_MEMBER(via_0_out_cb2); + DECLARE_WRITE8_MEMBER(via_1_out_a); + DECLARE_WRITE8_MEMBER(via_1_out_b); + DECLARE_WRITE_LINE_MEMBER(via_1_out_ca2); + DECLARE_WRITE_LINE_MEMBER(via_1_out_cb2); + DECLARE_WRITE_LINE_MEMBER(via_0_irq); + DECLARE_WRITE_LINE_MEMBER(via_1_irq); + required_device<cpu_device> m_maincpu; + required_device<cassette_image_device> m_cassette; + required_device<via6522_device> m_via6522_0; + required_device<via6522_device> m_via6522_1; + required_device<gfxdecode_device> m_gfxdecode; + UINT8 read_dsw(); + void microtan_set_irq_line(); + void store_key(int key); + int microtan_verify_snapshot(UINT8 *data, int size); + int parse_intel_hex(UINT8 *snapshot_buff, char *src); + int parse_zillion_hex(UINT8 *snapshot_buff, char *src); + void microtan_set_cpu_regs(const UINT8 *snapshot_buff, int base); + void microtan_snapshot_copy(UINT8 *snapshot_buff, int snapshot_size); + DECLARE_SNAPSHOT_LOAD_MEMBER( microtan ); + DECLARE_QUICKLOAD_LOAD_MEMBER( microtan ); + +protected: + virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); +}; + +#endif /* MICROTAN_H_ */ |