
{$S-,R-}
UNIT MaxMinW;
(*
  The source code for the MaxMinW unit is released to the public domain.
  No rights are reserved.  Phil Nickell.  NSoft Co.
  This Turbo Pascal unit implements four highly optimized assembly
  language functions that provide MAX() and MIN() for unsigned words and
  signed integers
*)
INTERFACE
   function  MAXW  (a,b:word)    : Word;          { max word }
   function  MINW  (a,b:word)    : Word;          { min word }
   function  MAXI  (a,b:integer) : Integer;       { max integer }
   function  MINI  (a,b:integer) : Integer;       { min integer }

IMPLEMENTATION
function maxw(a,b:word):word; Assembler;
  Asm
        mov     ax, a       { first parm in ax }
        mov     dx, b       { second parm in dx }
        cmp     ax, dx      { compare parms }
        jae     @1          { return 1st parm }
        mov     ax, dx      { return 2nd parm }
  @1:
  End;

function minw(a,b:word):word; Assembler;
  Asm
        mov     ax, a       { first parm in ax }
        mov     dx, b       { second parm in dx }
        cmp     ax, dx      { compare parms }
        jbe     @1          { return 1st parm }
        mov     ax, dx      { return 2nd parm }
  @1:
  End;

function maxi(a,b:integer):integer; Assembler;
  Asm
        mov     ax, a       { first parm in ax }
        mov     dx, b       { second parm in dx }
        cmp     ax, dx      { compare parms }
        jge     @1          { return 1st parm }
        mov     ax, dx      { return 2nd parm }
  @1:
  End;

function mini(a,b:integer):integer; Assembler;
  Asm
        mov     ax, a       { first parm in ax }
        mov     dx, b       { second parm in dx }
        cmp     ax, dx      { compare parms }
        jle     @1          { return 1st parm }
        mov     ax, dx      { return 2nd parm }
  @1:
  End;

Begin {INITIALIZATION}
End.
