mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-11-26 16:49:18 +00:00
158 lines
5.1 KiB
C
158 lines
5.1 KiB
C
/*
|
|
File: NetBoot.h
|
|
|
|
Contains: xxx put contents here (or delete the whole line) xxx
|
|
|
|
Written by: xxx put name of writer here (or delete the whole line) xxx
|
|
|
|
Copyright: © 1989-1990 by Apple Computer, Inc., all rights reserved.
|
|
|
|
Change History (most recent first):
|
|
|
|
<3> 3/9/90 PWD Added to bbs, changed equates for xo.
|
|
<1.1> 12/12/89 PWD Added support for self-authenticating images
|
|
<1.0> 10/30/89 PWD Adding to EASE
|
|
|
|
To Do:
|
|
*/
|
|
|
|
/*EASE$$$ READ ONLY COPY of file “netBoot.h”
|
|
** 1.1 PWD 12/12/1989 Added support for self-authenticating images
|
|
** 1.0 PWD 10/30/1989 Adding to EASE
|
|
** END EASE MODIFICATION HISTORY */
|
|
#ifndef __APPLETALK__
|
|
#include "AppleTalk.h"
|
|
#endif
|
|
|
|
#ifndef __QUICKDRAW__
|
|
#include "QuickDraw.h"
|
|
#endif
|
|
|
|
|
|
/* csCodes for the protocol boot driver */
|
|
#define getBootBlocks 1 /* return boot blocks in ioBuffer */
|
|
#define getSysVol 2 /* get a system volume & be ready to mount */
|
|
#define mountSysVol 3 /* mount the volume (filesystem is initted) */
|
|
#define goodBye 4 /* netBoot driver is going away */
|
|
#define getDriverGlobals 5 /* return the driver globals... */
|
|
|
|
/* and some error codes to return from getBootBlocks control call */
|
|
/* these will be mapped by the netBoot driver into something reasonable */
|
|
|
|
#define dTryAgain -1 /* negative for non-fatal */
|
|
#define dNoError 0 /* zero for no error */
|
|
#define dNeverAgain 1 /* positive for fatal */
|
|
|
|
#define NONFATAL offLinErr // the "something reasonable" from above
|
|
#define FATAL noDriveErr
|
|
|
|
/* error codes returned by the FINDNOPENDRIVER routine */
|
|
|
|
#define dProtocolNotFound -10 /* couldn't map the pram protocol id to a
|
|
boot protocol driver */
|
|
|
|
/* csCodes for the management driver */
|
|
#define ejectCode 7
|
|
#define showIcon 6
|
|
#define goodByeKiss 5
|
|
#define getGlobals 4
|
|
#define getPRAM 3
|
|
#define setPRAM 2
|
|
|
|
/* some more interesting equates */
|
|
#define CatBoot 40
|
|
#define TypDRVR 2
|
|
#define TypRemote 1
|
|
#define DrSwATalk 1
|
|
|
|
/* boot protocol constants */
|
|
#define MACHINE_MAC 1 /* mac machine id */
|
|
|
|
#define DEFAULT_RETRANS 15 /* ticks between request retransmissions, default */
|
|
#define DEFAULT_ROUNDTRIP 4 /* first guess for roundtrip for smoothing */
|
|
#define DEFAULT_BACKOFF 1 /* first backoff exponent */
|
|
|
|
#define DEFAULT_PRAM_TIMEOUT 2 /* timeout in seconds for server looking */
|
|
#define TICKS_PER_SECOND 60 /* ticks per second */
|
|
|
|
/* pram constants */
|
|
|
|
// the osType byte (set via the start manager)
|
|
#define MAC_OS 0x00 /* mac os from getosdefault */
|
|
|
|
// the preferred protocol byte
|
|
#define BOOT_DEFAULT 0x00 /* boot using the default (currently appletalk) */
|
|
#define BOOT_ATALK 0x01 /* boot using appletalk */
|
|
#define BOOT_IP 0x02 /* boot using IP */
|
|
|
|
// the flags byte
|
|
#define BOOT_ENABLE 0x80 /* bit for booting (0 = boot) */
|
|
#define BOOT_RESERVED 0x70 /* reserved bits */
|
|
#define BOOT_RETRIES 0x0F /* number of seconds to skip net booting (0-15) */
|
|
|
|
|
|
typedef struct {
|
|
unsigned char nbpVars; /* address of last server that we booted off of */
|
|
unsigned char timeout; /* seconds to wait for bootserver response */
|
|
unsigned int signature[4]; /* image signature */
|
|
char userName[31]; /* an array of char, no length byte */
|
|
char password[8]; /* '' */
|
|
short serverNum; /* the server number */
|
|
} ATPRAMrec;
|
|
|
|
typedef struct {
|
|
char osType; /* preferred os to boot from */
|
|
char protocol; /* preferred protocol to boot from */
|
|
char errors; /* last error in network booting */
|
|
char flags; /* flags for: never net boot, boot first, etc. */
|
|
union {
|
|
ATPRAMrec atPRAM; /* the AppleTalk PRAM definition */
|
|
char pad[68]; /* to reserve the space for other definitions */
|
|
} u;
|
|
} bootVars;
|
|
|
|
typedef struct {
|
|
char dProto, // Protocol to look for
|
|
dProtoSlot, // slot that it is in (if slot based)
|
|
dProtoID, // ID (slot resource ID)
|
|
dProtoDriveNum; // drive queue entry number
|
|
short dProtoRefNum; // refnum of the driver (0 if not opened)
|
|
short dLastError; // last error returned
|
|
int *doldToExtFS; // place to save external file system hook when
|
|
// we patch in our routine to catch the mount
|
|
/* and now the quickdraw globals... */
|
|
struct {
|
|
char privates[76];
|
|
long randSeed;
|
|
BitMap screenBits;
|
|
Cursor arrow;
|
|
Pattern dkGray;
|
|
Pattern ltGray;
|
|
Pattern gray;
|
|
Pattern black;
|
|
Pattern white;
|
|
GrafPtr thePort;
|
|
} dQDGlobals;
|
|
|
|
GrafPort *dMyPort; /* and our port pointer... */
|
|
|
|
} dGlobals;
|
|
|
|
extern void pdbzero(char *c,int length);
|
|
|
|
typedef struct {
|
|
QElem *qLink; /* queue link in header*/
|
|
short qType; /* type byte for safety check*/
|
|
short ioTrap; /* FS: the Trap*/
|
|
Ptr ioCmdAddr; /* FS: address to dispatch to*/
|
|
ProcPtr ioCompletion; /* completion routine addr (0 for synch calls)*/
|
|
OSErr ioResult; /* result code*/
|
|
StringPtr ioNamePtr; /* ptr to Vol:FileName string*/
|
|
short ioVRefNum; /* volume refnum (DrvNum for Eject and MountVol)*/
|
|
short ioCRefNum; /* refNum for I/O operation*/
|
|
short csCode; /* word for control status code*/
|
|
Ptr returnVCB; /* place to return pointer to generated VCB */
|
|
Ptr returnDrvQ; /* place to return pointer to generated drive queue entry */
|
|
short csParam[7]; /* pad */
|
|
} netBootPBRec, *netBootPBPtr;
|