Initial import.
[pforth] / fth / utils / make_all256.fth
CommitLineData
bb6b2dcd 1\ @(#) make_all256.fth 97/12/10 1.1\r
2\ Make a file with all possible 256 bytes in random order.\r
3\\r
4\ Author: Phil Burk\r
5\ Copyright 1987 Phil Burk\r
6\ All Rights Reserved.\r
7\r
8ANEW TASK-MAKE_ALL256\r
9\r
10variable RAND8-SEED\r
1119 rand8-seed !\r
12: RANDOM8 ( -- r8 , generate random bytes, repeat every 256 )\r
13 RAND8-SEED @\r
14 77 * 55 +\r
15 $ FF and\r
16 dup RAND8-SEED !\r
17;\r
18\r
19create rand8-pad 256 allot\r
20: make.256.data\r
21 256 0\r
22 DO\r
23 random8 rand8-pad i + c!\r
24 LOOP\r
25;\r
26\r
27: SHUFFLE.DATA { num | ind1 ind2 -- }\r
28 num 0\r
29 DO\r
30 256 choose -> ind1\r
31 256 choose -> ind2\r
32 ind1 rand8-pad + c@\r
33 ind2 rand8-pad + c@\r
34 ind1 rand8-pad + c!\r
35 ind2 rand8-pad + c!\r
36 LOOP\r
37;\r
38 \r
39: WRITE.256.FILE { | fid -- }\r
40 p" all256.raw" count r/w create-file\r
41 IF\r
42 drop ." Could not create file." cr\r
43 ELSE\r
44 -> fid\r
45 fid . cr\r
46 rand8-pad 256 fid write-file abort" write failed!"\r
47 fid close-file drop\r
48 THEN\r
49;\r
50\r
51: MAKE.256.FILE\r
52 make.256.data\r
53 1000 shuffle.data\r
54 write.256.file\r
55;\r
56\r
57MAKE.256.FILE\r