home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / oberon-a-1.4ß.lha / Oberon-A / source / amiga / RexxSysLib.mod < prev    next >
Text File  |  1994-08-08  |  3KB  |  125 lines

  1. (**************************************************************************
  2.  
  3.      $RCSfile: RexxSysLib.mod $
  4.   Description: Interface to rexxsyslib.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.2 $
  8.       $Author: fjc $
  9.         $Date: 1994/08/08 01:12:04 $
  10.  
  11.   $VER: rexxsyslib_protos.h 36.3 (19.2.91)
  12.   Includes Release 40.15
  13.  
  14.   (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  15.       All Rights Reserved
  16.  
  17.   Oberon-A interface Copyright © 1994, Frank Copeland.
  18.   This file is part of the Oberon-A Interface.
  19.   See Oberon-A.doc for conditions of use and distribution.
  20.  
  21. ***************************************************************************)
  22.  
  23. MODULE RexxSysLib;
  24.  
  25. (*
  26. ** $C- CaseChk       $I- IndexChk  $L+ LongAdr   $N- NilChk
  27. ** $P- PortableCode  $R- RangeChk  $S- StackChk  $T- TypeChk
  28. ** $V- OvflChk       $Z- ZeroVars
  29. *)
  30.  
  31. IMPORT E := Exec, RX := Rexx, SYS := SYSTEM;
  32.  
  33. (*-- Library Base variable --------------------------------------------*)
  34.  
  35. TYPE
  36.  
  37.   RxsLibPtr = CPOINTER TO RxsLib;
  38.   RxsLib = RECORD (RX.RxsLib) END;
  39.  
  40. VAR
  41.  
  42.   base *  : RxsLibPtr;
  43.   cleanup : PROCEDURE (rc : LONGINT);
  44.  
  45.  
  46. (*-- Library Functions ------------------------------------------------*)
  47.  
  48. (* --- functions in V33 or higher (distributed as Release 1.2) ---*)
  49.  
  50. LIBCALL (base : RxsLibPtr) CreateArgstring*
  51.   ( string [8] : ARRAY OF CHAR;
  52.     length [0] : E.ULONG )
  53.   : E.STRPTR;
  54.   -126;
  55. LIBCALL (base : RxsLibPtr) DeleteArgstring*
  56.   ( argstring [8] : E.STRPTR );
  57.   -132;
  58. LIBCALL (base : RxsLibPtr) LengthArgstring*
  59.   ( argstring [8] : E.STRPTR )
  60.   : E.ULONG;
  61.   -138;
  62. LIBCALL (base : RxsLibPtr) CreateRexxMsg*
  63.   ( port      [8] : E.MsgPortPtr;
  64.     extension [9] : ARRAY OF CHAR;
  65.     host      [0] : ARRAY OF CHAR )
  66.   : RX.RexxMsgPtr;
  67.   -144;
  68. LIBCALL (base : RxsLibPtr) DeleteRexxMsg*
  69.   ( packet [8] : RX.RexxMsgPtr );
  70.   -150;
  71. LIBCALL (base : RxsLibPtr) ClearRexxMsg*
  72.   ( msgptr [8] : RX.RexxMsgPtr;
  73.     count  [0] : E.ULONG );
  74.   -156;
  75. LIBCALL (base : RxsLibPtr) FillRexxMsg*
  76.   ( msgptr [8] : RX.RexxMsgPtr;
  77.     count  [0] : E.ULONG;
  78.     mask   [1] : E.WSET )
  79.   : BOOLEAN;
  80.   -162;
  81. LIBCALL (base : RxsLibPtr) IsRexxMsg*
  82.   ( msgptr [8] : RX.RexxMsgPtr )
  83.   : BOOLEAN;
  84.   -168;
  85.  
  86.  
  87. LIBCALL (base : RxsLibPtr) LockRexxBase*
  88.   ( resource [0] : E.ULONG );
  89.   -450;
  90. LIBCALL (base : RxsLibPtr) UnlockRexxBase*
  91.   ( resource [0] : E.ULONG );
  92.   -456;
  93.  
  94.  
  95. (*-- Library Base variable --------------------------------------------*)
  96. (* $L- Address globals through A4 *)
  97.  
  98.  
  99. (*-----------------------------------*)
  100. PROCEDURE* CloseLib ();
  101.  
  102. BEGIN (* CloseLib *)
  103.   IF base # NIL THEN E.base.CloseLibrary (base) END;
  104. END CloseLib;
  105.  
  106. (*-----------------------------------*)
  107. PROCEDURE OpenLib * (mustOpen : BOOLEAN);
  108.  
  109. BEGIN (* OpenLib *)
  110.   IF base = NIL THEN
  111.     base :=
  112.       SYS.VAL (
  113.         RxsLibPtr,
  114.         E.base.OpenLibrary (RX.name, E.libraryMinimum));
  115.     IF base # NIL THEN SYS.SETCLEANUP (CloseLib)
  116.     ELSIF mustOpen THEN HALT (100)
  117.     END;
  118.   END;
  119. END OpenLib;
  120.  
  121.  
  122. BEGIN
  123.   base := NIL
  124. END RexxSysLib.
  125.