( Screen )

;center { x 2 y 2 }
;timer { byte 1 }
;i { byte 1 }

|0100 @RESET 

	( find screen center )
	~Screen.width #0002 DIV2 =center.x
	~Screen.height #0002 DIV2 =center.y

	( draw hor line )
	#0000 =Screen.x ~center.y =Screen.y
	$draw-hor
		( draw ) #01 =Screen.color
		( incr ) ~Screen.x #0002 ADD2 =Screen.x
		,$draw-hor ~Screen.x ~Screen.width LTH2 JMP2? POP2

	( draw ver line )
	~center.x =Screen.x #0000 =Screen.y
	$draw-ver
		( draw ) #02 =Screen.color
		( incr ) ~Screen.y #0002 ADD2 =Screen.y
		,$draw-ver ~Screen.y ~Screen.height LTH2 JMP2? POP2

	( draw blending modes )
	#00 =i
	#0020 =Sprite.x #0020 =Sprite.y ,icon =Sprite.addr
	$draw-blends
		( draw ) #00 ~i ADD =Sprite.color
		( incr ) ~Sprite.x #0008 ADD2 =Sprite.x
		( incr ) ~i #01 ADD =i
		,$draw-blends ~i #10 LTH JMP2? POP2

BRK

@FRAME
	
	( update colors every 40 frames )
	~timer #40 NEQ ,skip1 ROT JMP2? POP2
		#0fac #fffa STR2 #f0bb #fffc STR2 #f053 #fff8 STR2
	@skip1
	~timer #80 NEQ ,skip2 ROT JMP2? POP2
		#00fc #fffc STR2 #f0bb #fff8 STR2 #f053 #fffa STR2
	@skip2
	~timer #c0 NEQ ,skip3 ROT JMP2? POP2
		#000f #fff8 STR2 #0f0f #fffa STR2 #ff00 #fffc STR2
	@skip3
	~timer #00 NEQ ,skip4 ROT JMP2? POP2
		#f0ac #fff8 STR2 #f0bb #fffa STR2 #f053 #fffc STR2
	@skip4
	~timer #01 ADD =timer

BRK

@icon [ 3c7e e7c3 c3e7 7e3c ]

|d000 @ERROR BRK 

|FF10 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
|FF20 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }

|FFF0 .RESET .FRAME .ERROR ( vectors )
|FFF8 [ f0ac f0bb f053 ] ( palette )