summaryrefslogtreecommitdiffstats
path: root/private/mvdm/dos/v86/h/dos.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/mvdm/dos/v86/h/dos.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/private/mvdm/dos/v86/h/dos.h b/private/mvdm/dos/v86/h/dos.h
new file mode 100644
index 000000000..55391560c
--- /dev/null
+++ b/private/mvdm/dos/v86/h/dos.h
@@ -0,0 +1,220 @@
+/***
+*dos.h - definitions for MS-DOS interface routines
+*
+* Copyright (c) 1985-1988, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines the structs and unions used for the direct DOS interface
+* routines; includes macros to access the segment and offset
+* values of far pointers, so that they may be used by the routines; and
+* provides function prototypes for direct DOS interface functions.
+*
+*******************************************************************************/
+
+
+#ifndef NO_EXT_KEYS /* extensions enabled */
+ #define _CDECL cdecl
+ #define _NEAR near
+#else /* extensions not enabled */
+ #define _CDECL
+ #define _NEAR
+#endif /* NO_EXT_KEYS */
+
+
+#ifndef _REGS_DEFINED
+
+/* word registers */
+
+struct WORDREGS {
+ unsigned int ax;
+ unsigned int bx;
+ unsigned int cx;
+ unsigned int dx;
+ unsigned int si;
+ unsigned int di;
+ unsigned int cflag;
+ };
+
+
+/* byte registers */
+
+struct BYTEREGS {
+ unsigned char al, ah;
+ unsigned char bl, bh;
+ unsigned char cl, ch;
+ unsigned char dl, dh;
+ };
+
+
+/* general purpose registers union -
+ * overlays the corresponding word and byte registers.
+ */
+
+union REGS {
+ struct WORDREGS x;
+ struct BYTEREGS h;
+ };
+
+
+/* segment registers */
+
+struct SREGS {
+ unsigned int es;
+ unsigned int cs;
+ unsigned int ss;
+ unsigned int ds;
+ };
+
+#define _REGS_DEFINED
+
+#endif
+
+
+/* dosexterror structure */
+
+#ifndef _DOSERROR_DEFINED
+
+struct DOSERROR {
+ int exterror;
+ char class;
+ char action;
+ char locus;
+ };
+
+#define _DOSERROR_DEFINED
+
+#endif
+
+
+/* _dos_findfirst structure */
+
+#ifndef _FIND_T_DEFINED
+
+struct find_t {
+ char reserved[21];
+ char attrib;
+ unsigned wr_time;
+ unsigned wr_date;
+ long size;
+ char name[13];
+ };
+
+#define _FIND_T_DEFINED
+
+#endif
+
+
+/* _dos_getdate/_dossetdate and _dos_gettime/_dos_settime structures */
+
+#ifndef _DATETIME_T_DEFINED
+
+struct dosdate_t {
+ unsigned char day; /* 1-31 */
+ unsigned char month; /* 1-12 */
+ unsigned int year; /* 1980-2099 */
+ unsigned char dayofweek; /* 0-6, 0=Sunday */
+ };
+
+struct dostime_t {
+ unsigned char hour; /* 0-23 */
+ unsigned char minute; /* 0-59 */
+ unsigned char second; /* 0-59 */
+ unsigned char hsecond; /* 0-99 */
+ };
+
+#define _DATETIME_T_DEFINED
+
+#endif
+
+
+/* _dos_getdiskfree structure */
+
+#ifndef _DISKFREE_T_DEFINED
+
+struct diskfree_t {
+ unsigned total_clusters;
+ unsigned avail_clusters;
+ unsigned sectors_per_cluster;
+ unsigned bytes_per_sector;
+ };
+
+#define _DISKFREE_T_DEFINED
+
+#endif
+
+
+/* manifest constants for _hardresume result parameter */
+
+#define _HARDERR_IGNORE 0 /* Ignore the error */
+#define _HARDERR_RETRY 1 /* Retry the operation */
+#define _HARDERR_ABORT 2 /* Abort program issuing Interrupt 23h */
+#define _HARDERR_FAIL 3 /* Fail the system call in progress */
+ /* _HARDERR_FAIL is not supported on DOS 2.x */
+
+/* File attribute constants */
+
+#define _A_NORMAL 0x00 /* Normal file - No read/write restrictions */
+#define _A_RDONLY 0x01 /* Read only file */
+#define _A_HIDDEN 0x02 /* Hidden file */
+#define _A_SYSTEM 0x04 /* System file */
+#define _A_VOLID 0x08 /* Volume ID file */
+#define _A_SUBDIR 0x10 /* Subdirectory */
+#define _A_ARCH 0x20 /* Archive file */
+
+/* macros to break MS C "far" pointers into their segment and offset
+ * components
+ */
+
+#define FP_SEG(fp) (*((unsigned *)&(fp) + 1))
+#define FP_OFF(fp) (*((unsigned *)&(fp)))
+
+
+/* external variable declarations */
+
+extern unsigned int _NEAR _CDECL _osversion;
+
+
+/* function prototypes */
+
+int _CDECL bdos(int, unsigned int, unsigned int);
+void _CDECL _disable(void);
+unsigned _CDECL _dos_allocmem(unsigned, unsigned *);
+unsigned _CDECL _dos_close(int);
+unsigned _CDECL _dos_creat(char *, unsigned, int *);
+unsigned _CDECL _dos_creatnew(char *, unsigned, int *);
+unsigned _CDECL _dos_findfirst(char *, unsigned, struct find_t *);
+unsigned _CDECL _dos_findnext(struct find_t *);
+unsigned _CDECL _dos_freemem(unsigned);
+void _CDECL _dos_getdate(struct dosdate_t *);
+void _CDECL _dos_getdrive(unsigned *);
+unsigned _CDECL _dos_getdiskfree(unsigned, struct diskfree_t *);
+unsigned _CDECL _dos_getfileattr(char *, unsigned *);
+unsigned _CDECL _dos_getftime(int, unsigned *, unsigned *);
+void _CDECL _dos_gettime(struct dostime_t *);
+void _CDECL _dos_keep(unsigned, unsigned);
+unsigned _CDECL _dos_open(char *, unsigned, int *);
+unsigned _CDECL _dos_setblock(unsigned, unsigned, unsigned *);
+unsigned _CDECL _dos_setdate(struct dosdate_t *);
+void _CDECL _dos_setdrive(unsigned, unsigned *);
+unsigned _CDECL _dos_setfileattr(char *, unsigned);
+unsigned _CDECL _dos_setftime(int, unsigned, unsigned);
+unsigned _CDECL _dos_settime(struct dostime_t *);
+int _CDECL dosexterr(struct DOSERROR *);
+void _CDECL _enable(void);
+void _CDECL _hardresume(int);
+void _CDECL _hardretn(int);
+int _CDECL intdos(union REGS *, union REGS *);
+int _CDECL intdosx(union REGS *, union REGS *, struct SREGS *);
+int _CDECL int86(int, union REGS *, union REGS *);
+int _CDECL int86x(int, union REGS *, union REGS *, struct SREGS *);
+void _CDECL segread(struct SREGS *);
+
+
+#ifndef NO_EXT_KEYS /* extensions enabled */
+void _CDECL _chain_intr(void (_CDECL interrupt far *)());
+void (_CDECL interrupt far * _CDECL _dos_getvect(unsigned))();
+unsigned _CDECL _dos_read(int, void far *, unsigned, unsigned *);
+void _CDECL _dos_setvect(unsigned, void (_CDECL interrupt far *)());
+unsigned _CDECL _dos_write(int, void far *, unsigned, unsigned *);
+void _CDECL _harderr(void (far *)());
+#endif /* NO_EXT_KEYS */