From a72e0f182297f77f5352b8094aa3cd965326847d Mon Sep 17 00:00:00 2001 From: Michael Zapf Date: Fri, 14 Mar 2014 12:44:23 +0000 Subject: [PATCH] (MESS) Changes in devcb2 usage. (nw) --- src/mess/drivers/ti990_10.c | 7 +++-- src/mess/drivers/ti990_4.c | 19 +++++++++--- src/mess/machine/ti99/990_dk.h | 3 +- src/mess/machine/ti99/990_tap.h | 3 +- src/mess/video/733_asr.h | 4 +-- src/mess/video/911_vdt.c | 33 ++++++++++++++++++++- src/mess/video/911_vdt.h | 52 ++++++++++----------------------- 7 files changed, 71 insertions(+), 50 deletions(-) diff --git a/src/mess/drivers/ti990_10.c b/src/mess/drivers/ti990_10.c index 395f1edabd9..6a2f2e42acd 100644 --- a/src/mess/drivers/ti990_10.c +++ b/src/mess/drivers/ti990_10.c @@ -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 diff --git a/src/mess/drivers/ti990_4.c b/src/mess/drivers/ti990_4.c index a8a79c74b72..f0e8fd17667 100644 --- a/src/mess/drivers/ti990_4.c +++ b/src/mess/drivers/ti990_4.c @@ -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 diff --git a/src/mess/machine/ti99/990_dk.h b/src/mess/machine/ti99/990_dk.h index 731b3ba0287..12421295025 100644 --- a/src/mess/machine/ti99/990_dk.h +++ b/src/mess/machine/ti99/990_dk.h @@ -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 diff --git a/src/mess/machine/ti99/990_tap.h b/src/mess/machine/ti99/990_tap.h index 4dbe244f578..9986272e23a 100644 --- a/src/mess/machine/ti99/990_tap.h +++ b/src/mess/machine/ti99/990_tap.h @@ -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 ); diff --git a/src/mess/video/733_asr.h b/src/mess/video/733_asr.h index 7a97d0e0274..f526367f7bb 100644 --- a/src/mess/video/733_asr.h +++ b/src/mess/video/733_asr.h @@ -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) \ diff --git a/src/mess/video/911_vdt.c b/src/mess/video/911_vdt.c index f0c5a750053..dc0b324f9a6 100644 --- a/src/mess/video/911_vdt.c +++ b/src/mess/video/911_vdt.c @@ -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 ); +} diff --git a/src/mess/video/911_vdt.h b/src/mess/video/911_vdt.h index 568efc95148..787b92a5569 100644 --- a/src/mess/video/911_vdt.h +++ b/src/mess/video/911_vdt.h @@ -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(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(device).m_screen_size = size; - downcast(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 */ \