( dev/ctrl )

&Screen     { width 2 height 2 pad 4 y 2 x 2 color 1 }
&Sprite     { pad 8 x 2 y 2 addr 2 color 1 }
&Controller { buttons 1 }

&Point2d { x 2 y 2 }

;pos Point2d 
;sprite 2

|0100 @RESET 

	( set origin )
	~dev/screen.width #0002 DIV2 =pos.x 
	~dev/screen.height #0002 DIV2 =pos.y

	#12 ,up_icn ~pos.y ~pos.x ,draw-sprite JSR

BRK

|c000 @FRAME 

	,default_icn =sprite

	~dev/ctrl.buttons #10 NEQ ,next1 ROT JMP? POP2
		,up_icn =sprite
		~pos.y #0001 SUB2 =pos.y
	@next1
	~dev/ctrl.buttons #20 NEQ ,next2 ROT JMP? POP2
		,down_icn =sprite
		~pos.y #0001 ADD2 =pos.y
	@next2
	~dev/ctrl.buttons #40 NEQ ,next3 ROT JMP? POP2
		,left_icn =sprite
		~pos.x #0001 SUB2 =pos.x
	@next3
	~dev/ctrl.buttons #80 NEQ ,end ROT JMP? POP2
		,right_icn =sprite
		~pos.x #0001 ADD2 =pos.x
	@end
	( redraw )
	#13 ~sprite ~pos.y ~pos.x ,draw-sprite JSR

BRK

@default_icn [ 3c7e ffdb ffe7 7e3c ]
@up_icn      [ 2466 e7db ffff 7e3c ]
@down_icn    [ 3c7e ffff dbe7 6624 ]
@left_icn    [ 3c7e ef1f 1fef 7e3c ]
@right_icn   [ 3c7e f7f8 f8f7 7e3c ]

@draw-sprite
	=dev/sprite.x
	=dev/sprite.y
	=dev/sprite.addr
	=dev/sprite.color
	RTS

|d000 @ERROR BRK 

|FF10 ;dev/screen Screen
|FF20 ;dev/sprite Sprite
|FF30 ;dev/ctrl   Controller

|FFF0 [ 02ac 05bb 0b53 ] ( palette )
|FFFA .RESET .FRAME .ERROR