This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/dos.h

404 lines
12 KiB
C
Raw Normal View History

/* dos.h
Defines structs, unions, macros, and functions for dealing
with MSDOS and the Intel iAPX86 microprocessor family.
*/
/*
* C/C++ Run Time Library - Version 10.0
*
* Copyright (c) 1987, 2000 by Inprise Corporation
* All Rights Reserved.
*
*/
/* $Revision: 9.18 $ */
#ifndef __DOS_H
#define __DOS_H
#ifndef ___STDDEF_H
#include <_stddef.h>
#endif
#ifndef __ERRNO_H
#include <errno.h>
#endif
#if !defined(RC_INVOKED)
#if defined(__STDC__)
#pragma warn -nak
#endif
#pragma pack(push, 1)
#endif /* !RC_INVOKED */
/* Define intrinsic outside of any namespace */
#ifdef __cplusplus
extern "C" {
#endif
void _RTLENTRY __int__(int __interruptnum);
#ifdef __cplusplus
}
#endif
#ifdef __cplusplus
namespace std {
#endif /* __cplusplus */
#ifdef __cplusplus
extern "C" {
#endif
#ifndef FA_NORMAL
#define FA_NORMAL 0x00 /* Normal file, no attributes */
#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 */
#endif /* FA_NORMAL */
#ifndef _A_NORMAL
/* MSC names for file attributes */
#define _A_NORMAL 0x00 /* Normal file, no attributes */
#define _A_RDONLY 0x01 /* Read only attribute */
#define _A_HIDDEN 0x02 /* Hidden file */
#define _A_SYSTEM 0x04 /* System file */
#define _A_VOLID 0x08 /* Volume label */
#define _A_SUBDIR 0x10 /* Directory */
#define _A_ARCH 0x20 /* Archive */
#endif /* _A_NORMAL */
#ifndef SEEK_CUR
#define SEEK_CUR 1
#define SEEK_END 2
#define SEEK_SET 0
#endif /* SEEK_CUR */
#if !defined(__STDC__)
#define environ _environ
#endif
struct dfree
{
unsigned df_avail;
unsigned df_total;
unsigned df_bsec;
unsigned df_sclus;
};
struct diskfree_t
{
unsigned total_clusters;
unsigned avail_clusters;
unsigned sectors_per_cluster;
unsigned bytes_per_sector;
};
struct time
{
unsigned char ti_min; /* Minutes */
unsigned char ti_hour; /* Hours */
unsigned char ti_hund; /* Hundredths of seconds */
unsigned char ti_sec; /* Seconds */
};
struct dostime_t
{
unsigned char hour; /* Hours */
unsigned char minute; /* Minutes */
unsigned char second; /* Seconds */
unsigned char hsecond; /* Hundredths of seconds */
};
struct date
{
int da_year; /* Year - 1980 */
char da_day; /* Day of the month */
char da_mon; /* Month (1 = Jan) */
};
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) */
};
#ifndef MAXPATH
#define MAXPATH 260
#define MAXDIR 256
#define MAXFILE 256
#define MAXEXT 256
#define MAXDRIVE 3
#endif
#ifndef _FFBLK_DEF
#define _FFBLK_DEF
struct ffblk {
long ff_reserved;
long ff_fsize;
unsigned long ff_attrib;
unsigned short ff_ftime;
unsigned short ff_fdate;
char ff_name[MAXPATH];
};
struct _wffblk {
long ff_reserved;
long ff_fsize;
unsigned long ff_attrib;
unsigned short ff_ftime;
unsigned short ff_fdate;
wchar_t ff_name[MAXPATH];
};
#endif /* __FFBLK_DEF */
struct find_t
{
long reserved;
long size; /* size of file */
unsigned long attrib; /* attribute byte for matched file */
unsigned short wr_time; /* time of last write to file */
unsigned short wr_date; /* date of last write to file */
char name[MAXPATH]; /* asciiz name of matched file */
};
/*
The prototype for __emit__ has been removed from DOS.H. __emit__ is
still supported, but is now automatically recognized by the compiler and
provides some new features, now that it's un-prototyped:
__emit__ usually works with constant numbers of size char, short, long,
and __int64, however, there are three special additions here:
int x;
__emit__(&x);
This will emit the address of the variable x in the correct little-endian
form to be used in assembly operations.
__emit__(1.234F);
__emit__(1.234);
__emit__(1.234L);
These emit the 4, 8, or 10 byte pattern that represents the constant
float, double, or long double values of 1.23.
__emit__("Hello There");
This will create a constant string (just like the compiler does with
any constant string in C or C++) and emits the 4-byte address of this
string.
There is a special byte-saving optimization made if a signed
int constant number is specified: the fewest number of bytes required
to represent that number will be emitted. If the same value is cast
or suffixed to be unsigned int instead, the full size is emitted. Keep
in mind that all integral literals are, by definition, signed integers
(unless an alternate suffix is applied):
__emit__(0); // yields an 8-bit 00h not a 32-bit 00000000h
use __emit__(0u) to get 32-bits.
__emit__(0x64); // yields an 8-bit 64h
__emit__(100u); // yields a 32-bit 00000064h
__emit__(0x64u); // yields a 32-bit 00000064h
__emit__((char) 50); // yields an 8-bit 32h
__emit__((short) 500); // yields a 16-bit 01F4h
__emit__(2ui64); // yields a 64-bit 0000000000000002h
__emit__(20i64); // yields a 64-bit 0000000000000014h
Multiple parameters can be passed to __emit__ and they will be generated
from left to right (similar to the pascal calling convention). The left
most parameter will be emitted to a lower address in memory than the
right most parameter.
__emit__(0,1,2,3,4); // yields 5 bytes: 0001020304
__emit__(L'\x8C\x1F', 0, 300i64); // yields 11 bytes:8C1F001201000000000000
*/
unsigned _RTLENTRY _EXPFUNC _dos_close(int __fd);
unsigned _RTLENTRY _EXPFUNC _dos_creat(const char _FAR *__pathP, unsigned __attr,
int _FAR *__fd);
unsigned _RTLENTRY _EXPFUNC _dos_creatnew(const char _FAR *__pathP, unsigned __attr,
int _FAR *__fd);
unsigned _RTLENTRY _EXPFUNC _dos_findfirst(const char _FAR *__path,
unsigned __attrib,
struct find_t _FAR *__finfo);
unsigned _RTLENTRY _EXPFUNC _dos_findnext(struct find_t _FAR *__finfo);
void _RTLENTRY _EXPFUNC _dos_getdate(struct dosdate_t _FAR *__datep);
unsigned _RTLENTRY _EXPFUNC _dos_getdiskfree(unsigned __drive,
struct diskfree_t _FAR *__dtable);
void _RTLENTRY _EXPFUNC _dos_getdrive(unsigned _FAR *__drive);
unsigned _RTLENTRY _EXPFUNC _dos_getfileattr(const char _FAR *__filename,
unsigned _FAR *__attrib);
unsigned _RTLENTRY _EXPFUNC _dos_getftime(int __fd, unsigned _FAR *__date,
unsigned _FAR *__time);
void _RTLENTRY _EXPFUNC _dos_gettime(struct dostime_t _FAR *__timep);
unsigned _RTLENTRY _EXPFUNC _dos_open(const char _FAR *__pathP, unsigned __oflag,
int _FAR *__fd);
unsigned _RTLENTRY _EXPFUNC _dos_setdate(struct dosdate_t _FAR *__datep);
void _RTLENTRY _EXPFUNC _dos_setdrive(unsigned __drive, unsigned _FAR *__ndrives);
unsigned _RTLENTRY _EXPFUNC _dos_setfileattr(const char _FAR *__filename,
unsigned _FAR __attrib);
unsigned _RTLENTRY _EXPFUNC _dos_setftime(int __fd, unsigned __date, unsigned __time);
unsigned _RTLENTRY _EXPFUNC _dos_settime(struct dostime_t _FAR *__timep);
long _RTLENTRY _EXPFUNC dostounix(struct date _FAR *__d, struct time _FAR *__t);
void _RTLENTRY _EXPFUNC getdate(struct date _FAR *__datep);
void _RTLENTRY _EXPFUNC getdfree(unsigned char __drive,
struct dfree _FAR *__dtable);
int _RTLENTRY _EXPFUNC _getdrive(void);
void _RTLENTRY _EXPFUNC gettime(struct time _FAR *__timep);
void _RTLENTRY _EXPFUNC setdate(struct date _FAR *__datep);
void _RTLENTRY _EXPFUNC settime( struct time _FAR *__timep);
void _RTLENTRY _EXPFUNC unixtodos(long __time, struct date _FAR *__d,
struct time _FAR *__t);
int _RTLENTRY _EXPFUNC unlink(const char _FAR *__path);
unsigned _RTLENTRY _EXPFUNC _dos_read(int __fd, void *__buf, unsigned __len,
unsigned *__nread);
unsigned _RTLENTRY _EXPFUNC _dos_write(int __fd, const void *__buf, unsigned __len,
unsigned *__nread );
__inline void _disable(void) { __emit__((unsigned char)(0xfa)); }
__inline void _enable(void) { __emit__((unsigned char)(0xfb)); }
#define geninterrupt(i) __int__(i) /* Interrupt instruction */
/* Variables */
#if !defined(__ARGV_DEFINED)
#define __ARGV_DEFINED
extern int _RTLENTRY _EXPDATA _argc;
extern char ** _RTLENTRY _EXPDATA _argv;
# define __argc _argc /* MSC Version */
# define __argv _argv /* MSC Version */
#endif /* __ARGV_DEFINED */
extern int const _RTLENTRY _EXPDATA _8087;
extern char ** _RTLENTRY _EXPDATA _environ;
extern unsigned char _RTLENTRY _EXPDATA _osmajor;
extern unsigned char _RTLENTRY _EXPDATA _osminor;
extern unsigned _RTLENTRY _EXPDATA _osversion;
extern unsigned _RTLENTRY _EXPDATA _version;
void _RTLENTRY _EXPFUNC _sleep(unsigned __seconds);
void _RTLENTRY _EXPFUNC sleep(unsigned __seconds);
#ifdef __MFC_COMPAT__
#define _getdiskfree _dos_getdiskfree
#define _diskfree_t diskfree_t
#else
#pragma obsolete _dos_getdiskfree
#endif
#if !defined(RC_INVOKED)
#pragma obsolete _dos_close
#pragma obsolete _dos_creat
#pragma obsolete _dos_creatnew
#pragma obsolete _dos_findfirst
#pragma obsolete _dos_findnext
#pragma obsolete _dos_getdate
#pragma obsolete _dos_getdrive
#pragma obsolete _dos_getfileattr
#pragma obsolete _dos_getftime
#pragma obsolete _dos_gettime
#pragma obsolete _dos_open
#pragma obsolete _dos_read
#pragma obsolete _dos_setdate
#pragma obsolete _dos_setdrive
#pragma obsolete _dos_setfileattr
#pragma obsolete _dos_setftime
#pragma obsolete _dos_settime
#pragma obsolete _dos_write
#pragma obsolete sleep
#endif
#ifdef __cplusplus
}
#endif
#if !defined(RC_INVOKED)
/* restore default packing */
#pragma pack(pop)
#if defined(__STDC__)
#pragma warn .nak
#endif
#endif /* !RC_INVOKED */
#ifdef __cplusplus
} // std
#endif /* __cplusplus */
#endif /* __DOS_H */
#if defined(__cplusplus) && !defined(__USING_CNAME__) && !defined(__DOS_H_USING_LIST)
#define __DOS_H_USING_LIST
using std::dfree;
using std::diskfree_t;
using std::time;
using std::dostime_t;
using std::date;
using std::dosdate_t;
using std::ffblk;
using std::_wffblk;
using std::find_t;
using std::_dos_close;
using std::_dos_creat;
using std::_dos_creatnew;
using std::_dos_findfirst;
using std::_dos_findnext;
using std::_dos_getdate;
using std::_dos_getdiskfree;
using std::_dos_getdrive;
using std::_dos_getfileattr;
using std::_dos_getftime;
using std::_dos_gettime;
using std::_dos_open;
using std::_dos_setdate;
using std::_dos_setdrive;
using std::_dos_setfileattr;
using std::_dos_setftime;
using std::_dos_settime;
using std::_disable;
using std::dostounix;
using std::_enable;
using std::getdate;
using std::getdfree;
using std::_getdrive;
using std::gettime;
using std::setdate;
using std::settime;
using std::unixtodos;
using std::unlink;
using std::_dos_read;
using std::_dos_write;
using std::_argc;
using std::_argv;
using std::_8087;
using std::_environ;
using std::_osmajor;
using std::_osminor;
using std::_osversion;
using std::_version;
using std::_sleep;
using std::sleep;
#endif /* __USING_CNAME__ */