#include "plasma.h" #define MemoryRead(A) (*(volatile unsigned int*)(A)) #define MemoryWrite(A,V) *(volatile unsigned int*)(A)=(V) int putchar(int value) { while((MemoryRead(IRQ_STATUS) & IRQ_UART_WRITE_AVAILABLE) == 0) ; MemoryWrite(UART_WRITE, value); return 0; } int puts(const char *string) { while(*string) { if(*string == '\n') putchar('\r'); putchar(*string++); } return 0; } void print_hex(unsigned long num) { long i; unsigned long j; for(i = 28; i >= 0; i -= 4) { j = (num >> i) & 0xf; if(j < 10) putchar('0' + j); else putchar('a' - 10 + j); } } void OS_InterruptServiceRoutine(unsigned int status) { (void)status; putchar('I'); } int kbhit(void) { return MemoryRead(IRQ_STATUS) & IRQ_UART_READ_AVAILABLE; } int getch(void) { while(!kbhit()) ; return MemoryRead(UART_READ); }