home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / mac / 1000 / CCE_1024.ZIP / CCE_1024 / SOZLIB07.LZH / SOZDISTR / INCLUDE / XBRA.H < prev    next >
C/C++ Source or Header  |  1994-03-26  |  867b  |  48 lines

  1.  
  2. /* 
  3.  * you have to define a long constant
  4.  * _MY_MAGIC "MAGI"
  5.  * to identify your program
  6.  * 
  7.  */
  8.  
  9. #ifndef _XBRA_H
  10. #define _XBRA_H
  11.  
  12. typedef void    (*xptr)();
  13.  
  14. typedef struct _Xbra
  15. {
  16.   long    xbra_magic;
  17.   long    my_magic;
  18.   xptr    next;
  19.   short    jump;
  20.   void    (*this) ();
  21. }    XBRA_STRUCT;
  22.  
  23. #define _XBRA_MAGIC    0x58425241L /* "XBRA" */
  24. //#define _MY_MAGIC    0x00000000
  25. #define _JMP_OPCODE    0x4EF9
  26. #define _JSR_OPCODE    0x4EB9
  27.  
  28. #define _XBRA_VEC(x)    ( (void (*)()) &(x.jump) )
  29.  
  30. #define _XBRA_INIT(fn)    {           \
  31.                _XBRA_MAGIC,    \
  32.                _MY_MAGIC,    \
  33.                (xptr) 0,       \
  34.                _JMP_OPCODE,    \
  35.                (void (*)()) fn \
  36.             }
  37.  
  38. #define _TRAP_VEC(n,x)    ((void (*) ()) (((long) n << 24) | (long) &(x.jump)))
  39.  
  40. #define _TRAP_INIT(fn)    {           \
  41.                _XBRA_MAGIC,    \
  42.                _MY_MAGIC,    \
  43.                (xptr) 0,       \
  44.                _JSR_OPCODE,    \
  45.                (void (*)()) fn \
  46.             }
  47. #endif /* _XBRA_H */
  48.