Rev 6613 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6613 | Rev 7597 | ||
---|---|---|---|
1 | MODULE HW; |
1 | MODULE HW; |
2 | 2 | ||
3 | IMPORT sys := SYSTEM, KOSAPI; |
3 | IMPORT sys := SYSTEM, KOSAPI; |
4 | 4 | ||
5 | PROCEDURE WindowRedrawStatus(p: INTEGER); |
5 | PROCEDURE WindowRedrawStatus(p: INTEGER); |
6 | VAR res: INTEGER; |
- | |
7 | BEGIN |
6 | BEGIN |
8 | res := KOSAPI.sysfunc2(12, p) |
7 | KOSAPI.sysfunc2(12, p) |
9 | END WindowRedrawStatus; |
8 | END WindowRedrawStatus; |
10 | 9 | ||
11 | PROCEDURE DefineAndDrawWindow(x, y, w, h, color, style, hcolor, hstyle, htext: INTEGER); |
10 | PROCEDURE DefineAndDrawWindow(x, y, w, h, color, style, hcolor, hstyle, htext: INTEGER); |
12 | VAR res: INTEGER; |
- | |
13 | BEGIN |
11 | BEGIN |
14 | res := KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), htext) |
12 | KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), htext) |
15 | END DefineAndDrawWindow; |
13 | END DefineAndDrawWindow; |
16 | 14 | ||
17 | PROCEDURE WriteTextToWindow(x, y, color: INTEGER; text: ARRAY OF CHAR); |
15 | PROCEDURE WriteTextToWindow(x, y, color: INTEGER; text: ARRAY OF CHAR); |
18 | VAR res: INTEGER; |
- | |
19 | BEGIN |
16 | BEGIN |
20 | res := KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(48, 24), sys.ADR(text[0]), LENGTH(text), 0) |
17 | KOSAPI.sysfunc6(4, x * 65536 + y, color + LSL(48, 24), sys.ADR(text[0]), LENGTH(text), 0) |
21 | END WriteTextToWindow; |
18 | END WriteTextToWindow; |
22 | 19 | ||
23 | PROCEDURE WaitForEvent(): INTEGER; |
20 | PROCEDURE WaitForEvent(): INTEGER; |
24 | RETURN KOSAPI.sysfunc1(10) |
21 | RETURN KOSAPI.sysfunc1(10) |
25 | END WaitForEvent; |
22 | END WaitForEvent; |
26 | 23 | ||
27 | PROCEDURE ExitApp; |
24 | PROCEDURE ExitApp; |
28 | VAR res: INTEGER; |
- | |
29 | BEGIN |
25 | BEGIN |
30 | res := KOSAPI.sysfunc1(-1) |
26 | KOSAPI.sysfunc1(-1) |
31 | END ExitApp; |
27 | END ExitApp; |
32 | 28 | ||
33 | PROCEDURE draw_window(header, text: ARRAY OF CHAR); |
29 | PROCEDURE draw_window(header, text: ARRAY OF CHAR); |
34 | BEGIN |
30 | BEGIN |
35 | WindowRedrawStatus(1); |
31 | WindowRedrawStatus(1); |
36 | DefineAndDrawWindow(200, 200, 200, 100, 0FFFFFFH, 51, 0, 0, sys.ADR(header)); |
32 | DefineAndDrawWindow(200, 200, 200, 100, 0FFFFFFH, 51, 0, 0, sys.ADR(header)); |
37 | WriteTextToWindow(10, 10, 0FF0000H, text); |
33 | WriteTextToWindow(10, 10, 0FF0000H, text); |
38 | WindowRedrawStatus(2); |
34 | WindowRedrawStatus(2); |
39 | END draw_window; |
35 | END draw_window; |
40 | 36 | ||
41 | PROCEDURE Main(header, text: ARRAY OF CHAR); |
37 | PROCEDURE Main(header, text: ARRAY OF CHAR); |
42 | BEGIN |
38 | BEGIN |
43 | WHILE TRUE DO |
39 | WHILE TRUE DO |
44 | CASE WaitForEvent() OF |
40 | CASE WaitForEvent() OF |
45 | |1: draw_window(header, text) |
41 | |1: draw_window(header, text) |
46 | |3: ExitApp |
42 | |3: ExitApp |
47 | ELSE |
43 | ELSE |
48 | END |
44 | END |
49 | END |
45 | END |
50 | END Main; |
46 | END Main; |
51 | 47 | ||
52 | BEGIN |
48 | BEGIN |
53 | Main("HW", "Hello, world!") |
49 | Main("HW", "Hello, world!") |
54 | END HW. |
50 | END HW. |