home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / UTILS / LIBERTY / DEVELOP / LIBERTY.H < prev    next >
C/C++ Source or Header  |  1997-12-20  |  3KB  |  102 lines

  1. /* Keksdefinition von 'Liberty'
  2.  * 1 TAB = 4 SPACES !!!
  3.  *
  4.  * Pure-Pascal-Programmierer müssen diese Datei entsprechend anpassen -
  5.  * wer machts?
  6.  *
  7.  * (c)1995 by Christian 'chrisker' Krüger
  8.  */
  9.  
  10. #ifndef _LIBERTY_H_
  11. #define _LIBERTY_H_
  12.  
  13. #include <portab.h>
  14. #include <tos.h>
  15. #include <vdi.h>
  16. #include <ibmr.h>                    /* Definition der Bild-Typen */
  17.  
  18. #define CJar( mode, cookie, value )    xbios(CJar_xbios,mode,cookie,value)
  19. #define CJar_xbios        0x434A            /* "CJ" */
  20. #define    CJar_OK            0x6172            /* "ar" */
  21. #define COOKIE_LIBERTY    0x4C697479L        /* "Lity" */
  22.  
  23. /* Die einzelnen Erweiterungen: (Parameterübergabe nach PureC
  24.  * Konvention!!!)
  25.  */
  26.  
  27. /* Verschiedene Funktionen */ 
  28.  
  29. typedef struct
  30. {
  31.     LONG     (*Init_Liberty)(WORD g_handle);
  32.     void     (*lock_Sema)(BYTE *semaphore);
  33.     void     (*release_Sema)(BYTE *semaphore);
  34.     void     (*memcpy)(void *dest, void *src, ULONG len);
  35.     void     (*memset)(void *dest, int val, ULONG len);
  36.     
  37. } Lity_Utils;
  38.  
  39.  
  40. /*---------------------------------------*/
  41. /* Funktionen mit GEMDOS Charakteristik: */
  42. /*---------------------------------------*/
  43.  
  44. typedef struct     /* INTERNE!!! Speicherverwaltungsinfo */
  45. {
  46.     WORD sngl_acc;            /* Alle Variablen sind */
  47.     void *stgblosb;            /* vom Benutzer NICHT anzutasten!!! */
  48.     void *stgblsbb;
  49.     void *stprlosb;
  50.     void *stprlsbb;
  51.     void *ttgblosb;
  52.     void *ttgblsbb;
  53.     void *ttprlosb;
  54.     void *ttprlsbb;
  55.     void *stgblist;
  56.     void *stprlist;
  57.     void *ttgblist;
  58.     void *ttprlist;
  59. } Meminfo;    
  60.  
  61. /* Malloc Typen */
  62.  
  63. #define MM_STGLOBAL     0
  64. #define MM_STPRIVATE 1
  65. #define MM_TTGLOBAL  2
  66. #define MM_TTPRIVATE 3
  67.  
  68. typedef struct
  69. {
  70.     Meminfo *    (*CK_init_meminfo)(Meminfo *info, BOOLEAN app);
  71.     void *        (*CK_malloc)(Meminfo *info, const long size, const WORD type);
  72.     void *        (*CK_realloc)(Meminfo *info, const void *block, const LONG newsize);
  73.     void        (*CK_free)(const Meminfo *info, const void *ptr);
  74.     void         *reserved;
  75.     void *        (*CK_load_buffer)(char *filename, Meminfo *info, WORD type, LONG addmem, LONG *buflen);
  76.  
  77. } Lity_GDExt;
  78.  
  79. /*-------------------------------------------------------------------*/
  80.  
  81. /* Der Keks 'Lity' hat einen Zeiger, der auf folgende Struktur
  82.  * weist:
  83.  */
  84.  
  85. typedef struct
  86. {
  87.     WORD        version;    /* Hexadezimale Version. (0x0100 = 1.0)  */ 
  88.     WORD        gdriver;    /* Unterstützes Grafiksystem (READ_ONLY!):
  89.                              * 0 = keins -> Standardformat (SLOW)
  90.                              * 1 = ATARI Grafiksystem (IBPs)
  91.                              * 2 = NOVA Grafikkarten
  92.                              * 3 = andere Grafikkarten / Mac
  93.                                (ist bist zur Version 1.5 ungültig!!! */
  94.     Lity_Utils  *misc_funcs;/* Zeiger auf diverse Routinen */
  95.     Lity_GDExt    *gd_funcs;    /* Zeiger auf die 'GEMDOS'-Erweiterungen */
  96.     void        *vdi_funcs; /* Zeiger auf die 'VDI'-Erweiterungen    */
  97.     void        *aes_funcs; /* Zeiger auf die 'AES'-Erweiterungen    */
  98.     void        *snd_funcs; /* Zeiger auf Sound-Funktionen */
  99.  
  100. } Liberty_Cookie;
  101.  
  102. #endif