home *** CD-ROM | disk | FTP | other *** search
/ Dream 49 / Amiga_Dream_49.iso / atari / texte / qed-397src.lzh / MAGX.C < prev    next >
C/C++ Source or Header  |  1996-12-29  |  4KB  |  158 lines

  1. /*
  2.  * magx.c: einige Fuktionen für MagiC
  3. */
  4.  
  5. #include "global.h"
  6. #include "magx.h"
  7.  
  8.  
  9. /*
  10.  * Für neue AES-Calls
  11. */
  12. EXTERN AESPB AES_pb;
  13.  
  14.  
  15. /*
  16.  * Der MagX-Cookie
  17.  */
  18.  
  19. typedef struct
  20. {
  21.     BYTE        *in_dos;                               /* Adresse der DOS- Semaphore */
  22.     WORD        *dos_time;                         /* Adresse der DOS- Zeit */
  23.     WORD        *dos_date;                         /* Adresse des DOS- Datums */
  24.     LONG        res1;
  25.     LONG        res2;
  26.     LONG        res3;
  27.     VOID        *act_pd;                               /* Laufendes Programm */
  28.     LONG        res4;
  29.     WORD        res5;
  30.     VOID        *res6;
  31.     VOID        *res7;                            /* interne DOS- Speicherliste */
  32.     VOID        (*resv_intmem)();                 /* DOS- Speicher erweitern */
  33.     LONG        (*etv_critic)();                /* etv_critic des GEMDOS */
  34.     BYTE *    ((*err_to_str)(BYTE e));     /* Umrechnung Code->Klartext */
  35.     LONG        res8;
  36.     LONG        res9;
  37.     LONG        res10;
  38. } DOSVARS;
  39.  
  40.  
  41. typedef struct
  42. {
  43.     LONG     magic;                                /* mu₧ $87654321 sein */
  44.     VOID     *membot;                               /* Ende der AES- Variablen    */
  45.     VOID     *aes_start;                           /* Startadresse */
  46.     LONG     magic2;                                 /* ist 'MAGX' */
  47.     LONG     date;                                 /* Erstelldatum ttmmjjjj */
  48.     VOID     (*chgres)(WORD res, WORD txt);/* Auflösung ändern */
  49.     LONG     (**shel_vector)(VOID);          /* residentes Desktop */
  50.     BYTE     *aes_bootdrv;                          /* von hieraus wurde gebootet    */
  51.     WORD  *vdi_device;                        /* vom AES benutzter VDI-Treiber */
  52.     VOID     *reservd1;
  53.     VOID     *reservd2;
  54.     VOID     *reservd3;
  55.     WORD     version;                               /* z.B. $0201 ist V2.1 */
  56.     WORD    release;                               /* 0=alpha..3=release */
  57. } AESVARS;
  58.  
  59.  
  60. typedef struct
  61. {
  62.     LONG        config_status;
  63.     DOSVARS    *dosvars;
  64.     AESVARS    *aesvars;
  65. } MAGX_COOKIE;
  66.  
  67.  
  68. GLOBAL WORD check_magx(VOID)
  69. {
  70.     LONG            v;
  71.     MAGX_COOKIE    *magxCook;
  72.     WORD            version;
  73.  
  74.     if (getcookie('MagX', &v))
  75.     {
  76.         magxCook = (MAGX_COOKIE *)v;
  77.         version = magxCook->aesvars->version;
  78.     }
  79.     else
  80.         version = 0;
  81.     return version;
  82. }
  83.  
  84.  
  85. /*
  86.  * Zeichensatzauswahl
  87. */
  88.  
  89. GLOBAL VOID    *fnts_create(WORD handle, WORD no_fonts, WORD font_flags,
  90.                                  WORD dialog_flags, UBYTE *sample, UBYTE *opt_button)
  91. {
  92.     _GemParBlk.contrl[0] = 180;
  93.     _GemParBlk.contrl[1] = 4;
  94.     _GemParBlk.contrl[2] = 0;
  95.     _GemParBlk.contrl[3] = 2;
  96.     _GemParBlk.contrl[4] = 1;
  97.  
  98.     _GemParBlk.intin[0] = handle;
  99.     _GemParBlk.intin[1] = no_fonts;
  100.     _GemParBlk.intin[2] = font_flags;
  101.     _GemParBlk.intin[3] = dialog_flags;
  102.  
  103.     _GemParBlk.addrin[0] = sample;
  104.     _GemParBlk.addrin[1] = opt_button;
  105.  
  106.     _crystal(&AES_pb);
  107.  
  108.     return _GemParBlk.addrout[0];
  109. }
  110.  
  111.  
  112. GLOBAL WORD    fnts_delete(VOID *fnt_dialog, WORD handle)
  113. {
  114.     _GemParBlk.contrl[0] = 181;
  115.     _GemParBlk.contrl[1] = 1;
  116.     _GemParBlk.contrl[2] = 1;
  117.     _GemParBlk.contrl[3] = 1;
  118.     _GemParBlk.contrl[4] = 0;
  119.  
  120.     _GemParBlk.intin[0] = handle;
  121.  
  122.     _GemParBlk.addrin[0] = fnt_dialog;
  123.  
  124.     _crystal(&AES_pb);
  125.  
  126.     return _GemParBlk.intout[0];
  127. }
  128.  
  129.  
  130. GLOBAL WORD    fnts_do(VOID *fnt_dialog, WORD button_flags, LONG id_in, LONG pt_in,
  131.                           LONG ratio_in, WORD *check_boxes, LONG *id, LONG *pt, LONG *ratio)
  132. {
  133.     _GemParBlk.contrl[0] = 187;
  134.     _GemParBlk.contrl[1] = 7;
  135.     _GemParBlk.contrl[2] = 8;
  136.     _GemParBlk.contrl[3] = 1;
  137.     _GemParBlk.contrl[4] = 0;
  138.  
  139.     _GemParBlk.intin[0] = button_flags;
  140.     _GemParBlk.intin[1] = (UWORD)(id_in >> 16);
  141.     _GemParBlk.intin[2] = (UWORD)(id_in);
  142.     _GemParBlk.intin[3] = (UWORD)(pt_in >> 16);
  143.     _GemParBlk.intin[4] = (UWORD)(pt_in);
  144.     _GemParBlk.intin[5] = (UWORD)(ratio_in >> 16);
  145.     _GemParBlk.intin[6] = (UWORD)(ratio_in);
  146.  
  147.     _GemParBlk.addrin[0] = fnt_dialog;
  148.  
  149.     _crystal(&AES_pb);
  150.  
  151.     *check_boxes = _GemParBlk.intout[1];
  152.     *id = ((LONG)_GemParBlk.intout[2] << 16) | _GemParBlk.intout[3];
  153.     *pt = ((LONG)_GemParBlk.intout[4] << 16) | _GemParBlk.intout[5];
  154.     *ratio = ((LONG)_GemParBlk.intout[6] << 16) | _GemParBlk.intout[7];
  155.  
  156.     return _GemParBlk.intout[0];
  157. }
  158.