-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSystemRoutines.asm
123 lines (112 loc) · 1.77 KB
/
SystemRoutines.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
; ===============
; System routines
; ===============
; ================================================================
; Check joypad input
; ================================================================
CheckInput:
ld a,P1F_5
ld [rP1],a
ld a,[rP1]
ld a,[rP1]
cpl
and a,$f
swap a
ld b,a
ld a,P1F_4
ld [rP1],a
ld a,[rP1]
ld a,[rP1]
ld a,[rP1]
ld a,[rP1]
ld a,[rP1]
ld a,[rP1]
cpl
and a,$f
or a,b
ld b,a
ld a,[sys_btnHold]
xor a,b
and a,b
ld [sys_btnPress],a
ld a,b
ld [sys_btnHold],a
ld a,P1F_5|P1F_4
ld [rP1],a
ret
; ================================================================
; Draw hexadecimal number A at HL
; ================================================================
DrawHex:
push af
swap a
call .loop1
pop af
.loop1
and $f
cp $a
jr c,.loop2
add a,$7
.loop2
add a,$10
push af
ldh a,[rSTAT]
and 2
jr nz,@-4
pop af
ld [hl+],a
ret
DrawHexDigit:
and $f
cp $a
jr c,.carry
add a,$7
.carry
add a,$10
push af
ldh a,[rSTAT]
and 2
jr nz,@-4
pop af
ld [hl+],a
ret
; ================================================================
; Draw binary number A at HL
; ================================================================
DrawBin:
ld c,a
ld a,l
add 7
ld l,a
jr nc,.nocarry
inc h
.nocarry
ld b,8
ld a,c
.loop
rra
jr c,.one
ld [hl],"0"-32
.chkloop
dec hl
dec b
jr nz,.loop
ret
.one
ld [hl],"1"-32
jr .chkloop
; ================================================================
; Load a screen
; ================================================================
LoadScreen:
ld de,_SCRN0
ld bc,_SCRN1-_SCRN0
.loop
ld a,[hl+]
ld [de],a
inc de
dec bc
ld a,b
or c
jr nz,.loop
ret