Add cmos_get_time; cluster: kernel rev, boot time.

	SUMMARY

		On boot, the CMOS clock is read, reformatted into
		a compact dword representation (max 64 years starting
		at 2000), and saved in memory.

		Both the boot time and kernel revision are now sent
		on the cluster network, allowing all nodes (including
		the webserver) to calculate the uptime of all online
		nodes.

kernel/Makefile:
	ring2.o: add dep on extern.h (keeps KERNEL_VERSION up2date).

kernel/cmos.:
	add cmos_get_date, returning a dword containing a date
	between 2000 and 2064.

kernel/kernel.s:
	export get_time_ms_40_24 and sprint_time_ms_40_24.
	store kernel boot time using cmos.

kernel/print.s:
	add sprint_time_ms_40_24 (same as print_... except to string).

kernel/net/httpd:
	add ${kernel.uptime}: kernel_get_uptime (string),

kernel/shell.s:
	declare command date (cmos_get_date).

	BUGTRACK sprint_time_40_24: cmd_uptime also prints the output
	of sprint_time_..., since on www uptime H is 0 where it should
	be 06 (for instance).

kernel/print.s:
	update LOAD_TXT: add 4th optional arg, which is subtracted from the
	string length put in the 3rd arg, which by default includes the
	terminating zero of .asciz.

kernel/oo.s:
	have obj_size contain the size of the positive object structure
	addresses (the data part): subtract the size of the VPTR table
	from class_object_size.
	In class_instance_resize, first add this size back, then subtract
	it again after mreallocz.

kernel/net/cloudnet.s:
	manage kernel revision, boot time (volatile network: not persistent,
	sent over network; maintained in volatile list of online cluster
	nodes).
	add pkt_ structure defining what is sent over the network:
	cluster era, node age, kernel rev, boot time.

	cluster_node: rename some fields.

	cluster_get_status: (html): rework, use edx as flags to control
	output. bit 0: whether to print a list. bit 1: list format short/long.
	renamed to cluster_get_status_ and add c.._g.._status and
	c.._g.._status_list.

kernel/net/httpd.s:
	add www_expr ${cluster.status}.
	NOTE: allow alternate escape sequence, such as <$ ... > which is
	illegal in SGML.

root/www/index.html:
	some notes on OOFS and persistent network objects.
DNS: fix stack on ARP timeout; NETQ now 8; icmp.

kernel/net/dns.s:
	net_dns_request: the network buffer was not popped on arp timeout,
	resulting in returning to the wrong address.

kernel/net/net.s:
	add dummy macro NET_BUF_FREE, to use in the above case (where
	NET_BUF_SEND is skipped, which (will) automatically deallocate(s)
	the buffer).

		NOTE: the network buffer code may give away existing buffers
		as it simply

	add compile-time constant for RX NETQ size, and increase it to 8.

kernel/net/icmp.s:
	net_ipv4_icmp_handle: add debug: print ICMP unreachable(3), and code.

	net_ipv4_icmp_print: print 64 bits of ipv4 payload on ICMP 3.
fix sprint_time_40_24 - kernel uptime
Fix print cmos time.
Add time calculation methods; cluster uptime.

kernel/cmos.s:
	add datetime_to_s.

	add datetime_to_days.

		NOTE: these routines have not been extensively tested,
		and only operate on the 2000/1/1 to 2064/1/1 range.

kernel/fs_oofs.s:
	include fs/oofs/export.h rather than rely on symbolic references.

kernel/net/cloudnet.s:
	drop the LOAD_PACKET scheme and have cluster_node implement the packet,
	including the .asciz "hello" header, and send that data as is.

	maintain cluster integrity: adopt cluster era/birthdate if nodes
	have more appropriate values. Now the cluster lifetime can be tracked.

	Show node uptime and cluster uptimes (calculated from the packed CMOS
	date sent over the net).

	Lots of updates, fixes, cleanups etc.

kernel/net/pit.s:
	make clock_ms_fp global - most accurate, and most wide timestamp
	format available.

	add get_datetime_s: uses the clock value from CMOS as stored
	in [kernel_boot_time], and adds the current [clock_ms_fp] value
	(adjusted) to it. This call does not do IO.

kernel/net/print.s:
	add _s_printdec32.

	add (s)print_time_s, using years, weeks, days, hours, minutes, seconds.
HTTPD: implement ${include file}.

kernel/net/httpd.s:
	add ${include file} support

Makefile:
	split site target.
	add site-doc target, converting DOC/.txt to root/www/doc/*.
	(for now only some files that render nicely).

	have os.iso depend on site-doc.

util/txt2html.pl:
	some regular expressions.

util/genlinks.pl:
	ls *.html | genlinks.pl -> <ul><li>

root/www/index.html:
	make the style an include.

root/www/style.css:
	included style - reusable across all sites.

DOC/Bootsector.txt:
	indent code for proper formatting.
adm script: method fixes.

util/adm:
	listing options: check the *foo{CODE} to filter only code references.

	add package vm::qemu, vm::vmware - not used yet, but will serve
	as an abstraction so that different vm types can be used.