mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 01:29:20 +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.
154 lines
3.4 KiB
C
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__
|