OSDN Git Service

.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 7 Feb 2019 18:07:10 +0000 (03:07 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Thu, 7 Feb 2019 18:07:10 +0000 (03:07 +0900)
source/src/vm/fmtowns/cdc.cpp
source/src/vm/fmtowns/towns_cdrom.cpp

index c30e7de..c6aa07e 100644 (file)
@@ -254,7 +254,7 @@ uint32_t CDC::read_io8(uint32_t address)
                }
                break;
        case 0xc: // Sub code status register
-               d_cdrom->get_subq_status();
+               val = d_cdrom->get_subq_status();
                break;
        case 0xd:
                val = d_cdrom->read_subq();
@@ -271,10 +271,6 @@ void CDC::read_cdrom(bool req_reply)
                if(req_reply) write_status(0x10, 0x00, 0x00, 0x00);
                return;
        }
-       if(param_fifo->count() < 6) {
-               // Error
-               return;
-       }
 
        uint8_t m1, s1, f1;
        uint8_t m2, s2, f2;
@@ -350,7 +346,7 @@ void CDC::stop_cdda(bool req_reply)
        command[2] = 0;
        command[3] = (uint8_t)(param_fifo->read() & 0xff); 
        command[4] = (uint8_t)(param_fifo->read() & 0xff); 
-    commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
+       commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
        command[6] = 0;
        command[7] = (uint8_t)(param_fifo->read() & 0xff); 
        command[8] = (uint8_t)(param_fifo->read() & 0xff); 
@@ -375,7 +371,7 @@ void CDC::stop_cdda2(bool req_reply)
        command[2] = 0;
        command[3] = (uint8_t)(param_fifo->read() & 0xff); 
        command[4] = (uint8_t)(param_fifo->read() & 0xff); 
-    commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
+       commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
        command[6] = 0;
        command[7] = (uint8_t)(param_fifo->read() & 0xff); 
        command[8] = (uint8_t)(param_fifo->read() & 0xff); 
@@ -400,7 +396,7 @@ void CDC::unpause_cdda2(bool rea_reply)
        command[2] = 0;
        command[3] = (uint8_t)(param_fifo->read() & 0xff); 
        command[4] = (uint8_t)(param_fifo->read() & 0xff); 
-    commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
+       commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
        command[6] = 0;
        command[7] = (uint8_t)(param_fifo->read() & 0xff); 
        command[8] = (uint8_t)(param_fifo->read() & 0xff); 
@@ -420,16 +416,12 @@ void CDC::play_cdda(bool req_reply)
                if(req_reply) write_status(0x10, 0x00, 0x00, 0x00);
                return;
        }
-       if(param_fifo->count() < 6) {
-               // Error
-               return;
-       }
        command[0] = TOWNS_CDROM_CDDA_PLAY;
        command[1] = 0;
        command[2] = 0;
        command[3] = (uint8_t)(param_fifo->read() & 0xff); 
        command[4] = (uint8_t)(param_fifo->read() & 0xff); 
-    commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
+       commadn[5] = (uint8_t)(param_fifo->read() & 0xff); 
        command[6] = 0;
        command[7] = (uint8_t)(param_fifo->read() & 0xff); 
        command[8] = (uint8_t)(param_fifo->read() & 0xff); 
index 0ed6b76..665db9b 100644 (file)
@@ -364,14 +364,14 @@ void TOWNS_CDROM::set_subq(void)
                remain = subq_buffer->count();
                // set first data
                // change to data in phase
-               set_phase_delay(SCSI_PHASE_DATA_IN, 10.0);
+               //set_phase_delay(SCSI_PHASE_DATA_IN, 10.0);
        } else {
                //write_signals(&output_subq_overrun, (subq_buffer->empty()) ? 0x00000000 : 0xffffffff); // OK?
                subq_buffer->clear();
                // transfer length
                remain = subq_buffer->count();
                set_dat(is_device_ready() ? SCSI_STATUS_GOOD : SCSI_STATUS_CHKCOND);
-               set_phase_delay(SCSI_PHASE_STATUS, 10.0);
+               //set_phase_delay(SCSI_PHASE_STATUS, 10.0);
        }
        return;
 }