2 * PROJECT: NEC PC-98 series HAL
3 * LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
4 * PURPOSE: PIT rollover tables
5 * COPYRIGHT: Copyright 2020 Dmitry Borisov (di.sean@protonmail.com)
8 /* INCLUDES ******************************************************************/
12 /* GLOBALS *******************************************************************/
14 #define LPT_STATUS 0x42
15 #define SYSTEM_CLOCK_8_MHZ 0x20
18 HALP_ROLLOVER HalpRolloverTable
[15];
20 /* Accuracy is 97.5% */
21 static const HALP_ROLLOVER RolloverTable1
[15] =
23 {1996, 9996}, /* 1 ms */
37 {29951, 149995} /* 15 ms */
39 static const HALP_ROLLOVER RolloverTable2
[15] =
41 {2463, 10022}, /* 1 ms */
55 {36864, 150000} /* 15 ms */
58 /* PRIVATE FUNCTIONS *********************************************************/
62 HalpInitializeClockPc98(VOID
)
64 /* Obtain system clock value from the parallel port */
65 if (__inbyte(LPT_STATUS
) & SYSTEM_CLOCK_8_MHZ
)
67 PIT_FREQUENCY
= TIMER_FREQUENCY_1
;
68 RtlCopyMemory(HalpRolloverTable
, RolloverTable1
, sizeof(HALP_ROLLOVER
) * 15);
72 PIT_FREQUENCY
= TIMER_FREQUENCY_2
;
73 RtlCopyMemory(HalpRolloverTable
, RolloverTable2
, sizeof(HALP_ROLLOVER
) * 15);