Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 23:28 13 Nov 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : MM+ Fast Loading of RLE Images from Flash to SSD1963

Author Message
disco4now

Guru

Joined: 18/12/2014
Location: Australia
Posts: 1045
Posted: 04:21am 12 Jun 2020
Copy link to clipboard 
Print this post

░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
░░         WORK IN PROGRESS F4 Update  
░░                Please don't reply to thread       ░░░░
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░


TODO
-----
--- Changes from Picomite 6.00.02RC5 ---
https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=17777#235710

Functions MM.HRES, MM.VRES, MM.VER, M.I2C, MM.FONTHEIGHT, MM.FONTWIDTH, MM.PS2, MM.HPOS, MM.VPOS, MM.ONEWIRE, MM.Errno, MM.ErrMsg$, MM.WATCHDOG, MM.DEVICE$
are now all implemented as written and none of them are converted to MM.INFO calls by the pre-processor

function TEMPR(Pinno [,timeout]) 'new optional parameter timeout to override the default (200mSec) to allow for slow devices
command TEMPR START GPno [,resolution(0-3)] [,timeout]  'new optional  parameter timeout to override the default (100, 200, 400, or 800mSec) to allow for slow devices

Have a look on github at fun_tilde in functions.c, llist in commands.c, changes to str_replace (fixes a bug where replacements could happen incorrectly) and tokenise in MMBasic.c. I'm going to add MM.CMDLINE$ and the MQTT MM.s as well in the next RC which will get rid of the various background variable creation code that current supports them.

Automatic length adjustment for string constants.
Where a constant string is less that 16 characters no heap will be used. The data is stored within the pre allocated table for the variable definitions.
String variables defined with a LENGTH of less than 16 (was previously < 8) are also stored within the variable definition and require no heap allocation.

Added @( function. i.e. PRINT @(x,y) when outputting to the console.
OPTION CHARS will enable x,y to be entered as row,column in lieu of pixels.
OPTION CHARS OFF will return to pixels.

Fix MATH V_PRINT
GetSystemMemory performance stuff

--------------------------------------------------------------------------------

ARMmiteF407xGT 5.07.02 -for STM32F407VGT6,STM32F407ZGT6,STM32F405RGT6 In Progress
Armmite F407xGT6 5.07.02 Beta 1
BYVAL and BYREF qualifiers added to SUB definition.
PWM will set output pin to OC(Open Collector/Drain) if frequency given as -ve number.
PWM fixed issue where a frequency change was not recorded, so returning to the original frequency did not result in an update.
LIBRARY SAVE future proofed for 0xFF token 16bit tokens.
OPTION LCDPANEL accepts [,INVERT] to invert colours on ILI9341 and ILI9488
Support for LCD Display ST7796S 480*320 SPI
Fixed issue where MEMORY command erased saved variables.
LINE command enhanced. LW given as -LW will set LW in all directions

--------------------------------------------------------------------------------


ARMmiteF407 5.07.02 -for STM32F407VET6  - Inprogress
Armmite F407 5.07.02 Beta 5

PWM will set output pin to OC(Open Collector/Drain) if frequency given as -ve number.
PWM fixed issue where a frequency change was not recorded, so returning to the original frequency did not result in an update.
LIBRARY SAVE future proofed for 0xFF token 16bit tokens.
OPTION LCDPANEL accepts [,INVERT] to invert colours on ILI9341 and ILI9488
BEZIER drawing command removed.

Support for LCD Display ST7796S 480*320 SPI
LINE command enhanced. LW given as -LW will set LW in all directions
ON ERROR RESTART implemented
A hardware error will now cause a restart.
MM.INFO(BOOT) shows reason for last restart.
AUTOSAVE N implemented for fast loading
CONST strings < 10 chars now don't use HEAP. Stored in VARTBL
MM.INFO(HEAP) added.


--------------------------------------------------------------------------------

Armmite F407xGT6 5.07.02 Beta Releases
This firmware supports STM32F407xGT6 chips with 1 Meg Flash.i.e STM32F407VGT6 100 pin, STM32F407ZGT6 144 pin, WeAct STM32F405RGT 64 pin and Adafruit Feather STM32F405RGT 64 pin .
The links below point to the latest Manual, Firmware, Source and a FotS page dedicated to the ARMmiteF407xGT version.
See the FotS page for details on the boards that have been tried/tested.

Latest Manual
Armmite F407xGT6 User Manual
Latest Firmware
There are three versions of the firmware:
The default version uses the default PE3 and PE4 pins for MMBasic Reset and Switch to Serial Console on the 100 and 144 pin boards.
The PC13Reset versions uses PC13 to test for MMBasic Reset and Switch to Serial Console.
The Adafruit version is for the 64 pin Adafruit version with a 12MHz clock.
Armmite F407VGT6 Firmware (default) on GitHub
Armmite F407VGT6 Firmware (PC13Reset) on GitHub
Armmite F407VGT6 Firmware (AdaFruit Feather) on GitHub
CFunctions Header File 
CFunctions Header File (ARMF4CFunctions.h)
Source Code
Source Code on  GitHub
Fruit of the Shed
FotS Armmite F407xGT6

Footnotes in this first post will be used to reference further updates as required.




Armmite F407xGT6 5.07.02 Beta 0
This first Beta includes all enhancements/fixes as per Armmite F407 5.07.02 Beta 3/4. see here
These include:
CAN [OPEN|CLOSE|START|STOP|FILTER|SEND|READ] commands added
FSMC pins now available for MMBasic use if no parallel display configured.

These additions/differences apply to the F407xGT6 5.07.02

The additional flash allows increased size for the firmware.The firmware is now optimised for speed rather than size.
No LCD Panel is configured by default.
The LIBRARY is now an additional 128K flash section separate to program memory and does not rely on the SPI Windbond flash chip.
OPTIONS are moved back into flash so not dependent on RTC battery.
SAVED VARS are moved back into flash so not dependent on RTC battery.
Both are reset to default when new firmware is loaded.
The Command Line Buffer is moved to RTC Ram (first 1K)
OPTION RESET will clear the options and also the Command Line Buffer.
RTC Ram is also cleared with an MMBasic RESET.

LIBRARY RESTORE will restore any existing library after OPTION RESET.
MM.INFO(DEVICETYPE) added. Returns "Feather" for Adfruit feather else ""
I2C SLAVE mode added.
OPTION Fn5-9 added.
LINE AA command added
LINE GRAPH command added
LINE PLOT command added  
MATH CROSSING() added
MATH CRC12 added
MATH POWER added
MATH SHIFT added
MATH(CHI ..) function added
MEMORY PACK/UNPACK added
MEMORY INPUT/PRINT added
SORT command enhanced as per Picomites.


---------------------------------------------------------------------





Hi Peter,

I have a question about MATH(CHI a()).

In this code

DIM a(1,1)
PRINT MATH(CHI a())

I get "INF" as answer. "Probably" because all elements in a() are zero.


DIM a(1,1)=(1,1,1,1)
PRINT MATH(CHI a())

I get 0, which is correct.

But now the situation gets strange. Lets set OPTION BASE 1

OPTION BASE 1
DIM a(2,2)=(1,1,1,1)
PRINT MATH(CHI a())


The result is "INF".
It feels like OPTION BASE 1 does not work with the CHI function.

I hope I am not confused....
I have tested against

this

option base 1
dim a(2,5)=(17,5,25,21,39,34,42,49,32,25)
? math(chi a())

and

this

option base 1
dim a(4,3)=(90,60,104,95,30,50,51,20,30,40,45,35)
? math(chi a())

Armmite F407 5.07.02 Beta 4

The manual and binary linked below are on GitHub. These point to the latest versions.
A copy will be place on TBS when any minor errors are identified so there is a permanent copy of beta4 on TBS.
Armmite F4 manual -Latest Manual Currently 5.07.02 Beta 4
ArmmiteF407 binary Latest default binary Currently 5.07.02 Beta 4
ArmmiteF407PC13Reset binary Latest alternate binary Currently 5.07.02 Beta 4

The testing for an MMBasic Reset is now restricted to a Power Up Restart.

This is an attempt to guard against a false triggering of an MMBasic Reset on a running (powered) system.
See Armite F4 loosing program

The alternate firmware ARMmiteF407PC13Reset.bin is provided to move the testing for an MMBasic Reset off PE3 (K1) and also the testing for Option Serial Console off PE4(K0). Pin PC13 is now used to trigger these events. This allows PE4 and PE3 to be used without risking an unintended MMBasic Reset or switch to Serial Console.
3.3V on PC13 will trigger an MMBasic Reset
GND on PC13 will trigger a switch to the Serial Console.
!!! MMBasic Reset !!!
Now printed on console after an MMBasic Reset is forced.

MM.INFO(BOOT) will return the reason for the last MMBasic Restart.
“Power On”, ”Reset Switch”, “MMBasic Reset”, ”CPU RESTART”, “Watchdog”, “EXECUTE Timout” or “HEAP Restart”.
These could be written to a log file to see the history of an unattended device.

LCDPANEL ILI9341_I removed.
OPTION LCDPANEL accepts [,INVERT] to invert colours on ILI9341 and ILI9488
In the commandline editor the automatic OVR mode on right arrow removed to lineup with the Picomites.
Comments are no longer tokenised as per Picomites.
MATH V_PRINT array() [,HEX]  outputs the contents in hex
LONGSTRING PRINT allows ; to suppress CRLF
CAN OPEN syntax adjusted slightly
Function INKEY$ changed so it automatically resolves Function and special keys
as per picomites and CMM2.
SHIFT F3-F8 Added as per picomite 6.00.02B0
//NB: SHIFT F1, F2, F9, F10, F11, and F12 don't appear to generate anything
AUTOSAVE APPEND  added.
MEMORY PACK/UNPACK removed to recover flash.







Armmite F407 5.07.02 Beta 3
This Beta implements the new routines for parsing command parameters as used in the Picomite code.(i.e.MATH,LONGSTRING,ADC, commands). This has resulted in the freeing up of significant Flash, allowing some commands previously omitted to save space to be now included.Various errors discovered in beta2 and others discovered as a result of Picomite testing are also corrected.

The manual and binary linked below are on GitHub. These point to the latest versions.
A copy will be place on TBS when any minor errors are identified so there is a permanent copy of beta3 on TBS.
Armmite F4 manual -Latest Manual Currently 5.07.02 Beta 3
ArmmiteF407 binary Latest binary Currently 5.07.02 Beta 3

CAN [OPEN|CLOSE|START|STOP|FILTER|SEND|READ] commands added
FSMC pins now available for MMBasic use if no parallel display configured.
MATH C_ADD etc commands that act on cells added as per picomites.
MATH SHIFT added  as per picomites
MATH WINDOW added as per picomites
MATH WINDOW fixed when input and output matrix are not the same type
MATH SD formula changed to Sample Standard Deviation as per Picomite
LINE PLOT command added as per picomites
LINE GRAPH command added as per picomites
LINE command updated getargaddress() function from Picomite with fix for % in LINE
Fix for MATH M_MULT not  giving correct results.
Improved MATH M_MULT as per Pico RC5 (Added but not yet tested)
Improved MATH M_PRINT as per Pico RC5 (Added but not yet tested)
MATH command accepts either C_MUL or C_MULT. (as per Picomite)
Added MM.INFO(NBRPINS)  returns 100
Added MM.INFO(OPTION VCC) returns current value for VCC
Minor update to CommandLine Bufferdetails here

BITBANG becomes DEVICE as per picomite latest release. i.e.
i.e.
DEVICE BITSTREAM
DEVICE LCD
DEVICE HUMID
DEVICE WS2812

DEVICE BITSTREAM error in calculation fixed
see this thread

LIBRARY CHECK becomes LIBRARY RESTORE is more closely match its function

Fix to allow no space after = in DIM i%=12345 as per picomite.
Fix to command READ not finding DATA statement if token 255 is in use.(as per picomites)
Fix for EXECUTE command in beta2 not having a timeout value.
Print datetime$(epoch(now)) no longer gives error.

Extend PEEK range to allow PEEK(VARADDR var) for non array integers and floats.
MEMORY command shows variables again.
MM.INFO(PINNO pin ) now returns correct value.
OPTION ANGLE now defaults to RADIANS after CNTRL C or END command.
COM4 TX and RX were partially reversed, A pullup on RX possibly not released when
COM4 closed . Now resolved.
ADC START now accepts additional parameters as per the Picomites that allow mapping of the the output data to a desired range.
ADC TRIGGER now allows a timeout value to be set. 'timeout' is the number of ADC samples to take before abandoning the wait for the trigger condition. Setting a value equal to the frequency of the sampling would give a timeout of 1 second.
ADC TRIGGER,channel,level[,timeout]
Fix for freeze at command prompt after CNTRL C, ERROR , WATCHDOG if DAC was running.
Fix for incorrect frequency and pulse width generated on SERVO 3 command.
Added ~ option to error() as per picomite and call it from getint() function
to allow correct error message format.

Improved scrolling for Editor and Console for non SSD1963 parallel displays:
 Editor rewrites in lieu of scrolling and
 OPTION LCDPANEL CONSOLE ,,,,,, NOSCROLL added for 16bit parallel non SSD displays
 to improve scrolling when used as a Console.
IPS_4_16 now works as a CONSOLE - was giving out of memory error.
REMOVED - OPTION LCDPANEL CONSOLE support on SPI LCD PANELS

Manual Updates.
See Change Log section in manual.


PicoMite Fixes NOT included
----------------------------

TODO
-----------------




NOT INCLUDED FOR NOW
---------------------
I2C READ allows >255 chars if INT or Float array used.(as per Picomite)

====================================================================================


Armmite F4 5.07.02 Beta 2
multi line comments /*   */ added as per picomites
Using \\000 and \&00 (with OPTION ESCAPE) give error message to use CHR$(0) as per picomites
SPIClose() added before AppendLibrary incase left open by flash write fail, which then gives misleading error.
Fix for potential FILES error identified by Peter.
BACKLIGHT command syntax updated to match Picomite
BACKLIGHT value[,DEFAULT|REVERSE]
Fix for OPTION ANGLE not defaulting to RADIANS on new RUN command.
Fix for OPTION ANGLE not in function TAN()
Fix for OPTION ANGLE not in function MATH (ATAN3 x,y)

Source now available on GitHub
https://github.com/disco4now/ArmmiteF407

Manual and Firmware
Armmite F4 Manual.pdf

ArmmiteF4_5.07.02beta2.zip


Armmite F4 5.07.02 Beta 1

Manual and Firmware
ArmmiteF4_5.07.02betas.zip


Fixes
Resolves the Out of Memory when using EDIT with OPTION LCDPANEL CONSOLE.
It affected all LCDs without hardware scrolling. i.e. all except SSD1963_x_16

Resolves issue of double spacing of lines when using the EDIT command with OPTION LCDPANEL CONSOLE set.

Function RGB() now accepts  GREY
ST7735S IPS 160*80 SPI LCDPanel support added.

Updates for no Battery
These additions can help to setup running without a battery.
New Option
OPTION RESTART [0|1|2]

Option.Restart is save in the Options.
It can have three values.
0 - This is the default value set by MMBasic at power up or OPTION RESET.
1 - This is set only whenever the OPTION SAVE command finds it at 0
2 - This can only ever be set explicitly by a MMBasic program with command
   OPTION RESTART 2
The value of Option.Reset can be read  by MM.INFO(RESTART)

When you might used these.
1.During testing you can use these two commands to simulate a power restart.
OPTION RESET 0            'Put it to the default value
CPU RESTART               'Restarts MMBasic
These are nearly equivalent to a power refresh it you don't want to keep pulling the power.

2.To test in code when a power restart has occured.
IF MM.INFO(RESTART)=1 THEN
  OPTION.STARTUP 2
  Print "Power restart"
ENDIF
Option.Restart is only ever set to 1 when OPTION SAVE is encountered while it is 0
If you set it to 2, it wont update UNLESS it first goes to 0 .i.e. power restart.

Example of No Battery Setup

'This block of code will disable the default LCDPANEL
'Configure the ILI9486_16 and the Touch panel and switch to the serial
'console at 38400 and then restart with the new settings


OPTION LCDPANEL DISABLE
OPTION LCDPANEL ILI9486_16, LANDSCAPE
OPTION TOUCH PB12, PC5
'GUI CALIBRATE 0, 3756, 3901, -882, -647
GUI CALIBRATE 0, 4012, 3900, -1271, -868
BACKLIGHT 80,DEFAULT
OPTION FLASH_CS 35 '35 for VET6 77 for Mini VET6
' =====================================================
' the Options below need a restart.
' The saving of the Option is delayed when they are
' included in a program. They are saved and a Restart
' is initiaited when OPTION SAVE is initiated. The
' OPTION SAVE must directly follow these options.
' ======================================================
OPTION CONTROLS 100
OPTION SERIAL PULLUP DISABLE
'OPTION SERIAL CONSOLE ON
'OPTION BAUDRATE 38400
OPTION SAVE
'The main program is then placed here
'it must include the MM.STARTUP Subroutine somewhere
CLS RGB(GREEN)
TEXT 10,10,"READY",,2,2
PRINT "READY"
PRINT "----------------"
OPTION LIST
PRINT "----------------"
VAR FRESTORE     'get the saved  vars from winbond flash to RAM
VAR RESTORE      ' restore the variables
IF MM.info(STARTUP)=1 THEN
 OPTION RESTART 2
 INC powercount%
 VAR SAVE powercount%
 VAR FSAVE       ' backup the RAM to Windbond Flash
END IF
PRINT "POWER COUNT=",powercount%  

'MM.STARTUP cannot be located in the Library if battery is missing or
'or battery is flat as the Library pointer would not be restored before
'MM.STARTUP is called. Also OPTION FLASH_CS would not be set to the correct value
'for the VET6 MINI.
SUB MM.STARTUP
 PRINT "Begin MM.STARTUP"
 PRINT "   Option restart="+MM.INFO(RESTART)
 OPTION FLASH_CS 35  '77 for VET6 MINI
 LIBRARY RESTORE
 OPTION AUTORUN ON
 PRINT "End MM.STARTUP"
 
 
END SUB

' Put this code in the library first
'? "Code in Library Executed"







  ArmmiteF407 V5.07.02 betas - Library and more.

Armmite F4 5.07.02 Beta 0 - Release
This release combines the recent performance updates from Peter (@matherp) and changes I have been adding to the ArmmiteF4 over some time, mainly to reduce dependence on the backup battery and to implement the Library.Also added commands so I could use Tom's (@thwill) unit testing code. Also includes various new functionality from the Picomites.
Summary of key changes
Peter included the hashed variable lookup which can make a huge improvement to performance (solar eclipse now 52 seconds - was 75 seconds) and various other bits of tuning (size and performance).
Library implemented.
The program memory is no longer cleared if the Options are not seen to be set/valid. This means the program will survive even if battery backup ram is lost.
Embedded Options allow configuration to be restored if battery is lost.
Additional LCD Panels supported.
Option.Brightness can now be made permanent and defaults to 50%
Command Line Buffer and Editor added as per Picomites.

The Armmite F4 was pretty full is terms of both Flash and Ram for the firmware, room for the addition stuff has been achieved by some tiding up of code however a couple of things have had to go.

What is lost
The MATH(CHI and MATH(CHI_p functions are removed to recover space.They required
a reasonable size data table to support them, so removing them frees up significant flash.
FONT 5 changed from 24 x 32 Large font to 16 x 10 Picomite font which frees up significant flash.
The original Font 5 will need to be loaded as a defined font if required.If loaded into the library will be about 9K of program space.


Armmite F4 User Manual
The Armmite F4 manual has been updated with details of all enhancements and contains some other improvement/corrections.(see change log section in the manual for list of changes.) The footer of each page has the page number on both the left and right margins so one will survive if the manual is printed and bound.

RESETTING MMBASIC
DON'T FORGET HOW TO DO THIS - It will save you when you think all is lost!!!

MMBasic can be reset to its original configuration using the following method:
Holding KEY 1 down, while applying power (or pressing the RST button).
Using the RST in lieu of applying power does not always seem to work so applying power needs to be used if RST does not seem to be doing it.
You can connect ground to PE3 pin if you find it difficult to hold the small button down.
This will result in the program memory , saved variables and Library being completely erased and all options (security PIN, console baud rate, etc.) will be reset to their initial defaults. This includes setting the console to the USB.
A following Key 0 down with a RST (or power up) will switch to the Serial Console if you are not using USB console.

You will need to Reset MMBasic after you upgrade to the new firmware as commands have changed and updating the firmware will not explicitly delete the program memory.

I have many times thought I have killed an Armmite F4 and resetting MMBasic fixed it.

Firmware and Manual
The attached zip contains the 5.07.02b0 firmware, the matching Armmite F4 User Manual and the updated ARMF4CFunction.h header file.



Armmite F4 Manual.pdf


Armmite F4 Manual.zip




Source Code and License
Geoff has agreed to open-source the firmware on Github with the same licensing as the PicoMite. I will post source on GitHub once I have updated all the source files with the appropriate headers.

Testing
Peter tested GUI, general performance and a disk soak test after his performance updates were applies to my copy of the source. I have tested stuff as I implemented it but over a long period so hopefully it all still works.

I have not tested the SK6812 RGBW led, so not sure whether it works.
Anyone that can run existing working code on the new firmware will help verify all is OK. PAGE,WS2812,LCD and HUMID will automatically be saved in their new forms.


New or Changed features

The program memory is no longer cleared if the Options are not seen to be set/valid. This means the program will survive if battery backup ram is lost.

The OPTION SAVE command is implement to allow OPTIONS to be set in the program if required, as for the Micromites. This allows running without a backup battery.

The WindBond CS pin is set based on Option.FLASH_CS at startup. This ensures the WindBond won't respond to SPI1 unless the CS is pulled low.

The LIBRARY command has been implemented, it uses the WindBond as a secondary storage for the Library during editing or loading of programs, but the library is ultimately stored and run from the normal Program flash.

Command History is implemented. The MEMORY command now shows the Backup RAM 4K separately from the Flash usage details.


Addition Supported LCD Panels

ILI9486_16 480*320 16 bit panel with 34 pin connector
SSD1963_5ER_16 East Rising 5 added. Has RGB reversed

ILI9488 SPI 480*320
GC9A01 SPI 240*240 round IPS display
ST7789 SPI 240*240 IPS display
ST7735 SPI 160*128 display
ILI9431_I SPI inverse display
ILI9481IPS 240*320 IPS display (not recommended,but if you already have one.)

New or Changed Commands
------ All this from Peter 5.07.01 betas update ---------
It also uses the hashed variable table to provide a good speed update (c33% improvement)

Breaking changes:
WS2812 command now BITBANG WS2812
LCD command now BITBANG LCD
HUMID command now BITBANG HUMID
BEZIER drawing command removed       - Not removed for now
PAGE command now GUI PAGE

New:
Support of SK2812W LEDs (RGBW)
Support for CRC8, CRC16, and CRC32 math functions
Support for BITBANG BITSTREAM
MID command updated as per latest Pico beta
OPTION ESCAPE Support for escape sequences in strings and data statements as per latest Pico beta
MM.INFO(EXISTS FILE)
MM.INFO(EXISTS DIR)
MM.INFO(OPTION suboption) as per Pico
OPTION ANGLE
Support for * command to use as RUN
Support for MM.CMDLINE$ as per Pico
Support for MEMORY commands as per Pico (COPY, SET, PACK, UNPACK)
-------------------------------------------------------------------------
------- And these from my notes as I went along.- some duplicates of above ---.
BACKLIGHT
The backlight brightness is now set based on the Option.Brightness setting. It is now defaulted to 50%. The value stored in Option.Brightness is changed by an optional parameter on the BACKLIGHT command.
BACKLIGHT percentage [,S|,R
The option S parameter will update the default value which is then used at any future restarts or power ups.
The option R parameter will also set the default value which is then used at any future restarts or power ups, but will also indicate that the backlight is to produce the reverse order for brightness. i.e. 0-100 produces a 100-0 output. This can be used to correct the brightness progression where the backlight driver of a particular display expects a reverse pwm signal and would otherwise show 100% as OFF and 0% and ON.
The Option.DefaultBrightness will show in Option List if any display is configured.

LIBRARY Command implementation
The LIBRARY command is now implemented.
LIBRARY SAVE    as per Micromite
LIBRARY DELETE    
LIBRARY LIST      
LIBRARY LIST ALL  
LIBRARY CHECK  For F4 only. Checks if library code exists and if it does sets Option.ProgFlashSize to point to the start of the library code. Allows recovery of library if the Options have been lost.
MEMORY command shows detail of Library and Saved Variables.

BITBANG command added
BITBANG BITSTREAM  added
BITBANG WS2812 now controls single LED if required up to 256
BITBANG WS2812 [O|B|S|W, pin, nbr, value%[()
BITBANG WS2812 W, pin, nbr, value%[() now supports SK6812 RGBW Leds
BITBANG HUMID for old HUMID command
BITBANG LCD for old LCD command
GUI PAGE replaces PAGE command.
PAGE,WS2812,LCD and HUMID still accepted but converted to new format when saved.

WINDBOND FLASH
The WindBond flash is hard wired to SPI1 so can respond to the SPI if it's CS pin is not pulled high. The CS pin is now initialised when MMBasic starts, its value is stored as Option.FLASH_CS , the default value is 35 for the VET6 board.
The allowed values are 35, 77 (VET6 Mini) and 0 (don't initialise). It can be changed using OPTION FLASH_CS xx
It will show in OPTION LIST if not the default value of 35. Pin 35 is also PWM 1C on the VET6, so thi as F_CS so PWM 1C is available. Pin 77 is KEYBD CLK so would prevents the Keyboard being used.

The WindBond is 2M and 68K can now be used by MMBasic, 64K as a scratch pad for the library code and 4K as a backup for the 4K of saved vars.

SDCARD Error Messages Updated

OPTION LCDPANEL CONSOLE now supported on SPI LCD PANELS that allow read from the panel.These don't have hardware scrolling so will be very slow.

PEEK restrictions remove to all reading of registers (should be adjusted?)
POKE allowed for SPI registers etc i.e. PEEKRANGE adjusted

POKE DISPLAY cmd,data,data,.. Added as per Picomite
POKE DISPLAY HRES,hres  Added as per Picomite
POKE DISPLAY VRES,vres  Added as per Picomite
MATH (CRC8,CRC16,CRC32 .... ) function added as per Picomite

EXECUTE command added
CALL subname$ added
? CALL functionname$ added

SETTICK PAUSE ,target,[nbr]</a>ata,data,.. Added as per Picomite
POKE DISPLAY HRES,hres  Added as per Picomite
POKE DISPLAY VRES,vres  Added as</a> added
? CALL functionname$ added

SETTICK PAUSE ,target,[nbr">  Added as per Picomite
SETTICK RESUME,target,[nbr  Added as per Picomite


VAR FSAVE -added Copies the 4K of battery backup ram to the WindBond flash.
VAR FRESTORE -added Restores the save vars from the WindBond flash to the 4K of battery backup ram.

OPTION SAVE and Running without Battery
Startup and Reset Quick Reference


MM.INFO is allowed and is alias for MM.INFO$ - now can return integer or string as required.
MM.INFO$(LCDPANEL)
MM.INFO(RESTART)
MM.INFO(HEIGHT)
MM.INFO(WIDTH)



Command History.
A 1K Command Line Buffer and Editor has been implemented. There are no programmable function keys, however F5 is configured to send the clear screen sequence to the VT100 terminal. F2,F3,F4,F10,F11,F12 are as per the Picomite.

Enhancements when using LCDPANEL as CONSOLE
Command Buffer and editing also available.
FONT command does not now change the Prompt Font when OPTION LCDPANEL CONSOLE is enabled. Use OPTION LCDPANEL CONSOLE font to change the Prompt Font used by the console.

LIST filename added As per Picomite
RUN ShortCut * added As per Picomite
RUN,parameter now set MM.CMDLINE$ as per Picomite

INTERRUPT [myint Command --cmd_csubinterrupt(void){
SETPIN pin, CIN [,option  options 1-5 implemented on count pins.
Count pins call CSub CFuncInt1-4 if the exist as implement for Picomites.

ON KEY asciicode,target variant added as per picomite and H7

Size of ERRMSGMAX increased to 64 to match CMM2 (from 32)so error messages can be longer.
OPTION ESCAPE to allow escaping when entering special characters added.
MID$ command enhanced to allow variable length replacements.
SETTICK PAUSE, myint [,tickno  -Added
SETTICK RESUME, myint [,tickno -Added

AUTOSAVE can now be terminated by entering Control-Z or F1 which will then cause the received data to be transferred into program memory overwriting the previous program. Use F2 to exit and immediately run the program.i.e. as per Picomites.

GUI ACTIVATE for TextBox now allows accepts # and works with GUI Interrupt enabled.
OPTION LIST now includes Device and MMBasic Version as first line of printout.

Enhanced READ command -The command can now take arrays as a parameter.
Enhanced RESTORE command -The command can now take a variable as a parameter.
READ SAVE and READ RESTORE added as per PicoMite.

CFUNCTION and END CFUNCTION added.

Issues Resolved

Fixed reporting the line of an error when goto/gosub to a line number is used.
Fixed issue where ERROR in subroutine called by Interrupt appears in calling line (as fixed in CMM2)
Fixed issue with ON ERROR when calling GOSUB with invalid label. (@Thwill reported)
Fixed issue with ON ERROR when calling Function with wrong type. (@Thwill reported)
LONGSTRING TRIM now allows 0 to LLen(a%()) to allow full buffer to be trimmed
LONGSTRING RESIZE fixed as per CMM2 Picomite
Fixed issue in GPS receipt (from Picomite) where the first read of GPS(DATE) may give an incorrect answer.

Fixed PEEK(SHORT ...) - was returning WORD
GUI SWITCH touch response corrected as per other platforms


Fixed reporting the line of an error when goto/gosub to a line number is used.
Fixed issue where ERROR in subroutine called by Interrupt appears in calling line (as fixed in CMM2)
Fixed issue with ON ERROR when calling GOSUB with invalid label. (@Thwill reported)
Fixed issue with ON ERROR when calling Function with wrong type. (@Thwill reported)
LONGSTRING TRIM now allows 0 to LLen(a%()) to allow full buffer to be trimmed
LONGSTRING RESIZE fixed as per CMM2 Picomite
Fixed issue in GPS receipt (from Picomite) where the first read of GPS(DATE) may give an incorrect answer.

Fixed PEEK(SHORT ...) - was returning WORD
GUI SWITCH touch response corrected as per other platforms

Hope you have not put those ArmmiteF4 boards back in there shoe boxes!
Edited 2025-11-02 21:40 by disco4now
F4 H7FotSF4xGT
 
Print this page


To reply to this topic, you need to log in.

The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025