Common Source Code Project for Qt (a.k.a for FM-7).
Révision | 57a14b08a2c24faa0a01ad1de0087b17bb7d91cc (tree) |
---|---|
l'heure | 2021-01-14 23:49:35 |
Auteur | K.Ohta <whatisthis.sowhat@gmai...> |
Commiter | K.Ohta |
[VM][FMTOWNS][CDROM] Adjust seek timing.
@@ -342,7 +342,7 @@ void TOWNS_CDROM::status_data_ready(bool forceint) | ||
342 | 342 | |
343 | 343 | void TOWNS_CDROM::status_illegal_lba(int extra, uint8_t s1, uint8_t s2, uint8_t s3) |
344 | 344 | { |
345 | - cdrom_debug_log(_T("Error on reading (ILLGLBLKADDR): EXTRA=%d s1=%02X s2=%02X s3=%02X LBA=%d POSITION=%d\n"), extra, s1, s2, s3, read_sector, position); | |
345 | + cdrom_debug_log(_T("Error on reading (ILLGLBLKADDR): EXTRA=%d s1=%02X s2=%02X s3=%02X LBA=%d\n"), extra, s1, s2, s3, read_sector); | |
346 | 346 | set_status(req_status, extra, TOWNS_CD_STATUS_CMD_ABEND, s1, s2, s3); |
347 | 347 | } |
348 | 348 |
@@ -756,7 +756,6 @@ void TOWNS_CDROM::read_cdrom() | ||
756 | 756 | param_queue[0], param_queue[1], param_queue[2], |
757 | 757 | param_queue[3], param_queue[4], param_queue[5], |
758 | 758 | pad1, dcmd); |
759 | - position = lba1 * ((is_iso) ? 2048 : physical_block_size()); | |
760 | 759 | __remain = (lba2 - lba1 + 1); |
761 | 760 | read_length = __remain * logical_block_size(); |
762 | 761 | read_length_bak = read_length; |
@@ -1336,17 +1335,11 @@ void TOWNS_CDROM::event_callback(int event_id, int err) | ||
1336 | 1335 | /// 20200926 K.O |
1337 | 1336 | stat = read_buffer(1); |
1338 | 1337 | if((stat)) { |
1339 | -#if 1 | |
1340 | 1338 | register_event(this, EVENT_CDROM_NEXT_SECTOR, |
1341 | 1339 | (1.0e6 / ((double)transfer_speed * 150.0e3)) * |
1342 | 1340 | ((double)(physical_block_size())) * |
1343 | - 1.0, // OK? | |
1341 | + 0.5, // OK? | |
1344 | 1342 | false, &event_next_sector); |
1345 | -#else | |
1346 | - register_event(this, EVENT_CDROM_NEXT_SECTOR, | |
1347 | - 5.0e3, // From TSUGARU | |
1348 | - false, &event_next_sector); | |
1349 | -#endif | |
1350 | 1343 | } |
1351 | 1344 | //register_event(this, EVENT_CDROM_TIMEOUT, 1000.0e3, false, &event_time_out); |
1352 | 1345 | } /*else { |
@@ -1366,7 +1359,9 @@ void TOWNS_CDROM::event_callback(int event_id, int err) | ||
1366 | 1359 | // ToDo: Prefetch |
1367 | 1360 | status_seek = true; |
1368 | 1361 | register_event(this, EVENT_CDROM_SEEK_COMPLETED, |
1369 | - 100.0, | |
1362 | + (1.0e6 / ((double)transfer_speed * 150.0e3)) * | |
1363 | + ((double)(physical_block_size())) * | |
1364 | + 0.5, // OK? | |
1370 | 1365 | false, |
1371 | 1366 | &event_seek_completed); |
1372 | 1367 | break; |
@@ -1421,7 +1416,6 @@ bool TOWNS_CDROM::read_mode1_iso(int sectors) | ||
1421 | 1416 | write_a_byte(value); |
1422 | 1417 | read_length--; |
1423 | 1418 | } |
1424 | - position += 2048; | |
1425 | 1419 | read_sector++; |
1426 | 1420 | sectors--; |
1427 | 1421 | access = true; |
@@ -1431,14 +1425,18 @@ bool TOWNS_CDROM::read_mode1_iso(int sectors) | ||
1431 | 1425 | |
1432 | 1426 | bool TOWNS_CDROM::read_mode1(int sectors) |
1433 | 1427 | { |
1428 | + if(!(seek_relative_frame_in_image(read_sector))) { | |
1429 | + status_illegal_lba(0, 0x00, 0x00, 0x00); | |
1430 | + return false; | |
1431 | + } | |
1434 | 1432 | while(sectors > 0) { |
1435 | 1433 | cd_data_mode1_t tmpbuf; |
1436 | 1434 | int tmp_length = sizeof(cd_data_mode1_t); |
1437 | 1435 | memset(&tmpbuf, 0x00, sizeof(tmpbuf)); |
1438 | - if(!(seek_relative_frame_in_image(read_sector))) { | |
1439 | - status_illegal_lba(0, 0x00, 0x00, 0x00); | |
1440 | - return false; | |
1441 | - } | |
1436 | +// if(!(seek_relative_frame_in_image(read_sector))) { | |
1437 | +// status_illegal_lba(0, 0x00, 0x00, 0x00); | |
1438 | +// return false; | |
1439 | +// } | |
1442 | 1440 | if(fio_img->Fread(&tmpbuf, tmp_length, 1) != 1) { |
1443 | 1441 | status_illegal_lba(0, 0x00, 0x00, 0x00); |
1444 | 1442 | return false; |
@@ -1468,7 +1466,6 @@ bool TOWNS_CDROM::read_mode1(int sectors) | ||
1468 | 1466 | write_a_byte(value); |
1469 | 1467 | read_length--; |
1470 | 1468 | } |
1471 | - position += physical_block_size(); | |
1472 | 1469 | read_sector++; |
1473 | 1470 | sectors--; |
1474 | 1471 | access = true; |
@@ -1515,7 +1512,6 @@ bool TOWNS_CDROM::read_mode2(int sectors) | ||
1515 | 1512 | write_a_byte(value); |
1516 | 1513 | read_length--; |
1517 | 1514 | } |
1518 | - position += physical_block_size(); | |
1519 | 1515 | read_sector++; |
1520 | 1516 | sectors--; |
1521 | 1517 | access = true; |
@@ -1553,7 +1549,6 @@ bool TOWNS_CDROM::read_raw(int sectors) | ||
1553 | 1549 | write_a_byte(value); |
1554 | 1550 | read_length--; |
1555 | 1551 | } |
1556 | - position += physical_block_size(); | |
1557 | 1552 | read_sector++; |
1558 | 1553 | sectors--; |
1559 | 1554 | access = true; |
@@ -1846,7 +1841,6 @@ void TOWNS_CDROM::reset_device() | ||
1846 | 1841 | |
1847 | 1842 | extra_status = 0; |
1848 | 1843 | data_reg = 0x00; |
1849 | - position = 0; | |
1850 | 1844 | mcu_ready = true; |
1851 | 1845 | has_status = false; |
1852 | 1846 | req_status = false; |
@@ -3243,7 +3237,7 @@ bool TOWNS_CDROM::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len) | ||
3243 | 3237 | , (pio_transfer_phase) ? _T("PIO") : _T(" ") |
3244 | 3238 | , (dma_transfer_phase) ? _T("DMA") : _T(" ") |
3245 | 3239 | , (has_status) ? _T("ON ") : _T("OFF"), (mcu_ready) ? _T("ON ") : _T("OFF") |
3246 | - , current_track, position / physical_block_size(), read_length, databuffer->count() | |
3240 | + , current_track, read_sector, read_length, databuffer->count() | |
3247 | 3241 | , latest_command, param, param_ptr |
3248 | 3242 | , extra_status, status_queue->count(), stat |
3249 | 3243 | , regs |
@@ -3255,7 +3249,7 @@ bool TOWNS_CDROM::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len) | ||
3255 | 3249 | /* |
3256 | 3250 | * Note: 20200428 K.O: DO NOT USE STATE SAVE, STILL don't implement completely yet. |
3257 | 3251 | */ |
3258 | -#define STATE_VERSION 7 | |
3252 | +#define STATE_VERSION 8 | |
3259 | 3253 | |
3260 | 3254 | bool TOWNS_CDROM::process_state(FILEIO* state_fio, bool loading) |
3261 | 3255 | { |
@@ -3385,7 +3379,6 @@ bool TOWNS_CDROM::process_state(FILEIO* state_fio, bool loading) | ||
3385 | 3379 | state_fio->StateValue(event_eot); |
3386 | 3380 | |
3387 | 3381 | // SCSI_DEV |
3388 | - state_fio->StateValue(position); | |
3389 | 3382 | return true; |
3390 | 3383 | } |
3391 | 3384 |
@@ -279,7 +279,6 @@ protected: | ||
279 | 279 | int read_length_bak; |
280 | 280 | int next_seek_lba; |
281 | 281 | int read_mode; |
282 | - int position; | |
283 | 282 | |
284 | 283 | uint8_t prev_command; |
285 | 284 | uint8_t latest_command; |