[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] TAS in GFA Linker


I was re-reading the thread and noticed I missed the subtle differences
between TAS and BSET regarding what it actually tests.
TAS - entire byte - both Z and N are used
BSET - only the bit being set - only Z is used

Would this alternate patch method below work?
Should work in all cases when one doesn't have clue how the asm routine
works that they are trying to patch.

;original code
    tas    (a1)
    bpl.s  label

;alternate code    
temp:       dc.w 0    ;add this somewhere or use a free register if you can

    move.b  (a1),temp ;copy the byte in question (previous value)
    bset    #7,(a1)   ;clobber bit 7 as tas would do
    tst.b   temp      ;set Z and N based on prev value like tas
    bpl.s   label     ;original branch instruction unchanged

Lonny Pursell    http://www.bright.net/~gfabasic/