Mercurial > hg > Members > kono > os9 > sbc09
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;