src/mess/machine/egret.c
| r13612 | r13613 | |
| 56 | 56 | const device_type EGRET = &device_creator<egret_device>; |
| 57 | 57 | |
| 58 | 58 | ROM_START( egret ) |
| 59 | | ROM_REGION(0x1100, EGRET_CPU_TAG, 0) |
| 60 | | ROM_LOAD( "341s0851.bin", 0x0000, 0x1100, CRC(ea9ea6e4) SHA1(8b0dae3ec66cdddbf71567365d2c462688aeb571) ) |
| 59 | ROM_REGION(0x4400, EGRET_CPU_TAG, 0) |
| 60 | ROM_LOAD( "341s0851.bin", 0x1100, 0x1100, CRC(ea9ea6e4) SHA1(8b0dae3ec66cdddbf71567365d2c462688aeb571) ) |
| 61 | ROM_LOAD( "341s0850.bin", 0x2200, 0x1100, CRC(4906ecd0) SHA1(95e08ba0c5d4b242f115f104aba9905dbd3fd87c) ) |
| 62 | ROM_LOAD( "344s0100.bin", 0x3300, 0x1100, CRC(59e2b6b6) SHA1(540e752b7da521f1bdb16e0ad7c5f46ddc92d4e9) ) |
| 61 | 63 | ROM_END |
| 62 | 64 | |
| 63 | 65 | //------------------------------------------------- |
| r13612 | r13613 | |
| 339 | 341 | { |
| 340 | 342 | } |
| 341 | 343 | |
| 344 | //------------------------------------------------- |
| 345 | // static_set_type - configuration helper to set |
| 346 | // the chip type |
| 347 | //------------------------------------------------- |
| 342 | 348 | |
| 349 | void egret_device::static_set_type(device_t &device, int type) |
| 350 | { |
| 351 | egret_device &egret = downcast<egret_device &>(device); |
| 352 | egret.rom_offset = type; |
| 353 | } |
| 354 | |
| 343 | 355 | //------------------------------------------------- |
| 344 | 356 | // device_start - device-specific startup |
| 345 | 357 | //------------------------------------------------- |
| r13612 | r13613 | |
| 367 | 379 | save_item(NAME(pram_loaded)); |
| 368 | 380 | save_item(NAME(pram)); |
| 369 | 381 | save_item(NAME(disk_pram)); |
| 382 | |
| 383 | astring tempstring; |
| 384 | UINT8 *rom = device().machine().region(device().subtag(tempstring, EGRET_CPU_TAG))->base(); |
| 385 | |
| 386 | if (rom) |
| 387 | { |
| 388 | memcpy(rom, rom+rom_offset, 0x1100); |
| 389 | } |
| 370 | 390 | } |
| 371 | 391 | |
| 372 | 392 | |
src/mess/machine/egret.h
| r13612 | r13613 | |
| 13 | 13 | |
| 14 | 14 | #define EGRET_TAG "egret" |
| 15 | 15 | |
| 16 | #define EGRET_TYPE_101 0x1100 |
| 17 | #define EGRET_TYPE_101_EARLY 0x2200 |
| 18 | #define EGRET_TYPE_100 0x3300 |
| 16 | 19 | |
| 17 | | |
| 18 | 20 | //************************************************************************** |
| 19 | 21 | // INTERFACE CONFIGURATION MACROS |
| 20 | 22 | //************************************************************************** |
| 21 | 23 | |
| 22 | | #define MCFG_EGRET_ADD() \ |
| 23 | | MCFG_DEVICE_ADD(EGRET_TAG, EGRET, 0) |
| 24 | #define MCFG_EGRET_ADD(_type) \ |
| 25 | MCFG_DEVICE_ADD(EGRET_TAG, EGRET, 0) \ |
| 26 | MCFG_EGRET_TYPE(_type) |
| 24 | 27 | |
| 28 | #define MCFG_EGRET_REPLACE(_type) \ |
| 29 | MCFG_DEVICE_REPLACE(EGRET_TAG, EGRET, 0) \ |
| 30 | MCFG_EGRET_TYPE(_type) |
| 25 | 31 | |
| 32 | #define MCFG_EGRET_TYPE(_type) \ |
| 33 | egret_device::static_set_type(*device, _type); |
| 26 | 34 | |
| 27 | 35 | //************************************************************************** |
| 28 | 36 | // TYPE DEFINITIONS |
| r13612 | r13613 | |
| 34 | 42 | { |
| 35 | 43 | public: |
| 36 | 44 | // construction/destruction |
| 37 | | egret_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 45 | egret_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 38 | 46 | |
| 39 | | // device_config_nvram_interface overrides |
| 40 | | virtual void nvram_default(); |
| 41 | | virtual void nvram_read(emu_file &file); |
| 42 | | virtual void nvram_write(emu_file &file); |
| 47 | // inline configuration helpers |
| 48 | static void static_set_type(device_t &device, int type); |
| 43 | 49 | |
| 44 | | DECLARE_READ8_MEMBER( ddr_r ); |
| 45 | | DECLARE_WRITE8_MEMBER( ddr_w ); |
| 46 | | DECLARE_READ8_MEMBER( ports_r ); |
| 47 | | DECLARE_WRITE8_MEMBER( ports_w ); |
| 48 | | DECLARE_READ8_MEMBER( pll_r ); |
| 49 | | DECLARE_WRITE8_MEMBER( pll_w ); |
| 50 | | DECLARE_READ8_MEMBER( timer_ctrl_r ); |
| 51 | | DECLARE_WRITE8_MEMBER( timer_ctrl_w ); |
| 52 | | DECLARE_READ8_MEMBER( timer_counter_r ); |
| 53 | | DECLARE_WRITE8_MEMBER( timer_counter_w ); |
| 54 | | DECLARE_READ8_MEMBER( onesec_r ); |
| 55 | | DECLARE_WRITE8_MEMBER( onesec_w ); |
| 56 | | DECLARE_READ8_MEMBER( pram_r ); |
| 57 | | DECLARE_WRITE8_MEMBER( pram_w ); |
| 50 | // device_config_nvram_interface overrides |
| 51 | virtual void nvram_default(); |
| 52 | virtual void nvram_read(emu_file &file); |
| 53 | virtual void nvram_write(emu_file &file); |
| 58 | 54 | |
| 55 | DECLARE_READ8_MEMBER( ddr_r ); |
| 56 | DECLARE_WRITE8_MEMBER( ddr_w ); |
| 57 | DECLARE_READ8_MEMBER( ports_r ); |
| 58 | DECLARE_WRITE8_MEMBER( ports_w ); |
| 59 | DECLARE_READ8_MEMBER( pll_r ); |
| 60 | DECLARE_WRITE8_MEMBER( pll_w ); |
| 61 | DECLARE_READ8_MEMBER( timer_ctrl_r ); |
| 62 | DECLARE_WRITE8_MEMBER( timer_ctrl_w ); |
| 63 | DECLARE_READ8_MEMBER( timer_counter_r ); |
| 64 | DECLARE_WRITE8_MEMBER( timer_counter_w ); |
| 65 | DECLARE_READ8_MEMBER( onesec_r ); |
| 66 | DECLARE_WRITE8_MEMBER( onesec_w ); |
| 67 | DECLARE_READ8_MEMBER( pram_r ); |
| 68 | DECLARE_WRITE8_MEMBER( pram_w ); |
| 69 | |
| 59 | 70 | // interface routines |
| 60 | 71 | UINT8 get_xcvr_session() { return xcvr_session; } |
| 61 | 72 | void set_via_full(UINT8 val) { via_full = val; } |
| r13612 | r13613 | |
| 64 | 75 | void set_via_data(UINT8 dat) { via_data = dat; } |
| 65 | 76 | UINT8 get_via_clock() { return via_clock; } |
| 66 | 77 | |
| 78 | int rom_offset; |
| 79 | |
| 67 | 80 | protected: |
| 68 | 81 | // device-level overrides |
| 69 | 82 | virtual void device_start(); |
| r13612 | r13613 | |
| 72 | 85 | virtual machine_config_constructor device_mconfig_additions() const; |
| 73 | 86 | virtual const rom_entry *device_rom_region() const; |
| 74 | 87 | |
| 75 | | required_device<cpu_device> m_maincpu; |
| 88 | required_device<cpu_device> m_maincpu; |
| 76 | 89 | |
| 77 | | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| 90 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| 78 | 91 | |
| 79 | 92 | private: |
| 80 | | UINT8 ddrs[3]; |
| 81 | | UINT8 ports[3]; |
| 82 | | UINT8 pll_ctrl; |
| 83 | | UINT8 timer_ctrl; |
| 84 | | UINT8 timer_counter; |
| 85 | | UINT8 onesec; |
| 93 | UINT8 ddrs[3]; |
| 94 | UINT8 ports[3]; |
| 95 | UINT8 pll_ctrl; |
| 96 | UINT8 timer_ctrl; |
| 97 | UINT8 timer_counter; |
| 98 | UINT8 onesec; |
| 86 | 99 | UINT8 xcvr_session, via_full, sys_session, via_data, via_clock, last_adb; |
| 87 | 100 | UINT64 last_adb_time; |
| 88 | | bool egret_controls_power; |
| 89 | | bool adb_in; |
| 90 | | int reset_line; |
| 101 | bool egret_controls_power; |
| 102 | bool adb_in; |
| 103 | int reset_line; |
| 91 | 104 | emu_timer *m_timer; |
| 92 | 105 | UINT8 pram[0x100], disk_pram[0x100]; |
| 93 | 106 | bool pram_loaded; |
| 94 | 107 | |
| 95 | | void send_port(address_space &space, UINT8 offset, UINT8 data); |
| 108 | void send_port(address_space &space, UINT8 offset, UINT8 data); |
| 96 | 109 | }; |
| 97 | 110 | |
| 98 | 111 | // device type definition |
src/mess/drivers/mac.c
| r13612 | r13613 | |
| 1041 | 1041 | |
| 1042 | 1042 | /* devices */ |
| 1043 | 1043 | MCFG_NUBUS_BUS_ADD("nubus", "maincpu", nubus_intf) |
| 1044 | | MCFG_NUBUS_SLOT_ADD("nubus","nb9", mac_nubus_cards, "cb264", NULL) |
| 1044 | MCFG_NUBUS_SLOT_ADD("nubus","nb9", mac_nubus_cards, "48gc", NULL) |
| 1045 | 1045 | MCFG_NUBUS_SLOT_ADD("nubus","nba", mac_nubus_cards, NULL, NULL) |
| 1046 | 1046 | MCFG_NUBUS_SLOT_ADD("nubus","nbb", mac_nubus_cards, NULL, NULL) |
| 1047 | 1047 | MCFG_NUBUS_SLOT_ADD("nubus","nbc", mac_nubus_cards, NULL, NULL) |
| r13612 | r13613 | |
| 1158 | 1158 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1159 | 1159 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1160 | 1160 | |
| 1161 | | MCFG_EGRET_ADD() |
| 1161 | MCFG_EGRET_ADD(EGRET_TYPE_101_EARLY) |
| 1162 | 1162 | MCFG_QUANTUM_PERFECT_CPU("maincpu") |
| 1163 | 1163 | MACHINE_CONFIG_END |
| 1164 | 1164 | |
| r13612 | r13613 | |
| 1192 | 1192 | MCFG_ASC_REPLACE("asc", C15M, ASC_TYPE_SONORA, mac_asc_irq) |
| 1193 | 1193 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 1194 | 1194 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 1195 | |
| 1196 | MCFG_EGRET_REPLACE(EGRET_TYPE_101) |
| 1195 | 1197 | MACHINE_CONFIG_END |
| 1196 | 1198 | |
| 1197 | 1199 | static MACHINE_CONFIG_DERIVED( maciivx, maclc ) |
| r13612 | r13613 | |
| 1214 | 1216 | MCFG_RAM_MODIFY(RAM_TAG) |
| 1215 | 1217 | MCFG_RAM_DEFAULT_SIZE("4M") |
| 1216 | 1218 | MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M,20M,24M,28M,32M,36M,40M,44M,48M,52M,56M,60M,64M") |
| 1219 | |
| 1220 | MCFG_EGRET_REPLACE(EGRET_TYPE_101) |
| 1217 | 1221 | MACHINE_CONFIG_END |
| 1218 | 1222 | |
| 1219 | 1223 | static MACHINE_CONFIG_DERIVED( maciivi, maclc ) |
| r13612 | r13613 | |
| 1236 | 1240 | MCFG_RAM_MODIFY(RAM_TAG) |
| 1237 | 1241 | MCFG_RAM_DEFAULT_SIZE("4M") |
| 1238 | 1242 | MCFG_RAM_EXTRA_OPTIONS("8M,12M,16M,20M,24M,28M,32M,36M,40M,44M,48M,52M,56M,60M,64M") |
| 1243 | |
| 1244 | MCFG_EGRET_REPLACE(EGRET_TYPE_101) |
| 1239 | 1245 | MACHINE_CONFIG_END |
| 1240 | 1246 | |
| 1241 | 1247 | static MACHINE_CONFIG_DERIVED( maciix, macii ) |
| r13612 | r13613 | |
| 1486 | 1492 | MCFG_RAM_MODIFY(RAM_TAG) |
| 1487 | 1493 | MCFG_RAM_DEFAULT_SIZE("10M") |
| 1488 | 1494 | MCFG_RAM_EXTRA_OPTIONS("2M,4M,6M,8M,10M") |
| 1495 | |
| 1496 | MCFG_EGRET_REPLACE(EGRET_TYPE_101) |
| 1489 | 1497 | MACHINE_CONFIG_END |
| 1490 | 1498 | |
| 1491 | 1499 | static MACHINE_CONFIG_DERIVED( maciici, macii ) |
| r13612 | r13613 | |
| 1548 | 1556 | MCFG_RAM_MODIFY(RAM_TAG) |
| 1549 | 1557 | MCFG_RAM_DEFAULT_SIZE("2M") |
| 1550 | 1558 | MCFG_RAM_EXTRA_OPTIONS("4M,8M,16M,32M,48M,64M,128M") |
| 1551 | | MCFG_EGRET_ADD() |
| 1559 | MCFG_EGRET_ADD(EGRET_TYPE_100) |
| 1552 | 1560 | MCFG_QUANTUM_PERFECT_CPU("maincpu") |
| 1553 | 1561 | MACHINE_CONFIG_END |
| 1554 | 1562 | |