-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathincFILLCommand.asm
151 lines (127 loc) · 2.63 KB
/
incFILLCommand.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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
;*******************************************************************************
;* FILL Command *
;* This BASIC function fills in an area on the hi-res screen *
;* *****************************************************************************
;* Syntax : FILL or f Shifted I *
;* Inputs : X (0 -> 319) *
;* : Y (0 -> 199) *
;*******************************************************************************
; fill : x,y
COM_FILL
jsr GetNo2 ; Get X
sta COMM_XRLO
sty COMM_XRHI
jsr bas_CHKCOM$ ; Checks For a Comma
jsr bas_GETBYTC$; Get Y
stx COMM_YR
lda #1 ; Fill Up
sta COMM_AY
jsr FILL_START
lda #$FF ; Fill Down
sta COMM_AY
FILL_START
lda COMM_YR
sta COMM_YY
FILL_LOOPER_ROW
FILL2
lda COMM_XRLO
sta COMM_XXLO
lda COMM_XRHI
sta COMM_XXHI
jsr BANK_OUT_ROM
FILL_TESTING_LEFT
jsr FILL_TESTPIXEL
beq FILL_TESTING_RIGHT
sec
lda COMM_XXLO
sbc #1
sta COMM_XXLO
bcs @ByPassDEC
dec COMM_XXHI
@ByPassDEC
lda COMM_XXHI
cmp #0
bne @Continue
lda COMM_XXLO
cmp #0
beq FILL_TESTING_RIGHT
@Continue
jmp FILL_TESTING_LEFT
FILL_TESTING_RIGHT
lda COMM_XXLO
sta COMM_X1LO
lda COMM_XXHI
sta COMM_X1HI
lda COMM_XRLO
sta COMM_XXLO
lda COMM_XRHI
sta COMM_XXHI
FILL5
jsr FILL_TESTPIXEL
beq FILL_DRAWLINE
clc
lda COMM_XXLO
adc #1
sta COMM_XXLO
bcc @ByPassINC
inc COMM_XXHI
@ByPassINC
lda COMM_XXHI
cmp #1
bne @Continue
lda COMM_XXLO
cmp #64
beq FILL_DRAWLINE
@Continue
jmp FILL5
FILL_DRAWLINE
FILL6
jsr BANK_IN_ROM
lda COMM_XXLO
sta COMM_X2LO
lda COMM_XXHI
sta COMM_X2HI
lda COMM_YY
sta COMM_Y2
sta COMM_Y1
jsr DRAW_LINE_START
clc
lda COMM_YY
adc COMM_AY
sta COMM_YY
cmp #255
bne @Continue
jmp FILL_END
@Continue
cmp #200
bne @CanWeContinue
jmp FILL_END
@CanWeContinue
jsr BANK_OUT_ROM
lda COMM_XRLO
sta COMM_XLO
lda COMM_XRHI
sta COMM_XHI
lda COMM_YY
sta COMM_Y
jsr FILL_PIXELTEST
beq FILL_END
jmp FILL_LOOPER_ROW
FILL_END
jsr BANK_IN_ROM
rts
FILL_TESTPIXEL
lda COMM_XXLO
sta COMM_XLO
lda COMM_XXHI
sta COMM_XHI
lda COMM_YY
sta COMM_Y
FILL_PIXELTEST
jsr PLACE
ldx COMM_C
lda BYTEMASK,x
ldy #0
and (STAL),y
cmp BYTEMASK,x
rts