home *** CD-ROM | disk | FTP | other *** search
/ On Disk Monthly 62 / odm62.zip / GDSOURCE.EXE / FUNCTS.PAS next >
Pascal/Delphi Source File  |  1991-10-14  |  7KB  |  193 lines

  1. unit functs;
  2.  
  3. interface
  4.  
  5. FUNCTION ByteMax(VA, VB: byte): byte;
  6. FUNCTION ByteMin(VA, VB: byte): byte;
  7. FUNCTION ShortMax(VA, VB: shortint): shortint;
  8. FUNCTION ShortMin(VA, VB: shortint): shortint;
  9. FUNCTION ShortSgn(VA: shortint): shortint;
  10. FUNCTION WordMax(VA, VB: word): word;
  11. FUNCTION WordMin(VA, VB: word): word;
  12. FUNCTION IntMax(VA, VB: integer): integer;
  13. FUNCTION IntMin(VA, VB: integer): integer;
  14. FUNCTION IntSgn(VA: integer): integer;
  15. FUNCTION LongMax(VA, VB: longint): longint;
  16. FUNCTION LongMin(VA, VB: longint): longint;
  17. FUNCTION LongSgn(VA: longint): longint;
  18.  
  19. implementation
  20.  
  21. FUNCTION ByteMax(VA, VB: byte): byte;
  22. BEGIN
  23. Inline(
  24.    $8A/$46/<VA/            {       MOV     AL,VA        }
  25.    $3A/$46/<VB/            {       CMP     AL,VB        }
  26.    $77/$03/                {       JA      EXIT         }
  27.    $8A/$46/<VB/            {       MOV     AL,VB        }
  28.    $88/$46/$FF             {EXIT:  MOV     [BP-01],AL   }
  29. )
  30. END;
  31.  
  32. FUNCTION ByteMin(VA, VB: byte): byte;
  33. BEGIN
  34. Inline(
  35.    $8A/$46/<VA/            {       MOV     AL,VA        }
  36.    $3A/$46/<VB/            {       CMP     AL,VB        }
  37.    $72/$03/                {       JB      EXIT         }
  38.    $8A/$46/<VB/            {       MOV     AL,VB        }
  39.    $88/$46/$FF             {EXIT:  MOV     [BP-01],AL   }
  40. )
  41. END;
  42.  
  43. FUNCTION ShortMax(VA, VB: shortint): shortint;
  44. BEGIN
  45. Inline(
  46.    $8A/$46/<VA/            {       MOV     AL,VA        }
  47.    $3A/$46/<VB/            {       CMP     AL,VB        }
  48.    $7F/$03/                {       JG      EXIT         }
  49.    $8A/$46/<VB/            {       MOV     AL,VB        }
  50.    $88/$46/$FF             {EXIT:  MOV     [BP-01],AL   }
  51. )
  52. END;
  53.  
  54. FUNCTION ShortMin(VA, VB: shortint): shortint;
  55. BEGIN
  56. Inline(
  57.    $8A/$46/<VA/            {       MOV     AL,VA        }
  58.    $3A/$46/<VB/            {       CMP     AL,VB        }
  59.    $7C/$03/                {       JL      EXIT         }
  60.    $8A/$46/<VB/            {       MOV     AL,VB        }
  61.    $88/$46/$FF             {EXIT:  MOV     [BP-01],AL   }
  62. )
  63. END;
  64.  
  65. FUNCTION ShortSgn(VA: shortint): shortint;
  66. BEGIN
  67. Inline(
  68.    $8A/$46/<VA/            {       MOV     AL,VA        }
  69.    $3C/$00/                {       CMP     AL,00        }
  70.    $74/$0A/                {       JZ      EXIT         }
  71.    $D0/$C0/                {       ROL     AL,1         }
  72.    $24/$01/                {       AND     AL,01        }
  73.    $D0/$E0/                {       SHL     AL,1         }
  74.    $FE/$C8/                {       DEC     AL           }
  75.    $F6/$D8/                {       NEG     AL           }
  76.    $88/$46/$FF             {EXIT:  MOV     [BP-01],AL   }
  77. )
  78. END;
  79.  
  80. FUNCTION WordMax(VA, VB: word): word;
  81. BEGIN
  82. Inline(
  83.    $8B/$46/<VA/            {       MOV     AX,VA        }
  84.    $3B/$46/<VB/            {       CMP     AX,VB        }
  85.    $77/$03/                {       JA      EXIT         }
  86.    $8B/$46/<VB/            {       MOV     AX,VB        }
  87.    $89/$46/$FE             {EXIT:  MOV     [BP-02],AX   }
  88. )
  89. END;
  90.  
  91. FUNCTION WordMin(VA, VB: word): word;
  92. BEGIN
  93. Inline(
  94.    $8B/$46/<VA/            {       MOV     AX,VA        }
  95.    $3B/$46/<VB/            {       CMP     AX,VB        }
  96.    $72/$03/                {       JB      EXIT         }
  97.    $8B/$46/<VB/            {       MOV     AX,VB        }
  98.    $89/$46/$FE             {EXIT:  MOV     [BP-02],AX   }
  99. )
  100. END;
  101.  
  102. FUNCTION IntMax(VA, VB: integer): integer;
  103. BEGIN
  104. Inline(
  105.    $8B/$46/<VA/            {       MOV     AX,VA        }
  106.    $3B/$46/<VB/            {       CMP     AX,VB        }
  107.    $7F/$03/                {       JG      EXIT         }
  108.    $8B/$46/<VB/            {       MOV     AX,VB        }
  109.    $89/$46/$FE             {EXIT:  MOV     [BP-02],AX   }
  110. )
  111. END;
  112.  
  113. FUNCTION IntMin(VA, VB: integer): integer;
  114. BEGIN
  115. Inline(
  116.    $8B/$46/<VA/            {       MOV     AX,VA        }
  117.    $3B/$46/<VB/            {       CMP     AX,VB        }
  118.    $7C/$03/                {       JL      EXIT         }
  119.    $8B/$46/<VB/            {       MOV     AX,VB        }
  120.    $89/$46/$FE             {EXIT:  MOV     [BP-02],AX   }
  121. )
  122. END;
  123.  
  124. FUNCTION IntSgn(VA: integer): integer;
  125. BEGIN
  126. Inline(
  127.    $8B/$46/<VA/            {       MOV     AX,VA        }
  128.    $3D/$00/$00/            {       CMP     AX,0000      }
  129.    $74/$0A/                {       JZ      EXIT         }
  130.    $D1/$C0/                {       ROL     AX,1         }
  131.    $25/$01/$00/            {       AND     AX,0001      }
  132.    $D1/$E0/                {       SHL     AX,1         }
  133.    $48/                    {       DEC     AX           }
  134.    $F7/$D8/                {       NEG     AX           }
  135.    $89/$46/$FE             {EXIT:  MOV     [BP-02],AX   }
  136. )
  137. END;
  138.  
  139. FUNCTION LongMax(VA, VB: longint): longint;
  140. BEGIN
  141. Inline(
  142.    $8B/$46/<VA/            {       MOV     AX,VA        }
  143.    $8B/$56/<VA+2/          {       MOV     DX,wo VA+2   }
  144.    $3B/$56/<VB+2/          {       CMP     DX,wo VB+2   }
  145.    $7F/$0D/                {       JG      EXIT         }
  146.    $7C/$05/                {       JL      OTHR         }
  147.    $3B/$46/<VB/            {       CMP     AX,VB        }
  148.    $7D/<06/                {       JGE     EXIT         }
  149.    $8B/$46/<VB/            {OTHR:  MOV     AX,VB        }
  150.    $8B/$56/<VB+2/          {       MOV     DX,wo VB+2   }
  151.    $89/$46/$FC/            {EXIT:  MOV     [BP-04],AX   }
  152.    $89/$56/$FE             {       MOV     [BP-02],DX   }
  153. )
  154. END;
  155.  
  156. FUNCTION LongMin(VA, VB: longint): longint;
  157. BEGIN
  158. Inline(
  159.    $8B/$46/<VA/            {       MOV     AX,VA        }
  160.    $8B/$56/<VA+2/          {       MOV     DX,wo VA+2   }
  161.    $3B/$56/<VB+2/          {       CMP     DX,wo VB+2   }
  162.    $7C/$0D/                {       JL      EXIT         }
  163.    $7F/$05/                {       JG      OTHR         }
  164.    $3B/$46/<VB/            {       CMP     AX,VB        }
  165.    $76/$06/                {       JBE     EXIT         }
  166.    $8B/$46/<VB/            {OTHR:  MOV     AX,VB        }
  167.    $8B/$56/<VB+2/          {       MOV     DX,wo VB+2   }
  168.    $89/$46/$FC/            {EXIT:  MOV     [BP-04],AX   }
  169.    $89/$56/$FE             {       MOV     [BP-02],DX   }
  170. )
  171. END;
  172.  
  173. FUNCTION LongSgn(VA: longint): longint;
  174. BEGIN
  175. Inline(
  176.   $8B/$46/<VA/             {       MOV     AX,VA        }
  177.   $8B/$56/<VA+2/           {       MOV     DX,wo VA+2   }
  178.   $09/$C2/                 {       OR      DX,AX        }
  179.   $74/$0D/                 {       JZ      EXIT         }
  180.   $89/$C2/                 {       MOV     DX,AX        }
  181.   $D1/$C0/                 {       ROL     AX,1         }
  182.   $25/$01/$00/             {       AND     AX,0001      }
  183.   $D1/$E0/                 {       SHL     AX,1         }
  184.   $48/                     {       DEC     AX           }
  185.   $F7/$D8/                 {       NEG     AX           }
  186.   $99/                     {       CWD                  }
  187.   $89/$46/$FC/             {EXIT:  MOV     [BP-04],AX   }
  188.   $89/$56/$FE              {       MOV     [BP-02],DX   }
  189. )
  190. END;
  191.  
  192. END.
  193.