Quote:
Originally Posted by ross
No, it does not .
|
LOL - OK, what am I missing?
This testbench tests all eight permutations of +/- Lo/Hi for each operand, and gives the expected result? (0xaa in D1 at the end, or 0x55 if you reverse HI and LO)
The inputs do have to be within the range +/- 16383, however.
Code:
ORG $1000
HI equ 5
LO equ 4
START: ; first instruction of program
moveq #0,d1
move.w #-LO,d7
swap d7
move.w #-HI,d7
bsr abscmp ; set
move.b d6,d1
lsl.w #1,d1
move.w #-HI,d7
swap d7
move.w #-LO,d7
bsr abscmp ; clr
move.b d6,d1
lsl.w #1,d1
move.w #LO,d7
swap d7
move.w #-HI,d7
bsr abscmp ; set
move.b d6,d1
lsl.w #1,d1
move.w #HI,d7
swap d7
move.w #-LO,d7
bsr abscmp ; clr
move.b d6,d1
lsl.w #1,d1
move.w #-LO,d7 ; lt
swap d7
move.w #HI,d7
bsr abscmp ; set
move.b d6,d1
lsl.w #1,d1
move.w #-HI,d7 ; gt
swap d7
move.w #LO,d7
bsr abscmp ; clr
move.b d6,d1
lsl.w #1,d1
move.w #LO,d7 ; lt
swap d7
move.w #HI,d7
bsr abscmp ; set
move.b d6,d1
lsl.w #1,d1
move.w #HI,d7 ; lt
swap d7
move.w #LO,d7
bsr abscmp ; clr
move.b d6,d1
lsr.w #7,d1
SIMHALT
abscmp:
move.w d7,d0
swap d7
move.w d7,d6
add.w d0,d6
smi d6
sub.w d0,d7
smi d7
eor.b d7,d6
rts
END START
(Using EASy68k to run / sim the code)