mirror of
https://github.com/ctm/executor.git
synced 2024-06-16 04:29:29 +00:00
146 lines
3.6 KiB
C
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__ */
|