| // This is free and unencumbered software released into the public domain. |
| // |
| // Anyone is free to copy, modify, publish, use, compile, sell, or |
| // distribute this software, either in source code form or as a compiled |
| // binary, for any purpose, commercial or non-commercial, and by any |
| // means. |
| |
| #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(unsigned 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 digits) |
| { |
| for (int i = (4*digits)-4; i >= 0; i -= 4) |
| *((volatile uint32_t*)OUTPORT) = "0123456789ABCDEF"[(val >> i) % 16]; |
| } |
| |