--- np2/bios/bios.c 2004/01/25 05:41:28 1.33 +++ np2/bios/bios.c 2004/02/09 20:39:39 1.36 @@ -59,7 +59,10 @@ static void bios_reinitbyswitch(void) { } mem[MEMB_BIOS_FLAG0] = 0x01; - prxcrt = 0x48; // ver0.74 + prxcrt = 0x08; + if (!(np2cfg.dipsw[0] & 0x01)) { // dipsw1-1 on + prxcrt |= 0x40; + } if (gdc.display & 2) { prxcrt |= 0x04; // color16 } @@ -103,11 +106,11 @@ static void bios_reinitbyswitch(void) { SETBIOSMEM32(MEMD_F2HD_POINTER, 0xfd801aaf); boot = mem[MEMB_MSW5] & 0xf0; if (boot != 0x20) { // 1MB - fddbios_equip(DISKTYPE_2HD, TRUE); + fddbios_equip(3, TRUE); mem[MEMB_BIOS_FLAG0] |= 0x02; } else { // 640KB - fddbios_equip(DISKTYPE_2DD, TRUE); + fddbios_equip(0, TRUE); mem[MEMB_BIOS_FLAG0] &= ~0x02; } mem[MEMB_F2DD_MODE] = 0xff; @@ -225,7 +228,7 @@ void bios_init(void) { } bios_reinitbyswitch(); - mem[MEMB_CRT_STS_FLAG] = 0x84; +// mem[MEMB_CRT_STS_FLAG] = 0x84; // -> bios_screeninit() // mem[MEMB_BIOS_FLAG0] = 0x03; // mem[MEMB_F2DD_MODE] = 0xff; // ver0.29 // SETBIOSMEM16(MEMW_DISK_EQUIP, 0x0003); // ver0.29 @@ -372,19 +375,17 @@ UINT MEMCALL biosfunc(UINT32 adrs) { CPU_REMCLOCK = -1; } else { - switch(CTRL_FDMEDIA) { - case DISKTYPE_2HD: - if (pic.pi[1].isr & PIC_INT42) { - CPU_IP--; - CPU_REMCLOCK -= 1000; - } - break; - case DISKTYPE_2DD: - if (pic.pi[1].isr & PIC_INT41) { - CPU_IP--; - CPU_REMCLOCK -= 1000; - } - break; + if (fdc.chgreg & 1) { + if (!(mem[0x0055e] & (0x01 << fdc.us))) { + CPU_IP--; + CPU_REMCLOCK -= 1000; + } + } + else { + if (!(mem[0x0055f] & (0x10 << fdc.us))) { + CPU_IP--; + CPU_REMCLOCK -= 1000; + } } } return(1);