View Single Post
Old 31 May 2021, 15:07   #18
robinsonb5
Registered User
 
Join Date: Mar 2012
Location: Norfolk, UK
Posts: 1,154
Quote:
Originally Posted by ross View Post
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)
robinsonb5 is offline  
 
Page generated in 0.04228 seconds with 11 queries