Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 07:11 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 : V6.01.00 release notes and final release candidate

     Page 2 of 3    
Author Message
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 731
Posted: 04:12pm 08 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

looks good so far, no further errors or bugs found (tested only HDMI USB and PS/2 versions of the RP2350A).

Greetings
Daniel
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 337
Posted: 04:35pm 08 Dec 2025
Copy link to clipboard 
Print this post

Peter,

found the following issue ....

environment:
PicoMite MMBasic RP2350A V6.01.00RC24
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 200000

issue:
option lcd pins gp2,gp3,gp4
Error : Invalid Option

Gerald
                                                                 
73 de OE1HGA, Gerald
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10715
Posted: 05:16pm 08 Dec 2025
Copy link to clipboard 
Print this post

Should be OPTION LCD SPI
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 337
Posted: 05:51pm 08 Dec 2025
Copy link to clipboard 
Print this post

another question:

running a small program that draws lines and arcs in a loop (stolen from the radar thread) I get the following results:

environment with buffered LCD:

PicoMite MMBasic RP2350A V6.01.00RC24
OPTION LCD SPI GP2,GP3,GP4
OPTION CPUSPEED (KHz) 200000
OPTION LCDPANEL ILI9488BUFF, LANDSCAPE,GP5,GP6,GP7,GP8,INVERT

alternating (sic) times for the arc part, line part is plausible:

arc  147.832
line  1.286
arc  41.758
line  1.294
arc  147.799
line  1.289
arc  41.786
line  1.283
---------------------------------------

environment with unbuffered LCD:

PicoMite MMBasic RP2350A V6.01.00RC24
OPTION SYSTEM SPI GP2,GP3,GP4
OPTION CPUSPEED (KHz) 200000
OPTION LCDPANEL ILI9488, LANDSCAPE,GP5,GP6,GP7,GP8,INVERT

arc  31.074
line  5.967
arc  31.074
line  5.964

which is plausible for me.

The most interesting question is: why is the time for executing the arcs longer with buffered driver? Lines do seem plausible to be faster with buffered driver. Hope my test setup is valid.

test program used is:

LCD-buffer-test.zip

Gerald
                                                                 
73 de OE1HGA, Gerald
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10715
Posted: 07:02pm 08 Dec 2025
Copy link to clipboard 
Print this post

It is to do with how much of the screen gets updated. The non buffered driver only updates the actual lines. Whereas the buffered driver accumulates the area to be updated and then updates the area.

Try this if you really want to confuse yourself  
 Arc 160,240,60,,285,75,RGB(green)
Pause 100
 Arc 160,240,120,,285,75,RGB(green)
Pause 100
 Arc 160,240,180,,298,62,RGB(green)
Pause 100
 Arc 160,240,240,,318,42,RGB(green)
Pause 100
 Print "arc ";Timer-f_tmp-400
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 337
Posted: 07:25pm 08 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  Whereas the buffered driver accumulates the area to be updated and then updates the area.


I understand, but what is the trigger to update the area? Is it a timer or another event within the interpreter that triggers the update?
                                                                 
73 de OE1HGA, Gerald
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10715
Posted: 12:37pm 09 Dec 2025
Copy link to clipboard 
Print this post

V6.01.00RC25

PicobMiteV6.01.00RC25.zip

I've managed to coerce the linker to put the csub calltable back into the same place as 6.00.03 so it will now run any csub compiled for 6.00.03 with the following addresses:
#ifdef PICORP2350
#define BaseAddress   0x1000023C
#else
#define BaseAddress   0x100002D4
#endif

Tested with the badapple demo on a RP2350 HDMIUSB version

In addition I've rewritten the Arc command to be both faster and use less memory and the circle command when drawing a circle that is unfilled with a thick border to use less memory

ville56:
The buffered drivers update every 10mSec. In your test put a 100mSec delay after the batch of ARC commands (nothing in between) and you will see the buffered driver perform properly. By definition it can only update the screen at the overall rate defined by the SPI bus speed so if you queue too many updates it will block while it clears the backlog
Edited 2025-12-09 22:40 by matherp
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 714
Posted: 03:53pm 09 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,
I seem to remember that this version is the first to allow Length on single String declorations? Thus allowing the special case of short strings, which do not allocate the full 255 byte string length as long as the Length is less than 7 on the 2040 or 15 on the 2350. Is this correct? I've tried declaring 18 single strings in a program, but don't see any memory difference when using a short length say 3.
Would the syntax be:-
Dim String xyz Length 5

Does it also work for Local declorations in subroutines.
Thanks for any insight.
Regards Kevin.
Edited 2025-12-10 02:27 by Bleep
 
toml_12953
Guru

Joined: 13/02/2015
Location: United States
Posts: 503
Posted: 05:58pm 09 Dec 2025
Copy link to clipboard 
Print this post

  Bleep said  Hi Peter,
I seem to remember that this version is the first to allow Length on single String declorations? Thus allowing the special case of short strings, which do not allocate the full 255 byte string length as long as the Length is less than 7 on the 2040 or 15 on the 2350. Is this correct? I've tried declaring 18 single strings in a program, but don't see any memory difference when using a short length say 3.
Would the syntax be:-
Dim String xyz Length 5

Does it also work for Local declorations in subroutines.
Thanks for any insight.
Regards Kevin.


Yes, that's the right syntax. See pages 106 and 107 in the manual.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10715
Posted: 06:40pm 09 Dec 2025
Copy link to clipboard 
Print this post

The memory command doesn't cope with short simple strings properly but they are not using heap memory
You can prove it by typing the following at the command line:
clear
? mm.info(heap)
dim s$
? mm.info(heap)
dim x$ length 5
? mm.info(heap)

Edited 2025-12-10 04:50 by matherp
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 714
Posted: 07:02pm 09 Dec 2025
Copy link to clipboard 
Print this post

Thanks Peter,
Currently the manual (previous version) says that Length can be used with non array strings but does not save any memory, can this new functionality be added to your release notes, so it gets added to the new manual :-) Thanks.
Regards Kevin.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5540
Posted: 08:43am 11 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

In trying to explain to Homa the difference between PIO FIFO and registers with the same address as FIFO, I realized that the commands are quite confusing.

PIO READ reads the FIFO as a FIFO
PIO(READFIFO ) reads individual registers from FIFO region.

Changing it now breaks all legacy programs that use FIFO, but it is confusing.
Beter would have been

PIO READFIFO 'is also in line with existing PIO WRITEFIFO
PIO(READREG ) 'and also associated PIO(WRITEREG )

Anyway, it is what it is. Maybe we can make them aliases and use the new commands in the user manual, and add the old ones to the "deprecated" list. That would not legacy programs.

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

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

Sorry, not quite sure what you are proposing. Please write out the current commands and functions and what the new versions should be
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5540
Posted: 10:42am 11 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

In hindsight, leave it as is, there is no good solution since PIO WRITEFIFO is already used, and you cannot assign it to a different command, but still keep backward functionality.

My original suggestion was (alias for backward compatibility):

PIO READ -> PIO READFIFO with alias PIO READ
PIO WRITE -> PIO WRITEFIFO with alias PIO WRITE

PIO WRITEFIFO -> PIO WRITEREG with alias PIO WRITEFIFO
PIO(READFIFO )-> PIO(READREG ) with alias PIO(READFIFO )

you can see in above (underlined) that there is a conflict.
so please ignore the proposal.

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

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

All, please note RC25 will become the release in the next few days so if you haven't made sure your applications work on it, it would be appreciated if you would. I really don't want to have to issue patches after the release of what will probably be the final version until/if there is a new chip
 
marcos_lm
Newbie

Joined: 13/11/2025
Location: Spain
Posts: 9
Posted: 03:49pm 11 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  V6.01.00RC25

Tested with the badapple demo on a RP2350 HDMIUSB version


Just tried RC25, the CSUB works again!  
Thanks Peter, now it makes sense why it was crashing on the earlier RCs.
Much appreciated!
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 731
Posted: 07:26pm 11 Dec 2025
Copy link to clipboard 
Print this post

Hello Peter,

I've tested another program of mine and something is wired with Instr

after you have changed Regex, this part of my code doesn't work anymore:


Sub searchNumber
     start=Instr(position,toBeSearched,"(",size)        'search for "(" in given string
     ende=Instr(position,toBeSearched,")",size)         'search for ")" in given string
     If ende-start-1 = 1 Then                         'we have only one number
       match=Mid$(toBeSearched,start+1,1)             'cut out the part of interest (number)
       If Val(match)<10 Then match="0"+match
     EndIf
     If ende-start-1 = 2 Then                         'we have two numbers
       match=Mid$(toBeSearched,start+1,2)
       If Val(match)<10 Then match="0"+match
     EndIf
     If ende-start-1<>1 And ende-start-1<>2 Then   'we have either a wrong number or a normal word
       match="nn"
     EndIf
     If start=0 Or ende=0 Then
       match="nn" 'although we have a health problem, there is NO NUMBER given (keep that in mind)
     EndIf
End Sub


What this sniped of code previously did was to search a given STRING for a number which is always located in "("number")" , so this string could be something like this:


this is a (5) test string    (I need to extract the 5)

(This number could be a maximum of 10)

If there is no number found the "match" is just "nn" (no number)...

Problem: now there is always no number ("nn") even though there is!

If I understand the manual correct, I can't use "(" or ")" anymore with the new Regex? Hmm...


Old manual page 196:
\(…\) group

New manual page 208:
(…) group


That's why I think this isn't possible anymore..

Greetings
Daniel
Edited 2025-12-12 05:46 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10715
Posted: 08:00pm 11 Dec 2025
Copy link to clipboard 
Print this post

Use \( and \)
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 731
Posted: 08:08pm 11 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  Use \( and \)


Uhm.. yeah.. This works. Sorry this isn't really that obvious for me, I took a note in my program for that. Thanks!

Greetings
Daniel
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5540
Posted: 08:27pm 11 Dec 2025
Copy link to clipboard 
Print this post

deleted
Edited 2025-12-12 06:51 by Volhout
PicomiteVGA PETSCII ROBOTS
 
     Page 2 of 3    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025