home *** CD-ROM | disk | FTP | other *** search
/ The Amiga Game Guide / AmigaGameGuide_CD.iso / PC / Tools / chunker / source / machine.h < prev    next >
C/C++ Source or Header  |  1977-12-31  |  3KB  |  146 lines

  1. /*************************************************************************
  2.  *
  3.  * Chunker/DeChunk
  4.  *
  5.  * Copyright ©1995 Lee Kindness
  6.  * cs2lk@scms.rgu.ac.uk
  7.  *
  8.  * machine.h
  9.  *  Allows use of system specific functions => smaller code or just to use
  10.  *  ANSI functions.
  11.  *
  12.  * A number of different versions can be built:
  13.  *  Generic       - Uses ANSI IO and memory functions
  14.  *                  optionally AMIGA_1_3 defined (if _AMIGA is defined)
  15.  *  Amiga         - Uses Amiga 2.0 IO and memory functions
  16.  *                  _AMIGA and NO_ASYNCIO defined
  17.  *  Amiga/Asyncio - Uses Amiga 2.0 memory allocation functions and AsyncIO
  18.  *                  _AMIGA defined
  19.  */
  20.  
  21. #ifndef _MACHINE_H_
  22. #define _MACHINE_H_
  23.  
  24. /* If building an Amiga version then we want to use the Asyncio package.
  25.  * This requires aminet://dev/c/asyncio.lha
  26.  * You can compile without it by defining NO_ASYNCIO when compiling
  27.  */
  28. #ifndef NO_ASYNCIO
  29. #define USE_ASYNCIO
  30. #endif
  31.  
  32.  
  33. /* Will we use Amiga 2.0+ IO and memory allocation functions?
  34.  */
  35.  
  36. #ifndef AMIGA_1_3
  37. #ifdef _AMIGA
  38. #define BUILD_AMIGA
  39. #endif
  40. #endif
  41.  
  42. #ifdef BUILD_AMIGA
  43. /* Lets be Amiga specific */
  44.  
  45. #include <exec/types.h>
  46. #include <exec/memory.h>
  47. #include <dos/dos.h>
  48.  
  49. #include <clib/exec_protos.h>
  50. #include <clib/dos_protos.h>
  51. #include <pragmas/exec_sysbase_pragmas.h>
  52. #include <pragmas/dos_pragmas.h>
  53.  
  54. extern struct ExecBase *SysBase;
  55. extern struct DosLibrary *DOSBase;
  56.  
  57. #ifdef USE_ASYNCIO
  58.  
  59. #include <libraries/asyncio.h>
  60. #include <clib/asyncio_protos.h>
  61.  
  62. typedef AsyncFile *FILEt;
  63. #define FILEOPEN_READ MODE_READ 
  64. #define FILEOPEN_WRITE MODE_WRITE
  65. #define OS_fopen(F,M) OpenAsync(F,M,8192)
  66. #define OS_fgetc(F) ReadCharAsync(F)
  67. #define OS_fputc(C,F) WriteCharAsync(F,C)
  68. #define OS_fclose(F) CloseAsync(F)
  69.  
  70. #else /* !USE_ASYNCIO */
  71.  
  72. typedef BPTR FILEt;
  73. #define FILEOPEN_READ MODE_OLDFILE 
  74. #define FILEOPEN_WRITE MODE_NEWFILE
  75. #define OS_fopen(F,M) Open(F,M)
  76. #define OS_fgetc(F) FGetC(F)
  77. #define OS_fputc(C,F) FPutC(F,C)
  78. #define OS_fclose(F) Close(F)
  79.  
  80. #endif
  81.  
  82. #define OS_malloc(S) AllocVec(S, 0)
  83. #define OS_free(P) FreeVec(P)
  84. #define OS_printf Printf
  85. void OS_sprintf(char *buffer, char *format, ...);
  86.  
  87. #else /* !BUILD_AMIGA */
  88. /* Use ANSI functions */
  89.  
  90. #include <stdio.h>
  91. #include <stdlib.h>
  92.  
  93. #define OS_printf printf
  94. typedef FILE *FILEt;
  95. #define FILEOPEN_READ "rb"
  96. #define FILEOPEN_WRITE "wb"
  97. #define OS_fopen(F,M) fopen(F,M)
  98. #define OS_fgetc(F) fgetc(F)
  99. #define OS_fputc(C,F) fputc(C,F) 
  100. #define OS_fclose(F) fclose(F)
  101. #define OS_malloc(S) malloc(S)
  102. #define OS_free(P) free(P)
  103. #define OS_sprintf sprintf
  104.  
  105. #endif /* BUILD_AMIGA */
  106.  
  107.  
  108. #ifdef __TURBOC__
  109.  
  110. #pragma warn -pia
  111.  
  112. #endif /* __TURBOC__ */
  113.  
  114.  
  115. struct Args
  116. {
  117.     char          *arg_Filename;
  118.     char          *arg_Basename;
  119.     unsigned long  arg_Size;
  120. #ifdef BUILD_AMIGA
  121.     struct RDArgs *arg_RAHandle;
  122. #endif /* BUILD_AMIGA */
  123. };
  124.  
  125. int InitSystem( void );
  126. void FreeSystem( void );
  127.  
  128.  
  129. #ifdef __CHUNKER_H__
  130.  
  131. struct Args *GetChunkerArgs(int argc, char **argv);
  132. void FreeChunkerArgs(struct Args *args);
  133.  
  134. #endif /* __CHUNKER_H__ */
  135.  
  136.  
  137. #ifdef __DECHUNK_H__
  138.  
  139. struct Args *GetDeChunkArgs(int argc, char **argv);
  140. void FreeDeChunkArgs(struct Args *args);
  141.  
  142. #endif /* __DECHUNK_H__ */
  143.  
  144.  
  145. #endif /* _MACHINE_H_ */
  146.