home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / languages / obrn-a_1.5_lib.lha / oberon-a / source2.lha / source / amiga / NonVolatile.mod < prev    next >
Encoding:
Text File  |  1995-01-26  |  3.9 KB  |  170 lines

  1. (*************************************************************************
  2.  
  3.      $RCSfile: NonVolatile.mod $
  4.   Description: Interface to nonvolatile.library
  5.  
  6.    Created by: fjc (Frank Copeland)
  7.     $Revision: 3.6 $
  8.       $Author: fjc $
  9.         $Date: 1995/01/26 02:39:55 $
  10.  
  11.   Includes Release 40.15
  12.  
  13.   (C) Copyright 1990-1993 Commodore-Amiga, Inc.
  14.       All Rights Reserved
  15.  
  16.   Oberon-A Interface Copyright © 1994-1995, Frank Copeland.
  17.   This file is part of the Oberon-A Interface.
  18.   See Oberon-A.doc for conditions of use and distribution.
  19.  
  20. *************************************************************************)
  21.  
  22. <* STANDARD- *> <* INITIALISE- *> <* MAIN- *>
  23. <*$ CaseChk-  IndexChk- LongVars+ NilChk-  *>
  24. <*$ RangeChk- StackChk- TypeChk-  OvflChk- *>
  25.  
  26. MODULE [2] NonVolatile;
  27.  
  28. IMPORT SYS := SYSTEM, Kernel, e := Exec, s := Sets;
  29.  
  30. (*
  31. **      $VER: nonvolatile.h 40.8 (30.7.93)
  32. **
  33. **      nonvolatile.library interface structures and defintions.
  34. *)
  35.  
  36.  
  37. (*****************************************************************************)
  38.  
  39. TYPE
  40.  
  41.   NVInfoPtr * = POINTER TO NVInfo;
  42.   NVInfo * = RECORD
  43.     maxStorage * :  e.ULONG;
  44.     freeStorage * :  e.ULONG;
  45.   END;
  46.  
  47.  
  48. (*****************************************************************************)
  49.  
  50. TYPE
  51.  
  52.   EntryPtr * = POINTER TO Entry;
  53.   Entry * = RECORD (e.MinNodeBase)
  54.     minNode *    : e.MinNode;
  55.     name *       : e.LSTRPTR;
  56.     size       * : e.ULONG;
  57.     protection * : e.ULONG;
  58.   END;
  59.  
  60. CONST
  61.  
  62. (* bit definitions for mask in SetNVProtection().  Also used for
  63.  * NVEntry.nve_Protection.
  64.  *)
  65.   delete * = 0;
  66.   appName * = 31;
  67.  
  68.  
  69. (*****************************************************************************)
  70.  
  71. CONST
  72.  
  73. (* errors from StoreNV() *)
  74.   errBadName * = 1;
  75.   errWriteProt * = 2;
  76.   errFail * = 3;
  77.   errFatal * = 4;
  78.  
  79. TYPE
  80.   DataPtr * = POINTER TO Data;
  81.   Data * = RECORD END;
  82.  
  83.  
  84. (*-- Library Base variable --------------------------------------------*)
  85.  
  86. CONST
  87.  
  88.   nonvolatileName * = "nonvolatile.library";
  89.  
  90. VAR
  91.  
  92.   base* : e.LibraryPtr;
  93.  
  94.  
  95. (*-- Library Functions ------------------------------------------------*)
  96.  
  97. (*
  98. **      $VER: nonvolatile_protos.h 40.5 (30.7.93)
  99. *)
  100.  
  101. (*--- functions in V40 or higher (Release 3.1) ---*)
  102.  
  103. PROCEDURE GetCopyNV* [base,-30]
  104.   ( appName        [8] : ARRAY OF CHAR;
  105.     itemName       [9] : ARRAY OF CHAR;
  106.     killRequesters [1] : e.LONGBOOL )
  107.   : DataPtr;
  108.  
  109. PROCEDURE FreeNVData* [base,-36]
  110.   ( data [8] : DataPtr );
  111.  
  112. PROCEDURE StoreNV* [base,-42]
  113.   ( appName        [8] : ARRAY OF CHAR;
  114.     itemName       [9] : ARRAY OF CHAR;
  115.     data          [10] : DataPtr;
  116.     length         [0] : e.ULONG;
  117.     killRequesters [1] : e.LONGBOOL )
  118.   : e.UWORD;
  119.  
  120. PROCEDURE DeleteNV* [base,-48]
  121.   ( appName        [8] : ARRAY OF CHAR;
  122.     itemName       [9] : ARRAY OF CHAR;
  123.     killRequesters [1] : e.LONGBOOL )
  124.   : BOOLEAN;
  125.  
  126. PROCEDURE GetNVInfo* [base,-54]
  127.   ( killRequesters [1] : e.LONGBOOL )
  128.   : NVInfoPtr;
  129.  
  130. PROCEDURE GetNVList* [base,-60]
  131.   ( appName        [8] : ARRAY OF CHAR;
  132.     killRequesters [1] : e.LONGBOOL )
  133.   : e.MinListPtr;
  134.  
  135. PROCEDURE SetNVProtection* [base,-66]
  136.   ( appName        [8] : ARRAY OF CHAR;
  137.     itemName       [9] : ARRAY OF CHAR;
  138.     mask           [2] : s.SET32;
  139.     killRequesters [1] : e.LONGBOOL )
  140.   : BOOLEAN;
  141.  
  142.  
  143. (* determine the size of data returned by this library *)
  144. (* #define SizeNVData(DataPtr) ((((ULONG * ) DataPtr)[-1]) - 4) *)
  145.  
  146. (*------------------------------------*)
  147. PROCEDURE [0] SizeNVData (data : DataPtr) : e.ULONG;
  148.   VAR size : LONGINT;
  149. BEGIN (* SizeNVData *)
  150.   SYS.GET (SYS.VAL (LONGINT, data) - 4, size);
  151.   RETURN size - 4
  152. END SizeNVData;
  153.  
  154.  
  155. (*-- Library Base variable --------------------------------------------*)
  156.  
  157. <*$LongVars-*>
  158.  
  159. (*-----------------------------------*)
  160. PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
  161.  
  162. BEGIN (* CloseLib *)
  163.   IF base # NIL THEN e.CloseLibrary (base) END
  164. END CloseLib;
  165.  
  166. BEGIN
  167.   base := e.OpenLibrary (nonvolatileName, e.libraryMinimum);
  168.   IF base # NIL THEN Kernel.SetCleanup (CloseLib) END
  169. END NonVolatile.
  170.