|
|
| version 1.6, 2004/02/18 21:58:41 | version 1.12, 2006/12/16 09:52:19 |
|---|---|
| Line 9 | Line 9 |
| #include "biosmem.h" | #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) { | void bios0x1c(void) { |
| BYTE buf[6]; | UINT8 buf[6]; |
| switch(CPU_AH) { | switch(CPU_AH) { |
| case 0x00: // get system timer | case 0x00: // get system timer |
| calendar_get(buf); | calendar_get(buf); |
| i286_memstr_write(CPU_ES, CPU_BX, buf, 6); | MEMR_WRITES(CPU_ES, CPU_BX, buf, 6); |
| break; | break; |
| case 0x01: // put system timer | case 0x01: // put system timer |
| i286_memstr_read(CPU_ES, CPU_BX, buf, 6); | MEMR_READS(CPU_ES, CPU_BX, buf, 6); |
| mem[MEMB_MSW8] = buf[0]; | mem[MEMB_MSW8] = buf[0]; |
| calendar_set(buf); | calendar_set(buf); |
| break; | break; |
| Line 42 void bios0x1c(void) { | Line 30 void bios0x1c(void) { |
| SETBIOSMEM16(0x0001e, CPU_ES); | SETBIOSMEM16(0x0001e, CPU_ES); |
| SETBIOSMEM16(0x0058a, CPU_CX); | SETBIOSMEM16(0x0058a, CPU_CX); |
| iocore_out8(0x77, 0x36); | iocore_out8(0x77, 0x36); |
| bios0x1c_03(); | /*FALLTHROUGH*/ |
| break; | |
| case 0x03: // continue interval timer | 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; | break; |
| } | } |
| } | } |