#include "uart.h"

#include <stdint.h>
#include <stdbool.h>

void write_cstring(const char* string);
void write_char(char c);
void toggle_led();

#define LED *((uint32_t*) 0x01002000)


int main() {
    uint32_t i = 0;
    bool toggle = false;
    for (;;) {
        if (i >= 100) {
            i = 0;
            if (toggle) {
                LED = 1;
            } else {
                LED = 0;
            }
        }

        write_char('H');
        write_char('e');
        write_char('l');
        write_char('l');
        write_char('o');
        write_char(' ');
        write_char('W');
        write_char('o');
        write_char('r');
        write_char('l');
        write_char('d');
        write_char('!');
        write_char('\n');
        write_char('\r');

        i += 1;
    }
}


void write_char(char c) {
    //while (!UART0->TXEMPTY);

    //// Wait for room to clear up
    //if (!UART0->TXFULL) {
    //    UART0->RXTX = c;
    //}
}
void write_cstring(const char* string) {
    int i = 0;

    for (;;) {
        // Return at end of string
        if (string[i] == 0) {
            return;
        }

        // Wait for room to clear up
        if (!UART0->TXFULL) {
            UART0->RXTX = string[i];
        }

        i += 1;
    }

}

void toggle_led() {
    LED = !LED;
    write_char('0' + LED);
}
