trunk/src/emu/bus/ti99_peb/hsgpl.c
| r29345 | r29346 | |
| 89 | 89 | 48 - 55 >9858 >9C58 |
| 90 | 90 | 56 - 63 >985C >9C5C |
| 91 | 91 | |
| 92 | | Note: Writing only works for areas set up as RAM. To write to the |
| 93 | | FEEPROMs, you must used the algorithm specified by their respective |
| 94 | | manufacturer. |
| 92 | Notes: |
| 93 | 1. The bank numbering of the modules is not exactly the GROM bank numbering. |
| 94 | The first 16 banks are numbered as expected, but bank 16 is DSR bank 0-7, |
| 95 | bank 23 is DSR bank 56-63, bank 24 is ROM6000 of module bank 0, bank 31 is |
| 96 | ROM6000 of module bank 25, and finally bank 32 and 33 and the GRAM banks, |
| 97 | and bank 48 and 49 are the RAM banks. |
| 98 | Only accesses to the GROM/GRAM addresses will change the module bank. |
| 95 | 99 | |
| 100 | 2. Writing only works for areas set up as RAM. To write to the |
| 101 | FEEPROMs, you must used the algorithm specified by their respective |
| 102 | manufacturer. |
| 103 | |
| 96 | 104 | CRDENA: This flag is used to turn on and off the HSGPL. It is used in |
| 97 | 105 | particular at start-up when the DSR detects a cartridge in the |
| 98 | 106 | cartridge slot. In that case the memory locations 6000-7fff must be |
| r29345 | r29346 | |
| 102 | 110 | active. |
| 103 | 111 | The technical specifications are not clear enough at this point. |
| 104 | 112 | |
| 105 | | FIXME: Re-flashing the at29040 chips is only possible when the DSR Flashrom |
| 106 | | U9 is deleted before. The file must be removed from the nvram directory. |
| 107 | | May also be a bug of the loader program DSRLDR3. |
| 108 | | (Detail: The DSRLDR program fails to flash part 3/8 of the flash rom.) |
| 109 | | |
| 110 | 113 | Raphael Nabet, 2003. |
| 111 | 114 | |
| 112 | 115 | Michael Zapf |
| r29345 | r29346 | |
| 120 | 123 | #define CRU_BASE 0x1B00 |
| 121 | 124 | #define SUPERCART_BASE 0x0800 |
| 122 | 125 | |
| 123 | | #define VERBOSE 1 |
| 124 | | #define LOG logerror |
| 126 | #define TRACE_PORT 0 |
| 127 | #define TRACE_DSR 0 |
| 128 | #define TRACE_BANKING 0 |
| 129 | #define TRACE_CRU 0 |
| 130 | #define TRACE_READ 0 |
| 131 | #define TRACE_WRITE 0 |
| 132 | #define TRACE_IGNORE 0 |
| 125 | 133 | |
| 126 | 134 | #define RAMSIZE 0x020000 |
| 127 | 135 | #define GRAMSIZE 0x020000 |
| r29345 | r29346 | |
| 154 | 162 | { |
| 155 | 163 | if (data != 0) |
| 156 | 164 | { |
| 157 | | if (VERBOSE>2) LOG("hsgpl: Supercart cru setting %04x\n", offset); |
| 165 | if (TRACE_CRU) logerror("%s: Supercart cru setting %04x\n", tag(), offset); |
| 158 | 166 | m_current_bank = (offset-0x0802)>>2; |
| 159 | 167 | } |
| 160 | 168 | return; |
| r29345 | r29346 | |
| 168 | 176 | { |
| 169 | 177 | case 0: |
| 170 | 178 | m_dsr_enabled = (data != 0); |
| 171 | | if (VERBOSE>5) LOG("hsgpl: Set dsr_enabled=%x\n", data); |
| 179 | if (TRACE_CRU) logerror("%s: Set dsr_enabled=%x\n", tag(), data); |
| 172 | 180 | break; |
| 173 | 181 | case 1: |
| 174 | 182 | m_gram_enabled = (data != 0); |
| 175 | | if (VERBOSE>5) LOG("hsgpl: Set gram_enabled=%x\n", data); |
| 183 | if (TRACE_CRU) logerror("%s: Set gram_enabled=%x\n", tag(), data); |
| 176 | 184 | break; |
| 177 | 185 | case 2: |
| 178 | | m_bank_enabled = (data != 0); |
| 179 | | if (VERBOSE>5) LOG("hsgpl: Set bank_enabled=%x\n", data); |
| 186 | m_bank_inhibit = (data != 0); |
| 187 | if (TRACE_CRU) logerror("%s: Set bank_inhibit=%x\n", tag(), data); |
| 180 | 188 | break; |
| 181 | 189 | case 3: |
| 182 | 190 | case 4: |
| r29345 | r29346 | |
| 188 | 196 | m_dsr_page |= (1 << (bit-3)); |
| 189 | 197 | else |
| 190 | 198 | m_dsr_page &= ~(1 << (bit-3)); |
| 191 | | if (VERBOSE>5) LOG("hsgpl: Set dsr_page=%d\n", m_dsr_page); |
| 199 | if (TRACE_CRU) logerror("%s: Set dsr_page=%d\n", tag(), m_dsr_page); |
| 192 | 200 | break; |
| 193 | 201 | case 9: |
| 194 | 202 | m_card_enabled = data; |
| 195 | | if (VERBOSE>5) LOG("hsgpl: Set card_enabled=%x\n", data); |
| 203 | if (TRACE_CRU) logerror("%s: Set card_enabled=%x\n", tag(), data); |
| 196 | 204 | break; |
| 197 | 205 | case 10: |
| 198 | 206 | m_write_enabled = data; |
| 199 | | if (VERBOSE>5) LOG("hsgpl: Set write_enabled=%x\n", data); |
| 207 | if (TRACE_CRU) logerror("%s: Set write_enabled=%x\n", tag(), data); |
| 200 | 208 | break; |
| 201 | 209 | case 11: |
| 202 | 210 | m_supercart_enabled = data; |
| 203 | 211 | // CHECK: Do we have to reset the bank? |
| 204 | | if (VERBOSE>5) LOG("hsgpl: Set supercart_enabled=%x\n", data); |
| 212 | if (TRACE_CRU) logerror("%s: Set supercart_enabled=%x\n", tag(), data); |
| 205 | 213 | break; |
| 206 | 214 | case 12: |
| 207 | 215 | m_led_on = data; |
| 208 | | if (VERBOSE>5) LOG("hsgpl: Set led_on=%x\n", data); |
| 216 | if (TRACE_CRU) logerror("%s: Set led_on=%x\n", tag(), data); |
| 209 | 217 | break; |
| 210 | 218 | case 13: |
| 211 | 219 | break; |
| 212 | 220 | case 14: |
| 213 | 221 | m_mbx_enabled = data; |
| 214 | | if (VERBOSE>5) LOG("hsgpl: Set mbx_enabled=%x\n", data); |
| 222 | if (TRACE_CRU) logerror("%s: Set mbx_enabled=%x\n", tag(), data); |
| 215 | 223 | break; |
| 216 | 224 | case 15: |
| 217 | 225 | m_ram_enabled = data; |
| 218 | | if (VERBOSE>5) LOG("hsgpl: Set ram_enabled=%x\n", data); |
| 226 | if (TRACE_CRU) logerror("%s: Set ram_enabled=%x\n", tag(), data); |
| 219 | 227 | break; |
| 220 | 228 | } |
| 221 | 229 | } |
| r29345 | r29346 | |
| 268 | 276 | if (m_dsr_enabled) |
| 269 | 277 | { |
| 270 | 278 | *value = m_dsr_eeprom->read(space, (offset & 0x1fff) | (m_dsr_page<<13), mem_mask); |
| 271 | | if (VERBOSE>7) LOG("hsgpl: read dsr %04x[%02x] -> %02x\n", offset, m_dsr_page, *value); |
| 279 | if (TRACE_READ) logerror("%s: read dsr %04x[%02x] -> %02x\n", tag(), offset, m_dsr_page, *value); |
| 272 | 280 | } |
| 273 | 281 | } |
| 274 | 282 | |
| r29345 | r29346 | |
| 279 | 287 | { |
| 280 | 288 | if (!m_card_enabled || m_flash_mode) |
| 281 | 289 | { |
| 282 | | if (VERBOSE>6) LOG("hsgpl cart read ignored (enable=%02x)\n", m_card_enabled); |
| 290 | if (TRACE_IGNORE) logerror("%s: cartridge space read ignored (enable=%d, flash_mode=%d)\n", tag(), m_card_enabled, m_flash_mode); |
| 283 | 291 | return; |
| 284 | 292 | } |
| 285 | 293 | |
| 286 | | if ((m_current_grom_port < 2) && (m_ram_enabled)) |
| 294 | if (m_module_bank < 16) |
| 287 | 295 | { |
| 288 | | *value = m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | (m_current_grom_port<<15)]; |
| 289 | | if (VERBOSE>7) LOG("hsgpl cart ram read %04x -> %02x\n", offset, *value); |
| 290 | | return; |
| 291 | | } |
| 292 | | |
| 293 | | if (m_current_grom_port < 16) |
| 294 | | { |
| 295 | 296 | *value = m_rom6_eeprom->read(space, (offset & 0x1fff) | (m_current_bank<<13) | (m_current_grom_port<<15), mem_mask); |
| 296 | | if (VERBOSE>7) LOG("hsgpl cart read %04x -> %02x\n", offset, *value); |
| 297 | if (TRACE_READ) logerror("%s: cartridge space read %04x -> %02x\n", tag(), offset, *value); |
| 297 | 298 | } |
| 298 | 299 | else |
| 299 | 300 | { |
| 300 | | if (m_current_grom_port==32 || m_current_grom_port==33) |
| 301 | if (m_module_bank==16 || m_module_bank==17) |
| 301 | 302 | { |
| 302 | | *value = m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | ((m_current_grom_port-32)<<15)]; |
| 303 | *value = m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | ((m_module_bank & 0x000f)<<15)]; |
| 303 | 304 | } |
| 304 | 305 | else |
| 305 | 306 | { |
| 306 | | if (VERBOSE>1) LOG("unknown 0x6000 port\n"); |
| 307 | logerror("%s: unknown 0x6000 port\n", tag()); |
| 307 | 308 | } |
| 308 | 309 | } |
| 309 | 310 | } |
| r29345 | r29346 | |
| 316 | 317 | */ |
| 317 | 318 | void snug_high_speed_gpl_device::grom_readz(address_space& space, offs_t offset, UINT8* value, UINT8 mem_mask) |
| 318 | 319 | { |
| 319 | | int port; |
| 320 | 320 | if (space.debugger_access()) return; |
| 321 | 321 | |
| 322 | 322 | //activedevice_adjust_icount(-4); |
| 323 | 323 | |
| 324 | 324 | // 1001 10bb bbbb bba0 |
| 325 | | port = m_current_grom_port = (offset & 0x3fc) >> 2; |
| 325 | int port = (offset & 0x3fc) >> 2; |
| 326 | 326 | |
| 327 | 327 | if (offset & 2) |
| 328 | 328 | { // Read GPL address. This must be available even when the rest |
| r29345 | r29346 | |
| 342 | 342 | } |
| 343 | 343 | else |
| 344 | 344 | { /* read GPL data */ |
| 345 | bool bNew = (port != m_current_grom_port); |
| 346 | m_current_grom_port = port; |
| 347 | |
| 345 | 348 | // It is not clear what effect a CRDENA=0 really has. |
| 346 | 349 | // At least GROMs 0-2 must remain visible, or the console will lock up. |
| 347 | 350 | if (m_card_enabled || m_grom_address < 0x6000) |
| r29345 | r29346 | |
| 349 | 352 | if ((port < 2) && (m_gram_enabled)) |
| 350 | 353 | { |
| 351 | 354 | *value = m_gram_memory[m_grom_address | (port<<16)]; |
| 355 | m_module_bank = port + 16; |
| 356 | if (TRACE_PORT) if (bNew) logerror("%s: GRAM read access at %04x (GRMENA=1) - switch to bank %d\n", tag(), offset & 0xffff, m_module_bank); |
| 352 | 357 | } |
| 353 | 358 | else |
| 354 | 359 | { |
| r29345 | r29346 | |
| 357 | 362 | if (!m_flash_mode) |
| 358 | 363 | { |
| 359 | 364 | *value = m_grom_a_eeprom->read(space, m_grom_address | (port<<16), mem_mask); |
| 365 | m_module_bank = port; |
| 366 | if (TRACE_PORT) if (bNew) logerror("%s: GROM read access at %04x - switch to bank %d\n", tag(), offset & 0xffff, m_module_bank); |
| 360 | 367 | } |
| 361 | 368 | } |
| 362 | 369 | else |
| r29345 | r29346 | |
| 364 | 371 | if (port < 16) |
| 365 | 372 | { |
| 366 | 373 | *value = m_grom_b_eeprom->read(space, m_grom_address | ((port-8)<<16), mem_mask); |
| 374 | m_module_bank = port; |
| 375 | if (TRACE_PORT) if (bNew) logerror("%s: GROM read access at %04x - switch to bank %d\n", tag(), offset & 0xffff, m_module_bank); |
| 367 | 376 | } |
| 368 | 377 | else |
| 369 | 378 | { |
| r29345 | r29346 | |
| 372 | 381 | // 9840-985c |
| 373 | 382 | // DSR banks 0-63 (8 KiB per bank, 8 banks per port) |
| 374 | 383 | *value = m_dsr_eeprom->read(space, m_grom_address | ((port-16)<<16), mem_mask); |
| 384 | // Don't change the module port |
| 385 | if (TRACE_DSR) if (bNew) logerror("%s: read access to DSR bank %d-%d (%04x)\n", tag(), (port-16)<<3, ((port-16)<<3)+7, offset); |
| 375 | 386 | } |
| 376 | 387 | else |
| 377 | 388 | { |
| r29345 | r29346 | |
| 381 | 392 | // Each ROM6 is available as 4 (sub)banks (switchable via 6000, 6002, 6004, 6006) |
| 382 | 393 | // Accordingly, each port has two complete sets |
| 383 | 394 | *value = m_rom6_eeprom->read(space, m_grom_address | ((port-24)<<16), mem_mask); |
| 395 | if (TRACE_PORT) if (bNew) logerror("%s: ROM6 read access for module bank %d-%d (%04x)\n", tag(), (port-24)<<1, ((port-24)<<1)+1, offset & 0xffff); |
| 384 | 396 | } |
| 385 | 397 | else |
| 386 | 398 | { |
| r29345 | r29346 | |
| 388 | 400 | if (port==32 || port==33) |
| 389 | 401 | { |
| 390 | 402 | *value = m_gram_memory[m_grom_address | ((port-32)<<16)]; |
| 403 | m_module_bank = port - 16; |
| 404 | if (TRACE_PORT) if (bNew) logerror("%s: GRAM read access at %04x - switch to bank %d\n", tag(), offset & 0xffff, m_module_bank); |
| 391 | 405 | } |
| 392 | 406 | else |
| 393 | 407 | { |
| r29345 | r29346 | |
| 395 | 409 | { |
| 396 | 410 | // *value = m_ram6_memory[m_grom_address]; |
| 397 | 411 | *value = m_ram6_memory[m_grom_address | ((port-48)<<16)]; |
| 412 | if (TRACE_PORT) if (bNew) logerror("%s: RAM read access at %04x\n", tag(), offset & 0xffff); |
| 398 | 413 | } |
| 399 | 414 | else |
| 400 | 415 | { |
| 401 | | if (VERBOSE>2) LOG("hsgpl: Attempt to read from undefined port 0x%0x; ignored.\n", port); |
| 416 | logerror("%s: Attempt to read from undefined port 0x%0x; ignored.\n", tag(), port); |
| 402 | 417 | } |
| 403 | 418 | } |
| 404 | 419 | } |
| r29345 | r29346 | |
| 421 | 436 | { |
| 422 | 437 | if (!m_card_enabled || m_flash_mode) |
| 423 | 438 | { |
| 424 | | if (VERBOSE>2) LOG("hsgpl cart write ignored: card_enabled=%02x\n", m_card_enabled); |
| 439 | if (TRACE_IGNORE) logerror("%s: write ignored: card_enabled=%d, flash_mode=%d\n", tag(), m_card_enabled, m_flash_mode); |
| 425 | 440 | return; |
| 426 | 441 | } |
| 427 | 442 | |
| 428 | | if (VERBOSE>7) LOG("hsgpl cart write %04x -> %02x\n", offset, data); |
| 443 | if (TRACE_WRITE) logerror("%s: cartridge space write %04x <- %02x\n", tag(), offset, data); |
| 429 | 444 | |
| 430 | | if (m_bank_enabled) |
| 445 | if (!m_bank_inhibit && (m_module_bank < 16)) |
| 431 | 446 | { |
| 432 | | m_current_bank = (offset>>1) & 3; |
| 433 | | if (VERBOSE>7) LOG("hsgpl cart select bank %02x\n", m_current_bank); |
| 447 | if ((offset & 1) == 0) |
| 448 | { |
| 449 | if ((offset & 0x9ff0)!=0) logerror("%s: unplausible ROM6 write: %04x <- %02x\n", tag(), offset, data); |
| 450 | m_current_bank = (offset>>1) & 3; |
| 451 | if (TRACE_BANKING) logerror("%s: select bank %d\n", tag(), m_current_bank); |
| 452 | } |
| 434 | 453 | return; /* right??? */ |
| 435 | 454 | } |
| 436 | 455 | |
| 437 | 456 | if ((m_mbx_enabled) && (offset==0x6ffe)) |
| 438 | 457 | { /* MBX: mapper at 0x6ffe */ |
| 439 | 458 | m_current_bank = data & 0x03; |
| 459 | if (TRACE_BANKING) logerror("%s: select bank MBX %d\n", tag(), m_current_bank); |
| 440 | 460 | return; |
| 441 | 461 | } |
| 442 | 462 | |
| r29345 | r29346 | |
| 445 | 465 | // not implemented |
| 446 | 466 | if ((m_write_enabled) || ((m_mbx_enabled) && ((offset & 0xfc00)==0x6c00))) |
| 447 | 467 | { |
| 448 | | if ((m_current_grom_port < 2) && (m_ram_enabled)) |
| 468 | if ((m_module_bank < 2) && (m_ram_enabled)) |
| 449 | 469 | { |
| 450 | | m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | (m_current_grom_port<<15) ] = data; |
| 470 | m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | (m_module_bank<<15) ] = data; |
| 451 | 471 | } |
| 452 | 472 | else |
| 453 | 473 | { // keep in mind that these lines are also reached for port < 2 |
| 454 | 474 | // and !ram_enabled |
| 455 | | if (m_current_grom_port < 16) |
| 475 | if (m_module_bank < 16) |
| 456 | 476 | { |
| 477 | logerror("%s: invalid write %04x <- %02x\n", tag(), offset, data); |
| 457 | 478 | // feeprom is normally written to using GPL ports, and I don't know |
| 458 | 479 | // writing through >6000 page is enabled |
| 459 | 480 | /* |
| r29345 | r29346 | |
| 463 | 484 | } |
| 464 | 485 | else |
| 465 | 486 | { |
| 466 | | if (m_current_grom_port==32 || m_current_grom_port==33) |
| 487 | if (m_module_bank==16 || m_module_bank==17) |
| 467 | 488 | { |
| 468 | | m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | ((m_current_grom_port-32)<<15)] = data; |
| 489 | m_ram6_memory[(offset & 0x1fff) | (m_current_bank<<13) | ((m_module_bank-16)<<15)] = data; |
| 469 | 490 | } |
| 470 | 491 | else |
| 471 | 492 | { |
| 472 | | if (VERBOSE>1) LOG("unknown 0x6000 port\n"); |
| 493 | logerror("%s: unknown 0x6000 port\n", tag()); |
| 473 | 494 | } |
| 474 | 495 | } |
| 475 | 496 | } |
| r29345 | r29346 | |
| 481 | 502 | */ |
| 482 | 503 | void snug_high_speed_gpl_device::grom_write(address_space& space, offs_t offset, UINT8 data, UINT8 mem_mask) |
| 483 | 504 | { |
| 484 | | int port; |
| 485 | 505 | if (space.debugger_access()) return; |
| 486 | 506 | |
| 487 | 507 | //activedevice_adjust_icount(-4); |
| 488 | 508 | |
| 489 | 509 | // 1001 11bb bbbb bba0 |
| 490 | | port = m_current_grom_port = (offset & 0x3fc) >> 2; |
| 510 | int port = (offset & 0x3fc) >> 2; |
| 491 | 511 | |
| 492 | 512 | if (offset & 2) |
| 493 | 513 | { // Write GPL address. This must be available even when the rest |
| r29345 | r29346 | |
| 507 | 527 | } |
| 508 | 528 | else |
| 509 | 529 | { |
| 530 | bool bNew = (port != m_current_grom_port); |
| 531 | m_current_grom_port = port; |
| 510 | 532 | // It is not clear what effect a CRDENA=0 really has. |
| 511 | 533 | // At least GROMs 0-2 must remain visible, or the console will lock up. |
| 512 | 534 | if (m_card_enabled || m_grom_address < 0x6000) |
| r29345 | r29346 | |
| 517 | 539 | if ((port < 2) && (m_gram_enabled)) |
| 518 | 540 | { |
| 519 | 541 | m_gram_memory[m_grom_address | (port<<16)] = data; |
| 542 | m_module_bank = port + 16; |
| 543 | if (TRACE_PORT) if (bNew) logerror("%s: GRAM write access at %04x (GRMENA=1) - switch to bank %d\n", tag(), offset & 0xffff, port); |
| 520 | 544 | } |
| 521 | 545 | else |
| 522 | 546 | { |
| 523 | 547 | if (port < 8) |
| 524 | 548 | { |
| 525 | 549 | m_grom_a_eeprom->write(space, m_grom_address | (port<<16), data, mem_mask); |
| 550 | m_module_bank = port; |
| 551 | if (TRACE_PORT) if (bNew) logerror("%s: GROM write access at %04x - switch to bank %d\n", tag(), offset & 0xffff, port); |
| 526 | 552 | } |
| 527 | 553 | else |
| 528 | 554 | { |
| 529 | 555 | if (port < 16) |
| 530 | 556 | { |
| 531 | 557 | m_grom_b_eeprom->write(space, m_grom_address | ((port-8)<<16), data, mem_mask); |
| 558 | m_module_bank = port; |
| 559 | if (TRACE_PORT) if (bNew) logerror("%s: GROM write access at %04x - switch to bank %d\n", tag(), offset & 0xffff, port); |
| 532 | 560 | } |
| 533 | 561 | else |
| 534 | 562 | { |
| 535 | 563 | if (port < 24) |
| 536 | 564 | { |
| 537 | 565 | m_dsr_eeprom->write(space, m_grom_address | ((port-16)<<16), data, mem_mask); |
| 566 | if (TRACE_DSR) if (bNew) logerror("%s: write access to DSR bank %d-%d (%04x)\n", tag(), (port-16)<<3, ((port-16)<<3)+7, offset); |
| 538 | 567 | } |
| 539 | 568 | else |
| 540 | 569 | { |
| 541 | 570 | if (port < 32) |
| 542 | 571 | { |
| 543 | 572 | m_rom6_eeprom->write(space, m_grom_address | ((port-24)<<16), data, mem_mask); |
| 573 | if (TRACE_PORT) if (bNew) logerror("%s: ROM6 write access for module bank %d-%d (%04x)\n", tag(), (port-24)<<1, ((port-24)<<1)+1,offset & 0xffff); |
| 544 | 574 | } |
| 545 | 575 | else |
| 546 | 576 | { |
| 547 | 577 | if (port==32 || port==33) |
| 548 | 578 | { |
| 549 | 579 | m_gram_memory[m_grom_address | ((port-32)<<16)] = data; |
| 580 | m_module_bank = port - 16; |
| 581 | if (TRACE_PORT) if (bNew) logerror("%s: GRAM write access at %04x - switch to bank %d\n", tag(), offset & 0xffff, m_module_bank); |
| 550 | 582 | } |
| 551 | 583 | else |
| 552 | 584 | { |
| r29345 | r29346 | |
| 554 | 586 | { |
| 555 | 587 | // m_ram6_memory[m_grom_address] = data; |
| 556 | 588 | m_ram6_memory[m_grom_address | ((port-48)<<16)] = data; |
| 589 | if (TRACE_PORT) if (bNew) logerror("%s: RAM write access at %04x\n", tag(), offset & 0xffff); |
| 557 | 590 | } |
| 558 | 591 | else |
| 559 | 592 | { |
| 560 | | if (VERBOSE>1) LOG("hsgpl: Attempt to write to undefined port; ignored.\n"); |
| 593 | logerror("%s: Attempt to write to undefined port; ignored.\n", tag()); |
| 561 | 594 | } |
| 562 | 595 | } |
| 563 | 596 | } |
| r29345 | r29346 | |
| 583 | 616 | |
| 584 | 617 | void snug_high_speed_gpl_device::device_reset() |
| 585 | 618 | { |
| 586 | | if (VERBOSE>5) LOG("hsgpl: reset\n"); |
| 619 | logerror("%s: reset\n", tag()); |
| 587 | 620 | m_dsr_enabled = false; |
| 588 | 621 | m_gram_enabled = false; |
| 589 | | m_bank_enabled = true; // important, assumed to be enabled by default (won't start up otherwise!) |
| 622 | m_bank_inhibit = false; |
| 590 | 623 | m_dsr_page = 0; |
| 591 | 624 | m_card_enabled = true; // important, assumed to be enabled by default |
| 592 | 625 | m_write_enabled = false; |
| r29345 | r29346 | |
| 602 | 635 | m_waddr_LSB = false; |
| 603 | 636 | m_raddr_LSB = false; |
| 604 | 637 | m_grom_address = 0; |
| 638 | m_module_bank = 0; |
| 605 | 639 | } |
| 606 | 640 | |
| 607 | 641 | void snug_high_speed_gpl_device::device_config_complete(void) |