(MESS) Changes in devcb2 usage. (nw)

This commit is contained in:
Michael Zapf 2014-03-14 12:44:23 +00:00
parent edd1b11b4d
commit a72e0f1822
7 changed files with 71 additions and 50 deletions

View File

@ -229,7 +229,8 @@ static MACHINE_CONFIG_START( ti990_10, ti990_10_state )
MCFG_SCREEN_UPDATE_DRIVER(ti990_10_state, screen_update_ti990_10)
MCFG_SCREEN_PALETTE("vdt911:palette")
MCFG_VDT911_VIDEO_ADD("vdt911", WRITELINE(ti990_10_state, vdt_interrupt), char_1920, vdt911_model_US)
MCFG_DEVICE_ADD("vdt911", VDT911, 0)
MCFG_VDT911_INT_HANDLER(WRITELINE(ti990_10_state, vdt_interrupt))
/* 911 VDT has a beep tone generator */
MCFG_SPEAKER_STANDARD_MONO("mono")
@ -238,7 +239,9 @@ static MACHINE_CONFIG_START( ti990_10, ti990_10_state )
MCFG_FRAGMENT_ADD( ti990_hdc )
MCFG_TI990_TAPE_CTRL_ADD("tpc", WRITELINE(ti990_10_state, tape_interrupt))
// Tape controller
MCFG_DEVICE_ADD("tpc", TI990_TAPE_CTRL, 0)
MCFG_TI990_TAPE_INT_HANDLER(WRITELINE(ti990_10_state, tape_interrupt))
MACHINE_CONFIG_END

View File

@ -384,10 +384,15 @@ static MACHINE_CONFIG_START( ti990_4, ti990_4_state )
MCFG_SCREEN_SIZE(640, 480)
MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
MCFG_SCREEN_PALETTE("asr733:palette")
MCFG_ASR733_VIDEO_ADD("asr733", WRITELINE(ti990_4_state, asr_interrupt))
// Terminal
MCFG_DEVICE_ADD("asr733", ASR733, 0)
MCFG_ASR733_INT_HANDLER(WRITELINE(ti990_4_state, asr_interrupt))
// Floppy controller
MCFG_FD800_ADD("fd800", WRITELINE(ti990_4_state, fd_interrupt))
MCFG_DEVICE_ADD("fd800", FD800, 0)
MCFG_FD800_INT_HANDLER(WRITELINE(ti990_4_state, fd_interrupt))
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface)
MACHINE_CONFIG_END
@ -407,13 +412,19 @@ static MACHINE_CONFIG_START( ti990_4v, ti990_4_state )
MCFG_SCREEN_SIZE(560, 280)
MCFG_SCREEN_VISIBLE_AREA(0, 560-1, 0, /*250*/280-1)
MCFG_SCREEN_PALETTE("vdt911:palette")
MCFG_VDT911_VIDEO_ADD("vdt911", WRITELINE(ti990_4_state, vdt_interrupt), char_1920, vdt911_model_US)
// Terminal
MCFG_DEVICE_ADD("vdt911", VDT911, 0)
MCFG_VDT911_INT_HANDLER(WRITELINE(ti990_4_state, vdt_interrupt))
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD("beeper", BEEP, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
// Floppy controller
MCFG_FD800_ADD("fd800", WRITELINE(ti990_4_state, fd_interrupt))
MCFG_DEVICE_ADD("fd800", FD800, 0)
MCFG_FD800_INT_HANDLER(WRITELINE(ti990_4_state, fd_interrupt))
MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(ti990_4_floppy_interface)
MACHINE_CONFIG_END

View File

@ -66,8 +66,7 @@ private:
LEGACY_FLOPPY_OPTIONS_EXTERN(fd800);
#define MCFG_FD800_ADD(_tag, _intcallb) \
MCFG_DEVICE_ADD(_tag, FD800, 0) \
#define MCFG_FD800_INT_HANDLER( _intcallb ) \
devcb = &fd800_legacy_device::static_set_int_callback( *device, DEVCB2_##_intcallb );
#endif

View File

@ -57,6 +57,5 @@ private:
tape_unit_t m_tape[MAX_TAPE_UNIT];
};
#define MCFG_TI990_TAPE_CTRL_ADD(_tag, _intcallb) \
MCFG_DEVICE_ADD((_tag), TI990_TAPE_CTRL, 0)\
#define MCFG_TI990_TAPE_INT_HANDLER( _intcallb ) \
devcb = &tap_990_device::static_set_int_callback( *device, DEVCB2_##_intcallb );

View File

@ -69,11 +69,9 @@ private:
extern const device_type ASR733;
#define MCFG_ASR733_VIDEO_ADD(_tag, _intcallb) \
MCFG_DEVICE_ADD(_tag, ASR733, 0) \
#define MCFG_ASR733_INT_HANDLER( _intcallb ) \
devcb = &asr733_device::static_set_int_callback( *device, DEVCB2_##_intcallb );
#define ASR733_KEY_PORTS \
PORT_START("KEY0") /* keys 1-16 */ \
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) \

View File

@ -80,7 +80,7 @@ static const unsigned short vdt911_palette[] =
Macros for model features
*/
/* TRUE for japanese and arabic terminals, which use 8-bit charcodes and keyboard shift modes */
#define USES_8BIT_CHARCODES() ((m_model == vdt911_model_Japanese) /*|| (vdt->model == vdt911_model_Arabic)*/)
#define USES_8BIT_CHARCODES() ((m_model == vdt911_model_Japanese) /*|| (m_model == vdt911_model_Arabic)*/)
/* TRUE for keyboards which have this extra key (on the left of TAB/SKIP)
(Most localized keyboards have it) */
#define HAS_EXTRA_KEY_67() (! ((m_model == vdt911_model_US) || (m_model == vdt911_model_UK) || (m_model == vdt911_model_French)))
@ -232,6 +232,13 @@ void vdt911_device::device_start()
apply_char_overrides(sizeof(frenchWP_overrides)/sizeof(char_override_t), frenchWP_overrides, base);
}
void vdt911_device::device_reset()
{
m_model = (vdt911_model_t)ioport("LOCALE")->read();
m_screen_size = (vdt911_screen_size_t)ioport("SCREEN")->read();
}
/*
Time callbacks
*/
@ -639,6 +646,25 @@ void vdt911_device::keyboard()
}
}
INPUT_PORTS_START( vdt911 )
PORT_START( "LOCALE" )
PORT_CONFNAME( 0x0f, 0x00, "Terminal language" )
PORT_CONFSETTING( vdt911_model_US, "English US" )
PORT_CONFSETTING( vdt911_model_UK, "English UK" )
PORT_CONFSETTING( vdt911_model_French, "French" )
PORT_CONFSETTING( vdt911_model_German, "German" )
PORT_CONFSETTING( vdt911_model_Swedish, "Swedish" )
PORT_CONFSETTING( vdt911_model_Norwegian, "Norwegian" )
PORT_CONFSETTING( vdt911_model_FrenchWP, "French Word Processing" )
PORT_CONFSETTING( vdt911_model_Japanese, "Japanese" )
// PORT_CONFSETTING( vdt911_model_Arabic, "Arabic" )
PORT_START( "SCREEN" )
PORT_CONFNAME( 0x01, char_960, "Terminal screen size" )
PORT_CONFSETTING( char_960, "960 chars (12 lines)")
PORT_CONFSETTING( char_1920, "1920 chars (24 lines)")
INPUT_PORTS_END
static MACHINE_CONFIG_FRAGMENT( vdt911 )
MCFG_PALETTE_ADD("palette", 8)
MCFG_PALETTE_INDIRECT_ENTRIES(3)
@ -656,3 +682,8 @@ machine_config_constructor vdt911_device::device_mconfig_additions() const
{
return MACHINE_CONFIG_NAME( vdt911 );
}
ioport_constructor vdt911_device::device_input_ports() const
{
return INPUT_PORTS_NAME( vdt911 );
}

View File

@ -18,28 +18,20 @@ enum
vdt911_chr_region_len = vdt911_japanese_chr_offset+256*vdt911_single_char_len
};
enum vdt911_screen_size_t { char_960, char_1920 };
enum vdt911_screen_size_t { char_960 = 0, char_1920 };
enum vdt911_model_t
{
vdt911_model_US,
vdt911_model_US = 0,
vdt911_model_UK,
vdt911_model_French,
vdt911_model_German,
vdt911_model_Swedish, /* Swedish/Finnish */
vdt911_model_Norwegian, /* Norwegian/Danish */
vdt911_model_Japanese, /* Katakana Japanese */
/*vdt911_model_Arabic,*//* Arabic */
vdt911_model_FrenchWP /* French word processing */
vdt911_model_Swedish, // Swedish/Finnish
vdt911_model_Norwegian, // Norwegian/Danish
vdt911_model_FrenchWP, // French word processing
vdt911_model_Japanese // Katakana Japanese
/*vdt911_model_Arabic,*/ // Arabic
};
struct vdt911_init_params_t
{
vdt911_screen_size_t screen_size;
vdt911_model_t model;
void (*int_callback)(running_machine &machine, int state);
};
class vdt911_device : public device_t
{
public:
@ -54,19 +46,18 @@ public:
{
return downcast<vdt911_device &>(device).m_int_line.set_callback(object);
}
static void static_set_params(device_t &device, vdt911_screen_size_t size, vdt911_model_t model)
{
downcast<vdt911_device &>(device).m_screen_size = size;
downcast<vdt911_device &>(device).m_model = model;
}
void refresh(bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y);
void keyboard();
protected:
// device-level overrides
virtual void device_config_complete();
virtual void device_start();
virtual machine_config_constructor device_mconfig_additions() const;
void device_config_complete();
void device_start();
void device_reset();
machine_config_constructor device_mconfig_additions() const;
ioport_constructor device_input_ports() const;
void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
@ -111,19 +102,8 @@ private:
extern const device_type VDT911;
#define MCFG_VDT911_VIDEO_ADD(_tag, _intcallb, _size, _model) \
MCFG_DEVICE_ADD(_tag, VDT911, 0) \
devcb = &vdt911_device::static_set_int_callback( *device, DEVCB2_##_intcallb ); \
vdt911_device::static_set_params( *device, _size, _model);
DECLARE_READ8_DEVICE_HANDLER(vdt911_cru_r);
DECLARE_WRITE8_DEVICE_HANDLER(vdt911_cru_w);
void vdt911_refresh(device_t *device, bitmap_ind16 &bitmap, const rectangle &cliprect, int x, int y);
void vdt911_keyboard(device_t *device);
#define MCFG_VDT911_INT_HANDLER( _intcallb ) \
devcb = &vdt911_device::static_set_int_callback( *device, DEVCB2_##_intcallb );
#define VDT911_KEY_PORTS \
PORT_START("KEY0") /* keys 1-16 */ \