home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d6xx / d666 / spectroscope.lha / Spectroscope / Source / DeviceSupport.mod next >
Text File  |  1992-05-21  |  2KB  |  66 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.     DeviceSupport.mod
  3.   :Contents.    Easy Device access
  4.   :Author.      Christian Stiens
  5.   :Address.     Heustiege 2, W-4710 Lüdinghausen, GERMANY
  6.   :Copyright.   public domain
  7.   :Language.    Oberon
  8.   :Translator.  Amiga Oberon V2.25 (inofficial beta version)
  9.   :History.     V1.0, 10-May-92
  10. ---------------------------------------------------------------------------*)
  11.  
  12.  
  13. MODULE DeviceSupport;
  14.  
  15.   IMPORT
  16.     e: Exec, es: ExecSupport;
  17.  
  18.   TYPE
  19.     InitProc* = PROCEDURE(ioReq: e.MessagePtr);
  20.  
  21.  
  22.   PROCEDURE OpenDev* (name   : ARRAY OF CHAR;
  23.                       unit   : LONGINT;
  24.                       flags  : LONGSET;
  25.                       ioSize : INTEGER;
  26.                       ioInit : InitProc): e.MessagePtr; (* $CopyArrays- *)
  27.     VAR
  28.       port: e.MsgPortPtr;
  29.       ioReq: e.IORequestPtr;
  30.  
  31.   BEGIN
  32.     port := es.CreatePort("",0);
  33.     IF port = NIL THEN RETURN NIL END;
  34.     IF ioSize = 0 THEN ioSize := SIZE(e.IOStdReq) END;
  35.     ioReq := es.CreateExtIO(port,ioSize);
  36.     IF ioReq = NIL THEN es.DeletePort(port); RETURN NIL END;
  37.     IF ioInit # NIL THEN ioInit(ioReq) END;
  38.     IF e.OpenDevice(name,unit,ioReq,flags) # 0 THEN
  39.       es.DeleteExtIO(ioReq);
  40.       es.DeletePort(port);
  41.       RETURN NIL
  42.     END;
  43.     RETURN ioReq;
  44.   END OpenDev;
  45.  
  46.  
  47.   PROCEDURE CloseDev* (ioReq: e.MessagePtr);
  48.     VAR port: e.MsgPortPtr;
  49.   BEGIN
  50.     port := ioReq.replyPort;
  51.     e.CloseDevice(ioReq);
  52.     es.DeleteExtIO(ioReq);
  53.     es.DeletePort(port);
  54.   END CloseDev;
  55.  
  56.  
  57.   PROCEDURE DoCommand* (ioReq: e.MessagePtr; cmd: INTEGER);
  58.   BEGIN
  59.     ioReq(e.IORequest).command := cmd;
  60.     e.OldDoIO(ioReq);
  61.   END DoCommand;
  62.  
  63.  
  64. END DeviceSupport.
  65.  
  66.