;---====================== Start Software License ======================--- ;--== ==-- ;--== This license governs the use of this software, and your use of ==-- ;--== this software constitutes acceptance of this license. Agreement ==-- ;--== with all points is required to use this software. ==-- ;--== ==-- ;--== 1. You may use this software freely for personal use. ==-- ;--== ==-- ;--== 2. You may use this software freely to determine feasibility for ==-- ;--== commercial use. ==-- ;--== ==-- ;--== 3. You may use this software for commercial use if the author ==-- ;--== has given you written consent. ==-- ;--== ==-- ;--== 4. You may modify this software provided you do not remove the ==-- ;--== license and copyright notice. ==-- ;--== ==-- ;--== 5. You may distribute this software and derivative works to ==-- ;--== personal friends and work colleagues only. ==-- ;--== ==-- ;--== 6. You agree that this software comes “as-is” and with no ==-- ;--== warranty whatsoever, either expressed or implied, including, ==-- ;--== but not limited to, warranties of merchantability or fitness ==-- ;--== for a particular purpose. ==-- ;--== ==-- ;--== 7. You agree that the author will not be liable for any damages ==-- ;--== relating from the use of this software, including direct, ==-- ;--== indirect, consequential or incidental. This software is used ==-- ;--== entirely at your own risk and should it prove defective, you ==-- ;--== will assume full responsibility for all costs associated with ==-- ;--== servicing, repair or correction. ==-- ;--== ==-- ;--== Your rights under this license are terminated immediately if you ==-- ;--== breach it in any way. ==-- ;--== ==-- ;---======================= End Software License =======================--- ;---====================== Start Copyright Notice ======================--- ;--== ==-- ;--== Filename ..... asm_move_tests.txt ==-- ;--== Download ..... http://www.spacewire.co.uk ==-- ;--== Author ....... Steve Haywood (steve.haywood@ukonline.co.uk) ==-- ;--== Copyright .... Copyright (c) 2004 Steve Haywood ==-- ;--== Project ...... Raptor-16 ==-- ;--== Version ...... 1.00 ==-- ;--== Conception ... 20 August 2004 ==-- ;--== Modified ..... N/A ==-- ;--== ==-- ;---======================= End Copyright Notice =======================--- ;---========================= Start Description ========================--- ;--== ==-- ;--== This set of instructions check every single addressing mode ==-- ;--== combination for the Move instruction. ==-- ;--== ==-- ;--== If all the combinations work then the D0 register will be loaded ==-- ;--== with the following sequence of words:- ==-- ;--== ==-- ;--== -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ==-- ;--== ==-- ;--== The sequence should repeat 8 times and then be terminated with ==-- ;--== the D0 register becomming -8. ==-- ;--== ==-- ;--== Any missed words from the sequence indicate that an addressing ==-- ;--== mode has failed. ==-- ;--== ==-- ;--== Source assembles into 365 words and needs to be run for 32us. ==-- ;--== ==-- ;--== The full set of tests cover all possibilities has shown below:- ==-- ;--== ==-- ;--== MoveQ #-n,Dn MoveQ #-n,An MoveQ #-n,(An) ==-- ;--== MoveQ #n,Dn MoveQ #n,An MoveQ #n,(An) ==-- ;--== Move Dn,Dn Move Dn,An Move Dn,(An) ==-- ;--== Move An,Dn Move An,An Move An,(An) ==-- ;--== Move (An),Dn Move (An),An Move (An),(An) ==-- ;--== Move -(An),Dn Move -(An),An Move -(An),(An) ==-- ;--== Move (An)+,Dn Move (An)+,An Move (An)+,(An) ==-- ;--== Move -d(An),Dn Move -d(An),An Move -d(An),(An) ==-- ;--== Move d(An),Dn Move d(An),An Move d(An),(An) ==-- ;--== Move Pn,Dn Move Pn,An Move Pn,(An) ==-- ;--== Move #n,Dn Move #n,An Move #n,(An) ==-- ;--== Move Addr,Dn Move Addr,An Move Addr,(An) ==-- ;--== ==-- ;--== MoveQ #-n,-(An) MoveQ #-n,(An)+ MoveQ #-n,d(An) ==-- ;--== MoveQ #n,-(An) MoveQ #n,(An)+ MoveQ #n,d(An) ==-- ;--== Move Dn,-(An) Move Dn,(An)+ Move Dn,d(An) ==-- ;--== Move An,-(An) Move An,(An)+ Move An,d(An) ==-- ;--== Move (An),-(An) Move (An),(An)+ Move (An),d(An) ==-- ;--== Move -(An),-(An) Move -(An),(An)+ Move -(An),d(An) ==-- ;--== Move (An)+,-(An) Move (An)+,(An)+ Move (An)+,d(An) ==-- ;--== Move -d(An),-(An) Move -d(An),(An)+ Move -d(An),d(An) ==-- ;--== Move d(An),-(An) Move d(An),(An)+ Move d(An),d(An) ==-- ;--== Move Pn,-(An) Move Pn,(An)+ Move Pn,d(An) ==-- ;--== Move #n,-(An) Move #n,(An)+ Move #n,d(An) ==-- ;--== Move Addr,-(An) Move Addr,(An)+ Move Addr,d(An) ==-- ;--== ==-- ;--== MoveQ #-n,Pn MoveQ #-n,Addr ==-- ;--== MoveQ #n,Pn MoveQ #n,Addr ==-- ;--== Move Dn,Pn Move Dn,Addr ==-- ;--== Move An,Pn Move An,Addr ==-- ;--== Move (An),Pn Move (An),Addr ==-- ;--== Move -(An),Pn Move -(An),Addr ==-- ;--== Move (An)+,Pn Move (An)+,Addr ==-- ;--== Move -d(An),Pn Move -d(An),Addr ==-- ;--== Move d(An),Pn Move d(An),Addr ==-- ;--== Move Pn,Pn Move Pn,Addr ==-- ;--== Move #n,Pn Move #n,Addr ==-- ;--== Move Addr,Pn Move Addr,Addr ==-- ;--== ==-- ;---========================== End Description =========================--- ; ; Tests for Move ,Dn ; MoveQ #-1,D0 ; -1 : ImmQ(Ext) MoveQ #0,D0 ; 00 : ImmQ MoveQ #1,D1 ; -- : Set-up Instruction Move D1,D0 ; 01 : Dn MoveQ #2,A1 ; -- : Set-up Instruction Move A1,D0 ; 02 : An Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,D0 ; 03 : (An)+ Move (A1),D0 ; 04 : (An) Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),D0 ; 05 : -(An) Move -3(A1),D0 ; 06 : -d(An) Move 1(A1),D0 ; 07 : +d(An) Move #8,P3 ; -- : Set-up Instruction Move P3,D0 ; 08 : Pn Move #9,D0 ; 09 : Imm Move NumF,D0 ; 10 : Addr ; ; Tests for Move ,An ; MoveQ #-1,A0 ; -1 : ImmQ(Ext) Move A0,D0 ; -- : Copy Result MoveQ #0,A0 ; 00 : ImmQ Move A0,D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,A0 ; 01 : Dn Move A0,D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,A0 ; 02 : An Move A0,D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,A0 ; 03 : (An)+ Move A0,D0 ; -- : Copy Result Move (A1),A0 ; 04 : (An) Move A0,D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),A0 ; 05 : -(An) Move A0,D0 ; -- : Copy Result Move -3(A1),A0 ; 06 : -d(An) Move A0,D0 ; -- : Copy Result Move 1(A1),A0 ; 07 : +d(An) Move A0,D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,A0 ; 08 : Pn Move A0,D0 ; -- : Copy Result Move #9,A0 ; 09 : Imm Move A0,D0 ; -- : Copy Result Move NumF,A0 ; 10 : Addr Move A0,D0 ; -- : Copy Result ; ; Tests for Move ,(An) ; Move #DummyA,A2 ; -- : Set-up Instruction MoveQ #-1,(A2) ; -1 : ImmQ(Ext) Move (A2),D0 ; -- : Copy Result MoveQ #0,(A2) ; 00 : ImmQ Move (A2),D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,(A2) ; 01 : Dn Move (A2),D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,(A2) ; 02 : An Move (A2),D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,(A2) ; 03 : (An)+ Move (A2),D0 ; -- : Copy Result Move (A1),(A2) ; 04 : (An) Move (A2),D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),(A2) ; 05 : -(An) Move (A2),D0 ; -- : Copy Result Move -3(A1),(A2) ; 06 : -d(An) Move (A2),D0 ; -- : Copy Result Move 1(A1),(A2) ; 07 : +d(An) Move (A2),D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,(A2) ; 08 : Pn Move (A2),D0 ; -- : Copy Result Move #9,(A2) ; 09 : Imm Move (A2),D0 ; -- : Copy Result Move NumF,(A2) ; 10 : Addr Move (A2),D0 ; -- : Copy Result ; ; Tests for Move ,-(An) ; Move #DummyB,A2 ; -- : Set-up Instruction MoveQ #-1,-(A2) ; -1 : ImmQ(Ext) Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction MoveQ #0,-(A2) ; 00 : ImmQ Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction MoveQ #1,D1 ; -- : Set-up Instruction Move D1,-(A2) ; 01 : Dn Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction MoveQ #2,A1 ; -- : Set-up Instruction Move A1,-(A2) ; 02 : An Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,-(A2) ; 03 : (An)+ Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move (A1),-(A2) ; 04 : (An) Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),-(A2) ; 05 : -(An) Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move -3(A1),-(A2) ; 06 : -d(An) Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move 1(A1),-(A2) ; 07 : +d(An) Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move #8,P3 ; -- : Set-up Instruction Move P3,-(A2) ; 08 : Pn Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move #9,-(A2) ; 09 : Imm Move (A2),D0 ; -- : Copy Result AddQ #1,A2 ; -- : Set-up Instruction Move NumF,-(A2) ; 10 : Addr Move (A2),D0 ; -- : Copy Result ; ; Tests for Move ,(An)+ ; Move #DummyA,A2 ; -- : Set-up Instruction MoveQ #-1,(A2)+ ; -1 : ImmQ(Ext) SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result MoveQ #0,(A2)+ ; 00 : ImmQ SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,(A2)+ ; 01 : Dn SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,(A2)+ ; 02 : An SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,(A2)+ ; 03 : (An)+ SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move (A1),(A2)+ ; 04 : (An) SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),(A2)+ ; 05 : -(An) SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move -3(A1),(A2)+ ; 06 : -d(An) SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move 1(A1),(A2)+ ; 07 : +d(An) SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,(A2)+ ; 08 : Pn SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move #9,(A2)+ ; 09 : Imm SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result Move NumF,(A2)+ ; 10 : Addr SubQ #1,A2 ; -- : Set-up Instruction Move (A2),D0 ; -- : Copy Result ; ; Tests for Move ,d(An) ; Move #DummyA,A2 ; -- : Set-up Instruction MoveQ #-1,1(A2) ; -1 : ImmQ(Ext) Move 1(A2),D0 ; -- : Copy Result MoveQ #0,1(A2) ; 00 : ImmQ Move 1(A2),D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,1(A2) ; 01 : Dn Move 1(A2),D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,1(A2) ; 02 : An Move 1(A2),D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,1(A2) ; 03 : (An)+ Move 1(A2),D0 ; -- : Copy Result Move (A1),1(A2) ; 04 : (An) Move 1(A2),D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),1(A2) ; 05 : -(An) Move 1(A2),D0 ; -- : Copy Result Move -3(A1),1(A2) ; 06 : -d(An) Move 1(A2),D0 ; -- : Copy Result Move 1(A1),1(A2) ; 07 : +d(An) Move 1(A2),D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,1(A2) ; 08 : Pn Move 1(A2),D0 ; -- : Copy Result Move #9,1(A2) ; 09 : Imm Move 1(A2),D0 ; -- : Copy Result Move NumF,1(A2) ; 10 : Addr Move 1(A2),D0 ; -- : Copy Result ; ; Tests for Move ,Pn ; MoveQ #-1,P1 ; -1 : ImmQ(Ext) Move P1,D0 ; -- : Copy Result MoveQ #0,P1 ; 00 : ImmQ Move P1,D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,P1 ; 01 : Dn Move P1,D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,P1 ; 02 : An Move P1,D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,P1 ; 03 : (An)+ Move P1,D0 ; -- : Copy Result Move (A1),P1 ; 04 : (An) Move P1,D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),P1 ; 05 : -(An) Move P1,D0 ; -- : Copy Result Move -3(A1),P1 ; 06 : -d(An) Move P1,D0 ; -- : Copy Result Move 1(A1),P1 ; 07 : +d(An) Move P1,D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,P1 ; 08 : Pn Move P1,D0 ; -- : Copy Result Move #9,P1 ; 09 : Imm Move P1,D0 ; -- : Copy Result Move NumF,P1 ; 10 : Addr Move P1,D0 ; -- : Copy Result ; ; Tests for Move ,Addr ; MoveQ #-1,DummyA ; -1 : ImmQ(Ext) Move DummyA,D0 ; -- : Copy Result MoveQ #0,DummyA ; 00 : ImmQ Move DummyA,D0 ; -- : Copy Result MoveQ #1,D1 ; -- : Set-up Instruction Move D1,DummyA ; 01 : Dn Move DummyA,D0 ; -- : Copy Result MoveQ #2,A1 ; -- : Set-up Instruction Move A1,DummyA ; 02 : An Move DummyA,D0 ; -- : Copy Result Move #NumA,A1 ; -- : Set-up Instruction Move (A1)+,DummyA ; 03 : (An)+ Move DummyA,D0 ; -- : Copy Result Move (A1),DummyA ; 04 : (An) Move DummyA,D0 ; -- : Copy Result Move #NumD,A1 ; -- : Set-up Instruction Move -(A1),DummyA ; 05 : -(An) Move DummyA,D0 ; -- : Copy Result Move -3(A1),DummyA ; 06 : -d(An) Move DummyA,D0 ; -- : Copy Result Move 1(A1),DummyA ; 07 : +d(An) Move DummyA,D0 ; -- : Copy Result Move #8,P3 ; -- : Set-up Instruction Move P3,DummyA ; 08 : Pn Move DummyA,D0 ; -- : Copy Result Move #9,DummyA ; 09 : Imm Move DummyA,D0 ; -- : Copy Result Move NumF,DummyA ; 10 : Addr Move DummyA,D0 ; -- : Copy Result Finale Moveq #-8,D0 ; End Marker Infinate BraQ alw,Infinate ; Infinate Loop NumE Words 6 NumA Words 3 NumB Words 4 NumC Words 5 NumD Words 7 NumF Words 10 DummyA Words 0 DummyB Words 0