vygr / ChrysaLisp

Parallel OS, with GUI, Terminal, OO Assembler, Class libraries, C-Script compiler, Lisp interpreter and more...
GNU General Public License v2.0
1.62k stars 96 forks source link

Implement framebuffer host GUI for ChrysaLisp #272

Closed ghaerr closed 1 year ago

ghaerr commented 1 year ago

This PR will be updated following the work-in-progress of getting CL running on Raspberry PI framebuffer.

This replaces the preview draft version previously submitted in #270, and builds a (somewhat) working version of CL by running make GUI=fb on a Linux system with framebuffer support. It has currently only been tested on RPi 3. To run the framebuffer version, the ./run.sh script doesn't work well, since stdin is closed by the shell script executing the system in the background. Instead, run obj/arm/ARM64/Linux/main_gui obj/arm64/ARM64/sys/boot_image -run gui/gui/gui.lisp. (Yes, all of that is required!)

The mouse and keyboard are working, but graphics text output is still a bit funky due to lack of proper alpha blending support and a back buffer (coming soon). There's still lots to do on this, but I thought to post it in case others might want to play around with it a bit.

After more implementation and much more testing, the plan would be to merge this PR to support CL framebuffer.

Here's a screenshot of the system after the login screen: IMG_4802D

For some reason, keyboard input isn't working in the Terminal app, but it does work in Login.

To exit the system, type ESC.

ghaerr commented 1 year ago

The framebuffer host GUI for CL is working well with all features present. It probably ought to be tested a bit on various PI systems. The framebuffer format should be set for 32bpp ARGB.

CL FB 6

ghaerr commented 1 year ago

host_gui_set_color color premul done, single alloc for textures, control characters and scroll wheel working.

No known problems.