;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 picDataROM $e0000000 .def picDataRAM $d0000000 .def l2duLow 0 .def l2duHigh 1 .def l2dduLow 2 .def l2dduHigh 3 .def l2dvLow 4 .def l2dvHigh 5 .def l2ddvLow 6 .def l2ddvHigh 7 .def l2dxmask 8 .def l2dymask 9 .def l2dxwidth 10 .def l2dsadrLow 11 .def l2dsadrHigh 12 .def l2dLast 12 start cli ;setup video (360x225) gpci r7,2 ;next 4 + X br setupVideo nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot movei r6,picDataRAM ;destination movei r7,>>picDataRAM moveih r6,>picDataRAM moveih r7,>>>picDataRAM nop ; movei r0,223 ;line cnt movei r5,0 ;y yloop push r0 push r5 ;change l2d struct ;y dexti >l2dData movei r1,l2dData ssto l2dvHigh stwo r1,r5 ;set y ;copy l2d struct to ucore sr dexti >l2dData movei r1,l2dData movei r2,0 ;cnt l2dSetup rqldi r1,0 addi r1,1 nop ld r0 setssr r2,5 ;write sel setssr r0,6 ;write data cmpeqi r2,l2dLast ;end? brtc l2dSetup addi r2,1 ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;push pipeline exl2den exl2den exl2den exl2den ;45 * 8 = 360 pixel process movei r5,44 scanloop exl2den exl2denerqld exl2denerqld exl2denerqld exl2denerqld exl2denerqld exl2denerqld exl2denerqld exl2derqld esadr r7,r6 addi r6,8 addtqi r7,r7,0 eld r0 eld r1 eld r2 eld r3 est r0,0 est r1,1 est r2,2 est r3,3 eld r0 eld r1 eld r2 eld r3 subi r5,1 brts scanloop est r0,4 ;delay slot est r1,5 ;delay slot est r2,6 ;delay slot est r3,7 ;delay slot ; rqpop rqpop nop pop r5 pop r0 addi r5,1 subi r0,1 brts yloop nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;copy pic (rom -> ram) ;movei r0,picDataROM ;source ;movei r1,>>picDataROM ;moveih r0,>picDataROM ;moveih r1,>>>picDataROM ; ;movei r2,picDataRAM ;destination ;movei r3,>>picDataRAM ;moveih r2,>picDataRAM ;moveih r3,>>>picDataRAM ; ;movei r5,extCopy16 ;nop ;moveih r5,>extCopy16 ;gpci r7,2 ;next 4 + X ;jmpi r5,0 ;movei r4,$c6 ;delay slot ;nop ;delay slot ;moveih r4,$13 ;delay slot ;nop ;delay slot end br end nop ;delay slot nop ;delay slot nop ;delay slot nop ;delay slot ;****************************** ;* extCopy16 ;* ;* r1:r0 source ;* r3:r2 dest ;* r4 count - 1 (16 words per count) ;* extCopy16 push r5 push r6 extCopy16Loop esadr r1,r0 erqldi 0 erqldi 1 erqldi 2 erqldi 3 erqldi 4 erqldi 5 erqldi 6 erqldi 7 erqldi 8 erqldi 9 erqldi 10 erqldi 11 erqldi 12 erqldi 13 erqldi 14 erqldi 15 esadr r3,r2 eld r5 eld r6 est r5,0 est r6,1 eld r5 eld r6 est r5,2 est r6,3 eld r5 eld r6 est r5,4 est r6,5 eld r5 eld r6 est r5,6 est r6,7 eld r5 eld r6 dexti 1 ;add 1<<3 (8) to next im3 value est r5,0 dexti 1 est r6,1 eld r5 eld r6 dexti 1 est r5,2 dexti 1 est r6,3 eld r5 eld r6 dexti 1 est r5,4 dexti 1 est r6,5 eld r5 eld r6 dexti 1 est r5,6 dexti 1 est r6,7 subi r4,1 brts extCopy16Loop addi r0,16 ;delay slot addtqi r1,r1,0 ;delay slot addi r2,16 ;delay slot addtqi r3,r3,0 ;delay slot rqpop rqpop jmpi r7,0 pop r6 ;delay slot pop r7 ;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 NEW DEFAULT word $0001 ;10 VIDEO_ON 1 1 (ON) word $0097 ;11 HSYNC (D = 11 .. 0) 152-1 152-1 word $017f ;12 HSTART (D = 11 .. 0) 384-1 384-1 word $017d ;13 HMEMSTART (D = 11 .. 0) 382-1 382-1 word $071f ;14 HSTOP (D = 11 .. 0) 1824-1 1824-1 word $076f ;15 HTOTAL (D = 11 .. 0) 1904-1 1904-1 word $0002 ;16 VSYNC (D = 10 .. 0) 3-1 3-1 word $001e ;17 VSTART (D = 10 .. 0) 31-1 31-1 word $03a2 ;18 VSTOP (D = 10 .. 0) 931-1 931-1 word $03a3 ;19 VTOTAL (D = 10 .. 0) 932-1 932-1 word $0000 ;1a LC ADDER LOW $0000 $0000 word $0040 ;1b LC ADDER HIGH $0080 $0040 word $0000 ;1c LC ADDER LATCH X X word $0000 ;1d LC START (10 .. 0) Pixeloffset $0000 $0000 word $0000 ;1e X X word $0000 ;1f X X word $0008 ;20 HLOADSTART 8 8 word $00bc ;21 HLOADSTOP 360+8 180+8 word $001e ;22 VLOADSTART 31-1 31-1 word $03a2 ;23 VLOADSTOP 931-1 931-1 word $0004 ;24 VLOADNEXT 2 4 word $0000 ;25 MEM_STARTADR_store low $0000 $0000 word $d000 ;26 MEM_STARTADR_store high $f000 $f000 word $0000 ;27 MEMLowINEOFFSET_store low $0000 $0000 word $0000 ;28 MEMLowINEOFFSET_store high $0000 $0000 word $0002 ;29 MEM_MODE_store 2 2 (X1R5G5B5X1R5G5B5) word $0000 ;2a LATCH MEM_STARTADR/LINEOFFSET/MODE X X ; l2dData word $0000 ;u Low word $0000 ;u High word $0000 ;du Low word $0001 ;du High word $0000 ;v Low word $0000 ;v High word $0000 ;$cfff ;dv Low word $0000 ;$ffff ;dv High word $00ff ;xmask word $007f ;ymask word $0168 ;xwidth word $0040 ;sadr Low word $e000 ;sadr High