Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 08:20 08 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

Author Message
matherp
Guru

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

Below are the proposed release notes for 6.01.00 together with the last release candidate RC23. This will become the release version unless anything untoward is found. There is one change from RC22 which is to implement a sensitivity control for USB mice

OPTION MOUSE SENSITIVITY f ' sets the USB mouse sensitivity, defaults to 1.0.
Setting a value of 2.0 would halve the speed. This is a permanent option but will not cause a reboot and can be used in a program.

Please test the release and review the notes. Let me know if there is anything obvious I have missed or anything I have broken before I start the manual update - thanks.

PicoMiteV6.01.00RC23.zip


New functionality

ON ERROR RESTART
Does what it says. Any error in a program will cause the Pico
to reset and, of course, if you have OPTION AUTORUN set the program will restart cleanly

TRIM$(source$ [,mask$] [,where/where$])
This function can remove characters from the beginning or end of a string or both
source$ is the input string
mask$ is a string containing a list of character to be removed.
If omitted it defaults to space
where/where$ can be L, R, or B or a string beginning with L, R, or B to
specify characters should be removed from the left of the source,
the right of the source or both. If omitted defaults to L

PLAY ARRAY l%(), r%(), freq [,start] [,end] [,terminationinterrupt]
This requires packed arrays (could be the same array for left and right) of 16 bit
values in the range -32768 to 32767 and outputs the values in the array at the sample frequency specified.
If the optional parameter 'start' is specified then the arrays are output from packed location 'start'
If the optional 'end' is specified then the arrays are output until the packed location 'end' is reached
If the optional parameter 'terminationinterrupt' is specified then the subroutine
specified will execute once the last array element has been output.
It is important to understand the 'freq' parameter.
This is the rate at which each array element is output.
So for example, if the array contained 10 cycles of a sine wave with 18000 total samples
then setting the frequency to 1800 would output a 1Hz sine wave for 10 seconds.
Setting the frequency to 18000 would output a 10Hz sine wave for 1 second.

MM.SUPPLY
For modules with a pin allocated to measure the incoming supply voltage
such as the Pico and Pico2, MM.SUPPLY will return the voltage.

Enhanced KEYPAD command
The existing KEYPAD command supports a 4x3 or 4x4 keypad using the syntax
KEYPAD var, int, r1, r2, r3, r4, c1, c2, c3 [, c4]
This release supports n x m keypads using the syntax
KEYPAD keymapmap!(),var!,int, startcolpin, nocols, startrowpin, norows
'startcolpin' is the pin that begins 'nocols' of contiguous GP pins used as the column scans
'startrowpin' is the pin that begins 'norows' of contiguous GP pins used as the row scans
'var!' is the variable that will contain the value returned to the interrupt routine 'int' when a key is pressed
keymapmap!() is a two dimensional array that contains the user supplied mapping for every key.
The array dimensions must match the number of columns and rows specified
So for example if I have a keypad with 3 columns and 4 rows
123
456
789
*0#
And I wire gp1 to the left column, gp1 to the middle and gp2 to the right, then the 4 rows from top to bottom to gp3 to gp6
My program could be
Option base 1
Dim keymap(3,4)=(1,4,7,10, 4,5,6,0, 3,6,9,11)
Keypad keymap(),keyret,myint,gp1,3,gp4,4
Do
Loop
Sub myint
Print keyret
End Sub

High speed buffered display drivers
The new release supports the following new display drivers
ILI9341BUFF: 320 x 240
ST7796SPBUFF: 320 x 320
ST7796SBUFF: 480 x 320
ILI9488PBUFF: 320 x 320
ILI9488BUFF: 480 x 320
ILI9488WBUFF: 480 x 320 'Waveshare Pico-Restouch-lcd-3.5
ST7789_320BUFF: 320 x 240 'Waveshare Pico-Restouch-lcd-2.8
In all cases enabling one of these drivers steals a RGB332 framebuffer from
the heap so in the worst case of a ILI9488BUFF heap is reduced by 150K bytes (from 300K)
To use one of these drivers you first need to allocate the SPI pins to be used
OPTION LCD PINS clkpin, mosipin, misopin
These pins are dedicated to the display and must be separate from any pins used
for the SYSTEM SPI which may still be required for touch and the sdcard
(NB: in the case of the Waveshare boards using this driver will conflict with also
using touch and the sdcard as they share the SPI channel)
The reason for the dedicated pins is that the screen updates will all take place
on the second processor and for maximum performance this cannot share the SPI channel.

OPTION MOUSE SENSITIVITY f' sets the USB mouse sensitivity, defaults to 1.0.
Setting a value of 2.0 would halve the speed

LINPUT(array%(),fnbr,nbr)
This reads nbr bytes from a file open as fnbr into the LONGSTRING array%().
The function returns the number of bytes actually read so if you are near the
end of the file the number may be less than the number requested.
It only works with file I/O and not serial or console I/O

DEVICE(MOUSE m,B) returns the state of all the buttons on the mouse.
Useful if the mouse has more than the normal three buttons.

EDITOR enahncements
You can now use SHIFT-F3, ctrl-G, OR F6 to get the next match
If you then use SHIFT-F5, ctrl-I or F8 the system will replace the search target string with the contents of the paste buffer.
you can now press SHIFT-F4, ctrl-F, or F7 and this will open a dialog allowing you to directly enter a string into the paste buffer
and on pressing return, replace the search target string.
Suppose you want to replace every occurrence of GP0 with GP6 then you can proceed as follows:
F3 - enter GP0 'define the search target and find the first occurrence
F7 - enter GP6 'define the replacement string and do the first replacement
repeat until you get a not found message
F6 ' find next
F8 ' replace next
end repeat

REDIM [PRESERVE] array(dimensions)
This resizes the array specified with the dimensions given.
If the optional sub-command PRESERVE is specified the existing data will be copied into the new array.
The new array can be bigger or smaller than the original.
In the case of string arrays the original LENGTH specified is preserved.
Note that for multi-dimensional arrays only the last dimension can be changed if PRESERVE is used.
Changes

LMID(array%(),start [,num])=string$
inserts string$ into the longstring array%() at position start replacing num existing characters. If num isn't specified then it is calculated from the length of string$.
num can be 0 in which case string$ is inserted at the position specified.

DEVICE(MOUSE n,W) now works for USB mice

FLASH LOAD IMAGE flashno, filename$ [,O/OVERWRITE]
This command loads the bmp file specified into the flash slot in RGB121 format.
The flash slot should have been previously erased or specifying the optional parameter O or OVERWRITE will force an erase.
Note that the first two words in the flash slot are the width of the saved image and the height of the saved image.
The image need not be the same dimensions as the framebuffer.

BLIT FLASH from, to, xin, yin, xout, yout, width, height [,colour]
Copies an area of a specific ‘from’ flash slot to a
‘to’ framebuffer N, F, or L. ‘xin’ and ‘yin’ define the top left of the area of
‘width’ and ‘height’ on the flash slot to be copied. ‘xout’ and ‘yout’
define the top left of the area on the target framebuffer to receive the copy. The
optional parameter colour defines a pixel colour in the flash slot which will not
be copied. If omitted all pixels are copied. The colour is specified as a number
between 0 and 15 representing:
Black, Blue, Myrtle, Cobalt, Midgreen, Cerulean, green, cyan, red, magenta,
rust, fuschia, brown, lilac, yellow and white

TURTLE GRAPHICS
This release contains a very comprehensive turtle graphics implementation for all versions except the WebMite RP2040 and WebMite RP2350.
The supported commands are:
Movement Commands
FORWARD distance        (FD)  - Move forward by distance pixels
BACK distance          (BK)  - Move backward by distance pixels
LEFT [angle]             (LT)  - Turn left by angle degrees, 90 degrees if not specified
RIGHT [angle]            (RT)  - Turn right by angle degrees, 90 degrees if not

Position Commands
SET XY x, y                    - Move to absolute position (x,y)
SET X x                       - Set X coordinate, keep Y
SET Y y                       - Set Y coordinate, keep X
SET HEADING angle       (SETH) - Set absolute heading (0=up, 90=right)
HOME                         - Return to center (MM.HRES\2,MM.VRES\2) heading 0
Pen Control Commands
PEN UP                  (PU)  - Lift pen (stop drawing)
PEN DOWN                (PD)  - Lower pen (start drawing)
PEN COLOUR color         (PC)  - Set pen color
PEN WIDTH width         (PW)  - Set pen line width

Arc and Curve Commands
ARC radius angle             - Draw arc with given radius and angle
ARCLEFT radius,angle  (ARCL) - Draw arc turning left
ARCRIGHT radius,angle (ARCR) - Draw arc turning right
BEZIER cp1 , cp1angle, cp2, cp2angle, end, endangle          - Draw Bezier curve with control points

Basic Shape Commands
CIRCLE radius               - Draw circle at current position
DOT size                   - Draw filled dot (default size=5)
FCIRCLE radius             - Draw filled circle
FRECTANGLE width,height (FRECT) - Draw filled rectangle
WEDGE radius start end     - Draw filled wedge/pie slice

Fill Commands
FILL COLOUR color        (FC)  - Set fill color and enable filling
FILL PATTERN pattern    (FP)  - Set fill pattern (0-7)
NO FILL                      - Disable filling
FILL                        - Flood fill at current position
BEGIN FILL             (BF)  - Start recording polygon for fill
END FILL               (EF)  - End recording and fill polygon

Cursor Commands
SHOW TURTLE            (ST)  - Show turtle cursor
HIDE TURTLE            (HT)  - Hide turtle cursor
CURSOR SIZE size       (CS)  - Set cursor size
CURSOR COLOUR color     (CC)  - Set cursor color
STAMP                        - Draw a turtle at the current x,y position

State Management Commands
RESET [show]                 - clear screen and reset everything, show the turtle if show = 1
PUSH                        - Save current position and heading to stack
POP                         - Restore position and heading from stack

The code includes the ability to fill circles,rectangles and polygons with a textured fill. Run it in mode 2 on a RP2040 VGA system or mode 3 on a RP2350 VGA or HDMI.

Fill Patterns
0: Solid fill
1: Checkerboard
2: Vertical lines
3: Horizontal lines
4: Diagonal cross
5: Diagonal stripes
6: Crosshatch
7: Fine diagonal
8: Dense checkerboard
9: Diagonal right medium
10: Diagonal left medium
11: Vertical lines medium
12: Horizontal lines medium
13: Large checkerboard
14: Dotted vertical
15: Horizontal stripes tight
16: Grid
17: Weave pattern
18: Diamond
19: Gradient diagonal
20: Gradient diagonal reverse
21: Border/frame
22: Vertical split
23: Woven
24: Sparse dots
25: Diagonal very fine
26: Arrow up
27: Dense dots
28: Chevron
29: Diamond hollow
30: Circle
31: Circle filled

PIO SYNC pio, statemachines, [,prevstatemachines] [,nextstatemachines]
Synchronises PIO state machine clocks
pio specifies the reference PIO for the command
statemachines, prevstatemachines and nextstatemachines are bitmaps (1 to 15)
specifying which state machines's clocks should be synced.
So to specify that all of PIO0 and PIO1 state machines should be synced you could use:
PIO SYNC 0,15,,15
or
PIO SYNC 1,15,15
Adds support for WAIT n IRQ NEXT/PREV in the PIO assembler
Adds support for IRQ NEXT/PREV in the PIO assembler

AUTOSAVE N
This runs autosave as normal but does not echo the data back to the console.
It waits for the first character to be sent and then uses a timer that
checks for greater than 100mSec between characters.
If it sees this delay it switches back to normal input mode and outputs the message
"Enter ctrl-Z, F1, or F2 to exit"
You can then type additional characters to be saved or use one of the normal exits.

FILL x, y, colour
This reads the colour at position x,y in the display and then fills the area from that point where the current colour is the same.
Note it will be slow on TFT displays using unbuffered drivers.
The new SDD1963 buffered drivers and VGA and HDMI versions all perform well.

HDMI versions
OPTION RESOLUTION 1024x600
1024x600 has modes:
1: 1024x600 mono with tiles
2: 256x150 RGB121
3: 512x300 RGB121
5: 256x150 RGB332

OPTION RESOLUTION 800x480 (NB: reduces heap memory available)

800x480 has modes:
1: 800x480 mono with tiles
2: 400x240 RGB121
3: 800x480 RGB121
5: 400x240 RGB332

PICOMITE RP2350
V6.01.00 includes a new set of drivers for the PICOMITE RP2350
OPTION LCDPANEL VGA222_640/VGA222_320/VGA_720/VGA_360, hsyncpin, bluelpin
This checks for availability of
hysyncpin and hysyncpin+1 (vsync)
bluelpin - bluelpin+5 (blue_l, blue_h, green_l, green_h, red_l, red_h
assuming these are all free it sets up to run VGA222 output on the pins specified in either 640x480 (VGA222) or 320x240 (VGA222_320)
To connect the data pins to the VGA connector use 390 and 820 ohm resistors from the outputs as per the green channel in the manual ( page 29)
RGB222 gives a much nicer colour rendition than the RGB121 available on the VGA version.
Note, there are no modes. The 640x480, 320x240, 720x400 and 360x200
are different drivers and use different amounts of memory
(much more in the case of 640x480 and 720x400).
To generate the VGA output The firmware uses PIO0 and PIO1 leaving PIO2 available
(unless you also use the I2S audio driver.

YMODEM SEND or YMODEM SEND file$ or YMODEM RECEIVE or YMODEM RECEIVE file$ or YMODEM CRUNCH
This command mimics XMODEM but transfers files much faster (>10x) over a CDC serial link
YMODEM is different from XMODEM in that the message carries the filename.
This means that when you send a file from the Pico to a computer the receiving program will use automatically use the same name as you send.
In case the file already exists the receiver will automatically increment a version number on the name of the file received.
fred1.bas, fred2.bas etc.
When sending from memory with YMODEM S there are two possibilities.
In the case that the file was loaded from the A: or B: drives it will contain a hidden filename and this will be used.
In the case of a file created through the editor or autosaved the receiving file will automatically have the name FILEn.DAT
It is the responsibility of the receiving program to specify where the file will be saved.
In the case of teraterm this is an option you set on the general setting screen "File transfer folder"
When receiving a file on the Pico, you have complete freedom to specify the name and directory in the normal way
NB: YMODEM is very sensitive to the quality of the connection and the USB implementation on the host.
If it doesn't work for you continue to use XMODEM

Buffered drivers for SSD1963 displays
OPTION LCDPANEL controller, orientation [,backlightpin] [,DCpin] [,NORESET][,INVERT][,DB0pin]
ssd1963_5_buff, ssd1963_7_buff, ssd1963_5_12buff,  ssd1963_7_12buff, ssd1963_5_16buff, or ssd1963_7_16buff
The drivers use 8, 12, or 16 data pins as indicated in the driver name.
In all cases enabling one of these drivers steals a 400x240 RGB332 framebuffer from the heap memory.
When using these drivers you can switch between the buffered driver and a conventional driver using the command
MODE 800/400
This switches without rebooting between 800x480 and 400x240 modes
You can use the command OPTION LCD320 ON/OFF to centre a 320x240 image on the 400x240 display.


Changed functionality

DE USB keyboard now returns codes 200-209 for accented keyboard characters
with normal input (input$/inkey$)

FILES command automatically sets the maximum number of files that can be handled based on the
version of the chip (RPp2350 or RP2040) and memory used for things like video buffers.
Maximum file length is changed for RP2350 to 127 bytes (63 bytes on RP2040)

USB CDC performance is improved for all non USB-host versions.
USB lockups significantly reduced but probably no eliminated

MID$ command
The length to be replaced can now be 0
i.e. insert the new string at the position specified

Regular expressions in INSTR and LINSTR
The regular expression engine has been replaced and upgraded.
It now supports most of the standard regular expression syntax including groups

BMP file processing has been completely rewritten

LOAD IMAGE/BMP fname$ [,x] [,y] [,mode] [,ximage] [,yimage]
Loads a BMP file from fname$ and writes it to the current output device (display or framebuffer) starting at x, y (defaults to 0,0).
The optional mode parameter specifies if the output is to be dithered.
Bits 0 and 1 specify the output format and bit 2 specifies the type of dithering to use.
By default mode is set to -1 which indicates no dithering should be applied.
DITHER_FLOYD_STEINBERG_RGB121 0      
DITHER_FLOYD_STEINBERG_RGB222 1      
DITHER_FLOYD_STEINBERG_RGB332 2      
DITHER_ATKINSON_RGB121 4
DITHER_ATKINSON_RGB222 5
DITHER_ATKINSON_RGB332 6
ximage and yimage specify where in the image file to start writing to the display (defaults to 0,0)

PIO CHANGES
PIO CLEAR now also clears all IRQ flasgs for the PIO specified
Adds support for auto-restart of PIO DMA TX for buffers that don't meet the requirements of a ringbuffer
PIO DMA TX pio, sm, nbr,data%() [,completioninterrupt][,transfersize][,loopbackcount]
nbr specified loopbackcount not specified (or 0) - standard single shot DMA
nbr  0 loopbackcount specified                   - ringbuffer
nbr and loopbackcount specified and identical    - auto restart of the DMA on completion

LOAD JPG file$ [, x] [, y] [,mode] [,ximage] [,yimage]
Loads a JPG file from fname$ and writes it to the current output device (display or framebuffer) starting at x, y (defaults to 0,0).
The optional mode parameter specifies if the output is to be dithered.
Bits 0 and 1 specify the output format and bit 2 specifies the type of dithering to use.
By default mode is set to -1 which indicates no dithering should be applied.
DITHER_FLOYD_STEINBERG_RGB121 0      
DITHER_FLOYD_STEINBERG_RGB222 1      
DITHER_FLOYD_STEINBERG_RGB332 2      
DITHER_ATKINSON_RGB121 4
DITHER_ATKINSON_RGB222 5
DITHER_ATKINSON_RGB332 6
ximage and yimage specify where in the image file to start writing to the display (defaults to 0,0)

The map command and function are now implemented for the new buffered LCD drivers
MAP(n)=RGB888value ' n=0 to 255
MAP SET
MAP RESET
? MAP(n) ' n=0 to 255

DRAW3D SHOW n, x, y, z [,nocull][,usefurthest]
DRAW3D WRITE n, x, y, z [,nocull][,usefurthest]
New optional parameter usefurthest which specifies if depth sorting should use the
centroid of a face or the furthest vertex as the parameter to be sorted.
set 1 to use the furthest vertex and zero (default) to use the centroid.

FRAMEBUFFER SYNC now works for background merge and background copy

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
 
Bleep
Guru

Joined: 09/01/2022
Location: United Kingdom
Posts: 710
Posted: 05:41pm 06 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,
Very quick install and test on a 2040 USB LCD, 2350 USB HDMI and 2350 USB LCD, all working as expected, running a taxing demo program and your Elite 3D ships demo, I have not been able to test further.
Thanks for the reminder of everything that has changed. :-)
Regards, Kevin.
Edited 2025-12-07 03:44 by Bleep
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5515
Posted: 08:51pm 06 Dec 2025
Copy link to clipboard 
Print this post

Peter,

I am not sure about this build for the RP2040 microcontroller release.
When I clean install this ,the A: drive is size 724992 bytes. In previous rc's and beta 20 this was 675840. Is this expected ?

I checked the majority of the Game*Mite on games on GM 2040 and GM 2350, and they all run. So we have 50k more flash drive on 2040. Thanks.
Checked RP2040 VGA (not completely done yet) but green light up to now. Can only finish Monday (need to get stuff from work to finish the tests).

Volhout
Edited 2025-12-07 07:51 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 8358
Posted: 10:56pm 06 Dec 2025
Copy link to clipboard 
Print this post

Wow... Are you sure you didn't re-write it, Peter? :)
That's an impressive changes list by any standards.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5515
Posted: 07:46am 07 Dec 2025
Copy link to clipboard 
Print this post

Question

Do the buffered lcd drivers also work for rp2040?
For 9341 lcd at cost of 76kbyte RAM

Volhout
PicomiteVGA PETSCII ROBOTS
 
matherp
Guru

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

  Quote  Do the buffered lcd drivers also work for rp2040?

No: RP2350 only
  Quote  When I clean install this ,the A: drive is size 724992 bytes. In previous rc's and beta 20 this was 675840. Is this expected ?

Yes: you were worried about a: drive space so I found you some
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 5515
Posted: 08:54am 07 Dec 2025
Copy link to clipboard 
Print this post



Tested : PS2 keyboard, NES controller, WII classic, WII Nunchuck on 2040 VGA. All ok.
In games VGA and LCD on 2040:
Tested : PWM sound (PLAY SOUND/PLAY TONE/PLAY WAV/PLAY FLAC/PLAY MOD). All ok.
Tested : MODE 1, tiles, MODE 2, FRAMEBUFFER F,N,L. All ok.

Made 2 small mods to your last badapple.bas so it could run on a 2040 (no audio on A:/ drive since there is no PSRAM to hold audio file). Runs smooth, but slower.

Volhout
Edited 2025-12-07 19:40 by Volhout
PicomiteVGA PETSCII ROBOTS
 
IanT

Senior Member

Joined: 29/11/2016
Location: United Kingdom
Posts: 120
Posted: 09:34am 07 Dec 2025
Copy link to clipboard 
Print this post

I'm convinced that Peter's real technical breakthrough was when he discovered how to clone himself. How many 'Peters' are there really working on this?

I think my Grandchildren will enjoy exploring the turtle graphics Peter - thank you

Regards,


IanT
 
ville56
Guru

Joined: 08/06/2022
Location: Austria
Posts: 305
Posted: 11:13am 07 Dec 2025
Copy link to clipboard 
Print this post

The issue with wireless mice is still there. It has changed a bit with the mouse sensitivity option but the mouse movements in the editor are still weird.

If I set sesitivity to 30 with the Logitech MK320, the mouse cursor movements are more limited but there is not even an average direction recognisable when moving from e.g. bottom left to top right. Just weird jumping around in a more limited space...
With a small test program reporting the x/y coordinates it can be seen that the reports are incosistent, interspersed with 0 or other implausible values. So something seems to be wrong there.

Hama mice still do not show any action in editor mode but with the same test program just reporting changed coordinates it shows 2 or 3 reports after reboot but then stops reporting at all.

Cablebound USB mouse (good ole ThinkPad) do operate without a hitch though.

btw, had to nuke the pico before running RC23 correctly. Upgrading from RC22 it would not show any mouse in editor mode even though a test program reported mouse movements. This is for wireless at least, didn't use cable mouse for first test.


Gerald
                                                                 
73 de OE1HGA, Gerald
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 727
Posted: 01:03pm 07 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

I have to report a bug:
I've tested some of my programs and all my programs which make use of CHAIN
are now broken (for example my GUI Editor, the diary/journal program etc.):

ERROR: x is not declared

(PicoMiteV6.01.00RC23.zip)

With the version before you introduced the new "Regular expressions" in INSTR and LINSTR everything worked fine. So I didn't tested any of the "newer" RCs and jumped right to this latest RC23 (therefore I can't say when this problem is introduced).

Greetings
Daniel
Edited 2025-12-07 23:04 by Amnesie
 
matherp
Guru

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

What version VGA/HDMI? which processor? With or without PSRAM?
Edited 2025-12-07 23:16 by matherp
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 727
Posted: 01:32pm 07 Dec 2025
Copy link to clipboard 
Print this post

Ah Sorry Peter, forget to mention that!

Here are some more infos:

Tested version with the problem: RC23

Settings, no PSRAM:



Here is a really simple test program:


MAIN program:

MODE 3
'Colour selection & mapping
Dim c1(15)=(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)  'PicoMiteVGA colour palette
Colour Map c1(),c1()

'new custom palette
Map(0)=RGB(20,12,28)        'very_dark_violet
Map(1)=RGB(58,46,52)        'red_earth
Map(2)=RGB(48,52,109)       'deep_blue
Map(3)=RGB(38,44,48)        'shadowy_lavender
Map(4)=RGB(153,156,148)     'root_beer
Map(5)=RGB(52,101,36)       'hunter_green
Map(6)=RGB(208,70,72)       'faded_red
Map(7)=RGB(117,113,97)      'flint
Map(8)=RGB(189,25,50)       'deep red
Map(9)=RGB(210,125,44)      'bronze
Map(10)=RGB(133,149,161)    'regent_grey
Map(11)=RGB(249,170,44)     'leaf
Map(12)=RGB(210,170,153)    'skin
Map(13)=RGB(109,194,202)    'cadet_blue
Map(14)=RGB(168,152,94)     'banana
Map(15)=RGB(222,238,214)    'ivory

Map Set                                          'this sets the custom colour map

Chain "nextprog"


chained program:

'nextprog
CLS
fgc=c1(11)


Error: c1 is not declared


Greetings
Daniel
Edited 2025-12-07 23:33 by Amnesie
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 727
Posted: 02:37pm 07 Dec 2025
Copy link to clipboard 
Print this post

Hi Peter,

just as an hint, I was using RC11 and there everything works perfect - maybe this helps to track it down?

Greetings
Daniel
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10681
Posted: 03:40pm 07 Dec 2025
Copy link to clipboard 
Print this post

Daniel

I know the change that caused it but at the moment I can't see why and it is a change I need to keep. I'll keep working on it.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10681
Posted: 04:56pm 07 Dec 2025
Copy link to clipboard 
Print this post

V6.01.00RC24

PicoMiteV6.01.00RC24.zip

Well RC23 didn't last long as the final version.

RC24 fixes a bug in LOAD/SAVE CONTEXT and CHAIN

In addition I have made the new mouse functionality optional

By default after OPTION RESET, OPTION MOUSE SENSITIVITY will now set to 0. In which case the mouse is left in boot mode and the wheel won't work other than as a switch.
If OPTION MOUSE SENSITIVITY is set to anything else then the mouse is switched into report mode and the firmware tries to identify from the report descriptor how to decode the mouse report.
It appears, like gamepads, that there isn't enough information in the report descriptor to decode the reports for some mice and therefore the firmware can't correctly decode the report. In this case the mouse will only be usable in boot mode and you should set OPTION MOUSE SENSITIVITY back to zero. For mice that "behave" OPTION MOUSE SENSITIVITY, when non-zero, sets the divider for the mouse position report to allow you to control the sensititvity and read the wheel position and any extra buttons.
 
Amnesie
Guru

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

Hi Peter,

the problem with Error: ... not declared when CHAIN(ing) does still persists.
I nuked the flash of the pico, to be sure, tried two times - no success.

Greetings
Daniel
Edited 2025-12-08 03:09 by Amnesie
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 10681
Posted: 05:29pm 07 Dec 2025
Copy link to clipboard 
Print this post

Bizarre - try again

PicoMiteV6.01.00RC24.zip
 
Amnesie
Guru

Joined: 30/06/2020
Location: Germany
Posts: 727
Posted: 05:50pm 07 Dec 2025
Copy link to clipboard 
Print this post

  matherp said  Bizarre - try again

PicoMiteV6.01.00RC24.zip


HA! Now it is working, thank you! Now I'm testing a bit more... I have a lot of programs. I will report.

Greetings
Daniel
Edited 2025-12-08 03:51 by Amnesie
 
Amnesie
Guru

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

I have found another problem (bug?):

On the HDMI ps2 version, no problems with mouse, but on the HDMI usb version NONE of
my mices work. (all RP2350A)

Mices used:

- Asus GABKHBA58098 (usb only)
- Cherry M5400 (supports usb & ps2)
- Microsoft IntelliMouse (supports usb & ps2)

all of those mices work in the HDMI RP2350A usb edition of the firmware in the version RC11. So I think there must be either a change in the command or a bug.

If I connect all those mices it is recognized by the firmware, but the mouse does not
appear in all my programs and also not in the editor.

In short: None of my mices work in RC24, but in RC11 they do (HDMI usb-version)

IMPORTANT EDIT:
I tried it with:

OPTION MOUSE SENSITIVITY 1

then the firmware reboots and mouse works, switching back to SENSITIVITY 0
mouse doesn't work at all (don't even appear) - is this normal?






Greetings
Daniel
Edited 2025-12-08 04:45 by Amnesie
 
matherp
Guru

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

Sorry, silly typo when sensitivity is set to 0.


PicoMiteV6.01.00RC24.zip


If your mouse works properly with sensitivity set to something other than zero then use it as you will get wheel functionality
 
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