mirror of
https://github.com/adtools/clib2.git
synced 2025-12-08 14:59:05 +00:00
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/clib2/trunk@14685 87f5fb63-7c3d-0410-a384-fd976d0f7a62
144 lines
1.6 KiB
NASM
144 lines
1.6 KiB
NASM
*
|
|
* $Id: sas_cxv45.asm,v 1.1.1.1 2004-07-26 16:31:04 obarthel Exp $
|
|
*
|
|
* :ts=8
|
|
*
|
|
* Adapted from reassembled SAS/C runtime library code.
|
|
*
|
|
|
|
section text,code
|
|
|
|
xdef __CXV45
|
|
|
|
__CXV45
|
|
MOVE.L D0,D1
|
|
SWAP D1
|
|
AND.W #$7FFF,D1
|
|
CMP.W #$80,D1
|
|
BLT lbC00003E
|
|
CMP.W #$7F80,D1
|
|
BGE lbC000060
|
|
ASR.L #3,D0
|
|
AND.L #$8FFFFFFF,D0
|
|
ADD.L #$38000000,D0
|
|
SWAP D1
|
|
AND.L #7,D1
|
|
ROR.L #3,D1
|
|
lbC00003C
|
|
RTS
|
|
|
|
lbC00003E
|
|
TST.L D1
|
|
BEQ.S lbC00003C
|
|
MOVEM.L D2-D5,-(SP)
|
|
SWAP D0
|
|
MOVE.W D0,D4
|
|
AND.W #$8000,D4
|
|
MOVE.W #$39D0,D5
|
|
MOVEQ #0,D0
|
|
SWAP D1
|
|
JSR __CXNRM5(PC)
|
|
MOVEM.L (SP)+,D2-D5
|
|
RTS
|
|
|
|
lbC000060
|
|
ASR.L #3,D0
|
|
OR.L #$7FF00000,D0
|
|
SWAP D1
|
|
AND.L #7,D1
|
|
ROR.L #3,D1
|
|
RTS
|
|
|
|
__CXNRM5
|
|
CMP.L #$20,D0
|
|
BGE lbC0000B0
|
|
SWAP D0
|
|
SWAP D1
|
|
MOVE.W D1,D0
|
|
CLR.W D1
|
|
SUB.W #$100,D5
|
|
BGE.S __CXNRM5
|
|
BRA lbC0000F4
|
|
|
|
__CXTAB5
|
|
dc.b 5
|
|
dc.b 4
|
|
dc.b 3
|
|
dc.b 3
|
|
dc.b 2
|
|
dc.b 2
|
|
dc.b 2
|
|
dc.b 2
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 1
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
dc.b 0
|
|
|
|
lbC0000B0
|
|
MOVEQ #0,D3
|
|
CMP.L #$2000,D0
|
|
BGE lbC0000C0
|
|
LSL.L #8,D0
|
|
ADDQ.W #8,D3
|
|
lbC0000C0
|
|
SWAP D0
|
|
TST.W D0
|
|
BNE lbC0000CC
|
|
ROL.L #4,D0
|
|
ADDQ.W #4,D3
|
|
lbC0000CC
|
|
MOVEQ #0,D2
|
|
MOVE.B __CXTAB5(PC,D0.W),D2
|
|
ROL.L D2,D0
|
|
ADD.W D2,D3
|
|
SWAP D0
|
|
MOVE.L D1,D2
|
|
LSL.L D3,D1
|
|
ROL.L D3,D2
|
|
EOR.W D1,D2
|
|
EOR.W D2,D0
|
|
LSL.W #4,D3
|
|
SUB.W D3,D5
|
|
BLT lbC0000F4
|
|
SWAP D0
|
|
ADD.W D5,D0
|
|
OR.W D4,D0
|
|
SWAP D0
|
|
RTS
|
|
|
|
lbC0000F4
|
|
NEG.W D5
|
|
LSR.W #4,D5
|
|
MOVE.L D0,D2
|
|
LSR.L D5,D0
|
|
ROR.L D5,D2
|
|
LSR.L D5,D1
|
|
EOR.L D0,D2
|
|
EOR.L D2,D1
|
|
SWAP D0
|
|
EOR.W D4,D0
|
|
SWAP D0
|
|
RTS
|
|
|
|
end
|