dolphin/Source/DSPSpy/tests/dr_test.ds
hrydgard 0d57b7f01a DSP: I hereby name R08-R11 WR0-WR3, standing for Wrap control Registers 0-3.
Kill "CR". 
Document decrements a little bit.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3126 8ced0084-cf51-0410-be5f-012b33b47a6e
2009-05-01 19:07:29 +00:00

314 lines
5.6 KiB
Text

; This test checks the effect of the index looping registers (R8-R11)
incdir "tests"
include "dsp_base.inc"
; Tests done using AR1 = 0x0010, IX1 = 0. WR1 (wrap 1) means R09.
; WR1 = 0
; 10, 10, 10, 10,
; WR1 = 1
; 10, 11, 10, 11,
; WR1 = 2
; 10, 12, 11, 13, 12, 11, 13, 12, 11, 13, 12, 11
; WR1 = 3
; 10, 13, 12, 11, 10, 13, 12...
; WR1 = 4
; 10, 14, 13, 17, 16, 15, 14, 13, 17, 16, 15, 14, 13, ...
; WR1 = 5
; 10, 15, 14, 13, 12, 17, 16, 15, 14, 13, 12, 17,
; WR1 = 6
; 10, 16, 15, 14, 13, 12, 11, 17, 16, 15, 14, 13
; WR1 = 7
; 10, 17, 16, 15, .. normal
; WR1 = 8
; 10, 18, 17, 1f, 1e, 1d, 1c, 1b, 1a, 19, 18, 17, 1f, 1e, .....
; 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
lri $R09, #0
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #2
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #3
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #4
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #5
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #6
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #7
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $AR1, #16
lri $R09, #8
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
nx'dr : $AR1
call send_back ; 1
lri $R09, #0xFFFF
; We're done, DO NOT DELETE THIS LINE
jmp end_of_test