diff --git a/src/vkvm.h b/src/vkvm.h new file mode 100644 index 0000000..a7b9788 --- /dev/null +++ b/src/vkvm.h @@ -0,0 +1,74 @@ +#ifndef LIBRARY_VKVM_H +#define LIBRARY_VKVM_H + +typedef int type_todo; + +private struct interruptVector { + int pid; + int signal; +}; + +//enum config file defaults { +const int max_width_pixels = 800; +const int max_height_pixels = 600; +const int max_textMode_width; +const int max_textMode_height; +// TODO: add ControlRegisters members here +//TODO: add get/set methods +//}; + + +enum GraphicMode { + Text, + BlackWhite, + Gray_256, + TrueColor; +}; + +private struct controlRegisters { + int layout_version + int trigger_reset; + int width_pixels; + int height_pixels; + GraphicMode graphicMode; + int autoRedrawInterval; + int timerInterruptInterval; + type_todo bw_background_color; + type_todo bw_foreground_color; + int textMode_width; + int textMode_height; + int textMode_font; + int textMode_font_width; + int textMode_font_height; + int mouse_pos_x; + int mouse_pos_y; + char keyboardBuffer[16]; + int keyboardBuffer_index_w; + int keyboardBuffer_index_r; +}; + +//TODO: add init +//TODO: add methods for a event handling approach +//TODO: add methods for a pooling approach + +// interrupts +/* +1 timer +2 mouse move + mouse button + key down + key up + reread ControlRegisters + redraw GUI // opposite direction (i.e. client to GUI)! + render Text // text mode client -> text rendering process -> redraw GUI + */ + +// Shared Memory Layout +// -------------------------------------------------------------------- +// struct ControlRegisters +// char reserved[1024] +// Interrupt Vector Table [64] +// text area [max_textMode_width * max_textMode_height] +// pixel area [max_height_pixels * max_height_pixels * sizeof(uint_32)] + +#endif \ No newline at end of file