summaryrefslogblamecommitdiffstatshomepage
path: root/src/mess/includes/cgenie.h
blob: 60b94160ee1f69799671a4b629f0d4e9ea5b1d6a (plain) (tree)





































































































































                                                                                      
/*****************************************************************************
 *
 * 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_ */