URL
https://opencores.org/ocsvn/thor/thor/trunk
Subversion Repositories thor
[/] [thor/] [trunk/] [FT64/] [software/] [boot/] [BIOSMain.s] - Rev 62
Go to most recent revision | Compare with Previous | Blame | View Log
code align 16 ;==================================================== ; Basic Block 0 ;==================================================== public code _DBERout: sub $sp,$sp,#240 sw $v0,0[$sp] sw $v1,8[$sp] sw $v2,16[$sp] sw $v3,24[$sp] sw $t0,32[$sp] sw $t1,40[$sp] sw $t2,48[$sp] sw $t3,56[$sp] sw $t4,64[$sp] sw $t5,72[$sp] sw $t6,80[$sp] sw $t7,88[$sp] sw $t8,96[$sp] sw $t9,104[$sp] sw $t10,112[$sp] sw $t11,120[$sp] sw $t12,128[$sp] sw $t13,136[$sp] sw $t14,144[$sp] sw $t15,152[$sp] sw $r21,160[$sp] sw $r22,168[$sp] sw $r23,176[$sp] sw $r24,184[$sp] sw $r25,192[$sp] sw $r26,200[$sp] sw $r27,208[$sp] sw $r28,216[$sp] sw $r29,224[$sp] sw $r30,232[$sp] sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_10 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#8 sw $r21,0[$sp] lw $r21,-8[$fp] ; DBGDisplayString("\r\nDatabus error: "); sub $sp,$sp,#8 sw $r0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 ; puthex(GetEPC()); call _GetEPC mov $a0,$v0 call _puthex ; putch(' '); ldi $a0,#32 call _putch ; puthex(GetBadAddr()); call _GetBadAddr mov $a0,$v0 call _puthex ; putch(' '); ldi $a0,#32 call _putch ; for (nn = 63; nn >= 0; nn--) { ldi $r21,#63 BIOSMain_13: blt $r21,$r0,BIOSMain_14 ;==================================================== ; Basic Block 1 ;==================================================== ; SetPCHNDX(nn); sub $sp,$sp,#8 sw $r21,0[$sp] call _SetPCHNDX add $sp,$sp,#8 ; puthex(ReadPCHIST()); call _ReadPCHIST mov $a0,$v0 call _puthex ; putch(' '); ldi $a0,#32 call _putch sub $r21,$r21,#1 bra BIOSMain_13 BIOSMain_14: BIOSMain_16: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_16 BIOSMain_10: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] lw $r21,0[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] lw $v0,0[$sp] lw $v1,8[$sp] lw $v2,16[$sp] lw $v3,24[$sp] lw $t0,32[$sp] lw $t1,40[$sp] lw $t2,48[$sp] lw $t3,56[$sp] lw $t4,64[$sp] lw $t5,72[$sp] lw $t6,80[$sp] lw $t7,88[$sp] lw $t8,96[$sp] lw $t9,104[$sp] lw $t10,112[$sp] lw $t11,120[$sp] lw $t12,128[$sp] lw $t13,136[$sp] lw $t14,144[$sp] lw $t15,152[$sp] lw $r21,160[$sp] lw $r22,168[$sp] lw $r23,176[$sp] lw $r24,184[$sp] lw $r25,192[$sp] lw $r26,200[$sp] lw $r27,208[$sp] lw $r28,216[$sp] lw $r29,224[$sp] lw $r30,232[$sp] add $sp,$sp,#240 rte endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _BIOSMain: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_72 mov $fp,$sp sub $sp,$sp,#40 sub $sp,$sp,#24 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] lw $r21,-32[$fp] lw $r22,-8[$fp] lw $r23,-40[$fp] ; float pi = 3.1415926535897932384626; lw $r22,BIOSMain_21 ldi $r23,#0 ; LEDS(1); ldi $a0,#1 ; asm { sh $a0,$FFDC0600 ; DBGAttr = 0x087FC00;//0b0000_1000_0111_1111_1100_0000_0000; ldi $t0,#8911872 sh $t0,_DBGAttr ; DBGClearScreen(); call _DBGClearScreen ; DBGHomeCursor(); call _DBGHomeCursor ; DBGDisplayString(" FT64 Bios Started\r\n"); sub $sp,$sp,#8 ldi $t0,#BIOSMain_22 sw $t0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 ; DBGDisplayString(" Menu\r\n up = ramtest\r\n down = graphics demo\r\n left = float test\r\n right=TinyBasic\r\n"); sub $sp,$sp,#8 ldi $t0,#BIOSMain_23 sw $t0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 BIOSMain_79: ; asm { lb $v0,BUTTONS ; } mov $r21,$v0 ; case 4: bbs $r21,#2,BIOSMain_91 ;==================================================== ; Basic Block 1 ;==================================================== ; case 8: bbs $r21,#3,BIOSMain_92 ;==================================================== ; Basic Block 2 ;==================================================== ; case 2: bbs $r21,#1,BIOSMain_93 ;==================================================== ; Basic Block 3 ;==================================================== ; case 1: bbs $r21,#0,BIOSMain_94 ;==================================================== ; Basic Block 4 ;==================================================== bra BIOSMain_85 BIOSMain_91: BIOSMain_95: ;==================================================== ; Basic Block 5 ;==================================================== ; asm { lb $v0,BUTTONS ; } beq $v0,$r0,BIOSMain_96 ;==================================================== ; Basic Block 6 ;==================================================== ; while(GetButton()); bra BIOSMain_95 BIOSMain_96: ;==================================================== ; Basic Block 7 ;==================================================== ; SpriteDemo(); call _SpriteDemo ; break; bra BIOSMain_85 BIOSMain_92: BIOSMain_101: ;==================================================== ; Basic Block 8 ;==================================================== ; asm { lb $v0,BUTTONS ; } beq $v0,$r0,BIOSMain_102 ;==================================================== ; Basic Block 9 ;==================================================== ; while(GetButton()); bra BIOSMain_101 BIOSMain_102: ;==================================================== ; Basic Block 10 ;==================================================== ; ramtest(); call _ramtest ; break; bra BIOSMain_85 BIOSMain_93: BIOSMain_107: ;==================================================== ; Basic Block 11 ;==================================================== ; asm { lb $v0,BUTTONS ; } beq $v0,$r0,BIOSMain_108 ;==================================================== ; Basic Block 12 ;==================================================== ; while(GetButton()); bra BIOSMain_107 BIOSMain_108: ;==================================================== ; Basic Block 13 ;==================================================== ; FloatTest(); call _FloatTest ; break; bra BIOSMain_85 BIOSMain_94: BIOSMain_113: ;==================================================== ; Basic Block 14 ;==================================================== ; asm { lb $v0,BUTTONS ; } beq $v0,$r0,BIOSMain_114 ;==================================================== ; Basic Block 15 ;==================================================== ; while(GetButton()); bra BIOSMain_113 BIOSMain_114: ;==================================================== ; Basic Block 16 ;==================================================== ; asm { jmp TinyBasicDSD9 BIOSMain_85: bra BIOSMain_79 BIOSMain_72: ;==================================================== ; Basic Block 17 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _BTNCIRQHandler: sub $sp,$sp,#240 sw $v0,0[$sp] sw $v1,8[$sp] sw $v2,16[$sp] sw $v3,24[$sp] sw $t0,32[$sp] sw $t1,40[$sp] sw $t2,48[$sp] sw $t3,56[$sp] sw $t4,64[$sp] sw $t5,72[$sp] sw $t6,80[$sp] sw $t7,88[$sp] sw $t8,96[$sp] sw $t9,104[$sp] sw $t10,112[$sp] sw $t11,120[$sp] sw $t12,128[$sp] sw $t13,136[$sp] sw $t14,144[$sp] sw $t15,152[$sp] sw $r21,160[$sp] sw $r22,168[$sp] sw $r23,176[$sp] sw $r24,184[$sp] sw $r25,192[$sp] sw $r26,200[$sp] sw $r27,208[$sp] sw $r28,216[$sp] sw $r29,224[$sp] sw $r30,232[$sp] sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_140 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#8 sw $r21,0[$sp] lw $r21,-8[$fp] ; asm { ldi r1,#30 sh r1,PIC_ESR ; DBGDisplayString("\r\nPC History:\r\n"); sub $sp,$sp,#8 ldi $t0,#BIOSMain_124 sw $t0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 ; for (nn = 63; nn >= 0; nn--) { ldi $r21,#63 BIOSMain_143: blt $r21,$r0,BIOSMain_144 ;==================================================== ; Basic Block 1 ;==================================================== ; SetPCHNDX(nn); mov $a0,$r21 ; asm { csrrw $r0,#$101,$a0 ; asm { csrrd $v0,#$100,$r0 ; } mov $a0,$v0 call _puthex ; putch(' '); ldi $a0,#32 call _putch sub $r21,$r21,#1 bra BIOSMain_143 BIOSMain_144: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_142 BIOSMain_140: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_142: lw $r21,0[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] lw $v0,0[$sp] lw $v1,8[$sp] lw $v2,16[$sp] lw $v3,24[$sp] lw $t0,32[$sp] lw $t1,40[$sp] lw $t2,48[$sp] lw $t3,56[$sp] lw $t4,64[$sp] lw $t5,72[$sp] lw $t6,80[$sp] lw $t7,88[$sp] lw $t8,96[$sp] lw $t9,104[$sp] lw $t10,112[$sp] lw $t11,120[$sp] lw $t12,128[$sp] lw $t13,136[$sp] lw $t14,144[$sp] lw $t15,152[$sp] lw $r21,160[$sp] lw $r22,168[$sp] lw $r23,176[$sp] lw $r24,184[$sp] lw $r25,192[$sp] lw $r26,200[$sp] lw $r27,208[$sp] lw $r28,216[$sp] lw $r29,224[$sp] lw $r30,232[$sp] add $sp,$sp,#240 rte endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _IBERout: sub $sp,$sp,#240 sw $v0,0[$sp] sw $v1,8[$sp] sw $v2,16[$sp] sw $v3,24[$sp] sw $t0,32[$sp] sw $t1,40[$sp] sw $t2,48[$sp] sw $t3,56[$sp] sw $t4,64[$sp] sw $t5,72[$sp] sw $t6,80[$sp] sw $t7,88[$sp] sw $t8,96[$sp] sw $t9,104[$sp] sw $t10,112[$sp] sw $t11,120[$sp] sw $t12,128[$sp] sw $t13,136[$sp] sw $t14,144[$sp] sw $t15,152[$sp] sw $r21,160[$sp] sw $r22,168[$sp] sw $r23,176[$sp] sw $r24,184[$sp] sw $r25,192[$sp] sw $r26,200[$sp] sw $r27,208[$sp] sw $r28,216[$sp] sw $r29,224[$sp] sw $r30,232[$sp] sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_174 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#8 sw $r21,0[$sp] lw $r21,-8[$fp] ; DBGDisplayString("\r\nInstruction Bus Error:\r\n"); sub $sp,$sp,#8 ldi $t0,#BIOSMain_155 sw $t0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 ; DBGDisplayString("PC History:\r\n"); sub $sp,$sp,#8 ldi $t0,#BIOSMain_156 sw $t0,0[$sp] call _DBGDisplayString add $sp,$sp,#8 ; for (nn = 63; nn >= 0; nn--) { ldi $r21,#63 BIOSMain_177: blt $r21,$r0,BIOSMain_178 ;==================================================== ; Basic Block 1 ;==================================================== ; SetPCHNDX(nn); mov $a0,$r21 ; asm { csrrw $r0,#$101,$a0 ; asm { csrrd $v0,#$100,$r0 ; } mov $a0,$v0 call _puthex ; putch(' '); ldi $a0,#32 call _putch sub $r21,$r21,#1 bra BIOSMain_177 BIOSMain_178: BIOSMain_188: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_188 BIOSMain_174: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] lw $r21,0[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] lw $v0,0[$sp] lw $v1,8[$sp] lw $v2,16[$sp] lw $v3,24[$sp] lw $t0,32[$sp] lw $t1,40[$sp] lw $t2,48[$sp] lw $t3,56[$sp] lw $t4,64[$sp] lw $t5,72[$sp] lw $t6,80[$sp] lw $t7,88[$sp] lw $t8,96[$sp] lw $t9,104[$sp] lw $t10,112[$sp] lw $t11,120[$sp] lw $t12,128[$sp] lw $t13,136[$sp] lw $t14,144[$sp] lw $t15,152[$sp] lw $r21,160[$sp] lw $r22,168[$sp] lw $r23,176[$sp] lw $r24,184[$sp] lw $r25,192[$sp] lw $r26,200[$sp] lw $r27,208[$sp] lw $r28,216[$sp] lw $r29,224[$sp] lw $r30,232[$sp] add $sp,$sp,#240 rte endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrWaitQue: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#0 ; asm { sub $sp,$sp,#16 sw $v1,[$sp] sw $r6,8[$sp] ldi $r6,#$FFDCC000 neg $v1,$a0 add $v1,$v1,#1020 .0001: lhu $v0,$6E8[r6] bgt $v0,$v1,.0001 lw $v1,[$sp] lw $r6,8[$sp] add $sp,$sp,#16 ; } mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrQueCmd: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#0 ; asm { sub $sp,$sp,#8 sw $r6,[$sp] ldi $r6,#$FFDCC000 sh $a0,$6E0[$r6] ; set value sh $a1,$6E4[$r6] ; set command sh $r0,$6E8[$r6] ; queue lw $r6,[$sp] add $sp,$sp,#8 ; } mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrResetCmdQue: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_211 mov $fp,$sp sub $sp,$sp,#8 ldi $a0,#0 ldi $a1,#254 call _GrQueCmd bra BIOSMain_213 BIOSMain_211: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_213: mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrFlushCmdQue: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_222 mov $fp,$sp sub $sp,$sp,#16 sub $sp,$sp,#8 sw $r21,0[$sp] lw $r21,-8[$fp] ; GrWaitQue(4); ldi $a0,#4 call _GrWaitQue ; for (nn = 0; nn < 4; nn++) ldi $r21,#0 BIOSMain_225: cmp $t0,$r21,#4 bge $t0,$r0,BIOSMain_226,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; GrQueCmd(0,255); ldi $a0,#0 ldi $a1,#255 call _GrQueCmd add $r21,$r21,#1 bra BIOSMain_225 BIOSMain_226: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_224 BIOSMain_222: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_224: lw $r21,0[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrPlotPoint: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_233 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#32 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] lw $r21,48[$fp] lw $r22,24[$fp] lw $r23,32[$fp] lw $r24,40[$fp] ; GrWaitQue(5); ldi $a0,#5 call _GrWaitQue ; GrQueCmd(color & 0x7fff, 12); // set pen color and $t0,$r24,#32767 mov $a0,$t0 ldi $a1,#12 call _GrQueCmd ; GrQueCmd(alpha & 0xffff, 14); // set alpha value and $t0,$r21,#65535 mov $a0,$t0 ldi $a1,#14 call _GrQueCmd ; GrQueCmd(x,16); // set x0 pos mov $a0,$r22 ldi $a1,#16 call _GrQueCmd ; GrQueCmd(y,17); // set y0 pos mov $a0,$r23 ldi $a1,#17 call _GrQueCmd ; GrQueCmd(0x10,1); // plot point ldi $a0,#16 ldi $a1,#1 call _GrQueCmd bra BIOSMain_235 BIOSMain_233: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_235: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrDrawLine: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_241 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#48 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] sw $r25,32[$sp] sw $r26,40[$sp] lw $r21,40[$fp] lw $r22,32[$fp] lw $r23,24[$fp] lw $r24,56[$fp] lw $r25,64[$fp] lw $r26,48[$fp] ; GrWaitQue(7); ldi $a0,#7 call _GrWaitQue ; GrQueCmd(color & 0x7fff, 12); // set pen color and $t0,$r24,#32767 mov $a0,$t0 ldi $a1,#12 call _GrQueCmd ; GrQueCmd(alpha & 0xffff, 14); // set alpha value and $t0,$r25,#65535 mov $a0,$t0 ldi $a1,#14 call _GrQueCmd ; GrQueCmd(x0,16); // set x0 pos mov $a0,$r23 ldi $a1,#16 call _GrQueCmd ; GrQueCmd(y0,17); // set y0 pos mov $a0,$r22 ldi $a1,#17 call _GrQueCmd ; GrQueCmd(x1,19); // set x1 pos mov $a0,$r21 ldi $a1,#19 call _GrQueCmd ; GrQueCmd(y1,20); // set y1 pos mov $a0,$r26 ldi $a1,#20 call _GrQueCmd ; GrQueCmd(0x10,2); // draw line ldi $a0,#16 ldi $a1,#2 call _GrQueCmd bra BIOSMain_243 BIOSMain_241: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_243: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] lw $r25,32[$sp] lw $r26,40[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomPoints: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_252 mov $fp,$sp sub $sp,$sp,#32 sub $sp,$sp,#32 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] lw $r21,-8[$fp] lw $r22,-16[$fp] lw $r23,-32[$fp] lw $r24,-24[$fp] ; randStream = 0; sw $r0,_randStream ; for (nn = 0; nn < 10000; nn++) { ldi $r21,#0 BIOSMain_255: cmp $t0,$r21,#10000 bge $t0,$r0,BIOSMain_256,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; color = GetRand(randStream) & 0x7fff; lw $t1,_randStream mov $a0,$t1 call _GetRand and $r23,$v0,#32767 ; x = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r22,$t1,#128 ; y = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r24,$t1,#14 ; GrPlotPoint(x<<16,y<<16,color,-1); sub $sp,$sp,#32 asl $t0,$r22,#16 sw $t0,0[$sp] asl $t1,$r24,#16 sw $t1,8[$sp] sw $r23,16[$sp] ldi $t2,#-1 sw $t2,24[$sp] call _GrPlotPoint add $sp,$sp,#32 add $r21,$r21,#1 bra BIOSMain_255 BIOSMain_256: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_254 BIOSMain_252: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_254: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomLines: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_266 mov $fp,$sp sub $sp,$sp,#48 sub $sp,$sp,#48 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] sw $r25,32[$sp] sw $r26,40[$sp] lw $r21,-8[$fp] lw $r22,-32[$fp] lw $r23,-16[$fp] lw $r24,-24[$fp] lw $r25,-48[$fp] lw $r26,-40[$fp] ; randStream = 0; sw $r0,_randStream ; for (nn = 0; nn < 20000; nn++) { ldi $r21,#0 BIOSMain_269: cmp $t0,$r21,#20000 bge $t0,$r0,BIOSMain_270,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; color = GetRand(randStream) & 0x7fff; lw $t1,_randStream mov $a0,$t1 call _GetRand and $r25,$v0,#32767 ; x0 = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r23,$t1,#128 ; y0 = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r24,$t1,#14 ; x1 = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r22,$t1,#128 ; y1 = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r26,$t1,#14 ; GrDrawLine(x0<<16,y0<<16,x1<<16,y1<<16,color,-1); sub $sp,$sp,#48 asl $t0,$r23,#16 sw $t0,0[$sp] asl $t1,$r24,#16 sw $t1,8[$sp] asl $t2,$r22,#16 sw $t2,16[$sp] asl $t3,$r26,#16 sw $t3,24[$sp] sw $r25,32[$sp] ldi $t4,#-1 sw $t4,40[$sp] call _GrDrawLine add $sp,$sp,#48 add $r21,$r21,#1 bra BIOSMain_269 BIOSMain_270: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_268 BIOSMain_266: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_268: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] lw $r25,32[$sp] lw $r26,40[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrFillRect: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_277 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#40 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] sw $r25,32[$sp] lw $r21,24[$fp] lw $r22,40[$fp] lw $r23,32[$fp] lw $r24,48[$fp] lw $r25,56[$fp] ; GrWaitQue(6); ldi $a0,#6 call _GrWaitQue ; GrQueCmd(color & 0x7fff, 13); // set fill color and $t0,$r25,#32767 mov $a0,$t0 ldi $a1,#13 call _GrQueCmd ; GrQueCmd(x0,16); // set x0 pos mov $a0,$r21 ldi $a1,#16 call _GrQueCmd ; GrQueCmd(y0,17); // set y0 pos mov $a0,$r23 ldi $a1,#17 call _GrQueCmd ; GrQueCmd(x1,19); // set x1 pos mov $a0,$r22 ldi $a1,#19 call _GrQueCmd ; GrQueCmd(y1,20); // set y1 pos mov $a0,$r24 ldi $a1,#20 call _GrQueCmd ; GrQueCmd(0x10,3); // fill rect ldi $a0,#16 ldi $a1,#3 call _GrQueCmd bra BIOSMain_279 BIOSMain_277: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_279: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] lw $r25,32[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomRects: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_288 mov $fp,$sp sub $sp,$sp,#48 sub $sp,$sp,#48 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] sw $r25,32[$sp] sw $r26,40[$sp] lw $r21,-8[$fp] lw $r22,-32[$fp] lw $r23,-16[$fp] lw $r24,-24[$fp] lw $r25,-48[$fp] lw $r26,-40[$fp] ; randStream = 0; sw $r0,_randStream ; for (nn = 0; nn < 1000; nn++) { ldi $r21,#0 BIOSMain_291: cmp $t0,$r21,#1000 bge $t0,$r0,BIOSMain_292,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; color = GetRand(randStream) & 0x7fff; lw $t1,_randStream mov $a0,$t1 call _GetRand and $r25,$v0,#32767 ; x0 = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r23,$t1,#128 ; y0 = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r24,$t1,#14 ; x1 = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r22,$t1,#128 ; y1 = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r26,$t1,#14 ; GrFillRect(x0<<16,y0<<16,x1<<16,y1<<16,color); sub $sp,$sp,#40 asl $t0,$r23,#16 sw $t0,0[$sp] asl $t1,$r24,#16 sw $t1,8[$sp] asl $t2,$r22,#16 sw $t2,16[$sp] asl $t3,$r26,#16 sw $t3,24[$sp] sw $r25,32[$sp] call _GrFillRect add $sp,$sp,#40 add $r21,$r21,#1 bra BIOSMain_291 BIOSMain_292: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_290 BIOSMain_288: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_290: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] lw $r25,32[$sp] lw $r26,40[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrDrawChar: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_299 mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#24 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] lw $r21,40[$fp] lw $r22,24[$fp] lw $r23,32[$fp] ; GrWaitQue(5); ldi $a0,#5 call _GrWaitQue ; GrQueCmd(0x7FFF, 12); // set pen color ldi $a0,#32767 ldi $a1,#12 call _GrQueCmd ; GrQueCmd(0x000F, 13); // set fill color ldi $a0,#15 ldi $a1,#13 call _GrQueCmd ; GrQueCmd(x,16); // set x0 pos mov $a0,$r22 ldi $a1,#16 call _GrQueCmd ; GrQueCmd(y,17); // set y0 pos mov $a0,$r23 ldi $a1,#17 call _GrQueCmd ; GrQueCmd(ch,0); // text blit mov $a0,$r21 ldi $a1,#0 call _GrQueCmd bra BIOSMain_301 BIOSMain_299: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_301: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomChars: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_310 mov $fp,$sp sub $sp,$sp,#40 sub $sp,$sp,#24 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] lw $r21,-24[$fp] lw $r22,-16[$fp] lw $r23,-32[$fp] ; randStream = 0; sw $r0,_randStream ; y0 = 128; ldi $r23,#128 ; ch = 'A'; ldi $r22,#65 ; GrWaitQue(2); ldi $a0,#2 call _GrWaitQue ; GrQueCmd(0x7FFF, 12); // set pen color ldi $a0,#32767 ldi $a1,#12 call _GrQueCmd ; GrQueCmd(0x000F, 13); // set fill color ldi $a0,#15 ldi $a1,#13 call _GrQueCmd ; for (x0 = 128; x0 < 500; x0 += 10) { ldi $r21,#128 BIOSMain_313: cmp $t0,$r21,#500 bge $t0,$r0,BIOSMain_314,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; GrWaitQue(3); ldi $a0,#3 call _GrWaitQue ; GrQueCmd(x0<<16,16); asl $t0,$r21,#16 mov $a0,$t0 ldi $a1,#16 call _GrQueCmd ; GrQueCmd(y0<<16,17); asl $t0,$r23,#16 mov $a0,$t0 ldi $a1,#17 call _GrQueCmd ; GrQueCmd(ch,0); mov $a0,$r22 ldi $a1,#0 call _GrQueCmd ; ch++; add $r22,$r22,#1 add $r21,$r21,#10 bra BIOSMain_313 BIOSMain_314: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_312 BIOSMain_310: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_312: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _GrClearScreen: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#16 sub $sp,$sp,#24 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] lw $r21,-8[$fp] ldi $r22,#480000 ; int nn; ldi $r23,#1048576 ; for (nn = 0; nn < 480000; nn++) ldi $r21,#0 BIOSMain_327: bge $r21,$r22,BIOSMain_328,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; pScreen[nn] = 0x000f; shl $v0,$r21,#1 ldi $v1,#15 sc $v1,[$r23+$v0] add $r21,$r21,#1 bra BIOSMain_327 BIOSMain_328: ;==================================================== ; Basic Block 2 ;==================================================== lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _ColorBandMemory: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_340 mov $fp,$sp sub $sp,$sp,#24 sub $sp,$sp,#32 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] lw $r21,-16[$fp] ldi $r22,#480000 lc $r23,-18[$fp] ; __int16 *pScreen = (__int16 *)0x100000; ldi $r24,#1048576 ; randStream = 0; sw $r0,_randStream ; for (nn = 0; nn < 480000; nn++) { ldi $r21,#0 BIOSMain_343: bge $r21,$r22,BIOSMain_344,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; if (nn % 1024 == 0) and $t0,$r21,#1023 bne $t0,$r0,BIOSMain_346 ;==================================================== ; Basic Block 2 ;==================================================== ; color = GetRand(randStream); lw $t0,_randStream mov $a0,$t0 call _GetRand mov $r23,$v0 BIOSMain_346: ; pScreen[nn] = color; sc $r23,[$r24+$r21*2] add $r21,$r21,#1 bra BIOSMain_343 BIOSMain_344: ;==================================================== ; Basic Block 3 ;==================================================== bra BIOSMain_342 BIOSMain_340: ;==================================================== ; Basic Block 4 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_342: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _EnableSprite: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#16 sw $r21,0[$sp] sw $r22,8[$sp] lw $r21,-8[$fp] lw $r22,16[$fp] ; unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000); ldi $r21,#4292657152 ; pAVIC[492] = pAVIC[492] | (1 << spriteno); lh $v1,1968[$r21] ldi $v3,#1 asl.h $v2,$v3,$r22 or $v0,$v1,$v2 sh $v0,1968[$r21] bfextu $v0,$v0,#0,#31 lw $r21,0[$sp] lw $r22,8[$sp] mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _EnableSprites: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#16 sw $r21,0[$sp] sw $r22,8[$sp] lw $r21,-8[$fp] lw $r22,16[$fp] ; unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000); ldi $r21,#4292657152 ; pAVIC[492] = pAVIC[492] | sprites; lh $v1,1968[$r21] or $v0,$v1,$r22 sh $v0,1968[$r21] bfextu $v0,$v0,#0,#31 lw $r21,0[$sp] lw $r22,8[$sp] mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomizeSpriteColors: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_372 mov $fp,$sp sub $sp,$sp,#16 sub $sp,$sp,#16 sw $r21,0[$sp] sw $r22,8[$sp] lw $r21,-8[$fp] ; int colorno; ldi $r22,#4292657152 ; randStream = 0; sw $r0,_randStream ; for (colorno = 2; colorno < 256; colorno++) { ldi $r21,#2 BIOSMain_375: cmp $t0,$r21,#256 bge $t0,$r0,BIOSMain_376,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; pSprite[colorno] = GetRand(randStream) & 0x7fff; shl $t0,$r21,#2 lw $t2,_randStream mov $a0,$t2 call _GetRand and $t1,$v0,#32767 sh $t1,[$r22+$t0] bfextu $t1,$t1,#0,#31 add $r21,$r21,#1 bra BIOSMain_375 BIOSMain_376: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_374 BIOSMain_372: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_374: lw $r21,0[$sp] lw $r22,8[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _SetSpritePos: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#32 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] lw $r21,-8[$fp] lw $r22,32[$fp] lw $r23,16[$fp] lw $r24,24[$fp] ; __int32 *pSprite = &((unsigned __int32 *)0xFFDCC000)[0x100]; ldi $v1,#1024 or $v2,$r0,#4292657152 add $r21,$v1,$v2 ; pSprite[spriteno*4 + 2] = (__int32)((y << 16) | x); shl $v2,$r23,#2 shl $v1,$v2,#2 add $v0,$v1,$r21 asl.h $v2,$r22,#16 or $v1,$v2,$r24 sh $v1,8[$v0] lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] mov $sp,$fp lw $fp,[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _RandomizeSpritePositions: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_394 mov $fp,$sp sub $sp,$sp,#32 sub $sp,$sp,#32 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] lw $r21,-8[$fp] lw $r22,-32[$fp] lw $r23,-16[$fp] lw $r24,-24[$fp] ; int spriteno; ldi $t1,#1024 or $t2,$r0,#4292657152 add $r22,$t1,$t2 ; randStream = 0; sw $r0,_randStream ; for (spriteno = 0; spriteno < 32; spriteno++) { ldi $r21,#0 BIOSMain_397: cmp $t0,$r21,#32 bge $t0,$r0,BIOSMain_398,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; x = (GetRand(randStream) % 400) + 128; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#400 add $r23,$t1,#128 ; y = (GetRand(randStream) % 300) + 14; lw $t2,_randStream mov $a0,$t2 call _GetRand mod $t1,$v0,#300 add $r24,$t1,#14 ; pSprite[2] = (y << 16) | x; asl.h $t1,$r24,#16 or $t0,$t1,$r23 sh $t0,8[$r22] ; pSprite += 4; add $r22,$r22,#16 add $r21,$r21,#1 bra BIOSMain_397 BIOSMain_398: ;==================================================== ; Basic Block 2 ;==================================================== bra BIOSMain_396 BIOSMain_394: ;==================================================== ; Basic Block 3 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_396: BIOSMain_400: lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _SpriteDemo: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_468 mov $fp,$sp sub $sp,$sp,#584 sub $sp,$sp,#104 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] sw $r24,24[$sp] sw $r25,32[$sp] sw $r26,40[$sp] sw $r27,48[$sp] sw $r28,56[$sp] sw $r29,64[$sp] sw $r30,72[$sp] sw $r31,80[$sp] sw $r32,88[$sp] sw $r33,96[$sp] lw $r21,-8[$fp] lw $r22,-528[$fp] lw $r23,-536[$fp] lw $r24,-552[$fp] lea $t0,-136[$fp] mov $r25,$t0 lea $t0,-264[$fp] mov $r26,$t0 lw $r27,-576[$fp] lw $r28,-560[$fp] lw $r29,-544[$fp] lea $t0,-520[$fp] mov $r30,$t0 lea $t0,-392[$fp] mov $r31,$t0 lw $r32,-568[$fp] ldi $r33,#50000 ; int spriteno; ldi $t1,#1024 or $t2,$r0,#4292657152 add $r32,$t1,$t2 ldi $r27,#503316480 ; randStream = 0; sw $r0,_randStream ; LEDS(2); ldi $a0,#2 ; asm { sh $a0,$FFDC0600 ; RandomizeSpriteColors(); call _RandomizeSpriteColors ; EnableSprites(-1); sub $sp,$sp,#8 ldi $t0,#-1 sw $t0,0[$sp] call _EnableSprites add $sp,$sp,#8 ; for (n = 0; n < 32 * 32 * 4; n = n + 1) ldi $r22,#0 BIOSMain_475: cmp $t0,$r22,#4096 bge $t0,$r0,BIOSMain_476,#2 ;==================================================== ; Basic Block 1 ;==================================================== ; pImages[n] = GetRand(randStream); shl $t0,$r22,#2 lw $t1,_randStream mov $a0,$t1 call _GetRand sh $v0,[$r27+$t0] bfextu $v0,$v0,#0,#31 add $r22,$r22,#1 bra BIOSMain_475 BIOSMain_476: ;==================================================== ; Basic Block 2 ;==================================================== ; x = 128; y = 64; ldi $r24,#128 ldi $r28,#64 ; for (spriteno = 0; spriteno < 32; spriteno++) { ldi $r21,#0 BIOSMain_478: cmp $t0,$r21,#32 bge $t0,$r0,BIOSMain_479,#2 ;==================================================== ; Basic Block 3 ;==================================================== ; pSprite[spriteno*4] = (__int32)&pImages[spriteno * 128]; shl $t1,$r21,#2 shl $t0,$t1,#2 shl.h $t3,$r21,#7 shl.h $t2,$t3,#2 add $t1,$t2,$r27 sh $t1,[$r32+$t0] ; pSprite[spriteno*4+1] = 32*60; shl $t2,$r21,#2 shl $t1,$t2,#2 add $t0,$t1,$r32 ldi $t1,#1920 sh $t1,4[$t0] bfextu $t1,$t1,#0,#31 ; xpos[spriteno] = x; sh $r24,[$r25+$r21*4] ; ypos[spriteno] = y; sh $r28,[$r26+$r21*4] ; SetSpritePos(spriteno, x, y); sub $sp,$sp,#24 sw $r21,0[$sp] sw $r24,8[$sp] sw $r28,16[$sp] call _SetSpritePos add $sp,$sp,#24 ; x += 20; add $r24,$r24,#20 ; if (x >= 500) { cmp $t0,$r24,#500 blt $t0,$r0,BIOSMain_481,#0 ;==================================================== ; Basic Block 4 ;==================================================== ; x = 128; ldi $r24,#128 ; y += 64; add $r28,$r28,#64 BIOSMain_481: add $r21,$r21,#1 bra BIOSMain_478 BIOSMain_479: ;==================================================== ; Basic Block 5 ;==================================================== ; LEDS(0xf7); ldi $a0,#247 ; asm { sh $a0,$FFDC0600 BIOSMain_487: ; btn = GetButton() & 31; sw $t0,584[$fp] ; asm { lb $v0,BUTTONS ; } lw $t0,584[$fp] and $a0,$v0,#31 ; asm { sh $a0,$FFDC0600 ; case 8: goto j1; bbs $r29,#3,BIOSMain_500 ;==================================================== ; Basic Block 6 ;==================================================== bra BIOSMain_497 BIOSMain_500: ;==================================================== ; Basic Block 7 ;==================================================== bra BIOSMain_401 BIOSMain_497: ;==================================================== ; Basic Block 8 ;==================================================== bra BIOSMain_487 BIOSMain_401: BIOSMain_501: ;==================================================== ; Basic Block 9 ;==================================================== sw $t0,584[$fp] ; asm { lb $v0,BUTTONS ; } and $t0,$v0,#31 beq $t0,$r0,BIOSMain_502 ;==================================================== ; Basic Block 10 ;==================================================== ; while (GetButton() & 31); bra BIOSMain_501 BIOSMain_502: ;==================================================== ; Basic Block 11 ;==================================================== ; for (spriteno = 0; spriteno < 32; spriteno++) { ldi $r21,#0 BIOSMain_507: cmp $t0,$r21,#32 bge $t0,$r0,BIOSMain_508,#2 ;==================================================== ; Basic Block 12 ;==================================================== ; dx[spriteno] = (GetRand(randStream) % 16) - 8; shl $t0,$r21,#2 lw $t3,_randStream mov $a0,$t3 call _GetRand and $t2,$v0,#15 sub $t1,$t2,#8 sh $t1,[$r31+$t0] ; dy[spriteno] = (GetRand(randStream) % 16) - 8; shl $t0,$r21,#2 lw $t3,_randStream mov $a0,$t3 call _GetRand and $t2,$v0,#15 sub $t1,$t2,#8 sh $t1,[$r30+$t0] add $r21,$r21,#1 bra BIOSMain_507 BIOSMain_508: ;==================================================== ; Basic Block 13 ;==================================================== ; for (n = 0; n < 32 * 32 * 2; n = n + 1) ldi $r22,#0 BIOSMain_510: cmp $t0,$r22,#2048 bge $t0,$r0,BIOSMain_511,#2 ;==================================================== ; Basic Block 14 ;==================================================== ; pImages[n] = GetRand(randStream); shl $t0,$r22,#2 lw $t1,_randStream mov $a0,$t1 call _GetRand sh $v0,[$r27+$t0] bfextu $v0,$v0,#0,#31 add $r22,$r22,#1 bra BIOSMain_510 BIOSMain_511: BIOSMain_513: ;==================================================== ; Basic Block 15 ;==================================================== ; for (m = 0; m < 50000; m++); // Timing delay ldi $r23,#0 BIOSMain_515: bge $r23,$r33,BIOSMain_516,#2 ;==================================================== ; Basic Block 16 ;==================================================== add $r23,$r23,#1 bra BIOSMain_515 BIOSMain_516: ;==================================================== ; Basic Block 17 ;==================================================== ; for (spriteno = 0; spriteno < 32; spriteno++) { ldi $r21,#0 BIOSMain_518: cmp $t0,$r21,#32 bge $t0,$r0,BIOSMain_519,#2 ;==================================================== ; Basic Block 18 ;==================================================== ; LEDS(spriteno); mov $a0,$r21 ; asm { sh $a0,$FFDC0600 ; xpos[spriteno] = xpos[spriteno] + dx[spriteno]; shl $t0,$r21,#2 lh $t2,[$r25+$r21*4] lh $t3,[$r31+$r21*4] add $t1,$t2,$t3 sh $t1,[$r25+$t0] ; ypos[spriteno] = ypos[spriteno] + dy[spriteno]; shl $t0,$r21,#2 lh $t2,[$r26+$r21*4] lh $t3,[$r30+$r21*4] add $t1,$t2,$t3 sh $t1,[$r26+$t0] ; if (xpos[spriteno] < 128) { lh $t0,[$r25+$r21*4] cmp $t1,$t0,#128 bge $t1,$r0,BIOSMain_525,#0 ;==================================================== ; Basic Block 19 ;==================================================== ; xpos[spriteno] = 128; shl $t0,$r21,#2 ldi $t1,#128 sh $t1,[$r25+$t0] ; dx[spriteno] = -dx[spriteno]; shl $t0,$r21,#2 lh $t2,[$r31+$r21*4] neg $t1,$t2 sh $t1,[$r31+$t0] BIOSMain_525: ; if (xpos[spriteno] >= 528) { lh $t0,[$r25+$r21*4] cmp $t1,$t0,#528 blt $t1,$r0,BIOSMain_527,#0 ;==================================================== ; Basic Block 20 ;==================================================== ; xpos[spriteno] = 528; shl $t0,$r21,#2 ldi $t1,#528 sh $t1,[$r25+$t0] ; dx[spriteno] = -dx[spriteno]; shl $t0,$r21,#2 lh $t2,[$r31+$r21*4] neg $t1,$t2 sh $t1,[$r31+$t0] BIOSMain_527: ; if (ypos[spriteno] < 14) { lh $t0,[$r26+$r21*4] cmp $t1,$t0,#14 bge $t1,$r0,BIOSMain_529,#0 ;==================================================== ; Basic Block 21 ;==================================================== ; ypos[spriteno] = 14; shl $t0,$r21,#2 ldi $t1,#14 sh $t1,[$r26+$t0] ; dy[spriteno] = -dy[spriteno]; shl $t0,$r21,#2 lh $t2,[$r30+$r21*4] neg $t1,$t2 sh $t1,[$r30+$t0] BIOSMain_529: ; if (ypos[spriteno] >= 314) lh $t0,[$r26+$r21*4] cmp $t1,$t0,#314 blt $t1,$r0,BIOSMain_531,#0 ;==================================================== ; Basic Block 22 ;==================================================== ; ypos[spriteno] = 314; shl $t0,$r21,#2 ldi $t1,#314 sh $t1,[$r26+$t0] BIOSMain_531: ; dy[spriteno] = -dy[spriteno]; shl $t0,$r21,#2 lh $t2,[$r30+$r21*4] neg $t1,$t2 sh $t1,[$r30+$t0] add $r21,$r21,#1 bra BIOSMain_518 BIOSMain_519: ;==================================================== ; Basic Block 23 ;==================================================== ; SetSpritePos(spriteno, (int)xpos[spriteno], (int)ypos[spriteno]); sub $sp,$sp,#24 sw $r21,0[$sp] lh $t0,[$r25+$r21*4] sw $t0,8[$sp] lh $t1,[$r26+$r21*4] sw $t1,16[$sp] call _SetSpritePos add $sp,$sp,#24 bra BIOSMain_513 BIOSMain_468: ;==================================================== ; Basic Block 24 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] lw $r24,24[$sp] lw $r25,32[$sp] lw $r26,40[$sp] lw $r27,48[$sp] lw $r28,56[$sp] lw $r29,64[$sp] lw $r30,72[$sp] lw $r31,80[$sp] lw $r32,88[$sp] lw $r33,96[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _AudioTest: sub $sp,$sp,#24 sw $lr,16[$sp] sw $xlr,8[$sp] sw $fp,[$sp] ldi $xlr,#BIOSMain_542 mov $fp,$sp sub $sp,$sp,#16 sub $sp,$sp,#16 sw $r21,0[$sp] sw $r22,8[$sp] lw $r21,-16[$fp] ; unsigned __int32 *pGPIO = (unsigned __int32 *)(0xFFDC0700); ldi $r22,#4292609792 ldi $r21,#4292657152 ; LEDS(0xf7); ldi $a0,#247 ; asm { sh $a0,$FFDC0600 ; pGPIO[0] = 0xFFFFFFFF; // turn on audio clocks ldi $t0,#4294967295 bfextu $r22,$t0,#0,#31 ; pAVIC[404] = 0x0000401F; // Enable channels and test mode ldi $t0,#16415 sh $t0,1616[$r21] bfextu $t0,$t0,#0,#31 bra BIOSMain_544 BIOSMain_542: ;==================================================== ; Basic Block 1 ;==================================================== lw $lr,8[$fp] sw $lr,16[$fp] BIOSMain_544: lw $r21,0[$sp] lw $r22,8[$sp] mov $sp,$fp lw $fp,[$sp] lw $xlr,8[$sp] lw $lr,16[$sp] ret #24 endpublic ;==================================================== ; Basic Block 0 ;==================================================== public code _InitAudio: sub $sp,$sp,#24 sw $fp,[$sp] mov $fp,$sp sub $sp,$sp,#8 sub $sp,$sp,#24 sw $r21,0[$sp] sw $r22,8[$sp] sw $r23,16[$sp] lw $r21,-8[$fp] ldi $r22,#65535 ldi $r23,#1048575 ; unsigned __int32 *pAVIC = ((unsigned __int32 *)0xFFDCC000); ldi $r21,#4292657152 ; pAVIC[384] = 0x200000; ldi $v0,#2097152 sh $v0,1536[$r21] bfextu $v0,$v0,#0,#31 ; pAVIC[385] = 65535; // buffer length sh $r22,1540[$r21] bfextu $r22,$r22,#0,#31 ; pAVIC[386] = 0xFFFFF; // period to max sh $r23,1544[$r21] bfextu $r23,$r23,#0,#31 ; pAVIC[387] = 0x0000; // volume = 0, output data = 0 ldi $v0,#0 sh $v0,1548[$r21] ; pAVIC[388] = 0x210000; ldi $v0,#2162688 sh $v0,1552[$r21] bfextu $v0,$v0,#0,#31 ; pAVIC[389] = 65535; // buffer length sh $r22,1556[$r21] bfextu $r22,$r22,#0,#31 ; pAVIC[390] = 0xFFFFF; // period to max sh $r23,1560[$r21] bfextu $r23,$r23,#0,#31 ; pAVIC[391] = 0x0000; // volume = 0, output data = 0 ldi $v0,#0 sh $v0,1564[$r21] ; pAVIC[392] = 0x220000; ldi $v0,#2228224 sh $v0,1568[$r21] bfextu $v0,$v0,#0,#31 ; pAVIC[393] = 65535; // buffer length sh $r22,1572[$r21] bfextu $r22,$r22,#0,#31 ; pAVIC[394] = 0xFFFFF; // period to max sh $r23,1576[$r21] bfextu $r23,$r23,#0,#31 ; pAVIC[395] = 0x0000; // volume = 0, output data = 0 ldi $v0,#0 sh $v0,1580[$r21] ; pAVIC[396] = 0x230000; ldi $v0,#2293760 sh $v0,1584[$r21] bfextu $v0,$v0,#0,#31 ; pAVIC[397] = 65535; // buffer length sh $r22,1588[$r21] bfextu $r22,$r22,#0,#31 ; pAVIC[398] = 0xFFFFF; // period to max sh $r23,1592[$r21] bfextu $r23,$r23,#0,#31 ; pAVIC[399] = 0x0000; // volume = 0, output data = 0 ldi $v0,#0 sh $v0,1596[$r21] ; pAVIC[400] = 0x240000; ldi $v0,#2359296 sh $v0,1600[$r21] bfextu $v0,$v0,#0,#31 ; pAVIC[401] = 65535; // buffer length sh $r22,1604[$r21] bfextu $r22,$r22,#0,#31 ; pAVIC[402] = 0xFFFFF; // period to max sh $r23,1608[$r21] bfextu $r23,$r23,#0,#31 ; pAVIC[403] = 0x0000; // volume = 0, output data = 0 ldi $v0,#0 sh $v0,1612[$r21] ; pAVIC[404] = 0x00001F00; // Reset ldi $v0,#7936 sh $v0,1616[$r21] ; pAVIC[404] = 0x00000000; ldi $v0,#0 sh $v0,1616[$r21] bfextu $v0,$v0,#0,#31 lw $r21,0[$sp] lw $r22,8[$sp] lw $r23,16[$sp] mov $sp,$fp lw $fp,[$sp] ret #24 endpublic rodata align 16 align 8 BIOSMain_21: dh 0x54442D18,0x400921FB align 2 BIOSMain_156: ; PC History: dc 80,67,32,72,105,115,116,111 dc 114,121,58,13,10,0 BIOSMain_155: ; Instruction Bus Error: dc 13,10,73,110,115,116,114,117 dc 99,116,105,111,110,32,66,117 dc 115,32,69,114,114,111,114,58 dc 13,10,0 BIOSMain_124: ; PC History: dc 13,10,80,67,32,72,105,115 dc 116,111,114,121,58,13,10,0 BIOSMain_23: ; Menu up = ramtest down = graphics demo left = float test right=TinyBasic dc 32,32,77,101,110,117,13,10 dc 32,32,117,112,32,61,32,114 dc 97,109,116,101,115,116,13,10 dc 32,32,100,111,119,110,32,61 dc 32,103,114,97,112,104,105,99 dc 115,32,100,101,109,111,13,10 dc 32,32,108,101,102,116,32,61 dc 32,102,108,111,97,116,32,116 dc 101,115,116,13,10,32,32,114 dc 105,103,104,116,61,84,105,110 dc 121,66,97,115,105,99,13,10 dc 0 BIOSMain_22: ; FT64 Bios Started dc 32,32,70,84,54,52,32,66 dc 105,111,115,32,83,116,97,114 dc 116,101,100,13,10,0 BIOSMain_0: ; Databus error: dc 13,10,68,97,116,97,98,117 dc 115,32,101,114,114,111,114,58 dc 32,0 extern _GetRand ; global _BIOSMain ; global _EnableSprite ; global _GrDrawChar ; global _GrFillRect ; global _GrDrawLine ; global _BTNCIRQHandler extern _DBGHomeCursor ; global _SetSpritePos ; global _RandomPoints ; global _RandomizeSpritePositions ; global _ColorBandMemory extern _SetPCHNDX ; global _GrQueCmd ; global _GrFlushCmdQue ; global _GrResetCmdQue ; global _SpriteDemo extern _ramtest ; global _GrClearScreen extern _randStream extern _DBGClearScreen extern _DBGDisplayString extern _putch ; global _EnableSprites ; global _RandomChars ; global _RandomLines ; global _GrPlotPoint ; global _RandomRects extern _DBGAttr ; global _DBERout ; global _GrWaitQue ; global _IBERout ; global _InitAudio ; global _RandomizeSpriteColors ; global _AudioTest extern _printf extern _FloatTest extern _prtflt extern _puthex
Go to most recent revision | Compare with Previous | Blame | View Log