/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. |