From 57a07f7df4d77c0ce1af2f0b13e499c836f3c77c Mon Sep 17 00:00:00 2001 From: angelosa Date: Thu, 28 Jun 2018 01:45:57 +0200 Subject: [PATCH] mz2500.cpp: move state machine to includes (nw) --- scripts/target/mame/mess.lua | 1 + src/mame/drivers/mz2500.cpp | 200 +------------------------------- src/mame/includes/mz2500.h | 215 +++++++++++++++++++++++++++++++++++ 3 files changed, 217 insertions(+), 199 deletions(-) create mode 100644 src/mame/includes/mz2500.h diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index bcae03371ba..2e5db83356e 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -2986,6 +2986,7 @@ files { MAME_DIR .. "src/mame/video/x1.cpp", MAME_DIR .. "src/mame/drivers/x1twin.cpp", MAME_DIR .. "src/mame/drivers/mz2500.cpp", + MAME_DIR .. "src/mame/includes/mz2500.h", MAME_DIR .. "src/mame/drivers/mz3500.cpp", MAME_DIR .. "src/mame/drivers/pce220.cpp", MAME_DIR .. "src/mame/machine/pce220_ser.cpp", diff --git a/src/mame/drivers/mz2500.cpp b/src/mame/drivers/mz2500.cpp index 5410880e641..b33af86e332 100644 --- a/src/mame/drivers/mz2500.cpp +++ b/src/mame/drivers/mz2500.cpp @@ -45,205 +45,7 @@ ********************************************************************************************************************************/ #include "emu.h" -#include "cpu/z80/z80.h" -#include "machine/i8255.h" -#include "machine/pit8253.h" -#include "machine/rp5c15.h" -#include "machine/wd_fdc.h" -#include "machine/z80sio.h" -#include "machine/z80pio.h" -#include "sound/2203intf.h" -#include "sound/beep.h" -#include "emupal.h" -#include "screen.h" -#include "softlist.h" -#include "speaker.h" - -//#include "imagedev/cassette.h" -#include "imagedev/flopdrv.h" - -#define RP5C15_TAG "rp5c15" - -class mz2500_state : public driver_device -{ -public: - mz2500_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_screen(*this, "screen"), - m_rtc(*this, RP5C15_TAG), - m_pit(*this, "pit"), - m_beeper(*this, "beeper"), - m_gfxdecode(*this, "gfxdecode"), - m_fdc(*this, "mb8877a"), - m_floppy0(*this, "mb8877a:0"), - m_floppy1(*this, "mb8877a:1"), - m_floppy2(*this, "mb8877a:2"), - m_floppy3(*this, "mb8877a:3"), - m_floppy(nullptr), - m_palette(*this, "palette") - { } - - required_device m_maincpu; - required_device m_screen; - required_device m_rtc; - required_device m_pit; - required_device m_beeper; - required_device m_gfxdecode; - required_device m_fdc; - required_device m_floppy0; - required_device m_floppy1; - required_device m_floppy2; - required_device m_floppy3; - - floppy_image_device *m_floppy; - - std::unique_ptr m_main_ram; - uint8_t *m_ipl_rom; - uint8_t *m_kanji_rom; - uint8_t *m_kanji2_rom; - std::unique_ptr m_pcg_ram; - std::unique_ptr m_emm_ram; - uint8_t *m_dic_rom; - uint8_t *m_phone_rom; - uint8_t *m_iplpro_rom; - - uint8_t m_bank_val[8]; - uint8_t m_bank_addr; - uint8_t m_irq_sel; - uint8_t m_irq_vector[4]; - uint8_t m_irq_mask[4]; - uint8_t m_irq_pending[4]; - uint8_t m_kanji_bank; - uint8_t m_dic_bank; - uint8_t m_fdc_reverse; - uint8_t m_key_mux; - uint8_t m_monitor_type; - uint8_t m_text_reg[0x100]; - uint8_t m_text_reg_index; - uint8_t m_text_col_size; - uint8_t m_text_font_reg; - uint8_t m_pal_select; - uint16_t m_cg_vs; - uint16_t m_cg_ve; - uint16_t m_cg_hs; - uint16_t m_cg_he; - int16_t m_tv_vs; - int16_t m_tv_ve; - int16_t m_tv_hs; - int16_t m_tv_he; - uint8_t m_cg_latch[4]; - uint8_t m_cg_reg_index; - uint8_t m_cg_reg[0x20]; - uint8_t m_clut16[0x10]; - uint16_t m_clut256[0x100]; - uint8_t m_cg_mask; - int m_scr_x_size; - int m_scr_y_size; - uint8_t m_cg_clear_flag; - uint32_t m_rom_index; - uint8_t m_hrom_index; - uint8_t m_lrom_index; - struct { uint8_t r,g,b; } m_pal[16]; - uint8_t m_joy_mode; - uint16_t m_kanji_index; - uint32_t m_emm_offset; - uint8_t m_old_portc; - uint8_t m_prev_col_val; - uint8_t m_pio_latchb; - uint8_t m_ym_porta; - uint8_t m_screen_enable; - DECLARE_READ8_MEMBER(bank0_r); - DECLARE_READ8_MEMBER(bank1_r); - DECLARE_READ8_MEMBER(bank2_r); - DECLARE_READ8_MEMBER(bank3_r); - DECLARE_READ8_MEMBER(bank4_r); - DECLARE_READ8_MEMBER(bank5_r); - DECLARE_READ8_MEMBER(bank6_r); - DECLARE_READ8_MEMBER(bank7_r); - DECLARE_WRITE8_MEMBER(bank0_w); - DECLARE_WRITE8_MEMBER(bank1_w); - DECLARE_WRITE8_MEMBER(bank2_w); - DECLARE_WRITE8_MEMBER(bank3_w); - DECLARE_WRITE8_MEMBER(bank4_w); - DECLARE_WRITE8_MEMBER(bank5_w); - DECLARE_WRITE8_MEMBER(bank6_w); - DECLARE_WRITE8_MEMBER(bank7_w); - DECLARE_READ8_MEMBER(mz2500_bank_addr_r); - DECLARE_WRITE8_MEMBER(mz2500_bank_addr_w); - DECLARE_READ8_MEMBER(mz2500_bank_data_r); - DECLARE_WRITE8_MEMBER(mz2500_bank_data_w); - DECLARE_WRITE8_MEMBER(mz2500_kanji_bank_w); - DECLARE_WRITE8_MEMBER(mz2500_dictionary_bank_w); - DECLARE_READ8_MEMBER(mz2500_crtc_hvblank_r); - DECLARE_WRITE8_MEMBER(mz2500_tv_crtc_w); - DECLARE_WRITE8_MEMBER(mz2500_irq_sel_w); - DECLARE_WRITE8_MEMBER(mz2500_irq_data_w); - DECLARE_READ8_MEMBER(mz2500_rom_r); - DECLARE_WRITE8_MEMBER(mz2500_rom_w); - DECLARE_WRITE8_MEMBER(palette4096_io_w); - DECLARE_READ8_MEMBER(mz2500_bplane_latch_r); - DECLARE_READ8_MEMBER(mz2500_rplane_latch_r); - DECLARE_READ8_MEMBER(mz2500_gplane_latch_r); - DECLARE_READ8_MEMBER(mz2500_iplane_latch_r); - DECLARE_WRITE8_MEMBER(mz2500_cg_addr_w); - DECLARE_WRITE8_MEMBER(mz2500_cg_data_w); - DECLARE_WRITE8_MEMBER(timer_w); - DECLARE_READ8_MEMBER(mz2500_joystick_r); - DECLARE_WRITE8_MEMBER(mz2500_joystick_w); - DECLARE_READ8_MEMBER(mz2500_kanji_r); - DECLARE_WRITE8_MEMBER(mz2500_kanji_w); - DECLARE_READ8_MEMBER(rp5c15_8_r); - DECLARE_WRITE8_MEMBER(rp5c15_8_w); - DECLARE_READ8_MEMBER(mz2500_emm_data_r); - DECLARE_WRITE8_MEMBER(mz2500_emm_addr_w); - DECLARE_WRITE8_MEMBER(mz2500_emm_data_w); - uint8_t mz2500_cg_latch_compare(); - uint8_t mz2500_ram_read(uint16_t offset, uint8_t bank_num); - void mz2500_ram_write(uint16_t offset, uint8_t data, uint8_t bank_num); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; - DECLARE_PALETTE_INIT(mz2500); - uint32_t screen_update_mz2500(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(mz2500_vbl); - - DECLARE_READ8_MEMBER(fdc_r); - DECLARE_WRITE8_MEMBER(fdc_w); - DECLARE_WRITE8_MEMBER(floppy_select_w); - DECLARE_WRITE8_MEMBER(floppy_side_w); - - DECLARE_READ8_MEMBER(mz2500_porta_r); - DECLARE_READ8_MEMBER(mz2500_portb_r); - DECLARE_READ8_MEMBER(mz2500_portc_r); - DECLARE_WRITE8_MEMBER(mz2500_porta_w); - DECLARE_WRITE8_MEMBER(mz2500_portb_w); - DECLARE_WRITE8_MEMBER(mz2500_portc_w); - DECLARE_WRITE8_MEMBER(mz2500_pio1_porta_w); - DECLARE_READ8_MEMBER(mz2500_pio1_porta_r); - DECLARE_READ8_MEMBER(opn_porta_r); - DECLARE_WRITE8_MEMBER(opn_porta_w); - DECLARE_WRITE_LINE_MEMBER(pit8253_clk0_irq); - DECLARE_WRITE_LINE_MEMBER(mz2500_rtc_alarm_irq); - IRQ_CALLBACK_MEMBER( mz2500_irq_ack ); - - void draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,uint16_t map_addr); - void draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,uint16_t map_addr); - void draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri); - void draw_cg16_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int x_size,int pri); - void draw_cg256_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int pri); - void draw_tv_screen(bitmap_ind16 &bitmap,const rectangle &cliprect); - void draw_cg_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri); - - void mz2500_draw_pixel(bitmap_ind16 &bitmap,int x,int y,uint16_t pen,uint8_t width,uint8_t height); - void mz2500_reconfigure_screen(); - uint8_t pal_256_param(int index, int param); - void mz2500_reset(mz2500_state *state, uint8_t type); - required_device m_palette; - void mz2500(machine_config &config); - void mz2500_io(address_map &map); - void mz2500_map(address_map &map); -}; +#include "includes/mz2500.h" /* machine stuff */ diff --git a/src/mame/includes/mz2500.h b/src/mame/includes/mz2500.h new file mode 100644 index 00000000000..3cf1a6ae60d --- /dev/null +++ b/src/mame/includes/mz2500.h @@ -0,0 +1,215 @@ +// license:BSD-3-Clause +// copyright-holders:Angelo Salese +/******************************************************************************************************************************** + + Sharp MZ-2500 (c) 1985 Sharp Corporation + +********************************************************************************************************************************/ + +#pragma once + +#ifndef MAME_INCLUDES_MZ2500_H +#define MAME_INCLUDES_MZ2500_H + +#include "cpu/z80/z80.h" +#include "machine/i8255.h" +#include "machine/pit8253.h" +#include "machine/rp5c15.h" +#include "machine/wd_fdc.h" +#include "machine/z80sio.h" +#include "machine/z80pio.h" +#include "sound/2203intf.h" +#include "sound/beep.h" +#include "emupal.h" +#include "screen.h" +#include "softlist.h" +#include "speaker.h" + +//#include "imagedev/cassette.h" +#include "imagedev/flopdrv.h" + +#define RP5C15_TAG "rp5c15" + +class mz2500_state : public driver_device +{ +public: + mz2500_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_screen(*this, "screen"), + m_rtc(*this, RP5C15_TAG), + m_pit(*this, "pit"), + m_beeper(*this, "beeper"), + m_gfxdecode(*this, "gfxdecode"), + m_fdc(*this, "mb8877a"), + m_floppy0(*this, "mb8877a:0"), + m_floppy1(*this, "mb8877a:1"), + m_floppy2(*this, "mb8877a:2"), + m_floppy3(*this, "mb8877a:3"), + m_floppy(nullptr), + m_palette(*this, "palette") + { } + + required_device m_maincpu; + required_device m_screen; + required_device m_rtc; + required_device m_pit; + required_device m_beeper; + required_device m_gfxdecode; + required_device m_fdc; + required_device m_floppy0; + required_device m_floppy1; + required_device m_floppy2; + required_device m_floppy3; + + floppy_image_device *m_floppy; + + std::unique_ptr m_main_ram; + uint8_t *m_ipl_rom; + uint8_t *m_kanji_rom; + uint8_t *m_kanji2_rom; + std::unique_ptr m_pcg_ram; + std::unique_ptr m_emm_ram; + uint8_t *m_dic_rom; + uint8_t *m_phone_rom; + uint8_t *m_iplpro_rom; + + uint8_t m_bank_val[8]; + uint8_t m_bank_addr; + uint8_t m_irq_sel; + uint8_t m_irq_vector[4]; + uint8_t m_irq_mask[4]; + uint8_t m_irq_pending[4]; + uint8_t m_kanji_bank; + uint8_t m_dic_bank; + uint8_t m_fdc_reverse; + uint8_t m_key_mux; + uint8_t m_monitor_type; + uint8_t m_text_reg[0x100]; + uint8_t m_text_reg_index; + uint8_t m_text_col_size; + uint8_t m_text_font_reg; + uint8_t m_pal_select; + uint16_t m_cg_vs; + uint16_t m_cg_ve; + uint16_t m_cg_hs; + uint16_t m_cg_he; + int16_t m_tv_vs; + int16_t m_tv_ve; + int16_t m_tv_hs; + int16_t m_tv_he; + uint8_t m_cg_latch[4]; + uint8_t m_cg_reg_index; + uint8_t m_cg_reg[0x20]; + uint8_t m_clut16[0x10]; + uint16_t m_clut256[0x100]; + uint8_t m_cg_mask; + int m_scr_x_size; + int m_scr_y_size; + uint8_t m_cg_clear_flag; + uint32_t m_rom_index; + uint8_t m_hrom_index; + uint8_t m_lrom_index; + struct { uint8_t r,g,b; } m_pal[16]; + uint8_t m_joy_mode; + uint16_t m_kanji_index; + uint32_t m_emm_offset; + uint8_t m_old_portc; + uint8_t m_prev_col_val; + uint8_t m_pio_latchb; + uint8_t m_ym_porta; + uint8_t m_screen_enable; + DECLARE_READ8_MEMBER(bank0_r); + DECLARE_READ8_MEMBER(bank1_r); + DECLARE_READ8_MEMBER(bank2_r); + DECLARE_READ8_MEMBER(bank3_r); + DECLARE_READ8_MEMBER(bank4_r); + DECLARE_READ8_MEMBER(bank5_r); + DECLARE_READ8_MEMBER(bank6_r); + DECLARE_READ8_MEMBER(bank7_r); + DECLARE_WRITE8_MEMBER(bank0_w); + DECLARE_WRITE8_MEMBER(bank1_w); + DECLARE_WRITE8_MEMBER(bank2_w); + DECLARE_WRITE8_MEMBER(bank3_w); + DECLARE_WRITE8_MEMBER(bank4_w); + DECLARE_WRITE8_MEMBER(bank5_w); + DECLARE_WRITE8_MEMBER(bank6_w); + DECLARE_WRITE8_MEMBER(bank7_w); + DECLARE_READ8_MEMBER(mz2500_bank_addr_r); + DECLARE_WRITE8_MEMBER(mz2500_bank_addr_w); + DECLARE_READ8_MEMBER(mz2500_bank_data_r); + DECLARE_WRITE8_MEMBER(mz2500_bank_data_w); + DECLARE_WRITE8_MEMBER(mz2500_kanji_bank_w); + DECLARE_WRITE8_MEMBER(mz2500_dictionary_bank_w); + DECLARE_READ8_MEMBER(mz2500_crtc_hvblank_r); + DECLARE_WRITE8_MEMBER(mz2500_tv_crtc_w); + DECLARE_WRITE8_MEMBER(mz2500_irq_sel_w); + DECLARE_WRITE8_MEMBER(mz2500_irq_data_w); + DECLARE_READ8_MEMBER(mz2500_rom_r); + DECLARE_WRITE8_MEMBER(mz2500_rom_w); + DECLARE_WRITE8_MEMBER(palette4096_io_w); + DECLARE_READ8_MEMBER(mz2500_bplane_latch_r); + DECLARE_READ8_MEMBER(mz2500_rplane_latch_r); + DECLARE_READ8_MEMBER(mz2500_gplane_latch_r); + DECLARE_READ8_MEMBER(mz2500_iplane_latch_r); + DECLARE_WRITE8_MEMBER(mz2500_cg_addr_w); + DECLARE_WRITE8_MEMBER(mz2500_cg_data_w); + DECLARE_WRITE8_MEMBER(timer_w); + DECLARE_READ8_MEMBER(mz2500_joystick_r); + DECLARE_WRITE8_MEMBER(mz2500_joystick_w); + DECLARE_READ8_MEMBER(mz2500_kanji_r); + DECLARE_WRITE8_MEMBER(mz2500_kanji_w); + DECLARE_READ8_MEMBER(rp5c15_8_r); + DECLARE_WRITE8_MEMBER(rp5c15_8_w); + DECLARE_READ8_MEMBER(mz2500_emm_data_r); + DECLARE_WRITE8_MEMBER(mz2500_emm_addr_w); + DECLARE_WRITE8_MEMBER(mz2500_emm_data_w); + uint8_t mz2500_cg_latch_compare(); + uint8_t mz2500_ram_read(uint16_t offset, uint8_t bank_num); + void mz2500_ram_write(uint16_t offset, uint8_t data, uint8_t bank_num); + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + DECLARE_PALETTE_INIT(mz2500); + uint32_t screen_update_mz2500(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(mz2500_vbl); + + DECLARE_READ8_MEMBER(fdc_r); + DECLARE_WRITE8_MEMBER(fdc_w); + DECLARE_WRITE8_MEMBER(floppy_select_w); + DECLARE_WRITE8_MEMBER(floppy_side_w); + + DECLARE_READ8_MEMBER(mz2500_porta_r); + DECLARE_READ8_MEMBER(mz2500_portb_r); + DECLARE_READ8_MEMBER(mz2500_portc_r); + DECLARE_WRITE8_MEMBER(mz2500_porta_w); + DECLARE_WRITE8_MEMBER(mz2500_portb_w); + DECLARE_WRITE8_MEMBER(mz2500_portc_w); + DECLARE_WRITE8_MEMBER(mz2500_pio1_porta_w); + DECLARE_READ8_MEMBER(mz2500_pio1_porta_r); + DECLARE_READ8_MEMBER(opn_porta_r); + DECLARE_WRITE8_MEMBER(opn_porta_w); + DECLARE_WRITE_LINE_MEMBER(pit8253_clk0_irq); + DECLARE_WRITE_LINE_MEMBER(mz2500_rtc_alarm_irq); + IRQ_CALLBACK_MEMBER( mz2500_irq_ack ); + + void draw_80x25(bitmap_ind16 &bitmap,const rectangle &cliprect,uint16_t map_addr); + void draw_40x25(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,uint16_t map_addr); + void draw_cg4_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri); + void draw_cg16_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int x_size,int pri); + void draw_cg256_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int plane,int pri); + void draw_tv_screen(bitmap_ind16 &bitmap,const rectangle &cliprect); + void draw_cg_screen(bitmap_ind16 &bitmap,const rectangle &cliprect,int pri); + + void mz2500_draw_pixel(bitmap_ind16 &bitmap,int x,int y,uint16_t pen,uint8_t width,uint8_t height); + void mz2500_reconfigure_screen(); + uint8_t pal_256_param(int index, int param); + void mz2500_reset(mz2500_state *state, uint8_t type); + required_device m_palette; + void mz2500(machine_config &config); + void mz2500_io(address_map &map); + void mz2500_map(address_map &map); +}; + + +#endif