(**********************************************************************
  :Program.    Assembler2.def
  :Contents.   Some M2-Procedures translated to Assembler for M2Amiga V3.2d
  :Author.     Stefan Salewski
  :Copyright.  Public Domain
  :Language.   Modula-2 with INLINE-Assembler-Code
  :Translator. M2Amiga AMSoft V3.2d and Profimat
  :History.    V1.0 2.Jul.1989
  :Address.    Stolper Weg 3, D-2160 Stade
**********************************************************************)

DEFINITION MODULE Assembler2;
  FROM SYSTEM IMPORT ADDRESS,BYTE;
  FROM Exec IMPORT UByte;

  CONST
    A0=8;
    A1=8+1;
    A2=8+2;
    A3=8+3;
    
(* The following 8 procedures returnes the minimum/maximum of i and j *)

  PROCEDURE MaxCard(i{2}:CARDINAL;j{3}:CARDINAL):CARDINAL;

  PROCEDURE MaxInt(i{2}:INTEGER;j{3}:INTEGER):INTEGER;

  PROCEDURE MinCard(i{2}:CARDINAL;j{3}:CARDINAL):CARDINAL;

  PROCEDURE MinInt(i{2}:INTEGER;j{3}:INTEGER):INTEGER;

  PROCEDURE MaxLongCard(i{2}:LONGCARD;j{3}:LONGCARD):LONGCARD;

  PROCEDURE MaxLongInt(i{2}:LONGINT;j{3}:LONGINT):LONGINT;

  PROCEDURE MinLongCard(i{2}:LONGCARD;j{3}:LONGCARD):LONGCARD;

  PROCEDURE MinLongInt(i{2}:LONGINT;j{3}:LONGINT):LONGINT;
  
  
  PROCEDURE Fill(dest{A2}:ADDRESS;byte{2}:BYTE;len{3}:CARDINAL);
  (*
    Fills the area dest..(dest+len-1) with byte.
    Attention: len=0 is the same as len=MAX(CARDINAL) !!!
  *)
  
  PROCEDURE Equal(adr0{A0}:ADDRESS;adr1{A1}:ADDRESS;len{2}:CARDINAL):BOOLEAN;
  (*
    Compares the len bytes at address adr0 and adr1.
    Attention: len=0 is the same as len=MAX(CARDINAL) !!!
  *)

END Assembler2.def
