Mercurial > hg > Members > kono > os9 > sbc09
comparison v09.c @ 11:ce7323f9b937
fix
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Jul 2018 18:31:38 +0900 |
parents | cb7aa75418b8 |
children | 111e5defb8ab |
comparison
equal
deleted
inserted
replaced
10:2a1338b218bf | 11:ce7323f9b937 |
---|---|
81 exit(2); | 81 exit(2); |
82 } | 82 } |
83 long len = filesize(image); | 83 long len = filesize(image); |
84 if (romstart==0x8000) { | 84 if (romstart==0x8000) { |
85 #ifdef USE_MMU | 85 #ifdef USE_MMU |
86 romstart = memsize - len; | 86 phymem = malloc(memsize + len - 0x2000); |
87 mem = phymem + memsize - 0x10000 ; | |
88 mmu = mem + 0xffa0; | |
89 romstart = memsize - 0x2000; | |
87 #else | 90 #else |
88 romstart = 0x10000 - len; | 91 romstart = 0x10000 - len; |
89 #endif | 92 #endif |
90 } | 93 } |
91 fread(mem+(romstart&0xffff),len,1,image); | 94 fread(mem+(romstart&0xffff),len,1,image); |
149 i++; | 152 i++; |
150 memsize=strtol(argv[i],(char**)0,0) & ~0xffff; | 153 memsize=strtol(argv[i],(char**)0,0) & ~0xffff; |
151 if (memsize < 512*1024) memsize = 512*1024; | 154 if (memsize < 512*1024) memsize = 512*1024; |
152 } else usage(); | 155 } else usage(); |
153 } | 156 } |
154 #ifdef USE_MMU | |
155 phymem = malloc(memsize); | |
156 mem = phymem + memsize - 0x10000 ; | |
157 mmu = mem + 0xffa0; | |
158 #else | |
159 #ifdef MSDOS | 157 #ifdef MSDOS |
160 if((mem=farmalloc(65535))==0) { | 158 if((mem=farmalloc(65535))==0) { |
161 fprintf(stderr,"Not enough memory\n"); | 159 fprintf(stderr,"Not enough memory\n"); |
162 exit(2); | 160 exit(2); |
163 } | 161 } |
164 #endif | |
165 #endif | 162 #endif |
166 read_image(); | 163 read_image(); |
167 if (setterm) set_term(escchar); | 164 if (setterm) set_term(escchar); |
168 pcreg=(mem[0xfffe]<<8)+mem[0xffff]; | 165 pcreg=(mem[0xfffe]<<8)+mem[0xffff]; |
169 interpr(); | 166 interpr(); |