Ver 1.0.0B, (Beta)
- Added an address offset option to the Assembler's 'DB and 'DW' commands, the offset is calculated as N * sizeof(TYPE); e.g. 'DB(4) 0 1 2 3 4' will increment the address by 4 bytes for each defined byte. 'DW(4) 0 1 2 3 4' would increment the address by 8 bytes for each defined word, useful for creating interlaced data, (see PucMon for an example).
- Added a simple audio wave editor for the inbuilt audio channels, allows more complex sound effects to be created, (see PucMon for an example); saves in a trivial 64 byte binary format '.gtwav'.
- Added the 'WAVE' option to 'LOAD', e.g. 'LOAD WAVE, <filename>, <optional address>, <optional offset>'
- Added 'CALL' 'PROC' and 'ENDPROC', these allow for procedures to be defined that can accept parameters and local variables.
- Total number of parameters PLUS local variables is limited to 8.
- Calling different procedures within a procedure MAY work, as long as the called procedure does not use any local/param slots that the callee procedure is using; see PucMon for examples.
- Gosub within PROCS will work correctly.
- Added 'LOCAL' for the defining of local variables within procedures; see PucMon for examples.
- Added the '_tempVarSize_' pragma, this allows you to choose how large the temporary expression area is, (defaults to 8 bytes).
- Added 'MIN()', 'MAX()' and 'CLAMP()' functions.
- Added 'BCDCPY' for copying a source BCD numeric to a destination BCD numeric, both MUST be the same size.
- Added the 'VARS' option to 'INIT', e.g. 'INIT VARS <optional start var address>', this will zero all user global variables starting at the optional start var and ending at the end of user var space.
- Added extra emulator commands/keys for the image and audio editors, (CTRL + I and CTRL + A); the image editor is unfinished.
- Added the printing of thunk and total thunk size stats to the compiler output.
- Refactored the Keywords: module into separate Operators:, Functions:, Keywords: and Pragmas: modules.
- Added the 'MUSIC_NOTE' system variable to the 'GET' command; e.g. 'GET("MUSIC_NOTE", <note>)' which does a ROM lookup and converts a standard 8 octave midi note byte, (0 <-> 127), into a Gigatron specific audio frequency value, (which can then be used with the 'SOUND' command); see PucMon for many examples.
- Added the 'MUSIC' option to the 'PLAY' command, this uses note commands/data in the exact same format as the 'PLAY MIDI' command, but plays the stream modally rather than in the background; see PucMon for an example.
- Added the Menu: and Dialog modules, which are simple UI code blocks designed to be used by various parts of the emulator, (editors, terminal, etc).
- Changed the allocation of runtime memory to prioritise larger runtime subroutines over smaller ones, this gives the runtime a better chance of being loaded successfully as RAM size gets smaller and more fragmented.
- Refactored test code out of the main modules into it's own specific Test: module.
- Fixed Terminal mode so that it is more consistent when toggling with other system modules.
- Rearranged zero page variables, minimum stack size is guaranteed to be 16 bytes, (but may be larger depending on your expression temporary var usage). This allows for a minimum guaranteed gosub/call nested depth of 8, INCLUDING the runtime!