;; loading
LDA #$01
STA $01
STA $10

LDA #$10
STA $11
LDA #$02
STA $12

LDA #$05
STA $04
LDA #$f0
STA $03

loop:
;; clear
LDA #$00
STA $0400, X

STX $09
LDX #$00
STA ($11, X)
LDX $09

;; moving
move_x:
LDA $01
AND #$01
BNE x_add
BEQ x_dec 

y_move:
JSR move_y


;; paint
paint:
LDA #$01
STA $0400, X

STX $09
LDX #$00
STA ($11, X)
LDX $09

;; delay
LDA #$01
delay:
ADC #$01
NOP
BCC delay

JMP loop

move_y:
LDA $10
CMP #$01
BNE sub

CLC
LDA $11
ADC #$20
STA $11

BCC paint
CLC
LDA $12
ADC #$01
STA $12

CMP #$06
BNE paint
LDA #$00
STA $10

LDA #$f0
STA $11
LDA #$05
STA $12

JMP paint
sub:
LDA $11
SBC #$1f
STA $11
CLC
CMP #$10
BNE paint

LDY $12
DEY
STY $12

LDA #$f0
STA $11

LDA $12
CLC
CMP #$01
BNE paint

LDA #$01
STA $10

LDA #$10
STA $11
LDA #$02
STA $12
RTS

x_add:
INX
CPX #$1f
BEQ dir_dec
JMP y_move

x_dec:
DEX
CPX #$00
BEQ dir_inc
JMP y_move

dir_dec:
LDA #$02
STA $01

LDA #$0
STA $03
LDA #$02
STA $04

JMP y_move

dir_inc:
LDA #$01
STA $01

LDA #$f0
STA $03
LDA #$05
STA $04

JMP y_move
