3 * Expanded Memory Manager library.
4 * (C) 2009-2012 Jonathan Campbell.
5 * Hackipedia DOS library.
7 * This code is licensed under the LGPL.
8 * <insert LGPL legal text here>
11 #ifndef __HW_DOS_EMM_H
12 #define __HW_DOS_EMM_H
14 #if !defined(TARGET_OS2) && !defined(TARGET_WINDOWS)
19 /* FIXME: 32-bit protected mode: Who the fuck keeps changing the
20 value of ES?!? Watcom and our code rely on ES == DS! */
21 #if TARGET_MSDOS == 32
22 # define sanity() _sanity(__LINE__,__FILE__)
23 static inline void _sanity(unsigned int line,const char *f) {
34 fprintf(stderr,"%s(%u) DS(%X) != ES(%X)\n",f,line,d,e);
43 struct emm_phys_page_map {
49 extern unsigned char emm_status;
50 extern unsigned char emm_present;
51 extern unsigned char emm_version;
52 extern unsigned char emm_phys_pages;
53 extern unsigned short emm_total_pages;
54 extern unsigned int emm_page_frame_segment;
55 extern unsigned short emm_unallocated_pages;
56 extern struct emm_phys_page_map *emm_phys_map;
59 void emm_phys_pages_sort();
60 void emm_update_page_count();
61 int emm_alloc_pages(unsigned int pages);
62 int emm_free_pages(unsigned int handle);
63 unsigned short emm_last_phys_page_segment(unsigned int phys_page);
64 int emm_map_page(unsigned int handle,unsigned int phys_page,unsigned int log_page);
66 #define emm_was_probed() (emm_status != 0xFF)
68 #endif /* !defined(TARGET_OS2) && !defined(TARGET_WINDOWS) */
70 #endif /* __HW_DOS_EMM_H */