gint/TODO
Lephe 5630814897
core: allow custom panics and exception catching
This change introduces two new mechanismes for executing user code when
an exception occurs.

* This first is the custom panic message, which usually displays "System
  ERROR". The function that performs this task can now be user-defined.
  It is also run in user mode because the exception handler rte's into
  it, allowing it to execute any kind of interrupt-inducing task. The
  behavior is undefined if this function raises an exception.

* The second is an exception-catching function, which (when set) is
  called every time an exception occurs, and is granted the chance of
  handling the exception to continue execution normally. It can be used
  in various ways, the most primitive of which is recording the
  exception and going back. It runs in interrupt mode and must not raise
  any kind of exception.
2019-09-13 08:10:30 +02:00

49 lines
2.1 KiB
Plaintext

Crucial, missing things.
! core: the four basic memory functions
! core: gint_switch() with driver contexts on stack and arbitrary code
! core: use gint_switch() to handle TLB misses
! bopti: fxcg50 version
! syscalls: fxcg50 BFile calls
Tests to run.
* core: run the alignment/size automated tests for memory functions
* topti: all charsets
Complementary elements on existing code.
* topti: support unicode fonts
* gray: find good values for more models than the Graph 35+E II
* render: get rid of GINT_NEED_VRAM and #define vram gint_vram if you need
* dma: dma_memcpy() and dma_memset(), possibly requiring alignment
* dma: maybe relax the 4-byte size constraint for dma_memset()
* core: try to leave add-in without reset in case of fatal exception
* topti: support Unicode fonts
* hardware: fill in the HWMEM_FITTLB flag
* keyboard: think of extended functions
* keyboard: add an intermediate-level API with some sort of IsKeyDown()
* cpg: spread spectrum on fxcg50
* bopti: blending modes for monochrome bitmaps (use topti assembler)
* display: use more of topti's assembler in drect()
* core: use cmp/str for memchr()
* timer: try putting addresses in <gint/mpu/tmu.h>
* r61524: brightness control and clean the file
* t6k11: check if dupdate() can be done by the DMA
Keep in mind.
* core: run destructors when a task-switch results in leaving the app
* prizm: don't hardcode stack address in fxcg50.ld
* prizm: detect P1 static RAM (stack) in TLB
* core: prove and use qdiv10() instead of __sdivsi3
* setjmp: more registers may need to be saved
* core: free heap when a task-switch results in leaving the app
* core: save and restore interrupt masks
* timer: make sure ETMU interrupts are disabled in ctx_restore()
* timer: look for ways to improve the code again
* core: document the SH7305 PFC in <gint/mpu/pfc.h>
Future directions.
* A complete file system abstraction
* Integrate overclock management
* Audio playback using Martin Poupe's method
* Serial communication [SCIF] [SCIFA]
* USB communication [USB]