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