; *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_PADA.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 long pointers. public PADA@ public F_PADA@ public N_PADA@ N_PADA@: pop es ;fix up far return push cs push es PADA@: F_PADA@: mov es,dx xchg ax,bx ; ; Pointer to memory cell to increment is in es:bx ; Increment amount is ax:cx ; mov dx, es:2[bx] ; DX <- Selector push bx mov bx, es:[bx] ; BX <- Offset or cx,cx ; Is increment negative? jge ada1 ; No, ... not ax ; Yes, ... not cx add ax,1 adc cx,0 jmp sba1 ada1: add bx,ax ; Add offsets jnc adaok add dx,1000h adaok: mov ah,cl mov cl,4 shl ah,cl xor al,al add dx,ax mov ch,bl shr bx,cl add dx,bx mov al,ch and ax,0fh pop bx mov es:[bx], ax mov es:2[bx], dx retf public PSBA@ public F_PSBA@ public N_PSBA@ N_PSBA@: pop es ;fix up far return push cs push es PSBA@: F_PSBA@: mov es,dx xchg ax,bx ; ; Pointer to memory cell to increment is in es:bx ; Increment amount is ax:cx ; mov dx,es:2[bx] push bx mov bx,es:[bx] or cx,cx jge sba1 not ax not cx add ax,1 adc cx,0 jmp ada1 sba1: sub bx,ax jnc sbaok sub dx,1000h sbaok: mov ah,cl mov cl,4 shl ah,cl xor al,al sub dx,ax mov ch,bl shr bx,cl add dx,bx mov al,ch and ax,0fh pop bx mov es:[bx],ax mov es:2[bx],dx retf