1 /* ______ ___ ___ 2 * /\ _ \ /\_ \ /\_ \ 3 * \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ 4 * \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ 5 * \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ 6 * \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ 7 * \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ 8 * /\____/ 9 * \_/__/ 10 * 11 * Configuration defines for use with djgpp. 12 * 13 * By Shawn Hargreaves. 14 * 15 * See readme.txt for copyright information. 16 */ 17 18 19 #ifndef SCAN_DEPEND 20 #include <pc.h> 21 #include <dir.h> 22 #include <dpmi.h> 23 #include <go32.h> 24 #include <fcntl.h> 25 #include <unistd.h> 26 #include <sys/farptr.h> 27 #endif 28 29 30 /* describe this platform */ 31 #define ALLEGRO_PLATFORM_STR "djgpp" 32 #define ALLEGRO_DOS 33 #define ALLEGRO_I386 34 #define ALLEGRO_LITTLE_ENDIAN 35 #define ALLEGRO_GUESS_INTTYPES_OK 36 /* inttypes.h and stdint.h not available in djgpp 2.02 */ 37 #define ALLEGRO_CONSOLE_OK 38 #define ALLEGRO_VRAM_SINGLE_SURFACE 39 #define ALLEGRO_USE_CONSTRUCTOR 40 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /* memory locking macros */ 47 void _unlock_dpmi_data(void *addr, int size); 48 49 #define END_OF_FUNCTION(x) void x##_end(void) { } 50 #define END_OF_STATIC_FUNCTION(x) static void x##_end(void) { } 51 #define LOCK_DATA(d, s) _go32_dpmi_lock_data((void *)d, s) 52 #define LOCK_CODE(c, s) _go32_dpmi_lock_code((void *)c, s) 53 #define UNLOCK_DATA(d,s) _unlock_dpmi_data((void *)d, s) 54 #define LOCK_VARIABLE(x) LOCK_DATA((void *)&x, sizeof(x)) 55 #define LOCK_FUNCTION(x) LOCK_CODE((void *)x, (intptr_t)x##_end - (intptr_t)x) 56 57 58 /* long filename status */ 59 #ifdef _USE_LFN 60 #define ALLEGRO_LFN _USE_LFN 61 #else 62 #define ALLEGRO_LFN 0 63 #endif 64 65 66 /* selector for video memory bitmaps */ 67 #define _video_ds() _dos_ds 68 69 70 /* helpers for talking to video memory */ 71 #define bmp_select(bmp) _farsetsel((bmp)->seg) 72 73 #define bmp_write8(addr, c) _farnspokeb(addr, c) 74 #define bmp_write15(addr, c) _farnspokew(addr, c) 75 #define bmp_write16(addr, c) _farnspokew(addr, c) 76 #define bmp_write24(addr, c) ({ _farnspokew(addr, c&0xFFFF); \ 77 _farnspokeb(addr+2, c>>16); }) 78 #define bmp_write32(addr, c) _farnspokel(addr, c) 79 80 #define bmp_read8(addr) _farnspeekb(addr) 81 #define bmp_read15(addr) _farnspeekw(addr) 82 #define bmp_read16(addr) _farnspeekw(addr) 83 #define bmp_read32(addr) _farnspeekl(addr) 84 #define bmp_read24(addr) (_farnspeekl(addr) & 0xFFFFFF) 85 86 #ifdef __cplusplus 87 } 88 #endif 89 90 91 /* describe the asm syntax for this platform */ 92 #define ALLEGRO_ASM_PREFIX "_" 93 #define ALLEGRO_ASM_USE_FS 94 95 96 /* arrange for other headers to be included later on */ 97 #define ALLEGRO_EXTRA_HEADER "allegro/platform/aldos.h" 98 #define ALLEGRO_INTERNAL_HEADER "allegro/platform/aintdos.h" 99 #define ALLEGRO_ASMCAPA_HEADER "obj/djgpp/asmcapa.h" 100