Subversion Repositories Kolibri OS

Rev

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.