
	CHANGES TO THE S86 DEVELOPMENT KIT, VERSION 2


	3) CHANGES TO VERSION 2


	3.4 MAY 22 2000

	Removed a major bug from SLD which caused it to terminate
	with an obscure error when processing files with text/data
	segment sizes of more than 32767 bytes or less than 1024
	bytes.

	Removed some redundant procedure calls from SLD.

	SLD is a HACK. There are major portions which *really* have
	to be rewritten. Especially the ios_reposition() stuff is
	buggy. (See comments)


	3.3 APR 28 2000

	Implemented S86Q, a S86B subset with even less error detection
	and reporting. S86Q assumes abolutely correct input as it is
	expected to be generated by compilers. It supports even less
	addressing modes than S86B. When used to compile T3X output,
	it is about 30% faster than S86B.


	3.2 MAR 07 2000

	S86 generated bad relocation entries for forward references
	to data definitions. The following code, for example would
	have resulted in the generation of a Text->Text relocation
	entry:

	| .text
	|       mov     ax,A99
	| .data
	| A99:  dw      0

	However, the referred data object is in the data segment.
	The fixed version correctly generates a Text->Data entry.
	This bug was limited to S86, the one-pass version. S86B
	was not affected.


	3.1 MAR 03 2000

	Made the EXE initialization code (generated by -t exe) load
	DX with ES before setting ES = DS. This way, the startup code
	of a program can access the PSP of a DOS program by loading
	ES with DX. The T3XR6 startup code uses this method.


	2) DIFFERENCES TO VERSION 1

	This is a summary of differences between the S86 Kit version 1
	and version 2 (the current version).

	- The symbol table management in both assemblers S86 and S86B
	  has been optimized. Automatically generated labels of the
	  form 'Annn' and 'Tnnn' now share the same space as user-
	  defined symbols (not beginning with either 'A' or 'T').
	  Therefore, no space will be wasted for the other type, if
	  only one type is actually used.

	- A bug in the assembler S86 and S86B has been fixed with
	  caused invalid relocation table entries (and thereby unusable
	  object programs) to be generated, when the address of an
	  object was referenced by a data declaration in the text
	  segment. For example:

	|  .text
	|  L0:   dw      0
	|  L1:   dw      offset L0

	  would have generated a data->text relocation entry for L1,
	  which is wrong, because L1 is located in the text segment.
	  The fixed version will generate a text->text relocation
	  entry.

	- The linker SLD has been improved in several ways:

		+ The text/data image size limt of 28K no longer
		  exists.

		+ The -s option allows to create Oxygene programs
		  without symbol information.

		+ DOS executables (EXE files) can now be generated
		  directly, without having to run cvexe.


	1) CHANGES TO VERSION 1


	1.5 AUG 29 1999

	TAB characters were always expanded black on black in LIBVIO.
	Now using the selected color instead.


	1.4 AUG 27 1999

	Fixed a bug which caused ERASE() in the S86 RTS library to
	crash when no file was found. This was due to a local buffer
	not being freed properly.


	1.3 JUL 07 1999

	Made the VIO_PUTC() and VIO_PUTS() procedures interpret BS,
	HT, LF, and CR characters in the same way as a TTY with a tab
	size of 8 characters.


	1.2 JUN 25 1999

	The READS() function in LIBTX86.S did not unpack binary data
	properly and it returned the wrong length in this case.


	1.1 JUN 23 1999

	Added LIBVIO.S to provide VIO capability with the S86 package.
	The original (smaller) T3X RT library is still included in the
	../native directory.
	The new LIBTX86.O *requires* LIBVIO.O! The code size increases
	by <512 bytes by adding the VIO routines.

