mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 16:52:25 +00:00
added oocRandomNumbers, updated newt wrapper with GetKey function. -- noch
Former-commit-id: ab5d3f734e
This commit is contained in:
parent
7de984b46a
commit
6886a243a6
14 changed files with 109 additions and 7 deletions
1
makefile
1
makefile
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sP oocIntStr.Mod
|
$(VOCSTATIC) -sP oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sP oocSysClock.Mod
|
$(VOCSTATIC) -sP oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sP oocTime.Mod
|
$(VOCSTATIC) -sP oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sP oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sP oocIntStr.Mod
|
$(VOCSTATIC) -sP oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sP oocSysClock.Mod
|
$(VOCSTATIC) -sP oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sP oocTime.Mod
|
$(VOCSTATIC) -sP oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sP oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntConv.Mod
|
$(VOCSTATIC) -sPF oocIntConv.Mod
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocTime.Mod
|
||||||
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ stage6:
|
||||||
$(VOCSTATIC) -sPF oocIntConv.Mod
|
$(VOCSTATIC) -sPF oocIntConv.Mod
|
||||||
$(VOCSTATIC) -sPF oocIntStr.Mod
|
$(VOCSTATIC) -sPF oocIntStr.Mod
|
||||||
$(VOCSTATIC) -sPF oocSysClock.Mod
|
$(VOCSTATIC) -sPF oocSysClock.Mod
|
||||||
$(VOCSTATIC) -sPF oocTime.Mod
|
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
|
||||||
# $(VOCSTATIC) -s oocLongStrings.Mod
|
# $(VOCSTATIC) -s oocLongStrings.Mod
|
||||||
# $(CC) oocLongStrings.c
|
# $(CC) oocLongStrings.c
|
||||||
# $(VOCSTATIC) -s oocMsg.Mod
|
# $(VOCSTATIC) -s oocMsg.Mod
|
||||||
|
|
|
||||||
75
src/lib/ooc/oocRandomNumbers.Mod
Normal file
75
src/lib/ooc/oocRandomNumbers.Mod
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
(* $Id: RandomNumbers.Mod,v 1.1 1997/02/07 07:45:32 oberon1 Exp $ *)
|
||||||
|
MODULE oocRandomNumbers;
|
||||||
|
(*
|
||||||
|
For details on this algorithm take a look at
|
||||||
|
Park S.K. and Miller K.W. (1988). Random number generators, good ones are
|
||||||
|
hard to find. Communications of the ACM, 31, 1192-1201.
|
||||||
|
*)
|
||||||
|
|
||||||
|
CONST
|
||||||
|
modulo* = 2147483647; (* =2^31-1 *)
|
||||||
|
|
||||||
|
VAR
|
||||||
|
z : LONGINT;
|
||||||
|
|
||||||
|
PROCEDURE GetSeed* (VAR seed : LONGINT);
|
||||||
|
(* Returns the currently used seed value. *)
|
||||||
|
BEGIN
|
||||||
|
seed := z
|
||||||
|
END GetSeed;
|
||||||
|
|
||||||
|
PROCEDURE PutSeed* (seed : LONGINT);
|
||||||
|
(* Set 'seed' as the new seed value. Any values for 'seed' are allowed, but
|
||||||
|
values beyond the intervall [1..2^31-2] will be mapped into this range. *)
|
||||||
|
BEGIN
|
||||||
|
seed := seed MOD modulo;
|
||||||
|
IF (seed = 0) THEN
|
||||||
|
z := 1
|
||||||
|
ELSE
|
||||||
|
z := seed
|
||||||
|
END
|
||||||
|
END PutSeed;
|
||||||
|
|
||||||
|
PROCEDURE NextRND;
|
||||||
|
CONST
|
||||||
|
a = 16807;
|
||||||
|
q = 127773; (* m div a *)
|
||||||
|
r = 2836; (* m mod a *)
|
||||||
|
VAR
|
||||||
|
lo, hi, test : LONGINT;
|
||||||
|
BEGIN
|
||||||
|
hi := z DIV q;
|
||||||
|
lo := z MOD q;
|
||||||
|
test := a * lo - r * hi;
|
||||||
|
IF (test > 0) THEN
|
||||||
|
z := test
|
||||||
|
ELSE
|
||||||
|
z := test + modulo
|
||||||
|
END
|
||||||
|
END NextRND;
|
||||||
|
|
||||||
|
PROCEDURE RND* (range : LONGINT) : LONGINT;
|
||||||
|
(* Calculates a new number. 'range' has to be in the intervall
|
||||||
|
[1..2^31-2]. Result is a number from 0,1,..,range-1. *)
|
||||||
|
BEGIN
|
||||||
|
NextRND;
|
||||||
|
RETURN z MOD range
|
||||||
|
END RND;
|
||||||
|
|
||||||
|
PROCEDURE Random*() : REAL;
|
||||||
|
(* Calculates a number x with 0.0 <= x < 1.0. *)
|
||||||
|
BEGIN
|
||||||
|
NextRND;
|
||||||
|
RETURN (z-1)*(1 / (modulo-1))
|
||||||
|
END Random;
|
||||||
|
|
||||||
|
(*
|
||||||
|
PROCEDURE Randomize*;
|
||||||
|
BEGIN
|
||||||
|
PutSeed (Unix.time (Unix.NULL))
|
||||||
|
END Randomize;
|
||||||
|
*)
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
z := 1
|
||||||
|
END oocRandomNumbers.
|
||||||
|
|
@ -7,6 +7,8 @@ all:
|
||||||
$(VOC) -s newt.Mod newttest.Mod -m
|
$(VOC) -s newt.Mod newttest.Mod -m
|
||||||
$(VOC) -s newt.Mod newttest2.Mod -m
|
$(VOC) -s newt.Mod newttest2.Mod -m
|
||||||
|
|
||||||
|
tetris:
|
||||||
|
$(VOC) -s newt.Mod tetris.Mod -m
|
||||||
clean:
|
clean:
|
||||||
rm *.h
|
rm *.h
|
||||||
rm *.c
|
rm *.c
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,16 @@ BEGIN
|
||||||
newtWaitForKey
|
newtWaitForKey
|
||||||
END WaitForKey;
|
END WaitForKey;
|
||||||
|
|
||||||
|
PROCEDURE -newtGetKey(): Int32
|
||||||
|
"newtGetKey()";
|
||||||
|
|
||||||
|
PROCEDURE GetKey*(): CHAR;
|
||||||
|
VAR i : Int32;
|
||||||
|
BEGIN
|
||||||
|
i:= newtGetKey();
|
||||||
|
RETURN CHR(SHORT(i));
|
||||||
|
END GetKey;
|
||||||
|
|
||||||
PROCEDURE -newtClearKeyBuffer()
|
PROCEDURE -newtClearKeyBuffer()
|
||||||
"newtClearKeyBuffer()";
|
"newtClearKeyBuffer()";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ MODULE newttest;
|
||||||
IMPORT newt, oocIntStr, Unix;
|
IMPORT newt, oocIntStr, Unix;
|
||||||
VAR i, j, k : newt.Int32;
|
VAR i, j, k : newt.Int32;
|
||||||
str : ARRAY 32 OF CHAR;
|
str : ARRAY 32 OF CHAR;
|
||||||
|
ch : CHAR;
|
||||||
fo, co : newt.Component;
|
fo, co : newt.Component;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := newt.Init();
|
i := newt.Init();
|
||||||
|
|
@ -29,10 +30,17 @@ newt.PopHelpLine();
|
||||||
newt.Refresh();
|
newt.Refresh();
|
||||||
i := Unix.Sleep(1);
|
i := Unix.Sleep(1);
|
||||||
|
|
||||||
fo := newt.Form(NIL, "aaa", 0);
|
REPEAT
|
||||||
co := newt.Button(15, 15, "OK");
|
ch := newt.GetKey();
|
||||||
newt.FormAddComponent(fo, co);
|
str[0] := ch;
|
||||||
|
str[1] := 0X;
|
||||||
|
newt.DrawRootText(5, 5, str);
|
||||||
|
newt.PushHelpLine(str);
|
||||||
|
newt.Refresh;
|
||||||
|
UNTIL ch = ' ';
|
||||||
|
|
||||||
|
(*
|
||||||
newt.WaitForKey();
|
newt.WaitForKey();
|
||||||
newt.Delay(30);
|
newt.Delay(30);*)
|
||||||
i := newt.Finished();
|
i := newt.Finished();
|
||||||
END newttest.
|
END newttest.
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
6ba9f2d70e2bad97118512d33e656f8d3430596c
|
ad68686ab577dc36fe244e9c54cbd903a437bf38
|
||||||
Loading…
Add table
Add a link
Reference in a new issue