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 |
8 | ANEW TASK-MAKE_ALL256\r |
9 | \r |
10 | variable RAND8-SEED\r |
11 | 19 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 |
19 | create 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 |
57 | MAKE.256.FILE\r |