• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

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


Commit MetaInfo

Revision2e15ae8e0b1aa2090bc6b331bb88edf355b124be (tree)
Time2020-01-28 06:14:59
AuthorK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Log Message

[VM][FMTOWNS][CDC][WIP] Adjusting around CDC.

Change Summary

Incremental Difference

--- a/source/src/vm/fmtowns/cdc.cpp
+++ b/source/src/vm/fmtowns/cdc.cpp
@@ -102,7 +102,7 @@ void CDC::write_io8(uint32_t address, uint32_t data)
102102 * 04C4h : Parameter register
103103 * 04C6h : Transfer control register.
104104 */
105-
105+ out_debug_log(_T("WRITE I/O: ADDR=%04X DATA=%02X"), address, data);
106106 switch(address & 0x0f) {
107107 case 0x00: // Master control register
108108 {
@@ -299,6 +299,7 @@ uint32_t CDC::read_io8(uint32_t address)
299299 val = d_cdrom->read_subq();
300300 break;
301301 }
302+// out_debug_log(_T("READ I/O: ADDR=%04X VAL=%02X"), address, val);
302303 return val;
303304 }
304305
@@ -328,6 +329,7 @@ void CDC::read_cdrom(bool req_reply)
328329 if(d_cdrom != NULL) {
329330 track = d_cdrom->get_track(lba1);
330331 }
332+ out_debug_log(_T("READ_CDROM TRACK=%d LBA1=%06X LBA2=%06X F1/S1/M1=%02X/%02X/%02X F2/S2/M2=%02X/%02X/%02X"), track, lba1, lba2, f1, s1, m1, f2, s2, m2);
331333 if(track < 2) {
332334 if(lba1 >= 150) {
333335 lba1 = lba1 - 150;
@@ -601,13 +603,17 @@ void CDC::write_signal(int ch, uint32_t data, uint32_t mask)
601603 {
602604 switch(ch) {
603605 case SIG_TOWNS_CDC_DRQ:
604- if((dma_transfer) && ((data & mask) != 0)) {
605- software_transfer_phase = false;
606- write_signals(&output_dma_line, 0xffffffff); // Indirect call do_dma().
607- } else if((pio_transfer) && ((data & mask) != 0)) {
608- software_transfer_phase = true;
609- } else if(!((data & mask) != 0)) {
610- software_transfer_phase = false;
606+ if((data & mask) != 0) {
607+ if((dma_transfer) ) {
608+ software_transfer_phase = false;
609+// uint8_t val = d_scsi_host->read_dma_io8(0);
610+ d_dmac->write_signal(SIG_UPD71071_CH3, data, mask);
611+// write_signals(&output_dma_line, val); // Indirect call do_dma().
612+ } else if((pio_transfer) ) {
613+ software_transfer_phase = true;
614+ } else {
615+ software_transfer_phase = false;
616+ }
611617 }
612618 break;
613619 case SIG_TOWNS_CDC_CDROM_DONE:
--- a/source/src/vm/fmtowns/fmtowns.cpp
+++ b/source/src/vm/fmtowns/fmtowns.cpp
@@ -304,6 +304,7 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
304304 dma->set_context_ch1(scsi_host);
305305 //dma->set_context_ch2(printer);
306306 dma->set_context_ch3(cdc);
307+ //dma->set_context_ch3(cdc_scsi);
307308 dma->set_context_child_dma(extra_dma);
308309
309310 floppy->set_context_fdc(fdc);
@@ -339,6 +340,8 @@ VM::VM(EMU* parent_emu) : VM_TEMPLATE(parent_emu)
339340 cdrom->scsi_id = 0;
340341 cdrom->set_context_interface(cdc_scsi);
341342 cdc_scsi->set_context_target(cdrom);
343+ cdrom->set_context_done(cdc, SIG_TOWNS_CDC_CDROM_DONE, 1);
344+
342345 cdc->set_context_cdrom(cdrom);
343346 cdc->set_context_scsi_host(cdc_scsi);
344347 cdc->set_context_dmac(dma);
--- a/source/src/vm/fmtowns/fmtowns.h
+++ b/source/src/vm/fmtowns/fmtowns.h
@@ -157,6 +157,7 @@
157157 #define MB8877_NO_BUSY_AFTER_SEEK
158158 #define IO_ADDR_MAX 0x10000
159159 #define SCSI_HOST_AUTO_ACK
160+//#define SCSI_HOST_WIDE
160161
161162 // device informations for win32
162163 #define USE_CPU_TYPE 2
Show on old repository browser