Files

206 lines
5.2 KiB
C
Raw Permalink Normal View History

2026-07-06 18:01:36 +01:00
/* Release 3.00 */
/*-------------------------------------------------------------------------*
* *
* dos.h - structure, union, macro and function definitions for MSDOS and *
* Intel IAPX86 family. *
* *
* COPYRIGHT (C) 1989 Jensen and Partners. All Rights Reserved *
* *
*--------------------------------------------------------------------------*/
#include <stdepoc.h>
#ifndef _DOS_INC_
#define _DOS_INC_
#ifndef __STDC__
extern unsigned int _osmajor;
extern unsigned int _osminor;
extern int _argc;
extern char *_argv[32];
#endif
#define FA_NORMAL 0x00 /* normal file */
#define FA_RDONLY 0x01 /* Read only attribute */
#define FA_HIDDEN 0x02 /* Hidden file */
#define FA_SYSTEM 0x04 /* System file */
#define FA_LABEL 0x08 /* Volume label */
#define FA_DIREC 0x10 /* Directory */
#define FA_ARCH 0x20 /* Archive */
#define FA_TEXT 0x100 /* Open in text mode */
#define FA_SHARE 0x200 /* Open with sharing */
struct WORDREGS {
unsigned int ax, bx, cx, dx, si, di, cflag, flags;
};
struct BYTEREGS {
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
};
struct SREGS {
unsigned int es;
unsigned int cs;
unsigned int ss;
unsigned int ds;
};
struct REGPACK {
unsigned r_ax, r_bx, r_cx, r_dx;
unsigned r_bp, r_si, r_di, r_ds, r_es, r_flags;
};
#ifdef __cplusplus
extern "C" {
#endif
extern int int86(int _intno, const union REGS * _inregs, union REGS * _outregs);
extern int int86x(int _intno, const union REGS * _inregs, union REGS * _outregs,
struct SREGS * _segregs);
extern void intr(int _intno, struct REGPACK * _preg);
extern void segread(struct SREGS * _segs);
#ifdef __cplusplus
}
#endif
#ifndef _FFBLK_DEF
#define _FFBLK_DEF
struct ffblk {
char ff_reserved[21];
char ff_attrib;
int ff_ftime;
int ff_fdate;
long ff_fsize;
char ff_name[13];
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern int findfirst(const char * _path, struct ffblk * _buffer, int _attrib);
extern int findnext(struct ffblk * _buffer);
#ifdef __cplusplus
}
#endif
#ifndef _PORTIO_DEF
#define _PORTIO_DEF
#if (defined _IL_MTF) | ( defined __STDC__)
#ifdef __cplusplus
extern "C" {
#endif
extern unsigned char inportb(int _portid);
extern void outportb(int _portid, unsigned char _value);
extern unsigned int inportw(int _portid);
extern void outportw(int _portid, unsigned int _value);
extern void _disable(void);
extern void _enable(void);
#ifdef __cplusplus
}
#endif
#define inp(portid) inportb(portid)
#define outp(portid, v) outportb(portid, v)
#define inpw(portid) inportw(portid)
#define outpw(portid, v) outportw(portid, v)
#else
#define RET 0xC3
#ifdef __cplusplus
extern "C" {
#endif
#pragma save,call(reg_param=>(dx,ax),reg_saved=>(bx,cx,si,di,es,ds,st1,st2), inline=>on)
static void __outportb__(int _port, unsigned char _byte) =
{
0xEE, RET /* out dx,al */
};
static unsigned char __inportb__(int _port) =
{
0xEC, RET /* in dx,al */
};
static void __outportw__(int _port,int unsigned _word) =
{
0xEF, RET /* out dx,ax */
};
static unsigned int __inportw__(int _port) =
{
0xED, RET /* in dx,ax */
};
static void _enable(void)=
{
0xFB, RET
};
static void _disable(void)=
{
0xFA, RET
};
#ifdef __cplusplus
}
#endif
#pragma restore
#define inportb(portid) __inportb__(portid) /* Byte IN instruction */
#define outportb(portid, v) __outportb__(portid,v)/* Byte OUT instruction */
#define inportw(portid) __inportw__(portid) /* Word IN instruction */
#define outportw(portid, v) __outportw__(portid,v)/* Word OUT instruction */
/* some compilers use inp, outp for inportb, outportb */
#define inp(portid) __inportb__(portid)
#define outp(portid, v) __outportb__(portid, v)
#define inpw(portid) __inportw__(portid)
#define outpw(portid, v) __outportw__(portid, v)
#endif
#define enable() _enable()
#define disable() _disable()
#endif
#define NFDS 20 /* Maximum number of fds */
#ifndef _TMT_DEF
#define _TMT_DEF
struct date {
int da_year;
unsigned char da_day;
unsigned char da_mon;
};
struct time {
unsigned char ti_hour;
unsigned char ti_min;
unsigned char ti_sec;
unsigned char ti_hund;
};
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern void getdate(struct date * _dptr);
extern void gettime(struct time * _tptr);
extern void setdate(const struct date * _dptr);
extern void settime(const struct time * _tptr);
extern void sleep(unsigned _secs);
extern void *getRealHandle(int handle);
#ifdef __cplusplus
}
#endif
#endif