diff options
Diffstat (limited to 'src/mess/includes/fmtowns.h')
-rw-r--r-- | src/mess/includes/fmtowns.h | 384 |
1 files changed, 0 insertions, 384 deletions
diff --git a/src/mess/includes/fmtowns.h b/src/mess/includes/fmtowns.h deleted file mode 100644 index fb521304d8d..00000000000 --- a/src/mess/includes/fmtowns.h +++ /dev/null @@ -1,384 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Barry Rodewald -#ifndef FMTOWNS_H_ -#define FMTOWNS_H_ - - -#include "emu.h" -#include "cpu/i386/i386.h" -#include "sound/2612intf.h" -#include "sound/rf5c68.h" -#include "sound/cdda.h" -#include "sound/speaker.h" -#include "imagedev/chd_cd.h" -#include "machine/pit8253.h" -#include "machine/pic8259.h" -#include "machine/wd_fdc.h" -#include "imagedev/floppy.h" -#include "formats/fmtowns_dsk.h" -#include "machine/upd71071.h" -#include "machine/ram.h" -#include "machine/nvram.h" -#include "machine/fm_scsi.h" - -#define IRQ_LOG 0 // set to 1 to log IRQ line activity - -struct towns_cdrom_controller -{ - UINT8 command; - UINT8 status; - UINT8 cmd_status[4]; - UINT8 cmd_status_ptr; - UINT8 extra_status; - UINT8 parameter[8]; - UINT8 mpu_irq_enable; - UINT8 dma_irq_enable; - UINT8 buffer[2048]; - INT32 buffer_ptr; - UINT32 lba_current; - UINT32 lba_last; - UINT32 cdda_current; - UINT32 cdda_length; - bool software_tx; - emu_timer* read_timer; -}; - -struct towns_video_controller -{ - UINT8 towns_vram_wplane; - UINT8 towns_vram_rplane; - UINT8 towns_vram_page_sel; - UINT8 towns_palette_select; - UINT8 towns_palette_r[256]; - UINT8 towns_palette_g[256]; - UINT8 towns_palette_b[256]; - UINT8 towns_degipal[8]; - UINT8 towns_dpmd_flag; - UINT8 towns_crtc_mix; - UINT8 towns_crtc_sel; // selected CRTC register - UINT16 towns_crtc_reg[32]; - UINT8 towns_video_sel; // selected video register - UINT8 towns_video_reg[2]; - UINT8 towns_sprite_sel; // selected sprite register - UINT8 towns_sprite_reg[8]; - UINT8 towns_sprite_flag; // sprite drawing flag - UINT8 towns_sprite_page; // VRAM page (not layer) sprites are drawn to - UINT8 towns_tvram_enable; - UINT16 towns_kanji_offset; - UINT8 towns_kanji_code_h; - UINT8 towns_kanji_code_l; - rectangle towns_crtc_layerscr[2]; // each layer has independent sizes - UINT8 towns_display_plane; - UINT8 towns_display_page_sel; - UINT8 towns_vblank_flag; - UINT8 towns_layer_ctrl; - emu_timer* sprite_timer; -}; - -class towns_state : public driver_device -{ - public: - towns_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_speaker(*this, "speaker"), - m_pic_master(*this, "pic8259_master"), - m_pic_slave(*this, "pic8259_slave"), - m_pit(*this, "pit"), - m_dma_1(*this, "dma_1"), - m_dma_2(*this, "dma_2"), - m_palette(*this, "palette"), - m_ram(*this, RAM_TAG), - m_fdc(*this, "fdc"), - m_flop0(*this, "fdc:0"), - m_flop1(*this, "fdc:1"), - m_nvram(*this, "nvram"), - m_nvram16(*this, "nvram16"), - m_ctrltype(*this, "ctrltype"), - m_key1(*this, "key1"), - m_key2(*this, "key2"), - m_key3(*this, "key3"), - m_key4(*this, "key4"), - m_joy1(*this, "joy1"), - m_joy2(*this, "joy2"), - m_joy1_ex(*this, "joy1_ex"), - m_joy2_ex(*this, "joy2_ex"), - m_6b_joy1(*this, "6b_joy1"), - m_6b_joy2(*this, "6b_joy2"), - m_6b_joy1_ex(*this, "6b_joy1_ex"), - m_6b_joy2_ex(*this, "6b_joy2_ex"), - m_mouse1(*this, "mouse1"), - m_mouse2(*this, "mouse2"), - m_mouse3(*this, "mouse3"), - m_user(*this,"user"), - m_serial(*this,"serial") - { } - - /* devices */ - required_device<cpu_device> m_maincpu; - required_device<speaker_sound_device> m_speaker; - required_device<pic8259_device> m_pic_master; - required_device<pic8259_device> m_pic_slave; - required_device<pit8253_device> m_pit; - required_device<upd71071_device> m_dma_1; - required_device<upd71071_device> m_dma_2; - required_device<palette_device> m_palette; - required_device<ram_device> m_ram; - required_device<mb8877_t> m_fdc; - required_device<floppy_connector> m_flop0; - required_device<floppy_connector> m_flop1; - ram_device* m_messram; - cdrom_image_device* m_cdrom; - cdda_device* m_cdda; - class fmscsi_device* m_scsi; - - UINT16 m_ftimer; - UINT16 m_freerun_timer; - emu_timer* m_towns_freerun_counter; - UINT16 m_intervaltimer2_period; - UINT8 m_intervaltimer2_irqmask; - UINT8 m_intervaltimer2_timeout_flag; - UINT8 m_intervaltimer2_timeout_flag2; - emu_timer* m_towns_intervaltimer2; - UINT8 m_nmi_mask; - UINT8 m_compat_mode; - UINT8 m_towns_system_port; - UINT32 m_towns_ankcg_enable; - UINT32 m_towns_mainmem_enable; - UINT32 m_towns_ram_enable; - UINT32* m_towns_vram; - UINT8* m_towns_gfxvram; - UINT8* m_towns_txtvram; - int m_towns_selected_drive; - UINT8 m_towns_fdc_irq6mask; - UINT8* m_towns_serial_rom; - int m_towns_srom_position; - UINT8 m_towns_srom_clk; - UINT8 m_towns_srom_reset; - UINT8 m_towns_rtc_select; - UINT8 m_towns_rtc_data; - UINT8 m_towns_rtc_reg[16]; - emu_timer* m_towns_rtc_timer; - UINT8 m_towns_timer_mask; - UINT16 m_towns_machine_id; // default is 0x0101 - UINT8 m_towns_kb_status; - UINT8 m_towns_kb_irq1_enable; - UINT8 m_towns_kb_output; // key output - UINT8 m_towns_kb_extend; // extended key output - emu_timer* m_towns_kb_timer; - emu_timer* m_towns_mouse_timer; - UINT8 m_towns_fm_irq_flag; - UINT8 m_towns_pcm_irq_flag; - UINT8 m_towns_pcm_channel_flag; - UINT8 m_towns_pcm_channel_mask; - UINT8 m_towns_pad_mask; - UINT8 m_towns_mouse_output; - UINT8 m_towns_mouse_x; - UINT8 m_towns_mouse_y; - UINT8 m_towns_volume[8]; // volume ports - UINT8 m_towns_volume_select; - UINT8 m_towns_scsi_control; - UINT8 m_towns_scsi_status; - UINT8 m_towns_spkrdata; - UINT8 m_pit_out0; - UINT8 m_pit_out1; - UINT8 m_pit_out2; - UINT8 m_timer0; - UINT8 m_timer1; - - emu_timer* m_towns_wait_timer; - emu_timer* m_towns_status_timer; - emu_timer* m_towns_cdda_timer; - struct towns_cdrom_controller m_towns_cd; - struct towns_video_controller m_video; - - UINT32 m_kb_prev[4]; - UINT8 m_prev_pad_mask; - UINT8 m_prev_x; - UINT8 m_prev_y; - - optional_shared_ptr<UINT32> m_nvram; - optional_shared_ptr<UINT16> m_nvram16; - - virtual void driver_start(); - virtual void machine_start(); - virtual void machine_reset(); - virtual void video_start(); - UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); - - DECLARE_READ8_MEMBER(towns_system_r); - DECLARE_WRITE8_MEMBER(towns_system_w); - DECLARE_READ8_MEMBER(towns_intervaltimer2_r); - DECLARE_WRITE8_MEMBER(towns_intervaltimer2_w); - DECLARE_READ8_MEMBER(towns_sys6c_r); - DECLARE_WRITE8_MEMBER(towns_sys6c_w); - DECLARE_READ8_MEMBER(towns_dma1_r); - DECLARE_WRITE8_MEMBER(towns_dma1_w); - DECLARE_READ8_MEMBER(towns_dma2_r); - DECLARE_WRITE8_MEMBER(towns_dma2_w); - DECLARE_READ8_MEMBER(towns_floppy_r); - DECLARE_WRITE8_MEMBER(towns_floppy_w); - DECLARE_READ8_MEMBER(towns_keyboard_r); - DECLARE_WRITE8_MEMBER(towns_keyboard_w); - DECLARE_READ8_MEMBER(towns_port60_r); - DECLARE_WRITE8_MEMBER(towns_port60_w); - DECLARE_READ8_MEMBER(towns_sys5e8_r); - DECLARE_WRITE8_MEMBER(towns_sys5e8_w); - DECLARE_READ8_MEMBER(towns_sound_ctrl_r); - DECLARE_WRITE8_MEMBER(towns_sound_ctrl_w); - DECLARE_READ8_MEMBER(towns_padport_r); - DECLARE_WRITE8_MEMBER(towns_pad_mask_w); - DECLARE_READ8_MEMBER(towns_cmos8_r); - DECLARE_WRITE8_MEMBER(towns_cmos8_w); - DECLARE_READ8_MEMBER(towns_cmos_low_r); - DECLARE_WRITE8_MEMBER(towns_cmos_low_w); - DECLARE_READ8_MEMBER(towns_cmos_r); - DECLARE_WRITE8_MEMBER(towns_cmos_w); - DECLARE_READ8_MEMBER(towns_sys480_r); - DECLARE_WRITE8_MEMBER(towns_sys480_w); - DECLARE_READ8_MEMBER(towns_video_404_r); - DECLARE_WRITE8_MEMBER(towns_video_404_w); - DECLARE_READ8_MEMBER(towns_cdrom_r); - DECLARE_WRITE8_MEMBER(towns_cdrom_w); - DECLARE_READ8_MEMBER(towns_rtc_r); - DECLARE_WRITE8_MEMBER(towns_rtc_w); - DECLARE_WRITE8_MEMBER(towns_rtc_select_w); - DECLARE_READ8_MEMBER(towns_volume_r); - DECLARE_WRITE8_MEMBER(towns_volume_w); - DECLARE_READ8_MEMBER(towns_41ff_r); - - DECLARE_READ8_MEMBER(towns_gfx_high_r); - DECLARE_WRITE8_MEMBER(towns_gfx_high_w); - DECLARE_READ8_MEMBER(towns_gfx_r); - DECLARE_WRITE8_MEMBER(towns_gfx_w); - DECLARE_READ8_MEMBER(towns_video_cff80_r); - DECLARE_WRITE8_MEMBER(towns_video_cff80_w); - DECLARE_READ8_MEMBER(towns_video_cff80_mem_r); - DECLARE_WRITE8_MEMBER(towns_video_cff80_mem_w); - DECLARE_READ8_MEMBER(towns_video_440_r); - DECLARE_WRITE8_MEMBER(towns_video_440_w); - DECLARE_READ8_MEMBER(towns_video_5c8_r); - DECLARE_WRITE8_MEMBER(towns_video_5c8_w); - DECLARE_READ8_MEMBER(towns_video_fd90_r); - DECLARE_WRITE8_MEMBER(towns_video_fd90_w); - DECLARE_READ8_MEMBER(towns_video_ff81_r); - DECLARE_READ8_MEMBER(towns_video_unknown_r); - DECLARE_WRITE8_MEMBER(towns_video_ff81_w); - DECLARE_READ8_MEMBER(towns_spriteram_low_r); - DECLARE_WRITE8_MEMBER(towns_spriteram_low_w); - DECLARE_READ8_MEMBER(towns_spriteram_r); - DECLARE_WRITE8_MEMBER(towns_spriteram_w); - - DECLARE_WRITE_LINE_MEMBER(mb8877a_irq_w); - DECLARE_WRITE_LINE_MEMBER(mb8877a_drq_w); - DECLARE_WRITE_LINE_MEMBER(pit_out2_changed); - - RF5C68_SAMPLE_END_CB_MEMBER(towns_pcm_irq); - - void towns_update_video_banks(address_space&); - void init_serial_rom(); - void init_rtc(); - void kb_sendcode(UINT8 scancode, int release); - UINT8 speaker_get_spk(); - void speaker_set_spkrdata(UINT8 data); - void speaker_set_input(UINT8 data); - UINT8 towns_cdrom_read_byte_software(); - - required_ioport m_ctrltype; - required_ioport m_key1; - required_ioport m_key2; - required_ioport m_key3; - required_ioport m_key4; - required_ioport m_joy1; - required_ioport m_joy2; - required_ioport m_joy1_ex; - required_ioport m_joy2_ex; - required_ioport m_6b_joy1; - required_ioport m_6b_joy2; - required_ioport m_6b_joy1_ex; - required_ioport m_6b_joy2_ex; - required_ioport m_mouse1; - required_ioport m_mouse2; - required_ioport m_mouse3; - required_memory_region m_user; - optional_memory_region m_serial; - -private: - static const device_timer_id TIMER_RTC = 0; - static const device_timer_id TIMER_FREERUN = 1; - static const device_timer_id TIMER_INTERVAL2 = 2; - static const device_timer_id TIMER_KEYBOARD = 3; - static const device_timer_id TIMER_MOUSE = 4; - static const device_timer_id TIMER_WAIT = 5; - static const device_timer_id TIMER_CDSTATUS = 6; - static const device_timer_id TIMER_CDDA = 7; - void rtc_second(); - void freerun_inc(); - void intervaltimer2_timeout(); - void poll_keyboard(); - void mouse_timeout(); - void wait_end(); - void towns_cd_set_status(UINT8 st0, UINT8 st1, UINT8 st2, UINT8 st3); - void towns_cdrom_execute_command(cdrom_image_device* device); - void towns_cdrom_play_cdda(cdrom_image_device* device); - void towns_cdrom_read(cdrom_image_device* device); - void towns_cd_status_ready(); - void towns_delay_cdda(cdrom_image_device* dev); -public: - INTERRUPT_GEN_MEMBER(towns_vsync_irq); - TIMER_CALLBACK_MEMBER(towns_cdrom_read_byte); - TIMER_CALLBACK_MEMBER(towns_sprite_done); - TIMER_CALLBACK_MEMBER(towns_vblank_end); - DECLARE_WRITE_LINE_MEMBER(towns_scsi_irq); - DECLARE_WRITE_LINE_MEMBER(towns_scsi_drq); - DECLARE_WRITE_LINE_MEMBER(towns_pit_out0_changed); - DECLARE_WRITE_LINE_MEMBER(towns_pit_out1_changed); - DECLARE_READ8_MEMBER(get_slave_ack); - DECLARE_WRITE_LINE_MEMBER(towns_fm_irq); - DECLARE_FLOPPY_FORMATS(floppy_formats); - void towns_crtc_refresh_mode(); - void towns_update_kanji_offset(); - void towns_update_palette(); - void render_sprite_4(UINT32 poffset, UINT32 coffset, UINT16 x, UINT16 y, UINT16 xflip, UINT16 yflip, const rectangle* rect); - void render_sprite_16(UINT32 poffset, UINT16 x, UINT16 y, UINT16 xflip, UINT16 yflip, const rectangle* rect); - void draw_sprites(const rectangle* rect); - void towns_crtc_draw_scan_layer_hicolour(bitmap_rgb32 &bitmap,const rectangle* rect,int layer,int line,int scanline); - void towns_crtc_draw_scan_layer_256(bitmap_rgb32 &bitmap,const rectangle* rect,int layer,int line,int scanline); - void towns_crtc_draw_scan_layer_16(bitmap_rgb32 &bitmap,const rectangle* rect,int layer,int line,int scanline); - void towns_crtc_draw_layer(bitmap_rgb32 &bitmap,const rectangle* rect,int layer); - void render_text_char(UINT8 x, UINT8 y, UINT8 ascii, UINT16 jis, UINT8 attr); - void draw_text_layer(); - inline UINT8 byte_to_bcd(UINT8 val); - inline UINT8 bcd_to_byte(UINT8 val); - inline UINT32 msf_to_lbafm(UINT32 val); // because the CDROM core doesn't provide this; - DECLARE_READ16_MEMBER(towns_fdc_dma_r); - DECLARE_WRITE16_MEMBER(towns_fdc_dma_w); - void towns_cdrom_set_irq(int line,int state); - UINT8 towns_cd_get_track(); - DECLARE_READ16_MEMBER(towns_cdrom_dma_r); - void rtc_hour(); - void rtc_minute(); - DECLARE_READ16_MEMBER(towns_scsi_dma_r); - DECLARE_WRITE16_MEMBER(towns_scsi_dma_w); -}; - -class towns16_state : public towns_state -{ - public: - towns16_state(const machine_config &mconfig, device_type type, const char *tag) - : towns_state(mconfig, type, tag) - { } -}; - -class marty_state : public towns_state -{ - public: - marty_state(const machine_config &mconfig, device_type type, const char *tag) - : towns_state(mconfig, type, tag) - { } - - virtual void driver_start(); -}; - -#endif /*FMTOWNS_H_*/ |