mac-rom/ProcessMgr/Glue.h
Elliot Nunn 4325cdcc78 Bring in CubeE sources
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.
2017-12-26 09:52:23 +08:00

154 lines
3.4 KiB
C

/*
File: Glue.h
Contains: Assembly glue header for Process Manager.
Written by: Phil Goldman
Copyright: © 1988-1991 by Apple Computer, Inc., all rights reserved.
This file is used in these builds: System
Change History (most recent first):
<3> 7/26/91 stb remove glue for HOpenResFile. Inline is used now when
SystemSevenOrLater is defined.
<0> 5/20/88 PYG New Today.
*/
#ifndef __GLUE__
#define __GLUE__
#ifndef __FILES__
#include "Files.h"
#endif
/* Symbols for values of the asynch parameter of HFS calls */
#define AsyncHFS true
#define SyncHFS false
/* First come the routines that will change the a5 register to either the
* Process Mgr value or the CURRENTA5 value, and back again. ProcessMgrA5Setup and
* CurrentA5Setup also copy the long word that the outgoing a5 points to. This
* long word is a pointer to the QuickDraw global data. This gives the incoming
* a5 world some decent graphics information, and is required if we intend to use
* QuickDraw or its clients while we have the new a5 set up.
*/
/* ProcessMgrA5Setup. Set up PROCESSMGRGLOBALS and copy in the graphics global pointer */
unsigned long
ProcessMgrA5Setup(void)
= {0x200D, 0x2215, 0x2A78, 0x0B7C, 0x2a81};
/* move.l a5,d0
* move.l (a5),d1
* move.l PROCESSMGRGLOBALS,a5
* move.l d1,(a5)
*/
/* CurrentA5Setup. Set up CURRENTA5 and copy in the graphics global pointer.
* NOTE: When is this useful, since the CURRENTA5 graphics world is
* undoubtedly OK to use?
*/
unsigned long
CurrentA5Setup(void)
= {0x200D, 0x2215, 0x2A78, 0x0904, 0x2a81};
/* move.l a5,d0
* move.l (a5),d1
* move.l $904,a5
* move.l d1,(a5)
*/
/* A5Restore. Set a5 from parameter. Does not restore the graphics global pointer. */
#pragma parameter A5Restore(__D0)
void
A5Restore(unsigned long myA5)
= {0x2A40};
/* move.l d0,a5
*/
/* ProcessMgrA5SimpleSetup. Set up PROCESSMGRGLOBALS, but don't copy the graphics global
* pointer.
*/
unsigned long
ProcessMgrA5SimpleSetup(void)
= {0x200D, 0x2A78, 0x0B7C};
/* move.l a5,d0
* move.l PROCESSMGRGLOBALS,a5
*/
/* CurrentA5SimpleSetup. Set up CURRENTA5, but don't copy the graphics global pointer */
unsigned long
CurrentA5SimpleSetup(void)
= {0x200D, 0x2A78, 0x0904};
/* move.l a5,d0
* move.l $904,a5
*/
/* A5SimpleRestore. Set a5 from parameter. Does not restore the graphics global pointer. */
#pragma parameter A5SimpleRestore(__D0)
void
A5SimpleRestore(unsigned long myA5)
= {0x2A40};
/* move.l d0,a5
*/
/* Access to assembler */
void
GetLiveFPURegs(Ptr dstPtr)
= {0x2057, 0xF218, 0xBC00, 0xF210, 0xF0FF};
/* move.l (sp),a0
* fmovem fpcr/fpsr/fpiar,(a0)+
* fmovem fp0-fp7,(a0)
*/
void
SetLiveFPURegs(Ptr srcPtr)
= {0x2057, 0xF218, 0x9C00, 0xF210, 0xD0FF};
/* move.l (sp),a0
* fmovem (a0)+,fpcr/fpsr/fpiar
* fmovem (a0),fp0-fp7
*/
unsigned long
GetVBR(void)
= {0x4E7A, 0x0801};
/* move.l vbr,d0
*/
/* Direct access to traps */
/* SysContigPurgeSpace. This "customizes" the trap by specifying SYS, and
* by moving the value we care about from a0 to d0.
*/
#pragma parameter __D0 SysContigPurgeSpace
pascal long
SysContigPurgeSpace(void)
= {0xA562, 0x2008};
/* _PurgeSpace ,SYS
* move.l a0,d0
*/
#pragma parameter ControlImmed(__A0)
void
ControlImmed(CntrlParam *)
= {0xA204};
/* _Control ,Immed
*/
pascal void
ShutDwnUserChoice(void)
= {0x3F3C,0x0005,0xA895};
/* move.w #$0005,-(A7)
* _ShutDown
*/
pascal void
debugger(StringPtr message)
= {0xABFF};
/* _Debugger
*/
#endif __GLUE__