annotate src/dpmi.h @ 3:5b0ef094b8fd
backported changes from more recent VBE projects
author |
John Tsiombikas <nuclear@member.fsf.org> |
date |
Mon, 07 Jan 2019 12:07:53 +0200 |
parents |
4b33fa83e381 |
children |
|
rev |
line source |
nuclear@0
|
1 #ifndef DPMI_H_
|
nuclear@0
|
2 #define DPMI_H_
|
nuclear@0
|
3
|
nuclear@3
|
4 #ifdef __DJGPP__
|
nuclear@3
|
5 #include <dpmi.h>
|
nuclear@3
|
6 #endif
|
nuclear@3
|
7
|
nuclear@0
|
8 #include "inttypes.h"
|
nuclear@0
|
9
|
nuclear@0
|
10 struct dpmi_real_regs {
|
nuclear@0
|
11 uint32_t edi, esi, ebp;
|
nuclear@0
|
12 uint32_t reserved;
|
nuclear@0
|
13 uint32_t ebx, edx, ecx, eax;
|
nuclear@0
|
14 uint16_t flags;
|
nuclear@0
|
15 uint16_t es, ds, fs, gs;
|
nuclear@0
|
16 uint16_t ip, cs, sp, ss;
|
nuclear@0
|
17 };
|
nuclear@0
|
18
|
nuclear@3
|
19 uint16_t dpmi_alloc(unsigned int par, uint16_t *sel);
|
nuclear@3
|
20 void dpmi_free(uint16_t sel);
|
nuclear@3
|
21
|
nuclear@3
|
22 #ifdef __WATCOMC__
|
nuclear@0
|
23 #pragma aux dpmi_alloc = \
|
nuclear@0
|
24 "mov eax, 0x100" \
|
nuclear@0
|
25 "int 0x31" \
|
nuclear@3
|
26 "mov [edi], dx" \
|
nuclear@3
|
27 value[ax] parm[ebx][edi];
|
nuclear@3
|
28
|
nuclear@3
|
29 #pragma aux dpmi_free = \
|
nuclear@3
|
30 "mov eax, 0x101" \
|
nuclear@3
|
31 "int 0x31" \
|
nuclear@3
|
32 parm[dx];
|
nuclear@0
|
33
|
nuclear@0
|
34 void dpmi_real_int(int inum, struct dpmi_real_regs *regs);
|
nuclear@3
|
35 #endif /* __WATCOMC__ */
|
nuclear@3
|
36
|
nuclear@3
|
37 #ifdef __DJGPP__
|
nuclear@3
|
38 #define dpmi_real_int(inum, regs) __dpmi_int((inum), (__dpmi_regs*)(regs))
|
nuclear@3
|
39 #endif
|
nuclear@0
|
40
|
nuclear@0
|
41 void *dpmi_mmap(uint32_t phys_addr, unsigned int size);
|
nuclear@0
|
42 void dpmi_munmap(void *addr);
|
nuclear@0
|
43
|
nuclear@0
|
44 #endif /* DPMI_H_ */
|