Bugs to fix: - Alignment of ALL .data / .rodata files is required to ensure converted data is properly aligned - Unpreditcable crap happens when more than 10 keys are pressed simultaneously - Ensure heap data is freed when a task-switch results in leaving the app Things to do before 1.0: - bopti: Test partial transparency - demo: Try 284x124 at (-60, -28) (all disadvantages) - project: Check size of *all* library structures - project: Clean headers that have some internal definitions - project: Get rid of 7705.h (keyboard) and 7305.h (keyboard, gint) - time: Compute CLOCKS_PER_SEC Things to do later: - bopti: Implement blending modes for monochrome bitmaps - clock: Only measure if requires as option, otherwise trust {FTune} - clock: Handle overclock (relaunch clocks when overclocking) - clock: Split code into several files, change clock_config_t type - core: Change interrupt priority using the gint API - core: Register more interrupts (and understand their parameters) - core: Remove redundant code linked to environment saves - core: Review interrupt system (again) - this one is too slow - display: Try to make this module lighter (lots of code in text section) - errno: Introduce errno and use it more or less everywhere - esper: Cleaner playback, synthesizing - events: Allow customization of keyboard event system (option to return | events with modifiers, etc) - events: Generate keyboard events on-the-fly by reading state arrays, | allowing both a faster interrupt and avoiding supressing other | events inside getkey() and multigetkey() - gray: Same as display, it's quite heavy - serial: Implement a driver - stdio: More serious formatted printing functions and headers - string: Use cmp/str to implement memchr() (assembler examples) - string: Do some tests for memcmp() and memcpy() - string: Lighter functions? - usb: Implement a driver Things to investigate: - Registers that may need to be saved within setjmp() - Optimizing core/gint.c leads to raising of an illegal slot exception when running the interrupt handler, although it ends on rte; lds.l @r15+, mach, which is totally not an illegal slot. Possibly useful modules: - DMAC - SCIF, SCIFA - TPU - USB - CMT on SH7305, WDT on SH7705 - ACD (SH7705 only)