![]() |
Forum Index : Microcontroller and PC projects : Presenting NAVIGATOR for PicomiteHDMI
Author | Message | ||||
electricat![]() Senior Member ![]() Joined: 30/11/2020 Location: LithuaniaPosts: 279 |
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: LithuaniaPosts: 279 |
![]() My MMBasic 'sand box' |
||||
electricat![]() Senior Member ![]() Joined: 30/11/2020 Location: LithuaniaPosts: 279 |
Ohhh.. forgot to mention. This thing requires latest beta ![]() My MMBasic 'sand box' |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 4809 |
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 KingdomPosts: 7433 |
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: LithuaniaPosts: 279 |
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 ![]() Thank you! 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. Sure ![]() 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: NetherlandsPosts: 4809 |
@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: LithuaniaPosts: 279 |
@Volhout, Yes, I keep that in mind ![]() 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 ![]() ![]() 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 ![]() My MMBasic 'sand box' |
||||
electricat![]() Senior Member ![]() Joined: 30/11/2020 Location: LithuaniaPosts: 279 |
![]() Added 'releases' for easy download My MMBasic 'sand box' |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1501 |
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: LithuaniaPosts: 279 |
@twofingers Thanks for kind word! Programing MMBasic with funky disco 70`s music in background makes me feel back in time ![]() ![]() My MMBasic 'sand box' |
||||
![]() |