diff io.c @ 30:7b1b25ff010a

disk io for mmu
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 12 Jul 2018 06:25:25 +0900
parents 5217f23f2f9e
children 2032755628dc
line wrap: on
line diff
--- a/io.c	Wed Jul 11 21:16:06 2018 +0900
+++ b/io.c	Thu Jul 12 06:25:25 2018 +0900
@@ -302,12 +302,17 @@
    int lsn = (mem[IOPAGE+0x42]<<16) + (mem[IOPAGE+0x43]<<8) + mem[IOPAGE+0x44];
    int buf = (mem[IOPAGE+0x45]<<8) + mem[IOPAGE+0x46];
    if (drv > 1 || disk[drv]==0) goto error;
+#ifdef USE_MMU
+   Byte *phy = mem0(phymem,buf,mmu);
+#else
+   Byte *phy = &mem[buf];
+#endif
    if (c==0x81) {
       if (lseek(fileno(disk[drv]),lsn*SECSIZE,SEEK_SET)==-1) goto error;
-      if (read(fileno(disk[drv]),&mem[buf],SECSIZE)==-1) goto error;
+      if (read(fileno(disk[drv]),phy,SECSIZE)==-1) goto error;
    } else if (c==0x55) {
       if (lseek(fileno(disk[drv]),lsn*SECSIZE,SEEK_SET)==-1) goto error;
-      if (write(fileno(disk[drv]),&mem[buf],SECSIZE)==-1) goto error;
+      if (write(fileno(disk[drv]),phy,SECSIZE)==-1) goto error;
    }
    mem[IOPAGE+0x40] = 0;
    return;