fox32os/applications/fetcher/OS.okm

50 lines
1.8 KiB
Plaintext

(* 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.