Lephenixnoir
2cc8fe63e5
The Python program being run is in charge of keyboard events with the gint module. Most programs don't care though, and simply let events accumulate until the queue is full. The async filter is able to receive events even when the queue is full. However, it filtered only AC/ON presses, not releases, so the releases were sent back to the driver to queue. This was impossible as the queue was full, so the release was never recorded. This failure then repeated at every tick, forever. Since the key was never properly released, further presses were just seen as a continuation of the current press and thus did not produce any new event, so the async filter was no longer called and the Python program could no longer be interrupted. |
||
---|---|---|
.github | ||
docs | ||
drivers | ||
examples | ||
extmod | ||
lib | ||
logo | ||
mpy-cross | ||
ports | ||
py | ||
shared | ||
tests | ||
tools | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.pre-commit-config.yaml | ||
ACKNOWLEDGEMENTS | ||
CODECONVENTIONS.md | ||
CODEOFCONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README-MicroPython.md | ||
README.md |
README.md
PythonExtra - A community MicroPython for CASIO calculators
Original MicroPython README: README-MicroPython.md
.
This is a MicroPython port for fx-CG 50, fx-9860G III and related CASIO calculators.
Build instructions
Requires the fxSDK. Go to ports/fxcg50
or ports/fx9860g3
and run make
. If it doesn't build, first try to use the dev
branches for fxSDK, gint, fxlibc and JustUI. Rebuilds don't always work especially when checking out other commits (maybe my fault), so try to delete build
if you think that's related.
Most of the code is in ports/sh
and is shared between the platforms.
TODO list
Bugs to fix:
- Fix not world switching during filesystem accesses (very unstable)
- Fix the console not garbage collecting its lines (enable and test the feature)
- Fix not resetting the shell when importing a file from command-line
- Fix current working directory not changing during a module import (for relative imports)
- Fix accumulated events being processed when the program "ends" (if we can detect that)
Python features:
- Compare features with existing implementations and other brands
- Get filesystem access (open etc) with the POSIX interface
- Get a decent amount of RAM not just the fixed 32 kiB that's hardcoded so far
UI:
- Better input system in the shell (don't use VT-100 escapes, then move cursor and handle history)
- Add an option for fixed-width font which also sets $COLUMNS properly so that MicroPython paginates (requires better getenv/setenv support in fxlib)
- Use unicode-fonts to provide Unicode support
- Extend it with a fixed-width uf8x9 which maybe changes some glyphs (like
i
andl
; the usual fixed-width unambiguous styles) - Try and provide a font smaller than 5x7 for more compact shell on mono
- Extend it with a fixed-width uf8x9 which maybe changes some glyphs (like
- A decent keymap that can input all relevant characters into the shell
Test cases:
- Chute tridimensionnelle
- Bad Apple
- Island of the Dead Kings
- Synchro-Donjon
Future wishes:
- Build for fx-9860G II (requires manual filesystem support)
- Lephe's secret ideas (complete previous list to unlock)