OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64/] [software/] [boot/] [BIOSMain.s] - Rev 45

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
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.