Commit graph

47 commits

Author SHA1 Message Date
Lephe
9eb723ee53
render: remove the GINT_NEED_VRAM macro
This macro used to protect the declaration of the [vram] variable of
gint. This variable was short to keep drawing functions short but could
clutter the namespace.

That being said, it's even better to just [#define vram gint_vram] if
you need. This change renames the variable to [gint_vram], exposes it
whenever <gint/display.h> is included, and removes the GINT_NEED_VRAM
macro altogether.
2019-10-27 08:14:42 +01:00
Lephe
95a3345326
keyboard: add keydown() in the model
This change adds a keydown() function that is synchronized with events,
ie. it returns the key state as seen by previously read events.

It also completely eliminates low-level repeat events, which are not
very meaningul as the keyboard scan frequency goes up (and would be
meaningless if KEYSC interrupts were used), and adapts getkey() by
giving it access to the current driver time through pollevent().
2019-09-28 19:25:01 +02:00
Lephe
86cd9b98d4
small improvements
* Update TOTO list
* Change the type of gint_vbr to comply with a new warning in GCC 9
* Add strcmp()
2019-09-19 15:59:38 +02:00
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
Lephe
61e68d01bb
expose more platform-agnostic code
May be useful later on for libraries such as libprof.
2019-09-06 12:16:31 +02:00
lephe
e1aca8d89b
exc: add exception handlers, use them in the DMA
This change introduces exception handlers that default to a fatal error
with an on-screen description of the exception and some debugging
information.

It also adds the dprint() function as a definitely-needed helper and
removes bootlog_unmapped() by using the exception handler for the fatal
error display. (Also printf() is now required in all gint add-ins; this
is sad, but space is not as much of a constraint as debugging.)

Finally, the exception handler is used to handle an interrupt which is
an exception in practice, the DMA address error. On fx-CG 50, additional
DMA-related information is displayed on the screen. This is left out on
fx-9860G as there is not enough space.
2019-09-03 22:15:00 +02:00
lephe
64dbe6021d some formatting and comment updates 2019-08-04 13:59:17 +02:00
lephe
ae4f7af172 gray: add engine, basic drawing and text
This revision includes the base gray engine with sensible starting
defaults, gclear() and grect(), as well as gtext().
2019-07-20 12:31:46 -04:00
lephe
c80debacd7 keyboard stdio: some fixes 2019-07-17 19:29:12 -04:00
lephe
ff2db385a8 TODO update and miscellaneous style 2019-07-16 18:34:10 -04:00
lephe
f33cb3cf80 core: better bootlog API and implementation
* Now uses topti instead of fxlib for text (including MMU failure)
* Fit .pretext into 4k for everything before MMU succeeds
* A short version of sprintf() for dynamic messages
* Support a driver function, status(), to allow early driver debug
* Expose more useful platform information in <gint/mpu.h>
* Expose the first of a few CASIOWIN syscalls
2019-03-06 14:32:51 +01:00
lephe
3f7c0a04ad way too much, including bopti/topti, timers, and more. 2019-02-21 21:00:26 +01:00
lephe
79b78b5345 Hopefully the last adjustments before the first release. 2017-07-11 13:51:56 +02:00
lephe
34e42a03a6 Small Makefile adjustments, preparing fusion with fxSDK 2017-07-08 17:22:42 +02:00
lephe
f6133c26fc Startup logs instead of diagnostics, created .gint_bss, updated demo. 2017-07-05 21:38:12 +02:00
lephe
5e66efc560 Interrupt controller module description (WIP), task switch and return to menu. 2017-07-01 16:07:14 +02:00
lephe
a0f06fadd7 Interrupt Controller module draft, bopti bugfix. 2017-04-22 21:59:39 +02:00
lephe
3214f6b797 Almost ended quality review, and fixed tales-related vram overflows. 2017-04-19 19:57:31 +02:00
lephe
57a7e1c2d4 More quality review, more registers saved at startup. 2017-04-13 21:59:13 +02:00
lephe
a6e312a39c Some quality review. Made keyboard time milliseconds. 2017-03-26 18:38:32 +02:00
lephe
31e2b453dd Redesigned timer module: got a possibly infinite amount of virtual timers. 2017-03-01 11:07:28 +01:00
lephe
7ab6170ca3 Key repeat events & Timer callbacks with arguments. Fixed sleep_us(). 2017-02-25 23:19:35 +01:00
lephe
d852bc3310 Huh... debug app for crashes & whole new interrupt system. Minor edits. 2017-02-25 19:02:07 +01:00
lephe
49df2a5fb4 Added a --extended-libc option and some headers to allow porting external programs. 2017-01-22 18:35:02 +01:00
lephe
93dca0ef6f Made INCOMPATIBLE changes to image rendering. Added inttypes.h and bakclight management in getkey(). 2017-01-20 21:11:00 +01:00
lephe
28f790bade Fixed some font formats. Minor changes in README, headers. 2017-01-01 17:41:16 +01:00
lephe
4fceab4533 Updated README and TODO files 2016-12-25 11:45:05 +01:00
lephe
9a3433c52a Fixed left-side vram overflow with text, made install automatically along fxSDK. 2016-12-22 23:08:44 +01:00
lephe
2564096a13 Added natural delay/frequency settings for timers. 2016-12-22 19:47:05 +01:00
lephe
e6e0989436 Solved backlight issues and added backlight control to the API. 2016-12-22 18:36:39 +01:00
lephe
eedec2b124 Added a configure script with some options, made Makefile output pretty. Set up an event system (used by keyboard). 2016-11-05 22:00:23 +01:00
lephe
98fdbbc333 Proper RTC callback system. Moved keyboard to RTC (saves a timer). Reduced use of 7705.h / 7305.h. 2016-09-04 11:35:41 +02:00
lephe
d80de5683b Added clock frequency computations/measurements, and frequency-delay/timer expression. 2016-08-29 11:29:07 +02:00
lephe
0205c39f21 Fixed area functions (rectangles completely outside the screen). 2016-08-14 19:57:58 +02:00
lephe
58db663ae6 Some time manipulation. Added the targets to the .gitignore file. 2016-08-08 15:01:33 +02:00
lephe
1f223f807f Added an RTC test (clock), image part drawing and a few standard functions (stdlib, time). 2016-08-02 07:51:44 +02:00
lephe
c63d7b812e Added bitmap part rendering and text colors, proper gray text. Enhanced demo app (wip). 2016-07-28 18:12:07 +02:00
lephe
b2151886bc Added formatted printing for stdio: handles everything except doubles and %m. 2016-07-25 22:38:47 +02:00
lephe
7f174043a5 Reported TLB issues. Moved internal headers files, added rtc module and alloca. 2016-07-25 09:04:22 +02:00
lephe
34dd27d7a3 Major bopti update (one of the last, I hope). Added comparison with ML as fifth application (hidden). 2016-07-14 21:10:51 +02:00
lephe
d122624c56 Re-structured files. Minor name changes. No code changed in this falsely huge commit. 2016-07-06 11:28:51 +02:00
lephe
ab17532f67 Major update for bopti (gray, light still not tested). Reworked out gray engine. 2016-07-04 18:30:25 +02:00
lephe
aa0f4b7285 First gray tests. Added text module, 'tales'. 2016-05-20 22:04:15 +02:00
lephe
13aad50ab7 Began to re-write bopti. Bitmap tests changed. Added a continuous integration file. 2016-05-06 20:47:15 +02:00
lephe
e1a51dae21 Displayed keyboard state in test [1]. Implemented some API for user RTC interrupt management. 2016-05-05 22:33:15 +02:00
lephe
9725c2819a Moved the keyboard to timers. Minor changes in multigetkey() to avoid unwanted event repeats. Beginning of a test application. 2016-05-05 18:19:10 +02:00
lephe
0a7f22d4c1 Initial commit. Includes interrupt handler, drivers for keyboard and screen, and parts of the drawing library. 2016-05-05 11:49:05 +02:00