|
|
| version 1.55, 2004/03/08 14:56:47 | version 1.59, 2004/03/14 23:45:43 |
|---|---|
| Line 56 static void bios_itfprepare(void) { | Line 56 static void bios_itfprepare(void) { |
| const IODATA *p; | const IODATA *p; |
| const IODATA *pterm; | const IODATA *pterm; |
| crtc_biosreset(); | |
| gdc_biosreset(); | |
| p = iodata; | p = iodata; |
| pterm = iodata + (sizeof(iodata) / sizeof(IODATA)); | pterm = iodata + (sizeof(iodata) / sizeof(IODATA)); |
| while(p < pterm) { | while(p < pterm) { |
| iocore_out8(p->port, p->data); | iocore_out8(p->port, p->data); |
| p++; | p++; |
| } | } |
| // GDCの初期化。 | |
| // … | |
| } | } |
| static void bios_memclear(void) { | static void bios_memclear(void) { |
| // ZeroMemory(mem, 0xa0000); // 何が原因だ? | ZeroMemory(mem, 0xa0000); |
| ZeroMemory(mem + 0x100000, 0x10000); | |
| if (CPU_EXTMEM) { | |
| ZeroMemory(CPU_EXTMEM, CPU_EXTMEMSIZE); | |
| } | |
| bios0x18_16(0x20, 0xe1); | |
| ZeroMemory(mem + VRAM0_B, 0x18000); | ZeroMemory(mem + VRAM0_B, 0x18000); |
| ZeroMemory(mem + VRAM0_E, 0x08000); | ZeroMemory(mem + VRAM0_E, 0x08000); |
| ZeroMemory(mem + VRAM1_B, 0x18000); | ZeroMemory(mem + VRAM1_B, 0x18000); |
| Line 164 static void bios_reinitbyswitch(void) { | Line 169 static void bios_reinitbyswitch(void) { |
| mem[0x45c] = 0x40; | mem[0x45c] = 0x40; |
| #endif | #endif |
| // FDC | |
| if (fdc.support144) { | |
| mem[MEMB_F144_SUP] |= fdc.equip; | |
| } | |
| // IDE initialize | // IDE initialize |
| if (pccore.hddif & PCHDD_IDE) { | if (pccore.hddif & PCHDD_IDE) { |
| mem[MEMB_SYS_TYPE] |= 0x80; // IDE | mem[MEMB_SYS_TYPE] |= 0x80; // IDE |
| Line 237 void bios_initialize(void) { | Line 247 void bios_initialize(void) { |
| } | } |
| #if defined(BIOS_SIMULATE) | #if defined(BIOS_SIMULATE) |
| // CopyMemory(mem + BIOS_BASE, biosfd80, sizeof(biosfd80)); | |
| // BIOS hookのアドレス変更 | // BIOS hookのアドレス変更 |
| for (i=0; i<0x20; i++) { | for (i=0; i<0x20; i++) { |
| STOREINTELWORD(mem + 0xfd868 + i*2, biosoffset[i]); | STOREINTELWORD(mem + 0xfd868 + i*2, biosoffset[i]); |
| Line 280 void bios_initialize(void) { | Line 292 void bios_initialize(void) { |
| // mem[MEMB_BIOS_FLAG0] = 0x03; | // mem[MEMB_BIOS_FLAG0] = 0x03; |
| // mem[MEMB_F2DD_MODE] = 0xff; | // mem[MEMB_F2DD_MODE] = 0xff; |
| // SETBIOSMEM16(MEMW_DISK_EQUIP, 0x0003); | // SETBIOSMEM16(MEMW_DISK_EQUIP, 0x0003); |
| mem[0x005ae] |= 0x03; // ver0.31 | // mem[0x005ae] |= 0x03; |
| CopyMemory(mem + 0x0fde00, keytable[0], 0x300); | CopyMemory(mem + 0x0fde00, keytable[0], 0x300); |
| // bios0x09_init(); | // bios0x09_init(); |
| Line 324 static void bios_boot(void) { | Line 336 static void bios_boot(void) { |
| bios_vectorset(); | bios_vectorset(); |
| bios0x09_init(); | bios0x09_init(); |
| bios_reinitbyswitch(); | bios_reinitbyswitch(); |
| bios0x18_0c(); | |
| if (sysport.c & 0x20) { | if (!np2cfg.ITF_WORK) { |
| for (i=0; i<8; i++) { | |
| mem[MEMB_MSW + (i*4)] = msw_default[i]; | |
| } | |
| CPU_IP = 0x0002; | |
| } | |
| else if (sysport.c & 0x20) { | |
| CPU_CS = 0x0000; | CPU_CS = 0x0000; |
| CPU_IP = 0x04f8; | CPU_IP = 0x04f8; |
| CPU_DS = 0x0000; | CPU_DS = 0x0000; |
| Line 337 static void bios_boot(void) { | Line 356 static void bios_boot(void) { |
| SETBIOSMEM16(0x004fc, 0xffff); | SETBIOSMEM16(0x004fc, 0xffff); |
| } | } |
| else { | else { |
| if (!np2cfg.ITF_WORK) { | |
| for (i=0; i<8; i++) { | |
| mem[MEMB_MSW + (i*4)] = msw_default[i]; | |
| } | |
| } | |
| CPU_IP = 0x0002; | CPU_IP = 0x0002; |
| } | } |
| } | } |
| Line 393 UINT MEMCALL biosfunc(UINT32 adrs) { | Line 407 UINT MEMCALL biosfunc(UINT32 adrs) { |
| return(0); | return(0); |
| } | } |
| // TRACEOUT(("biosfunc(%x)", adrs)); | |
| #if defined(CPUCORE_IA32) && defined(TRACE) | |
| if (CPU_STAT_PAGING) { | |
| UINT32 pde = i286_memoryread_d(CPU_STAT_PDE_BASE); | |
| if (!(pde & CPU_PDE_PRESENT)) { | |
| TRACEOUT(("page0: PTE not present")); | |
| } | |
| else { | |
| UINT32 pte = i286_memoryread_d(pde & CPU_PDE_BASEADDR_MASK); | |
| if (!(pte & CPU_PTE_PRESENT)) { | |
| TRACEOUT(("page0: not present")); | |
| } | |
| else if (pte & CPU_PTE_BASEADDR_MASK) { | |
| TRACEOUT(("page0: physical address != 0 (pte = %.8x)", pte)); | |
| } | |
| } | |
| } | |
| #endif | |
| switch(adrs) { | switch(adrs) { |
| case BIOS_BASE + BIOSOFST_EOIM: | case BIOS_BASE + BIOSOFST_EOIM: |
| CPU_REMCLOCK -= 300; | CPU_REMCLOCK -= 300; |