diff options
Diffstat (limited to 'src/mame/includes/hec2hrp.h')
-rw-r--r-- | src/mame/includes/hec2hrp.h | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/src/mame/includes/hec2hrp.h b/src/mame/includes/hec2hrp.h new file mode 100644 index 00000000000..c30b7bfccd3 --- /dev/null +++ b/src/mame/includes/hec2hrp.h @@ -0,0 +1,199 @@ +// license:BSD-3-Clause +// copyright-holders:JJ Stacino +///////////////////////////////////////////////////////////////////// +////// HECTOR HEADER FILE ///////////////////////////////////////// +///////////////////////////////////////////////////////////////////// +/* + Hector 2HR+ + Victor + Hector 2HR + Hector HRX + Hector MX40c + Hector MX80c + Hector 1 + Interact + + 12/05/2009 Skeleton driver - Micko : mmicko@gmail.com + 31/06/2009 Video - Robbbert + + 29/10/2009 Update skeleton to functional machine + by yo_fr (jj.stac @ aliceadsl.fr) + + => add Keyboard, + => add color, + => add cassette, + => add sn76477 sound and 1bit sound, + => add joysticks (stick, pot, fire) + => add BR/HR switching + => add bank switch for HRX + => add device MX80c and bank switching for the ROM + 03/01/2010 Update and clean prog by yo_fr (jj.stac@aliceadsl.fr) + => add the port mapping for keyboard + 20/11/2010 : synchronization between uPD765 and Z80 are now OK, CP/M runnig! JJStacino + 11/11/2011 : add the minidisque support -3 pouces 1/2 driver- JJStacino (jj.stac @ aliceadsl.fr) + + don't forget to keep some information about these machine see DChector project : http://dchector.free.fr/ made by DanielCoulom + (and thank's to Daniel!) and Yves site : http://hectorvictor.free.fr/ (thank's too Yves!) + + TODO : Add the cartridge function, + Adjust the one shot and A/D timing (sn76477) +*/ + +#include "machine/upd765.h" +#include "machine/wd_fdc.h" +#include "imagedev/flopdrv.h" +#include "imagedev/cassette.h" +#include "sound/sn76477.h" /* for sn sound*/ + +/* Enum status for high memory bank (c000 - ffff)*/ +enum +{ + HECTOR_BANK_PROG = 0, /* first BANK is program ram*/ + HECTOR_BANK_VIDEO /* second BANK is Video ram */ +}; +/* Status for rom memory bank (0000 - 3fff) in MX machine*/ +enum +{ + HECTORMX_BANK_PAGE0 = 0, /* first BANK is base rom*/ + HECTORMX_BANK_PAGE1, /* second BANK is basic rom */ + HECTORMX_BANK_PAGE2 /* 3 BANK is monitrix / assemblex rom */ +}; +/* Status for rom memory bank (0000 - 3fff) in Mini Disc machine*/ +enum +{ + HECTOR_BANK_BASE = 0, /* first BANK is normal rom*/ + HECTOR_BANK_DISC /* second BANK is extra rom for mini disc use*/ +}; +/* Enum status for low memory bank (00000 - 0fff) for DISC II*/ +enum +{ + DISCII_BANK_RAM = 0, /* first BANK is program ram*/ + DISCII_BANK_ROM /* second BANK is ROM */ +}; + +class hec2hrp_state : public driver_device +{ +public: + hec2hrp_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_disc2cpu(*this, "disc2cpu"), + m_cassette(*this, "cassette"), + m_sn(*this, "sn76477"), + m_palette(*this, "palette"), + m_videoram(*this,"videoram"), + m_hector_videoram(*this,"hector_videoram") , + m_keyboard(*this, "KEY"), + m_minidisc_fdc(*this, "wd179x"), + m_floppy0(*this, "wd179x:0") + {} + + DECLARE_FLOPPY_FORMATS(minidisc_formats); + + required_device<cpu_device> m_maincpu; + optional_device<cpu_device> m_disc2cpu; + required_device<cassette_image_device> m_cassette; + required_device<sn76477_device> m_sn; + required_device<palette_device> m_palette; + optional_shared_ptr<UINT8> m_videoram; + optional_shared_ptr<UINT8> m_hector_videoram; + required_ioport_array<9> m_keyboard; + + optional_device<fd1793_t> m_minidisc_fdc; + optional_device<floppy_connector> m_floppy0; + + UINT8 m_hector_flag_hr; + UINT8 m_hector_flag_80c; + UINT8 m_hector_color[4]; + UINT8 m_hector_disc2_data_r_ready; + UINT8 m_hector_disc2_data_w_ready; + UINT8 m_hector_disc2_data_read; + UINT8 m_hector_disc2_data_write; + UINT8 m_hector_disc2_RNMI; + UINT8 m_state3000; + UINT8 m_write_cassette; + emu_timer *m_Cassette_timer; + UINT8 m_CK_signal ; + UINT8 m_flag_clk; + double m_Pin_Value[29][2]; + int m_AU[17]; + int m_ValMixer; + int m_oldstate3000; + int m_oldstate1000; + UINT8 m_pot0; + UINT8 m_pot1; + UINT8 m_actions; + UINT8 m_hector_port_a; + UINT8 m_hector_port_b; + UINT8 m_hector_port_c_h; + UINT8 m_hector_port_c_l; + UINT8 m_hector_port_cmd; + UINT8 m_cassette_bit; + UINT8 m_cassette_bit_mem; + UINT8 m_Data_K7; + int m_counter_write; + int m_IRQ_current_state; + int m_NMI_current_state; + int m_hector_cmd[10]; + int m_hector_nb_cde; + int m_hector_flag_result; + int m_print; + UINT8 m_hector_videoram_hrx[0x04000]; + + DECLARE_WRITE8_MEMBER(minidisc_control_w); + + DECLARE_WRITE8_MEMBER(hector_switch_bank_w); + DECLARE_WRITE8_MEMBER(hector_keyboard_w); + DECLARE_READ8_MEMBER(hector_keyboard_r); + DECLARE_WRITE8_MEMBER(hector_sn_2000_w); + DECLARE_WRITE8_MEMBER(hector_sn_2800_w); + DECLARE_READ8_MEMBER(hector_cassette_r); + DECLARE_WRITE8_MEMBER(hector_sn_3000_w); + DECLARE_WRITE8_MEMBER(hector_color_a_w); + DECLARE_WRITE8_MEMBER(hector_color_b_w); + DECLARE_READ8_MEMBER(hector_io_8255_r); + DECLARE_WRITE8_MEMBER(hector_io_8255_w); + DECLARE_WRITE8_MEMBER(hector_mx40_io_port_w); + DECLARE_WRITE8_MEMBER(hector_mx80_io_port_w); + DECLARE_MACHINE_START(hec2hrp); + DECLARE_MACHINE_RESET(hec2hrp); + DECLARE_VIDEO_START(hec2hrp); + DECLARE_MACHINE_START(hec2hrx); + DECLARE_MACHINE_RESET(hec2hrx); + DECLARE_MACHINE_START(hec2mdhrx); + DECLARE_MACHINE_RESET(hec2mdhrx); + UINT32 screen_update_hec2hrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_CALLBACK_MEMBER(Callback_CK); + + DECLARE_WRITE_LINE_MEMBER( disc2_fdc_interrupt ); + DECLARE_WRITE_LINE_MEMBER( disc2_fdc_dma_irq ); + int isHectorWithDisc2(); + int isHectorWithMiniDisc(); + int isHectorHR(); + int isHectoreXtend(); + void Mise_A_Jour_Etat(int Adresse, int Value ); + void Init_Value_SN76477_Hector(); + void Update_Sound(address_space &space, UINT8 data); + void hector_reset(int hr, int with_D2 ); + void hector_init(); + void Init_Hector_Palette(); + void hector_80c(bitmap_ind16 &bitmap, UINT8 *page, int ymax, int yram) ; + void hector_hr(bitmap_ind16 &bitmap, UINT8 *page, int ymax, int yram) ; + /*----------- defined in machine/hecdisk2.c -----------*/ + + // disc2 handling + DECLARE_READ8_MEMBER( hector_disc2_io00_port_r); + DECLARE_WRITE8_MEMBER( hector_disc2_io00_port_w); + DECLARE_READ8_MEMBER( hector_disc2_io20_port_r); + DECLARE_WRITE8_MEMBER( hector_disc2_io20_port_w); + DECLARE_READ8_MEMBER( hector_disc2_io30_port_r); + DECLARE_WRITE8_MEMBER( hector_disc2_io30_port_w); + DECLARE_READ8_MEMBER( hector_disc2_io40_port_r); + DECLARE_WRITE8_MEMBER( hector_disc2_io40_port_w); + DECLARE_READ8_MEMBER( hector_disc2_io50_port_r); + DECLARE_WRITE8_MEMBER( hector_disc2_io50_port_w); + + void hector_disc2_reset(); +}; + +MACHINE_CONFIG_EXTERN( hector_audio ); |