added oocRandomNumbers, updated newt wrapper with GetKey function. -- noch

Former-commit-id: ab5d3f734e
This commit is contained in:
Norayr Chilingarian 2015-03-12 00:24:11 +04:00
parent 7de984b46a
commit 6886a243a6
14 changed files with 109 additions and 7 deletions

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -138,6 +138,7 @@ stage6:
$(VOCSTATIC) -sP oocIntStr.Mod
$(VOCSTATIC) -sP oocSysClock.Mod
$(VOCSTATIC) -sP oocTime.Mod
$(VOCSTATIC) -sP oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sP oocIntStr.Mod
$(VOCSTATIC) -sP oocSysClock.Mod
$(VOCSTATIC) -sP oocTime.Mod
$(VOCSTATIC) -sP oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -136,7 +136,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -137,6 +137,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

View file

@ -136,7 +136,7 @@ stage6:
$(VOCSTATIC) -sPF oocIntConv.Mod
$(VOCSTATIC) -sPF oocIntStr.Mod
$(VOCSTATIC) -sPF oocSysClock.Mod
$(VOCSTATIC) -sPF oocTime.Mod
$(VOCSTATIC) -sPF oocRandomNumbers.Mod
# $(VOCSTATIC) -s oocLongStrings.Mod
# $(CC) oocLongStrings.c
# $(VOCSTATIC) -s oocMsg.Mod

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

View file

@ -7,6 +7,8 @@ all:
$(VOC) -s newt.Mod newttest.Mod -m
$(VOC) -s newt.Mod newttest2.Mod -m
tetris:
$(VOC) -s newt.Mod tetris.Mod -m
clean:
rm *.h
rm *.c

View file

@ -98,6 +98,16 @@ BEGIN
newtWaitForKey
END WaitForKey;
PROCEDURE -newtGetKey(): Int32
"newtGetKey()";
PROCEDURE GetKey*(): CHAR;
VAR i : Int32;
BEGIN
i:= newtGetKey();
RETURN CHR(SHORT(i));
END GetKey;
PROCEDURE -newtClearKeyBuffer()
"newtClearKeyBuffer()";

View file

@ -3,6 +3,7 @@ MODULE newttest;
IMPORT newt, oocIntStr, Unix;
VAR i, j, k : newt.Int32;
str : ARRAY 32 OF CHAR;
ch : CHAR;
fo, co : newt.Component;
BEGIN
i := newt.Init();
@ -29,10 +30,17 @@ newt.PopHelpLine();
newt.Refresh();
i := Unix.Sleep(1);
fo := newt.Form(NIL, "aaa", 0);
co := newt.Button(15, 15, "OK");
newt.FormAddComponent(fo, co);
REPEAT
ch := newt.GetKey();
str[0] := ch;
str[1] := 0X;
newt.DrawRootText(5, 5, str);
newt.PushHelpLine(str);
newt.Refresh;
UNTIL ch = ' ';
(*
newt.WaitForKey();
newt.Delay(30);
newt.Delay(30);*)
i := newt.Finished();
END newttest.

View file

@ -1 +1 @@
6ba9f2d70e2bad97118512d33e656f8d3430596c
ad68686ab577dc36fe244e9c54cbd903a437bf38