So, I have a few suggestions. Are you open to using GNU libraries in ZSH? If so, I was thinking how ZSH is so powerful (and easy to use), that it can actually handle all types of data -- like all 256 characters of ASCII. So with multibyte turned off that means binary, even if its a little slow. But here is the problem with dealing with binary, or unusual characters through ZSH, every operation requires using several ZSH builtin commands / variable expansions. This makes a process that converts data into something more usable on the input or the output very CPU heavy and inefficient. My suggestion is to add a few options to the sysread and syswrite builtins that come stock with ZSH in the system module: * -d : (sysread) to make the variable created an integer type containing the numerical value corresponding to the raw byte value, for -s 1; and for -s 2+ (reading more than a single byte), make it an array with each indice containing a string of decimal digit(s), whose numerical value is generated the same way, representing the value for each byte. * -h : (sysread) to make a string value that is two characters per input byte, representing the value of the byte in hexadecimal (padded with 0 if less than 16, and obviously as with above, a null would equal 00). This would make Zsh able to function for whatever given needs (boot environments, less prevalent unix-like systems) without having to supply an xxd program, and it would be much more efficient processing when any math is involved in the script. -- Micah micah@askmicah.net AskMicah.Net , Problem Solving Agency