Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : MMBasic V6.03.00 release candidates

   Page 20 of 26    
Posted: 01:47pm
05 Jun 2026
Copy link to clipboard
matherp
Guru

V6.03.00RC16
PicoMiteRP2040V6.03.00RC16.zip
PicoMiteRP2350V6.03.00RC16.zip

VGA/HDMI USB builds have additional touch panel support.

non-VGA/HDMI builds now support GT911 capacitive touch controllers as well as FT63x6 controllers. VGA and HDMI builds do not and will not support direct GT911 touch controllers. You can buy a very cheap I2C to USB module for any screens that use a GT911 and don't already have the touch over USB

All builds except PICOMITEMIN, PICOMITEVGA RP2040, and  WEBMITE RP2040 now support touch gestures. Obviously only multi-touch controllers support expand/contract/CCW/CW/double tap gestures but even resistive XPT2046 TFT screens now support swipe gestures.

All builds except PICOMITEMIN, PICOMITEVGA RP2040, and  WEBMITE RP2040 now support two new touch functions TOUCH(XN num) and TOUCH(YN num). Setting num to zero in either function will return the number of current simultaneous touches. Setting num to a non-zero value will return the coordinates of that touch.
e.g.
Dim x(10),y(10)
Do
If Touch(yn 0) Then
  For i=1 To Touch(yn 0)
    x(i)=Touch(xn i)
    y(i)=Touch(yn i)
  Next
  Pixel x(),y(),RGB(white)
EndIf
Loop


I'm not aware of any previously reported bugs in this release

Coming soon:
HMDIBTH firmware. This combines HDMIUSB and bluetooth LE host functionality allowing for small self contained computers to be built with wireless keyboards and trackpads
 
Posted: 02:13pm
05 Jun 2026
Copy link to clipboard
homa
Guru


Wow – this genuine n-Multitouch is just absolutely brilliant!
 
Posted: 05:12pm
05 Jun 2026
Copy link to clipboard
matherp
Guru

Minor update to WebMite RP2350 to support RSA encryption - see Wolfram Alpha thread for more details/example. No version change

WebMiteRP2350V6.03.00RC16.zip
 
Posted: 07:14pm
05 Jun 2026
Copy link to clipboard
WhiteWizzard
Guru

  matherp said  WW
Last try. If this doesn't work then I think we have to assign that monitor as "non-supported". Every other touch monitor that has been tested AFAIK now works. You should see two devices connect. The multi-touch digitizer and a USB touchscreen. Make sure you test without a USB mouse also connected. It may be that only single touch via the USB touchscreen works but that would be a win.

PicoMite.zip


We have a response to touch!!

When Pico powered up and USB-touch attached I get the following:

PicoMiteHDMI MMBasic USB RP2350B Edition V6.03.00RC16
Copyright 2011-2026 Geoff Graham
Copyright 2016-2026 Peter Mather

> ---- Touch HID report descriptor (704 bytes) ----
000: 05 0D 09 04 A1 01 85 0D 05 0D 09 22 A1 02 09 42
010: 15 00 25 01 75 01 95 01 81 02 95 03 81 01 09 51
020: 75 04 25 0F 95 01 81 02 05 01 26 FF 3F 75 10 55
030: 0E 65 11 09 30 35 00 46 79 08 81 02 26 7F 25 46
040: 8A 03 09 31 81 02 05 0D C0 09 22 A1 02 09 42 15
050: 00 25 01 75 01 95 01 81 02 95 03 81 01 09 51 75
060: 04 25 0F 95 01 81 02 05 01 26 FF 3F 75 10 55 0E
070: 65 11 09 30 35 00 46 79 08 81 02 26 7F 25 46 8A
080: 03 09 31 81 02 05 0D C0 09 22 A1 02 09 42 15 00
090: 25 01 75 01 95 01 81 02 95 03 81 01 09 51 75 04
0A0: 25 0F 95 01 81 02 05 01 26 FF 3F 75 10 55 0E 65
0B0: 11 09 30 35 00 46 79 08 81 02 26 7F 25 46 8A 03
0C0: 09 31 81 02 05 0D C0 09 22 A1 02 09 42 15 00 25
0D0: 01 75 01 95 01 81 02 95 03 81 01 09 51 75 04 25
0E0: 0F 95 01 81 02 05 01 26 FF 3F 75 10 55 0E 65 11
0F0: 09 30 35 00 46 79 08 81 02 26 7F 25 46 8A 03 09
100: 31 81 02 05 0D C0 09 22 A1 02 09 42 15 00 25 01
110: 75 01 95 01 81 02 95 03 81 01 09 51 75 04 25 0F
120: 95 01 81 02 05 01 26 FF 3F 75 10 55 0E 65 11 09
130: 30 35 00 46 79 08 81 02 26 7F 25 46 8A 03 09 31
140: 81 02 05 0D C0 09 22 A1 02 09 42 15 00 25 01 75
150: 01 95 01 81 02 95 03 81 01 09 51 75 04 25 0F 95
160: 01 81 02 05 01 26 FF 3F 75 10 55 0E 65 11 09 30
170: 35 00 46 79 08 81 02 26 7F 25 46 8A 03 09 31 81
180: 02 05 0D C0 09 22 A1 02 09 42 15 00 25 01 75 01
190: 95 01 81 02 95 03 81 01 09 51 75 04 25 0F 95 01
1A0: 81 02 05 01 26 FF 3F 75 10 55 0E 65 11 09 30 35
1B0: 00 46 79 08 81 02 26 7F 25 46 8A 03 09 31 81 02
1C0: 05 0D C0 09 22 A1 02 09 42 15 00 25 01 75 01 95
1D0: 01 81 02 95 03 81 01 09 51 75 04 25 0F 95 01 81
1E0: 02 05 01 26 FF 3F 75 10 55 0E 65 11 09 30 35 00
1F0: 46 79 08 81 02 26 7F 25 46 8A 03 09 31 81 02 05
200: 0D C0 09 22 A1 02 09 42 15 00 25 01 75 01 95 01
210: 81 02 95 03 81 01 09 51 75 04 25 0F 95 01 81 02
220: 05 01 26 FF 3F 75 10 55 0E 65 11 09 30 35 00 46
230: 79 08 81 02 26 7F 25 46 8A 03 09 31 81 02 05 0D
240: C0 09 22 A1 02 09 42 15 00 25 01 75 01 95 01 81
250: 02 95 03 81 01 09 51 75 04 25 0F 95 01 81 02 05
260: 01 26 FF 3F 75 10 55 0E 65 11 09 30 35 00 46 79
270: 08 81 02 26 7F 25 46 8A 03 09 31 81 02 05 0D C0
280: 27 FF FF 00 00 75 10 95 01 09 56 81 02 09 54 15
290: 00 25 7F 95 01 75 08 81 02 85 0A 09 55 95 01 25
2A0: 0F B1 02 C0 05 0D 09 0E A1 01 85 21 09 22 A1 00
2B0: 09 52 09 53 15 00 25 0A 75 08 95 02 B1 02 C0 C0
---- Parsed touch_info ----
 uses_report_id=1 report_id=13 report_length_bytes=54
 max_contacts=10 first_contact_bit_offset=0 contact_stride_bits=40
 contact_count bit_offset=416 bits=8
 tip_switch_bit_offset=0 in_range_bit_offset=0
 contact_id bit_offset=4 bits=4
 X bit_offset=8 bits=16 logical_max=16383
 Y bit_offset=24 bits=16 logical_max=9599
 input_mode=1 report_id=33 bringup: cc_max_id=10 cert_id=0
 pointer_fallback=0
---------------------------
Multi-Touch GET_FEATURE id=33 len=2 data=A1,1
touchTouch SET_FEATURE InputMode id=33 len=2
Connected on channel 4 (10 contacts, 16383x9599)
> ---- Touch HID report descriptor (80 bytes) ----
000: 05 01 09 02 A1 01 85 07 09 01 A1 00 05 09 19 01
010: 29 03 15 00 25 01 75 01 95 03 81 02 75 01 95 05
020: 81 03 05 01 09 30 75 10 95 01 55 0E 65 11 35 00
030: 46 79 08 26 FF 3F 81 02 09 31 46 8A 03 26 7F 25
040: 81 02 09 38 15 81 25 7F 75 08 95 01 81 06 C0 C0
---- Parsed touch_info ----
 uses_report_id=1 report_id=0 report_length_bytes=0
 max_contacts=0 first_contact_bit_offset=0 contact_stride_bits=0
 contact_count bit_offset=0 bits=0
 tip_switch_bit_offset=0 in_range_bit_offset=0
 contact_id bit_offset=0 bits=0
 X bit_offset=0 bits=0 logical_max=0
 Y bit_offset=0 bits=0 logical_max=0
 input_mode=0 bringup: cc_max_id=0 cert_id=0
 pointer_fallback=1 report_id=7 button@0 X@8/16b max=16383 Y@24/16b max=9599
---------------------------
USB Touchscreen Connected on channel 3 (16383x9599)
> T+0ms #1 [7] 07 00 00 00 00 00 00 -> count=0 active=0

NOTE that the last line appears after a delay of about a second - then sits there.

When I touch the screen (1 finger) and move it around, I see:


T+56545ms #2 [7] 07 01 D2 38 44 1B 00 -> count=1 tip=1 x=1136 y=523 active=1
T+56732ms #7 [7] 07 01 FF 38 13 1B 00 -> count=1 tip=1 x=1139 y=519 active=1
T+56884ms #20 [7] 07 01 BF 3A 14 16 00 -> count=1 tip=1 x=1174 y=423 active=1
T+57037ms #33 [7] 07 01 6C 3A 5D 11 00 -> count=1 tip=1 x=1168 y=333 active=1
T+57191ms #46 [7] 07 01 5F 36 C0 0F 00 -> count=1 tip=1 x=1087 y=302 active=1
T+57346ms #58 [7] 07 01 D7 2F 57 11 00 -> count=1 tip=1 x=956 y=332 active=1
T+57501ms #71 [7] 07 01 3D 2B 6F 16 00 -> count=1 tip=1 x=864 y=430 active=1
T+57656ms #84 [7] 07 01 56 25 93 1B 00 -> count=1 tip=1 x=746 y=529 active=1
T+57810ms #96 [7] 07 01 EF 1C 52 19 00 -> count=1 tip=1 x=578 y=486 active=1
T+57965ms #108 [7] 07 01 56 1C B8 11 00 -> count=1 tip=1 x=566 y=340 active=1
T+58120ms #121 [7] 07 01 10 25 52 10 00 -> count=1 tip=1 x=741 y=313 active=1
T+58275ms #133 [7] 07 01 5E 2F 00 12 00 -> count=1 tip=1 x=947 y=345 active=1
T+58429ms #145 [7] 07 01 B8 37 4A 0D 00 -> count=1 tip=1 x=1114 y=255 active=1
T+58584ms #158 [7] 07 01 DE 34 3E 08 00 -> count=1 tip=1 x=1057 y=158 active=1
T+58740ms #171 [7] 07 01 E4 2A A0 0C 00 -> count=1 tip=1 x=857 y=242 active=1
T+58894ms #183 [7] 07 01 7C 21 CB 10 00 -> count=1 tip=1 x=669 y=322 active=1
T+59048ms #196 [7] 07 01 AF 1B D4 0E 00 -> count=1 tip=1 x=553 y=284 active=1
T+59203ms #209 [7] 07 01 70 20 8B 09 00 -> count=1 tip=1 x=648 y=183 active=1
T+59358ms #221 [7] 07 01 6A 2B F6 0B 00 -> count=1 tip=1 x=868 y=229 active=1
T+59513ms #233 [7] 07 01 91 2F 7A 12 00 -> count=1 tip=1 x=951 y=354 active=1
T+59667ms #246 [7] 07 01 B2 35 D6 16 00 -> count=1 tip=1 x=1073 y=438 active=1



And when I add a second touch/finger it bounces between a count of 1 and 0:

T+250974ms #1154 [7] 07 01 35 12 38 16 00 -> count=1 tip=1 x=364 y=426 active=1
T+251256ms #1157 [7] 07 00 35 12 38 16 00 -> count=0 active=0
T+251421ms #1160 [7] 07 01 35 12 38 16 00 -> count=1 tip=1 x=364 y=426 active=1
T+251573ms #1166 [7] 07 01 35 12 3E 16 00 -> count=1 tip=1 x=364 y=427 active=1
T+252164ms #1172 [7] 07 01 2E 12 50 16 00 -> count=1 tip=1 x=363 y=428 active=1
T+252698ms #1173 [7] 07 01 2E 12 56 16 00 -> count=1 tip=1 x=363 y=428 active=1
T+252854ms #1178 [7] 07 00 00 00 00 00 00 -> count=0 active=0
T+253014ms #1190 [7] 07 01 7F 36 4D 0F 00 -> count=1 tip=1 x=1089 y=293 active=1
T+253186ms #1197 [7] 07 01 78 36 59 0F 00 -> count=1 tip=1 x=1089 y=294 active=1
T+253370ms #1203 [7] 07 01 21 12 87 16 00 -> count=1 tip=1 x=362 y=432 active=1
T+253567ms #1210 [7] 07 00 21 12 93 16 00 -> count=0 active=0
T+253726ms #1215 [7] 07 01 72 36 84 0F 00 -> count=1 tip=1 x=1088 y=297 active=1
T+253898ms #1221 [7] 07 01 72 36 8A 0F 00 -> count=1 tip=1 x=1088 y=298 active=1
T+254051ms #1234 [7] 07 01 B4 11 B7 16 00 -> count=1 tip=1 x=354 y=436 active=1



GUI TEST TOUCH works for single finger, and with 2 fingers will respond to the 'last' finger (although difficult to see for certain as the screen fills up with data making it hard to see the touch-pixels.).


UNPLUGGING the usb-touch results in:

Multi-touch Disconnected
> USB Touchscreen Disconnected

And reconnecting USB touch seems to now re-initialise correctly (i.e. I do NOT see the previous 'device limit reached' error).

I will now try the FW you posted at the top of this page in the hope that will work too (but without all the debug messages!!)....
 
Posted: 07:12am
06 Jun 2026
Copy link to clipboard
homa
Guru


  WhiteWizzard said  ...

I will now try the FW you posted at the top of this page in the hope that will work too (but without all the debug messages!!)....


WhiteWizzard,
is it working? Don't keep us in suspense  

Matthias
 
Posted: 07:41am
06 Jun 2026
Copy link to clipboard
WhiteWizzard
Guru

Hi Matthias,

Yes, it works (without all the debug messaging) but for now only for a single touch point.

So now I’m a bit curious to know if this screen has a non-standard data structure for multi-touch bearing in mind it supports 10-points and works as such when connected to a Windows laptop. Or whether there is simply more decoding required of the data sent.

Very happy with a single touch; but I do have a need for 3-point touch ideally with the amazing image this screen puts out.
 
Posted: 09:14am
06 Jun 2026
Copy link to clipboard
matherp
Guru

WW

We can't now take this any further unless you can do a USBPcap/Wireshark capture while the monitor enumerates and you touch with two fingers.
 
Posted: 09:21am
06 Jun 2026
Copy link to clipboard
WhiteWizzard
Guru

Hi Peter,

I’m waiting for another smaller OLED touchscreen to arrive and hopefully that will work with multi-touch as I really like the ‘true-black’ at any angle. Trouble is, that screen is on a ‘slow-boat’.

Also have some other IPS screens here to re-try with the latest firmware for other projects where backlight-wash won’t be an issue.

I may get back to you regarding sniffing this screen if I can’t work it out with Google.

Thanks for getting a single touch working with this OLED, that is definitely a big help with other ideas.
 
Posted: 10:02am
06 Jun 2026
Copy link to clipboard
homa
Guru


WhiteWizzard,

what sort of touch controller is it? You might even find a detailed explanation of it, just like the one provided here. If only all companies would provide information like this   There's USB as well as I2C explained:

https://www.interelectronix.com/sis95xx-series-touch-data-format.html

Matthias
Edited 2026-06-06 20:04 by homa
 
Posted: 10:11am
06 Jun 2026
Copy link to clipboard
fred777
Regular Member

Relating to Memory sharing

  matherp said  It should work but I haven't tested recently. Are both RP2350s running at the same cpu speed?.

Yes, but since then
I was able to get Memory sharing running with the experimental
MMBasic RP2040 vga version from back when
Memory sharing was first announced.
But I’m not having any luck with the current
RC version at all. Tried it on RP2040 and RP2350A.
 
Posted: 02:02pm
06 Jun 2026
Copy link to clipboard
matherp
Guru

Definitely a bug. Working on it.
 
Posted: 03:58pm
06 Jun 2026
Copy link to clipboard
matherp
Guru

V6.03.00RC17
PicoMiteRP2040V6.03.00RC17.zip
PicoMiteRP2350V6.03.00RC17.zip


Fixes bug in MEMORY SHARE and improves detection of incorrect wiring
Fixes bug in PORT command when using pins > GP32 on RP2350B processors
Adds support for additional TLS crypto methods
Edited 2026-06-07 05:01 by matherp
 
Posted: 08:49pm
07 Jun 2026
Copy link to clipboard
terekgabor
Senior Member

Hello Peter!

I just playing with longstrings and found an interesting behavior.
If I have a longstring for example lg() its length is 500 character.
If I write LGETSTR$(lg(),500,1) I get the last character of the long string.
If I write LGETSTR$(lg(),501,1) I get an empty string. Seems normal, because no more character in the longstring.
Then I write LGETSTR$(lg(),502,1) or more then 502 the system feezes. Number of character can be not only 1, doesn’t matter how. Maybe in these cases the string has to be an empty string again, instead of freeze.

G@bor
 
Posted: 09:05pm
07 Jun 2026
Copy link to clipboard
JanVolk
Guru

Hello Peter,

After version V6.03.00RC11, the color code no longer works in EDIT for various functions. Tested with PicoMite MMBasic RP2040 V6.03.00RC11 and PicoMite MMBasic RP2350A V6.03.00RC11.

HEX$()
LCASE$()
LEFT$()
MAX()
MIN()
OCT$()
RIGHT$()
UCASE$()


Jan.
 
Posted: 08:25am
08 Jun 2026
Copy link to clipboard
fred777
Regular Member

  matherp said  Fixes bug in MEMORY SHARE and improves detection of incorrect wiring


Excellent, it works great now!  (Tested on 2x RP2350A HDMI)

Experimenting with the clockdiv parm is important. If set too low, the client can lock up completely and need a reset. But once the clockdiv is high enough its rock solid.

Yet one more cool function to add to the long list of picomite's capabilities :-)

Cheers!
 
Posted: 10:52am
10 Jun 2026
Copy link to clipboard
Volhout
Guru

PicoMite RP2040 MIN version 6.03.00 rc14

New observation (not really surprising).
A genuine Pico 2040 that worked with previously listed code running 2040-MIN-60300rc14, refused to work this morning after having been powered down for 2 weeks.

This leads me to believe that the issue with not working PIO FIFO is caused by non initialized RAM.

- new Pico's typically have the problem when running any MIN version (60202rc5/60300rc9/60300rc14 are tested)..
- new Pico's work correct with the associated normal 2040 versions.
- Nuking flash and installing the MIN version has NO impact (when they did not work before, they don't work after..and when they worked before, they work after nuking).
- same with installing a normal version, running the program, and reverting back to the MIN version. (when they did not work before, they don't work after..and when they worked before, they work after).
- Setting any OPTIONs does not impact the MIN problem with PIO FIFO.
- Manipulating PIO associated registers (the few ones that can be written to from MMBasic) has no impact.

This leads me to believe it is not flash related. There is something in RAM (or cache, or peripheral register) that causes this.

Regards,

Volhout
 
Posted: 01:39pm
10 Jun 2026
Copy link to clipboard
matherp
Guru

Just to be absolutely clear:
1. PIO on the normal PicoMite build works perfectly in all circumstances?
2. PIO on the PicoMiteMIN does not work on a virgin Pico?
3. Loading and running PIO on a normal PicoMite build "fixes" that Pico for subsequent PicoMiteMIN usage?
4. If 3 is true what happens if a "fixed" PicoMiteMIN is powered off and then re-powered?
 
Posted: 03:37pm
10 Jun 2026
Copy link to clipboard
Volhout
Guru

Hi Peter,

Pio works reliable on normal picomite.

When failing on MIN, converting to normal, running, converting back does NOT fix it.

Volhout
 
Posted: 03:37pm
10 Jun 2026
Copy link to clipboard
matherp
Guru

What does fix it on MIN? I think I may have found it - compiler bug associated with the fact min uses extra ram for increased optimisation
Edited 2026-06-11 01:38 by matherp
 
Posted: 03:41pm
10 Jun 2026
Copy link to clipboard
matherp
Guru

 
   Page 20 of 26    
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026