trunk/src/mess/includes/x07.h
| r29238 | r29239 | |
| 9 | 9 | #include "emu.h" |
| 10 | 10 | #include "cpu/z80/z80.h" |
| 11 | 11 | #include "sound/beep.h" |
| 12 | #include "machine/nvram.h" |
| 12 | 13 | #include "machine/ram.h" |
| 13 | 14 | #include "sound/wave.h" |
| 14 | 15 | #include "imagedev/cartslot.h" |
| r29238 | r29239 | |
| 164 | 165 | m_printer(*this, "printer"), |
| 165 | 166 | m_beep(*this, "beeper"), |
| 166 | 167 | m_ram(*this, RAM_TAG), |
| 167 | | m_cassette(*this, "cassette") |
| 168 | m_nvram1(*this, "nvram1"), |
| 169 | m_nvram2(*this, "nvram2"), |
| 170 | m_cassette(*this, "cassette"), |
| 171 | m_warm_start(1) |
| 168 | 172 | { } |
| 169 | 173 | |
| 170 | 174 | required_device<cpu_device> m_maincpu; |
| 171 | 175 | required_device<printer_image_device> m_printer; |
| 172 | 176 | required_device<beep_device> m_beep; |
| 173 | 177 | required_device<ram_device> m_ram; |
| 178 | required_device<nvram_device> m_nvram1; |
| 179 | required_device<nvram_device> m_nvram2; |
| 174 | 180 | required_device<cassette_image_device> m_cassette; |
| 175 | 181 | |
| 176 | 182 | void machine_start(); |
| r29238 | r29239 | |
| 184 | 190 | DECLARE_INPUT_CHANGED_MEMBER( kb_break ); |
| 185 | 191 | DECLARE_INPUT_CHANGED_MEMBER( kb_update_udk ); |
| 186 | 192 | |
| 193 | DECLARE_DRIVER_INIT(x07); |
| 194 | void nvram_init(nvram_device &nvram, void *data, size_t size); |
| 195 | |
| 187 | 196 | void t6834_cmd(UINT8 cmd); |
| 188 | 197 | void t6834_r(); |
| 189 | 198 | void t6834_w(); |
trunk/src/mess/drivers/x07.c
| r29238 | r29239 | |
| 28 | 28 | |
| 29 | 29 | ****************************************************************************/ |
| 30 | 30 | |
| 31 | | |
| 32 | 31 | #include "includes/x07.h" |
| 33 | | #include "mcfglgcy.h" |
| 34 | 32 | |
| 35 | 33 | /*************************************************************************** |
| 36 | 34 | T6834 IMPLEMENTATION |
| r29238 | r29239 | |
| 1324 | 1322 | INPUT_PORTS_END |
| 1325 | 1323 | |
| 1326 | 1324 | |
| 1327 | | static NVRAM_HANDLER( x07 ) |
| 1325 | void x07_state::nvram_init(nvram_device &nvram, void *data, size_t size) |
| 1328 | 1326 | { |
| 1329 | | x07_state *state = machine.driver_data<x07_state>(); |
| 1330 | | |
| 1331 | | if (read_or_write) |
| 1332 | | { |
| 1333 | | file->write(state->m_t6834_ram, sizeof(state->m_t6834_ram)); |
| 1334 | | file->write(state->m_ram->pointer(), state->m_ram->size()); |
| 1335 | | } |
| 1336 | | else |
| 1337 | | { |
| 1338 | | if (file) |
| 1339 | | { |
| 1340 | | file->read(state->m_t6834_ram, sizeof(state->m_t6834_ram)); |
| 1341 | | file->read(state->m_ram->pointer(), state->m_ram->size()); |
| 1342 | | state->m_warm_start = 1; |
| 1343 | | } |
| 1344 | | else |
| 1345 | | { |
| 1346 | | memset(state->m_t6834_ram, 0, sizeof(state->m_t6834_ram)); |
| 1347 | | memset(state->m_ram->pointer(), 0, state->m_ram->size()); |
| 1348 | | |
| 1349 | | for(int i = 0; i < 12; i++) |
| 1350 | | strcpy((char*)state->m_t6834_ram + udk_offset[i], udk_ini[i]); |
| 1351 | | |
| 1352 | | //copy default chars in the UDC |
| 1353 | | memcpy(state->m_t6834_ram + 0x200, (UINT8*)machine.root_device().memregion("gfx1")->base() + 0x400, 0x100); |
| 1354 | | memcpy(state->m_t6834_ram + 0x300, (UINT8*)machine.root_device().memregion("gfx1")->base() + 0x700, 0x100); |
| 1355 | | state->m_warm_start = 0; |
| 1356 | | } |
| 1357 | | } |
| 1327 | memcpy(data, memregion("default")->base(), size); |
| 1328 | m_warm_start = 0; |
| 1358 | 1329 | } |
| 1359 | 1330 | |
| 1360 | 1331 | TIMER_DEVICE_CALLBACK_MEMBER(x07_state::blink_timer) |
| r29238 | r29239 | |
| 1403 | 1374 | m_cass_poll = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(x07_state::cassette_poll),this)); |
| 1404 | 1375 | m_cass_tick = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(x07_state::cassette_tick),this)); |
| 1405 | 1376 | |
| 1377 | m_nvram1->set_base(&m_t6834_ram, 0x800); |
| 1378 | m_nvram2->set_base(m_ram->pointer(), m_ram->size()); |
| 1379 | |
| 1406 | 1380 | /* Save State */ |
| 1407 | 1381 | save_item(NAME(m_sleep)); |
| 1408 | 1382 | save_item(NAME(m_warm_start)); |
| r29238 | r29239 | |
| 1525 | 1499 | |
| 1526 | 1500 | MCFG_TIMER_DRIVER_ADD_PERIODIC("blink_timer", x07_state, blink_timer, attotime::from_msec(300)) |
| 1527 | 1501 | |
| 1528 | | MCFG_NVRAM_HANDLER( x07 ) |
| 1502 | MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram1", x07_state, nvram_init) // t6834 RAM |
| 1503 | MCFG_NVRAM_ADD_0FILL("nvram2") // RAM banks |
| 1529 | 1504 | |
| 1530 | 1505 | /* internal ram */ |
| 1531 | 1506 | MCFG_RAM_ADD(RAM_TAG) |
| r29238 | r29239 | |
| 1561 | 1536 | |
| 1562 | 1537 | ROM_REGION( 0x0800, "gfx1", 0 ) |
| 1563 | 1538 | ROM_LOAD( "charset.rom", 0x0000, 0x0800, BAD_DUMP CRC(b1e59a6e) SHA1(b0c06315a2d5c940a8f288fb6a3428d738696e69) ) |
| 1539 | |
| 1540 | ROM_REGION( 0x0800, "default", ROMREGION_ERASE00 ) |
| 1564 | 1541 | ROM_END |
| 1565 | 1542 | |
| 1543 | DRIVER_INIT_MEMBER(x07_state, x07) |
| 1544 | { |
| 1545 | UINT8 *RAM = memregion("default")->base(); |
| 1546 | UINT8 *GFX = memregion("gfx1")->base(); |
| 1547 | |
| 1548 | for (int i = 0; i < 12; i++) |
| 1549 | strcpy((char *)RAM + udk_offset[i], udk_ini[i]); |
| 1550 | |
| 1551 | //copy default chars in the UDC |
| 1552 | memcpy(RAM + 0x200, GFX + 0x400, 0x100); |
| 1553 | memcpy(RAM + 0x300, GFX + 0x700, 0x100); |
| 1554 | } |
| 1555 | |
| 1556 | |
| 1566 | 1557 | /* Driver */ |
| 1567 | 1558 | |
| 1568 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 1569 | | COMP( 1983, x07, 0, 0, x07, x07, driver_device, 0, "Canon", "X-07", GAME_SUPPORTS_SAVE) |
| 1559 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 1560 | COMP( 1983, x07, 0, 0, x07, x07, x07_state, x07, "Canon", "X-07", GAME_SUPPORTS_SAVE) |