/* $Id: ckmasm.h,v 1.4 91/12/15 23:16:43 rick Exp $
 * $Source: /uw/mackermit/RCS/ckmasm.h,v $
 *------------------------------------------------------------------
 * $Log:	ckmasm.h,v $
 * Revision 1.4  91/12/15  23:16:43  rick
 * ut9
 * 
 * Revision 1.3  91/09/12  21:50:29  rick
 * UT(3). Install on watsun
 * 
 * Revision 1.2  1991/09/10  22:21:37  rick
 * Update to UTexas(2)
 *
 * Revision 1.1  1991/09/10  19:17:44  rick
 * Initial revision
 *
 *------------------------------------------------------------------
 * $Endlog$
 */

/*
 * file ckmasm.h
 *
 * Module of Mac Kermit containing code for assembler instructions needed
 *
 */

/*
  Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New
  York.  Permission is granted to any individual or institution to use this
  software as long as it is not sold for profit.  This copyright notice must be
  retained.  This software may not be included in commercial products without
  written permission of Columbia University.
*/


#ifdef MPW

/****************************************************************************/
pascal void
SPtoaA0 ()
/****************************************************************************/
extern 0x208F;			/* MOVE.L SP, (A0) */



/****************************************************************************/
pascal void
loadA0 (params)
char *params;
/****************************************************************************/
extern 0x205F;			/* MOVEA.L (A7)+,A0 */



/****************************************************************************/
pascal void
loadD1 (value)
long value;
/****************************************************************************/
extern 0x221F;			/* MOVE.L (A7)+,D1 */



/****************************************************************************/
pascal void
loadD2 (value)
long value;
/****************************************************************************/
extern 0x241F;			/* MOVE.L (A7)+,D2 */



/****************************************************************************/
pascal void
pushD0 ()
/****************************************************************************/
extern 0x2F00;			/* MOVE.L D0,-(A7) */



/****************************************************************************/
pascal void
poptoA0 ()
/****************************************************************************/
extern 0x209F;			/* MOVE.L (A7)+,(A0) */



/****************************************************************************/
pascal void
saveA0 ()
/****************************************************************************/
extern 0x2F08;			/* MOVEA.L A0,-(A7) */



/****************************************************************************/
pascal void
restoreA0 ()
/****************************************************************************/
extern 0x205F;			/* MOVEA.L (A7)+,A0 */



/****************************************************************************/
pascal void
AllRegs ()
/****************************************************************************/
extern 0xFFFF;			/* D0-D7/A0-A7 (all registers) */



/****************************************************************************/
pascal void
SaveRegs ()
/****************************************************************************/
extern 0x48E7;			/* MOVEM.L <registers>,-(A7) */



/****************************************************************************/
pascal void
RestoreRegs ()
/****************************************************************************/
extern 0x4CDF;			/* MOVEM.L (A7)+,<registers> */



/****************************************************************************/
pascal void
execute ()
/****************************************************************************/
extern 0x4E90;			/* JSR (A0) */



/****************************************************************************/
pascal void
Launch ()
/****************************************************************************/
extern 0xA9F2;			/* Launch Trap */

#ifdef MPW2

/**********************************/
pascal Boolean
WaitNextEvent (eventMask, theEvent, sleep, mouseRgn)
short eventMask;
EventRecord *theEvent;
long sleep;
RgnHandle mouseRgn;
/***********************************/
extern 0xA860;			/* it's a toolbox trap... */

#endif /* MPW2 */

#define num_WaitNextEvent	0x60
#define num_JugglDispatch	0x8F	/* The Temp Memory calls (RWR) */
#define num_UnknownTrap		0x9F
#define num_ScriptTrap		0xBF


/***********************************/
pascal void
UnknownTrap ()
/***********************************/
extern 0xA89F;

#else /* MPW */

/****************************************************************************/
pascal void
SPtoaA0 () = 0x208F;				/* MOVE.L SP, (A0) */



/****************************************************************************/
pascal void
loadA0 (char *params) = 0x205F;			/* MOVEA.L (A7)+,A0 */



/****************************************************************************/
pascal void
loadD1 (long value) = 0x221F;			/* MOVE.L (A7)+,D1 */



/****************************************************************************/
pascal void
loadD2 (long value) = 0x241F;			/* MOVE.L (A7)+,D2 */



/****************************************************************************/
pascal void
pushD0 () = 0x2F00;			/* MOVE.L D0,-(A7) */



/****************************************************************************/
pascal void
poptoA0 () = 0x209F;			/* MOVE.L (A7)+,(A0) */



/****************************************************************************/
pascal void
saveA0 () = 0x2F08;			/* MOVEA.L A0,-(A7) */



/****************************************************************************/
pascal void
restoreA0 () = 0x205F;			/* MOVEA.L (A7)+,A0 */



/****************************************************************************/
pascal void
AllRegs () = 0xFFFF;			/* D0-D7/A0-A7 (all registers) */



/****************************************************************************/
pascal void
SaveRegs () = 0x48E7;			/* MOVEM.L <registers>,-(A7) */



/****************************************************************************/
pascal void
RestoreRegs () = 0x4CDF;			/* MOVEM.L (A7)+,<registers> */



/****************************************************************************/
pascal void
execute () = 0x4E90;			/* JSR (A0) */



/****************************************************************************/
pascal void
Launch () = 0xA9F2;			/* Launch Trap */

/**********************************/
pascal Boolean
WaitNextEvent (short eventMask, EventRecord *theEvent, long sleep,
	       RgnHandle mouseRgn) = 0xA860; /* it's a toolbox trap... */

#define num_WaitNextEvent	0x60
#define num_JugglDispatch	0x8F	/* The Temp Memory calls (RWR) */
#define num_UnknownTrap		0x9F
#define num_ScriptTrap		0xBF

/***********************************/
pascal void
UnknownTrap () = 0xA89F;

#endif /* MPW */

/*
 * Junk so Emacs will set local variables to be compatible with Mac/MPW.
 * Should be at end of file.
 * 
 * Local Variables:
 * tab-width: 4
 * End:
 */
