SHELL: add cmd 'inspect_str'

kernel/shell.s:
	add command to inspect memory: print string.
cmd_ls: print datetime
BUILD: Clean output;

	SUMMARY

		Align the echo commands in the makefile;
		update util/* tools to take '-v' (verbose) argument.

		Fix/improve the embedded iso.gz download.

root/www/index.html:
	add ISO download link.

*.s:
	comment out .print statements

util/*.cpp,.pl:
	add '-v' option, disabled by default.

Makefiles:
	silence.

Makefile:
	call genisoimage twice to embed the iso in itself.
	Note that the embedded iso does not have the download iso,
	as this would produce infinite recursion.
IDT: fix print 0-based code offset

kernel/idt.s:
	subtract [reloc$], instead of [realsegflat], to print the
	code offset for the instruction generating the exception.
HTTPD: fix unprivileged call

kernel/net/httpd.s:
	change 'call socket_write' to KAPI_CALL in the include handler.

	[was overlooked since this only generated an exception if the
	NIC code was called, which occcurs on TCP buffer flushes]
Web Doc updates.

	SUMMARY

		Add CloudNet.txt to html conversion;

		improve txt2html.pl: add template support and ol list
		nesting.

		Reorganize index.html a little.
WEB: doc/template updates.

DOC/*:
	fix typo's and minor modifications for proper txt2html parsing.

Makefile:
	add more DOCs that parse properly.
	generate www.neonics.com (not committed) if present.
	use new template script for doc generation.

root/www/index.html:
	cleanup.

util/txt2html.pl:
	support '-t none';
	lots of regexp improvements/fixes: nested lists etc.

util/template.pl:
	simple template processor: several parameters can be set:
		- template file
		- relative path to docroot for css/js/img refs
		- dynamic 'ajax' xml content to process
		- xslt stylesheets
		- onload handler injection

util/template.html:
	[NOTE: refers to files not committed!]
	base template for qure site and www.neonics.com.
Schedule: don't print 'TASK EXIT'
OO: compact instance array on delete instance
Refactor OOFS

	SUMMARY

		Refactoring:
		* extract persistence api from oofs.s;
		* extract new class oofs_vol from oofs.s, leaving a very
		  lightweight class oofs.
		* have most methods that return exceptions (CF=1) include
		  a STACKTRACE for easy tracking;
		* remove add/lookup/get_obj from base class, as the method
		  signatures are different for the subclasses implementing
		  this (oofs_vol and oofs_table);

kernel/Makefile:
	fix dependency

kernel/debugger/export.s:
	add STACKTRACE macro and method, taking dword stackdepth arg.

kernel/debugger/hwdebug.s:
	add global breakpoint_memwrite_dword - for kernel level (bypass KAPI).

kernel/fs.s:
	printing/debug updates;
	fs_obj_write: add overwrite MBR check;

		XXX FS_OBJ_DEBUG_RW=1

kernel/fs/fs_oofs.s:
	debug/print improvements;
	add static oofs_lookup_table;
	mkfs/mount: expect oofs root object to be oofs_vol;
	mkfs: add constructor exception check
	mount:
	* update virtual method names (refactor effect)
	* add disabled code to initialize oofs_alloc_tbl
	cmd_oofs: add initial database management interface (drop table)

		XXX mkfs: stacktrace

		XXX OOFS_DEBUG = 1

kernel/fs/oofs/ClassHierarchy.txt: (ADD)
	(unfinished) describe class inheritance.

kernel/fs/oofs/Makefile:
	document what files will be assembled, as the rule suggests
	that all oofs_*.s files will be compiled, which is not so.

kernel/fs/oofs/extern.h:
	include mem_handle.s, as it is used by oofs_alloc.s

kernel/fs/oofs/oofs.s:
	refactor: move most of the code to oofs_vol, and have this class
	be the base class, providing for:
	* constructor
	* print method
	* parent reference
	* child mrealloc event notification

	verify parent is class.

		XXX print stacktrace in print method

	add virtual method oofs_child_moved.

kernel/fs/oofs/oofs_alloc.s: (ADD)
	persistent mem_handle implementation (experimental).

kernel/fs/oofs/oofs_persistent.s:
	persistence layer, subclass of oofs, base class for all persistent
	oofs objects. Contains all code relating to persistence that used
	to be present in oofs.s itself, for greater clarity.

	Reworked most of the code. Main points:
	* rename load/save to read/write, as utility methods to be called
	  by object's load/save methods
	* save takes persistent offset so data sectors can be saved
	  individually instead of always starting at the beginning. This
	  will form the basis for 'dirty sector/page' checking.

kernel/fs/oofs/oofs_table.s:
	refactor:
	* methods add/lookup/get_obj moved from oofs.s and prefixed
	  with oofs_table_api_;
	* override persistent load/save/onload;
	* call super constructor;
	* extract findstring$ method, which is used by lookup and delete.

	add delete method, which removes a string (by overwriting
	the first byte with a non-word ascii character; compacting is a TODO);

kernel/fs/oofs/oofs_vol.s: (ADD)
	extracted from oofs.s: contains the top level region management
	code.

	fix instance/region association: objects were not recorded at the
	same index as their region, but simply appended. Now the index
	into the region ({lba,sector}[]) is identical to the children
	instance array.

kernel/kapi/kapi_page_int.s:
	on unknown KAPI method index, print offending source info aswell
	as EIP.

kernel/lib/hash.s:
	make buf_free global;
	use 4-digit labels in iteration macros to prevent conflicts.

kernel/lib/mem.s:
	fix pushing color: use pushcolor macro.

kernel/lib/mem_handle.s:
	surround with DEFINE check so that file can be included as a header.

kernel/lib/string.s:
	htoi: preserve eax when string not hex.
	strcmp: change from prefix-matching to full-string matching.

kernel/net/cloudnet.s:
	debug/print improvements;

	refactoring effects:
	* change virtual method names as per refactoring;
	* have netobj extend oofs_persistent;
	* remove class persistent (as it was not used).
	* remove obsolete method overrides.
	* call super constructor
	* remove trailing $ from some method names
	* call oofs_persistent_api_(read|write) instead of fs_obj_(read|write)
	* expect/check for class_oofs_vol as root

kernel/oo.s:
	add global class_print_classname (STACKARG method, unlike the rest!)

	add macro PRINT_CLASS, and have DEBUG_CLASS call it. (This is for
	future updates where DEBUG statements can be left in the code
	and enabled/disabled by a compile-time flag without surrounding it
	with a check).

	class_resolve, class_is_class: move error message (when the reference
	is not a class def ptr) from class_is_class to class_resolve,
	as it is conceivable that one may want to check whether a pointer
	is a class/object and not treat this as an error.

	class_resolve_overrides$: print the classname being resolved on error.

	class_instanceof: verify that the object is a class instance.

	DEBUG_METHOD/(PRINT|DEBUG)_CLASS: add 'this' parameter (default eax),
	so that object pointers in other registers can easily be printed.

kernel/partition.s:
	on boot signature error, print the faulty value.

kernel/print.s:
	change COLOR_STACK_SIZE to 4, to keep stack aligned for debugging
	purposes (as it will now detect more code labels on the stack).

	declare _s_printhex8 as global.

kernel/shell.s:
	declare SHELL_COMMAND oofs ('database filesystem manager'),
	as for some reason, declaring it in a separate object file, keeps
	it from being available.
Fix build; move all fs code to ring2.

	SUMMARY

		Fixes build on a clean checkout, having to do with generated
		header files and dependencies.

		Move all filesystem files (fs.s, partition.s, fat.s,
		sfs.s, iso9660.s, fs_oofs.s) to ring2.o.

kernel/Makefile:
	update clean list;

	split FS_SRC into FS_API_SRC (the api: fs.s and partition.s) and
	FS_IMPL_SRC (the various file systems).

	ring2.o: depend on all FS sources, API and IMPL.
	kernel.o: update dep on fs code to FS_API_SRC.

	update rule for fs/oofs/oofs.o to specify it's export.h target aswell,
	and drop the separate rule.

	(kernel) export.h: include all absolute symbols (mostly class related).

kernel/ata.s:
kernel/fs.s:
kernel/fat.s:
kernel/fs/fs_oofs.s:
	add globals.

kernel/defines.s:
	update INCLUDE macro to define the code start/end labels as global,
	so that mem -s -c has access to them.

kernel/fs/oofs/Makefile:
	clean export.h.

kernel/kernel.s:
	do not include any filesystem implementations (but do include
	fs.s and partition.s as declarations (header)).

	remove fs/ata/partition globals.

kernel/lib/hash.s:
	make array_remove global.

kernel/lib/string.s:
	make global: strcopy strndup strtok

kernel/oo.s:
	declare class_get_by_name as global;
	declare all virtual methods as global in DECLARE_CLASS_METHOD.

kernel/partition.s:
	add globals and make includable as header.

kernel/ring2.s:
	include fat.s, sfs.s, fs_oofs.s and iso9660.s.
	(fs.s, partition.s were already included as definitions).

lib/xml.s:
	use KAPI_CALL for fs impl.
Fix 'mem -s -c' (code/data section printing)