VER251.TXT	25-Apr-2007


XPLX and XPLN versions 2.5.1 now have the 'string' directive (XPLI does
not). This enables you to change the convention used for terminating
strings. If "string 0;" (without the quote marks) appears in a program,
from that point on, strings are terminated with a null (zero) byte. If
"string 1;" (or any nonzero value) appears then strings are terminated
with the MSB set.

The compiler defaults to MSB termination for compatibility with old code.
The 'string' directive changes the operation of the Text intrinsic (12).
The RawText intrinsic (71) does not change, and is obsolete, but it's
still supported for compatibility with existing code. The intrinsics
Chain (28) and FOpen (29) have always supported null- terminated strings.

The null-terminated string convention has several advantages. It's
compatible with the way DOS and BIOS use strings, the extended ASCII
characters ($80..$FF) can be used in a straightforward way, and a string
can be empty (i.e. "").

The literal characters "^Z" are now allowed inside strings. These display
the right-arrow character. Previously, "^Z" was converted to an actual
control-Z, which is the end-of-file marker, which terminated the compile
with an error 63.

Fixed a tiny bug: If a real is ANDed with an integer, it's now detected
as a compile error.

                                  - - -

The major new feature of version 2.5 is the ability to insert assembly
code directly into an .XPL source file using the new command word "asm".
There are also a few minor bug fixes and enhancements that have
accumulated since the last release (version 2.4.6).

The manual is updated, reflecting changes since version 2.3. There is a
new section in a separate file called ADDENDUM.TXT that describes the
major changes, such as the in-line assembly capability.

The ReadPix intrinsic (44) is many times faster when using graphic mode
$13. The BIOS call that was used previously is replaced with much faster
code that directly accesses video memory.

A bug in the Chain intrinsic (28) is fixed, where ES did not point to the
PSP when a sub-program was started. Thus GetReg (intrinsic 35) returned
the wrong value in its array element 11.

There were other trivial changes such as modifying comments in STDLIB.XPL
and using modern looking lowercase names in CODESI.XPL.

The XREF utility is updated to handle in-line assembly and to not shift
names to uppercase.

-Loren Blaney
