-
Notifications
You must be signed in to change notification settings - Fork 1
/
patdraw.asm
96 lines (81 loc) · 1.93 KB
/
patdraw.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
; marcel timm, rhinodevel, 2020mar22
; - calls pos_draw$() and uses pattern$.
; ---------------
; --- defines ---
; ---------------
row = 6
column = 21
; --------------
; --- macros ---
; --------------
defm patstaticdraw$
; draw line under bit pattern:
;
ldx #8
@loop ldy #row + 1 ; char row / line nr. (0 - 24).
pha
txa
pha
txa ; char column / pos. in line offset.
clc
adc #column - 1; add pattern start column to offset.
sta zero_word_buf1$
lda #$77
jsr pos_draw$
pla
tax
pla
dex
bne @loop
; draw dollar sign (indicating hexadecimal number) below line:
;
ldy #row + 2; char row / line nr. (0 - 24).
lda #column
sta zero_word_buf1$
lda #'$'
jsr pos_draw$
endm
; -----------------
; --- functions ---
; -----------------
patdraw$ ldx #8
lda pattern$
@loop ror a
bcc @zero
pha
txa
pha
ldy #row ; char row / line nr. (0 - 24).
txa ; char column / pos. in line offset.
clc
adc #column - 1; add pattern start column to offset.
sta zero_word_buf1$
lda #chr_rev_spc$
jsr pos_draw$
pla
tax
pla
jmp @next
@zero pha
txa
pha
ldy #6 ; char row / line nr. (0 - 24).
txa ; char column / pos. in line offset.
clc
adc #column - 1 ; add pattern start column to offset.
sta zero_word_buf1$
lda #chr_spc$
jsr pos_draw$
pla
tax
pla
@next dex
bne @loop
; print as hexadecimal value:
;
ldy #row + 2; char row / line nr. (0 - 24).
lda #column + 1
sta zero_word_buf1$
lda pattern$
jsr printby$
rts