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
|
;
; Bitmap font
;
;
; Write text on screen
;
; Expects a 4x8 font on "font" label.
;
; in: [a : x]: text to write
; b, y: (x, y) dst coords
put_text:
push y
push b
put_text_loop:
ld y, [a : x]
cmp y, 0
bz
jmp put_text_exit
sub y, 32
push a
push x
rol y, 5
ld x, y
and x, 31
and y, 224
ld a, >font
add a, x
ld x, <font
add x, y
bo
inc a
call put_text_c
pop x
pop a
inc x
bo
inc a
pop b
add b, 4
push b
jmp put_text_loop
put_text_exit:
pop b
pop y
ret
put_text_c:
; settings mode
ld y, 128
ld b, 0xb0
port b, y
; setup
inc b
; addr: char sprite
ld y, x
port b, y
ld y, a
port b, y
; x
ld y, [sp + 4]
port b, y
; y
ld y, [sp + 5]
port b, y
; w
ld y, 4
port b, y
; h
ld y, 8
port b, y
; blit
dec b
; write, transparent
ld y, 3
port b, y
ret
|