Kappa logo Kappa> Software> Basalt
Basalt - BASic ALTernative keywords
Basalt provides alternative keywords by extending the use of actual keywords and adding new keywords, both of which are used completely as native BASIC keywords.

Memory is claimed from a dynamic heap maintained above HIMEM.

Extra variable types are implemented using float variables. This is only for long strings (strands) at the moment.

There is now extensive support for the Toolbox, but too much for me to put details here. Please download the StrongHelp manual and the examples.

Here are some features, but this list is not up to date now.

Program
INFO, INFO$ and ARGS give information about the program and its environment.
Libraries
LIBRARY loads a translated library to the dynamic heap and also tokenises text files.
Debugging
LINE and ORIGIN give positions in the program and libraries. TRACE PROC clears the variable cache so that names are reported reliably. TRACE ENDPROC reports the ends of routines. REPORT uses the Reporter module to put messages in a window.
Strings
RETURN$, MOD$ and SWAP$ manipulate strings. PTY gives information about a character. NUM$ and NUM extend the string/number conversions. LET can allocate string blocks from the dynamic heap which can be 'garbage collected' by CLEAR$. INKEY 'types' a string into the keyboard buffer.
Regular expressions
MATCH, MATCH$, SEARCH, SEARCH$, REPLACE, COMPILE, GROUP, GROUPS and GROUP$ are used with the RegEx module.
Records
FIELDS$ returns fields from a string treated as a demarked record, such as a file path. FIELDS gives the number of fields.
Integers
BIT and BITS change individual bits of an integer.
Memory
DIM manipulates dynamic blocks and arrays. EXT gives the size of memory claimed from the heap. SORT uses the Armsort module to sort arrays. SPRITES and TOKENS deal with sprite areas and messages files. BLOCK provides a 256-byte block for Wimp operations with simple access and bounds checking on its use.
Routines
FN and PROC call named user-defined routines.
Files
CLOSE# does a safe close of a file handle.
Structures
ERROR enhances the use of errors and makes nested error handling feasible. EXIT breaks out of a loop.
System
SYS handles system variables. VDU gives the values of VDU variables.QUIT provides an experimental return code.
Time
TIME sets and returns a program timer based on the monotonic timer. SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, DAY$, MONTH$, NOW, UTC, DOW, DOY, WEEK, SECONDS manipulate UTC time values.
Variables
EVAL assigns to a named variable.

The full details can only be found in the StrongHelp manual, which can be downloaded separately.

I am still experimenting with Basalt so a few keywords may yet change and I would very much like feedback.

In the future I plan to have long strings, structures and objects, with a number of other esoteric types.

I introduced a bug in the heap code while tring to make it more efficient, which will principally affect DIM. Version 0.98b should correct this.

Download:
Basalt 0.98b beta; zipfile;
Basalt manual zipfile.
Toolbox examples zipfile.