From baa99d7688127a06e407edcadded63fb6efe2dc1 Mon Sep 17 00:00:00 2001 From: cheapie Date: Fri, 29 May 2026 16:02:49 -0500 Subject: Add screen-clearing utility --- c/blankscreen/Makefile | 34 +++++++++++++++++++++++++++++++ c/blankscreen/blankscreen.c | 19 ++++++++++++++++++ c/blankscreen/blankscreen.elf | Bin 0 -> 6676 bytes c/blankscreen/blankscreen.hex | 29 +++++++++++++++++++++++++++ c/blankscreen/blankscreen.o | Bin 0 -> 2348 bytes c/blankscreen/rvcontroller.ld | 45 ++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 127 insertions(+) create mode 100644 c/blankscreen/Makefile create mode 100644 c/blankscreen/blankscreen.c create mode 100755 c/blankscreen/blankscreen.elf create mode 100644 c/blankscreen/blankscreen.hex create mode 100644 c/blankscreen/blankscreen.o create mode 100644 c/blankscreen/rvcontroller.ld (limited to 'c') diff --git a/c/blankscreen/Makefile b/c/blankscreen/Makefile new file mode 100644 index 0000000..5d96eeb --- /dev/null +++ b/c/blankscreen/Makefile @@ -0,0 +1,34 @@ +CC ?= clang +CFLAGS_MARCH ?= -march=rv32imacbzicntr_zicond_zicsr_zifencei_zihintpause_zilsd_zclsd_zabha_zacas_zbkb_zbkx_zcb_zcmp_zcmt +CFLAGS_OPT ?= -O3 +CFLAGS ?= ${CFLAGS_MARCH} ${CFLAGS_OPT} + +# Big-endian just for the sake of being weird + +ifeq (${CC}, clang) + CC := ${CC} -target riscv32be-none-elf +endif + +.PHONY: all dump load clean + +all: blankscreen.hex + +blankscreen.o: blankscreen.c + ${CC} -I../rvcontroller-libraries ${CFLAGS} -ffreestanding -c -o blankscreen.o blankscreen.c + + +blankscreen.elf: ../rvcontroller-libraries/rvcontroller-init-be.o ../rvcontroller-libraries/rvcontroller-ecalls-be.o blankscreen.o + ${CC} -T rvcontroller.ld -nostdlib -nostartfiles -Xlinker --no-warn-rwx-segments -o blankscreen.elf ../rvcontroller-libraries/rvcontroller-init-be.o ../rvcontroller-libraries/rvcontroller-ecalls-be.o blankscreen.o + +dump: blankscreen.elf + riscv32be-none-elf-objdump -d blankscreen.elf + +blankscreen.hex: blankscreen.elf + riscv32be-none-elf-objcopy -O ihex blankscreen.elf blankscreen.hex + +load: blankscreen.hex + bash -c "wl-copy < blankscreen.hex" + +clean: + rm -f blankscreen.bin blankscreen.elf blankscreen.o + diff --git a/c/blankscreen/blankscreen.c b/c/blankscreen/blankscreen.c new file mode 100644 index 0000000..d188637 --- /dev/null +++ b/c/blankscreen/blankscreen.c @@ -0,0 +1,19 @@ +/* Screen Clearing Tool for RVController + * A product of Advanced Mesecons Devices, a Cheapie Systems company + * This is free and unencumbered software released into the public domain. + * See http://unlicense.org/ for more information */ + +#include "rvcontroller-ecalls.h" + +char color[] = "000000"; +char channel[] = "A1"; + +void main(void) { + for (int y=0;y<=5;y++) { + channel[1] = '1' + y; + for (int x=0;x<=19;x++) { + channel[0] = 'A' + x; + digiline_send(channel,color); + } + } +} diff --git a/c/blankscreen/blankscreen.elf b/c/blankscreen/blankscreen.elf new file mode 100755 index 0000000..5eaef4b Binary files /dev/null and b/c/blankscreen/blankscreen.elf differ diff --git a/c/blankscreen/blankscreen.hex b/c/blankscreen/blankscreen.hex new file mode 100644 index 0000000..62f4fa7 --- /dev/null +++ b/c/blankscreen/blankscreen.hex @@ -0,0 +1,29 @@ +:100000009302000273A00231370101006128A94860 +:100010007300000082808548730000008280914850 +:10002000730000008280AD48730000008280930856 +:1000300010087300000082809308500873000000CD +:10004000828093087008730000008280732510C0BE +:100050008280732500C082809308600873000000CE +:1000600082800589F322008093920248B3E2A200C5 +:10007000739002808280954873000000828093080C +:100080000008730000008280A14873000000828095 +:1000900093083008730000008280930840087300C2 +:1000A000000082804EB822F44AF052EC5AE862E432 +:1000B0006AE001491304001B130BD004930BE00406 +:1000C000130CF004930C0005130D1005930D20057F +:1000D00093093005130A400593043400994A130527 +:1000E0001903930510040C88488866AC89371305FA +:1000F0002004088866AC253F13053004088866ACE8 +:100100003D3713054004088866AC153713055004C5 +:10011000088866AC293F13056004088866AC013F77 +:1001200013057004088866AC193713058004088825 +:1001300066ACF53D13059004088866ACCD3D13050B +:10014000A004088866ACE5351305B004088866ACE1 +:10015000F93D1305C004088866ACD13D2300640155 +:1001600066ACF1352300740166ACD13523008401FF +:1001700066AC753D2300940166AC553D2300A40197 +:1001800066AC75352300B40166AC553523003401E7 +:1001900066AC713D2300440166AC513D0509E31096 +:1001A00059F522740279626A426B226C026D4EBE6E +:0A01B00041310030303030303000B3 +:00000001FF diff --git a/c/blankscreen/blankscreen.o b/c/blankscreen/blankscreen.o new file mode 100644 index 0000000..ae4184c Binary files /dev/null and b/c/blankscreen/blankscreen.o differ diff --git a/c/blankscreen/rvcontroller.ld b/c/blankscreen/rvcontroller.ld new file mode 100644 index 0000000..985892b --- /dev/null +++ b/c/blankscreen/rvcontroller.ld @@ -0,0 +1,45 @@ +/* Thanks https://github.com/darklife/darkriscv */ + __heap_size = 0x200; /* required amount of heap */ + __stack_size = 0x800; /* required amount of stack */ + ENTRY(_start); + MEMORY + { + RAM (rwx) : ORIGIN = 0x00000000, LENGTH = 0x10000 + } + SECTIONS + { + .text : + { + *(.text.startup) + *(.text) + *(.text) + *(.rodata*) + } > RAM + .data : + { + *(.sbss) + *(.data) + *(.bss) + *(.rela*) + *(COMMON) + } > RAM + + .heap : + { + . = ALIGN(4); + PROVIDE ( end = . ); + _sheap = .; + . = . + __heap_size; + . = ALIGN(4); + _eheap = .; + } >RAM + + .stack : + { + . = ALIGN(4); + _estack = .; + . = . + __stack_size; + . = ALIGN(4); + _sstack = .; + } >RAM + } -- cgit v1.2.3