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 >
Wrap
Text File
|
1992-05-21
|
2KB
|
66 lines
(*---------------------------------------------------------------------------
:Program. DeviceSupport.mod
:Contents. Easy Device access
:Author. Christian Stiens
:Address. Heustiege 2, W-4710 Lüdinghausen, GERMANY
:Copyright. public domain
:Language. Oberon
:Translator. Amiga Oberon V2.25 (inofficial beta version)
:History. V1.0, 10-May-92
---------------------------------------------------------------------------*)
MODULE DeviceSupport;
IMPORT
e: Exec, es: ExecSupport;
TYPE
InitProc* = PROCEDURE(ioReq: e.MessagePtr);
PROCEDURE OpenDev* (name : ARRAY OF CHAR;
unit : LONGINT;
flags : LONGSET;
ioSize : INTEGER;
ioInit : InitProc): e.MessagePtr; (* $CopyArrays- *)
VAR
port: e.MsgPortPtr;
ioReq: e.IORequestPtr;
BEGIN
port := es.CreatePort("",0);
IF port = NIL THEN RETURN NIL END;
IF ioSize = 0 THEN ioSize := SIZE(e.IOStdReq) END;
ioReq := es.CreateExtIO(port,ioSize);
IF ioReq = NIL THEN es.DeletePort(port); RETURN NIL END;
IF ioInit # NIL THEN ioInit(ioReq) END;
IF e.OpenDevice(name,unit,ioReq,flags) # 0 THEN
es.DeleteExtIO(ioReq);
es.DeletePort(port);
RETURN NIL
END;
RETURN ioReq;
END OpenDev;
PROCEDURE CloseDev* (ioReq: e.MessagePtr);
VAR port: e.MsgPortPtr;
BEGIN
port := ioReq.replyPort;
e.CloseDevice(ioReq);
es.DeleteExtIO(ioReq);
es.DeletePort(port);
END CloseDev;
PROCEDURE DoCommand* (ioReq: e.MessagePtr; cmd: INTEGER);
BEGIN
ioReq(e.IORequest).command := cmd;
e.OldDoIO(ioReq);
END DoCommand;
END DeviceSupport.