Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 19:31 05 Mar 2026 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 : PicoMite V6.02.01 release candidates

Author Message
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11014
Posted: 09:46am 04 Mar 2026
Copy link to clipboard 
Print this post

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

Joined: 09/01/2022
Location: United Kingdom
Posts: 752
Posted: 01:11pm 04 Mar 2026
Copy link to clipboard 
Print this post

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.
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11014
Posted: 02:21pm 04 Mar 2026
Copy link to clipboard 
Print this post

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
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 8637
Posted: 02:26pm 04 Mar 2026
Copy link to clipboard 
Print this post

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

:)
Mick

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

Joined: 02/01/2026
Location: Hungary
Posts: 12
Posted: 02:37pm 04 Mar 2026
Copy link to clipboard 
Print this post

Hello!

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

Thanks a lot!
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 1056
Posted: 02:59pm 04 Mar 2026
Copy link to clipboard 
Print this post

@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
 
matherp
Guru

Joined: 11/12/2012
Location: United Kingdom
Posts: 11014
Posted: 03:51pm 04 Mar 2026
Copy link to clipboard 
Print this post

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
 
Frank N. Furter
Guru

Joined: 28/05/2012
Location: Germany
Posts: 1056
Posted: 06:30pm 04 Mar 2026
Copy link to clipboard 
Print this post

@Peter:

Thank you very much, it works now!


@terekgabor:

You're probably looking for this file here?

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


Frank
 
terekgabor
Newbie

Joined: 02/01/2026
Location: Hungary
Posts: 12
Posted: 06:31pm 04 Mar 2026
Copy link to clipboard 
Print this post

@Frank

Yes thanks!
 
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 2026