| /* |
| * Copyright 2017, Adrien Destugues, pulkomandy@pulkomandy.tk |
| * Distributed under terms of the MIT license. |
| */ |
| |
| |
| #include "ctk-arch.h" |
| #include "libconio.h" |
| |
| /* Keyboard management */ |
| ctk_arch_key_t |
| ctk_arch_getkey(void) |
| { |
| return 0; |
| } |
| |
| unsigned char kbhit(void) |
| { |
| return 0; |
| } |
| |
| #if 0 |
| /* Mouse management */ |
| void ctk_mouse_init(void) |
| { |
| mx = 50; |
| my = 20; |
| } |
| |
| unsigned char ctk_mouse_xtoc(unsigned short x) |
| { |
| return x; |
| } |
| |
| unsigned char ctk_mouse_ytoc(unsigned short y) |
| { |
| return y; |
| } |
| |
| void ctk_mouse_hide(void) |
| { |
| vram_attr[ctk_mouse_ytoc(my)][ctk_mouse_xtoc(mx)] &= ~32; |
| } |
| |
| void ctk_mouse_show(void) |
| { |
| vram_attr[ctk_mouse_ytoc(my)][ctk_mouse_xtoc(mx)] |= 32; |
| } |
| |
| unsigned short ctk_mouse_x(void) |
| { |
| if (mouse_x != 0) |
| { |
| ctk_mouse_hide(); |
| mx += mouse_x; mouse_x = 0; |
| if (mx < 0) mx = 0; |
| if (mx >= LIBCONIO_SCREEN_WIDTH) mx = LIBCONIO_SCREEN_WIDTH - 1; |
| } |
| return mx; |
| } |
| |
| unsigned short ctk_mouse_y(void) |
| { |
| if (mouse_y != 0) { |
| ctk_mouse_hide(); |
| my += mouse_y; mouse_y = 0; |
| if (my < 0) my = 0; |
| if (my >= LIBCONIO_SCREEN_HEIGHT) my = LIBCONIO_SCREEN_HEIGHT - 1; |
| } |
| return my; |
| } |
| |
| unsigned char ctk_mouse_button(void) |
| { |
| return mouse_buttons; |
| } |
| #endif |
| |
| extern int vram[]; |
| extern int vram_attr[]; |
| #define VRAM_WIDTH 64 |
| |
| /* Character display */ |
| void |
| ctk_arch_draw_char(char c, |
| unsigned char x, unsigned char y, |
| unsigned char reversed, |
| unsigned char color) |
| { |
| vram[y * VRAM_WIDTH + x] = c; |
| if (x & 1) { |
| vram_attr[(y * VRAM_WIDTH + x) / 2] &= 0xff; |
| vram_attr[(y * VRAM_WIDTH + x) / 2] |= color << 8; |
| } else { |
| vram_attr[(y * VRAM_WIDTH + x) / 2] &= 0xff00; |
| vram_attr[(y * VRAM_WIDTH + x) / 2] |= color; |
| } |
| } |