serial terminal
[retrocrawl] / src / amiga / serial.h
diff --git a/src/amiga/serial.h b/src/amiga/serial.h
new file mode 100644 (file)
index 0000000..e460c98
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef SERIAL_H_
+#define SERIAL_H_
+
+#include "hwregs.h"
+
+/* dff030 is REG_SERDAT
+ * dff018 is REG_SERDATR
+ * bit 13 of SERDATR is TBE (transmit buffer empty)
+ */
+#define ser_putchar(c) \
+       asm volatile( \
+               "or.w #0x100, %0\n\t" \
+               "0: btst #13, 0xdff018\n\t" \
+               "beq 0b\n\t" \
+               "move.w %0, 0xdff030\n\t" \
+               :: "d"((int16_t)c))
+
+void ser_init(int baud);
+void ser_print(const char *s);
+
+#endif /* SERIAL_H_ */