Enhanced BASIC, update By Lee Davison. |
Download version 2.10 source
7th April 2005.Somewhere back in version 1.xx some changes were made that never got integrated into the main source. Those changes are now done.
Version number is now 2.10
With no job taking up 40 hours a week you'd think I'd have more time, strange how it seems I have less but I guess that's the way it goes.
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 680x0 version of EhBASIC.
Some undocumented features were removed and the USR() function has been changed slightly. I really must document that.
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.
Lastly, the pre assembled versions have been dropped.
Version number is now 2.09
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 680x0 processor. As it's been so long a couple of version numbers have been skipped, these were never released.25th July 2002.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
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 ...8th July 2002.
... becomes ...
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
This is done in version 1.05
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 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.
Last page update: 1st March, 2009. | e-mail me |