8f4975eebbe06db9bc908fdba30de49b61b67729
[calu.git] / 3_test / uartint.s
1 .text
2 start:
3         br+ main ;br+ 
4         call+ uartrdy ;call+ 0x80(128, 128)
5         ret
6 main:
7         ldi r1, 0x200b ;ldi r1, 8203
8         ldi r2, 0x200c ;ldi r2, 8204
9         ldi r3, 0x2010 ;ldi r3, 8208
10         ldi r4, 0x2024 ;ldi r4, 8228
11         ldi r5, 3
12         stw r5, 0(r4)
13         br+ start
14         ; stwnv r5, 0(r4)
15 uartrdy:
16         ldw r7, 0(r2)
17         xor r10, r10, r10
18         ldi r10, 0x41
19         stw r10, 0(r1) ;TODO: remove plz, kkthx
20         ; load instructions into ram
21         ldi r8, 0x2034 ; paddr
22         ldi r9, 0x2038 ; pdata
23         xor r10, r10, r10
24         xor r11, r11, r11
25
26         ; place this small program into instr-ram:
27         ;.text
28         ;start:
29         ;       br+ main
30         ;       call+ main
31         ;       ret
32         ;main:
33         ;       stw r7, 0(r1)
34         ;halt:
35         ;       br+ halt
36
37         ;eb000183;br+ main;;
38         ldi r10, 0
39         stw r10, 0(r8)
40         ldi r11, 0x0183
41         ldih r11, 0xeb00
42         stw r11, 0(r9)
43         ;eb000107;call+ main;;
44         xor r10, r10, r10
45         ldi r10, 1
46         stw r10, 0(r8)
47         ldi r11, 0x107
48         ldih r11, 0xeb00
49         stw r11, 0(r9)
50         ;eb000008;ret;;
51         xor r10, r10, r10
52         ldi r10, 2
53         stw r10, 0(r8)
54         ldi r11, 0x8
55         ldih r11, 0xeb00
56         stw r11, 0(r9)
57         ;e7b88000;stw r7, 0(r1);;
58         xor r10, r10, r10
59         ldi r10, 4
60         stw r10, 0(r8)
61         ldi r11, 0x8000
62         ldih r11, 0xe7b8
63         stw r11, 0(r9)
64         ;eb000003;br+ halt;;
65         xor r10, r10, r10
66         ldi r10, 5
67         stw r10, 0(r8)
68         ldi r11, 0x3
69         ldih r11, 0xeb00
70         stw r11, 0(r9)
71
72 leave:
73         ; just run and run, until we leave ROM and enter