aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/print.c
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-06-26 22:02:22 +0200
committerClifford Wolf <clifford@clifford.at>2015-06-26 23:15:30 +0200
commitd4331491a87aa27fb77e5971c887e345886de2be (patch)
tree3e64f1b034055da5a47d963623d866172b544b56 /firmware/print.c
parentf0b824ad9a0d9c4a010baf62114009c847f6a94d (diff)
downloadpicorv32-d4331491a87aa27fb77e5971c887e345886de2be.tar.gz
picorv32-d4331491a87aa27fb77e5971c887e345886de2be.zip
Test firmware refactoring
Diffstat (limited to 'firmware/print.c')
-rw-r--r--firmware/print.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/firmware/print.c b/firmware/print.c
new file mode 100644
index 0000000..03e9b09
--- /dev/null
+++ b/firmware/print.c
@@ -0,0 +1,36 @@
+
+#include "firmware.h"
+
+#define OUTPORT 0x10000000
+
+void print_chr(char ch)
+{
+ *((volatile uint32_t*)OUTPORT) = ch;
+}
+
+void print_str(const char *p)
+{
+ while (*p != 0)
+ *((volatile uint32_t*)OUTPORT) = *(p++);
+}
+
+void print_dec(int val)
+{
+ char buffer[10];
+ char *p = buffer;
+ while (val || p == buffer) {
+ *(p++) = val % 10;
+ val = val / 10;
+ }
+ while (p != buffer) {
+ *((volatile uint32_t*)OUTPORT) = '0' + *(--p);
+ }
+}
+
+void print_hex(unsigned int val)
+{
+ int i;
+ for (i = 32-4; i >= 0; i -= 4)
+ *((volatile uint32_t*)OUTPORT) = "0123456789ABCDEF"[(val >> i) % 16];
+}
+