Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 15:06 23 Apr 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 : Presenting NAVIGATOR for PicomiteHDMI

Author Message
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 06:31am 14 Apr 2025
Copy link to clipboard 
Print this post

Hello, comunity.
I started slowly convert my navigator to game, so I feel I must lead my 'child' to public while it is not too late (before it will be more game and not util anymore)

It is nothing wrong about typing in cmd line 'save', 'load', and 'chdir' everytime but I am lazy about it. And thus, line by line, Navigator has born. Idea I had in the very begining when i started to bumble about need of some FM manager like CMM2 has.

This is beta beta beta release.
https://github.com/ElectriCatLt/MMBasic/tree/main/navigator

# Navigator for PicoMiteHDMI - README

## Overview
Navigator is a file navigation and utility tool designed for file operations on the PicoMiteHDMI platform.
It was originally intended NOT AS file manager. It provides a interface for quick navigation and direct interaction with files:
loading and saving contents (EDIT`ed using the built-in editor and saved F1/F2), viewing text files, copying/ repetitve pasting, renaming files etc.
It works mostly  with the filesystem without loading everything into RAM.

---

## Features
- Simple, fast interface for quick navigation
- Loading and saving inbuilt EDITOR`s contents  to drive A: or B: as file
- Multiple file selection and multi-paste functionality
- Basic text file viewer for quick view at potentially large files
- Directory browsing on-the-fly (no full preloading)
- File renaming (with and without extension)
- Directory creation
- File delete (single file only, for safety)
- Keyboard shortcut-based interface
- Optional visual environment (e.g., space/starfield)

---

## Current Limitations
- Multiple file delete/move is **not** implemented due to safety reasons
- No HEX viewer/editor. Deactivated (planned for future release)
- Requires USB keyboard and HDMI/VGA (tested on USB/HDMI/2350 systems)
- Not tested on PS/2 systems yet
- Uses library space, which can lead to variable reinitialization issues (see Workarounds)

---

## Usage
### Setup
1. Load the program.
2. Use `LIBRARY SAVE` to store it.
3. Assign it to a function key:
OPTION F5 "clear"+chr$(58)+"navigator"+chr$(13)

F5 or any other free Fn key

> ⚠️ **Do not save Navigator into a FLASH SLOT** — saving contents from the inbuilt EDITOR will not work correctly.

---

## Keyboard Commands
### Navigation:
- **Arrow Keys** – Move selection
- **Home/End** – Jump to top/bottom of current page
- **PgUp/PgDn** – Jump ±5 files in list
- **Ctrl+Home** – Jump to top of directory
- **Ctrl+Shift+Home** – Jump to root of active drive
- **TAB** – Swap drives A: <> B:
- **SPACE** – Halt scrolling of long filenames

### File Operations:
- **ENTER** – Perform file actions (load to editor, rename, minimal info, backup etc.) There is short inbuilt help (inside of submenu) for each operation
- **F1** – Quick Save (save inbuilt EDITOR`s contents directly to file)
- **F2** – Name & Save (prompt for filename before saving editor content)
- **F3** – View text file (lines >255 characters will cause error and stop prog. for example BIN files. Will be added BIN reading with HEX file viewer)
- **INS** – Select/deselect multiple files
- **F5** – Copy/Paste: first press copies selected files, next presses paste them repeatedly until another operation or INS is triggered
- **F6** – Full Rename (including file extension)
- **F7** – Create new directory
- **F8** – Delete file (single file only)

### Other:
- **PrntScr** – Save screen image to active directory
- **Long ESC** – Exit Navigator
- **Short ESC** – Exit submenus

---

## Workarounds for Variable Initialization Errors
Navigator uses library space and may cause "variable already declared" errors. To avoid this:

- Exit and re-enter the editor using **F4**, or
- Use the `CLEAR` command before launching Navigator, or
- Use a custom function key that clears memory first:
OPTION F5 "clear"+chr$(58)+"navigator"+chr$(13)

F5 or any other free Fn key
---

## Compatibility
- Tested on: USB/HDMI/2350 systems
- Resolution: Works with `OPTION RESOLUTION 640` (default) and `RESOLUTION 800`
- Fonts: Designed for 6x8 and 8x12 fonts

---

## Final Notes
Navigator was created to suit the author's personal needs. If you enjoy using it — great! If not — no worries.

> If you *do* enjoy it, please consider helping stray cats. 🐾

---

(c) 2025 - Released for the PicoMiteVGA community with curiosity and love.

https://github.com/ElectriCatLt/MMBasic/tree/main/navigator
My MMBasic 'sand box'
 
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 06:49am 14 Apr 2025
Copy link to clipboard 
Print this post


My MMBasic 'sand box'
 
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 06:59am 14 Apr 2025
Copy link to clipboard 
Print this post

Ohhh.. forgot to mention. This thing requires latest beta becouse Bit() functionality was used
My MMBasic 'sand box'
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4809
Posted: 07:12am 14 Apr 2025
Copy link to clipboard 
Print this post

Hi electricat,

I was excited to test this, but when installing it I realized this will not work on a 2040 system. The RP2040 does not support mode 3. And (looking at the graphics in the last photo you shared) I think it will require significant re-write to make this work with tiles (MODE 1).

It is a pitty, but I hope others (especially Mick) will be delighted to see a navigator that is in a library, and does not use up all heap.

Keep up the good work, I am curious as you are about how it works for others.

Volhout
P.S. All our cats where stray cats once...
Edited 2025-04-14 17:13 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 7433
Posted: 07:34am 14 Apr 2025
Copy link to clipboard 
Print this post

Yes, I approve. :)

Be kind to flash slots!
Mick

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

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 08:22am 14 Apr 2025
Copy link to clipboard 
Print this post

  Volhout said  Hi electricat,
It is a pitty, but I hope others (especially Mick) will be delighted to see a navigator that is in a library, and does not use up all heap.

FREE heap while in use in MODE3 is ~150-180 kb! I 'monitored heap live' (kinda) using interrupts. Tried to balance tasks on fly as much as possible without touching memory too agressive. It could be done better as I see now.

If there will be any interest it`s matter of weekend to adapt util for 2040/SP2/VGA.
('family tasks' interrupts must be disabled at the time )
I designed initially interface do not use colors too much, but symbolic instead.
I need also re-think on some variable control. At some point I lost control on them.
using of LOCAL seems out of balance too.

I have some waweshare RP2040 spare with 16Mb flash .. wanna play and see how it could be used  

Also it can be really more library space friendly. Maybe must make 'light' version, and clean out all toys I added while enjoyng and kinda playing in process  
  Quote  
Keep up the good work, I am curious as you are about how it works for others.

Thank you!

  Quote  
P.S. All our cats where stray cats once...


Ginger one is always snorring besides me.
Classic tabby one, comes for grooming (and food) at ~13.00. He`s talking boy
Both saved from street, stright from death hands.

  Mick said  Yes, I approve. :) Be kind to flash slots!


Sure    The day @Peter asked how many of them we would want left I voted for 5 (i think I recall correctly) while A: is really nice move, flash has it`s own advantages and beauties. It would be excelent if we could kinda 'format' flash space say... 6 flash slots at trade of A: space.

Also library idea is brilliant!
If you tested already, being in library alows saving inbuilt EDITor contents.
This is important at least for me, becouse as there is no buffer for undo I do constantly save versions in programming process. F1>F5>F1  just matter of seconds and continue >F4
While saved and called from FLASH SLOT - will not allow this.
Edited 2025-04-14 18:25 by electricat
My MMBasic 'sand box'
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4809
Posted: 09:46am 14 Apr 2025
Copy link to clipboard 
Print this post

@electricat,

I noticed in your source, you started out naming all variables "nav_xxxxx". But later on you dropped that strict naming.
To avoid confusion when the navigator is in the library, it would be best if you had continued using nav_xxx everywhere. That avoids confusion with user global variables.

Volhout
PicomiteVGA PETSCII ROBOTS
 
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 10:35am 14 Apr 2025
Copy link to clipboard 
Print this post

@Volhout,

Yes, I keep that in mind  as you noticed prefix nav_ was added specially to separate navigator from other library vars.

Thing is, I released this messy thing just becouse I wanted to see if it might be interesting for comunity.

I am never happy enough with results by nature. On the other hand it is somehow usable already so I just closed my eyes    and just released 'as is' .

Did not added prefixes, as I already want rewrite parts of it, revise vars, submenus should follow parent vars better etc. Needs rethink where LOCALS is better and where just slows down program a bit without obvious reason

If you remember at some point I had headache with reinitialising vars at repeat-start.

So I was lost trying to move everything to LOCALS/STATIC, but later found this will not help and did not returned back as already made improvements in other parts paralelly.

Finaly I came to vars problem solution in quite fun way :D
Cames out system accepted two simple commands in one go

OPTION F5 "clear"+chr$(58)+"navigator"+chr$(13)


All mess with vars requires to be cleaned up and this process is bit boring yet requires precious time   But as I do not see any need to add something more except of HEX viewer/editor I will move on now with this.
My MMBasic 'sand box'
 
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 03:05pm 14 Apr 2025
Copy link to clipboard 
Print this post



Added 'releases' for easy download
My MMBasic 'sand box'
 
twofingers
Guru

Joined: 02/06/2014
Location: Germany
Posts: 1501
Posted: 04:31pm 14 Apr 2025
Copy link to clipboard 
Print this post

Hi electricat,

thanks for your contribution, nice work. It's a bit unusual for me. Many years ago, I built a program with a starry background myself.  
At least the program makes Mick (Mixtel) happy and shows that a program in the library works. I'm excited about future developments.
Kind regards
Michael
causality ≠ correlation ≠ coincidence
 
electricat

Senior Member

Joined: 30/11/2020
Location: Lithuania
Posts: 279
Posted: 06:52pm 14 Apr 2025
Copy link to clipboard 
Print this post

@twofingers
Thanks for kind word!
Programing MMBasic with funky disco 70`s music in background makes me feel back in time   It`s hard to stop  
My MMBasic 'sand box'
 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2025