2014-08-14 17:49:23 +00:00
|
|
|
; *Not* the original file, but an edit to turn it into an includable slice.
|
|
|
|
; Changes include:
|
|
|
|
; * removal of RULES.ASI to eliminate redundancy
|
|
|
|
; * removal of the 'CODE' segment declaration (for obvious reasons)
|
|
|
|
|
|
|
|
;[]-----------------------------------------------------------------[]
|
|
|
|
;| H_LRSH.ASM -- long shift right |
|
|
|
|
;[]-----------------------------------------------------------------[]
|
|
|
|
|
|
|
|
;
|
|
|
|
; C/C++ Run Time Library - Version 5.0
|
|
|
|
;
|
|
|
|
; Copyright (c) 1987, 1992 by Borland International
|
|
|
|
; All Rights Reserved.
|
|
|
|
;
|
|
|
|
|
|
|
|
public LXRSH@
|
|
|
|
public F_LXRSH@
|
|
|
|
public N_LXRSH@
|
|
|
|
|
|
|
|
N_LXRSH@:
|
|
|
|
pop bx ;fix up for far return
|
|
|
|
push cs
|
|
|
|
push bx
|
|
|
|
LXRSH@:
|
|
|
|
F_LXRSH@:
|
|
|
|
cmp cl,16
|
2014-11-21 07:22:03 +00:00
|
|
|
jae lrsh_@small
|
2014-08-14 17:49:23 +00:00
|
|
|
mov bx,dx ; save the high bits
|
|
|
|
shr ax,cl ; now shift each half
|
|
|
|
sar dx,cl
|
|
|
|
;
|
|
|
|
; We now have a hole in AX where the lower bits of
|
|
|
|
; DX should have been shifted. So we must take our
|
|
|
|
; copy of DX and do a reverse shift to get the proper
|
|
|
|
; bits to be or'ed into AX.
|
|
|
|
;
|
|
|
|
neg cl
|
|
|
|
add cl,16
|
|
|
|
shl bx,cl
|
|
|
|
or ax,bx
|
|
|
|
retf
|
2014-11-21 07:22:03 +00:00
|
|
|
lrsh_@small:
|
2014-08-14 17:49:23 +00:00
|
|
|
sub cl,16 ; for shifts more than 15, do this
|
|
|
|
; short sequence.
|
|
|
|
xchg ax,dx ;
|
|
|
|
cwd ; We have now done a shift by 16.
|
|
|
|
sar ax,cl ; Now shift the remainder.
|
|
|
|
retf
|