1,50 → 1,78 |
MODULE HW; |
|
IMPORT sys := SYSTEM, KOSAPI; |
IMPORT |
SYSTEM, KOSAPI; |
|
PROCEDURE WindowRedrawStatus(p: INTEGER); |
|
PROCEDURE BeginDraw; |
BEGIN |
KOSAPI.sysfunc2(12, p) |
END WindowRedrawStatus; |
KOSAPI.sysfunc2(12, 1) |
END BeginDraw; |
|
PROCEDURE DefineAndDrawWindow(x, y, w, h, color, style, hcolor, hstyle, htext: INTEGER); |
|
PROCEDURE EndDraw; |
BEGIN |
KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), htext) |
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), sys.ADR(text[0]), LENGTH(text), 0) |
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 |
WindowRedrawStatus(1); |
DefineAndDrawWindow(200, 200, 200, 100, 0FFFFFFH, 51, 0, 0, sys.ADR(header)); |
WriteTextToWindow(10, 10, 0FF0000H, text); |
WindowRedrawStatus(2); |
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); |
|
PROCEDURE main (header, text: ARRAY OF CHAR); |
CONST |
EVENT_REDRAW = 1; |
EVENT_KEY = 2; |
EVENT_BUTTON = 3; |
BEGIN |
WHILE TRUE DO |
CASE WaitForEvent() OF |
|1: draw_window(header, text) |
|3: ExitApp |
ELSE |
|EVENT_REDRAW: draw_window(header, text) |
|EVENT_KEY: ExitApp |
|EVENT_BUTTON: ExitApp |
END |
END |
END Main; |
END main; |
|
|
BEGIN |
Main("HW", "Hello, world!") |
main("Hello", "Hello, world!") |
END HW. |