( draw routines )

:dev/r fff8 ( std read port )
:dev/w fff9 ( std write port )

;x_ 2 ;y_ 2

;x 2 ;y 2 ;w 2 ;h 2
;color 1

|0100 @RESET

	( set dev/write to screen ) 
	,01 ,dev/w STR 

	( set color 1 )
	,03 ,color STR

	,01 ,color STR
	( fill rect x y w h )
	,0020 ,0020 ,0060 ,0040 ,fillrect JSR

	,02 ,color STR
	( fill rect x y w h )
	,0030 ,0030 ,0040 ,0060 ,fillrect JSR

	,03 ,color STR
	( fill rect x y w h )
	,0040 ,0040 ,0060 ,0040 ,fillrect JSR

	,redraw JSR

BRK

@redraw
	,0000 IOW^
	,0000 IOW^
	,00 IOW
	,01 IOW
	RTS

@putpixel 
	IOW^ ( y short )
	IOW^ ( x short )
	,color LDR IOW  ( color byte )
	,00 IOW  ( redraw byte )
	RTS

@fillrect
	( store shape )
	,h STR^ ,w STR^ ,y STR^ ,x STR^
	( set head )
	,x LDR^ ,x_ STR^ ,y LDR^ ,y_ STR^
	( paint row )
	,fillrectrow JSR
	RTS

@fillrectcol
	,x_ LDR^ ,y_ LDR^ ,putpixel JSR
	( incr x )
	,x_ LDR^ ,0001 ADD^ ,x_ STR^ 
	( check if greater than w )
	,x_ LDR^ ,w LDR^ ,x LDR^ ADD^ GTH^ RTS?
	,fillrectcol JMP
	RTS

@fillrectrow
	,x LDR^ ,x_ STR^
	,fillrectcol JSR
	( incr x )
	,y_ LDR^ ,0001 ADD^ ,y_ STR^ 
	( check if greater than w )
	,y_ LDR^ ,h LDR^ ,y LDR^ ADD^ GTH^ RTS?
	,fillrectrow JMP
	RTS

|c000 @FRAME BRK 
|d000 @ERROR BRK 
|FFFA .RESET .FRAME .ERROR