Menu
JAQForum Ver 19.10.27

Forum Index : Microcontroller and PC projects : PicoMite V6.02.01 release candidates

   Page 1 of 8    
Posted: 09:46am
04 Mar 2026
Copy link to clipboard
matherp
Guru

V6.02.01RC0

PicoMiteV6.02.01RC0.zip

Changes from V6.02.00

All versions
File names on the A: drive are now no longer case sensitive and behave like the B: drive
Minor internal bug fixes and code restructuring
Fixes bug in GPS parsing
Fixes bug where Text is setting tiles incorrectly when the output exceeds the screen width
Fixes bug in the editor when the marked text exceeds the buffer size
Editor now correctly colour codes string literals and comments split across continuation lines
Blank lines are now allowed in TYPE declarations
Corrects behaviour when the A: drive is formatted when the current directory is not at root level
F10 in the editor when in mark mode is no longer limited by the buffer size. This allows the user to mark any amount of text and save it to a file.
The editor now correctly restores non-default foreground and background colours on exit.

New command ONESHOT
  Quote  ONESHOT triggerPin, sense, outputPin, prePulseDelay, pulseWidth [, quiescentPeriod]
or
ONESHOT DISABLE
Will configure a background one-shot pulse generator.
When the selected trigger edge is detected on 'triggerPin', MMBasic starts a delay of 'prePulseDelay' microseconds, then toggles 'outputPin'.  After 'pulseWidth' microseconds it toggles 'outputPin' again.  This creates a pulse in the opposite sense to the output pin's idle state.
An optional 'quiescentPeriod' (microseconds) can be supplied.  If present, ONESHOT will ignore retriggers for that period after the pulse completes.
'sense' selects the trigger edge transition and can be POSITIVE (also RISING) or NEGATIVE (also FALLING).  Triggering is edge based (transition), not level-state based.
Timing is interrupt driven and non-blocking.  Delay and pulse width are specified in microseconds.
'prePulseDelay' may be set to 0, in which case the pulse starts immediately on the selected trigger edge.
'pulseWidth' must be a positive value (>0).
Notes:
'outputPin' must be OFF or DOUT when ONESHOT is configured.
If 'outputPin' is OFF it will be configured as DOUT and driven low before ONESHOT is armed.
If 'outputPin' is already DOUT, its current state (high or low) is preserved and the generated pulse is the opposite polarity.
Only one ONESHOT configuration can be active at any one time.
Additional triggers received while ONESHOT is in the pre-pulse delay period, while the pulse is active, or during any configured quiescent period are ignored.
ONESHOT DISABLE stops background operation, cancels pending timing events and restores the output pin to its idle state if a pulse was in progress.
entering an edit, starting a program etc. also disables and clears ONESHOT background activity.
The trigger and output pins must be different pins.
Example:
SETPIN GP2, DIN
SETPIN GP3, DOUT
ONESHOT GP2, POSITIVE, GP3, 50, 200
This waits for a rising edge on GP2, delays 50µs, toggles GP3, then toggles GP3 again 200µs later.


You can now use string literals and string variables for GP pin nos (except PORT command and function). Existing usage is not affected (I hope) e.g.
const outpin$="GP2"
setpin outpin$,dout
pin(outpin$)=1


SPRITE(B function now properly supports all orientations of the sprite

mm.info(PWM SLICE gpno) This returns the PWM slice for a given pin allowing:
setpin gp2,pwm
pwm mm.info(pwm slice gp2),1000,50


Adds new commands
SAVE DATA fname$, address, nbytes
LOAD DATA fname$, address

Load and save memory to file as binary data. NB: there is no protection on the address so use with care. Tested saving and loading from the screen in the VGARP2350 version
save data "test.dat",mm.info(writebuff),38400
load data "test.dat",mm.info(writebuff)


All RP2350 versions
Fixes bug in PORT command and function when pins > GP31 are used
Tweaks to flash and param timings to improve reliability.
Reduced memory footprint of using png files - still big but not as big
SPRITE LOADPNG is modified as follows. Previously pixels under the cutoff threshold were transparent BUT black pixels were also transparent (assuming the default transparent = black). Now you can set the transparent colour to a negative value (-1 to -15) this causes black pixels to be replaced with the positive value of the negative value. So:
SPRITE LOADPNG 1,"mypng.png",-2 will replace black pixels with myrtle avoiding holes in the sprite.
load png and sprite load png now process mode 3 png files (colour map included in the file)

New Command PLAY SAMPLE
PLAY_SAMPLE_User_Manual.pdf

the LOCATION command can now optionally return the sidereal time
GPS_Astro_Reference.pdf

Adds FRAME command
FRAME_User_Manual.pdf

RP2350 only and not WebMiteRP2350
Max CPU speed for PicoMite(USB)RP2350 now 420MHz
Fixes bug in BLIT FRAMEBUFFER for buffered LCD drivers
Fixes bug in scrolling for buffered LCD drivers

Adds RAY command and function
Raycaster_User_Manual.pdf


PicoMiteRP2040 and PicoMiteRP2040USB
reduces firmware image size by 16Kbyte with concommitant increase in size of A: drive.

All PicoMite and WebMite versions
N5110 driver now correctly uses INVERT in the option setting

WebMite RP2350 version
The WebMiteR2350 should now support the Pimoroni Pico Plus 2 W. This board uses the RP2350B and includes PSRAM.

PicoCalc
The standard PicoMite, PicoMiteRP2350, WebMite and WebMiteRP2350 versions should all support the PicoCalc. To use this nuke the current firmware on your PicoCalc and install the relevant version from the download. The code will automatically detect it is running on a PicoCalc and configure itself. You must be running a version of the bios that supports returning the battery level. I've been loaned a PicoCalc and tested with BIOS 1.5 and 1.6.
Edited 2026-03-04 22:22 by matherp
 
Posted: 01:11pm
04 Mar 2026
Copy link to clipboard
Bleep
Guru

Hi Peter,
Very quick sanity checks on both a HDMIUSBI2S and a ST7796S LCD-USB, both behaving very well everything seems to be as expected. Running the LCD-USB @ 420Mhz, no problems. :-)
Thanks. Kevin.
 
Posted: 02:21pm
04 Mar 2026
Copy link to clipboard
matherp
Guru

RC0 disn't last long

V6.02.01RC1
PicoMiteV6.02.01RC1.zip

The Pimoroni Pico Plus 2 W is now tested and RC1 contains a trivial change to enable the heartbeat.

New subcommand by request (All versions):
  Quote  ## BLIT RESIZE

Scales a rectangular source region into a destination rectangle using fast nearest-neighbour sampling.

### Syntax

```basic
BLIT RESIZE src, dst, sx, sy, sw, sh, dx, dy, dw, dh
```

### Parameters

| Parameter | Description |
| :--- | :--- |
| `src` | Source buffer selector. Supported: `L`, `F`, `N` (VGA/HDMI builds), `2` (second framebuffer, VGA/HDMI builds), `T` (top layer, RP2350 VGA/HDMI builds). |
| `dst` | Destination buffer selector. Supported: `L`, `F`, `N` (VGA/HDMI builds), `2` (second framebuffer, VGA/HDMI builds), `T` (top layer, RP2350 VGA/HDMI builds). |
| `sx`, `sy` | Top-left source coordinate. |
| `sw`, `sh` | Source width and height (must be > 0). |
| `dx`, `dy` | Top-left destination coordinate. |
| `dw`, `dh` | Destination width and height (must be > 0). |

### Behaviour

- Uses nearest-neighbour scaling (fast pixel replication/subsampling).
- Source rectangle validation is strict:
- `sx >= 0`, `sy >= 0`
- `sx + sw <= HRes`
- `sy + sh <= VRes`
- Otherwise error `StandardError(21)`.
- Destination rectangle is clipped to the display bounds (`0..HRes-1`, `0..VRes-1`).
- If clipping leaves no visible destination area, the command returns without drawing.
- If source and destination overlap in the same buffer, the command automatically uses a temporary copy to preserve correctness.
- If source and destination do not overlap (or are different buffers), pixels are read directly without a full source copy.

### RGB121 / Mode Rules

- `BLIT RESIZE` operates on RGB121-packed buffers (4bpp, 2 pixels/byte).
- If either `src` or `dst` is `N` (physical display buffer), display mode must be RGB121 (VGA and HDMI MODE 2 and 3 only)`.
- For non-`N` buffers, the command assumes the selected buffers are RGB121-compatible.

### Buffer Availability

- If the selected source buffer is not created: `"Source buffer not created"`.
- If the selected destination buffer is not created: `"Destination buffer not created"`.

### Memory Use

- Non-overlap path: no full-source temporary buffer is allocated.
- Overlap path: temporary RGB121 source copy is allocated as:
- `ceil(sw / 2) * sh` bytes
- equivalent implementation form: `((sw + 1) >> 1) * sh` bytes

### Example

```basic
' Scale a 64x64 region from framebuffer F to layer L as 128x96
BLIT RESIZE F, L, 32, 16, 64, 64, 100, 40, 128, 96
```

Edited 2026-03-05 00:23 by matherp
 
Posted: 02:26pm
04 Mar 2026
Copy link to clipboard
Mixtel90
Guru


I made a New Year's resolution to print out the PicoMite manual again. I keep putting it off....

:)
 
Posted: 02:37pm
04 Mar 2026
Copy link to clipboard
terekgabor
Newbie

Hello!

Where to find BIOS 1.6? Is there final version from it?

Thanks a lot!
 
Posted: 02:59pm
04 Mar 2026
Copy link to clipboard
Frank N. Furter
Guru

@Peter:

Could it be that there is something wrong with the new LOCATION command? I finally got around to testing it and keep getting the error message:

"Error : Invalid Syntax"

This also happens when I type in your exact example:

LOCATION "25/12/2025 22:30:00", -33.86, 151.21, lst

Unfortunately, version V6.02.01b behaves the same way...

(Tested with: PicoMiteRP2350V6.02.01RC1.uf2)


Frank
 
Posted: 03:51pm
04 Mar 2026
Copy link to clipboard
matherp
Guru

Typo in the LOCATION code fixed also optionally transparent colour added to BLIT RESIZE. No version change

PicoMiteV6.02.01RC1.zip

BLIT RESIZE src, dst, sx, sy, sw, sh, dx, dy, dw, dh [, transparent]

`transparent` Optional RGB121 pixel value to skip while writing destination. Range `-1` to `15`, default `-1` (disabled). |
Edited 2026-03-05 02:55 by matherp
 
Posted: 06:30pm
04 Mar 2026
Copy link to clipboard
Frank N. Furter
Guru

@Peter:

Thank you very much, it works now!


@terekgabor:

You're probably looking for this file here?

http://raspi1.mypi.co/download/


Frank
 
Posted: 06:31pm
04 Mar 2026
Copy link to clipboard
terekgabor
Newbie

@Frank

Yes thanks!
 
Posted: 09:44am
05 Mar 2026
Copy link to clipboard
matherp
Guru

Note to all: RC1 will become the release unless any more bugs are reported.
 
Posted: 10:04am
05 Mar 2026
Copy link to clipboard
Volhout
Guru

  matherp said  Note to all: RC1 will become the release unless any more bugs are reported.


Historically during RC many new commands where introduced. This would be the shortest RC ever for pico. Look at the number of posts... including this only 10!! How is the telescope project progressing ? Do you have photo's to share already ?

Volhout
Edited 2026-03-05 20:12 by Volhout
 
Posted: 10:18am
05 Mar 2026
Copy link to clipboard
matherp
Guru

  Quote   How is the telescope project progressing ? Do you have photo's to share already ?

Currently busy 3d printing the mirror mounts. I hope that will be complete today and then I'll post some pics. I've made things more difficult by making a nonogonal wooden main tube. The next challenge is to design a rotating mount for the tube to allow the eyepiece to be positioned. The its on to the actual telescope mount.
 
Posted: 10:34am
05 Mar 2026
Copy link to clipboard
Martin H.
Guru


I don't know if it's just me and Olimex...
I don't get an echo back in Terraterm with the firmware PicoMiteHDMIUSBV6.02.01RC1.
So in Terraterm the “console” remains black while the entries appear on the screen. Inputs, xmodem etc work.
Is this a bug or a feature?
 
Posted: 10:40am
05 Mar 2026
Copy link to clipboard
matherp
Guru

  Quote  I don't know if it's just me and Olime

I think it is just you. I've just done a clear flash and install of the firmware to confirm and it works perfectly. Sounds like a broken wire or similar
 
Posted: 11:23am
05 Mar 2026
Copy link to clipboard
Martin H.
Guru


  matherp said  
  Quote  I don't know if it's just me and Olime

I think it is just you. I've just done a clear flash and install of the firmware to confirm and it works perfectly. Sounds like a broken wire or similar

You're right,  the serial connection on the Olimex works via the header connectors, one of them had contact problems, thank you
BTW: BLIT RESIZE works perfect
Edited 2026-03-05 23:07 by Martin H.
 
Posted: 01:51pm
05 Mar 2026
Copy link to clipboard
mozzie
Senior Member

G'day Peter,
Hopefully this is the correct place to post this.
Have finally had a chance to do some initial testing of the stepper commands, looking good so far.

The M3/M5 command may need attention, M3 only outputs until the next GCODE command executes.

> option list
PicoMite MMBasic RP2350A V6.02.00
OPTION SYSTEM SPI GP18,GP19,GP16
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED (KHz) 200000
OPTION LCDPANEL ILI9488, RLANDSCAPE,GP14,GP13,GP12
>


Test program:

' prog to test stepper functionality

Option default integer
Print "initialising"

SetTick 200,Show_GP4
Exdist = 100
Stepper init
Stepper spindle gp4
Stepper axis x,gp0,gp1
Stepper axis y,gp2,gp3

Print "stepper home"
Stepper position home

Stepper status
Pause 1000
Stepper run
Stepper gc m3
Pause 2000 ' Spindle active during this delay only
Stepper GCODE G1,X,Exdist,Y,120,F,1000
Stepper gc m5

Do:Loop Until Inkey$<>""
Stepper status
Stepper close

End

Sub Show_GP4
 Text 0,25,Str$(Pin(gp4)),,1,2
End Sub


Is there currently any way to determine the following?

A register or flag to indicate the stepper system is executing GCode? (The M3/M5 make this possible but an internal register would be preffered)
A set of registers to indicate current position for a display?

Would it also be possible to include G4 (dwell), this is handy to allow spindles to ramp up etc. especially if sending a whole GCode file.

Many thanks for this and all the other new additions to the PicoMite, due to other commitments I've only now been able to start testing this and looking at all the other new functionality we have to play with.
A LOT of catching up to do  

Regards,
Lyle.
 
Posted: 02:11pm
05 Mar 2026
Copy link to clipboard
matherp
Guru

The issue is that M% executes immediately rather than being queued. If you waited for G1 to complete the problem should go away. I will fix the problem though.
 
Posted: 02:19pm
05 Mar 2026
Copy link to clipboard
mozzie
Senior Member

Hi Peter,
Thanks for looking into it.

As it stands, is there a way to determine the system is in motion, this was the reason for the follow up questions:
  Quote  
Is there currently any way to determine the following?

A register or flag to indicate the stepper system is executing GCode? (The M3/M5 make this possible but an internal register would be preffered)
A set of registers to indicate current position for a display?

Would it also be possible to include G4 (dwell), this is handy to allow spindles to ramp up etc. especially if sending a whole GCode file.


Or have I missed something as usual  

Regards,
Lyle.
 
Posted: 04:46pm
05 Mar 2026
Copy link to clipboard
terekgabor
Newbie

Is it right the BLIT RESIZE doesn’t work on LCD? (Picocalc for example)
Regards
G@bor
 
Posted: 04:51pm
05 Mar 2026
Copy link to clipboard
matherp
Guru

Not on the physical screen, but it works on a framebuffer that can then be copied to the physical screen
 
   Page 1 of 8    
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2026