timerbios.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "wwbios.h"
  2. extern "C" {
  3. #include "../wonx/wonx_include/timer.h"
  4. }
  5. enum {
  6. RTC_RESET = 0,
  7. RTC_SET_DATETIME,
  8. RTC_GET_DATETIME,
  9. RTC_SET_DATETIME_STRUCT,
  10. RTC_GET_DATETIME_STRUCT,
  11. RTC_ENABLE_ALARM,
  12. RTC_DISABLE_ALARM,
  13. TIMER_ENABLE,
  14. TIMER_DISABLE,
  15. TIMER_GET_COUNT,
  16. };
  17. void timer_handler(int func_no) {
  18. switch(func_no) {
  19. case RTC_RESET:
  20. /* WonX で未実装
  21. rtc_reset();
  22. */
  23. break;
  24. case RTC_SET_DATETIME:
  25. rtc_set_datetime(wregs[BX], wregs[CX]);
  26. break;
  27. case RTC_GET_DATETIME:
  28. wregs[AX] = rtc_get_datetime(wregs[BX]);
  29. break;
  30. case RTC_SET_DATETIME_STRUCT:
  31. rtc_set_datetime_struct((datetime_t *)(c_ds + wregs[DX]));
  32. break;
  33. case RTC_GET_DATETIME_STRUCT:
  34. rtc_get_datetime_struct((datetime_t *)(c_ds + wregs[DX]));
  35. break;
  36. case RTC_ENABLE_ALARM:
  37. rtc_enable_alarm(*bregs[BL], *bregs[BH]);
  38. break;
  39. case RTC_DISABLE_ALARM:
  40. rtc_disable_alarm();
  41. break;
  42. case TIMER_ENABLE:
  43. timer_enable(*bregs[AL], *bregs[BL], wregs[CX]);
  44. break;
  45. case TIMER_DISABLE:
  46. timer_disable(*bregs[AL]);
  47. break;
  48. case TIMER_GET_COUNT:
  49. wregs[AX] = timer_get_count(*bregs[AL]);
  50. break;
  51. default:
  52. break;
  53. }
  54. }