/* Copyright (C) 1996-1997 Id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // // dosisms.h: I'd call it dos.h, but the name's taken // #ifndef _DOSISMS_H_ #define _DOSISMS_H_ int dos_lockmem(void *addr, int size); int dos_unlockmem(void *addr, int size); typedef union { struct { unsigned long edi; unsigned long esi; unsigned long ebp; unsigned long res; unsigned long ebx; unsigned long edx; unsigned long ecx; unsigned long eax; } d; struct { unsigned short di, di_hi; unsigned short si, si_hi; unsigned short bp, bp_hi; unsigned short res, res_hi; unsigned short bx, bx_hi; unsigned short dx, dx_hi; unsigned short cx, cx_hi; unsigned short ax, ax_hi; unsigned short flags; unsigned short es; unsigned short ds; unsigned short fs; unsigned short gs; unsigned short ip; unsigned short cs; unsigned short sp; unsigned short ss; } x; struct { unsigned char edi[4]; unsigned char esi[4]; unsigned char ebp[4]; unsigned char res[4]; unsigned char bl, bh, ebx_b2, ebx_b3; unsigned char dl, dh, edx_b2, edx_b3; unsigned char cl, ch, ecx_b2, ecx_b3; unsigned char al, ah, eax_b2, eax_b3; } h; } regs_t; unsigned int ptr2real(void *ptr); void *real2ptr(unsigned int real); void *far2ptr(unsigned int farptr); unsigned int ptr2far(void *ptr); int dos_inportb(int port); int dos_inportw(int port); void dos_outportb(int port, int val); void dos_outportw(int port, int val); void dos_irqenable(void); void dos_irqdisable(void); void dos_registerintr(int intr, void (*handler)(void)); void dos_restoreintr(int intr); int dos_int86(int vec); void *dos_getmemory(int size); void dos_freememory(void *ptr); void dos_usleep(int usecs); int dos_getheapsize(void); extern regs_t regs; #endif // _DOSISMS_H_