Mercurial > hg > Members > kono > os9 > sbc09
comparison engine.c @ 23:5217f23f2f9e
break point
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 09 Jul 2018 14:54:43 +0900 |
parents | 1925cfa982fe |
children | fe88cea67ef0 |
comparison
equal
deleted
inserted
replaced
22:10e33568b38a | 23:5217f23f2f9e |
---|---|
62 | 62 |
63 Byte * mem0(Byte *iphymem, Word adr, Byte *immu) { | 63 Byte * mem0(Byte *iphymem, Word adr, Byte *immu) { |
64 return & iphymem[ paddr(adr,immu) ]; | 64 return & iphymem[ paddr(adr,immu) ]; |
65 } | 65 } |
66 | 66 |
67 static Byte mem1(Byte *iphymem, Word adr, Byte *immu) { | 67 Byte mem1(Byte *iphymem, Word adr, Byte *immu) { |
68 if ((adr&0xfe00)==(IOPAGE&0xfe00)) return do_input(adr&0x1ff); | 68 if ((adr&0xfe00)==(IOPAGE&0xfe00)) return do_input(adr&0x1ff); |
69 Byte *p = mem0(iphymem, adr, immu); | 69 Byte *p = mem0(iphymem, adr, immu); |
70 if(!(p-phymem>=rommemsize)) { | 70 if(!(p-phymem>=rommemsize)) { |
71 return *p; | 71 return *p; |
72 } else { | 72 } else { |
74 } | 74 } |
75 } | 75 } |
76 | 76 |
77 #define mem(a) mem1(iphymem,a,immu) | 77 #define mem(a) mem1(iphymem,a,immu) |
78 | 78 |
79 #define SETBYTE(a,n) { \ | 79 Byte * SETBYTE1(Word a,Byte n, Byte *iphymem, Byte *immu) { |
80 Word adr = a; \ | 80 Word adr = a; |
81 if ((adr&0xfe00)==(IOPAGE&0xfe00)) { \ | 81 if ((adr&0xfe00)==(IOPAGE&0xfe00)) { |
82 do_output(adr&0x1ff,n); \ | 82 do_output(adr&0x1ff,n); |
83 immu = mmu; \ | 83 return mmu; |
84 } else {\ | 84 } else { |
85 Byte *p = mem0(iphymem, adr,immu); \ | 85 Byte *p = mem0(iphymem, adr,immu); |
86 if(!(p-phymem>=romstart)) { \ | 86 if(!(p-phymem>=romstart)) { |
87 *p=n; \ | 87 *p=n; |
88 } \ | 88 } |
89 } \ | 89 } |
90 return immu; | |
90 } | 91 } |
92 | |
93 #define SETBYTE(a,n) immu=SETBYTE1(a,n,iphymem,immu); | |
91 | 94 |
92 #endif | 95 #endif |
93 | 96 |
94 #define GETWORD(a) (mem(a)<<8|mem((a)+1)) | 97 #define GETWORD(a) (mem(a)<<8|mem((a)+1)) |
95 #define SETWORD(a,n) {Word a1=a;SETBYTE(a1,n>>8);SETBYTE(a1+1,n);} | 98 #define SETWORD(a,n) {Word a1=a;SETBYTE(a1,n>>8);SETBYTE(a1+1,n);} |