-
Notifications
You must be signed in to change notification settings - Fork 0
/
system.asm
100 lines (97 loc) · 1.64 KB
/
system.asm
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
;Airaki! - FSE 2014
;Released under the GPL V3, see LICENSE.TXT
readinput:
push bc
ld a,(JOYP_CURRENT)
ld (JOYP_LAST),a
ld a,%00010000 ;Buttons
ldh ($00),a
nop
nop
nop
ldh a,($00)
and $0F
xor $0F
ld b,a
ld a,%00100000 ;Directions
ldh ($00),a
nop
nop
nop
ldh a,($00)
and $0F
xor $0F
swap a
or b
ld (JOYP_CURRENT),a
ld b,a
ld hl,PREVJP
ld a,(hl)
xor b
and b ;Keep rising edges
ld (hl),b
ld (JOYP_ACTIVE),a
pop bc
ret
;Input: D = Dividend, E = Divisor, A = 0
;Output: D = Quotient, A = Remainder
;Stolen from "Z80 Bits"
div8_8:
xor a
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
sla d ; unroll 8 times
rla ; ...
cp e ; ...
jr c,+ ; ...
sub e ; ...
inc d ; ...
+:
ret