Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 23:19 19 Dec 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 : PicoMite Firmware Release Version 6.01.00

Author Message
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3320
Posted: 03:19am 17 Dec 2025
Copy link to clipboard 
Print this post

Peter has released the final version of the PicoMite firmware V6.01.00 along with the updated user manual.

This can be downloaded from https://geoffg.net/picomite.html (scroll to the bottom of the page).
WARNING: Loading this firmware will erase all data stored in the flash memory.

This release has a huge list of new functionality and enhancements.  For the full list see the file RELEASE NOTES.txt in the firmware download, however this is a summary:

New Commands/Functions
======================
ON ERROR RESTART
TRIM$
PLAY ARRAY
MM.SUPPLY
DEVICE(MOUSE)
LINPUT()
LMID()
FLASH LOAD IMAGE
BLIT FLASH
FILL
YMODEM
TURTLE GRAPHICS

Enhanced Functionality
=====================
KEYPAD enhancements
High speed buffered display drivers
Additional HDMI/VGA modes
USB mouse sensitivity control
EDITOR enahncements
REDIM new option: PRESERVE
DEVICE() now works for USB mice
PIO programming enhancements
AUTOSAVE enhancement
Keyboard enhancements
New LOAD JPG options
DRAW3D enhancements

Bug Fixes
=========
Fixes bug in PULSE command on GP pins > 31
Fixes bugs in DEVICE SERIAL TX and DEVICE SERIAL RX including support for all pins on the RP2350B
Correctly validates maximum file lengths in numerous places in the firmware
Fixes bug in MAP command for some HDMI resolutions
Fixes bug in changing HDMI mode causing occasional crashes
Fixes memory leak when a framebuffer is created in HMDI 1280x720 mode 1
Fixes lockup in FRAMEBUFFER SYNC if a previous MERGE has not been executed.
Fixes bug in STATIC variables
Fixes bug in PIO PROGRAM LINE
Fixes bug in MM.INFO(EXISTS FILE fname$)
Fixes bug in XMODEM for RP2040
Fixes bug in reading zero length files - all versions
Fixes a couple of typos in the PIO assembler
Fixes a typo in reading escape sequences
Fixes a bug in ADC START
Geoff Graham - http://geoffg.net
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 504
Posted: 07:53am 17 Dec 2025
Copy link to clipboard 
Print this post

  Geoffg said  Peter has released the final version of the PicoMite firmware V6.01.00 along with the updated user manual.


In the manual on page 101 it says the max CPUSPEED is 378000 KHz. MMBasic allows 396000  KHz to be entered and it's running on my system at the higher speed with no issues.
 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3320
Posted: 08:38am 17 Dec 2025
Copy link to clipboard 
Print this post

Thanks.
To avoid cluttering this topic I will start a new one for manual updates/corrections.

Geoff
Geoff Graham - http://geoffg.net
 
twofingers

Guru

Joined: 02/06/2014
Location: Germany
Posts: 1704
Posted: 09:08am 17 Dec 2025
Copy link to clipboard 
Print this post

deleted
Edited 2025-12-17 19:09 by twofingers
causality ≠ correlation ≠ coincidence
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 340
Posted: 09:14pm 17 Dec 2025
Copy link to clipboard 
Print this post

what is the idea behind leaving the touch subsystem in HDMI/VGA versions? Are HDMI/VA panels available that also have touch implemented?
                                                                 
73 de OE1HGA, Gerald
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 10:20am 18 Dec 2025
Copy link to clipboard 
Print this post

In 6.01.00 there is one new command which wasn't mentioned before
BEZIER - see the manual for details but here is my test program
Option DEFAULT INTEGER
Option EXPLICIT
MODE 3
CLS

Sub ShowCurve(x(), y(), n, colour, title$)
   CLS
   Text 10, 10, title$, , , 1
   Bezier x(), y(), n, colour
   Pause 3000
End Sub
' One petal, closed
Dim fx%(3) = (320, 380, 450, 320)
Dim fy%(3) = (240, 100, 100, 240)
Math SCALE fx%(),MM.HRES/640,fx%()
Math SCALE fy%(),MM.VRES/480,fy%()

'-------------------------------------------------------
' 2. SPIRAL (multi-point Bzier path)
'    (approximation using many control points)
'-------------------------------------------------------
Dim sx(10) = (320, 380, 420, 450, 430, 360, 260, 200, 180, 230, 320)
Dim sy(10) = (240, 230, 200, 140, 90, 70, 100, 180, 260, 300, 320)
Math SCALE sx(),MM.HRES/640,sx()
Math SCALE sy(),MM.VRES/480,sy()

'-------------------------------------------------------
' 3. WAVY RIBBON (smooth horizontal wave)
'-------------------------------------------------------
Dim wx(6) = (20, 120, 220, 320, 420, 520, 620)
Dim wy(6) = (240, 120, 360, 120, 360, 120, 240)
Math SCALE wx(),MM.HRES/640,wx()
Math SCALE wy(),MM.VRES/480,wy()

'-------------------------------------------------------
' 4. SIGNATURE-STYLE CURVE (fancy stroke)
'-------------------------------------------------------
Dim sigx(7) = (40, 120, 200, 320, 420, 500, 600, 580)
Dim sigy(7) = (300, 260, 320, 200, 260, 180, 260, 300)
Math SCALE sigx(),MM.HRES/640,sigx()
Math SCALE sigy(),MM.VRES/480,sigy()

'-------------------------------------------------------
' 5. Previous demo shapes (S-curve, loops, etc.)
'-------------------------------------------------------
Dim x1(3) = (50, 200, 440, 590)
Dim y1(3) = (400, 50, 430, 80)
Math SCALE x1(),MM.HRES/640,x1()
Math SCALE y1(),MM.VRES/480,y1()

Dim x2(5) = (100, 300, 300, 200, 440, 540)
Dim y2(5) = (240, 480, 0,   400, 80,  240)
Math SCALE x2(),MM.HRES/640,x2()
Math SCALE y2(),MM.VRES/480,y2()

Dim x3(12) = (320,390,441,460,441,390,320,250,199,180,199,250,320)
Dim y3(12) = (240,309,309,240,171,171,240,309,309,240,171,171,240)
Math SCALE x3(),MM.HRES/640,x3()
Math SCALE y3(),MM.VRES/480,y3()

Dim x4(5) = (320, 600, 40, 560, 100, 320)
Dim y4(5) = (450, 380, 140, 200, 60, 30)
Math SCALE x4(),MM.HRES/640,x4()
Math SCALE y4(),MM.VRES/480,y4()

Dim hx1(3) = (320, 190, 190, 320)
Dim hy1(3) = (350, 200, 100, 160)
Math SCALE hx1(),MM.HRES/640,hx1()
Math SCALE hy1(),MM.VRES/480,hy1()

Dim hx2(3) = (320, 450, 450, 320)
Dim hy2(3) = (160, 100, 200, 350)
Math SCALE hx2(),MM.HRES/640,hx2()
Math SCALE hy2(),MM.VRES/480,hy2()

Dim x6(4) = (50, 300, 200, 580, 400)
Dim y6(4) = (420,350, 50, 120, 300)
Math SCALE x6(),MM.HRES/640,x6()
Math SCALE y6(),MM.VRES/480,y6()

'-------------------------------------------------------
'                     MAIN LOOP
'-------------------------------------------------------
Do
   DrawFlower()

   ShowCurve sx(), sy(), 11, RGB(YELLOW),  "Spiral Sweep (11 points)"
   ShowCurve wx(), wy(), 7,  RGB(CYAN),    "Wavy Ribbon Pattern"
   ShowCurve sigx(), sigy(), 8, RGB(WHITE),"Signature-Style Stroke"

   ShowCurve x1(), y1(), 4, RGB(YELLOW),  "Smooth S-Curve Ribbon"
   ShowCurve x2(), y2(), 6, RGB(CYAN),    "Loop-de-Loop"
   ShowCurve x3(), y3(), 13, RGB(RED),     "Figure-Eight"
   ShowCurve x4(), y4(), 6, RGB(GREEN),   "Spiral-Sweep Path"

   CLS
   Text 10,10,"Heart Shape",,,1
   Bezier hx1(), hy1(), 4, RGB(RED)
   Bezier hx2(), hy2(), 4, RGB(RED)
   Fill MM.HRES\2,MM.VRES\2,RGB(red)
   Pause 3000

   ShowCurve x6(), y6(), 5, RGB(WHITE), "Abstract Dragon Stroke"

Loop
Sub DrawFlower()
   Local i, p
   Local float angle, r
   Local dx, dy, x, y
   Local rx!(3), ry!(3)   ' FLOATING ARRAYS
   Local xi%(3), yi%(3)

   CLS
   Text 10,10,"Flower (12 petals)",,,1

   For i = 0 To 11
       angle = i * 30
       r = angle * Pi / 180

       For p = 0 To 3
           dx = fx%(p) - MM.HRES\2
           dy = fy%(p) - MM.VRES\2

           rx!(p) = MM.HRES\2 + dx * Cos(r) - dy * Sin(r)
           ry!(p) = MM.VRES\2 + dx * Sin(r) + dy * Cos(r)
       Next p

       ' Convert float
       For p = 0 To 3
           xi%(p) = Cint(rx!(p))
           yi%(p) = Cint(ry!(p))
       Next p

       Bezier xi%(), yi%(), 4, RGB(MAGENTA)
       x=0
       y=0
       For p= 0 To 3
         Inc x,xi%(p)
         Inc y,yi%(p)
       Next

       Fill x\4,y\4,RGB(yellow)
   Next i

   Pause 3000
End Sub
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5542
Posted: 12:14pm 18 Dec 2025
Copy link to clipboard 
Print this post

Geoff, Peter,

Congratulations with this "final" release for PicoMite.
I see benefit in this last addition (Bezier function) for representing waveform graphs (i.e. oscilloscope picture) when there are only few datapoints. Linear interpolation gives a mediocre representation.
Tested in mode 1 on RP2040 VGA

Thank you both for this release. I already updated 50% of my platforms, and these all appear to start up fine and run their intended programs.

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 01:29pm 18 Dec 2025
Copy link to clipboard 
Print this post

You should have said you wanted some curve fitting before I finished the release. I've just implemented a sin(x)/x (sinc function) including sinc interpolation
red = original points
yellow = 1:1 smoothing
green = interpolated output



 
' Demo: unified SINC smoothing vs interpolation
OPTION EXPLICIT
mode 2
CLS

CONST N = 40          ' input points
CONST M = 120         ' resampled output points (m != n triggers interpolation)
CONST WIN = 17        ' window size (odd)
CONST FREQ = 0.12     ' normalized cutoff (0<freq<=0.5)

DIM x_in(N), y_in(N)
DIM x_s(N), y_s(N)       ' smoothed outputs (m omitted => smoothing)
DIM x_out(M), y_out(M)   ' resampled outputs (m provided => interpolation)
DIM i%, xi%, yi%

' Build a test waveform that fits the screen
FOR i% = 0 TO N - 1
 x_in(i%+1) = (MM.HRES - 1) * i% / (N - 1)
 y_in(i%+1) = (MM.VRES\2) + (MM.VRES\3) * SIN(2 * PI * i% / 12) + 0.15 * MM.VRES * SIN(2 * PI * i% / 5)
 IF y_in(i%+1) < 0 THEN y_in(i%+1) = 0
 IF y_in(i%+1) > MM.VRES - 1 THEN y_in(i%+1) = MM.VRES - 1
NEXT

' Smoothing (m omitted => m=n internally)
MATH SINC x_in(), y_in(), N, WIN, FREQ, x_s(), y_s()

' Interpolation/resampling (m provided)
MATH SINC x_in(), y_in(), N, M, WIN, FREQ, x_out(), y_out()

' Clear and draw axes
CLS
LINE 0, MM.VRES\2, MM.HRES-1, MM.VRES\2, 1, RGB(GREY)
LINE 0, 0, 0, MM.VRES-1, 1, RGB(GREY)

' Plot original points in red
FOR i% = 1 TO N
 xi% = INT(x_in(i%))
 yi% = INT(y_in(i%))
 IF xi% >= 0 AND xi% < MM.HRES AND yi% >= 0 AND yi% < MM.VRES THEN PIXEL xi%, yi%, RGB(RED)
NEXT

' Plot smoothed points in yellow
FOR i% = 1 TO N
 xi% = INT(x_s(i%))
 yi% = INT(y_s(i%))
 IF xi% >= 0 AND xi% < MM.HRES AND yi% >= 0 AND yi% < MM.VRES THEN PIXEL xi%, yi%, RGB(YELLOW)
NEXT

' Plot resampled points in green, slightly offset upward for visibility
FOR i% = 1 TO M
 xi% = INT(x_out(i%))
 yi% = INT(y_out(i%)) - 2  ' small offset for visibility
 IF yi% < 0 THEN yi% = 0
 IF yi% >= MM.VRES THEN yi% = MM.VRES - 1
 IF xi% >= 0 AND xi% < MM.HRES THEN PIXEL xi%, yi%, RGB(GREEN)
NEXT


Edited 2025-12-18 23:31 by matherp
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5542
Posted: 01:44pm 18 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

Nice, but I am not working on such now, but it is always on the back of my mind.

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 02:34pm 18 Dec 2025
Copy link to clipboard 
Print this post

RP2350 versions of V6.01.00 implements a celestial navigation system that calculates the altitude and azimuth of celestial objects (stars, Moon, and planets) from an observer's location on Earth. Attached is a document explaining the functionality for those interested.

GPS_Astro_Reference.pdf
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 504
Posted: 04:08pm 18 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  RP2350 versions of V6.01.00 implements a celestial navigation system that calculates the altitude and azimuth of celestial objects (stars, Moon, and planets) from an observer's location on Earth. Attached is a document explaining the functionality for those interested.

GPS_Astro_Reference.pdf


When I put in location data, the astro command gives me this:

>location "18/12/2025 11:03:00",44.8488,-74.2937
>astro "Vega",a,az,ra,dec
Error : Argument count
>

Edited 2025-12-19 02:11 by toml_12953
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 04:54pm 18 Dec 2025
Copy link to clipboard 
Print this post

Two faults, one in the pdf and one in the code. PDF attached and I'll ask Geoff to update the download.

GPS_Astro_Reference.pdf
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 10:45pm 18 Dec 2025
Copy link to clipboard 
Print this post

Geoff has kindly updated the download. 6.01.00 as downloaded now fixes the TAB bug and fixes the ASTRO/STAR bug. The manual has also been updated with various minor changes identified. make sure you clear you cache to get a clean download of the updated zip
Edited 2025-12-19 08:46 by matherp
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 504
Posted: 12:40am 19 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  Geoff has kindly updated the download. 6.01.00 as downloaded now fixes the TAB bug and fixes the ASTRO/STAR bug. The manual has also been updated with various minor changes identified. make sure you clear you cache to get a clean download of the updated zip

The TAB function works great. Thanks! I still can't enter

location "18/12/2025 11:03:00",44.8488,-74.2937
astro "Vega",a,az,ra,dec
Error : Argument count


though. What am I doing wrong?
Edited 2025-12-19 15:30 by toml_12953
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 08:09am 19 Dec 2025
Copy link to clipboard 
Print this post

The manual for astro is still wrong use the syntax for star
Updated manual attached

GPS_Astro_Reference.pdf
Edited 2025-12-19 18:16 by matherp
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 732
Posted: 12:13pm 19 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

just a quick question:

I've recently ordered some Pico2 and saw that there is a new "a4 stepping" of the chip available. Does the MMBASIC firmware work with the new chips (they have corrected the ADC issues etc.)?

Greetings
Daniel
Edited 2025-12-19 22:14 by Amnesie
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5542
Posted: 12:31pm 19 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  You should have said you wanted some curve fitting before I finished the release. I've just implemented a sin(x)/x (sinc function) including sinc interpolation


Thanks for "sneaking" MATH SINC in in all versions (also RP2040). Really appreciated.
Merry Christmas...

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10718
Posted: 12:39pm 19 Dec 2025
Copy link to clipboard 
Print this post

  Quote  I've recently ordered some Pico2 and saw that there is a new "a4 stepping" of the chip available. Does the MMBASIC firmware work with the new chips (they have corrected the ADC issues etc.)?

The firmware is compiled with sdk v2.2.0 which supports the A4 stepping chips so I assume it works. I just bought a couple of Pico2's but they still came with A2 chips fitted so I can't test to confirm.
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 340
Posted: 01:17pm 19 Dec 2025
Copy link to clipboard 
Print this post

It definitely works, I've already tried it.
                                                                 
73 de OE1HGA, Gerald
 
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