OSDN Git Service

[VM][FMTOWNS][MSDOS] Add [read|write]_dma_dataXw() .
authorK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 10 Sep 2023 15:58:24 +0000 (00:58 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Sun, 10 Sep 2023 15:58:24 +0000 (00:58 +0900)
source/src/vm/fmtowns/msdosrom.cpp
source/src/vm/fmtowns/msdosrom.h

index 8e2fe1e..b625825 100644 (file)
@@ -22,21 +22,39 @@ void MSDOSROM::initialize()
        delete fio;
 }
 
+uint32_t MSDOSROM::read_dma_data8w(uint32_t addr, int* wait)
+{
+       uint32_t val = read_memory_mapped_io8(addr); // OK?
+       __LIKELY_IF(wait != NULL) {
+               *wait = 0; // Discard WAIT VALUE(s) for DMA transfer.
+       }
+       return val;
+}
+
+uint32_t MSDOSROM::read_dma_data16w(uint32_t addr, int* wait)
+{
+       uint32_t val = read_memory_mapped_io16(addr); // OK?
+       __LIKELY_IF(wait != NULL) {
+               *wait = 0; // Discard WAIT VALUE(s) for DMA transfer.
+       }
+       return val;
+}
+
+uint32_t MSDOSROM::read_dma_data32w(uint32_t addr, int* wait)
+{
+       uint32_t val = read_memory_mapped_io32(addr); // OK?
+       __LIKELY_IF(wait != NULL) {
+               *wait = 0; // Discard WAIT VALUE(s) for DMA transfer.
+       }
+       return val;
+}
+
 uint32_t MSDOSROM::read_memory_mapped_io8(uint32_t addr)
 {
        __LIKELY_IF(addr < 0x80000) {
                return rom[addr];
        }
        return 0xff;
-       #if 0
-       uint8_t d = 0xff;
-       if((addr >= 0xc2000000) && (addr < 0xc2080000)) {
-               d = rom[addr & 0x7ffff];
-       } else if((addr >= 0x000b0000) && (addr < 0x000c0000)) {
-               d = rom[addr & 0x0ffff];
-       }
-       return (uint32_t)d;
-       #endif
 }
 
 uint32_t MSDOSROM::read_memory_mapped_io16(uint32_t addr)
index e062d1c..cd664a3 100644 (file)
@@ -23,6 +23,10 @@ public:
        ~MSDOSROM() {}
 
        void initialize() override;
+
+       uint32_t __FASTCALL read_dma_data8w(uint32_t addr, int* wait) override;
+       uint32_t __FASTCALL read_dma_data16w(uint32_t addr, int* wait) override;
+       uint32_t __FASTCALL read_dma_data32w(uint32_t addr, int* wait) override;
        uint32_t __FASTCALL read_memory_mapped_io8(uint32_t addr) override;
        uint32_t __FASTCALL read_memory_mapped_io16(uint32_t addr) override;
        uint32_t __FASTCALL read_memory_mapped_io32(uint32_t addr) override;