ArmmiteF407 V5.07.02 betas - Library - No Battery and more.


Author Message
disco4now

Guru

Joined: 18/12/2014
Location: Australia
Posts: 905
Posted: 11:17am 21 Aug 2023      

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.


ArmmiteF4_5.07.02betas.zip

Armmite F4 Manual.pdf



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 this is unavailable on the VET6 board unless OPTION FLASH_CS is set to 0. On the VET6 Mini pin 77 is used 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]  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

Hope you have not put those ArmmiteF4 boards back in there shoe boxes!
Latest F4 Latest H7

phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2155
Posted: 01:26pm 21 Aug 2023      

This is excellent.
Many thanks to you and Peter for all the work that you have put into the F4 project.

lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3159
Posted: 02:24pm 21 Aug 2023      

Excellent indeed. The F4 is a great platform--very good news for it to get updates, and even better news that MMBasic now has an additional developer/maintainer.

I've successfully tested a version of VegiPete's CrateAway for the F4 with the 800x480 IPS LCD.

I tried several other of VegiPete's games which I had converted for the F4, but I was apparently using them with a keyboard, and they aren't handling the arrow keys properly for running from TeraTerm. I'll look into what it would take to support those.

One issue so far: rgb(grey) was supported previously, but I had to change that to rgb(gray).

Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6847
Posted: 02:44pm 21 Aug 2023      

Wow.... You've been a busy lad!
The F4 is a lovely board for MMBasic. It's great to see it getting some TLC again. :)

lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3159
Posted: 04:29pm 21 Aug 2023      

If there's ongoing development on the F4 and there's room, any chance of getting BLIT WRITE to support mirroring like SPRITE SHOW on the CMM2? This would be particularly useful on the F4 since there's so much less memory on the F4 than the CMM2 for supporting SPRITEs/BLIT objects.

matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9192
Posted: 09:55pm 21 Aug 2023      

Gerry

Welcome to the developers club. You post a new release with massive enhancements and superb documentation and the first thing that happens is a request for MORE

lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3159
Posted: 10:57pm 21 Aug 2023      

  matherp said  Gerry

Welcome to the developers club. You post a new release with massive enhancements and superb documentation and the first thing that happens is a request for MORE


No, the first thing that happens (at least in this case) is that someone responds to his request:
  disco4now said  Anyone that can run existing working code on the new firmware will help verify all is OK.


I ran existing code, a version of VegiPete's CrateAway configured for the 800x480 IPS display--which worked. In finding the thread about that code I saw that I had noted then (April of 2021) that BLIT WRITE didn't allow you to mirror a sprite, as the CMM2 did, and that was also an issue which I had encountered earlier today with Martin H.'s PicoMiteVGA PI*Bert program, in trying to get it to run on the PicoMite with an LCD.

I'll continue to try running existing F4 programs on the new release, and will continue to express my appreciation of the work which the developers have done to give us the terrific (and, it appears ever-growing) MMBasic system.



~
Edited 2023-08-22 08:59 by lizby

palcal

Guru

Joined: 12/10/2011
Location: Australia
Posts: 1873
Posted: 05:29am 22 Aug 2023      

Well done, looking foreward to playing. BUT I'm having trouble downloading the Manual.
I get the PDF when I click the link but when I try to download all seems ok but I only get the first 8 pages and a lot of pages with a little square in the middle.

Chopperp

Guru

Joined: 03/01/2018
Location: Australia
Posts: 1064
Posted: 06:27am 22 Aug 2023      

I had the same problem. I did a Print as PDF from the browser copy. That worked
Brian
Edited 2023-08-22 16:29 by Chopperp

palcal

Guru

Joined: 12/10/2011
Location: Australia
Posts: 1873
Posted: 08:22am 22 Aug 2023      

@ Chopperp,  I couldn't find 'Print as PDF' still can't download it.

matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9192
Posted: 08:26am 22 Aug 2023      

Manual downloaded fine for me so I've zipped it up and attach below if this helps


2023-08-21_204736_Armmite F4 Manual.zip

Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6847
Posted: 08:31am 22 Aug 2023      

The manual downloaded fine here, opened straight into Edge. Everything's there.

phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 2155
Posted: 08:34am 22 Aug 2023      

@palcal
In the browser PDF viewer the download icon is next to the Print icon, top right.
Or if you right-click in the text area the pop-up list includes "Save as PDF".

circuit
Senior Member

Joined: 10/01/2016
Location: United Kingdom
Posts: 245
Posted: 09:06am 22 Aug 2023      

Quite simply, Christmas has come early!
This is fantastic - a million thanks.

I am absolutely delighted (and somewhat in ecstatic disbelief) that the two things that I requested in the thread with Peter have appeared; operation without battery backup and the LIBRARY.  

I am cancelling my activities for the rest of the day and bringing my F4 boards out of store; I bought ten of them when the price was right and this new firmware has made them an excellent investment.

lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3159
Posted: 11:06am 22 Aug 2023      

  palcal said  Well done, looking foreward to playing. BUT I'm having trouble downloading the Manual.
I get the PDF when I click the link but when I try to download all seems ok but I only get the first 8 pages and a lot of pages with a little square in the middle.


For me, the manual shows perfectly in the Chrome browser, but when I save it and open it with Acrobat, I get the problem palcal describes.

I downloaded MatherP's file, and it is the same in Acrobat:


matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 9192
Posted: 11:34am 22 Aug 2023      

Seems to be an Acrobat issue. Reads in Firefox, Edge, and perfectly with Foxit

JohnS
Guru

Joined: 18/11/2011
Location: United Kingdom
Posts: 3820
Posted: 12:00pm 22 Aug 2023      

Downloaded OK for me & read OK too.

John (on Linux)

disco4now

Guru

Joined: 18/12/2014
Location: Australia
Posts: 905
Posted: 12:10pm 22 Aug 2023      

There does seem to issues around the command/functions/options area.
I think it is some hidden frames in the word document that are causing problems when I use NovaPDF to build the PDF. I am looking at it now.

disco4now

Guru

Joined: 18/12/2014
Location: Australia
Posts: 905
Posted: 01:01pm 22 Aug 2023      

OK see if these are better.

Armmite F4 Manual.pdf


Armmite F4 Manual.zip

morgs67
Regular Member

Joined: 10/07/2019
Location: Australia
Posts: 76
Posted: 01:02pm 22 Aug 2023      

There seems to be a problem with the links between the items in the index pages at the front of the document and the paragraphs or page number. Works properly in the initial opening in a browser but any method of saving that saves all the pages correctly removes the links.

Tony M
edit -still same with the two new above
Edited 2023-08-22 23:05 by morgs67