diff io.c @ 11:ce7323f9b937

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 06 Jul 2018 18:31:38 +0900
parents 2a1338b218bf
children 111e5defb8ab
line wrap: on
line diff
--- a/io.c	Thu Jul 05 18:37:11 2018 +0900
+++ b/io.c	Fri Jul 06 18:31:38 2018 +0900
@@ -101,7 +101,7 @@
 extern void disasm(int,int);
 #ifdef USE_MMU
 extern char *prog ;   // for disass
-extern Byte * mem1(Byte *iphymem, Word adr, Byte *immu) ;
+extern Byte * mem0(Byte *iphymem, Word adr, Byte *immu) ;
 #endif
 
 
@@ -253,12 +253,12 @@
                                 xidx = 0;
                         }
                 }
+        } else if (a >= 0x40+(IOPAGE&0xff)) { /* disk */
+             do_disk(a,c);
+        } else if (a >= 0x30+(IOPAGE&0xff)) { /* timer */
+             do_timer(a,c);
         } else if (a >= 0x10+(IOPAGE&0xff)) { /* mmu */
              do_mmu(a,c);
-        } else if (a >= 0x30+(IOPAGE&0xff)) { /* timer */
-             do_timer(a,c);
-        } else if (a >= 0x40+(IOPAGE&0xff)) { /* disk */
-             do_disk(a,c);
         }
 }
 
@@ -331,11 +331,8 @@
        } else {
            mmu = phymem+memsize-0x10000+0xffa8;
        }
-       mem[(IOPAGE&0xff00)+a] = c;
-   } if (0x20+(IOPAGE&0xff) <= a && a <= 0x2f+(IOPAGE&0xff)) {
-       mem[(IOPAGE&0xff00)+a] = c;
    }
-
+   mem[(IOPAGE&0xff00)+a] = c;   // other register such as 0xffa0-0xffaf
 #endif 
 }
 
@@ -404,7 +401,7 @@
         stkskip = 0;
         restore_term();
 #ifdef USE_MMU
-        Byte *phyadr = mem1(phymem,pcreg,mmu);
+        Byte *phyadr = mem0(phymem,pcreg,mmu);
         prog = (char*)phyadr - pcreg;
 #endif
         do_trace(stdout);
@@ -494,10 +491,10 @@
                    if (skip==2 && s[1]=='i') {
                      for(int i=0; len > 0 ; i+=16, len-=16) {
 #ifdef USE_MMU
-                        Byte *phyadr = mem1(phymem,adr+i,mmu);
+                        Byte *phyadr = mem0(phymem,adr+i,mmu);
                         prog = (char*)phyadr - adr;
 #endif
-                        disasm(adr,adr+i-(len<16?16-len:0));
+                        disasm(adr+i,adr+i+(len>16?16:len));
                       }
                    } else {
 #ifdef USE_MMU
@@ -506,7 +503,7 @@
                             if (adr+i > memsize) goto restart;
                             hexadump(phymem+adr+i,len>16?16:len,adr+i,16);
                         } else {
-                            Byte *phyadr = mem1(phymem,adr+i,mmu);
+                            Byte *phyadr = mem0(phymem,adr+i,mmu);
                             if (phyadr > phymem+memsize) goto restart;
                             hexadump(phyadr,len>16?16:len,adr+i,16);
                         }