Colour Maximite 2, Version 5.06.00 release notes

BREAKING CHANGES FROM V5.05.05:
IMAGE ROTATE direction reversed to match IMAGE ROTATE_FAST, positive angles are clockwise
MM.INFO(AUTORUN) replaced with MM.INFO(OPTION AUTORUN)
Programs that peek and/or poke or use CSUBs to access video memory pages other than page 0  ( 8 and 16 bit colour) and pages 0 and 1 (12-bit colour)
in  modes 3,5,6,7,12 and 13 will not work as expected and may crash
GETSCANLINE now reports the first visible line as 0 rather than the first line after VSYNC
CSUBs may need re-compiling

Bug fixes from V5.05.05:
Fixed bug where PLAY TTS corrupts the last variable to be created before it is run.
Fixed bugs blitting to and from pages in SDRAM to pages in normal memory in 12 and 16-bit modes when x coordinates were odd numbers
Fixed bug in SELECT case where the selection was being made on an element of a string array
Fixed bug if a program is terminated with Sprites hidden using SPRITE HIDE ALL. 
Fixed bug where switching off the console output to the serial port didn't wait for buffered transmission to complete
Fixed issue with the short form help line shown in editor and filemanager in some high resolution modes.
Fixed bug in SPRITE LOADPNG which misses the last pixel in the png file. 
Fixes bug where closing quotes are missing in program lines and improved error reporting of same
Fixes memory management bug in mode 7,12
Traps error when a static variable name and function/sub name are greater than 32 chars combined.
Fixes bug in ARC command in 16-bit modes
Fixes bug where PEEK(SHORT n) returns a 4-byte answer rather than 2
Fixes bug where IMAGE ROTATE command rotates in the wrong direction.
Fixes bug when trying to edit a file with an invalid pathname the error will only occur when exiting the editor. 
Fixes bug when typing RUN "filename without the closing quote can lock up the system. 
Fixes bug when typing PRINT and then some reserved words such as AS or FOR can lock up the system.
Fixes bug when running a program with a loadable font and then setting to that font at the command line then running another program can give obscure issues. 
Fixes misalignment in Font 5 - thanks Jim
Fixes bugs in TRACE and TRACE LIST when multiple commands separated by colons are on a line
Fixed bug when you use page down in the filemanager on a less than full screen
Fixed bug where setting repeat rate to 25 cause options to be reset on next power up
Fixed bugs in search in editor
Fixed bug in LOAD SPRITE in 12-bit mode
Fixed bug where pressing F2 in the filemanager when the cursor is on a top line in a sub directory will hang the system.
Fixed bug in memory page allocation for modes 7,12, 7,16, 8,8
Fixed bug using TAB at the command line

New Functionality in V5.05.06 see the updated manual for more details

Usability changes:
Major performance improvements
Page up/down functionality in filemanager now goes to top or end of current display on first press and then pages by the number of lines showing on subsequent presses
Page up/down functionality in editor now goes to top or end of current display on first press and then pages by the number of lines showing on subsequent presses
Editor now renames the original file by appending .bak to the filename before saving the changed version
SHIFT_TAB deletes up to a TABs worth of spaces if the cursor is on a space character. Useful for changing the indenting of a line
SHIFT_DELETE  if used at the beginning of a line deletes all leading spaces. Anywhere else in the line and it acts like DELETE as previously
OPTION TAB 3 is now valid
Changing frequency when using the SOUND command will no longer create a click when the same channel is used for the same type of sound
New MODE 13 supporting 400x300 display
New defined colour NOTBLACK 
OPTION USBKEYBOARD nn [,noLED] The optional noLED parameter can be set to 1 to block sending the command to the keyboard that lights the LEDs relating to Caps_lock etc. This may be needed on some keyboards don’t seem to process this command properly and lock up. It defaults to 0 if not specified. i.e. the LED commands are sent.
#DEFINE directive : Implements string replacement in the source
#MMDEBUG directive: Controls whether MMDEBUG commands are loaded into memory when a program is run
LOAD SPRITE in 12-bit mode: The code now distinguishes between 0 = solid black and space = transparent

New Commands and sub-commands:
A beta 3D engine is included check thebackshed for the current status of the DRAW3D command and DRAW3D( function
HELP
CALL subroutine and CALL() function
MMDEBUG
MEMORY COPY
MEMORY SET
INC var [,increment] ' increments var by one or by the "increment" if specified
CAT string1$, string2$ 'string2$ is appended to the first string
MATH INSERT targetarray(), [d1] [,d2] [,d3] [,d4] [,d5] , sourcearray()
MATH SLICE sourcearray(), [d1] [,d2] [,d3] [,d4] [,d5] , destinationarray()
MATH Q_EULER
MATH INTERPOLATE in1(), in2(), ratio, out()
MATH(CORREL  a(), a())
IMAGE WARP_H x, y, w, h, x1, y1, h1, x2, y2, h2 [,readpage] [,dontcopyblack]
IMAGE WARP_V x, y, w, h, x1, y1, w1, x2, y2, w2 [,readpage] [,dontcopyblack]
IMAGE RESIZE and IMAGE ROTATE now have the same parameter lists as IMAGE RESIZE_FAST and IMAGE ROTATE_FAST
LIST PAGES
PAGE RESIZE
PIXEL FILL
PEEK(VARHEADER var) 
POLYGON - minor addition to parsing arrays as input
TRIANGLE - minor addition to parsing arrays as input
SORT array() [,indexarray()] [,flags] [,startposition] [,elementstosort]: additional optional parameters
CHOICE(condition, ExpressionIfTrue, ExpressionIfFalse): This function allows you to do simple either/or selections more efficiently and faster than using IF THEN ELSE ENDIF clauses
WII is now deprecated and acts as a synonym for CONTROLLER
GUI CURSOR supports displaying a cursor on the screen unaffected by other drawing commands
CONTROLLER MOUSE is used to enable and disable a Hobbytronic USB mouse I/F
MOUSE(funct [, channel])
PAGE COPY now includes an extra optional parameter PAGE COPY frompage TO topage [,when] [,dontcopyblack]
BLIT WRITE now accepts an optional orientation parameter
PIXEL( x, y [,page_number]): PIXEL function now has optional parameter to specify the page to read
XMODEM receive and send now both support using COM1 or COM2 as well as the console (default)
MATH ADD can be used to add a fixed amount to every cell in a single or multidemensional array
LONGSTRING additions, together with LGETBYTE these additions make it easy to use a longstring as a byte array.
LONGSTRING SETBYTE n, data 'sets byte n to the value data, n respects OPTION BASE
LONGSTRING RESIZE n 'sets the stored size of a long string to n
@ function can now be used with the Y coordinate not specified
New SPRITE function calls:
SPRITE(D,spriteno1, spriteno2) 'returns the distance between the centres of spriteno1 and spriteno2 (returns -1 if either sprite is not active)
SPRITE(T,spriteno) ' returns a bitmap showing all the sprites currently in collision with the requested sprite Bits 0-63 in the returned integer represent a current collision with sprites 1 to 64 respectively
SPRITE(E,spriteno) ' returns a bitmap showing which if any edges of the screen the sprite is in contact with
New graphics modes for widescreen monitors: Mode 11 (1280 x 720), Mode 12 (960 x 540)
MM.INFO(RESET) returns the cause of the last restart of the firmware and then clears it. Possible values are Switch, Power-On, Software
MM.INFO(OPTION option) returns the state of options that are relevant to how a program will run. i.e. ANGLE, AUTORUN, BASE, BREAK, DEFAULT, EXPLICIT, LEGACY, USBKEYBOARD, Y_AXIS
MM.INFO$(DIRECTORY) Returns the current working directory. This will always end with a ‘/’ character.
MM.INFO(PATH) Returns the path of the current program or NONE if called after a NEW command
OPTION Y_AXIS DOWN(default) or UP sets whether 0,0 is at top left (DOWN) or bottom left. Can only be used in a program and cleared to default on exit.
OPTION ANGLE mode: mode can be DEGREES or RADIANS (default). This command switches trig functions between degrees and radians. Acts on SIN, COS, TAN, ATN, ATAN2, MATH ATAN3, ACOS, ASIN. This is a temporary option that is cleared to default when programs end, after an error, or after Ctrl-C so should be set at the top of any program that requires to use angles in degrees.
LOAD SPRITE in 12-bit mode: The code now distinguishes between 0 = solid black and space = transparent
LOAD SPRITE in 8 and 16-bit modes: : The code now distinguishes between 0 = solid black and space = transparent. Uses the colour NOTBLACK for pixels marked 0
ON KEY [ASCIIcode,] interrupt routine
There is a new optional first parameter for ON KEY. This allows you to associate an interrupt routine with a specific key press. This operates at a low level for both the USB keyboard and a serial console and if activated the key does not get put into the input buffer but merely triggers the interrupt.
On the USB keyboard the "print screen" key generates ASCII code &H9D and the "pause/break" key generates &H9E


__________________________________________________________________________________________________________

Colour Maximite 2, Version 5.05.05 release notes

BREAKING CHANGES FROM V5.05.04: NONE

Bug fixes from V5.05.04
Fixed bug in MID$ command when trying to change the last character in the string
Fixed bug in PWM 2 command when run in a program
Fixes bug caused when entering the editor with files left open from a previous run of the program
Fixes bug in error trapping in PAGE WRITE command
Improves timekeeping of RTC when processor is reset
Update to FR keyboard mapping
Update to DE keyboard mapping
Fixed bugs in EXECUTE command , RUN with A: and RESTORE
Fixed bug using font 7 with scale <> 1
Fixed screen formatting error in OPTION STATUS ON when cursor is on last line
Fixed screen formatting errors when programs end using non-default fonts when cursor is on last line
Fixed bug where using page copy, page stitch, page and_pixel, page or_pixel or pafge xor_pixel in modes 3,5,6 when page write is set to framebuffer will give incorrect results.
Fixed bug where setting a left or right SOUND output will change the volume of the other output to the maximum 25
Fixed bug where #INCLUDE statement must be the first characters on a line. 
Fixed bug where RUN "filename" will give an error if OPTION SEARCH PATH is set and the filename contains the device in the path e.g. "A:/filename.bas". 
Fixed bug where shift right-arrow in the editor starts the selection and highlights the character but if shift is held down further right-arrow characters are ignored. 
Fixed bug in DATA statements. Strings that are not enclosed in quotes get converted to uppercase during program 'save'
Fixed bug where PLAY SOUND doesn't allow a volume of 0
Fixed bug in STATIC declarations in functions can sometimes fail with the error message " Error: Conflicting variable type".  
Fixed bug if a BLIT is positioned partly off screen with mirroring active
Fixed bug drawing graphics off the top of the screen sometimes leaves a line in the top row
Fixed bug in file handling of relative paths with ".." in the path name incorrect in KILL, MKDIR, RMDIR, NAME, EDIT
Fixed bug when Missing final " character in #include construct locks up processor
Fixed bug in image resize(_fast) when page write is framebuffer and mode is 3, 5, or 6
Fixed bug when FILES command is used on blank SDcard
Fixed bug in PLAY SOUND command that requires a frequency even when the mode is O
Fixed bug in turtle graphics fill routine
Fixed bug in using Mode 1,16 when using sprites and running the program from the editor or filmanager
Fixed bug in SPRITE LOAD that restricted maximum sprites to 63 rather than 64
Fixed bug in DAC START frequency caluclation - was 0.5 of requested value
Fixed bug in DIR$, MM.INFO(MODIFIED and MM.INFO(FILESIZE when pathname contains ../

New Functionality in V5.05.04 see the updated manual for more details

Usability changes:
Improved readability of error reporting
MODE 10 which is 848x480@60Hz for use with widescreen monitors
MODE 9 which is 1024x768
MODE 8 which is 640x480
MODE 7 which is 320x240 to use full screen
MODE 6 which is 256x240 for NES compatibility
ES keyboard support added
Option to use FRAMEBUFFER as the read page for IMAGE commands
Floats for Turtle turns and any angle for turns and heading
Negative numbers for Tirtle forward and backward and range increased to +/- SQRT(MM.HRES^2 + MM.VRES^2)
Allow negative values for turtle forward and backward
All turtle graphics now converted to use double precision to reduce loss of accuracy 


New Commands and sub-commands
OPTION DEFAULT MODE
PLAY MODSAMPLE sampleno, channelno [,volume] [,samplerate]
SPRITE HIDE ALL
SPRITE RESTORE  
SPRITE SHOW SAFE
SPRITE HIDE SAFE
New Mode 6 which is 256x240 for NES compatibility
DAC START frequency, left%() [,right%()] [,DACint]
MM.INFO(FRAMEBUFFER)

___________________________________________________________________________________________________

Colour Maximite 2, Version 5.05.04 release notes

BREAKING CHANGES FROM V5.05.03:
NUNCHUK command replaced by WII NUNCHUK otherwise syntax the same
WS2812 renamed BITBANG WS2812 
FONT 4 replaced with a 10x16 font
FFT replaced by MATH FFT otherwise syntax the same
TTS replaced by PLAY TTS otherwise syntax the same 
OPTION F11 and F12 restricted to 23 characters
OPTION SD TIMING now defaults to the slower setting. New settings are OPTION SD TIMING NORMAL and OPTION SD TIMING FAST
Removed PLAY SPEECH
Removed BITMAP command


Bug fixes from V5.05.03
Significant performance enhancements (> 10%)
Fixed bug when variable names beginning REM start the line
Fixed bug in ARC command when first radial is negative
Fixed bug in ADC command causing lockup when number of channels opened > number sampled
Fixed bug in ADC command setting sampling rate
Fixed bug in DAC command setting output rate
Fixed bug in Turtle fill
Fixed minor colour variations between sprites and drawing commands in Legacy mode
Imposed checks on MODE and OPTION LEGACY commands to only allow legacy in 8-bit colour mode
Allow comment lines in CMM1 sprite files
Fixed bug when trying to edit a new file that has the same name as an existing directory
Fixed bug when playing mono WAV files
Modify Font 7 to make degree symbol compatible - use back single quote
Fix bug when using full path with include files
FIX bug using USB insert key
Closes serial ports when entering the editor to avoid corruption
Fixes page to read from after Ctrl-C
Opens the editor on the last edited line after a skipped error rather than the error line
Fixed bug in GPS function when run from the command line
Fixed bug where graphics commands that were completely off-screen left a line
Fixed case matching bug in EVAL when user functions were called
Avoid issue with OPTION EXPLICIT being specified when using RUN with a text commandline
Change to initialisation to better support dual mode PS2/USB keyboards

New Functionality in V5.05.04 see the updated manual for more details

Usability changes:
Use CTRL-B or F8 in the editor to write the contents of the cut/paste buffer to a file. You can then use this file to include in another program
Holding the shift key and using the right arrow or down arrow keys in the editor will initiate select mode. 
This only works with a USB keyboard and not a serial console as shift arrow is not interpreted on a serial console.
Existing files without an extension can now be edited.
The editor will still default to appending ".BAS" if the file does not exist. If you need a new file without an extension create it with an extension of ".tmp" and then rename it.
The keyboard auto-repeat rate is automatically scaled when in the editor if the screen is scrolled. This will stop multiple keypresses stacking up when the screen can't keep up.
Better picture review in the filemanager. Pressing return on any picture file in the filemanager will switch to 800x600x16bit mode (mode 1,16) and display the picture as before. 
However, now pressing any key when the picture is displayed will return to the filemanager with everything left as before the picture was displayed.
Shortform run command at the command prompt. An asterix before a filename will be interpreted as the RUN command.
FR keyboard support
OPTION EDIT FONT 
OPTION SEARCH PATH pathname$
OPTION COLOURCODE REVERSE
OPTION RAM
OPTION FLASH [n]

New Commands and sub-commands
WII CLASSIC
FRAMEBUFFER
EXECUTE
PAGE AND_PIXELS
PAGE OR_PIXELS
PAGE XOR_PIXELS
IMAGE ROTATE_FAST
IMAGE RESIZE_FAST
BITBANG BITSTREAM
CSUB
MATH

New Functions and sub functions
MM.INFO$(SEARCH PATH)
MM.INFO(FrameH)
MM.INFO(FrameV)
MM.INFO(PROGRAM)
BOUND()
CLASSIC()
MATH()

Additional parameters or functionality for existing commands and functions
Set maximum ADC sampling rate to 480KHz on 400MHz processors, 500KHz on 480MHz processors
SPRITE READ/ BLIT READ: New optional parameter page number
PLAY MODFILE: New optional parameter samplerate
KEYDOWN(7)
KEYDOWN(8)
Implemented support for $GN messages as well as $GP in the GPS background processor






