static unsigned int videointerface_writectrl(struct system_node *self, struct system_node *current, struct service_state *state, void *buffer, unsigned int count, unsigned int offset) { struct ctrl_videosettings *settings = buffer; if (settings->w == 80) { if (videointerface.settings.w == 320) vga_restore(); ctrl_setvideosettings(&videointerface.settings, 80, 25, 2); vga_settext(); } else { if (videointerface.settings.w == 80) vga_save(); ctrl_setvideosettings(&videointerface.settings, 320, 200, 1); vga_setgraphic(); } video_notifymode(&videointerface, videointerface.settings.w, videointerface.settings.h, videointerface.settings.bpp); return count; }
static void videointerface_setmode(struct ctrl_videosettings *settings) { if (settings->w == 80) { if (videointerface.settings.w == 320) vga_restore(); ctrl_setvideosettings(&videointerface.settings, 80, 25, 16); vga_settext(); } else { if (videointerface.settings.w == 80) vga_save(); ctrl_setvideosettings(&videointerface.settings, 320, 200, 8); vga_setgraphic(); } event_notifyvideomode(videointerface.settings.w, videointerface.settings.h, videointerface.settings.bpp); }