added page flipping/scrolling VBE calls
[dosrtxon] / src / dos / cdpmi.h
1 #ifndef DPMI_H_
2 #define DPMI_H_
3
4 #ifdef __DJGPP__
5 #include <dpmi.h>
6 #endif
7
8 #include "inttypes.h"
9
10 struct dpmi_real_regs {
11         uint32_t edi, esi, ebp;
12         uint32_t reserved;
13         uint32_t ebx, edx, ecx, eax;
14         uint16_t flags;
15         uint16_t es, ds, fs, gs;
16         uint16_t ip, cs, sp, ss;
17 };
18
19 uint16_t dpmi_alloc(unsigned int par, uint16_t *sel);
20 void dpmi_free(uint16_t sel);
21
22 #ifdef __WATCOMC__
23 #pragma aux dpmi_alloc = \
24                 "mov eax, 0x100" \
25                 "int 0x31" \
26                 "mov [edi], dx" \
27                 value[ax] parm[ebx][edi];
28
29 #pragma aux dpmi_free = \
30                 "mov eax, 0x101" \
31                 "int 0x31" \
32                 parm[dx];
33
34 void dpmi_real_int(int inum, struct dpmi_real_regs *regs);
35 #endif  /* __WATCOMC__ */
36
37 #ifdef __DJGPP__
38 #define dpmi_real_int(inum, regs) __dpmi_int((inum), (__dpmi_regs*)(regs))
39 #endif
40
41 void *dpmi_mmap(uint32_t phys_addr, unsigned int size);
42 void dpmi_munmap(void *addr);
43
44 #endif  /* DPMI_H_ */