123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- #include "wwbios.h"
- extern "C" {
- #include "../wonx/wonx_include/text.h"
- }
- enum {
- TEXT_SCREEN_INIT = 0,
- TEXT_WINDOW_INIT,
- TEXT_SET_MODE,
- TEXT_GET_MODE,
- TEXT_PUT_CHAR,
- TEXT_PUT_STRING,
- TEXT_PUT_SUBSTRING,
- TEXT_PUT_NUMERIC,
- TEXT_FILL_CHAR,
- TEXT_SET_PALETTE,
- TEXT_GET_PALETTE,
- TEXT_SET_ANK_FONT,
- TEXT_SET_SJIS_FONT,
- TEXT_GET_FONTDATA,
- TEXT_SET_SCREEN,
- TEXT_GET_SCREEN,
- CURSOR_DISPLAY,
- CURSOR_STATUS,
- CURSOR_SET_LOCATION,
- CURSOR_GET_LOCATION,
- CURSOR_SET_TYPE,
- CURSOR_GET_TYPE,
- };
- void text_handler(int func_no) {
- int tmp;
- switch(func_no) {
- case TEXT_SCREEN_INIT:
- text_screen_init();
- break;
- case TEXT_WINDOW_INIT:
- text_window_init(*bregs[BL], *bregs[BH], *bregs[CL], *bregs[CH], wregs[DX]);
- break;
- case TEXT_SET_MODE:
- text_set_mode(wregs[BX]);
- break;
- case TEXT_GET_MODE:
- wregs[AX] = text_get_mode();
- break;
- case TEXT_PUT_CHAR:
- text_put_char(*bregs[BL], *bregs[BH], wregs[CX]);
- break;
- case TEXT_PUT_STRING:
- wregs[AX] = text_put_string(*bregs[BL], *bregs[BH], (char *)(c_ds + wregs[DX]));
- break;
- case TEXT_PUT_SUBSTRING:
- text_put_substring(*bregs[BL], *bregs[BH], (char *)(c_ds + wregs[DX]), wregs[CX]);
- break;
- case TEXT_PUT_NUMERIC:
- if((*bregs[CH]) & NUM_STORE) {
- text_store_numeric((char *)(c_ds + wregs[SI]), *bregs[CL], *bregs[CH], wregs[DX]);
- } else {
- text_put_numeric(*bregs[BL], *bregs[BH], *bregs[CL], *bregs[CH], wregs[DX]);
- }
- break;
- case TEXT_FILL_CHAR:
- text_fill_char(*bregs[BL], *bregs[BH], wregs[CX], wregs[DX]);
- break;
- case TEXT_SET_PALETTE:
- text_set_palette(wregs[BX]);
- break;
- case TEXT_GET_PALETTE:
- wregs[AX] = text_get_palette();
- break;
- case TEXT_SET_ANK_FONT:
- text_set_ank_font(*bregs[BL], *bregs[BH], wregs[CX], c_ds + wregs[DX]);
- break;
- case TEXT_SET_SJIS_FONT:
- text_set_sjis_font((void *)(wregs[BX] << 4 | wregs[DX]));
- break;
- case TEXT_GET_FONTDATA:
- wregs[AX] = text_get_fontdata(wregs[CX], c_ds + wregs[DX]);
- break;
- case TEXT_SET_SCREEN:
- // text_set_screen(wregs[BX]); // マニュアル第 1 版は間違い
- text_set_screen(*bregs[AL]);
- break;
- case TEXT_GET_SCREEN:
- wregs[AX] = text_get_screen();
- break;
- case CURSOR_DISPLAY:
- cursor_display(*bregs[AL]);
- break;
- case CURSOR_STATUS:
- wregs[AX] = cursor_status();
- break;
- case CURSOR_SET_LOCATION:
- cursor_set_location(*bregs[BL], *bregs[BH], *bregs[CL], *bregs[CH]);
- break;
- case CURSOR_GET_LOCATION:
- tmp = cursor_get_location();
- wregs[DX] = (tmp >> 16) & 0xffff;
- wregs[AX] = tmp & 0xffff;
- break;
- case CURSOR_SET_TYPE:
- cursor_set_type(*bregs[BL], *bregs[CL]);
- break;
- case CURSOR_GET_TYPE:
- tmp = cursor_get_type();
- wregs[DX] = (tmp >> 16) & 0xffff;
- wregs[AX] = tmp & 0xffff;
- break;
- default:
- break;
- }
- }
|