Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 11:04 17 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 5    
Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11870
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: 11870
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: 11870
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: 11870
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: 608
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: 608
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: 11870
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: 11870
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
>
 
     Page 5 of 5    
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 2026