Font renderer
[mw/milkymist.git] / software / demo / main.c
1 /*
2  * Milkymist VJ SoC (Software)
3  * Copyright (C) 2007, 2008, 2009, 2010 Sebastien Bourdeauducq
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, version 3 of the License.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include <stdio.h>
19 #include <console.h>
20 #include <uart.h>
21 #include <system.h>
22 #include <irq.h>
23 #include <board.h>
24 #include <version.h>
25
26 #include <hal/brd.h>
27 #include <hal/mem.h>
28 #include <hal/time.h>
29 #include <hal/vga.h>
30 #include <hal/snd.h>
31 #include <hal/pfpu.h>
32 #include <hal/tmu.h>
33
34 #include "apipe.h"
35 #include "rpipe.h"
36 #include "renderer.h"
37 #include "cpustats.h"
38 #include "memstats.h"
39 #include "shell.h"
40
41 static void banner()
42 {
43         putsnonl("\n\n\e[1m     |\\  /|'||      |\\  /|'   |\n"
44                           "     | \\/ ||||_/\\  /| \\/ ||(~~|~\n"
45                           "     |    |||| \\ \\/ |    ||_) |\n"
46                           "                _/          v"VERSION"\n"
47                           "\e[0m           SoC demo program\n\n\n");
48 }
49
50 int main()
51 {
52         irq_setmask(0);
53         irq_enable(1);
54         uart_async_init();
55         banner();
56         brd_init();
57         cpustats_init();
58         memstats_init();
59         time_init();
60         mem_init();
61         vga_init();
62         snd_init();
63         pfpu_init();
64         tmu_init();
65         renderer_init();
66         apipe_init();
67         rpipe_init();
68         shell_init();
69
70         while(1) {
71                 if(readchar_nonblock())
72                         shell_input(readchar());
73                 apipe_service();
74                 rpipe_service();
75         }
76         
77         return 0;
78 }