- minor size optimizations.
- if not GR.0, switch to GR.0 before exiting to DOS.
- close all files and release all the malloced memory before calling reset
in syscall 0 and syscall 1.
- more internal adjustments for linear addressing past the first 64k.
- fix of a possible stack problem in MALLOC().
- requested amounts of memory passed to MALLOC() are now rounded up to the
closest page boundary.
- relocatable version, max. MEMLO is $3C00.
- if the CPU is not 65C816 or the OS is not compatible, wait for a keypress
after displaying the message and before exiting to DOS. Do this on any DOS
- forgot to switch to emulation mode when calling user program from within
USR() function, fixed now.
- added source code for Charles' Marslett fast FP routines to satisfy the
- "GET A" can be now interrupted using the Break key.
- after CLOSE #0 any error/stop message first forces the IOCB #0 to be
opened for the "E:" device before being displayed.
- error messages made more detailed.
- added separate error messages for the "R:" handler of the 850 interface.
- the interpreter now runs fully in the native 65C816 mode.
- fixed stack over- and underflows caused by TRAP.
- time related functions now take properly into account the difference
between PAL and NTSC.
- the interpreter is now RESET-proof (it seems it is stable enough).
- the zero page and the BASIC direct page are now separated.
- a bug in command line parser is fixed.
- fixed mul/div overflow crash (typo in the error handling routine).
- incorporated Charles' Marslett fast FP routines, with all changes
necessary for them to execute in native 65C816 mode and some speed
- implemented TBXL-style program line labels, and keyword GO#.
- implemented keywords %GET and %PUT
- implemented keywords PROC/EXEC/ENDPROC/ON ... EXEC
- POKE and DPOKE can't now destroy the DOS, the interpreter or the BASIC
program - the area taken by these is "protected" from poking into (Error 34
- numerous internal changes to make possible for the BASIC program to run
outside the first 64k (not yet complete).
- greatly improved the performance of conversion routines: 24-bit int to FP
and FP to 24-bit int. BASIC instructions which use these are much faster now.
- fixed a bug in 24-bit int to hex conversion routine that caused wrong
behaviour when the middle byte was zero.
- implemented BXE keywords INVERSE and NORMAL.
- implemented new keywords allowing memory allocations: MATTRIB, MFREE and
- implemented BXE keywords ERASE, PROTECT, UNPROTECT as aliases to already
existing TBXL commands DELETE, LOCK and UNLOCK, resp.
- implemented TBXL command DUMP.
- INPUT can be now given a text to be displayed before reading data (like
TBXL and BXE).
- MOVE/-MOVE reworked completely. It is now possible to move blocks bigger
than 64k freely around the entire address space.
- implemented keyword MEMSET.
- fixed (I hope) wrong behaviour of nested IF/ENDIF statements.
- 256 variables now allowed (like TBXL).
- WAIT expanded the functionality known from Microsoft BASIC.
- BXE keyword NUM added as an alias to already existing AUTO. Also both
made work more like in the originals (BXE and MSB).
- the syntax error when you wanted to declare two numeric tables in a row
in DIM (10 DIM A(5),B(8)) is fixed.
- ENDWHILE bug is fixed (didn't work)
- XIO syntax bug is fixed.
- INKEY$ is reworked, should be much better now.
- LOAD had a bug that could result in memory corruption sometimes, fixed.
- GET and PUT with multiple values are now implemented.
- GET and PUT w/o channel number now works as in Turbo BASIC too.
- DEL command is implemented.
- SYSCALL command is implemented.
- ARGC and ARGV$() functions are now interfacing a BASIC program to the
- command line parser is totally rewritten.
- AUDCTL is implemented.
- FILENAME command is implemented.
- New SET/SYS controls:
- 9 = 1, generate an error after ENTER command is completed.
- 24/25, MultiBASIC major/minor version number
- 26/27, underlying SpartaDOS version number (or 0 if not SpartaDOS).
- 28, if 1, stereo Pokey is available.
- GOTO/GOSUB/RESTORE etc should work faster now. Also loops are much
faster, when they entirely fit in one program line.