summaryrefslogblamecommitdiffstatshomepage
path: root/src/mess/includes/cbmb.h
blob: 7e7d80613717e59a6b87cc1e6f6a60e5d463b079 (plain) (tree)











































































































                                                                                    
/*****************************************************************************
 *
 * includes/cbmb.h
 *
 * Commodore B Series Computer
 *
 * peter.trauner@jk.uni-linz.ac.at
 *
 ****************************************************************************/

#ifndef CBMB_H_
#define CBMB_H_

#include "video/mc6845.h"
#include "machine/6526cia.h"
#include "machine/ieee488.h"
#include "imagedev/cartslot.h"

class cbmb_state : public driver_device
{
public:
	cbmb_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		  m_ieee(*this, IEEE488_TAG),
		m_basic(*this, "basic"),
		m_videoram(*this, "videoram"),
		m_kernal(*this, "kernal"),
		m_colorram(*this, "colorram"){ }

	required_device<ieee488_device> m_ieee;
	required_shared_ptr<UINT8> m_basic;
	required_shared_ptr<UINT8> m_videoram;
	required_shared_ptr<UINT8> m_kernal;
	optional_shared_ptr<UINT8> m_colorram;

	DECLARE_READ8_MEMBER( vic_lightpen_x_cb );
	DECLARE_READ8_MEMBER( vic_lightpen_y_cb );
	DECLARE_READ8_MEMBER( vic_lightpen_button_cb );
	DECLARE_READ8_MEMBER( vic_dma_read );
	DECLARE_READ8_MEMBER( vic_dma_read_color );
	DECLARE_READ8_MEMBER( vic_rdy_cb );

	/* keyboard lines */
	int m_cbmb_keyline_a;
	int m_cbmb_keyline_b;
	int m_cbmb_keyline_c;

	int m_p500;
	int m_cbm700;
	int m_cbm_ntsc;
	int m_keyline_a;
	int m_keyline_b;
	int m_keyline_c;
	UINT8 *m_chargen;
	int m_old_level;
	int m_irq_level;
	int m_font;
	DECLARE_WRITE8_MEMBER(cbmb_colorram_w);
	DECLARE_DRIVER_INIT(cbm600);
	DECLARE_DRIVER_INIT(p500);
	DECLARE_DRIVER_INIT(cbm600hu);
	DECLARE_DRIVER_INIT(cbm600pal);
	DECLARE_DRIVER_INIT(cbm700);
};

/*----------- defined in machine/cbmb.c -----------*/

extern const mos6526_interface cbmb_cia;


READ8_DEVICE_HANDLER( cbmb_tpi0_port_a_r );
WRITE8_DEVICE_HANDLER( cbmb_tpi0_port_a_w );
READ8_DEVICE_HANDLER( cbmb_tpi0_port_b_r );
WRITE8_DEVICE_HANDLER( cbmb_tpi0_port_b_w );

WRITE8_DEVICE_HANDLER( cbmb_keyboard_line_select_a );
WRITE8_DEVICE_HANDLER( cbmb_keyboard_line_select_b );
WRITE8_DEVICE_HANDLER( cbmb_keyboard_line_select_c );
READ8_DEVICE_HANDLER( cbmb_keyboard_line_a );
READ8_DEVICE_HANDLER( cbmb_keyboard_line_b );
READ8_DEVICE_HANDLER( cbmb_keyboard_line_c );
WRITE_LINE_DEVICE_HANDLER( cbmb_irq );

int cbmb_dma_read(running_machine &machine, int offset);
int cbmb_dma_read_color(running_machine &machine, int offset);

WRITE_LINE_DEVICE_HANDLER( cbmb_change_font );

MACHINE_RESET( cbmb );

MACHINE_CONFIG_EXTERN( cbmb_cartslot );


/*----------- defined in video/cbmb.c -----------*/

VIDEO_START( cbmb_crtc );
MC6845_UPDATE_ROW( cbm600_update_row );
MC6845_UPDATE_ROW( cbm700_update_row );
WRITE_LINE_DEVICE_HANDLER( cbmb_display_enable_changed );

void cbm600_vh_init(running_machine &machine);
void cbm700_vh_init(running_machine &machine);
VIDEO_START( cbm700 );

void cbmb_vh_set_font(running_machine &machine, int font);


#endif /* CBMB_H_ */