src/mess/machine/isa_ide_cd.c
| r14727 | r14728 | |
| 127 | 127 | shift=8;
|
| 128 | 128 | break;
|
| 129 | 129 | }
|
| 130 | if (m_cur_drive==1) return 0x00;
|
| 130 | 131 | data = atapi_regs[reg];
|
| 131 | 132 | logerror("ATAPI: reg %d = %x (offset %x mask %x) [read]\n", reg, data, offset, mem_mask); |
| 132 | 133 | data <<= shift;
|
| r14727 | r14728 | |
| 270 | 271 | data >>= 8;
|
| 271 | 272 | break;
|
| 272 | 273 | }
|
| 273 | | |
| 274 | if (reg==6) m_cur_drive = (data & 0x10) >> 4;
|
| 275 | if (m_cur_drive==1) return;
|
| 274 | 276 | atapi_regs[reg] = data;
|
| 275 | 277 | logerror("ATAPI: reg %d = %x (offset %x mask %x)\n", reg, data, offset, mem_mask);
|
| 276 | 278 | |
| r14727 | r14728 | |
| 313 | 315 | atapi_data[ 47 ^ 1 ] = '.';
|
| 314 | 316 | atapi_data[ 48 ^ 1 ] = '0';
|
| 315 | 317 |
|
| 316 | |
|
| 317 | 318 | memset( &atapi_data[ 54 ], ' ', 40 );
|
| 318 | | atapi_data[ 54 ^ 1 ] = 'T';
|
| 319 | | atapi_data[ 55 ^ 1 ] = 'O';
|
| 320 | | atapi_data[ 56 ^ 1 ] = 'S';
|
| 321 | | atapi_data[ 57 ^ 1 ] = 'H';
|
| 322 | | atapi_data[ 58 ^ 1 ] = 'I';
|
| 323 | | atapi_data[ 59 ^ 1 ] = 'B';
|
| 324 | | atapi_data[ 60 ^ 1 ] = 'A';
|
| 325 | | atapi_data[ 61 ^ 1 ] = ' ';
|
| 326 | | atapi_data[ 62 ^ 1 ] = 'X';
|
| 327 | | atapi_data[ 63 ^ 1 ] = 'M';
|
| 328 | | atapi_data[ 64 ^ 1 ] = '-';
|
| 329 | | atapi_data[ 65 ^ 1 ] = '3';
|
| 330 | | atapi_data[ 66 ^ 1 ] = '3';
|
| 331 | | atapi_data[ 67 ^ 1 ] = '0';
|
| 332 | | atapi_data[ 68 ^ 1 ] = '1';
|
| 333 | | atapi_data[ 69 ^ 1 ] = ' ';
|
| 319 | atapi_data[ 54 ^ 1 ] = 'M';
|
| 320 | atapi_data[ 55 ^ 1 ] = 'A';
|
| 321 | atapi_data[ 56 ^ 1 ] = 'M';
|
| 322 | atapi_data[ 57 ^ 1 ] = 'E';
|
| 323 | atapi_data[ 58 ^ 1 ] = ' ';
|
| 324 | atapi_data[ 59 ^ 1 ] = 'C';
|
| 325 | atapi_data[ 60 ^ 1 ] = 'o';
|
| 326 | atapi_data[ 61 ^ 1 ] = 'm';
|
| 327 | atapi_data[ 62 ^ 1 ] = 'p';
|
| 328 | atapi_data[ 63 ^ 1 ] = 'r';
|
| 329 | atapi_data[ 64 ^ 1 ] = 'e';
|
| 330 | atapi_data[ 65 ^ 1 ] = 's';
|
| 331 | atapi_data[ 66 ^ 1 ] = 's';
|
| 332 | atapi_data[ 67 ^ 1 ] = 'e';
|
| 333 | atapi_data[ 68 ^ 1 ] = 'd';
|
| 334 | atapi_data[ 69 ^ 1 ] = ' ';
|
| 335 | atapi_data[ 70 ^ 1 ] = 'C';
|
| 336 | atapi_data[ 71 ^ 1 ] = 'D';
|
| 337 | atapi_data[ 72 ^ 1 ] = '-';
|
| 338 | atapi_data[ 73 ^ 1 ] = 'R';
|
| 339 | atapi_data[ 74 ^ 1 ] = 'O';
|
| 340 | atapi_data[ 75 ^ 1 ] = 'M';
|
| 334 | 341 | |
| 335 | 342 | atapi_data[ 98 ^ 1 ] = 0x06; // Word 49=Capabilities, IORDY may be disabled (bit_10), LBA Supported mandatory (bit_9)
|
| 336 | 343 | atapi_data[ 99 ^ 1 ] = 0x00;
|
| r14727 | r14728 | |
| 471 | 478 | m_isa->install16_device(0x0170, 0x0177, 0, 0, read16_delegate(FUNC(isa16_ide_cd_device::atapi_r), this), write16_delegate(FUNC(isa16_ide_cd_device::atapi_w), this)); |
| 472 | 479 | m_isa->install16_device(0x0370, 0x0377, 0, 0, read16_delegate(FUNC(isa16_ide_cd_device::atapi_status_r), this), write16_delegate(FUNC(isa16_ide_cd_device::atapi_cmd_w), this)); |
| 473 | 480 | }
|
| 481 | m_cur_drive = 0;
|
| 474 | 482 | }
|