From 0d471190d72b3a49a2c573efdc72d91b7267ad3b Mon Sep 17 00:00:00 2001 From: Nigel Barnes Date: Mon, 17 Apr 2017 16:35:19 +0100 Subject: dragon32: Corrected release year and company of Spanish clones - Added joysticks to all machines - Added floppy sounds dragon200e: Added chargen ROM, not working (possibly mc6847 issue) - Demoted to MACHINE_NOT_WORKING d64plus: Added crtc with chargen ROM and second screen output, not yet hooked up - Demoted to MACHINE_NOT_WORKING dgnalpha: Added older Boot v0.4 ROM - Replaced 5.25" floppy drives with 3.5", and added sounds --- src/devices/bus/coco/coco_fdc.cpp | 8 ++- src/devices/bus/coco/dragon_fdc.cpp | 8 ++- src/mame/drivers/coco12.cpp | 5 +- src/mame/drivers/dragon.cpp | 132 ++++++++++++++++++++++++++---------- src/mame/includes/coco.h | 1 + src/mame/includes/dragon.h | 40 ++++++++++- 6 files changed, 150 insertions(+), 44 deletions(-) diff --git a/src/devices/bus/coco/coco_fdc.cpp b/src/devices/bus/coco/coco_fdc.cpp index 1af110cacb2..6cb6d6df646 100644 --- a/src/devices/bus/coco/coco_fdc.cpp +++ b/src/devices/bus/coco/coco_fdc.cpp @@ -126,9 +126,13 @@ static MACHINE_CONFIG_FRAGMENT(coco_fdc) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(coco_fdc_device_base, fdc_drq_w)) MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":0", coco_fdc_floppies, "qd", coco_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":1", coco_fdc_floppies, "qd", coco_fdc_device_base::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":2", coco_fdc_floppies, "qd", coco_fdc_device_base::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":3", coco_fdc_floppies, "qd", coco_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":2", coco_fdc_floppies, nullptr, coco_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD_TAG ":3", coco_fdc_floppies, nullptr, coco_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_DEVICE_ADD(DISTO_TAG, MSM6242, XTAL_32_768kHz) MCFG_DS1315_ADD(CLOUD9_TAG) diff --git a/src/devices/bus/coco/dragon_fdc.cpp b/src/devices/bus/coco/dragon_fdc.cpp index b3b4c272e4e..f6b161ba1f5 100644 --- a/src/devices/bus/coco/dragon_fdc.cpp +++ b/src/devices/bus/coco/dragon_fdc.cpp @@ -11,7 +11,7 @@ which mostly uses the same command set with some subtle differences, most notably the 2797 handles disk side select internally. The Dragon Alpha also uses the WD2797, however as this is a built in interface and not an external - cartrige, it is dealt with in the main coco.cpp file. + cartridge, it is dealt with in the main coco.cpp file. The wd's variables are mapped to $FF48-$FF4B on the CoCo and on $FF40-$FF43 on the Dragon. In addition, there is another register @@ -127,9 +127,13 @@ static MACHINE_CONFIG_FRAGMENT(dragon_fdc) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dragon_fdc_device_base, fdc_drq_w)) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_fdc_device_base, "qd", dragon_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_fdc_device_base, "", dragon_fdc_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) MACHINE_CONFIG_END @@ -200,7 +204,7 @@ void dragon_fdc_device_base::dskreg_w(uint8_t data) { floppy_image_device *floppy = m_floppies[i]->get_device(); if (floppy) - floppy->mon_w((data && 0x04) && (i == (data & 0x03)) ? CLEAR_LINE : ASSERT_LINE); + floppy->mon_w((data & 0x04) && (i == (data & 0x03)) ? CLEAR_LINE : ASSERT_LINE); } // manipulate the WD2797 diff --git a/src/mame/drivers/coco12.cpp b/src/mame/drivers/coco12.cpp index 10055494949..407e3323b60 100644 --- a/src/mame/drivers/coco12.cpp +++ b/src/mame/drivers/coco12.cpp @@ -96,7 +96,7 @@ INPUT_PORTS_END // INPUT_PORTS( coco_joystick ) //------------------------------------------------- -static INPUT_PORTS_START( coco_joystick ) +INPUT_PORTS_START( coco_joystick ) PORT_START(JOYSTICK_RX_TAG) PORT_BIT( 0xff, 0x80, IPT_AD_STICK_X) PORT_SENSITIVITY(JOYSTICK_SENSITIVITY) PORT_KEYDELTA(JOYSTICK_DELTA) PORT_MINMAX(0x00,0xFF) PORT_CODE_DEC(KEYCODE_4_PAD) PORT_CODE_INC(KEYCODE_6_PAD) PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(1) PORT_CONDITION(CTRL_SEL_TAG, 0x0f, EQUALS, 0x01) PORT_START(JOYSTICK_RY_TAG) @@ -359,7 +359,8 @@ static MACHINE_CONFIG_START( coco, coco12_state ) MCFG_RAM_EXTRA_OPTIONS("4K,16K,32K") // software lists - MCFG_SOFTWARE_LIST_ADD("cart_list","coco_cart") + MCFG_SOFTWARE_LIST_ADD("coco_cart_list", "coco_cart") + MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("dragon_cart_list", "dragon_cart") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( cocoe, coco ) diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index 9c267fe9201..5a6e14fa925 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -36,7 +36,6 @@ static ADDRESS_MAP_START( dragon_mem, AS_PROGRAM, 8, dragon_state ) ADDRESS_MAP_END - //************************************************************************** // INPUT PORTS //************************************************************************** @@ -52,7 +51,7 @@ ADDRESS_MAP_END PA1: 8 9 : ; , - . / PA0: 0 1 2 3 4 5 6 7 */ -static INPUT_PORTS_START( dragon32 ) +static INPUT_PORTS_START( dragon_keyboard ) PORT_START("row0") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') @@ -121,7 +120,18 @@ static INPUT_PORTS_START( dragon32 ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CHANGED_MEMBER(DEVICE_SELF, dragon_state, keyboard_changed, nullptr) PORT_NAME("SHIFT") PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) INPUT_PORTS_END -static SLOT_INTERFACE_START(dragon_cart) +static INPUT_PORTS_START( dragon ) + PORT_INCLUDE(dragon_keyboard) + PORT_INCLUDE(coco_joystick) + PORT_INCLUDE(coco_analog_control) +INPUT_PORTS_END + +MC6847_GET_CHARROM_MEMBER( dragon200e_state::char_rom_r ) +{ + return m_char_rom->base()[(ch * 12 + line) & 0xfff]; +} + +SLOT_INTERFACE_START( dragon_cart ) SLOT_INTERFACE("dragon_fdc", DRAGON_FDC) SLOT_INTERFACE("sdtandy_fdc", SDTANDY_FDC) SLOT_INTERFACE("pak", COCO_PAK) @@ -132,13 +142,8 @@ FLOPPY_FORMATS_MEMBER( dragon_alpha_state::dragon_formats ) FLOPPY_DMK_FORMAT FLOPPY_FORMATS_END -static SLOT_INTERFACE_START( dragon_floppies ) - SLOT_INTERFACE("sssd", FLOPPY_525_SSSD) - SLOT_INTERFACE("sd", FLOPPY_525_SD) - SLOT_INTERFACE("ssdd", FLOPPY_525_SSDD) - SLOT_INTERFACE("dd", FLOPPY_525_DD) - SLOT_INTERFACE("ssqd", FLOPPY_525_SSQD) - SLOT_INTERFACE("qd", FLOPPY_525_QD) +static SLOT_INTERFACE_START( dragon_alpha_floppies ) + SLOT_INTERFACE("dd", FLOPPY_35_DD) SLOT_INTERFACE_END static MACHINE_CONFIG_START( dragon_base, dragon_state ) @@ -170,6 +175,7 @@ static MACHINE_CONFIG_START( dragon_base, dragon_state ) MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_FORMATS(coco_cassette_formats) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) + MCFG_CASSETTE_INTERFACE("dragon_cass") MCFG_DEVICE_ADD(PRINTER_TAG, PRINTER, 0) @@ -183,6 +189,12 @@ static MACHINE_CONFIG_START( dragon_base, dragon_state ) // sound hardware MCFG_FRAGMENT_ADD( coco_sound ) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dragon_cart_list", "dragon_cart") + MCFG_SOFTWARE_LIST_ADD("dragon_cass_list", "dragon_cass") + MCFG_SOFTWARE_LIST_ADD("dragon_flop_list", "dragon_flop") + MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("coco_cart_list", "coco_cart") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dragon32, dragon_base ) @@ -212,22 +224,46 @@ static MACHINE_CONFIG_DERIVED_CLASS( dragon64, dragon_base, dragon64_state ) // acia MCFG_DEVICE_ADD("acia", MOS6551, 0) MCFG_MOS6551_XTAL(XTAL_1_8432MHz) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex") + MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED_CLASS( d64plus, dragon_base, dragon64_state ) +static MACHINE_CONFIG_DERIVED_CLASS( dragon200e, dragon64, dragon200e_state ) + // video hardware + MCFG_DEVICE_MODIFY(VDG_TAG) + MCFG_MC6847_CHARROM_CALLBACK(dragon200e_state, char_rom_r) +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED_CLASS( d64plus, dragon64, d64plus_state ) // internal ram - MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_MODIFY(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("128K") - // cartridge - MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, dragon_cart, "dragon_fdc") - MCFG_COCO_CARTRIDGE_CART_CB(WRITELINE(coco_state, cart_w)) - MCFG_COCO_CARTRIDGE_NMI_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_NMI)) - MCFG_COCO_CARTRIDGE_HALT_CB(INPUTLINE(MAINCPU_TAG, INPUT_LINE_HALT)) - - // acia - MCFG_DEVICE_ADD("acia", MOS6551, 0) - MCFG_MOS6551_XTAL(XTAL_1_8432MHz) + // video hardware + MCFG_SCREEN_ADD("plus_screen", RASTER) + MCFG_SCREEN_REFRESH_RATE(50) + MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ + MCFG_SCREEN_SIZE(640, 240) + MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 240-1) + MCFG_SCREEN_UPDATE_DEVICE("hd6845", hd6845_device, screen_update) + + // crtc + MCFG_MC6845_ADD("hd6845", HD6845, "plus_screen", 1000000) + MCFG_MC6845_SHOW_BORDER_AREA(false) + MCFG_MC6845_CHAR_WIDTH(8) + + // TODO: + // $FFE0 6845 control register + // $FFE1 6845 data register + // $FFE2 memory bank register - swaps lower memory banks between the standard dragon memory and the + // three additional memory banks (A, B, C): + // 0x00 standard Dragon 32 bank + // 0x01 Bank C - 2k RAM (videoram) + // 0x02 Bank A - 32k RAM (ram offset 0x10000) + // 0x06 Bank B - 32k RAM (ram offset 0x18000) + // MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) @@ -250,10 +286,14 @@ static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(dragon_alpha_state, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(dragon_alpha_state, fdc_drq_w)) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) - MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_floppies, "qd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":0", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":1", dragon_alpha_floppies, "dd", dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":2", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) + MCFG_FLOPPY_DRIVE_ADD(WD2797_TAG ":3", dragon_alpha_floppies, nullptr, dragon_alpha_state::dragon_formats) + MCFG_FLOPPY_DRIVE_SOUND(true) // sound hardware MCFG_SOUND_ADD(AY8912_TAG, AY8912, 1000000) @@ -266,9 +306,18 @@ static MACHINE_CONFIG_DERIVED_CLASS( dgnalpha, dragon_base, dragon_alpha_state ) MCFG_PIA_WRITEPA_HANDLER(WRITE8(dragon_alpha_state, pia2_pa_w)) MCFG_PIA_IRQA_HANDLER(WRITELINE(dragon_alpha_state, pia2_firq_a)) MCFG_PIA_IRQB_HANDLER(WRITELINE(dragon_alpha_state, pia2_firq_b)) + + // software lists + MCFG_SOFTWARE_LIST_ADD("dgnalpha_flop_list", "dgnalpha_flop") + MCFG_SOFTWARE_LIST_ADD("dragon_flex_list", "dragon_flex") + MCFG_SOFTWARE_LIST_ADD("dragon_os9_list", "dragon_os9") MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( tanodr64, dragon64 ) + // video hardware + MCFG_SCREEN_MODIFY(SCREEN_TAG) + MCFG_SCREEN_REFRESH_RATE(60) + // cartridge MCFG_DEVICE_MODIFY(CARTRIDGE_TAG) MCFG_DEVICE_SLOT_INTERFACE(dragon_cart, "sdtandy_fdc", false) @@ -303,14 +352,19 @@ ROM_START(dragon200e) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "ic18_v1.4e.ic34", 0x0000, 0x4000, CRC(95af0a0a) SHA1(628543ee8b47a56df2b2175cfb763c0051517b90)) ROM_LOAD( "ic17_v1.4e.ic37", 0x8000, 0x4000, CRC(48b985df) SHA1(c25632f3c2cfd1af3ee26b2f233a1ce1eccc365d)) - ROM_REGION( 0x1000, "gfx", ROMREGION_ERASEFF ) + ROM_REGION( 0x1000, "chargen", 0 ) ROM_LOAD( "rom26.ic1", 0x0000, 0x1000, CRC(565724bc) SHA1(da5b756ba2a9c9ecebaa7daa8ba8bfd984d56a6f)) ROM_END ROM_START(d64plus) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("d64_1.rom", 0x0000, 0x4000, CRC(60a4634c) SHA1(f119506eaa3b4b70b9aa0dd83761e8cbe043d042)) - ROM_LOAD("d64_2.rom", 0x8000, 0x4000, CRC(17893a42) SHA1(e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e)) + ROM_LOAD("d64_1.rom", 0x0000, 0x4000, CRC(60a4634c) SHA1(f119506eaa3b4b70b9aa0dd83761e8cbe043d042)) + ROM_LOAD("d64_2.rom", 0x8000, 0x4000, CRC(17893a42) SHA1(e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e)) + ROM_REGION(0x0200, "prom", 0) + ROM_LOAD("n82s147an.ic12", 0x0000, 0x0200, CRC(92b6728d) SHA1(bcf7c60c4e5608a58587044458d9cacaca4568aa)) + ROM_REGION(0x2000, "chargen", 0) + ROM_LOAD("chargen.ic22", 0x0000, 0x2000, CRC(514f1450) SHA1(956c99fcca1b52e79bb5d91dbafc817c992e324a)) + ROM_REGION(0x0800, "videoram", ROMREGION_ERASE) ROM_END ROM_START(tanodr64) @@ -321,15 +375,19 @@ ROM_END ROM_START(dgnalpha) ROM_REGION(0x10000,"maincpu",0) - ROM_LOAD("alpha_bt.rom", 0x2000, 0x2000, CRC(c3dab585) SHA1(4a5851aa66eb426e9bb0bba196f1e02d48156068)) + ROM_DEFAULT_BIOS("boot10") + ROM_SYSTEM_BIOS(0, "boot10", "Boot v1.0") + ROMX_LOAD("alpha_bt_10.rom", 0x2000, 0x2000, CRC(c3dab585) SHA1(4a5851aa66eb426e9bb0bba196f1e02d48156068), ROM_BIOS(1)) + ROM_SYSTEM_BIOS(1, "boot04", "Boot v0.4") + ROMX_LOAD("alpha_bt_04.rom", 0x2000, 0x2000, CRC(d6172b56) SHA1(69ea376dbc7418f69e9e809b448d22a4de012344), ROM_BIOS(2)) ROM_LOAD("alpha_ba.rom", 0x8000, 0x4000, CRC(84f68bf9) SHA1(1983b4fb398e3dd9668d424c666c5a0b3f1e2b69)) ROM_END - -COMP( 1982, dragon32, coco, 0, dragon32, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 32", 0) -COMP( 1983, dragon64, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 64", 0) -COMP( 1983, dragon200, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 200", 0) -COMP( 1983, dragon200e, coco, 0, dragon64, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 200-E", 0) -COMP( 1983, d64plus, coco, 0, d64plus, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon 64 Plus", 0) -COMP( 1983, tanodr64, coco, 0, tanodr64, dragon32, driver_device, 0, "Dragon Data Ltd / Tano Ltd", "Tano Dragon 64 (NTSC)", 0) -COMP( 1984, dgnalpha, coco, 0, dgnalpha, dragon32, driver_device, 0, "Dragon Data Ltd", "Dragon Alpha Prototype", 0) +/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */ +COMP( 1982, dragon32, 0, 0, dragon32, dragon, driver_device, 0, "Dragon Data Ltd", "Dragon 32", 0 ) +COMP( 1983, dragon64, dragon32, 0, dragon64, dragon, driver_device, 0, "Dragon Data Ltd", "Dragon 64", 0 ) +COMP( 1985, dragon200, dragon32, 0, dragon64, dragon, driver_device, 0, "Eurohard S.A.", "Dragon 200", 0 ) +COMP( 1985, dragon200e, dragon32, 0, dragon200e, dragon, driver_device, 0, "Eurohard S.A.", "Dragon 200-E", MACHINE_NOT_WORKING ) +COMP( 1985, d64plus, dragon32, 0, d64plus, dragon, driver_device, 0, "Dragon Data Ltd / Compusense", "Dragon 64 Plus", MACHINE_NOT_WORKING ) +COMP( 1983, tanodr64, dragon32, 0, tanodr64, dragon, driver_device, 0, "Dragon Data Ltd / Tano Ltd", "Tano Dragon 64 (NTSC)", 0 ) +COMP( 1984, dgnalpha, dragon32, 0, dgnalpha, dragon, driver_device, 0, "Dragon Data Ltd", "Dragon Professional (Alpha)", 0 ) diff --git a/src/mame/includes/coco.h b/src/mame/includes/coco.h index 06920b09a10..17313f4db37 100644 --- a/src/mame/includes/coco.h +++ b/src/mame/includes/coco.h @@ -31,6 +31,7 @@ //************************************************************************** INPUT_PORTS_EXTERN( coco_analog_control ); +INPUT_PORTS_EXTERN( coco_joystick ); INPUT_PORTS_EXTERN( coco_rtc ); INPUT_PORTS_EXTERN( coco_beckerport ); diff --git a/src/mame/includes/dragon.h b/src/mame/includes/dragon.h index 450f09ffa57..524760616a6 100644 --- a/src/mame/includes/dragon.h +++ b/src/mame/includes/dragon.h @@ -17,7 +17,7 @@ #include "includes/coco12.h" #include "imagedev/printer.h" #include "machine/mos6551.h" - +#include "video/mc6845.h" //************************************************************************** @@ -69,4 +69,42 @@ protected: void page_rom(bool romswitch); }; + +/* dragon200e has a character generator */ +class dragon200e_state : public dragon64_state +{ +public: + dragon200e_state(const machine_config &mconfig, device_type type, const char *tag) + : dragon64_state(mconfig, type, tag), + m_char_rom(*this, "chargen") + { + } + + MC6847_GET_CHARROM_MEMBER(char_rom_r); + +private: + required_memory_region m_char_rom; +}; + + +/* d64plus has a HD6845 and character generator */ +class d64plus_state : public dragon64_state +{ +public: + d64plus_state(const machine_config &mconfig, device_type type, const char *tag) + : dragon64_state(mconfig, type, tag), + m_hd6845(*this, "hd6845"), + m_videoram(*this, "videoram"), + m_char_rom(*this, "chargen") + { + } + + MC6847_GET_CHARROM_MEMBER(char_rom_r); + +private: + required_device m_hd6845; + required_memory_region m_videoram; + required_memory_region m_char_rom; +}; + #endif /* __DRAGON__ */ -- cgit v1.2.3