Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 9647 → Rev 9648

/programs/develop/oberon07/samples/BUILD_ALL.SH
0,0 → 1,5
#SHS
/kolibrios/develop/oberon07/compiler.kex HW.ob07 kosexe -out /tmp0/1/HW.kex -stk 1
/kolibrios/develop/oberon07/compiler.kex HW_con.ob07 kosexe -out /tmp0/1/HW_con.kex -stk 1
/kolibrios/develop/oberon07/compiler.kex Dialogs.ob07 kosexe -out /tmp0/1/Dialogs.kex -stk 1
exit
/programs/develop/oberon07/samples/Dialogs.ob07
1,58 → 1,84
MODULE Dialogs;
 
IMPORT KOSAPI, sys := SYSTEM, OpenDlg, ColorDlg;
IMPORT
KOSAPI, SYSTEM, OpenDlg, ColorDlg;
 
VAR header: ARRAY 1024 OF CHAR; back_color: INTEGER;
 
PROCEDURE WindowRedrawStatus(p: INTEGER);
CONST
btnNone = 0;
btnClose = 1;
btnOpen = 17;
btnColor = 18;
 
 
VAR
header: ARRAY 1024 OF CHAR;
back_color: 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 WaitForEvent(): INTEGER;
RETURN KOSAPI.sysfunc1(10)
END WaitForEvent;
 
 
PROCEDURE ExitApp;
BEGIN
KOSAPI.sysfunc1(-1)
END ExitApp;
 
 
PROCEDURE pause(t: INTEGER);
BEGIN
KOSAPI.sysfunc2(5, t)
END pause;
 
 
PROCEDURE Buttons;
 
PROCEDURE Button(id, X, Y, W, H: INTEGER; Caption: ARRAY OF CHAR);
VAR n, aux: INTEGER;
VAR
n: INTEGER;
BEGIN
n := LENGTH(Caption);
aux := KOSAPI.sysfunc5(8, X * 65536 + W, Y * 65536 + H, id, 00C0C0C0H);
KOSAPI.sysfunc5(8, X*65536 + W, Y*65536 + H, id, 00C0C0C0H);
X := X + (W - 8 * n) DIV 2;
Y := Y + (H - 14) DIV 2;
aux := KOSAPI.sysfunc6(4, X * 65536 + Y, LSL(48, 24), sys.ADR(Caption[0]), n, 0)
KOSAPI.sysfunc6(4, X*65536 + Y, LSL(48, 24), SYSTEM.ADR(Caption[0]), n, 0)
END Button;
 
BEGIN
Button(17, 5, 5, 70, 25, "open");
Button(18, 85, 5, 70, 25, "color");
Button(btnOpen, 5, 5, 70, 25, "open");
Button(btnColor, 85, 5, 70, 25, "color");
END Buttons;
 
 
PROCEDURE draw_window;
BEGIN
WindowRedrawStatus(1);
DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, sys.ADR(header[0]));
BeginDraw;
DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, header);
Buttons;
WindowRedrawStatus(2);
EndDraw;
END draw_window;
 
 
PROCEDURE OpenFile(Open: OpenDlg.Dialog);
BEGIN
IF Open # NIL THEN
66,6 → 92,7
END
END OpenFile;
 
 
PROCEDURE SelColor(Color: ColorDlg.Dialog);
BEGIN
IF Color # NIL THEN
79,32 → 106,54
END
END SelColor;
 
 
PROCEDURE GetButton (): INTEGER;
VAR
btn: INTEGER;
BEGIN
btn := KOSAPI.sysfunc1(17);
IF btn MOD 256 = 0 THEN
btn := btn DIV 256
ELSE
btn := btnNone
END
RETURN btn
END GetButton;
 
 
PROCEDURE main;
VAR Open: OpenDlg.Dialog; Color: ColorDlg.Dialog; res, al: INTEGER;
CONST
EVENT_REDRAW = 1;
EVENT_KEY = 2;
EVENT_BUTTON = 3;
VAR
Open: OpenDlg.Dialog;
Color: ColorDlg.Dialog;
BEGIN
back_color := 00FFFFFFH;
header := "Dialogs";
draw_window;
Open := OpenDlg.Create(draw_window, 0, "/sys", "ASM|TXT|INI");
Color := ColorDlg.Create(draw_window);
 
WHILE TRUE DO
CASE WaitForEvent() OF
|1: draw_window
|3: res := KOSAPI.sysfunc1(17);
al := LSR(LSL(res, 24), 24);
res := LSR(res, 8);
IF al = 0 THEN
CASE res OF
| 1: ExitApp
|17: OpenFile(Open)
|18: SelColor(Color)
|EVENT_REDRAW:
draw_window
 
|EVENT_KEY:
 
|EVENT_BUTTON:
CASE GetButton() OF
|btnNone:
|btnClose: ExitApp
|btnOpen: OpenFile(Open)
|btnColor: SelColor(Color)
END
END
ELSE
END
END
END main;
 
 
BEGIN
main
END Dialogs.
/programs/develop/oberon07/samples/HW.ob07
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.
/programs/develop/oberon07/samples/HW_con.ob07
1,6 → 1,7
MODULE HW_con;
 
IMPORT Out, In, Console, DateTime;
IMPORT
Out, In, Console, DateTime;
 
 
PROCEDURE OutInt2(n: INTEGER);
16,9 → 17,7
PROCEDURE OutMonth(n: INTEGER);
VAR
str: ARRAY 4 OF CHAR;
 
BEGIN
 
CASE n OF
| 1: str := "jan"
| 2: str := "feb"
33,7 → 32,6
|11: str := "nov"
|12: str := "dec"
END;
 
Out.String(str)
END OutMonth;
 
40,18 → 38,17
 
PROCEDURE main;
VAR
Year, Month, Day, Hour, Min, Sec, Msec: INTEGER;
 
Year, Month, Day,
Hour, Min, Sec, Msec: INTEGER;
BEGIN
Out.String("Hello, world!"); Out.Ln;
Console.SetColor(Console.White, Console.Red);
DateTime.Now(Year, Month, Day, Hour, Min, Sec, Msec);
Out.Int(Year, 0); Out.Char("-");
OutMonth(Month); Out.Char("-");
OutInt2(Day); Out.Char(" ");
OutInt2(Hour); Out.Char(":");
OutInt2(Min); Out.Char(":");
OutInt2(Sec)
OutInt2(Day); Out.Char("-"); OutMonth(Month); Out.Char("-"); Out.Int(Year, 0); Out.Char(" ");
OutInt2(Hour); Out.Char(":"); OutInt2(Min); Out.Char(":"); OutInt2(Sec); Out.Ln;
Console.SetColor(Console.Blue, Console.LightGray);
Out.Ln; Out.String("press enter...");
In.Ln
END main;
 
 
58,6 → 55,5
BEGIN
Console.open;
main;
In.Ln;
Console.exit(TRUE)
END HW_con.