1.1 diff -r e8ebd433270a -r 391318413bb2 src/main.c 1.2 --- a/src/main.c Thu Dec 02 19:30:46 2010 +0000 1.3 +++ b/src/main.c Thu Dec 02 20:19:20 2010 +0000 1.4 @@ -243,37 +243,55 @@ 1.5 data = RD32(state.vram, address, 0x7FFF); 1.6 break; 1.7 case 0x030000: // Bus Status Register 0 1.8 + break; 1.9 case 0x040000: // Bus Status Register 1 1.10 + break; 1.11 case 0x050000: // Phone status 1.12 + break; 1.13 case 0x060000: // DMA Count 1.14 + break; 1.15 case 0x070000: // Line Printer Status Register 1.16 + break; 1.17 case 0x080000: // Real Time Clock 1.18 + break; 1.19 case 0x090000: // Phone registers 1.20 switch (address & 0x0FF000) { 1.21 case 0x090000: // Handset relay 1.22 case 0x098000: 1.23 + break; 1.24 case 0x091000: // Line select 2 1.25 case 0x099000: 1.26 + break; 1.27 case 0x092000: // Hook relay 1 1.28 case 0x09A000: 1.29 + break; 1.30 case 0x093000: // Hook relay 2 1.31 case 0x09B000: 1.32 + break; 1.33 case 0x094000: // Line 1 hold 1.34 case 0x09C000: 1.35 + break; 1.36 case 0x095000: // Line 2 hold 1.37 case 0x09D000: 1.38 + break; 1.39 case 0x096000: // Line 1 A-lead 1.40 case 0x09E000: 1.41 + break; 1.42 case 0x097000: // Line 2 A-lead 1.43 case 0x09F000: 1.44 break; 1.45 } 1.46 break; 1.47 case 0x0A0000: // Miscellaneous Control Register 1.48 + break; 1.49 case 0x0B0000: // TM/DIALWR 1.50 + break; 1.51 case 0x0C0000: // CSR 1.52 + break; 1.53 case 0x0D0000: // DMA Address Register 1.54 + break; 1.55 case 0x0E0000: // Disk Control Register 1.56 + break; 1.57 case 0x0F0000: // Line Printer Data Register 1.58 break; 1.59 } 1.60 @@ -307,6 +325,33 @@ 1.61 break; 1.62 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.63 break; 1.64 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.65 + switch (address & 0x077000) { 1.66 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.67 + break; 1.68 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.69 + break; 1.70 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.71 + break; 1.72 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.73 + break; 1.74 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.75 + break; 1.76 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.77 + break; 1.78 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.79 + break; 1.80 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.81 + break; 1.82 + } 1.83 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.84 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.85 + switch (address & 0x07F000) { 1.86 + default: 1.87 + break; 1.88 + } 1.89 + break; 1.90 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.91 default: 1.92 fprintf(stderr, "NOTE: RD32 from undefined E/F-block address 0x%08X", address); 1.93 } 1.94 @@ -351,37 +396,55 @@ 1.95 data = RD16(state.vram, address, 0x7FFF); 1.96 break; 1.97 case 0x030000: // Bus Status Register 0 1.98 + break; 1.99 case 0x040000: // Bus Status Register 1 1.100 + break; 1.101 case 0x050000: // Phone status 1.102 + break; 1.103 case 0x060000: // DMA Count 1.104 + break; 1.105 case 0x070000: // Line Printer Status Register 1.106 + break; 1.107 case 0x080000: // Real Time Clock 1.108 + break; 1.109 case 0x090000: // Phone registers 1.110 switch (address & 0x0FF000) { 1.111 case 0x090000: // Handset relay 1.112 case 0x098000: 1.113 + break; 1.114 case 0x091000: // Line select 2 1.115 case 0x099000: 1.116 + break; 1.117 case 0x092000: // Hook relay 1 1.118 case 0x09A000: 1.119 + break; 1.120 case 0x093000: // Hook relay 2 1.121 case 0x09B000: 1.122 + break; 1.123 case 0x094000: // Line 1 hold 1.124 case 0x09C000: 1.125 + break; 1.126 case 0x095000: // Line 2 hold 1.127 case 0x09D000: 1.128 + break; 1.129 case 0x096000: // Line 1 A-lead 1.130 case 0x09E000: 1.131 + break; 1.132 case 0x097000: // Line 2 A-lead 1.133 case 0x09F000: 1.134 break; 1.135 } 1.136 break; 1.137 case 0x0A0000: // Miscellaneous Control Register 1.138 + break; 1.139 case 0x0B0000: // TM/DIALWR 1.140 + break; 1.141 case 0x0C0000: // CSR 1.142 + break; 1.143 case 0x0D0000: // DMA Address Register 1.144 + break; 1.145 case 0x0E0000: // Disk Control Register 1.146 + break; 1.147 case 0x0F0000: // Line Printer Data Register 1.148 break; 1.149 } 1.150 @@ -415,8 +478,35 @@ 1.151 break; 1.152 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.153 break; 1.154 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.155 + switch (address & 0x077000) { 1.156 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.157 + break; 1.158 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.159 + break; 1.160 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.161 + break; 1.162 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.163 + break; 1.164 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.165 + break; 1.166 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.167 + break; 1.168 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.169 + break; 1.170 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.171 + break; 1.172 + } 1.173 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.174 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.175 + switch (address & 0x07F000) { 1.176 + default: 1.177 + break; 1.178 + } 1.179 + break; 1.180 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.181 default: 1.182 - fprintf(stderr, "NOTE: RD16 to undefined E/F-block address 0x%08X", address); 1.183 + fprintf(stderr, "NOTE: RD16 from undefined E/F-block address 0x%08X", address); 1.184 } 1.185 } 1.186 } 1.187 @@ -462,43 +552,61 @@ 1.188 data = RD8(state.vram, address, 0x7FFF); 1.189 break; 1.190 case 0x030000: // Bus Status Register 0 1.191 + break; 1.192 case 0x040000: // Bus Status Register 1 1.193 + break; 1.194 case 0x050000: // Phone status 1.195 + break; 1.196 case 0x060000: // DMA Count 1.197 + break; 1.198 case 0x070000: // Line Printer Status Register 1.199 + break; 1.200 case 0x080000: // Real Time Clock 1.201 + break; 1.202 case 0x090000: // Phone registers 1.203 switch (address & 0x0FF000) { 1.204 case 0x090000: // Handset relay 1.205 case 0x098000: 1.206 + break; 1.207 case 0x091000: // Line select 2 1.208 case 0x099000: 1.209 + break; 1.210 case 0x092000: // Hook relay 1 1.211 case 0x09A000: 1.212 + break; 1.213 case 0x093000: // Hook relay 2 1.214 case 0x09B000: 1.215 + break; 1.216 case 0x094000: // Line 1 hold 1.217 case 0x09C000: 1.218 + break; 1.219 case 0x095000: // Line 2 hold 1.220 case 0x09D000: 1.221 + break; 1.222 case 0x096000: // Line 1 A-lead 1.223 case 0x09E000: 1.224 + break; 1.225 case 0x097000: // Line 2 A-lead 1.226 case 0x09F000: 1.227 break; 1.228 } 1.229 break; 1.230 case 0x0A0000: // Miscellaneous Control Register 1.231 + break; 1.232 case 0x0B0000: // TM/DIALWR 1.233 + break; 1.234 case 0x0C0000: // CSR 1.235 + break; 1.236 case 0x0D0000: // DMA Address Register 1.237 + break; 1.238 case 0x0E0000: // Disk Control Register 1.239 + break; 1.240 case 0x0F0000: // Line Printer Data Register 1.241 break; 1.242 } 1.243 } else if ((address >= 0xC00000) && (address <= 0xFFFFFF)) { 1.244 // I/O register space, zone B 1.245 - printf("RD32 0x%08X ==> ??? %s\n", address, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.246 + printf("RD8 0x%08X ==> ??? %s\n", address, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.247 switch (address & 0xF00000) { 1.248 case 0xC00000: // Expansion slots 1.249 case 0xD00000: 1.250 @@ -511,7 +619,7 @@ 1.251 case 0xD40000: // Expansion slot 5 1.252 case 0xD80000: // Expansion slot 6 1.253 case 0xDC0000: // Expansion slot 7 1.254 - fprintf(stderr, "NOTE: RD8 from expansion card address 0x%08X\n", address); 1.255 + fprintf(stderr, "NOTE: RD8 from expansion card space, addr=0x%08X\n", address); 1.256 break; 1.257 } 1.258 break; 1.259 @@ -526,6 +634,33 @@ 1.260 break; 1.261 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.262 break; 1.263 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.264 + switch (address & 0x077000) { 1.265 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.266 + break; 1.267 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.268 + break; 1.269 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.270 + break; 1.271 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.272 + break; 1.273 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.274 + break; 1.275 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.276 + break; 1.277 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.278 + break; 1.279 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.280 + break; 1.281 + } 1.282 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.283 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.284 + switch (address & 0x07F000) { 1.285 + default: 1.286 + break; 1.287 + } 1.288 + break; 1.289 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.290 default: 1.291 fprintf(stderr, "NOTE: RD8 from undefined E/F-block address 0x%08X", address); 1.292 } 1.293 @@ -554,7 +689,7 @@ 1.294 WR32(state.ram, mapAddr(address, false), state.ram_size - 1, value); 1.295 } else if ((address >= 0x400000) && (address <= 0x7FFFFF)) { 1.296 // I/O register space, zone A 1.297 - printf("WR32 0x%08X ==> ??? %s\n", address, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.298 + printf("WR32 0x%08X ==> 0x%08X %s\n", address, value, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.299 switch (address & 0x0F0000) { 1.300 case 0x000000: // Map RAM access 1.301 if (address > 0x4007FF) fprintf(stderr, "NOTE: WR32 to MapRAM mirror, addr=0x%08X, data=0x%08X\n", address, value); 1.302 @@ -568,37 +703,55 @@ 1.303 WR32(state.vram, address, 0x7FFF, value); 1.304 break; 1.305 case 0x030000: // Bus Status Register 0 1.306 + break; 1.307 case 0x040000: // Bus Status Register 1 1.308 + break; 1.309 case 0x050000: // Phone status 1.310 + break; 1.311 case 0x060000: // DMA Count 1.312 + break; 1.313 case 0x070000: // Line Printer Status Register 1.314 + break; 1.315 case 0x080000: // Real Time Clock 1.316 + break; 1.317 case 0x090000: // Phone registers 1.318 switch (address & 0x0FF000) { 1.319 case 0x090000: // Handset relay 1.320 case 0x098000: 1.321 + break; 1.322 case 0x091000: // Line select 2 1.323 case 0x099000: 1.324 + break; 1.325 case 0x092000: // Hook relay 1 1.326 case 0x09A000: 1.327 + break; 1.328 case 0x093000: // Hook relay 2 1.329 case 0x09B000: 1.330 + break; 1.331 case 0x094000: // Line 1 hold 1.332 case 0x09C000: 1.333 + break; 1.334 case 0x095000: // Line 2 hold 1.335 case 0x09D000: 1.336 + break; 1.337 case 0x096000: // Line 1 A-lead 1.338 case 0x09E000: 1.339 + break; 1.340 case 0x097000: // Line 2 A-lead 1.341 case 0x09F000: 1.342 break; 1.343 } 1.344 break; 1.345 case 0x0A0000: // Miscellaneous Control Register 1.346 + break; 1.347 case 0x0B0000: // TM/DIALWR 1.348 + break; 1.349 case 0x0C0000: // CSR 1.350 + break; 1.351 case 0x0D0000: // DMA Address Register 1.352 + break; 1.353 case 0x0E0000: // Disk Control Register 1.354 + break; 1.355 case 0x0F0000: // Line Printer Data Register 1.356 break; 1.357 } 1.358 @@ -632,6 +785,36 @@ 1.359 break; 1.360 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.361 break; 1.362 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.363 + switch (address & 0x077000) { 1.364 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.365 + break; 1.366 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.367 + break; 1.368 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.369 + break; 1.370 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.371 + state.romlmap = ((value & 0x8000) == 0x8000); 1.372 + break; 1.373 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.374 + break; 1.375 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.376 + break; 1.377 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.378 + break; 1.379 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.380 + break; 1.381 + } 1.382 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.383 + break; 1.384 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.385 + switch (address & 0x07F000) { 1.386 + default: 1.387 + break; 1.388 + } 1.389 + break; 1.390 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.391 + break; 1.392 default: 1.393 fprintf(stderr, "NOTE: WR32 to undefined E/F-block space, addr=0x%08X, data=0x%08X\n", address, value); 1.394 } 1.395 @@ -659,7 +842,7 @@ 1.396 WR16(state.ram, mapAddr(address, false), state.ram_size - 1, value); 1.397 } else if ((address >= 0x400000) && (address <= 0x7FFFFF)) { 1.398 // I/O register space, zone A 1.399 - printf("WR16 0x%08X ==> ??? %s\n", address, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.400 + printf("WR16 0x%08X ==> 0x%04X %s\n", address, value, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.401 switch (address & 0x0F0000) { 1.402 case 0x000000: // Map RAM access 1.403 if (address > 0x4007FF) fprintf(stderr, "NOTE: WR16 to MapRAM mirror, addr=0x%08X, data=0x%04X\n", address, value); 1.404 @@ -673,37 +856,55 @@ 1.405 WR16(state.vram, address, 0x7FFF, value); 1.406 break; 1.407 case 0x030000: // Bus Status Register 0 1.408 + break; 1.409 case 0x040000: // Bus Status Register 1 1.410 + break; 1.411 case 0x050000: // Phone status 1.412 + break; 1.413 case 0x060000: // DMA Count 1.414 + break; 1.415 case 0x070000: // Line Printer Status Register 1.416 + break; 1.417 case 0x080000: // Real Time Clock 1.418 + break; 1.419 case 0x090000: // Phone registers 1.420 switch (address & 0x0FF000) { 1.421 case 0x090000: // Handset relay 1.422 case 0x098000: 1.423 + break; 1.424 case 0x091000: // Line select 2 1.425 case 0x099000: 1.426 + break; 1.427 case 0x092000: // Hook relay 1 1.428 case 0x09A000: 1.429 + break; 1.430 case 0x093000: // Hook relay 2 1.431 case 0x09B000: 1.432 + break; 1.433 case 0x094000: // Line 1 hold 1.434 case 0x09C000: 1.435 + break; 1.436 case 0x095000: // Line 2 hold 1.437 case 0x09D000: 1.438 + break; 1.439 case 0x096000: // Line 1 A-lead 1.440 case 0x09E000: 1.441 + break; 1.442 case 0x097000: // Line 2 A-lead 1.443 case 0x09F000: 1.444 break; 1.445 } 1.446 break; 1.447 case 0x0A0000: // Miscellaneous Control Register 1.448 + break; 1.449 case 0x0B0000: // TM/DIALWR 1.450 + break; 1.451 case 0x0C0000: // CSR 1.452 + break; 1.453 case 0x0D0000: // DMA Address Register 1.454 + break; 1.455 case 0x0E0000: // Disk Control Register 1.456 + break; 1.457 case 0x0F0000: // Line Printer Data Register 1.458 break; 1.459 } 1.460 @@ -737,8 +938,38 @@ 1.461 break; 1.462 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.463 break; 1.464 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.465 + switch (address & 0x077000) { 1.466 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.467 + break; 1.468 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.469 + break; 1.470 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.471 + break; 1.472 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.473 + state.romlmap = ((value & 0x8000) == 0x8000); 1.474 + break; 1.475 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.476 + break; 1.477 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.478 + break; 1.479 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.480 + break; 1.481 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.482 + break; 1.483 + } 1.484 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.485 + break; 1.486 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.487 + switch (address & 0x07F000) { 1.488 + default: 1.489 + break; 1.490 + } 1.491 + break; 1.492 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.493 + break; 1.494 default: 1.495 - fprintf(stderr, "NOTE: WR16 to undefined E/F-block space, addr=0x%08X, data=0x%04X\n", address, value); 1.496 + fprintf(stderr, "NOTE: WR32 to undefined E/F-block space, addr=0x%08X, data=0x%08X\n", address, value); 1.497 } 1.498 } 1.499 } 1.500 @@ -764,7 +995,7 @@ 1.501 WR8(state.ram, mapAddr(address, false), state.ram_size - 1, value); 1.502 } else if ((address >= 0x400000) && (address <= 0x7FFFFF)) { 1.503 // I/O register space, zone A 1.504 - printf("WR8 0x%08X ==> ??? %s\n", address, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.505 + printf("WR8 0x%08X ==> %02X %s\n", address, value, m68k_get_reg(NULL, M68K_REG_SR) & 0x2000 ? "[SV]" : ""); 1.506 switch (address & 0x0F0000) { 1.507 case 0x000000: // Map RAM access 1.508 if (address > 0x4007FF) fprintf(stderr, "NOTE: WR8 to MapRAM mirror, addr=%08X, data=%02X\n", address, value); 1.509 @@ -778,37 +1009,55 @@ 1.510 WR8(state.vram, address, 0x7FFF, value); 1.511 break; 1.512 case 0x030000: // Bus Status Register 0 1.513 + break; 1.514 case 0x040000: // Bus Status Register 1 1.515 + break; 1.516 case 0x050000: // Phone status 1.517 + break; 1.518 case 0x060000: // DMA Count 1.519 + break; 1.520 case 0x070000: // Line Printer Status Register 1.521 + break; 1.522 case 0x080000: // Real Time Clock 1.523 + break; 1.524 case 0x090000: // Phone registers 1.525 switch (address & 0x0FF000) { 1.526 case 0x090000: // Handset relay 1.527 case 0x098000: 1.528 + break; 1.529 case 0x091000: // Line select 2 1.530 case 0x099000: 1.531 + break; 1.532 case 0x092000: // Hook relay 1 1.533 case 0x09A000: 1.534 + break; 1.535 case 0x093000: // Hook relay 2 1.536 case 0x09B000: 1.537 + break; 1.538 case 0x094000: // Line 1 hold 1.539 case 0x09C000: 1.540 + break; 1.541 case 0x095000: // Line 2 hold 1.542 case 0x09D000: 1.543 + break; 1.544 case 0x096000: // Line 1 A-lead 1.545 case 0x09E000: 1.546 + break; 1.547 case 0x097000: // Line 2 A-lead 1.548 case 0x09F000: 1.549 break; 1.550 } 1.551 break; 1.552 case 0x0A0000: // Miscellaneous Control Register 1.553 + break; 1.554 case 0x0B0000: // TM/DIALWR 1.555 + break; 1.556 case 0x0C0000: // CSR 1.557 + break; 1.558 case 0x0D0000: // DMA Address Register 1.559 + break; 1.560 case 0x0E0000: // Disk Control Register 1.561 + break; 1.562 case 0x0F0000: // Line Printer Data Register 1.563 break; 1.564 } 1.565 @@ -842,8 +1091,40 @@ 1.566 break; 1.567 case 0x030000: // [ef][3b]xxxx ==> Real Time Clock data bits 1.568 break; 1.569 + case 0x040000: // [ef][4c]xxxx ==> General Control Register 1.570 + switch (address & 0x077000) { 1.571 + case 0x040000: // [ef][4c][08]xxx ==> EE 1.572 + break; 1.573 + case 0x041000: // [ef][4c][19]xxx ==> P1E 1.574 + break; 1.575 + case 0x042000: // [ef][4c][2A]xxx ==> BP 1.576 + break; 1.577 + case 0x043000: // [ef][4c][3B]xxx ==> ROMLMAP 1.578 + if ((address & 1) == 0) 1.579 + state.romlmap = ((value & 0x8000) == 0x8000); 1.580 + break; 1.581 + case 0x044000: // [ef][4c][4C]xxx ==> L1 MODEM 1.582 + break; 1.583 + case 0x045000: // [ef][4c][5D]xxx ==> L2 MODEM 1.584 + break; 1.585 + case 0x046000: // [ef][4c][6E]xxx ==> D/N CONNECT 1.586 + break; 1.587 + case 0x047000: // [ef][4c][7F]xxx ==> Whole screen reverse video 1.588 + break; 1.589 + } 1.590 + case 0x050000: // [ef][5d]xxxx ==> 8274 1.591 + break; 1.592 + case 0x060000: // [ef][6e]xxxx ==> Control regs 1.593 + switch (address & 0x07F000) { 1.594 + default: 1.595 + break; 1.596 + } 1.597 + break; 1.598 + case 0x070000: // [ef][7f]xxxx ==> 6850 Keyboard Controller 1.599 + break; 1.600 default: 1.601 fprintf(stderr, "NOTE: WR8 to undefined E/F-block space, addr=0x%08X, data=0x%08X\n", address, value); 1.602 + break; 1.603 } 1.604 } 1.605 }