diff --git a/Source/DSPSpy/tests/dr_test.ds b/Source/DSPSpy/tests/dr_test.ds new file mode 100644 index 0000000000..03f9dabbd8 --- /dev/null +++ b/Source/DSPSpy/tests/dr_test.ds @@ -0,0 +1,314 @@ +; 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. LP1 means R09. +; LP1 = 0 +; 10, 10, 10, 10, +; LP1 = 1 +; 10, 11, 10, 11, +; LP1 = 2 +; 10, 12, 11, 13, 12, 11, 13, 12, 11, 13, 12, 11 +; LP1 = 3 +; 10, 13, 12, 11, 10, 13, 12... +; LP1 = 4 +; 10, 14, 13, 17, 16, 15, 14, 13, 17, 16, 15, 14, 13, ... +; LP1 = 5 +; 10, 15, 14, 13, 12, 17, 16, 15, 14, 13, 12, 17, +; LP1 = 6 +; 10, 16, 15, 14, 13, 12, 11, 17, 16, 15, 14, 13 +; LP1 = 7 +; 10, 17, 16, 15, .. normal +; LP1 = 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