Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 04:24 21 Sep 2026 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 V6.03.02 betas

     Page 5 of 6    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 10:49am 16 Sep 2026
Copy link to clipboard 
Print this post

V6.03.02b7 is now available from https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V6.03.02b7

New:
TILEMAP LOAD
MATH CLAMP
MM.INFO(TELNET)

Fixed:
background FRAMEBUFFER MERGE on larger panels
READ now finds DATA statements in the library
 
terekgabor
Senior Member

Joined: 02/01/2026
Location: Hungary
Posts: 129
Posted: 11:35am 16 Sep 2026
Copy link to clipboard 
Print this post

Great job! Thanks for it Peter!

G@bor
 
javavi

Guru

Joined: 01/10/2023
Location: Ukraine
Posts: 609
Posted: 12:54pm 16 Sep 2026
Copy link to clipboard 
Print this post

Peter, please make the MAP(n) function work in MODE 1 as well, returning values ​​for the palette color.
MODE 3
> ? Map(5)
32896

MODE 1
> ? Map(5)
Error : Invalid for Mode
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 01:23pm 16 Sep 2026
Copy link to clipboard 
Print this post

The map command doesn't work for mode 1 and therefore nor does the map function. The colours are fixed and just need a simple 16 element array in a program.
 
JanVolk
Guru

Joined: 28/01/2023
Location: Netherlands
Posts: 411
Posted: 01:50pm 16 Sep 2026
Copy link to clipboard 
Print this post

Peter,

A few wishes and comments.

Scrolling up and down on a PicoMite was always possible via a terminal (Tera Term), and more recently, it became possible on VGA and HDMI displays using the `LIST` command as well.
However, it would also be useful for other commands—such as `> LIST PINS(RP2350B)` and `> HELP OPTIONS`—to include prompts like "UP=prev ANY KEY=next" rather than just "PRESS ANY KEY...".

Since the mouse cursor can now be used with graphical displays, it would be great to be able to drag the cursor over text to copy it and then paste it—a workflow that works very conveniently in Tera Term.
This was largely addressed in `fm`, but is it currently impossible due to potential memory limitations?

Since I am missing the `SAVE` command in `fm` for saving programs, using short filenames is really only attractive for use with `SAVE`. Or perhaps I simply missed that feature?

The mouse cursor now works correctly with `EDIT`.
However, if I add help text later and get close to the "banner point," the editor sometimes behaves strangely; the starting position might shift, or the next line might be placed beyond the end point (which becomes apparent when running `LIST`), though this can be fixed with a correction.

I read somewhere that `fm` allows for background audio playback, but the audio stops as soon as a program is started or `EDIT` is launched. This is understandable given the many functions within `fm`.

How do I create a new folder on a USB drive (e.g., `C:/`) from within `fm`?

Jan.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 02:26pm 16 Sep 2026
Copy link to clipboard 
Print this post

  Quote  How do I create a new folder on a USB drive (e.g., `C:/`) from within `fm`?

manual page 32 F11 or K

  Quote  but the audio stops as soon as a program is started or `EDIT` is launched

Of course, running a program initialises everything and editing uses all the memory

  Quote  However, it would also be useful for other commands—such as `> LIST PINS(RP2350B)` and `> HELP OPTIONS`—to include prompts like "UP=prev ANY KEY=next" rather than just "PRESS ANY KEY...".


They don't work the same way. In general the code is now huge and there is no space for "nice-to-haves" without lots more conditional compilation to stop all of the rp2040 variants getting it, otherwise they end up with no A: drive space.
6.03.02 is intended to fix some specific Basic limitations like single element arrays and functions returning arrays that make the language more powerful. Other than that sort of thing and the odd bug fix I don't intend to add more "usability" changes.
 
bfwolf
Senior Member

Joined: 03/01/2025
Location: Germany
Posts: 258
Posted: 03:37pm 16 Sep 2026
Copy link to clipboard 
Print this post

  matherp said  framebuffer merge bug is fixed and will be in the next beta. Nobody has obviously tried it before with a screen wider than 320 pixels

As to the DATA issue......

This is really difficult to explain. DATA has no concept of being in a subroutine it is program wide. When you issue a read statement it will read from the next unread data statement wherever it is. So, if there is data in the main program it will read that and if that doesn't fit the variable in the read then BANG! which is what you are seeing.

There is a bug however, To read data from the library currently it has to be found by using RESTORE label before the read. READ will always start looking for data at the top of the main program, it doesn't currently then pass to the library when it exhausts the main program which I think it should. I think this is just a legacy hole from when the library was introduced.


Did you maintain the search order for DATA statements in your fix? In other words, are the DATA statements in the "MAIN" program searched first, followed by those in the SUBs?

That would be good! It would allow a SUB requiring "private DATA" to use a preceding label — such as `SubName_DATA` — and position the READ pointer to it using `RESTORE SubName_DATA`.
Thanks to the search order, there wouldn't be any "conflicts" — such as the "MAIN" program accidentally reading DATA from SUBs because it doesn't expect them to exist and has no way of knowing how many there are.

That said, the practice of always placing a label before DATA statements would certainly make sense.

bfwolf
Edited 2026-09-17 01:40 by bfwolf
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 03:53pm 16 Sep 2026
Copy link to clipboard 
Print this post

The order is main program first and then library. All data statements have global scope irrespective of where they appear and the program maintains a pointer to the last one read.

  Quote  That said, the practice of always placing a label before DATA statements would certainly make sense.


Absolutely
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 612
Posted: 05:37pm 16 Sep 2026
Copy link to clipboard 
Print this post

small remark: MATH CLAMP entry is missing in the manual ...

Gerald
                                                                 
73 de OE1HGA, Gerald
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 612
Posted: 05:53pm 16 Sep 2026
Copy link to clipboard 
Print this post

Peter,

is there a reason why the OPTION PLATFORM is not saved with OPTION DISK SAVE ? I use it to distinguish on what paticular HW configuration a progran is running on. So it would be helpful if it is restored with OPTION DISK LOAD. Otherwise I have to manually set it up again.

Gerald
                                                                 
73 de OE1HGA, Gerald
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 06:14pm 16 Sep 2026
Copy link to clipboard 
Print this post

Thanks - should be there now
 
homa

Guru

Joined: 05/11/2021
Location: Germany
Posts: 693
Posted: 08:06pm 16 Sep 2026
Copy link to clipboard 
Print this post

  matherp said  V6.03.02b7 is now available from https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V6.03.02b7

New:
TILEMAP LOAD
MATH CLAMP
MM.INFO(TELNET)

Fixed:
background FRAMEBUFFER MERGE on larger panels
READ now finds DATA statements in the library


Thank you for MM.INFO (TELNET)


The BBC engine has an internal queue with eight entries per channel (qr and qw). BBCSoundQueue() returns -1 if the queue is full. In that case, PLAY BBC SOUND waits and calls routinechecks() until a slot becomes available.
However, MM.INFO(SOUND) only reports “BBC” or the playback status, not the queue’s current capacity.

Is there a designated method for determining the current capacity of the queue within a playback loop? Or is your recommended approach to keep a safe number of notes in the queue and rely on the internal wait function of PLAY BBC SOUND when necessary?

But that unnecessarily slows down the program code, doesn’t it?

I’m particularly interested in how your game code handles continuous polyphonic background music without blocking the game loop.

The relevant source code sections I’ve found are io/Audio.c, io/AudioBBC.c, and core/MM_Misc.c.

MM.INFO(SOUND) returns “BBC” while playback is in progress.

The actual queue level exists only internally in AudioBBC.c.

uint8_t qr, qw;

It has a maximum of eight entries, and BBCSoundQueue() returns -1 when the queue is full. The caller in Audio.c intercepts exactly that and waits with CheckAbort() and routinechecks() until space becomes available again.

Wouldn’t it be better to output the value of BBCSoundQueue() instead of “BBC”?

Somehow, it seems I haven’t quite got to grips with the concept yet.
Matthias
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11882
Posted: 09:44pm 16 Sep 2026
Copy link to clipboard 
Print this post

All:
Please do not try and use b7 with a RP2040. There seems to be a compiler bug that I am trying to find. To save flash space I converted a file(FileIO.c) to use Os compilation rather than O2. This works perfectly on the rp2350 but on the rp2040 build the firmware starts and crashes repeatedly. Lots of other modules use Os so I don't know what is causing the issue but for the moment stick with b6 or below.
Edited 2026-09-17 07:44 by matherp
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 3381
Posted: 10:47pm 16 Sep 2026
Copy link to clipboard 
Print this post

Loaded b7 on the LCD version before the warning. Tested a variety of programs including the rotating cube, all ok.
So far the only issue has been saving to A: causes a re-boot and an empty file created. Saving to B: works fine.
> option list
PicoMite MMBasic RP2040 V6.03.02b7
OPTION SYSTEM SPI GP18,GP19,GP20
OPTION SYSTEM I2C GP14,GP15
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION PICO OFF
OPTION CPUSPEED (KHz) 378000
OPTION DISPLAY 50, 133
OPTION LCDPANEL ST7796S, RLANDSCAPE,GP25,GP17,GP16,GP24
OPTION TOUCH GP21,GP23
GUI CALIBRATE 0, 235, 70, 1301, 841
OPTION GUI CONTROLS 10
OPTION SDCARD GP22
OPTION RTC AUTO ENABLE
>
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 723
Posted: 03:33am 17 Sep 2026
Copy link to clipboard 
Print this post

  matherp said  V6.03.02b7 is now available from https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V6.03.02b7

New:
MATH CLAMP



What is the syntax of the MATH CLAMP command?
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6606
Posted: 04:12am 17 Sep 2026
Copy link to clipboard 
Print this post

  Quote  
What is the syntax of the MATH CLAMP command?


From Peters github page:
  Quote  New: MATH CLAMP

MATH CLAMP in(), lo, hi, out()

Anything below lo becomes lo, anything above hi becomes hi. Integer or float in any combination, and strided, so it works on structure members like the other MATH commands.

DIM v(3) = (-8, 2, 40, 11)
DIM w(3)
MATH CLAMP v(), 0, 10, w()      ' w() is now 0, 2, 10, 10

It is for physics, where every object's velocity has to be held to the same limits every tick — 16 elements take 14 µs against 0.23 ms for the equivalent BASIC loop.

Note that MATH WINDOW is not the same thing: it rescales an array onto lo..hi, it does not clip it.



also:
  Quote  Updated 16 September 2026. The user manual has been re-uploaded with the MATH CLAMP entry, which was missing from the reference tables in the manual first attached to this release. The firmware is unchanged — only re-download the PDF.


Jim
Edited 2026-09-17 14:17 by TassyJim
VK7JH
MMedit
 
hhtg1968
Senior Member

Joined: 25/05/2023
Location: Germany
Posts: 215
Posted: 05:25am 17 Sep 2026
Copy link to clipboard 
Print this post

Hello.

The "help" command tries to read from a:/help.txt. Where to find a useful version of help.txt?

i very often have to read the user manual to get the right number of parameters or similar, so the help command cound be useful to work only on the pico computer...
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6606
Posted: 07:22am 17 Sep 2026
Copy link to clipboard 
Print this post

I don't know if the help.txt has been updated, but here are some recent threads.

https://www.thebackshed.com/forum/ViewTopic.php?TID=18731

https://www.thebackshed.com/forum/ViewTopic.php?FID=16&TID=17865

Jim
VK7JH
MMedit
 
Volhout

Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 6118
Posted: 09:09am 17 Sep 2026
Copy link to clipboard 
Print this post

Hi Peter,

While we are in beta, there is a suggestion I would like to make.
It is about VAR SAVE / VAR RESTORE.

There is 16kbyte (current value) reserved for this. And probably few are using it.
One Reason might be that it evaporates (clears) when a new program is loaded (even when your new program does not use VAR RESTORE). So when you develop using MMEdit, it is not non-volatile.
There is good reason to clear it. Not disputing that. I do not wat to change the function.

But question the way storage happens. In stead of reserving 16kbyte flash for it, why not use a file on A:/ ?? Use an arbitrary file name , such as ".var.bin", and hand the free flash space to either program memory, flash slot size, A:/ drive size.

For the people that do not use it, there is 16k more space for things they do use.
For the people that var save only 1 variable (a string ? ) minimal flash space is used (small file on A:/).
For the people that want to VAR SAVE more data, exceeding 16k, a solution is possible.

When the A:/ drive is full, no file can be created, and VAR RESTORE would simply not happen.

Just a thought...

Volhout
PicomiteVGA PETSCII ROBOTS
 
Volhout

Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 6118
Posted: 09:14am 17 Sep 2026
Copy link to clipboard 
Print this post

  matherp said  All:
Please do not try and use b7 with a RP2040. There seems to be a compiler bug that I am trying to find. To save flash space I converted a file(FileIO.c) to use Os compilation rather than O2. This works perfectly on the rp2350 but on the rp2040 build the firmware starts and crashes repeatedly. Lots of other modules use Os so I don't know what is causing the issue but for the moment stick with b6 or below.


I have seen occasional disconnects when using MMEdit/MMCC. That may be related.
Typically they happen using the F2 command, after an upload to pico is completed, and before the RUN command can be issued by MMEdit.

Regards,

Volhout
PicomiteVGA PETSCII ROBOTS
 
     Page 5 of 6    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026