############################################################################
#
#	File:     noise.icn
#
#	Subject:  Program to generate random noise
#
#	Author:   Gregg M. Townsend
#
#	Date:     November 3, 2003
#
############################################################################
#
#  This file is in the public domain.
#
############################################################################
#
#  This program generates random 8-bit bytes until killed.
#  While it may not be cryptographically strong, it is 
#  suitable for overwriting a disk or tape for disposal.
#  
############################################################################
#
#  Links:  random
#
############################################################################

$define BUFSIZE 1000000			# working buffer size
$define BLKSIZE 65536			# output block size

link random

procedure main()
   local buf, cs

   collect(2, 2 * BUFSIZE)		# ensure large memory region
   randomize()				# different results every time

   buf := ""
   cs := string(&cset)
   every 1 to BUFSIZE do
      buf ||:= ?cs			# initialize buffer randomly

   repeat	# write random transliterations of random subsets of buffer
      writes(map(buf[?(BUFSIZE - BLKSIZE) +: BLKSIZE], cs, scramble(cs)))
end
