OK here is my dump of my PicoCalc using a Pimoroni pico plus 2W with a
custom build of circuitpython with drivers added to support the PicoCalc keyboard.
Everything else here is written in circuitpython 10.
If it is a circuitpython program using displayio you should be able to port it to the PicoCalc.
Quick list of what I have put together.
On startup there is a Splash screen that is displayed for a couple of seconds.
After that, the pico connects to an NTP server and gets the time. to display on the “Launcher/Menu”
Launcher, Up/Down arrow to select, V to view source in a highlighted python source viewer. F1 for key help in the viewer.
List of Programs:
Analog Clock
Backup / creates backups of the flash on the SD card
bubble / the bubble screen saver ported to circuitpython
Email / email, read full sent emails, retrieve last 10 headers from email account.
Four Letter Word Screen saver / lookup four letter word and Playboy for a history of what it is. B7971 FLW
Game of Life / The older a cell is the brighter and some other features.
Display some random pictures from the internet. TLS/SSH is a real pain these days had to use a Pi 5 as a go between.
Macropad / This has 10 macros that can be used to help sign-on and has a mouse jiggle that uses the shift key and time delays.
Minesweeper / A nice circuitpython version. cleaner.
Programmer Calculator / Work in Progress
Python Code viewer / display with indents and simple highlighting.
pyBasic / Work in Progress / Port of the fruit jam pyBasic. It runs but some quirks.
Ripple / port of Daves ripple animation to the picocalc. But at .2 frames per sec. it is not an animation.
Spiro / Port of the Spiro program to circuitpython and the PicoCalc.
Sudoku / I created a Nice Sudoku from scratch. can save and restart a game also.
Weather / Custom weather program. displays a fancy weather screen that updates every 5 min. needs openweather key. (free)
Zork / Ported Zork from the fruit jam to Picocalc. Was able to use the nice fonts as well. can save and restore your game also.
misc:
switch test / this is a demo of toggle switch widgets. turn lights on and off remote with PicoCalc.
I guess I got caught up in setting up the github repo. @jblanked I want to than you for insipiring this circuitpython build. Also for your translation of the keyboard driver which I adapted to circuitpython. Without witch this build of circuitpython for the PicoCalc would not exist.
What I meant is, you’re just copying files from Picoware. It’d be courteous to at least source where you got it from at the top of the file or mention in the README where you got it from.
If you were just going to copy most of Picoware, you should just fork the repository and submit pull requests.
I hear you — but I want to be precise about what I did and didn’t do.
I did not copy/paste Picoware files and “convert” them line-for-line. I looked at Picoware as inspiration/reference (same way anyone might look at an existing Game of Life implementation) and then wrote my own CircuitPython version with my own structure and my own implementation details. The CircuitPython pieces (display/input flow, how the loop runs, how it chains from my launcher and returns, etc.) were built for CircuitPython and aren’t taken or even could be taken directly from Picoware.
That said, you’re also right that if Picoware influenced my approach, I should credit it explicitly. I’ll add a clear note in the README and a short header comment in the relevant files along the lines of “inspired by Picoware’s concept/feature set” (and link to the repo), plus any license notices that apply.
Just so it is clear to everyone. Nothing in my repo is compatible or can be used in PicoWare or vice versa. Nothing written for CircuitPython like is shown here is capable of running in the PicoWare ecosystem in any way. CircuitPython is not compatible with MicroPython especially with displaying graphics.
GPL 3.0 Section 4 requires you to keep intact all copyright notices. You must include attribution to the original Picoware project in the files you copied, even if you made modifications
I did copy the keyboard code that allows circuitpython to talk to the keyboard. The driver part is from another sourcce. the callbacks to circuitpython were his. And as I called out without this it would not be possible to do any of this. I wrote new call back code so it is now a unique work. I removed the sipro logic. the algorithem is well known. But I rewrote it with another algo.
As I said I did take some inspiration on some apps. But the algo would be the only thing that could be used between circuitpython and micropython. The requirement of a start stop and run method do not work in circuitpythong. All the graphics are done with adafruit modules and drivers.
I said I would work through ad fix the attributions. But I guess we are going to find what we can find and complain.
I dont want to take anything away from him, he has done an outstanding job with his project. But it is difficult to write for. I wanted to make something where every app was stand alone. I have done that. But I did not setout to “copy” his code. It is not possible to use any of the apps in circuitpython.
It is mess and I will clean it up. But after all this I will make sure there is not any of his code in my picocalc project. The keyboard driver callbacks are now a unique work. I have changed the algo, which was the only code to be suspect, to another algo. And I will make sure it is all unique. But I did not copy line for line and pull requests would not be compatible as was suggested.
That is exactly what you did, and just changing the name of the file and/or driver name doesnt qualify it as “your work”.
Then you’ll need to delete that entire folder and write yours over by scratch, or do the just thing and add sources to the top of your file, like you mentioned you would do:
the callback code is unique and was completely rewritten. so it no longer I attributable. the other code came from others that you used. It is unique now and has nothing to do with you.
I said from the beginning that the keyboard driver bindings were yours. I never said they were not.
But to stop this nonsense I rewrote the bindings code, from scratch. Remember that the workings still need to link python to the driver which came from another source.
It all does not matter any more. I have removed the repo and now what I do with my picocalc is my business. Sorry to have bothered everyone.
@jblanked Congratulations on successfully defending your intellectual property rights. Now we can rest well assured that we won’t end up accidentally executing code from Picoware™ except as part of Genuine Picoware Technology™.
How dare someone write anything other than purely unique code, and how dare someone use someone else’s code as a guide! And that includes things like CMakeLists.txt and listings of constants too, of course ─ there is no excuse for not always writing those from scratch. Ideally one ought to come to those from first principles, as simply seeing someone else’s CMakeLists.txt or someone else’s constants would make one’s code a derived work.
Seriously, free software licenses are an unfortunate reality necessitated only by “intellectual property rights” being foisted on us by the powers that be combined with the risk of getting sued if someone uses one’s code in a medical device or piece of heavy machinery or like that then ends up killing someone and one does not have a disclaimer. In an ideal world there would be no copyrights, no patents, and no need for disclaimers in the first place, and hence no licenses.