Rev 8860 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8097 | maxcodehac | 1 | MODULE HW; |
2 | |||
9648 | akron1 | 3 | IMPORT |
4 | SYSTEM, KOSAPI; |
||
8097 | maxcodehac | 5 | |
9648 | akron1 | 6 | |
7 | PROCEDURE BeginDraw; |
||
8097 | maxcodehac | 8 | BEGIN |
9648 | akron1 | 9 | KOSAPI.sysfunc2(12, 1) |
10 | END BeginDraw; |
||
8097 | maxcodehac | 11 | |
9648 | akron1 | 12 | |
13 | PROCEDURE EndDraw; |
||
8097 | maxcodehac | 14 | BEGIN |
9648 | akron1 | 15 | KOSAPI.sysfunc2(12, 2) |
16 | END EndDraw; |
||
17 | |||
18 | |||
19 | PROCEDURE DefineAndDrawWindow (left, top, width, height, color, style, hcolor, hstyle: INTEGER; header: ARRAY OF CHAR); |
||
20 | BEGIN |
||
21 | KOSAPI.sysfunc6(0, left*65536 + width, top*65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(header[0])) |
||
8097 | maxcodehac | 22 | END DefineAndDrawWindow; |
23 | |||
9648 | akron1 | 24 | |
25 | PROCEDURE WriteTextToWindow (x, y, color: INTEGER; text: ARRAY OF CHAR); |
||
8097 | maxcodehac | 26 | BEGIN |
9648 | akron1 | 27 | KOSAPI.sysfunc6(4, x*65536 + y, color + LSL(48, 24), SYSTEM.ADR(text[0]), LENGTH(text), 0) |
8097 | maxcodehac | 28 | END WriteTextToWindow; |
29 | |||
9648 | akron1 | 30 | |
31 | PROCEDURE WaitForEvent (): INTEGER; |
||
32 | RETURN KOSAPI.sysfunc1(10) |
||
8097 | maxcodehac | 33 | END WaitForEvent; |
34 | |||
9648 | akron1 | 35 | |
8097 | maxcodehac | 36 | PROCEDURE ExitApp; |
37 | BEGIN |
||
9648 | akron1 | 38 | KOSAPI.sysfunc1(-1) |
8097 | maxcodehac | 39 | END ExitApp; |
40 | |||
9648 | akron1 | 41 | |
42 | PROCEDURE draw_window (header, text: ARRAY OF CHAR); |
||
43 | CONST |
||
44 | WHITE = 0FFFFFFH; |
||
45 | RED = 0C00000H; |
||
46 | GREEN = 0008000H; |
||
47 | BLUE = 00000C0H; |
||
48 | GRAY = 0808080H; |
||
8097 | maxcodehac | 49 | BEGIN |
9648 | akron1 | 50 | BeginDraw; |
51 | DefineAndDrawWindow(200, 200, 300, 150, WHITE, 51, 0, 0, header); |
||
52 | WriteTextToWindow( 5, 10, RED, text); |
||
53 | WriteTextToWindow(35, 30, GREEN, text); |
||
54 | WriteTextToWindow(65, 50, BLUE, text); |
||
55 | WriteTextToWindow(95, 70, GRAY, text); |
||
56 | EndDraw |
||
8097 | maxcodehac | 57 | END draw_window; |
58 | |||
9648 | akron1 | 59 | |
60 | PROCEDURE main (header, text: ARRAY OF CHAR); |
||
61 | CONST |
||
62 | EVENT_REDRAW = 1; |
||
63 | EVENT_KEY = 2; |
||
64 | EVENT_BUTTON = 3; |
||
8097 | maxcodehac | 65 | BEGIN |
9648 | akron1 | 66 | WHILE TRUE DO |
67 | CASE WaitForEvent() OF |
||
68 | |EVENT_REDRAW: draw_window(header, text) |
||
69 | |EVENT_KEY: ExitApp |
||
70 | |EVENT_BUTTON: ExitApp |
||
71 | END |
||
72 | END |
||
73 | END main; |
||
8097 | maxcodehac | 74 | |
9648 | akron1 | 75 | |
8097 | maxcodehac | 76 | BEGIN |
9648 | akron1 | 77 | main("Hello", "Hello, world!") |
8097 | maxcodehac | 78 | END HW. |