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