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
|
# Initialize timer
la a0,timerchannel
la a1,timerinit1
li a7,129 # Send digilines message
ecall
la a1,timerinit2
ecall
loop:
# Check if the timer has ticked
li a7,133 # Get digilines buffer level
ecall
beqz a0,sleep # Sleep if it hasn't
li a7,134 # Clear digilines receive buffer
ecall
# Do the actual flashing
li a7,129 # Send digilines message
la a0,lightchannel1
la a1,lightonmsg
ecall # Light 1 on
pause
la a1,lightoffmsg
ecall # Light 1 off
pause
la a1,lightonmsg
ecall # Light 1 on
pause
la a1,lightoffmsg
ecall # Light 1 off
pause
la a1,lightonmsg
ecall # Light 1 on
pause
la a1,lightoffmsg
ecall # Light 1 off
pause
la a1,lightonmsg
ecall # Light 1 on
pause
la a1,lightoffmsg
ecall # Light 1 off
pause
la a0,lightchannel2
la a1,lightonmsg
ecall # Light 2 on
pause
la a1,lightoffmsg
ecall # Light 2 off
pause
la a1,lightonmsg
ecall # Light 2 on
pause
la a1,lightoffmsg
ecall # Light 2 off
pause
la a1,lightonmsg
ecall # Light 2 on
pause
la a1,lightoffmsg
ecall # Light 2 off
pause
la a1,lightonmsg
ecall # Light 2 on
pause
la a1,lightoffmsg
ecall # Light 2 off
pause
j loop
sleep:
csrw 0x800,1 # Lightweight on
pause
csrw 0x800,0 # Lightweight off
j loop
timerchannel: .asciz "timer"
timerinit1: .asciz "loop_on"
timerinit2: .asciz "1"
lightchannel1: .asciz "light1"
lightchannel2: .asciz "light2"
lightonmsg: .asciz "14"
lightoffmsg: .asciz "0"
|