summaryrefslogtreecommitdiffstats
path: root/usr.bin/doscmd/ems.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/doscmd/ems.h')
-rw-r--r--usr.bin/doscmd/ems.h313
1 files changed, 0 insertions, 313 deletions
diff --git a/usr.bin/doscmd/ems.h b/usr.bin/doscmd/ems.h
deleted file mode 100644
index 276bddc..0000000
--- a/usr.bin/doscmd/ems.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/*-
- * Copyright (c) 1997 Helmut Wirth <hfwirth@ping.at>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice immediately at the beginning of the file, witout modification,
- * this list of conditions, and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef EMS_H
-#define EMS_H
-
-/* Header for ems.c, the EMS emulation */
-
-/* Global definitions, some of them will be configurable in the future */
-
-#define EMS_NUM_HANDLES 256 /* Includes OS handle 0 */
-#define EMS_MAXSIZE 10240 /* In kbytes */
-#define EMS_MAX_PHYS 4 /* Frame is 64kB */
-#define EMS_FRAME_ADDR 0xe0000
-#define EMS_VERSION 0x40 /* Version 4.0 */
-#define EMS_PAGESIZE (16 *1024) /* page size in bytes */
-#define EMS_SAVEMAGIC 0xAFFE /* magic number */
-
-/* These are the LIM EMS 3.0 calls */
-#define GET_MANAGER_STATUS 0x40
-#define GET_PAGE_FRAME_SEGMENT 0x41
-#define GET_PAGE_COUNTS 0x42
-#define GET_HANDLE_AND_ALLOCATE 0x43
-#define MAP_UNMAP 0x44
-#define DEALLOCATE_HANDLE 0x45
-#define GET_EMM_VERSION 0x46
-#define SAVE_PAGE_MAP 0x47
-#define RESTORE_PAGE_MAP 0x48
-#define RESERVED_1 0x49
-#define RESERVED_2 0x4a
-#define GET_HANDLE_COUNT 0x4b
-#define GET_PAGES_OWNED 0x4c
-#define GET_PAGES_FOR_ALL 0x4d
-
-/* LIM EMS 4.0 calls */
-/* Global subfunctions for the LIM EMS 4.0 calls */
-#define GET 0x0
-#define SET 0x1
-/* Modes for Map/Unmap and AlterandCall/AlterAndJump */
-#define PHYS_ADDR 0x0
-#define SEG_ADDR 0x0
-
-/* Page map functions */
-#define PAGE_MAP 0x4e
-#define PAGE_MAP_PARTIAL 0x4f
-/* Page map subfunctions */
-#define GET_SET 0x2
-#define GET_SIZE 0x3
-
-#define MAP_UNMAP_MULTI_HANDLE 0x50
-
-#define REALLOC_PAGES 0x51
-
-#define HANDLE_ATTRIBUTES 0x52
-/* Subfunctions */
-#define HANDLE_CAPABILITY 0x2
-
-#define HANDLE_NAME 0x53
-
-#define HANDLE_DIRECTORY 0x54
-#define HANDLE_SEARCH 0x1
-#define GET_TOTAL_HANDLES 0x2
-
-#define ALTER_PAGEMAP_JUMP 0x55
-#define ALTER_PAGEMAP_CALL 0x56
-/* Subfunction for call */
-#define GET_STACK_SIZE 0x2
-
-#define MOVE_MEMORY_REGION 0x57
-/* Subfunctions */
-#define MOVE 0x0
-#define EXCHANGE 0x1
-
-#define GET_MAPPABLE_PHYS_ADDR 0x58
-/* Subfunctions */
-#define GET_ARRAY 0x0
-#define GET_ARRAY_ENTRIES 0x1
-
-#define GET_HW_CONFIGURATION 0x59
-/* Subfunctions */
-#define GET_HW_ARRAY 0x0
-#define GET_RAW_PAGE_COUNT 0x1
-
-#define ALLOCATE_PAGES 0x5a
-/* Subfunctions */
-#define ALLOC_STANDARD 0x0
-#define ALLOC_RAW 0x1
-
-#define ALTERNATE_MAP_REGISTER 0x5b
-/* Subfunctions */
-#define GET_SAVE_ARRAY_SIZE 0x2
-#define ALLOCATE_REGISTER_SET 0x3
-#define DEALLOCATE_REGISTER_SET 0x4
-#define ALLOCATE_DMA 0x5
-#define ENABLE_DMA 0x6
-#define DISABLE_DMA 0x7
-#define DEALLOCATE_DMA 0x8
-
-#define PREPARE_WARMBOOT 0x5c
-
-#define OS_FUNCTION_SET 0x5d
-/* Subfunctions */
-#define ENABLE 0x0
-#define DISABLE 0x1
-#define RETURN_KEY 0x2
-
-/* End of call definitions */
-
-/* EMS errors */
-
-#define EMS_SUCCESS 0x0
-#define EMS_SW_MALFUNC 0x80
-#define EMS_HW_MALFUNC 0x81
-#define EMS_INV_HANDLE 0x83
-#define EMS_FUNC_NOSUP 0x84
-#define EMS_OUT_OF_HANDLES 0x85
-#define EMS_SAVED_MAP 0x86
-#define EMS_OUT_OF_PHYS 0x87
-#define EMS_OUT_OF_LOG 0x88
-#define EMS_ZERO_PAGES 0x89
-#define EMS_LOGPAGE_TOOBIG 0x8a
-#define EMS_ILL_PHYS 0x8b
-#define EMS_NO_ROOM_TO_SAVE 0x8c
-#define EMS_ALREADY_SAVED 0x8d
-#define EMS_NO_SAVED_CONTEXT 0x8e
-#define EMS_INVALID_SUB 0x8f
-#define EMS_INVALID_ATTR 0x90
-#define EMS_FEAT_NOSUP 0x91
-#define EMS_MOVE_OVERLAP1 0x92
-#define EMS_MOVE_OVERFLOW 0x93
-#define EMS_PAGEOFFSET 0x95
-#define EMS_MOVE_OVERLAP2 0x97
-#define EMS_HNAME_NOT_FOUND 0xa0
-#define EMS_NAME_EXISTS 0xa1
-#define EMS_SAVED_CONTEXT_BAD 0xa3
-#define EMS_FUNCTION_DISABLED 0xa4
-
-/*
- * EMS handles: The handle contains at its end an array of pointers to
- * its allocated pages. The array is of size npages. Handle structs are
- * malloced at runtime.
- * Page numbering: Every page is 16kB, always. The pages are numbered
- * from 0 to highest page, depending on total EMS memory. Every handle
- * has pages allocated and this pages too are numbered from 0 to highest
- * page allocated. This are *not* the same numbers, because there may be
- * holes in the allocation.
- * Page numbers are unsigned short, which will give us 65536 * 16 kB (1GB)
- * pages to handle at maximum. This should be enough for the next years.
- */
-
-typedef struct {
- short handle[4]; /* Handle for each mapping */
- u_char pos_mapped[4]; /* Boolean value, 1 if something is mapped */
- u_char pos_pagenum[4]; /* Page number currently mapped into position */
-} EMS_mapping_context;
-
-
-/* This union is for copying operations of the handle name only */
-typedef union {
- u_char uc_hn[8];
- u_long ul_hn[2];
-} Hname;
-
-typedef struct {
- Hname hname;
- u_long npages;
- /* The mapping context for save/restore page map */
- EMS_mapping_context *mcontext;
- /* The pagenum here is the number in the system page array. The
- * logical page number connected with this handle is the index into
- * this array.
- */
- u_short pagenum[0];
- /* Will grow here, depending on allocation */
-} EMS_handle;
-
-/*
- * The connection between every page in the system and the handles is
- * maintained by an array of these structs. The array is indexed by the
- * page numbers.
- */
-
-typedef struct {
- short handle; /* The handle this page belongs to */
-#define EMS_FREE 0
-#define EMS_ALLOCED 1
-#define EMS_MAPPED 2
- u_short status; /* room for misc information */
-} EMS_page;
-
-/*
- * The combined pointer into EMS memory: offs is the offset into an EMS
- * page, page is the page index inside the region allocated to a handle.
- * This depends on EMS_PAGESIZE.
- * This is used for copy and move operations.
- */
-
-typedef struct {
- u_long offs:14;
- u_long page:18;
-} EMS_combi;
-
-typedef union {
- u_long ua_addr; /* Conventional address pointer */
- EMS_combi ua_emsaddr; /* EMS address pointer */
-} EMS_addr;
-
-#define EMS_OFFS(u) u.ua_emsaddr.offs
-#define EMS_PAGE(u) u.ua_emsaddr.page
-#define EMS_PTR(u) u.ua_addr
-
-/*
- * EMS info structure, only used to pass information to and from
- * DOS
- */
-
-typedef struct {
- u_short handle __attribute__ ((packed)); /* handle */
- u_short npages __attribute__ ((packed)); /* pages allocated */
-} EMShandlepage;
-
-/*
- * EMS map/unmap multiple, only used to pass information to and from
- * DOS
- */
-
-typedef struct {
- u_short log __attribute__ ((packed)); /* logical page number */
- u_short phys __attribute__ ((packed)); /* physical page (position) or
- segment address inside frame */
-} EMSmapunmap;
-
-/*
- * EMS handle directory, only used to pass information to and from
- * DOS
- */
-
-typedef struct {
- u_short log __attribute__ ((packed)); /* logical page number */
- Hname name __attribute__ ((packed)); /* Handle name */
-
-} EMShandledir;
-
-/*
- * Structure for get/set page map: This structure is used to save and
- * restore the page map from DOS memory. A program can get the mapping
- * context and later set (restore) it. To avoid errors we add a magic
- * number and a checksum.
- */
-
-typedef struct {
- u_short magic; /* Magic number */
- u_short checksum; /* Checksum over entire structure */
- EMS_mapping_context ems_saved_context;
-} EMScontext;
-
-/*
- * EMS physical address array, only used to pass information to and from
- * DOS
- */
-
-typedef struct {
- u_short segm __attribute__ ((packed)); /* segment address inside frame */
- u_short phys __attribute__ ((packed)); /* physical page (position) */
-} EMSaddrarray;
-
-/*
- * EMS move memory call structure, only used to pass information to and from
- * DOS
- */
-
-typedef struct {
- u_long length __attribute__ ((packed)); /* length of region */
-#define EMS_MOVE_CONV 0
-#define EMS_MOVE_EMS 1
- u_char src_type __attribute__ ((packed)); /* source type (0,1) */
- u_short src_handle __attribute__ ((packed)); /* source handle */
- u_short src_offset __attribute__ ((packed)); /* source offset */
- u_short src_seg __attribute__ ((packed)); /* source type */
- u_char dst_type __attribute__ ((packed)); /* destination type (0,1) */
- u_short dst_handle __attribute__ ((packed)); /* destination handle */
- u_short dst_offset __attribute__ ((packed)); /* destination offset */
- u_short dst_seg __attribute__ ((packed)); /* destination type */
-} EMSmovemem;
-
-#endif /* EMS_H */
OpenPOWER on IntegriCloud