executor/src/include/DeviceMgr.h

146 lines
3.6 KiB
C

#if !defined (__DEVICEMGR__)
#define __DEVICEMGR__
/*
* Copyright 1989, 1990 by Abacus Research and Development, Inc.
* All rights reserved.
*
* $Id: DeviceMgr.h 63 2004-12-24 18:19:43Z ctm $
*/
#include "WindowMgr.h"
#include "FileMgr.h"
/*
* Note the structure below is similar to that presented on IM-188,
* but I don't use offsets to the routines, but pointers to the routines
* directly. This means the size of the structure is larger than one
* might expect.
*/
typedef struct {
ProcPtr udrvrOpen;
ProcPtr udrvrPrime; /* read and write */
ProcPtr udrvrCtl; /* control and killio */
ProcPtr udrvrStatus;
ProcPtr udrvrClose;
Str255 udrvrName;
} umacdriver, *umacdriverptr;
typedef struct PACKED {
INTEGER drvrFlags;
INTEGER drvrDelay;
INTEGER drvrEMask;
INTEGER drvrMenu;
INTEGER drvrOpen;
INTEGER drvrPrime;
INTEGER drvrCtl;
INTEGER drvrStatus;
INTEGER drvrClose;
char drvrName;
} ramdriver;
typedef ramdriver *ramdriverptr;
MAKE_HIDDEN(ramdriverptr);
typedef HIDDEN_ramdriverptr *ramdriverhand;
typedef enum { Open, Prime, Ctl, Stat, Close } DriverRoutineType;
typedef struct PACKED {
PACKED_MEMBER(umacdriverptr, dCtlDriver); /* not just Ptr */
INTEGER dCtlFlags;
QHdr dCtlQHdr;
LONGINT dCtlPosition;
PACKED_MEMBER(Handle, dCtlStorage);
INTEGER dCtlRefNum;
LONGINT dCtlCurTicks;
PACKED_MEMBER(WindowPtr, dCtlWindow);
INTEGER dCtlDelay;
INTEGER dCtlEMask;
INTEGER dCtlMenu;
} DCtlEntry, *DCtlPtr;
MAKE_HIDDEN(DCtlPtr);
typedef HIDDEN_DCtlPtr *DCtlHandle;
MAKE_HIDDEN(DCtlHandle);
typedef HIDDEN_DCtlHandle *DCtlHandlePtr;
MAKE_HIDDEN(DCtlHandlePtr);
#define asyncTrpBit (1 << 10)
#define noQueueBit (1 << 9)
#define NEEDTIMEBIT (1 << 13)
#define aRdCmd 2
#define aWrCmd 3
#define killCode 1
#define NDEVICES 48
#define abortErr (-27)
#define badUnitErr (-21)
#define controlErr (-17)
#define dInstErr (-26)
#define dRemovErr (-25)
#define notOpenErr (-28)
#define openErr (-23)
#define readErr (-19)
#define statusErr (-18)
#define unitEmptyErr (-22)
#define writErr (-20)
typedef struct {
OSErr (*open)();
OSErr (*prime)();
OSErr (*ctl)();
OSErr (*status)();
OSErr (*close)();
StringPtr name;
INTEGER refnum;
} driverinfo;
/*
* __ROMlib_otherdrivers is initialized to null, but can be used to allow
* extra drivers to be called. Have __ROMlib_otherdrivers point to an array
* driverinfo (terminated with a null open field) before you call PBOpen
* if you have additional drivers to use.
*/
extern driverinfo *__ROMlib_otherdrivers;
#if !defined (UTableBase_H)
extern HIDDEN_DCtlHandlePtr UTableBase_H;
extern HIDDEN_Ptr VIA_H;
extern INTEGER UnitNtryCnt;
extern INTEGER UnitNtryCnt;
#endif
#define UTableBase (UTableBase_H.p)
#define VIA (VIA_H.p)
#if !defined (__STDC__)
extern OSErr PBControl();
extern OSErr PBStatus();
extern OSErr PBKillIO();
extern OSErr OpenDriver();
extern OSErr CloseDriver();
extern OSErr Control();
extern OSErr Status();
extern OSErr KillIO();
extern DCtlHandle GetDCtlEntry();
#else /* __STDC__ */
extern OSErr PBControl( ParmBlkPtr pbp, BOOLEAN a );
extern OSErr PBStatus( ParmBlkPtr pbp, BOOLEAN a );
extern OSErr PBKillIO( ParmBlkPtr pbp, BOOLEAN a );
extern OSErr OpenDriver( StringPtr name, INTEGER *rnp );
extern OSErr CloseDriver( INTEGER rn );
extern OSErr Control( INTEGER rn, INTEGER code,
Ptr param );
extern OSErr Status( INTEGER rn, INTEGER code, Ptr param );
extern OSErr KillIO( INTEGER rn );
extern DCtlHandle GetDCtlEntry( INTEGER rn );
#endif /* __STDC__ */
#endif /* __DEVICEMGR__ */