Update EhBASIC

New Version 2.xx is here!…

7th April 2005.

Lots of changes, some small, some large. How BASIC handles functions internally has changed significantly with some major advantages for me, the code is far more easy to manage, and speed advantages for the user, about seventy cycles per value fetched. This doesn’t sound a lot but means about 140 cycles saved for any function that requires a value, and that’s most of them.

The RND() function has been changed and now uses the Galois method to generate the sequence and, as a consequence, this series has now been extended to a maximal length 32 bit series. This is about as good as any 32 bit pseudo ramdom generator can get without using more bits, or more time, and quite a lot of work went into addressing the shortcommings of other generators. It is no co-incidence that this generator now generates exactly the same sequence of numbers as that used in the 680×0 version of EhBASIC.

Some undocumented features were removed and the USR() function has been changed slightly.

Included with the source for EhBASIC is a minimal monitor to allow you to run EhBASIC on Michal Kowalski’s 6502 simulator. This also serves as an example of the minimal support code needed to run EhBASIC on other systems.

Version number is now 2.09 (2009), 2.22 (2013)

Has it really been nearly a year since the last update? Doesn’t seem like it. Most of this time has been taken with developing EhBASIC for the Mitsubishi 740 family, a 65C02 compatable cored microcontroller, and a port for the 680×0 processor. As it’s been so long a couple of version numbers have been skipped, these were never released.

The biggest change is that all keyword handling is now done with a dictionary instead of a simple list. The advantage to this is that line parsing and listing are much faster, in some cases nearly 100 times faster, and changes to keywords are now easier to do.

Another change is the way the FOR … NEXT loop operates internally. It no longer looks for current loops with the same loop variable when a FOR is executed. The advantage is faster code in a lot of places, the disadvantage is that if you jump out of a loop the stack space is never recovered. Since that’s a no-no anyway I’ve chosen to leave it like that.

Finally EhBASIC now announces the version number at startup. Any other changes are minor and are to improve speed, function or size.

Version number is now 1.10

25th July 2002.
Just a small update. The addresses where values for HEX$() or BIN$() have been changed. This frees up two bytes in page zero and is this …

nums_1		= $E0		; number to bin/hex string convert MSB
nums_2		= nums_1+1	; number to bin/hex string convert
nums_3		= nums_1+2	; number to bin/hex string convert LSB

… becomes …

nums_1		= Itempl	; number to bin/hex string convert MSB
nums_2		= nums_1+1	; number to bin/hex string convert
nums_3		= nums_1+2	; number to bin/hex string convert LSB

This is done in version 1.05
8th July 2002.
This is a re-write of the BIN$()and HEX$() functions. This frees up 8 bytes from page zero as well as being a little quicker. The downside is code length which is up slightly to 9600 bytes ($2580 bytes).

Examples of the speed increase are ..

Cycle times for HEX$(57005) and BIN$(57005)
Function Before After Saving
HEX$() 686 cycles 465 cycles 221 cycles (110uS @ 2MHz – 32%)
BIN$() 1700 cycles 1079 cycles 621 cycles (310uS @ 2MHz – 37%)

The other change is that both binary and Motorola hex versions are also available for download.