summaryrefslogtreecommitdiff
path: root/c
diff options
context:
space:
mode:
Diffstat (limited to 'c')
-rw-r--r--c/blankscreen/Makefile34
-rw-r--r--c/blankscreen/blankscreen.c19
-rwxr-xr-xc/blankscreen/blankscreen.elfbin0 -> 6676 bytes
-rw-r--r--c/blankscreen/blankscreen.hex29
-rw-r--r--c/blankscreen/blankscreen.obin0 -> 2348 bytes
-rw-r--r--c/blankscreen/rvcontroller.ld45
6 files changed, 127 insertions, 0 deletions
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
--- /dev/null
+++ b/c/blankscreen/blankscreen.elf
Binary files 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
--- /dev/null
+++ b/c/blankscreen/blankscreen.o
Binary files 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
+ }