| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ; This test checks the effect of the index looping registers (R8-R11) | 
					
						
							|  |  |  | incdir  "tests" | 
					
						
							|  |  |  | include "dsp_base.inc" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ; First theories, fitting tests with nice masks in the loop registers | 
					
						
							|  |  |  | ; IR THEORY: if ((ar & lp) == lp)  ar &= ~lp; | 
					
						
							|  |  |  | ; DR THEORY: if ((ar & lp) == 0) ar |= lp; | 
					
						
							|  |  |  | ; These were proven FALSE though by the following: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ; Tests done using AR1 = 0x0010, IX1 = 0 | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 0 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 11, 11, 11...... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 1 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 10, 11, 10...... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 2 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 11, 12, 13, 11, 12, 13 ...... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 3 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 10, 11, 12, 13, 10, 11, 12, 13....... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 4 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 14, 15, 16, 17, 13, 14, 15, 16, 17, 13, 14, 15 ...... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 5 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 14, 15, 16, 17, 12, 13, 14, 15 ... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 6 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 14, 15, 16, 17, 11, 12, 13, 14... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 7 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 14, 15, 16, 17, 10, 11, .... | 
					
						
							| 
									
										
										
										
											2009-05-01 19:07:29 +00:00
										 |  |  | ; WR1 = 8 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | ;   10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c, 1d, 1e, 1f, 17, 18, 19, 1a, 1b..... | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ; I really don't know how the above could possibly be efficiently implemented in hardware. | 
					
						
							|  |  |  | ; And thus it's tricky to implement in software too :p | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ; test using indexing register 1 - 0 is used in send_back | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							|  |  |  | lri $IX1, #32 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #0 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #1 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #2 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #3 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #4 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #5 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #6 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #7 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | lri $AR1, #16 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #8 | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | nx'ir  : $AR1 | 
					
						
							|  |  |  | call send_back  ; 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-13 04:55:58 +00:00
										 |  |  | lri $WR1, #0xFFFF | 
					
						
							| 
									
										
										
										
											2009-05-01 16:18:46 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ; We're done, DO NOT DELETE THIS LINE | 
					
						
							|  |  |  | jmp end_of_test |