summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/cgenie.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/includes/cgenie.h')
-rw-r--r--src/mess/includes/cgenie.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/mess/includes/cgenie.h b/src/mess/includes/cgenie.h
new file mode 100644
index 00000000000..60b94160ee1
--- /dev/null
+++ b/src/mess/includes/cgenie.h
@@ -0,0 +1,134 @@
+/*****************************************************************************
+ *
+ * includes/cgenie.h
+ *
+ ****************************************************************************/
+
+#ifndef CGENIE_H_
+#define CGENIE_H_
+
+#include "machine/wd17xx.h"
+
+// CRTC 6845
+typedef struct
+{
+ UINT8 cursor_address_lo;
+ UINT8 cursor_address_hi;
+ UINT8 screen_address_lo;
+ UINT8 screen_address_hi;
+ UINT8 cursor_bottom;
+ UINT8 cursor_top;
+ UINT8 scan_lines;
+ UINT8 crt_mode;
+ UINT8 vertical_sync_pos;
+ UINT8 vertical_displayed;
+ UINT8 vertical_adjust;
+ UINT8 vertical_total;
+ UINT8 horizontal_length;
+ UINT8 horizontal_sync_pos;
+ UINT8 horizontal_displayed;
+ UINT8 horizontal_total;
+ UINT8 idx;
+ UINT8 cursor_visible;
+ UINT8 cursor_phase;
+} CRTC6845;
+
+
+class cgenie_state : public driver_device
+{
+public:
+ cgenie_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag) ,
+ m_colorram(*this, "colorram"),
+ m_fontram(*this, "fontram"){ }
+
+ required_shared_ptr<UINT8> m_colorram;
+ required_shared_ptr<UINT8> m_fontram;
+
+ UINT8 *m_videoram;
+ int m_tv_mode;
+ int m_font_offset[4];
+ int m_port_ff;
+ UINT8 m_irq_status;
+ UINT8 m_motor_drive;
+ UINT8 m_head;
+ UINT8 m_cass_level;
+ UINT8 m_cass_bit;
+ UINT8 m_psg_a_out;
+ UINT8 m_psg_b_out;
+ UINT8 m_psg_a_inp;
+ UINT8 m_psg_b_inp;
+ UINT8 m_control_port;
+ CRTC6845 m_crt;
+ int m_graphics;
+ bitmap_ind16 m_bitmap;
+ bitmap_ind16 m_dlybitmap;
+ int m_off_x;
+ int m_off_y;
+};
+
+
+/*----------- defined in machine/cgenie.c -----------*/
+
+READ8_DEVICE_HANDLER( cgenie_sh_control_port_r );
+WRITE8_DEVICE_HANDLER( cgenie_sh_control_port_w );
+
+extern const wd17xx_interface cgenie_wd17xx_interface;
+
+
+READ8_HANDLER ( cgenie_psg_port_a_r );
+READ8_HANDLER ( cgenie_psg_port_b_r );
+WRITE8_HANDLER ( cgenie_psg_port_a_w );
+WRITE8_HANDLER ( cgenie_psg_port_b_w );
+
+MACHINE_START( cgenie );
+MACHINE_RESET( cgenie );
+
+READ8_HANDLER ( cgenie_colorram_r );
+READ8_HANDLER ( cgenie_fontram_r );
+
+WRITE8_HANDLER ( cgenie_colorram_w );
+WRITE8_HANDLER ( cgenie_fontram_w );
+
+WRITE8_HANDLER ( cgenie_port_ff_w );
+ READ8_HANDLER ( cgenie_port_ff_r );
+int cgenie_port_xx_r(int offset);
+
+INTERRUPT_GEN( cgenie_timer_interrupt );
+INTERRUPT_GEN( cgenie_frame_interrupt );
+
+ READ8_HANDLER ( cgenie_status_r );
+ READ8_HANDLER ( cgenie_track_r );
+ READ8_HANDLER ( cgenie_sector_r );
+ READ8_HANDLER ( cgenie_data_r );
+
+WRITE8_HANDLER ( cgenie_command_w );
+WRITE8_HANDLER ( cgenie_track_w );
+WRITE8_HANDLER ( cgenie_sector_w );
+WRITE8_HANDLER ( cgenie_data_w );
+
+ READ8_HANDLER ( cgenie_irq_status_r );
+
+WRITE8_HANDLER ( cgenie_motor_w );
+
+ READ8_HANDLER ( cgenie_keyboard_r );
+int cgenie_videoram_r(running_machine &machine,int offset);
+WRITE8_HANDLER ( cgenie_videoram_w );
+
+
+/*----------- defined in video/cgenie.c -----------*/
+
+VIDEO_START( cgenie );
+SCREEN_UPDATE_IND16( cgenie );
+
+READ8_HANDLER ( cgenie_index_r );
+READ8_HANDLER ( cgenie_register_r );
+
+WRITE8_HANDLER ( cgenie_index_w );
+WRITE8_HANDLER ( cgenie_register_w );
+
+int cgenie_get_register(running_machine &machine, int indx);
+void cgenie_mode_select(running_machine &machine, int graphics);
+
+
+#endif /* CGENIE_H_ */