MODULE HW; IMPORT SYSTEM, KOSAPI; PROCEDURE BeginDraw; BEGIN KOSAPI.sysfunc2(12, 1) END BeginDraw; PROCEDURE EndDraw; BEGIN KOSAPI.sysfunc2(12, 2) END EndDraw; PROCEDURE DefineAndDrawWindow (left, top, width, height, color, style, hcolor, hstyle: INTEGER; header: ARRAY OF CHAR); BEGIN KOSAPI.sysfunc6(0, left*65536 + width, top*65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(header[0])) END DefineAndDrawWindow; PROCEDURE WriteTextToWindow (x, y, color: INTEGER; text: ARRAY OF CHAR); BEGIN KOSAPI.sysfunc6(4, x*65536 + y, color + LSL(48, 24), SYSTEM.ADR(text[0]), LENGTH(text), 0) END WriteTextToWindow; PROCEDURE WaitForEvent (): INTEGER; RETURN KOSAPI.sysfunc1(10) END WaitForEvent; PROCEDURE ExitApp; BEGIN KOSAPI.sysfunc1(-1) END ExitApp; PROCEDURE draw_window (header, text: ARRAY OF CHAR); CONST WHITE = 0FFFFFFH; RED = 0C00000H; GREEN = 0008000H; BLUE = 00000C0H; GRAY = 0808080H; BEGIN BeginDraw; DefineAndDrawWindow(200, 200, 300, 150, WHITE, 51, 0, 0, header); WriteTextToWindow( 5, 10, RED, text); WriteTextToWindow(35, 30, GREEN, text); WriteTextToWindow(65, 50, BLUE, text); WriteTextToWindow(95, 70, GRAY, text); EndDraw END draw_window; PROCEDURE main (header, text: ARRAY OF CHAR); CONST EVENT_REDRAW = 1; EVENT_KEY = 2; EVENT_BUTTON = 3; BEGIN WHILE TRUE DO CASE WaitForEvent() OF |EVENT_REDRAW: draw_window(header, text) |EVENT_KEY: ExitApp |EVENT_BUTTON: ExitApp END END END main; BEGIN main("Hello", "Hello, world!") END HW.