mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 16:31:01 +00:00
4325cdcc78
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
346 lines
9.1 KiB
C
346 lines
9.1 KiB
C
/************************************************************
|
||
|
||
Devices.h
|
||
C Interface to the Macintosh Libraries
|
||
|
||
Created: Saturday, July 27, 1991 at 2:55 PM
|
||
|
||
Copyright Apple Computer, Inc. 1985-1991
|
||
All rights reserved
|
||
|
||
Change History (most recent first):
|
||
|
||
<SM4> 1/16/94 pdw Fixed PBControlSync in-line.
|
||
<SM3> 1/13/94 chp Added lots of types and constants defined in Inside Mac but
|
||
always missing from the C headers. Fixed DrvrInstall prototypes.
|
||
<SM2> 10/14/93 pdw <MC2>
|
||
<MC2> 9/26/93 pdw Rolled in a lot of Reality changes. Made it bearable in spots
|
||
and added DrvrGestalt stuff.
|
||
<14> 7/30/93 DTY Sync up with NuReality again.
|
||
<13> 6/3/93 DTY Sync up with NuReality version of this header.
|
||
<12> 7/30/91 JL Updated Copyright.
|
||
<11> 1/30/91 JL group enums into groups of 20.
|
||
<10> 1/27/91 LN Checked in Database generate file from DSG.
|
||
<9> 1/7/91 JDR (dba) Adding messages sent to the monitor function in the
|
||
Control Panel.
|
||
<7> 12/12/90 JL Put formal parameter names back.
|
||
<6> 11/8/90 JL Changed all #defines to anonymous enums
|
||
<5> 11/4/90 dba used constStr255Parameter; got rid of some extraneous parameter
|
||
names; made some parameters void* instead of Ptr; added more use
|
||
of const in parameters
|
||
<4> 10/21/90 gbm (with dba) Made compatible with 3.2 C compiler (and incompatible
|
||
with previous compilers).
|
||
10/10/90 JAL New style #Pragma Parameters for MPW 3.2 C
|
||
1.1 11/9/88 CCH Fixed headers and removed projector resource.
|
||
1.0 11/9/88 CCH Adding to EASE.
|
||
|
||
************************************************************/
|
||
|
||
|
||
#ifndef __DEVICES__
|
||
#define __DEVICES__
|
||
|
||
#ifndef __OSUTILS__
|
||
#include <OSUtils.h>
|
||
#endif
|
||
|
||
#ifndef __FILES__
|
||
#include <Files.h>
|
||
#endif
|
||
|
||
#ifndef __QUICKDRAW__
|
||
#include <Quickdraw.h>
|
||
#endif
|
||
|
||
|
||
|
||
/* control panel message constants (Why are these in Devices.h?) */
|
||
|
||
enum {
|
||
chooserID = 1,
|
||
initDev = 0, // Time for cdev to initialize itself
|
||
hitDev = 1, // Hit on one of my items
|
||
closeDev = 2, // Close yourself
|
||
nulDev = 3, // Null event
|
||
updateDev = 4, // Update event
|
||
activDev = 5, // Activate event
|
||
deactivDev = 6, // Deactivate event
|
||
keyEvtDev = 7, // Key down/auto key
|
||
macDev = 8, // Decide whether or not to show up
|
||
undoDev = 9,
|
||
cutDev = 10,
|
||
copyDev = 11,
|
||
newSelMsg = 12,
|
||
fillListMsg = 13,
|
||
getSelMsg = 14,
|
||
selectMsg = 15,
|
||
deselectMsg = 16,
|
||
terminateMsg = 17,
|
||
buttonMsg = 19,
|
||
pasteDev = 12,
|
||
clearDev = 13,
|
||
cursorDev = 14,
|
||
cdevGenErr = -1, // General error; gray cdev w/o alert
|
||
cdevMemErr = 0, // Memory shortfall; alert user please
|
||
cdevResErr = 1, // Couldn't get a needed resource; alert
|
||
cdevUnset = 3 // cdevValue is initialized to this
|
||
};
|
||
|
||
/* Monitors control panel messages */
|
||
|
||
enum {
|
||
initMsg = 1, // initialization
|
||
okMsg = 2, // user clicked OK button
|
||
cancelMsg = 3, // user clicked Cancel button
|
||
hitMsg = 4, // user clicked control in Options dialog
|
||
nulMsg = 5, // periodic event
|
||
updateMsg = 6, // update event
|
||
activateMsg = 7, // not used
|
||
deactivateMsg = 8, // not used
|
||
keyEvtMsg = 9, // keyboard event
|
||
superMsg = 10, // show superuser controls
|
||
normalMsg = 11, // show only normal controls
|
||
startupMsg = 12 // code has been loaded
|
||
};
|
||
|
||
|
||
|
||
/* Device Manager structures and constants */
|
||
|
||
struct DCtlEntry {
|
||
Ptr dCtlDriver;
|
||
short dCtlFlags;
|
||
QHdr dCtlQHdr;
|
||
long dCtlPosition;
|
||
Handle dCtlStorage;
|
||
short dCtlRefNum;
|
||
long dCtlCurTicks;
|
||
WindowPtr dCtlWindow;
|
||
short dCtlDelay;
|
||
short dCtlEMask;
|
||
short dCtlMenu;
|
||
};
|
||
typedef struct DCtlEntry DCtlEntry, *DCtlPtr, **DCtlHandle;
|
||
|
||
struct AuxDCE {
|
||
Ptr dCtlDriver;
|
||
short dCtlFlags;
|
||
QHdr dCtlQHdr;
|
||
long dCtlPosition;
|
||
Handle dCtlStorage;
|
||
short dCtlRefNum;
|
||
long dCtlCurTicks;
|
||
GrafPtr dCtlWindow;
|
||
short dCtlDelay;
|
||
short dCtlEMask;
|
||
short dCtlMenu;
|
||
char dCtlSlot;
|
||
char dCtlSlotId;
|
||
long dCtlDevBase;
|
||
Ptr dCtlOwner;
|
||
char dCtlExtDev;
|
||
char fillByte;
|
||
};
|
||
typedef struct AuxDCE AuxDCE, *AuxDCEPtr, **AuxDCEHandle;
|
||
|
||
struct DriverHeader {
|
||
short drvrFlags;
|
||
short drvrDelay;
|
||
short drvrEMask;
|
||
short drvrMenu;
|
||
short drvrOpen;
|
||
short drvrPrime;
|
||
short drvrCtl;
|
||
short drvrStatus;
|
||
short drvrClose;
|
||
unsigned char drvrName [1];
|
||
};
|
||
typedef struct DriverHeader DriverHeader, *DriverHeaderPtr, **DriverHeaderHandle;
|
||
|
||
|
||
// miscellaneous Device Manager constants
|
||
|
||
enum {
|
||
ioInProgress = 1, // predefined value of ioResult while I/O is pending
|
||
|
||
aRdCmd = 2, // low byte of ioTrap for Read calls
|
||
aWrCmd = 3, // low byte of ioTrap for Write calls
|
||
|
||
/* trap word modifiers */
|
||
asyncTrpBit = 10,
|
||
noQueueBit = 9,
|
||
|
||
/* special csCodes */
|
||
goodBye = -1,
|
||
killCode = 1,
|
||
accRun = 65
|
||
};
|
||
|
||
|
||
// old dCtlFlags bit definitions (treated as bytes)
|
||
|
||
enum {
|
||
// Set if driver...
|
||
|
||
/* driver flags in high byte [IM II-188] */
|
||
dReadEnable = 0, // can respond to Read calls
|
||
dWritEnable = 1, // can respond to Write calls
|
||
dCtlEnable = 2, // can respond to Control calls
|
||
dStatEnable = 3, // can respond to Status calls
|
||
dNeedGoodBye = 4, // needs to be called before the application heap is reinitialized
|
||
dNeedTime = 5, // needs time for performing a periodic action
|
||
dNeedLock = 6, // will be locked in memory as soon as it<69>s opened
|
||
// (always set for ROM drivers)
|
||
|
||
/* DCE flags in low byte [IM II-190] */
|
||
dOpened = 5, // is open
|
||
dRAMBased = 6, // dCtlDriver is a resource handle
|
||
drvrActive = 7 // has pending I/O
|
||
};
|
||
|
||
// new dCtlFlags bit definitions (treated as word)
|
||
|
||
enum {
|
||
Is_AppleTalk = 0,
|
||
Is_Agent = 1,
|
||
FollowsNewRules = 2, // New DRVR Rules Bit
|
||
unused3 = 3,
|
||
|
||
unused4 = 4,
|
||
Is_Open = 5,
|
||
Is_Ram_Based = 6,
|
||
Is_Active = 7,
|
||
|
||
Read_Enable = 8,
|
||
Write_Enable = 9,
|
||
Control_Enable = 10,
|
||
Status_Enable = 11,
|
||
|
||
Needs_Goodbye = 12,
|
||
Needs_Time = 13,
|
||
Needs_Lock = 14,
|
||
unused15 = 15
|
||
};
|
||
|
||
#define Is_AppleTalk_Mask (1 << Is_AppleTalk)
|
||
#define Is_Agent_Mask (1 << Is_Agent)
|
||
#define FollowsNewRules_Mask (1 << FollowsNewRules)
|
||
#define Is_Open_Mask (1 << Is_Open)
|
||
#define Is_Ram_Based_Mask (1 << Is_Ram_Based)
|
||
#define Is_Active_Mask (1 << Is_Active)
|
||
#define Read_Enable_Mask (1 << Read_Enable)
|
||
#define Write_Enable_Mask (1 << Write_Enable)
|
||
#define Control_Enable_Mask (1 << Control_Enable)
|
||
#define Status_Enable_Mask (1 << Status_Enable)
|
||
#define Needs_Goodbye_Mask (1 << Needs_Goodbye)
|
||
#define Needs_Time_Mask (1 << Needs_Time)
|
||
#define Needs_Lock_Mask (1 << Needs_Lock)
|
||
|
||
|
||
|
||
/*** Driver Gestalt Structures ***/
|
||
|
||
#define driverGestaltCode 43
|
||
|
||
// Currently defined drvrGestalt selectors
|
||
|
||
#define driverGestaltSync 'sync' // True if driver only behaves synchronously.
|
||
#define driverGestaltPrefetch 'prft' // The prefetch buffer characteristics (size and time to prefetch)
|
||
#define driverGestaltBoot 'boot' // value to place in PRAM for this drive (long)
|
||
|
||
|
||
// Structures for currently defined drvrGestalt selectors
|
||
|
||
typedef struct
|
||
{
|
||
Boolean behavesSynchronously;
|
||
} driverGestaltSyncResponse;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
unsigned char extDev; // Packed target (upper 5 bits) LUN (lower 3 bits)
|
||
unsigned char partition; // Unused
|
||
unsigned char SIMSlot; // Slot
|
||
unsigned char SIMsRSRC // sRsrcID
|
||
} driverGestaltBootResponse;
|
||
|
||
|
||
typedef union
|
||
{
|
||
driverGestaltSyncResponse sync;
|
||
driverGestaltBootResponse boot;
|
||
} driverGestaltInfo;
|
||
|
||
|
||
// status parameter block for drvrGestalt calls
|
||
|
||
typedef struct DriverGestaltParam {
|
||
ParamBlockHeader
|
||
short ioCRefNum; // refNum for I/O operation
|
||
short csCode; // == driverGestaltCode
|
||
OSType driverGestaltSelector;
|
||
driverGestaltInfo * driverGestaltResponse;
|
||
} DriverGestaltParam;
|
||
|
||
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
pascal DCtlHandle GetDCtlEntry(short refNum);
|
||
|
||
pascal Boolean SetChooserAlert(Boolean f);
|
||
|
||
pascal OSErr OpenDriver(ConstStr255Param name,short *drvrRefNum);
|
||
|
||
OSErr opendriver(char *driverName,short *refNum);
|
||
|
||
pascal OSErr CloseDriver(short refNum);
|
||
|
||
pascal OSErr Control(short refNum,short csCode,const void *csParamPtr);
|
||
|
||
pascal OSErr Status(short refNum,short csCode,void *csParamPtr);
|
||
|
||
pascal OSErr KillIO(short refNum);
|
||
|
||
pascal OSErr PBControl(ParmBlkPtr paramBlock,Boolean async);
|
||
|
||
pascal OSErr PBStatus(ParmBlkPtr paramBlock,Boolean async);
|
||
|
||
pascal OSErr PBKillIO(ParmBlkPtr paramBlock,Boolean async);
|
||
|
||
#pragma parameter __D0 DrvrInstall(__A0,__D0)
|
||
pascal OSErr DrvrInstall(DriverHeaderPtr drvrPtr, short refNum) = 0xA03D;
|
||
|
||
#pragma parameter __D0 DrvrInstallResrvMem(__A0, __D0)
|
||
pascal OSErr DrvrInstallResrvMem(DriverHeaderPtr drvrPtr, short refNum) = 0xA43D;
|
||
|
||
#pragma parameter __D0 DrvrRemove(__D0)
|
||
pascal OSErr DrvrRemove(short refNum) = 0xA03E;
|
||
|
||
#pragma parameter __D0 PBControlSync(__A0)
|
||
pascal OSErr PBControlSync(ParmBlkPtr paramBlock) = 0xA004;
|
||
|
||
#pragma parameter __D0 PBControlAsync(__A0)
|
||
pascal OSErr PBControlAsync(ParmBlkPtr paramBlock) = 0xA404;
|
||
|
||
#pragma parameter __D0 PBStatusSync(__A0)
|
||
pascal OSErr PBStatusSync(ParmBlkPtr paramBlock) = 0xA005;
|
||
|
||
#pragma parameter __D0 PBStatusAsync(__A0)
|
||
pascal OSErr PBStatusAsync(ParmBlkPtr paramBlock) = 0xA405;
|
||
|
||
#pragma parameter __D0 PBKillIOSync(__A0)
|
||
pascal OSErr PBKillIOSync(ParmBlkPtr paramBlock) = 0xA006;
|
||
|
||
#pragma parameter __D0 PBKillIOAsync(__A0)
|
||
pascal OSErr PBKillIOAsync(ParmBlkPtr paramBlock) = 0xA406;
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif
|