OSDN Git Service

[VM][SCSI_HOST] Implement both wide and narrow bus.
[csp-qt/common_source_project-fm7.git] / source / src / vm / scsi_host.cpp
index 7a51221..2bcb503 100644 (file)
@@ -19,16 +19,29 @@ void SCSI_HOST::reset()
        set_drq(false);
 }
 
-#ifdef SCSI_HOST_WIDE
+//#ifdef SCSI_HOST_WIDE
 void SCSI_HOST::write_dma_io16(uint32_t addr, uint32_t data)
-#else
+{
+       #ifdef _SCSI_DEBUG_LOG
+               this->force_out_debug_log(_T("[SCSI_HOST] Write %02X\n"), data);
+       #endif
+       write_signals(&outputs_dat, data & 0xffff);
+       
+       #ifdef SCSI_HOST_AUTO_ACK
+               // set ack to clear req signal immediately
+               if(bsy_status && !io_status) {
+                       this->write_signal(SIG_SCSI_ACK, 1, 1);
+               }
+       #endif
+}
+//#else
 void SCSI_HOST::write_dma_io8(uint32_t addr, uint32_t data)
-#endif
+//#endif
 {
        #ifdef _SCSI_DEBUG_LOG
                this->force_out_debug_log(_T("[SCSI_HOST] Write %02X\n"), data);
        #endif
-       write_signals(&outputs_dat, data);
+       write_signals(&outputs_dat, data & 0xff);
        
        #ifdef SCSI_HOST_AUTO_ACK
                // set ack to clear req signal immediately
@@ -38,11 +51,14 @@ void SCSI_HOST::write_dma_io8(uint32_t addr, uint32_t data)
        #endif
 }
 
-#ifdef SCSI_HOST_WIDE
+//#ifdef SCSI_HOST_WIDE
 uint32_t SCSI_HOST::read_dma_io16(uint32_t addr)
-#else
+{
+       return read_dma_io8(addr);
+}
+//#else
 uint32_t SCSI_HOST::read_dma_io8(uint32_t addr)
-#endif
+//#endif
 {
        uint32_t value = data_reg;
        #ifdef _SCSI_DEBUG_LOG