• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

Common Source Code Project for Qt (a.k.a for FM-7).


Commit MetaInfo

Révision57a14b08a2c24faa0a01ad1de0087b17bb7d91cc (tree)
l'heure2021-01-14 23:49:35
AuteurK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Message de Log

[VM][FMTOWNS][CDROM] Adjust seek timing.

Change Summary

Modification

--- a/source/src/vm/fmtowns/cdrom.cpp
+++ b/source/src/vm/fmtowns/cdrom.cpp
@@ -342,7 +342,7 @@ void TOWNS_CDROM::status_data_ready(bool forceint)
342342
343343 void TOWNS_CDROM::status_illegal_lba(int extra, uint8_t s1, uint8_t s2, uint8_t s3)
344344 {
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);
346346 set_status(req_status, extra, TOWNS_CD_STATUS_CMD_ABEND, s1, s2, s3);
347347 }
348348
@@ -756,7 +756,6 @@ void TOWNS_CDROM::read_cdrom()
756756 param_queue[0], param_queue[1], param_queue[2],
757757 param_queue[3], param_queue[4], param_queue[5],
758758 pad1, dcmd);
759- position = lba1 * ((is_iso) ? 2048 : physical_block_size());
760759 __remain = (lba2 - lba1 + 1);
761760 read_length = __remain * logical_block_size();
762761 read_length_bak = read_length;
@@ -1336,17 +1335,11 @@ void TOWNS_CDROM::event_callback(int event_id, int err)
13361335 /// 20200926 K.O
13371336 stat = read_buffer(1);
13381337 if((stat)) {
1339-#if 1
13401338 register_event(this, EVENT_CDROM_NEXT_SECTOR,
13411339 (1.0e6 / ((double)transfer_speed * 150.0e3)) *
13421340 ((double)(physical_block_size())) *
1343- 1.0, // OK?
1341+ 0.5, // OK?
13441342 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
13501343 }
13511344 //register_event(this, EVENT_CDROM_TIMEOUT, 1000.0e3, false, &event_time_out);
13521345 } /*else {
@@ -1366,7 +1359,9 @@ void TOWNS_CDROM::event_callback(int event_id, int err)
13661359 // ToDo: Prefetch
13671360 status_seek = true;
13681361 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?
13701365 false,
13711366 &event_seek_completed);
13721367 break;
@@ -1421,7 +1416,6 @@ bool TOWNS_CDROM::read_mode1_iso(int sectors)
14211416 write_a_byte(value);
14221417 read_length--;
14231418 }
1424- position += 2048;
14251419 read_sector++;
14261420 sectors--;
14271421 access = true;
@@ -1431,14 +1425,18 @@ bool TOWNS_CDROM::read_mode1_iso(int sectors)
14311425
14321426 bool TOWNS_CDROM::read_mode1(int sectors)
14331427 {
1428+ if(!(seek_relative_frame_in_image(read_sector))) {
1429+ status_illegal_lba(0, 0x00, 0x00, 0x00);
1430+ return false;
1431+ }
14341432 while(sectors > 0) {
14351433 cd_data_mode1_t tmpbuf;
14361434 int tmp_length = sizeof(cd_data_mode1_t);
14371435 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+// }
14421440 if(fio_img->Fread(&tmpbuf, tmp_length, 1) != 1) {
14431441 status_illegal_lba(0, 0x00, 0x00, 0x00);
14441442 return false;
@@ -1468,7 +1466,6 @@ bool TOWNS_CDROM::read_mode1(int sectors)
14681466 write_a_byte(value);
14691467 read_length--;
14701468 }
1471- position += physical_block_size();
14721469 read_sector++;
14731470 sectors--;
14741471 access = true;
@@ -1515,7 +1512,6 @@ bool TOWNS_CDROM::read_mode2(int sectors)
15151512 write_a_byte(value);
15161513 read_length--;
15171514 }
1518- position += physical_block_size();
15191515 read_sector++;
15201516 sectors--;
15211517 access = true;
@@ -1553,7 +1549,6 @@ bool TOWNS_CDROM::read_raw(int sectors)
15531549 write_a_byte(value);
15541550 read_length--;
15551551 }
1556- position += physical_block_size();
15571552 read_sector++;
15581553 sectors--;
15591554 access = true;
@@ -1846,7 +1841,6 @@ void TOWNS_CDROM::reset_device()
18461841
18471842 extra_status = 0;
18481843 data_reg = 0x00;
1849- position = 0;
18501844 mcu_ready = true;
18511845 has_status = false;
18521846 req_status = false;
@@ -3243,7 +3237,7 @@ bool TOWNS_CDROM::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
32433237 , (pio_transfer_phase) ? _T("PIO") : _T(" ")
32443238 , (dma_transfer_phase) ? _T("DMA") : _T(" ")
32453239 , (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()
32473241 , latest_command, param, param_ptr
32483242 , extra_status, status_queue->count(), stat
32493243 , regs
@@ -3255,7 +3249,7 @@ bool TOWNS_CDROM::get_debug_regs_info(_TCHAR *buffer, size_t buffer_len)
32553249 /*
32563250 * Note: 20200428 K.O: DO NOT USE STATE SAVE, STILL don't implement completely yet.
32573251 */
3258-#define STATE_VERSION 7
3252+#define STATE_VERSION 8
32593253
32603254 bool TOWNS_CDROM::process_state(FILEIO* state_fio, bool loading)
32613255 {
@@ -3385,7 +3379,6 @@ bool TOWNS_CDROM::process_state(FILEIO* state_fio, bool loading)
33853379 state_fio->StateValue(event_eot);
33863380
33873381 // SCSI_DEV
3388- state_fio->StateValue(position);
33893382 return true;
33903383 }
33913384
--- a/source/src/vm/fmtowns/cdrom.h
+++ b/source/src/vm/fmtowns/cdrom.h
@@ -279,7 +279,6 @@ protected:
279279 int read_length_bak;
280280 int next_seek_lba;
281281 int read_mode;
282- int position;
283282
284283 uint8_t prev_command;
285284 uint8_t latest_command;
Afficher sur ancien navigateur de dépôt.