This concerns the Linux version only (native compiler). Version 2.60 from github. The code uses the RANDOMIZE and RANDOM functions from the Lib module, and WrLn from IO. Compiled with "xc -topspeed+ =m randtest.mod".
MODULE randtest;
IMPORT IO,Lib;
VAR roll,i: CARDINAL;
BEGIN
Lib.RANDOMIZE;
FOR i:=1 TO 6 DO
roll:=Lib.RANDOM(6)+1;
IO.WrCard(roll,1);
IO.WrLn;
END;
END randtest.
Firstly, RANDOMIZE doesn't work because on each run the numbers are the same, and secondly, carriage return isn't working in WrLn because on successive new lines the numbers are cumulatively offset by 1 space.
The Win32 version of the compiler (using Wine) produces the expected correct output (no offsets and different numbers each time).
I haven't raised this issue yet on github because I first wanted to see if there are any other XDS users getting the same behaviour.
Thanks!
On 22/10/2021 15:11, jd63 wrote:
This concerns the Linux version only (native compiler). Version 2.60 from github. The code uses the RANDOMIZE and RANDOM functions from the Lib module, and WrLn from IO. Compiled with "xc -topspeed+ =m randtest.mod".
MODULE randtest;
IMPORT IO,Lib;
VAR roll,i: CARDINAL;
BEGIN
Lib.RANDOMIZE;
FOR i:=1 TO 6 DO
roll:=Lib.RANDOM(6)+1;
IO.WrCard(roll,1);
IO.WrLn;
END;
END randtest.
Firstly, RANDOMIZE doesn't work because on each run the numbers are the same, and secondly, carriage return isn't working in WrLn because on successive new lines the numbers are cumulatively offset by 1 space.
The Win32 version of the compiler (using Wine) produces the expected correct output (no offsets and different numbers each time).I have never seen that problem with the Windows version. I'd hazard a
guess that it gets a fixed answer for system time under Linux for some reason. Can you set an explicit starting seed successfully?
You may have to inspect the generated code in a debugger to find out
what is going on here. I suspect IO.WrLn is still DOSian <cr><lf>.
I haven't raised this issue yet on github because I first wanted to see if there are any other XDS users getting the same behaviour.
Thanks!I don't think there are many people still using it now.
(I could be wrong)
--
Regards,
Martin Brown
On 22/10/2021 15:11, jd63 wrote:
This concerns the Linux version only (native compiler). Version 2.60
from github. The code uses the RANDOMIZE and RANDOM functions from the
Lib module, and WrLn from IO. Compiled with "xc -topspeed+ =m
randtest.mod".
MODULE randtest;
IMPORT IO,Lib;
VAR roll,i: CARDINAL;
BEGIN
Lib.RANDOMIZE;
FOR i:=1 TO 6 DO
roll:=Lib.RANDOM(6)+1;
IO.WrCard(roll,1);
IO.WrLn;
END;
END randtest.
Firstly, RANDOMIZE doesn't work because on each run the numbers are
the same, and secondly, carriage return isn't working in WrLn because
on successive new lines the numbers are cumulatively offset by 1 space.
The Win32 version of the compiler (using Wine) produces the expected
correct output (no offsets and different numbers each time).
I have never seen that problem with the Windows version. I'd hazard a
guess that it gets a fixed answer for system time under Linux for some reason. Can you set an explicit starting seed successfully?
You may have to inspect the generated code in a debugger to find out
what is going on here.
I suspect IO.WrLn is still DOSian <cr><lf>.
I haven't raised this issue yet on github because I first wanted to
see if there are any other XDS users getting the same behaviour.
Thanks!
I don't think there are many people still using it now.
(I could be wrong)
I haven't raised this issue yet on github because I first wanted to see if there are any other XDS users getting the same behaviour.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 468 |
Nodes: | 16 (2 / 14) |
Uptime: | 20:06:14 |
Calls: | 9,440 |
Calls today: | 3 |
Files: | 13,594 |
Messages: | 6,109,934 |