Menu
JAQForum Ver 26.09

Forum Index : Microcontroller and PC projects : PicoMite MMbasic V7.00.00 betas:  

   Page 2 of 3    
Posted: 11:53am
01 Oct 2026
Copy link to clipboard
hhtg1968
Senior Member

i wanted to explain that "do" and "loop" could not be between 2x : or in 1 line without :
 
Posted: 12:04pm
01 Oct 2026
Copy link to clipboard
Mixtel90
Guru


It's the joy of the almost invisible colon, isn't it? :)

'wait forever
do:loop
 
Posted: 02:10pm
01 Oct 2026
Copy link to clipboard
barewires
Newbie

web ntp 1
ntp address 185.57.191.230
got ntp response: 01/10/2026 15:06:36
Saved 1957 bytes
Print "PICO2W 10 RPOM free gift"
7.000002       WebMite RP2350A 10-01-2026      15:06:12
The £ sign does not work.
 
Posted: 02:12pm
01 Oct 2026
Copy link to clipboard
matherp
Guru

Of course not, it isn't an ascii character. Create one to match the font you are using and use gui bitmap to output it
 
Posted: 05:30pm
01 Oct 2026
Copy link to clipboard
terekgabor
Senior Member

Hello Peter!

New version V7.0.00b2 is working very well for me!

I have tested a small modification to WebMite version (tried with a Pimoroni Pico Plus 2 W [RP2350]), which makes the onboard CYW43 LED accessible from MMBasic when the heartbeat is disabled.

I made a new command LED:
The new commands are:
LED ON
LED OFF

The implementation uses:

cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, state);

so it controls the same CYW43 LED that the code already uses for the heartbeat.

To prevent conflicts with the heartbeat, the LED command checks:

if (!Option.NoHeartbeat)
   error("Heartbeat is enabled");

The existing WebHeartbeat() code I didn’t modify.

The changes are:

Commands.h

Add the LED command to the WebMite command table:

#ifdef PICOMITEWEB
   { "LED", T_CMD, 0, cmd_led },
#endif

and declare:

#ifdef PICOMITEWEB
void cmd_led(void);
#endif

net/WiFi.c

Added:

void cmd_led(void) {
   char *p;
   if (!Option.NoHeartbeat)
       error("Heartbeat is enabled");
   p = checkstring(cmdline, "ON");
   if (p) {
       cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
       return;
   }
   p = checkstring(cmdline, "OFF");
   if (p) {
       cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
       return;
   }
   error("Syntax");
}

I tested it on my PicoCalc with Webmite fw, working good. I don’t know if I did 100% the right way, but works.

Maybe you can implement this or similar command to the next versions, if somebody wants to switch this LED like a normal output (of course not GP) as we can do with the non-web versions.

G@bor
 
Posted: 07:24pm
01 Oct 2026
Copy link to clipboard
Volhout
Guru


Peter,

Thank you for 5 kbyte more heap in 7.00.00b3 in the 2040MIN version.
Testing goes well so far. With b3 (up to now) all programs run.

Volhout
 
Posted: 09:44pm
01 Oct 2026
Copy link to clipboard
matherp
Guru

V7.00.00b3 is now available at https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V7.0.00b3

This is another huge internal change. Since the implementation of hashed variable lookup a big chunk of ram has been allocated to variables that may or may not be needed. V70.00.00b3 completely re-engineers that so that the has table is just a table of pointers and that storage for the actual variables is only used when needed

What has changed. Until now MMBasic set aside a fixed block of memory for
variables when the board started: room for every variable a program could
ever have, whether it used five or five hundred. That block was 27 KB on the
RP2040 builds and up to 49 KB on the RP2350, and nothing else could use it.
In beta 3 a variable takes its memory from the same pool as strings and
arrays (the heap), and only when the program creates it. The memory comes
in small groups of 32 variables, and the block that used to be reserved has
been added to the heap.

What you gain.

   More memory on every board. The heap is 20 to 24 KB larger on the
   RP2040 builds and 40 to 56 KB larger on the RP2350: for example 120 KB
   instead of 100 KB on the RP2040 PicoMiteVGA, and 344 KB instead of 300 KB on
   the RP2350 PicoMite. That is room for bigger arrays, more strings, sound
   buffers and framebuffers. Memory and flash layout lists every build.
   A program pays only for the variables it has. A program with 40
   variables uses memory for about 40, not for 500 empty places. MEMORY
   shows the variables' share as it grows.
   Faster programs that were short of memory. V7 is quicker because it
   remembers where every name's variable is (symbols), and those tables need
   memory. In beta 2 a program that was already short of memory had to switch
   them off with OPTION SYMBOLS OFF. Now most such programs have room for
   them. The logic analyser that prompted OPTION SYMBOLS OFF now runs with
   its symbols on an RP2040 PicoMiteVGA, and its main loop takes 81 ms
   instead of 110 ms: more than a third faster.
   Nothing to change in your programs. The number of variables you can
   have is the same as before, OPTION LOCAL VARIABLES works as it did, and
   local variables only use memory while a SUB or FUNCTION is running them.
   The PicoMiteHDMIWEB also takes programs of up to 152 KB instead of 144 KB.
 
Posted: 11:21pm
01 Oct 2026
Copy link to clipboard
toml_12953
Guru

  matherp said  V7.00.00b3 is now available at https://github.com/UKTailwind/PicoMite/releases/tag/PicoMite-V7.0.00b3

This is another huge internal change. Since the implementation of hashed variable lookup a big chunk of ram has been allocated to variables that may or may not be needed. V70.00.00b3 completely re-engineers that so that the has table is just a table of pointers and that storage for the actual variables is only used when needed



I have a PicoCalc with a Pimoroni Pico 2. My library stored is on B: It worked fine in beta 2. When I load it into beta 3 and try to use
LIBRARY SAVE, I get

Error: Not enough memory for 348224 bytes


Footnote added 2026-10-02 09:41 by toml_12953
I turned on PSRAM and it worked OK. For the record this is my library:

OPTION console none
ON ERROR SKIP 2
CONST TRUE = -1
CONST FALSE = 0
SETPIN GP4,GP5,COM2
OPTION console screen
SUB MM.STARTUP
OPTION console none
DRIVE "B:"
OPTION console screen
END SUB
SUB MM.END
PRINT
PRINT
PRINT "END PROGRAM"
PRINT
OPTION console screen
END SUB
SUB mm.prompt
SETPIN GP4,GP5,COM2
PRINT ">";
END SUB
SUB LLIST(fname$)
FONT 8
OPTION console serial
IF fname$="" THEN
LIST all
ELSE
LIST all fname$
END IF
PRINT :PRINT :PRINT :PRINT :PRINT
PRINT :PRINT
OPTION console screen
FONT 1
END SUB
SUB BEEP()
PLAY tone 1000,1000:PAUSE 175
PLAY stop
END SUB
FUNCTION DET(n())
DET=MATH(m_determinant n())
END FUNCTION
FUNCTION INVR(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH m_inverse n(),INVR()
END FUNCTION
FUNCTION TRN(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH m_transpose n(),TRN()
END FUNCTION
FUNCTION CON(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH SET 1,CON()
END FUNCTION
FUNCTION ZER(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH SET 0,ZER()
END FUNCTION
FUNCTION CPY(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH scale n(),1,CPY()
END FUNCTION
SUB MAT_PRINT(n()) AS float(BOUND(n(),1),BOUND(n(),2))
MATH m_print n()
END SUB
SUB MAT_READ(n()) AS float(BOUND(n(),1),BOUND(n(),2))
LOCAL col,row
FOR col=BOUND(n(),0) TO BOUND(n(),2)
FOR row=BOUND(n(),0) TO BOUND(n(),1)
READ n(row,col)
NEXT row
NEXT col
END SUB
FUNCTION IDN(n()) AS float(BOUND(n(),1),BOUND(n(),2))
LOCAL col,row
LOCAL temp(BOUND(n(),1),BOUND(n(),2))
FOR col=BOUND(n(),0) TO BOUND(n(),1)
FOR row=BOUND(n(),0) TO BOUND(n(),2)
IF row=col THEN
temp(col,row)=1
ELSE
temp(row,col)=0
END IF
NEXT row
NEXT col
IDN()=temp()
END FUNCTION
 
Posted: 01:15am
02 Oct 2026
Copy link to clipboard
JanVolk
Guru

I can no longer save my `help.txt` file after transferring it using MM Edit 4. (It used to work fine before.)
Placing a `'` before `TYPE` in the error message doesn't help; doing the same for `SUB`, or placing a `'` after...

> save "help.txt
PC=>
>

PicoMite MMBasic RP2040 V7.0.00b2
Copyright 2011-2026 Geoff Graham
Copyright 2016-2026 Peter Mather

[1445] ~UPDATE
Error: Invalid member definition in TYPE
> memory
Program:
 72K (59%) Program (2052 lines)
 48K (41%) Free

Saved Variables:
 16K (100%) Free

RAM:
  0K ( 0%) 0 Variables
 37K (23%) General
118K (77%) Free
> save "help.txt
PC=[1445] ~UPDATE
Error: Invalid member definition in TYPE

> option list
PicoMite MMBasic RP2040 V7.0.00b2
OPTION SYSTEM SPI GP2,GP3,GP0
OPTION SYSTEM I2C GP12,GP13
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION HEARTBEAT OFF
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
OPTION DISPLAY 50, 100
OPTION LCDPANEL ST7789_135, RLANDSCAPE,GP1,GP22,GP5,GP4
OPTION SDCARD GP17, GP18, GP19, GP20
OPTION F1 help
OPTION F6 list commands
OPTION F7 list functions
OPTION F8 list pins
OPTION F9 fm
OPTION PLATFORM LILYGO T-PicoC3 1.14" 240x135


Jan.
 
Posted: 06:58am
02 Oct 2026
Copy link to clipboard
matherp
Guru

transfer it direct to disk - xmodem r "help.txt"
The problem with your approach is that the firmware is tokenising a text file. That it worked before is luck.

  Quote  I have a PicoCalc with a Pimoroni Pico 2. My library stored is on B: It worked fine in beta 2. When I load it into beta 3 and try to use
LIBRARY SAVE, I get

Will investigate
 
Posted: 07:05am
02 Oct 2026
Copy link to clipboard
Volhout
Guru


Peter,

2040VGA for b3 is fine. Thanks for saving the LA.

Volhout
 
Posted: 07:30am
02 Oct 2026
Copy link to clipboard
matherp
Guru

I have one more big internal change coming in b4. Should speed up rp2040 subroutine/function and label handling and may save a bit more memory. Will save a lot of memory on the rp2350
 
Posted: 07:43am
02 Oct 2026
Copy link to clipboard
Bryan1
Guru


Peter one question mate as I have had my Flip 6 BT speaker working in micro-python on the pico 3 can you include BT classic in the firmware as my attempt with claude has just resulted in me walking off due to its incompetence
Edited 2026-10-02 17:45 by Bryan1
 
Posted: 08:10am
02 Oct 2026
Copy link to clipboard
Volhout
Guru


  matherp said  I have one more big internal change coming in b4. Should speed up rp2040 subroutine/function and label handling and may save a bit more memory. Will save a lot of memory on the rp2350


I am curious, but in b3 the LA already has 17k free. So I can finally implement the SPI decoding, and maybe UART. Previously it was so close to heap limit that every try to add something ended early...

Volhout

P.S. I even found a bug that has been in there since the 126MHz CPU speed times. 1kSps is impossible at 252MHz (clock divider limit). I never used it, and I think no-one ever has. Takes 4 seconds to fill the RING buffer.
Edited 2026-10-02 18:13 by Volhout
 
Posted: 08:39am
02 Oct 2026
Copy link to clipboard
Bryan1
Guru


Well Peter it took claude about 10 minutes to get a playlist going on the flip 6 with board 1 off the command line and now got a play list playing now that is on my python build.

So if we could get this in MMBasic I am sure many members will be happy to take a BT speaker to use in their games.

Regards Bryan
 
Posted: 09:07am
02 Oct 2026
Copy link to clipboard
ville56
Guru

Peter,

issue with Webmite ... on a freshly flashed Pico:

option list
WebMite MMBasic RP2350B Edition V7.0.00b3
OPTION FLASH SIZE 16777216
OPTION COLOURCODE ON
OPTION PICO OFF
OPTION CPUSPEED (KHz) 200000
> edit "x.bas"
Error : Not enough memory for 295936 bytes
>
- (x.bas is not existant, but this does not matter)
- interstingly, in FM the E(dit) command opens the file in the editor but once the content is changed it cannot be saved anymore, failing with
Error : Not enough memory for 256 bytes
>

P.S.: enabling PSRAM does not cure the situation.

NOTE: the edited file above was on drive B:, seems to work ond drive A: though via FM and edit ... strange.

Gerald
Edited 2026-10-02 19:11 by ville56
 
Posted: 09:11am
02 Oct 2026
Copy link to clipboard
matherp
Guru

Thanks - trivial bug will be fixed in b4
 
Posted: 09:17am
02 Oct 2026
Copy link to clipboard
ville56
Guru

Sorry, but another annoyance...

After copying 1 directory containing 10 files from B: to A: in FM I get:

Copied directory ET1 (20 files, 2 dirs)

Gerald
 
Posted: 10:05am
02 Oct 2026
Copy link to clipboard
matherp
Guru

Can't replicate the directory copy. Are you sure there isn't another nested directory. That would do as you report
 
Posted: 03:33pm
02 Oct 2026
Copy link to clipboard
ville56
Guru

Bingo. Overlooked that subdirectory. Sorry about that.

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