![]() |
Forum Index : Microcontroller and PC projects : File Manager for PicoMite
![]() ![]() ![]() ![]() |
|||||
Author | Message | ||||
javavi![]() Guru ![]() Joined: 01/10/2023 Location: UkrainePosts: 402 |
I thought about it, I plan to make multi-selection and mouse control... But for now I need to work on normal USB keyboard support. |
||||
javavi![]() Guru ![]() Joined: 01/10/2023 Location: UkrainePosts: 402 |
The increased length of these HDMI lines should not worsen the situation in any way, but will make it possible to place a comb of pins on them for connecting a VGA video interface or a LCD screen module on the second floor. This will make it possible to make the board universal - PicoMite HDMI\VGA\LCD |
||||
Mixtel90![]() Guru ![]() Joined: 05/10/2019 Location: United KingdomPosts: 7341 |
You have to make the sockets on modules that contain all the necessary interface resistors as the values are totally different. You may also need some sort of connector to the module from a LCD display. Also, all the HSTX pins have to be reserved, even if they are not used as you can't run them anywhere else on the board. So yes, it's probably possible, but the board will need a bit of careful design and you will obviously have to make whichever display module(s) you will want. The thing is, is it worth it? As new boards are produced they have new facilities too, not just a different display. I've now done boards with PWM (different filters) SPI DAC and VS1053 audio and am now working on one with I2S. Simply being able to select a different display on one board may not be the ideal approach. I have considered a modular system, where the display, audio and interfaces are swappable, but it gets clumsy (and may not work with HDMI anyway). I gave up on that idea. Still, I'll think about it when the HDMI breakout boards from Adafruit become available in the UK again as I think that format might be the best approach. I don't want to do it any other way as I'd like to have the HDMI socket pre-soldered. Mick Zilog Inside! nascom.info for Nascom & Gemini Preliminary MMBasic docs & my PCB designs |
||||
Amnesie Guru ![]() Joined: 30/06/2020 Location: GermanyPosts: 503 |
Hi, I used the file manager today the first time and was away for some time, coming back to see some cool matrix-style screensaver! Woah! Incredible work with all those built-in features. Greetings Daniel |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1456 |
@Vadim: This "unofficial" trial version uses sorted file lists. Sort for name, date and size. Use at your own risk. It needs surly more testing. Pls report errors. fm117.zip It works very well for me. Maybe you like some of it and want to incorporate it into your official version. All just a suggestion. The different sorting options help my tired eyes. ![]() "multi-selection" would be great! ![]() Kind regards Michael causality ≠ correlation ≠ coincidence |
||||
javavi![]() Guru ![]() Joined: 01/10/2023 Location: UkrainePosts: 402 |
@Michael It's really cool to work with this file sorting, I'll take a look at how you do it and transfer it to my code :)) I'm thinking of assigning some one key that will switch the sorting for the currently selected panel. What key should I assign for this? |
||||
Volhout Guru ![]() Joined: 05/03/2018 Location: NetherlandsPosts: 4722 |
javavi, Just read todays thread on file compare. That may be something to look at. As simple binary file compare, and in pane view of the 2 binaries. But this is not so simple. Especially finding the common code back after the first difference. Just to highlight the next difference. Volhout PicomiteVGA PETSCII ROBOTS |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1456 |
Hi Vadim, I'm glad you like the improvement as much as I do. Unfortunately I had to make a few small changes. I had also thought about finding better keys for sorting. In my opinion there is nothing wrong with using normal letter keys (n, d, s) - temporarily. As long as they are not used for other things. I installed it once, a little awkwardly, as a test. I like it that way. How do you like it? fm1172.zip Best regards Michael causality ≠ correlation ≠ coincidence |
||||
homa![]() Guru ![]() Joined: 05/11/2021 Location: GermanyPosts: 421 |
@javavi, @developers, I really like the Norton Commander style file manager! Especially the fact that you can now play mp3 files, although you can move through the file structure. This doesn't work at command level yet. A 'files' command stops playback. But I miss some really basic features. If I select a directory and then run the copy command, I still get an error message, even in the current version. But that's the whole point of a file manager, isn't it? I hope improvements are planned. Also, is there a way to stop playing an MP3 once it has started? And also a status indicator that a music file is playing, e.g. at the top right next to the clock? As I said, great project! Matthias |
||||
javavi![]() Guru ![]() Joined: 01/10/2023 Location: UkrainePosts: 402 |
Updated FM a little to version 1.21 + Alt works from USB keyboard + Stop playing track with SPACE + Working on F9 Menu FM121.zip |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1456 |
Hi Matthias, do you mean something like this? Sub CopyDir(src$, dest$) Local file$, subdir$, dcount, i Local string sdirs$(200) length 64 Mkdir dest$ file$ = Dir$(src$ + "/*", FILE) Do While file$ <> "" Print " copy file: ";dest$ + "/" + file$ Copy src$ + "/" + file$ To dest$ + "/" + file$ file$ = Dir$() Loop dcount = 0 subdir$ = Dir$(src$ + "/*", DIR) Do While subdir$ <> "" If subdir$ <> "." And subdir$ <> ".." Then Inc dcount sdirs$(dcount) = subdir$ subdir$ = Dir$() EndIf Loop For i = 1 To dcount Print " copy dir: ";src$ + "/" + sdirs$(i) CopyDir(src$ + "/" + sdirs$(i), dest$ + "/" + sdirs$(i)) Next i End Sub or this: 'Drive "a:" Chdir "\" Print "You are hier: ";Cwd$ Input "Directory to delete: ",Path$ If Path$="" Then End If MM.Info(exists dir path$) Then Print " Ready to erase directory: "Chr$(34);path$;Chr$(34); Input "now? (y/n/q(uiet))",yn$ If yn$="y" Then DeleteDir(Path$,0) If yn$="q" Then DeleteDir(Path$,1) Else Print "Directory: "Chr$(34);path$;Chr$(34);" not found." EndIf End '*************************** Sub DeleteDir(path$, quiet) Local string file$, subdir$, yn$ If MM.Info(exists dir path$) Then file$ = Dir$(path$ + "/*", FILE) Do While file$ <> "" Print " deleting file: ";path$ + "/" + file$ Kill path$ + "/" + file$ file$ = Dir$() Loop L1: subdir$ = Dir$(path$ + "/*", DIR) If subdir$ = "" Then GoTo Lend EndIf If subdir$ <> "." And subdir$ <> ".." Then DeleteDir(path$ + "/" + subdir$,quiet) ' rekursiv EndIf GoTo l1'replacement for do/loop Lend: Print " Remove the directory: ";MM.Info(drive);"/"; path$; If Not quiet Then Input " now? (y/n/x)",yn$ Else yn$="y" EndIf If LCase$(yn$) = "y" Then Rmdir path$ If LCase$(yn$) = "x" Then End Else Print "Directory: "Chr$(34);path$;Chr$(34);" not found." EndIf End Sub But it still needs to be tested thoroughly. And some safety features need to be installed. Use at your own risk! By the way, the last code snipet is an example of useful "GOTO" . Kind regards Michael causality ≠ correlation ≠ coincidence |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3964 |
Kind regards Michael Or get rid of both labels & GOTOs just use something like Do subdir$ = Dir$(path$ + "/*", DIR) If subdir$ = "" Then Exit Loop EndIf ... LOOP (I hope I got the syntax right) John |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1456 |
Hi John, that was the original plan. Unfortunately do/loop doesn't like recursion. Kind regards Michael causality ≠ correlation ≠ coincidence |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3964 |
that was the original plan. Unfortunately do/loop doesn't like recursion. Kind regards Michael That sounds odd!! Is that true? Sounds unlikely. John |
||||
twofingers Guru ![]() Joined: 02/06/2014 Location: GermanyPosts: 1456 |
No, if you think about it, it's actually very plausible. But I don't think I've had a project in the last ten years where that was a problem. ![]() I would also be interested in an alternative solution. The code for playing with it is available. Michael causality ≠ correlation ≠ coincidence |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3964 |
I hope Geoff, Peter and/or Tom will chime in! John |
||||
matherp Guru ![]() Joined: 11/12/2012 Location: United KingdomPosts: 9805 |
From the manual called from within these loops. |
||||
JohnS Guru ![]() Joined: 18/11/2011 Location: United KingdomPosts: 3964 |
Wow, sorry, I don't recall that part of the manual. It's the only BASIC I've met where that is the case :( John |
||||
javavi![]() Guru ![]() Joined: 01/10/2023 Location: UkrainePosts: 402 |
Updated FM to version 1.23 FM123.zip + works from USB keyboard + Sort Order - [BackSpace] switch key (???) + and other code optimizations Perhaps someone can suggest a more convenient button for switching the sorting order? ![]() Thanks to @twofingers for the method of sorting files, I honestly spied on you ![]() Although this sorting noticeably slowed down the update of the disk panel with a large number of files. ![]() Other tips for improving the program interface are also accepted. |
||||
disco4now![]() Guru ![]() Joined: 18/12/2014 Location: AustraliaPosts: 959 |
Have you considered using CTRL+[A-Z]. I think these plus a few other combinations produce the lower ascii codes 0-31. Just don't use CTRL+C. Maybe CTRL+S(ort). Should also work from VT100 terminal. Latest F4 Latest H7 FotS |
||||
![]() ![]() ![]() ![]() |
![]() |