mirror of https://github.com/nmlgc/ReC98.git
85 lines
2.3 KiB
NASM
85 lines
2.3 KiB
NASM
; *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_PADD.ASM -- long pointer routines |
|
|
;[]-----------------------------------------------------------------[]
|
|
|
|
;
|
|
; C/C++ Run Time Library - Version 5.0
|
|
;
|
|
; Copyright (c) 1987, 1992 by Borland International
|
|
; All Rights Reserved.
|
|
;
|
|
; calls to these routines are generated by the compiler to perform
|
|
; arithmetic operations on huge pointers.
|
|
|
|
public PADD@
|
|
public F_PADD@
|
|
public N_PADD@
|
|
|
|
N_PADD@:
|
|
pop es ;fix up far return
|
|
push cs
|
|
push es
|
|
PADD@:
|
|
F_PADD@:
|
|
or cx,cx
|
|
jge add1
|
|
not bx
|
|
not cx
|
|
add bx,1
|
|
adc cx,0
|
|
jmp sub1
|
|
add1:
|
|
add ax,bx
|
|
jnc addok
|
|
add dx,1000h
|
|
addok:
|
|
mov ch,cl
|
|
mov cl,4
|
|
shl ch,cl
|
|
add dh,ch
|
|
mov ch,al
|
|
shr ax,cl
|
|
add dx,ax
|
|
mov al,ch
|
|
and ax,0fh
|
|
retf
|
|
|
|
public PSUB@
|
|
public F_PSUB@
|
|
public N_PSUB@
|
|
|
|
N_PSUB@:
|
|
pop es ;fix up far return
|
|
push cs
|
|
push es
|
|
PSUB@:
|
|
F_PSUB@:
|
|
or cx,cx
|
|
jge sub1
|
|
not bx
|
|
not cx
|
|
add bx,1
|
|
adc cx,0
|
|
jmp add1
|
|
sub1:
|
|
sub ax,bx
|
|
jnc subok
|
|
sub dx,1000h
|
|
subok:
|
|
mov bh,cl
|
|
mov cl,4
|
|
shl bh,cl
|
|
xor bl,bl
|
|
sub dx,bx
|
|
mov ch,al
|
|
shr ax,cl
|
|
add dx,ax
|
|
mov al,ch
|
|
and ax,0fh
|
|
retf
|