|
Forum Index : Microcontroller and PC projects : V6.01.00 release notes and final release candidate
| Author | Message | ||||
| Amnesie Guru Joined: 30/06/2020 Location: GermanyPosts: 731 |
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: AustriaPosts: 337 |
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 KingdomPosts: 10715 |
Should be OPTION LCD SPI |
||||
| ville56 Guru Joined: 08/06/2022 Location: AustriaPosts: 337 |
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 KingdomPosts: 10715 |
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: AustriaPosts: 337 |
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 KingdomPosts: 10715 |
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 KingdomPosts: 714 |
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 StatesPosts: 503 |
Yes, that's the right syntax. See pages 106 and 107 in the manual. |
||||
| matherp Guru Joined: 11/12/2012 Location: United KingdomPosts: 10715 |
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 KingdomPosts: 714 |
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: NetherlandsPosts: 5540 |
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 KingdomPosts: 10715 |
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: NetherlandsPosts: 5540 |
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 KingdomPosts: 10715 |
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: SpainPosts: 9 |
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: GermanyPosts: 731 |
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 KingdomPosts: 10715 |
Use \( and \) |
||||
| Amnesie Guru Joined: 30/06/2020 Location: GermanyPosts: 731 |
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: NetherlandsPosts: 5540 |
deleted Edited 2025-12-12 06:51 by Volhout PicomiteVGA PETSCII ROBOTS |
||||
| The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |