When developing the indexing head controller, I needed a way to specify the menu structure
in a manner that would be easy to modify and which could be translated into an internal
representation usable by the BX-24. The solution was a tool called a menu compiler that reads
a menu description and produces a data file usable by the Source method of the ByteVectorData
class. If you think that this tool might be useful to you or you're interested in knowing
more about it, send me an email.
For both of the applications above, utilization of available RAM space was a significant problem.
To aid in predicting total RAM usage and to help in determining the worst contributors to stack
usage, I wrote a tool that I call the Ramalyzer. It uses information in the map file (.mpp)
generated by the BasicX compiler along with static analysis of the source code itself to estimate the
maximum RAM usage of all subroutines and functions. The information produced is very helpful
to discover which routines might be productive candidates for further work in reducing RAM usage.
Some sample output, generated from the temperature measurement sample program T_Meas1.Bas (including
I2C.bas and SerialPort.bas), is available here.
You may download a Zip file with the beta-level Win32 console application (.exe) and a short readme file
here (about 30K). Current version: v0.7.
I have been working with Mike Perks to develop a disassembler/analyzer for BX-24
object code. In addition to the ability to produce a more human readable rendition of the output
of the BasicX compiler, the program incorporates a ram use analysis similar to, but more accurate than
that produced by Ramalyzer. I encourage you to use the new program which you can download at no charge from:
here. Mike has also produced a series of
articles that describe in detail how the BX-24 works. The articles may be found