amiga_boottest

view src/serial.c @ 4:995d42b33974

serial output
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 23 Feb 2018 13:29:37 +0200
parents
children
line source
1 #include "hwregs.h"
2 #include "serial.h"
4 #define CLK 3546895
5 #define BVAL(b) (CLK / (b) - 1)
7 static inline uint16_t baudval(int baud)
8 {
9 switch(baud) {
10 case 110: return BVAL(110);
11 case 300: return BVAL(300);
12 case 600: return BVAL(600);
13 case 1200: return BVAL(1200);
14 case 2400: return BVAL(2400);
15 case 4800: return BVAL(4800);
16 case 9600: return BVAL(9600);
17 case 14400: return BVAL(14400);
18 case 19200: return BVAL(19200);
19 case 38400: return BVAL(38400);
20 case 57600: return BVAL(57600);
21 case 115200: return BVAL(115200);
22 default:
23 break;
24 }
25 return BVAL(baud);
26 }
28 void ser_init(int baud)
29 {
30 REG_SERPER = baudval(baud) & 0x7fff;
31 }
33 /*
34 void ser_putchar(int c)
35 {
36 REG_SERDAT = ((uint16_t)c & 0xff) | 0x100;
37 }
38 */
40 void ser_print(const char *s)
41 {
42 while(*s) {
43 if(*s == '\n') {
44 ser_putchar('\r');
45 }
46 ser_putchar(*s++);
47 }
48 }