--- np2/bios/bios1c.c 2004/03/04 17:36:05 1.8 +++ np2/bios/bios1c.c 2006/12/16 09:52:19 1.12 @@ -9,30 +9,18 @@ #include "biosmem.h" -void bios0x1c_03(void) { - - iocore_out8(0x71, 0x00); - if (pccore.cpumode & CPUMODE_8MHZ) { - iocore_out8(0x71, 0x4e); // 4MHz - } - else { - iocore_out8(0x71, 0x60); // 5MHz - } - pic.pi[0].imr &= ~(PIC_SYSTEMTIMER); -} - void bios0x1c(void) { - BYTE buf[6]; + UINT8 buf[6]; switch(CPU_AH) { case 0x00: // get system timer calendar_get(buf); - MEML_WRITESTR(CPU_ES, CPU_BX, buf, 6); + MEMR_WRITES(CPU_ES, CPU_BX, buf, 6); break; case 0x01: // put system timer - MEML_READSTR(CPU_ES, CPU_BX, buf, 6); + MEMR_READS(CPU_ES, CPU_BX, buf, 6); mem[MEMB_MSW8] = buf[0]; calendar_set(buf); break; @@ -42,11 +30,17 @@ void bios0x1c(void) { SETBIOSMEM16(0x0001e, CPU_ES); SETBIOSMEM16(0x0058a, CPU_CX); iocore_out8(0x77, 0x36); - bios0x1c_03(); - break; + /*FALLTHROUGH*/ case 0x03: // continue interval timer - bios0x1c_03(); + iocore_out8(0x71, 0x00); + if (pccore.cpumode & CPUMODE_8MHZ) { + iocore_out8(0x71, 0x4e); // 4MHz + } + else { + iocore_out8(0x71, 0x60); // 5MHz + } + pic.pi[0].imr &= ~(PIC_SYSTEMTIMER); break; } }