(* FIXME: this module should probably be moved somewhere global so all applications can use it *) MODULE OS; CONST WINDOW_STRUCT_SIZE = 36; EXTERN PROCEDURE new_window, destroy_window, draw_str_to_overlay, get_window_overlay_number, draw_widgets_to_window, draw_filled_rectangle_to_overlay, GetNextWindowEvent, DrawPixel, save_state_and_yield_task, start_dragging_window, handle_widget_click, fill_window, fill_overlay, set_window_flags, menu_update_event, menu_bar_click_event, close_menu, new_messagebox, launch_fxf_from_disk, get_boot_disk_id, string_to_int, set_tilemap, draw_tile_to_overlay, ryfs_get_file_list, copy_memory_bytes, IsRomDiskAvailable, end_current_task: INT; EXTERN PROCEDURE brk: INT; EXTERN PROCEDURE PortIn: INT; EXTERN EVENT_TYPE_MOUSE_CLICK, EVENT_TYPE_MOUSE_RELEASE, EVENT_TYPE_BUTTON_CLICK, EVENT_TYPE_MENU_BAR_CLICK, EVENT_TYPE_MENU_UPDATE, EVENT_TYPE_MENU_CLICK, EVENT_TYPE_MENU_ACK, WIDGET_TYPE_BUTTON: INT; EXTERN eventArgs: ARRAY 8 OF INT; TYPE Fox32OSButtonWidget = RECORD next, id, type, text, fgColor, bgColor: INT; width, height, x, y: SHORT; END; PROCEDURE Eep(ms: INT;); (* the furry version of sleep :3 *) VAR deadline: INT; BEGIN deadline := ms + PortIn(80000706H); WHILE PortIn(80000706H) <| deadline DO save_state_and_yield_task(); END; END; PROCEDURE DrawWireframeBox(overlay, x, y, w, h, color: INT;); BEGIN draw_filled_rectangle_to_overlay(x, y, w, 1, color, overlay); draw_filled_rectangle_to_overlay(x, y, 1, h, color, overlay); draw_filled_rectangle_to_overlay(x + w - 1, y, 1, h, color, overlay); draw_filled_rectangle_to_overlay(x, y + h - 1, w, 1, color, overlay); END; END.