(*
  :Program.       Printf
  :Author.        Volker Rudolph
  :Address.       Medicusstr. 31 / 6750 Kaiserslautern
  :Phone.         0631/17160
  :ShortCut.      [vor]
  :Support.       Bernd Preusing (DisObject)
  :Version.       1.2
  :Date.          25.6.1989
  :Copyright.     PD
  :Language.      Assembler / Modula-II
  :Translator.    Asm68k(PD) / M2Amiga 3.2d
  :Imports.       Nichts !!!
  :Contents.      Allzweck-Textausgabe in Form der C-Funktion Printf.
  :Usage.         Aufruf und Parameter wie in C.
  :Remark.        Dieses Defintion-Modul sollte nicht kompiliert werden,
  :Remark.        da sonst die Module-ID im OBJ-File nicht mehr stimmt.
*)

DEFINITION MODULE Printf;

CONST
  (* Größe des Ausgabepuffers *)
  (* Wenn der Ausgabestring länger wird, wird er abgeschnitten *)
  bufSize = 120;

TYPE
  (* Man kann jede Funktion dieses Typs als Ausgabeprozedur angeben *)
  WriteProcType = PROCEDURE(ARRAY OF CHAR);
  (* Abkürzung *)
  L = LONGINT;

VAR
  (* Ausgabeprozedur *)
  writeProc:WriteProcType;

(* --------------------------------------------------------------------- *)

(* Standard-Ausgabeprozedur *)
PROCEDURE WriteToOutput(str:ARRAY OF CHAR);

(* --------------------------------------------------------------------- *)

PROCEDURE Printf0(str:ARRAY OF CHAR);
PROCEDURE Printf1(str:ARRAY OF CHAR;val1:LONGINT);
PROCEDURE Printf2(str:ARRAY OF CHAR;val1,val2:LONGINT);
PROCEDURE Printf3(str:ARRAY OF CHAR;val1,val2,val3:LONGINT);
PROCEDURE Printf4(str:ARRAY OF CHAR;val1,val2,val3,val4:LONGINT);
PROCEDURE Printf5(str:ARRAY OF CHAR;val1,val2,val3,val4,val5:LONGINT);
PROCEDURE Printf6(str:ARRAY OF CHAR;val1,val2,val3,val4,val5,val6:LONGINT);

(* --------------------------------------------------------------------- *)

PROCEDURE SPrintf0(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR);

PROCEDURE SPrintf1(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1:LONGINT);
PROCEDURE SPrintf2(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1,val2:LONGINT);
PROCEDURE SPrintf3(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1,val2,val3:LONGINT);
PROCEDURE SPrintf4(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1,val2,val3,val4:LONGINT);
PROCEDURE SPrintf5(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1,val2,val3,val4,val5:LONGINT);
PROCEDURE SPrintf6(VAR buf:ARRAY OF CHAR;str:ARRAY OF CHAR;
                   val1,val2,val3,val4,val5,val6:LONGINT);

(* --------------------------------------------------------------------- *)

END Printf.

