NHDT->ANH, nethack->anethack, nhdat->anhdat
[aNetHack.git] / sys / msdos / portio.h
blob5599ddaa1133a3b7529f3fd5b574e55684f4a9fa
1 /* aNetHack 0.0.1 portio.h $ANH-Date: 1432512791 2015/05/25 00:13:11 $ $ANH-Branch: master $:$ANH-Revision: 1.8 $ */
2 /* Copyright (c) aNetHack PC Development Team 1995 */
3 /* aNetHack may be freely redistributed. See license for details. */
4 /* */
5 /*
6 * portio.h - PC port I/O Hardware support definitions and other
7 * low-level definitions.
9 */
11 #ifndef PORTIO_H
12 #define PORTIO_H
14 #if defined(__GO32__) || defined(__DJGPP__)
15 #define __far
16 #include <go32.h>
17 #include <dpmi.h>
18 #include <sys/farptr.h>
19 #endif
21 #if defined(_MSC_VER)
22 #define outportb _outp
23 #define outportw _outpw
24 #define inportb _inp
25 #endif
26 #if defined(__BORLANDC__)
27 #define outportw outport
28 /* #define inportb inport */
29 #endif
31 #ifndef MK_PTR
33 * Depending on environment, this is a macro to construct either:
35 * - a djgpp long 32 bit pointer from segment & offset values
36 * - a far pointer from segment and offset values
39 #if defined(_MSC_VER) || defined(__BORLANDC__)
40 #define MK_PTR(seg, offset) \
41 (void __far *)(((unsigned long) seg << 16) \
42 + (unsigned long) (unsigned) offset)
43 #define READ_ABSOLUTE(x) *(x)
44 #define READ_ABSOLUTE_WORD(x) *(x)
45 #define WRITE_ABSOLUTE(x, y) *(x) = (y)
46 #define WRITE_ABSOLUTE_WORD(x, y) *(x) = (y)
47 #endif
49 #if defined(__GO32__) || defined(__DJGPP__)
50 #define MK_PTR(seg, offset) \
51 (void *)(((unsigned) seg << 4) + (unsigned) offset)
52 #define READ_ABSOLUTE(x) \
53 (_farpeekb(_go32_conventional_mem_selector(), (unsigned) x))
54 #define READ_ABSOLUTE_WORD(x) \
55 (_farpeekw(_go32_conventional_mem_selector(), (unsigned) x))
56 #define WRITE_ABSOLUTE(x, y) \
57 _farpokeb(_go32_conventional_mem_selector(), (unsigned) x, (y))
58 #define WRITE_ABSOLUTE_WORD(x, y) \
59 _farpokew(_go32_conventional_mem_selector(), (unsigned) x, (y))
60 #endif
62 #ifdef OBSOLETE /* old djgpp V1.x way of mapping 1st MB */
63 #define MK_PTR(seg, offset) \
64 (void *)(0xE0000000 + ((((unsigned) seg << 4) + (unsigned) offset)))
65 #define READ_ABSOLUTE(x) *(x)
66 #define READ_ABSOLUTE_WORD(x) *(x)
67 #define WRITE_ABSOLUTE(x, y) *(x) = (y)
68 #define WRITE_ABSOLUTE_WORD(x, y) *(x) = (y)
69 #endif
70 #endif /* MK_PTR */
72 #endif /* PORTIO_H */
73 /* portio.h */