-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathbubble_sort.mfk
62 lines (53 loc) · 973 Bytes
/
bubble_sort.mfk
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
pointer screen @ $84
byte i @ $80, n1 @ $81, n2 @ $82, t @ $83
array(byte) sorttable align(fast) = [for x,255,downto,1 [x]]
asm void pause() {
lda os_RTCLOK.b2
.rt_check:
cmp os_RTCLOK.b2
beq .rt_check
rts
}
// print in HEX
void printScore(byte val) {
array(byte) tmp[2]
byte iter
tmp[0] = val >> 4
tmp[1] = val & %00001111
for iter:tmp {
if tmp[iter] < 10 {
screen[0] = tmp[iter] + $10
} else {
screen[0] = tmp[iter] + $17
}
screen += 1
}
screen[0] = 0
screen += 1
}
void main(){
screen = os_SAVMSC
for i:sorttable {
printScore(sorttable[i])
}
pause()
os_RTCLOK.b2 = 0
for t,253,downto,0{
for i,0,to,253{
n1 = sorttable[i]
n2 = sorttable[i+1]
if n1>n2 {
sorttable[i] = n2
sorttable[i+1] = n1
}
}
}
t = os_RTCLOK.b2
screen = os_SAVMSC
for i:sorttable {
printScore(sorttable[i])
}
// print jiffies
printScore(t)
while true {}
}