1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
#RVController ecall C Library - Assembly Portion
#A product of Advanced Mesecons Devices, a Cheapie Systems company
#This is free and unencumbered software released into the public domain.
#See http://unlicense.org/ for more information
printint:
# Number to print is already in a0
li a7,1 # Write number
ecall
ret
printstr:
# String address is already in a0
li a7,4
ecall
ret
printchar:
# Character is already in a0
li a7,11
ecall
ret
digiline_send:
# Channel pointer is already in a0, message pointer is already in a1
li a7,129
ecall
ret
digiline_bufferlevel:
li a7,133
ecall
# Result is already in a0
ret
digiline_receive:
# Arguments are already in a0-a3
li a7,135
ecall
ret
rdtime:
rdtime a0
ret
rdcycle:
rdcycle a0
ret
digiline_clearbuffer:
li a7,134
ecall
ret
lightweight_mode:
andi a0,a0,1
csrrs t0,0x800,x0
bclri t0,t0,0
or t0,t0,a0
csrrw x0,0x800,t0
ret
readint:
li a7,5
ecall
# Result is already in a0
ret
randomint:
li a7,128
# Arguments are already in a0 and a1
ecall
# Result is already in a0
ret
readstr:
li a7,8
# Arguments are already in a0 and a1
ecall
# Result is already in a0
ret
console_clearbuffer:
li a7,131
ecall
ret
console_readchar:
li a7,132
ecall
# Result is already in a0
ret
.globl printint
.globl printstr
.globl printchar
.globl digiline_send
.globl digiline_bufferlevel
.globl digiline_receive
.globl rdtime
.globl rdcycle
.globl digiline_clearbuffer
.globl lightweight_mode
.globl readint
.globl randomint
.globl readstr
.globl console_clearbuffer
.globl console_readchar
|