s3e: fix build break
[calu.git] / progs / dt_inc.s
1 .data
2
3 .org 0x600
4 int2hex:
5         ;3210
6         .fill 0x33323130 
7         ;7654
8         .fill 0x37363534
9         ;ba98
10         .fill 0x62613938
11         ;fedc
12         .fill 0x66656463
13 .text
14 .org 0x400
15         .define UART_BASE, 0x2000
16         .define UART_STATUS, 0x0
17         .define UART_RECV, 0xc
18         .define UART_TRANS, 0x8
19
20         .define UART_TRANS_EMPTY, 0x1
21         .define UART_RECV_NEW, 0x2
22
23         .define PBASE, 0x2030
24         .define PADDR, 0x4
25         .define PDATA, 0x8
26
27         .define SSEG_BASE, 0x2010
28
29         .define INT_BASE, 0x2020
30         .define INT_CONF, 0x04
31         .define INT_GLOBAL_BIT, 0x01
32         .define INT_UART_REC_BIT, 0x02
33
34         .define TIMER_BASE, 0x2040
35         .define TIMER_STCFG, 0x0
36         .define TIMER_VAL, 0x4
37
38 u_recv_byte:
39         ldw r3, UART_STATUS(r10)
40         andx r3, UART_RECV_NEW
41         brzs+ u_recv_byte; branch if zero
42         xor r0, r0, r0
43         ldw r0, UART_RECV(r10)
44         ret
45
46 u_send_byte:
47         ldw r9, UART_STATUS(r10)
48         andx r9, UART_TRANS_EMPTY
49         brnz+ u_send_byte ; branch if not zero
50         stb r1, UART_TRANS(r10)
51         ret
52
53 u_send_uint:
54         addi r8, r1, 0
55         ;usb_sendbuffersafe ("0x", 2);
56         ldi r1, 0x30
57         call u_send_byte
58         ldi r1, 0x78
59         call u_send_byte
60         ;j = 0
61         xor r7, r7, r7
62         ldi r6, int2hex@lo
63         ldih r6, int2hex@hi
64 u_send_uint_loop:
65         ;for (j = 0; j < 8; ++j) {
66         cmpi r7, 8
67         reteq
68         ;usb_sendbuffersafe (&int2hex[(i >> 28) & 0xf], 1);
69         lrs r1, r8, 28
70         andx r1, 0xf
71         add r9, r6, r1
72         ldb r1, 0(r9)
73         call u_send_byte
74         ;i <<= 4;
75         lls r8, r8, 4
76         addi r7, r7, 1
77         br u_send_uint_loop
78
79 u_send_string:
80         ; r1 = addr
81         ; r2 = len
82         addi r3, r1, 0
83 u_send_string_int:
84         cmpi r2, 0
85         reteq-
86         ldb r1, 0(r3)
87         call u_send_byte
88         addis r2, r2, 0-1
89         addi r3, r3, 1
90         br u_send_string_int
91
92 u_send_newline:
93         ldi r1, 0x0a
94         call u_send_byte
95         ldi r1, 0x0d
96         call u_send_byte
97         ret
98
99 u_init:
100         ldi r10, UART_BASE@lo
101         ldih r10, UART_BASE@hi
102         ret
103
104 sseg_displ:
105         ldi r2, SSEG_BASE
106         stw r1, 0(r2)
107         ret
108
109 t_init:
110         ldis r11, TIMER_BASE@lo
111         ldih r11, TIMER_BASE@hi
112         ret
113
114 t_start:
115         ldis r1, 0x1
116         stw r1, TIMER_STCFG(r11)
117         ret
118
119 t_stop:
120         ldis r1, 0x0
121         stw r1, TIMER_STCFG(r11)
122         ret
123
124 t_valget:
125         ldw r0, TIMER_VAL(r11)
126         ret
127
128 t_valset:
129         stw r1, TIMER_VAL(r11)
130         ret
131
132 ;for deepjit: start for programarea
133 prog_start: