;note also test for dexti (decoder immediate extend (used for est))	
	
;*********************************************************************	
; includes
;*********************************************************************	

	.incdir	"F:\git\goldmomo_endlos\assembler_files\ucore\"
	.include "include\ucore_ctrl.i"

;*********************************************************************	
; sd header is placed here
;*********************************************************************	

	.include "boot_level_sdHeader.s"

;*********************************************************************
;* start at address 32 here
;*********************************************************************

	.def	picDataRAMDest		$d0000000
start	
	cli
	
	;setup video (720x450x32)
	
	gpci	r7,2		;next 4 + X
	br	setupVideo
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot

loop
	
	;fill with pattern

	gpci	r7,2
	br	makePattern
	movei	r6,>>picDataRAMDest    	;delay slot
	movei	r5,picDataRAMDest      	;delay slot
	moveih	r6,>>>picDataRAMDest  	;delay slot
	moveih	r5,>picDataRAMDest	;delay slot
	
	;copy pattern

	gpci	r7,2
	br	copyPattern
	movei	r6,>>picDataRAMDest    	;delay slot
	movei	r5,picDataRAMDest      	;delay slot
	moveih	r6,>>>picDataRAMDest  	;delay slot
	moveih	r5,>picDataRAMDest	;delay slot
	
	;

	br	loop	
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	
;******************************
;*
;* copyPattern
;*
;* r6:r5 dest
;*

copyPattern

	dexti	3
	movei	r3,$83		;y
	
cpyLoop	
	
	movei	r4,89		;1440/16-1 pixel
	
cpxLoop	;16 pixel

	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	erqldi	0		;low
	erqldi	1		;high
	erqldi	2		;low
	erqldi	3		;high
	erqldi	4		;low
	erqldi	5		;high
	erqldi	6		;low
	erqldi	7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	erqldi	0		;low
	erqldi	1		;high
	erqldi	2		;low
	erqldi	3		;high
	erqldi	4		;low
	erqldi	5		;high
	erqldi	6		;low
	erqldi	7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	erqldi	0		;low
	erqldi	1		;high
	erqldi	2		;low
	erqldi	3		;high
	erqldi	4		;low
	erqldi	5		;high
	erqldi	6		;low
	erqldi	7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	erqldi	0		;low
	erqldi	1		;high
	erqldi	2		;low
	erqldi	3		;high
	erqldi	4		;low
	erqldi	5		;high
	erqldi	6		;low
	erqldi	7		;high

	;load and throw away
	
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	eld	r0
	eld	r1
	
	;

	subi	r4,1
	brts	cpxLoop
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	
	
	subi	r3,1
	brts	cpyLoop
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	
	jmpi	r7,0
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
		
;******************************
;*
;* makePattern
;*
;* r6:r5 dest
;*

makePattern

	dexti	$ff
	movei	r1,$ff
	dexti	$ff
	movei	r2,$ff
	
	dexti	3
	movei	r3,$83		;y
	
yLoop	
	
	movei	r4,89		;1440/16-1 pixel
	
xLoop	;16 pixel
	
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	est	r1,0		;low
	est	r1,1		;high
	est	r1,2		;low
	est	r1,3		;high
	est	r1,4		;low
	est	r1,5		;high
	est	r1,6		;low
	est	r1,7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	est	r1,0		;low
	est	r1,1		;high
	est	r1,2		;low
	est	r1,3		;high
	est	r1,4		;low
	est	r1,5		;high
	est	r1,6		;low
	est	r1,7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	est	r1,0		;low
	est	r1,1		;high
	est	r1,2		;low
	est	r1,3		;high
	est	r1,4		;low
	est	r1,5		;high
	est	r1,6		;low
	est	r1,7		;high
	esadr	r6,r5
	addi	r5,8
	addtqi	r6,r6,0
	est	r1,0		;low
	est	r1,1		;high
	est	r1,2		;low
	est	r1,3		;high
	est	r1,4		;low		
	subi	r4,1
	brts	xLoop
	est	r1,5		;high           ;delay slot
	est	r1,6		;low            ;delay slot
	est	r1,7		;high           ;delay slot
	xor	r1,r1,r2	;delay slot
	
	movei	r0,$f
	nop
	and	r0,r3,r0
	nop
	cmpeqi	r0,$0
	xorts	r1,r2
	
	subi	r3,1
	brts	yLoop
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	
	
	jmpi	r7,0
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	nop			;delay slot
	
;******************************
;*
;* setupVideo
;*

setupVideo

	
	movei	r0,videoDefault		;source
	movei	r1,UcTimer2Ctrl		;dest-1
	moveih	r0,>videoDefault
	moveih	r1,>UcTimer2Ctrl			
	movei	r2,26			;27-1
	
setupVideoLoop

	rqldi	r0,0
	addi	r0,1
	addi	r1,1
	ld	r3
	subi	r2,1
	brts	setupVideoLoop
	st	r1,r3	;delay slot
	nop		;delay slot
	nop		;delay slot
	nop		;delay slot
		
	jmpi	r7,0
	nop		;delay slot
	nop		;delay slot
	nop		;delay slot
	nop		;delay slot	
	
;*********************************************************************
;* data
;*********************************************************************
	
videoDefault		;AD NAME									
	
	word	$0001	;10 VIDEO_ON					1 (ON)
	word	$0097	;11 HSYNC (D = 11 .. 0)				152-1
	word	$017f	;12 HSTART (D = 11 .. 0)			384-1
	word	$017d	;13 HMEMSTART (D = 11 .. 0)			382-1
	word	$071f	;14 HSTOP (D = 11 .. 0)				1824-1
	word	$076f	;15 HTOTAL (D = 11 .. 0)			1904-1
	word	$0002	;16 VSYNC (D = 10 .. 0)				3-1
	word	$001e	;17 VSTART (D = 10 .. 0)			31-1
	word	$03a2	;18 VSTOP  (D = 10 .. 0)			931-1
	word	$03a3	;19 VTOTAL  (D = 10 .. 0)			932-1
	word	$0000	;1a LC ADDER LOW				$0000
	word	$0100	;1b LC ADDER HIGH				$0040	
	word	$0000	;1c LC ADDER LATCH				X
	word	$0000	;1d LC START (10 .. 0) Pixeloffset		$0000	
	word	$0000	;1e						X
	word	$0000	;1f						X
	word	$0008	;20 HLOADSTART 					8
	word	$05a8	;21 HLOADSTOP					180+8
	word	$001e	;22 VLOADSTART 					31-1
	word	$03a2	;23 VLOADSTOP 					931-1
	word	$0001	;24 VLOADNEXT					4
	word	$0000	;25 MEM_STARTADR_store low			$0000
	word	$d000	;26 MEM_STARTADR_store high			$d000
	word	$0000	;27 MEM_LINEOFFSET_store low			$0000
	word	$0000	;28 MEM_LINEOFFSET_store high			$0000
	word	$0000	;29 MEM_MODE_store 				32 Bit
	word	$0000	;2a LATCH MEM_STARTADR/LINEOFFSET/MODE		X
		
	
	