# --------------------------------------------------------------------------------- #
# CHANGELOG - re <cvs log -D now lib4th> for details - [1.1.01] - 1st: hp'Mai/2000
# files a-4th-design.inc, ansdoc.inc, answset_idx always updated, accordingly
#	detailed list of CHANGES re "doc/cvslog-lN-lib4th.asm.txt"
# --------------------------------------------------------------------------------- #

#
# pse, NOTE that 0.x.xx versions are not necessarily binary-compatible because almost
# every version features changed u.o.t. indices (which is the single relevant issue).
#

NOTE
    if "4" compiles orderly but, "calc4th" or "f8" exit with a segfault:
    binutils' 2.11.92+ versions of <ld> are probably quite broken, try an older 
    version. and, mind the -vV switches with which <ld> can run into an endless 
    loop, un-interruptably! btw, those versions' <strip> isn't better, stripping 
    almost everything off an already stripped binary...

use
    { help <word> }	for the rsp glossary entry, 1st in {voc-link}ed sequence
    { hv help <word> }	find glossary entry in sequence of actual search order
    { v <word> }	get a notice whether or, in which wordlist a word is defined

# --------------------------------------------------------------------------------- #

version	file		changes
    => unresolved:	(re file "BUGS-TO-SOLVE")
    => new:
    => modified:
    => bugfix:
    => other:

# --------------------------------------------------------------------------------- #


1.0.6

    => unresolved:	(re file "BUGS-TO-SOLVE")
			{xy} query vt-response w/ console ok, w/ "rxvt" almost. 
			{thru} non-functional.
    => new:
	[-->]		dft for {-->}.
	[abort]		dft for {abort}, w/ reset of return-stack.
	[load]		dft for {load}.
	abscur, relcur	cursor addressing mode.
	cdt-fpos	disp of double cell file ptr to cdt base address.
	cure, curd	{vt}, en/disable cursor display.
	tib-dft		{hidden}, default t.i.b. location
	tib>dft		{root}, reset tib to dft location, also in {error}, {abort}
			for instance, required if {evaluate}ing words in hard-coded 
			strings which recieve kbd input - e.g. <f8ed>, from edit.f8.
    => modified:
	-->		deferred, blockfile load next screen. functional.
	abort		deferred, also called by {abort"}.
	accept, edlin	editting keys actions (almost) fixed:
			<pos1> curs to 1st char, <end> curs to end of line,
			cur-up/dn as before, to sol/eol, after an initial <tab>.
	cd		in {root} voc.
	load		deferred, blockfile cpl from given screen#. functional.
	read-line	ret error code EOVERFLOW(-75) if buffer full and w/o <eol>,
			reading per bytes if fd is a pipe, &c.
	refill		for cpl from blockfiles, modifies {tib}.
	(sighnd)	in {linux} voc, was {hidden} {(sigh)}.
	utibmax		uvari label, was untib.
    => bugfix:
	path+file	"~/..." ref to ${HOME} path and, case ${HOME} un-set.
	read-line	access to a pipe (or other sequential) channel.
    => other:
	edit.f8		receiving text from mouse/file, {clear} per scr beyond eof.
			backup also as a sequential file.
			inadequate X-Windows' vt response 'fixed' by work-arounds.
			abandoned any attempt to achieving "xterm" compatibility.
			"rxvt" serves well.


1.0.5+20 - rel 17.3.2002 -

    => unresolved:	- re 1.0.4+31 -
			local's errors (apparently) resolved w/ {substitute} bugfix.
			{alias} issue not considered a 'bug'.
			vt-response, namely {xy}, still not fully reliable.
    => new:
	to-stg		sto new stg value
	+to-stg		append to stg value
	kbd!		{key!} for kbd channel
	?resize		extend top .bss memory section if required for {allot}, 
			also implicitely called by {allot}.
	static?		{system} voc, true if running prog statically linked to L4
	Y		{editor} voc, inst stg into screenfile
    => modified:
	[accept]	cur-up -> cursor to sol (up/dn reversible, re below)
	[updt]		default opr for {update} (was "update")
	allot		resizeing available memory if required -re- {?resize}.
	update		deferred -re- [updt]
	cd		dft to $HOME path if empty stg passed
	sighnd-size	{linux} voc, size of a signal hnandler definition block.
	vt		data reception faster response
    => bugfix:
	[accept]	chars positioning w/ cur-dn after tab, cur to eol (1.0.4)
	cd		compiling mode
	create-dir	args (no r/w bits)
	path+file	path assembly (1.0.4)
	sigquit		signal handler endless loop resolved but, yet not perfect:
			executing {empty} for final cleanup by {forget}-handlers,
			then (not always) orderly exitting by <byes> execution.
	substitute	locals resolution
    => other:
	edit.f8		extended screenfile-editor, dun.
	f8ed.asm	ok, example asm for initial screenfile loading, 
			screenfile editor, executeable's stripped size ca. 1,5K.


1.0.4+31 - rel 10.3.2002 -

    => unresolved:
	{ .. }		uncertain locals notation: corrupted a preceding value.
	alias		constitutes a specific to a secondary name forget-handler 
			to protecting the primary word, which due to identity of 
			uot-indices would otherwise be removed w/ the 'alias' but, 
			will also be executed when forgetting the primary word. 
			this would often run into corrupted code. resolution would 
			involve much more overhead which, imho, simply isn't worth 
			the effort. Therefore, pse, 
    NOTE:			mind forgetting an {alias}ed word!
			take it's implementation as some minimal concession to an 
			apparent 'fashion' but, not at all as a required feature...
			for instance, 
			    : new-name -compile primary-word ; immediate
			is neither slower nor using more memory space, thus would 
			be an equally suitable, non-conflicting 'alias'ing method.
    => new:
	(?terminal)	xec-vec accessible by name
	(pause)		provisional for job switching, after {wait4..} time-out.
			{ (stimo) 4- } for timeout s
	0and		{ drop 0 }, in hidden voc.
	argp, envp	ptr-s to the rsp arrays, arguments and environmental 
			variables (strings) passed by host to program execution.
	create-dir	linux <mkdir>, create a directory, perms set to &02700.
	else;		short form of { ... exit else ... }.
	endif;		short form of { ... exit endif }.
	lock-file, unlock-file
			(by fcntl - apparently no effect)
    => modified:
	[fname] etc.	also resolves "." to 'cwd'.
	create-file,mcreate-file,include",included,editting,reading,using
			(re-)open in non-blocking mode, to preventing file access 
			blocking on attempt to opening a locked file.
			un-authorized access returns EAGAIN error code.
	ds-pick		-ve index to storeing back to data-stack: @tos by -1.
	no-opt		immediate,
			    xec: word header modifier.
			    cpl: suppressing preceding words' call to jmp conv.
	words which use an ioctl
			cdt console-bits invalidation if not a console channel.
    => bugfix:
	push4th,pop4th	compiling w/o call to jmp conversion.
    => other:
	<pdocasec>	kernel {case:} xec entry



1.0.4+2 - rel 26.2.2002 -

    => unresolved:	(re file "BUGS-TO-SOLVE")
	{ .. }		uncertain locals notation: corrupted a preceding value.
	alias		lockup w/ {forget} apparently, partially(?) fixed.
    => new:
	idx>do		DOES>-entry per ix, for word type (oo, {is-case}, &c)
    => modified:
	is-case		functional.
	pad-size	dft. to PAGE_SIZE(4K), because e.g. {f"} would most often 
			require more than 256 bytes to assembling the path+name stg.
	bl.r, spaces	blanks by {type}, portions up to 256 bytes stg from kernel.
    => bugfix:
	alias		lockup w/ {forget}:
			dummy ix set to 1 while running the <forgetlk> loop, to
			pretending a non-removeable kernel word, w/o error 
			(in prev. version, was untested)
    => other:


1.0.3 - rel 24.2.2002 -

    => unresolved:
	{ .. }		uncertain locals notation: corrupted a preceding value.
	alias		lockup if {forget} earlier word than latest alias-ed one.
    => new:
	#case		case:-index by which a word was called
	edit		deferred, link to the fig editor, dft {[edit]} - re below.
	vt0		top left console window co-ordinates - re {xy},{at-xy}.
	    blockfile:
	blkfile		voc for screenfile/blocks words, in {forth}-voc.
			impl. is neither f.i.g. nor exactly ANS-4th, re glossary.
			block wordsets fully implemented.
	editor		vocabulary, f.i.g. line editor and support, in {fig}-voc.
	blk>head, buf>head, blk>lnk, buf>lnk, head>och, head>num
			buffer blocks' ref-s conversion
	empty-blk	invalidate a buffer
	ibbuf		block of (4) blockfile buffers initiation
	first,use,prev,limit
			non-constant(!) ptr's to buffer blocks
	block, buffer, flush, rw@, rw!, using
			block-file access
	update-off	revert flag
	reading, editting
			modifying file access mode to r/o or r/w, rsp.
	r#@, scr@	read the rsp vari
	dr?		flag whether dr0, dr1 or, neither one in {scr-chan}.
	load, -->, thru
			compiling from screenfiles, not tested!
	    vt:
	[p], [i]	kernel {value}s for {paper}, {ink}
	csr		scrolling region
	cup, cdn, cur-	cursor up, down, left
	    editor:
	(fig editor words, re "help editor" and glossaries)
	edit		loading/executing the editor.
	[edit]		initial defn of deferred {edit}.
	truncate	file at screen bounds.
    => modified:
	=:		checking whether already def'd in the entire search order;
			can re-define kernel values, too.
	alias		2nd-ary header, only, no code; ix set to aliased word.
	type		indirect call to deferred {[type]] which executes either, 
			{[ctype]} or {[etype]}, for non-/escaped output, rsp.
			sequence of indirection:
			    type <- @(type) <- [type] <- [ctype] or [etype]
			can be re-directed at uvari (type), to true xec address
			or, by modifying {[type]} e.g, with {is}, {is-default}.
	block-lk	initial ptr also relative to own address
	edlin		by vt-seq stored cursor posn un-touched.
	ibbuf		left to be called on demand or explicitely (not by init),
			with <forget>-handler, for automatic buffer removal.
	order?		in {root}
	<scanblk>	linkage adjusted if buffer block in de-allocated memory.
	see		clearing display attr-s, provisional for ctls in stgs.
	]], [[, [debug], ]interpret,interpret[
			in {compiler} voc
	xy, at-xy	Lx 2.2.14 inconsistency apparently fixed w/ 2.2.19, 
			words modified accordingly, plus {vt0} for future checking.
    => bugfix:
	is, is-default, default-is
			while compiling
    => other:


1.0.2

    => unresolved:	-?-
    => new:
	--		noop word, terminating the sequence of active, initially 
			to a program passed arguments. in {root} voc.
	[etype]		[type] variant w/ escape symbols, "\"..., in {hidden} voc.
	(escc)		uvari for the {e\stg} escape char, in {hidden} voc.
	(path)		ptr to alternate {path} string, if non-zero.
	a-close		close all channels from no. 5 till {max-chan} (64).
	cd		{ cd name } change dir, {linux}
	close-dir	gforth compatibility, nonsense otherwise: just {close-file}.
	e\stg		converting escaped symbols in a string (used by [etype]).
	mmap, munmap, msync
			files' memory mapping, in {linux} voc.
	pwd		print working directory to stdin
	push4th,pop4th	save/rst by kernel required cpu regs.
    => modified:
	<intro>		file <l4sys.inc>, w/ startup message only if no args given.
	ranum		single ranum words optional, by compile-switch in <MConfig>.
			source separated to file <l4sranum.inc>
	ieee>dv		"nan", "infinity" and "signed zero" handling added, 
			zero and unity errors fixed.
	dv>ieee		+/- infinity by ovf indicators (0,0) and (0,-0), rsp.
    => bugfix:
	dv>ieee		endless loop if numerator = -0 ($80..00).
	dv/		-ve max figure after -ve/0.
	qvsplit		ovf input.
    => other:
	cd, pwd, a-close, close-dir
			from file <chan.f8> to kernel.


1.0.1 - rel 17.1.2002 -

    => unresolved:	LP register related issues should still be observed.
			{replace} & locals related errors (apparently) fixed.
    => new:
	mac-disp, mac-size
			further preparing macro code cpl mode, in {compiler} voc.
	dv>ieee, F>IEEE, ieee>dv, IEEE>F
			format conversion, in {ranum} and {FLOAT} vocs.
    => modified:
	qsqrt		all lo-level code, another 20%(+) faster.
    => bugfix:
	LP		reg esi=LP, initiated to edi=PS, -re- file <l4init.inc>.
	{replace}	newly done - w/o {place}, {+place}, local mem - which is 
			(much) faster and, fixed scr2seq segfaults/endlesss loop.
	atg(qv)		w/ qv=1
    => other:


1.0.0 - rel 13.1.2002 -	1st beta release
    => unresolved:	scr2seq segfaults or runs into some endlesss loop.
			LP register related issues should still be observed.
    => new:
	REPRESENT	generalized f.p. values' representation, {float} voc.
	FATAN2		arc tg (f1/f2), {float} voc.
	qvliteral, c_qvlit
    => modified:
	sf, df, qf	was sing, ranum, double for sing, double, quad ranum input.
    => bugfix:
	#dvf		ret overflow string if dv was the ovf indicator.
	>time&date	no. of leap years since 1970 (false start value) - check!
	[interpret]	double ranum/quad integer and quad ranum literals (besides 
			false selection, quad int were accidentally read correctly)
	refill		stack balance error if file input not from stdin.
    => other:
	4th/app/disasm.f8 x86 disassembler, cpl'd w/ minor modifications
			but not bug-free, e.g. <setty.i>+7, file "l4sys.inc":
			( 0004162 0FB642 )             movzx   eax , byte ptr [edx]
			( 0004165 158985ECFE )         adc     eax , # FEEC8589
			( 0000000 decompiler error>D[0:16]


0.17.2
    => unresolved:	errors w/ string opr {replace} &c. apparently fixed, 
			LP register related issues should still be observed.
    => new:
    => modified:
    => bugfix:		errors w/ string opr {replace} &c.
	sslice		false code was in {sslice}:
			working LP should be fetched from {s0} before allocation
			and restored to allocation-LP before de-allocation.
			applicable to assembled code, only, hi-evel words were 
			fixed w/ earlier modification - which lead to this error.
    => other:


0.17.1 - 7.1.2002
    => unresolved:	! errors w/ string opr {replace} &c.
    => new:
	4>r, 4r, 4r>	quad to/from rs
	4rdrop		discard quad from rs
	?udcmp, dsgn	non-destructive unsigned comparison and signum
	o0=		eight-cells zeq
	    ranum quad & double:
	cos(qv), sin(qv), tg(qv), atg(qv)
	cos(dv), sin(dv), tg(dv), atg(dv), asin(dv), acos(dv)
	deg>rad, rad>deg (double)
	stg>qv, >dfloat	string to quad ranum (i.e. double 'float') conversion.
	    cons:
	qv.2pi,qv.2/3pi, qv.pi/2, qv.pi/4, qv.pi/180 (all in range of a double)
	dv.ln(2), dv.ln(10)
	    'float' wordlist:
	fpick, froll, f2dup
	df2dup
	FSINH, FASINH, FCOSH, FACOSH, FTANH, FATANH, FASIN, FACOS
    => modified:
	uq/mod, q/mod	lo-level bitwise (1/6 xec. time, FOR/NEXT speedup by 2,5)
    => bugfix:
	q2/		error w/ -1
    => other:


0.17.0 - 2.1.2002
    => unresolved:	! errors w/ string opr {replace} &c.
    => new:
	    double ranum:
	FOR [ FROM | +FROM ] [  STEP ].. [ IDX ][ NX ] ..NEXT
			rational numbers indexed loop structure:
			( limit ) FOR ( start ) FROM ( increment ) STEP ... NEXT
			words between FOR and last of FROM or STEP won't be repeated
	FROM, STEP	optional start value and increment, default to 0 and 1, rsp.
	+FROM		alternatively for {FROM}, start := dv, limit := (limit + dv)
	IDX, NX		loop index and indexed outer loop index, { 0 NX } is { IDX }.
	!IDX, &c	runtime modification of loop parameters.
	MAX-FLOAT	env. query, returns max value of a double ranum.
	float		(most of) ans FLOATING and FLOATING EXT, aliased double
			ranum words, transcendental functions not (yet?) implemented
	flt, int	set/reset persistent double ranum input mode, 
			push/pop {float} vocabulary to/from stacked search order 
			if not already included.
			"\" num.praefix set/reset to/from toggle mode float/integer.
	    double ranum support:
	e^10, dv.e^10, e^6, dv.e^
			ranum cons (for e^dv).
	ngcd		bignum greatest common divisor
	o+, o-,o1+, onegate, not8
			opr on eight-cells items.
	    ranum:
	?qv0=, qv0=, qvcmp, qvsgn
	dvfround	round towards zero floating point string to no. of digits.
	    bignum:
	nnsdrop		{ nnswap ndrop }
    => modified:
	"\"		modifier for a quad integer while in persistent ranum mode.
	"..e.."		exponent mark & evaluation for sing & double rational input.
			marker is char corresponding to @base as from { @base h>a }, 
			for instance "g" sedecimal, plus, "e" if @base less than 15. 
			thus e.g, "&12e3" is equal to "&1283".
	e^dv		re-/adjust to feasible range before the actual calculation.
	vreduce	 <=	was {normal}, actually is reducing the fraction
	vnormal	 <=	was {reduce}, in fact is normalizing
	dvnormal <=	{dvreduce}
	#digits  <=	vdigits, kernel value
	#fplaces <=	fplaces, kernel value
	FOR ..NEXT	integer mode removed (not much of use, anyway).
	str>v, vulgar	removed (redundant)
    => bugfix:
	q*, q+		-ve args
    => other:


0.16.2 - 21.12.01
    => unresolved:	! errors w/ string opr {replace} &c.
    => new:
	8over		copy next @tos item of eight cells to tos
	8pick, 8roll	+/- pick, roll eight cells items
	8sover		eight cells items { swap over }, for quad ranum calculations.
	2n->2q, 2n->2uq, 2q->2n, 2q->2un, n->q, nn->dd, q->n
			conversion between counted and quad integer.
	dslbits		max no. of bits a +ve double can be shifted left w/o change 
			of sign or overflowing into C.
	qslbits		-re- {dslbits} wrt +ve quad.
	    double ranum:
	dv>uqv, dv1+, dv1-, dv2*, dv2/, dv<, dv>, dv=, s>dv
	ln(dv)		log naturalis of a double ranum, by (almost) endless product.
	e^dv		natural cons to the power of a double ranum.
	    double ranum quad integer opr synonyms:
	dvconstant, dvliteral, dvvariable
	dv@, dv!
	dv-rot, dvdrop, dvdup, dv2dup, dvover, dvpick, dvrot, dvroll, dvswap, &c...
	    quad ranum, hidden-voc:
	qvsover, qv2*, qv2/, qv*, qv/, qv+, qv-
    => modified:
	4pick		-ve index 'pick back' into stack
	df/mod		was {dfm/mod}, the name of which was mis-leading.
	qsqrt		faster (1/3 xec time, {dvsqrt} xec time reduced by 1/2+)
	vnormal			<- normal
	fplaces			<- places
	fpoint			<- point
			names changed to something more specific, kernel values.
	set-xxx		needless words eliminated.
	uqm/mod
    => bugfix:
	log		false description (reversed order of stack items)
			unsuitable @base values (below 2) handling added.
	n/mod		rmd & qot if dvs=dvd
	qgcd		endless loop if one item = quad { 0 1 0 0 }
	q*		signed mul.
	v2*, v=, dv=, qv>dv etc.
			handling of overflow values
    => other:


0.16.01
	lib4th source
    => new:
	?q0=		non-destructively test quad for zero
	q2*, q2/	signed quad mul, div by two
	qrshift, qlshift
			unsigned shift quad right, left
	qu>		quad unsigned greater
	uqmax, uqmin	leave the greater, smaller of two quads @tos
	    bignum:
	n/mod		counted int signed division w/ remainder
	n/		counted int signed division
	udsqrt		double integer sqare root, w/ and w/o mmx reg variants
			valid for full size 64-bit item.
	un/mod		unsigned div double by double, ret double qot & rmd
	    sing ranum:
	vsqrt		sqare root
	    double ranum:
	<#dv#>		build signed rational fraction stg
	#dv		append signed rational fraction stg to num. output buf
	double		praefix for numeric input (accumulated 'quad' and 'ranum').
	dv.j, dv.	display in fractional format, w/wo justification
	dvabs		negate if -ve
	dvcmp, dvsgn	comparison and signum 
	dvround, dvsimplify
			approximation
	dvsqrt		sqare root
	    quad ranum in rational hidden voc:
	qvround		approximation
	qvfrac, qvsplit, qv>q
			extraction, conversion
	qvsqrt		square root
    => modified:
	<abranumb>	stg conversion to double ranum complete
	<dup2> <= <twodup>
			label re-named, to preventing typing errors
			(after libc-independence, "dup2" nameing conflict vanished)
	bsf, bsfm, bsr, bsrm
			memory mode: scanning a given range of cells in memory
	reg, mem	removed words: constants for bsf, bsr mode
	CELL/		floored division (ANS)
	non-mmx <= float
			vocabulary re-named, since no FLOATING implementation but, 
			provision for non-mmx substitutes to words which use mmx.
	nnpick		-ve index to replacing indexed by counted int @tos
	nnroll		-ve index to rolling back, as w/ single cells {roll}
	qsqrt		by nsqrt w/ bitwise algorithm, which is by about 40% faster 
			than previously used Newton's alg. and, valid over the full 
			range of any +ve item of the rsp. size.
			non-mixed sizes opr: returns quad and flag
	qv>dv		reduce quad to double ranum, ret ovf if qv doesn't fit,
			successive approximation, w/ top limit $7ffffffffffffff.
	shift		ret 0 for |shift-count| > 31.
    => bugfix:
	4integer	push 4 cells
	16/mod		(was just nonsense)
	alias		by { create , does> perform }
	bsfr, bsfm	opcode
	n*		signed result
	nnumber		m.s.b. at 32bit-bounds +ve num
	ud/		leading d->uq dvd conversion
	lp		false uvari useage in <dolocr>, <doloci>, <dolocz>:
			locals deallocation, after execution @lp below @s0,
			which resulted to segfault at new words defn after 
			useage of a previously def'd word w/ locals.
	qf/mod		falsely, 2 cells left @tos
	floored div	floored result for dividend = -1
    => other:
	reloc.inc	macro <A> w/ numeric arg for additional alignment bytes.
	documentation	faster (less slow...) html files generation.


0.15.01
	lib4th source
    => new:
	rows		uvari, lines count per page/file
	sh		xec shell command, kernel defn from shel.f8
	tab-to		advance to max(x+1,col) at current line.
	nsqrt		'bignum' square root
	n* n2* n2/	  "  mul, div
	n*2^32 n/2^32	  "     "  by 2^32 (cellsize)
    => modified:
	inc/sys_(os), constants.inc, lib4th.asm
			copied syscalls defn files removed,
			fetched from os sources (headerfiles) -re- MConfig
	debian/*	build. binary fixed, w/ lib4th dll & programs
    => bugfix:
			-/-


0.14.00 - 1.11.01

	lib4th source
    => new:
	fd>chan		store file descriptor to chp, close old channel
	sh|		xec shell command which stores output to mem via pipe(s).
    => modified:
	path+file	last (3rd) path searched is {lxpath}, to Linux sources.
    => bugfix:
	<getrefb>	eflags preserving

	shel.f8, hi-level words:
	sh		xec shell command w/ display to console
	sh|		xec shell command & store output to mem via pipe(s).
	
	asmutils/system.inc
			sys_waitpid added
	
	admin/MK-t	sorted by topic reference list, by <make topx>


0.13.00
	Makefile	modified error handling (fault by <install> or <make>...)
			fully un-stripped version w/ Makefile variable "D",
			effective for debugging only in static "4" program.
	MConfig		Makefile part supposed to be configured by user.
	includefiles	macro _xchg might give a 'multiply defined' error from nasm,
			then either outcomment the rsp. 3rd arg. in l4 source or, 
			delete that macro from either, asmutils or l4 include files.
			alternatively, just tolerate the warning since actually 
			nothing will go wrong due to this re-definition.
	lib4th source
    => new:
    => modified:
    	reset-palette	reverted to vt-sequence because ioctls (re)setting from 
			*kernel* values, regardless of individual console settings.
	max-xy		by ioctl instead of vt-sequence, doesn't interfere w/ early 
			use of keyboard during system startup.
			ret full screen size figures (count 1..).
    => bugfix:		scan at end of stg, if char not found,
			    ret ptr to end of stg and count := 0


0.12.02	-rel- 26.9.01
	lib4th source
    => modified:
			minor code optimization, wrt return-stack &c.

0.12.01
	lib4th source
    => modified:
			CATCH/THROW removed from kernel: not feasible
    => bugfix:
	replace		result placement
    => modified:
	scsq.f8		fixed, adapted to modified file words
	l4{cpl,locals,rstack}.inc
			several <jmp ecx> modified to <push/ret> => 15%(+) faster,
			which most probably is a k6-specific (sort of) optimization 
			and thus might be a subject to individual adaptation...


0.12.00

0.11.04		-	cpl & test w/ Linux 2.2.14, rtl2.0 extension and ibm "jfs"
	lib4th.asm	main asm file further partioned:
	    l4constants.inc	forth constants
	    l4cpl.inc		compiler
	    l4cstruct.inc	control structures
	    l4debug.inc		debugging
	    l4errhd.inc		errors handling
	    l4sys.inc		system setup, modifiers
	    l4whead.inc		word header ptrs, conversion

	l4envq.inc	some aliased queries assigned to dedicated routines,
			actually, no change other than wrt labels names.
			
	l4sys.inc	saved console state restoring bug fixed - sttys &c. 
			was due to false calling sequence. {stty-s} remains 
			available as a forth word but, {bye} will now be useing 
			data read from initial console state.
	
	scdasm.inc	by admin/unistd-na generated syscalls defn for inclusion 
			of all in current kernel source available system calls.

0.11.03+15
	Makefile	lib4th dll compiles w/o libc dependency if "libc.a" will be
			found, e.g. w/ path to "libc.a" in LDFLAGS, -re- Makefile

0.11.03
	lib4th.asm
    => new:
    => modified:
	f8		testing access to program memory, w/ (bootp), <i4th_ntry>.
	zcount		different code, faster
    => bugfix:


0.11.02 -rel- 21.8.01
	lib4th.asm
    => new:
	l4xrf.html	<make xref> w/ MK-x & MK-hx-defs generated cross reference.
    => modified:
	help		immediate, also useable while compiling.
	<i4th>		structure used in <i4th_ntry> macro, 1st test w/ "f8" ok.
    => bugfix:
	qsqrt		sqrt 0


0.11.01 -rel- 9.8.01
	lib4th.asm
	    l4tools.inc		dump, help, see, words, etc.
    => new:
    => modified:
    => bugfix:


0.11.00
	lib4th.asm	split into several files, "l4...inc":
	    l4alogic.inc	sing & double logic opr & flags
	    l4assembler.inc	{assembler} voc.
	    l4bignum.inc	counted integers
	    l4block.inc		blockfile
	    l4consio.inc	console in-/output
	    l4defining.inc	definig words
	    l4dsarith.inc	double, sing and mixed sizes arithmetic
	    l4dstack.inc	data-stack manipulation
	    l4envq.inc		environment query strings (i.e. words)
	    l4ersigt.inc	error & signal codes & names tables
	    l4file.inc		file wordset
	    l4init.inc		forth system initialization
	    l4interpret.inc	interpreter words
	    l4ioport.inc	hardware port acces
	    l4jobs.inc		l4 job control & multi-tasking(n.i.)
	    l4locals.inc	local memory, values
	    l4memfsto.inc	fetch/store
	    l4numconv.inc	number & stg to number conversion
	    l4qdarith.inc	quad and double/quad mixed arithmetic
	    l4rational.inc	rational numbers
	    l4rstack.inc	return-stack manipulation
	    l4sighnd.inc	Linux signal handlers
	    l4smem.inc		system (heap) memory de/allocation
	    l4sorder.inc	search order, vocabularies
	    l4string.inc	string & text manipulation
	    l4text.inc		l4 message texts, character conversion tables
	    l4time.inc		date & time
	    l4tools.inc		dump, help, see, words, etc. (v0.11.01)
	    l4tty.inc		tty device default settings
	    l4uvari.inc		user vari
	    l4vt.inc		vt.. words
	    l4vtseq.inc		vt ctrl sequences tables
    => new:
	4integer	quad -re- {integer}
    => modified:
    => bugfix:
	uq*, q*		new code for {uq*}, ok, tested w/ <big.fth>:
			"Arithmetic on big signed-magnitude numbers.
			"Forth Scientific Library Algorithm #47
			"by Leonard Francis Zettel, Jr.
	uq/mod		new code, tested w/ <big.fth>


0.10.02
	lib4th.asm
		NOTE: persistent 'problems' w/ "pty" devices in X, now wrt 
		the "rxvt" terminal emulator. if when displaying long text
		sequences the screen output remains incomplete, still, yet 
		another	pseudo tty may be in use, requiring modification at 
		<ptystgq> in lib4th asm - pse, mailme...
    => new:
	col, row	get cursor column, row; {vt} voc.
	dv/, dvm/	double by double/sing ranum division
	1/dv		double ranum reciprocal
	dvround		{vround} for doubles
	dv>qv, qv>dv	quad <=> double ranum conversion, in {rational hidden}
	qvnormal	reduce by greatest common divisor, in {rational hidden}
    => modified:
	1/v		was {vreciprocal}
	accept, edlin	<cursor down> expands till e.o.l.
	gcd, dgcd, qgcd	in {forth} voc - was {rational}
	kbd', esc?	wrt keyboard response, still somewhat peculiar.
	pty?		(etc) for pty recognition wrt rxvt (using "old BSD style
			ptys", /dev/ttypN, -re- devices.txt in linux/Documentation)
	"quad \..nn.."	fetching a double praecision ranum (pair of doubles).
	v		{root} voc, was in {tools}
    => bugfix:
	-trailing	cutting 'whitespace' off stg end: <bl>,<tab>,<del>,<bs>
	f", fname"	compiling mode
	llseek		also affecting {reposition-file}, {file-position}
			m.s. cell return value in 32bit fss (dft);
			re-compile l4 if in 64bit fss or linux 2.4.+
	pov2?		n = 0 not a power of 2
	q/, qmod	were the rsp other operations
			ok w/ double, still false results w/ quad divisior	<==
	qgcd		using qmod, now functional


0.10.01 -rel- 25.7.01
	and previous versions re file CHANGELOG-0.00.00-0.10.01

# --------------------------------------------------------------------------------- #
# CHANGELOG <eof>
