More new stuff:
shell.vhdl parameter tokenization is lot more generic and flexible now. Still some bugs, and needs breaking out into its own parseargs-style module.
More new string-handling routines, strcpy() and strtok() specifically.
All strings are explicitly null-terminated now, to work around the limits of the VHDL string type.
Moved the lib/libc/ directory contents back up to lib/. The reason for this is that subdirs should only contain sub-interface implementations ("targets"), not the top-level target-using wrapper code. lib/printk/ will need to be reorganized similarly eventually.
The other thing that is currently going on is that I have found a (probable) bug in ghdl. The bug is that null-length strings appear to inevitably cause an out-of-bounds exception at runtime. As far as I know, null-length strings are legal in VHDL, and since (for example) strtok() may not find another token in its parameter string (and therefore must return a null or zero-length string), I have reported this bug on the ghdl bug tracker at gna.org. Not too sure what I am going to do to work around this - I may have to end up working on some other code besides the console/IO/string stuff for a while. Shit....
Jon