123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #include "../mmage/preference.h"
- #include "wwbios.h"
- extern "C" {
- #include "../wonx/wonx_include/system.h"
- }
- enum {
- SYS_INTERRUPT_SET_HOOK = 0,
- SYS_INTERRUPT_RESET_HOOK,
- SYS_WAIT,
- SYS_GET_TICK_COUNT,
- SYS_SLEEP,
- SYS_SET_SLEEP_TIME,
- SYS_GET_SLEEP_TIME,
- SYS_SET_AWAKE_KEY,
- SYS_GET_AWAKE_KEY,
- SYS_SET_KEEPALIVE_INT,
- SYS_GET_OWNERINFO,
- SYS_SUSPEND,
- SYS_RESUME,
- SYS_SET_REMOTE,
- SYS_GET_REMOTE,
- SYS_ALLOC_IRAM,
- SYS_FREE_IRAM,
- SYS_GET_MY_IRAM,
- SYS_GET_VERSION,
- SYS_SWAP,
- SYS_SET_RESUME,
- SYS_GET_RESUME,
- };
- void system_handler(int func_no) {
- int tmp;
- switch(func_no) {
- case SYS_INTERRUPT_SET_HOOK:
- /*
- sys_interrupt_set_hook(*bregs[AL], (intvector_t *)(c_ds + wregs[BX]), (intvector_t *)(c_ds + wregs[DX]));
- */
- break;
- case SYS_INTERRUPT_RESET_HOOK:
- /*
- sys_interrupt_reset_hook(*bregs[AL], (intvector_t *)(c_ds + wregs[BX]));
- */
- break;
- case SYS_WAIT:
- sys_wait(wregs[CX]);
- break;
- case SYS_GET_TICK_COUNT:
- tmp = sys_get_tick_count();
- wregs[DX] = (tmp >> 16) & 0xffff;
- wregs[AX] = tmp & 0xffff;
- break;
- case SYS_SLEEP:
- sys_sleep();
- break;
- case SYS_SET_SLEEP_TIME:
- sys_set_sleep_time(*bregs[BL]);
- break;
- case SYS_GET_SLEEP_TIME:
- wregs[AX] = sys_get_sleep_time();
- break;
- case SYS_SET_AWAKE_KEY:
- sys_set_awake_key(wregs[BX]);
- break;
- case SYS_GET_AWAKE_KEY:
- wregs[AX] = sys_get_awake_key();
- break;
- case SYS_SET_KEEPALIVE_INT:
- sys_set_keepalive_int(*bregs[BL]);
- break;
- case SYS_GET_OWNERINFO:
- memcpy((void *)(c_ds + wregs[DX]), (void *)&mmconfig->ownerinfo,
- (wregs[CX] > sizeof(mmconfig->ownerinfo)) ? sizeof(mmconfig->ownerinfo) : wregs[CX]);
- // sys_get_ownerinfo(wregs[CX], (char *)(c_ds + wregs[DX]));
- break;
- case SYS_SUSPEND:
- wregs[AX] = sys_suspend(*bregs[AL]);
- break;
- case SYS_RESUME:
- sys_resume(*bregs[AL]);
- break;
- case SYS_SET_REMOTE:
- sys_set_remote(*bregs[AL]);
- break;
- case SYS_GET_REMOTE:
- wregs[AX] = sys_get_remote();
- break;
- case SYS_ALLOC_IRAM:
- wregs[AX] = (unsigned short)sys_alloc_iram((void *)wregs[BX], wregs[CX]);
- break;
- case SYS_FREE_IRAM:
- sys_free_iram((void *)wregs[BX]);
- break;
- case SYS_GET_MY_IRAM:
- wregs[AX] = (unsigned short)sys_get_my_iram();
- break;
- case SYS_GET_VERSION:
- wregs[AX] = sys_get_version();
- break;
- case SYS_SWAP:
- wregs[AX] = sys_swap(*bregs[AL]);
- break;
- case SYS_SET_RESUME:
- sys_set_resume(wregs[BX]);
- break;
- case SYS_GET_RESUME:
- wregs[AX] = sys_get_resume();
- break;
- default:
- break;
- }
- }
|