home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / LATTIC_3.LZH / HEADERS / DOS.H < prev    next >
C/C++ Source or Header  |  1990-08-11  |  5KB  |  210 lines

  1. /*
  2.  * dos.h - interface between compiler and OS
  3.  *
  4.  * Started 27/8/89 Alex G. Kiernan
  5.  *
  6.  * Copyright (c) 1989 HiSoft
  7.  */
  8.  
  9. #ifndef _DOS_H
  10. #define _DOS_H
  11. #include <osbind.h>
  12. #include <conio.h>
  13. #include <basepage.h>
  14.  
  15. #ifndef _SIZE_T
  16. #define _SIZE_T
  17. typedef unsigned long int size_t;
  18. #endif
  19.  
  20. /*
  21.  *
  22.  * The following definitions specify the particular C compiler being used.
  23.  *
  24.  *    LATTICE        Lattice C compiler
  25.  *
  26.  */
  27. #define LATTICE 1
  28. #define LATTICE_V4 1
  29. #define LATTICE_V5 1
  30.  
  31. /*
  32.  *
  33.  * The following type definitions take care of the particularly nasty
  34.  * machine dependency caused by the unspecified handling of sign extension
  35.  * in the C language.  When converting "char" to "int" some compilers
  36.  * will extend the sign, while others will not.  Both are correct, and
  37.  * the unsuspecting programmer is the loser.  For situations where it
  38.  * matters, the new type "byte" is equivalent to "unsigned char".
  39.  *
  40.  */
  41. typedef unsigned char byte;
  42.  
  43. /*
  44.  *
  45.  * Miscellaneous definitions
  46.  *
  47.  */
  48. #define SECSIZ 512        /* disk sector size */
  49.  
  50. /*
  51.  *
  52.  * OS specific definitions
  53.  *
  54.  */
  55. extern short _tos;        /* tos version number */
  56. extern enum {USA,FRG,FRA,GBR,SPA,ITA,SWE,SWF,SWG,TUR,FIN,NOR,DEN,SAU,HOL} _country;
  57.  
  58. /*
  59.  *
  60.  * The following symbols define the sizes of file names and node names.
  61.  *
  62.  */
  63. #define FNSIZE 13    /* maximum file node size */
  64. #define FMSIZE 128    /* maximum file name size */
  65. #define FESIZE 4    /* maximum file extension size */
  66.  
  67. /*
  68.  *
  69.  * This structure contains disk size information returned by the getdfs
  70.  * function.
  71.  */
  72. struct DISKINFO
  73. {
  74.     unsigned long free;    /* number of free clusters */
  75.     unsigned long cpd;    /* clusters per drive */
  76.     unsigned long bps;    /* bytes per sector */
  77.     unsigned long spc;    /* sectors per cluster */
  78. };
  79.  
  80. /*
  81.  *
  82.  * The following structure is used by the dfind and dnext functions to
  83.  * hold file information.
  84.  *
  85.  */
  86. struct FILEINFO
  87. {
  88.     char resv[21];        /* reserved */        
  89.     char attr;            /* actual file attribute */
  90.     long time;            /* file time  and date */
  91.     long size;            /* file size in bytes */
  92.     char name[14];        /* file name */
  93. };
  94.  
  95. extern size_t _MSTEP;
  96. extern long _MNEED;
  97.  
  98. /*
  99.  * Ctrl-C checking master switch variable
  100.  */
  101.  
  102. extern int __chkabort;        /* defaults to 0, i.e. OFF */
  103.  
  104. /*
  105.  * I/O services
  106.  */
  107.  
  108. /* hidden by #defines */
  109. long _dclose(int);
  110. long _dcreat(const char *, int);
  111. long _dopen(const char *, int);
  112. int getcd(int, char *);
  113. int getfa(const char *);
  114. int chgfa(const char *, int);
  115. int getdsk(void);
  116.  
  117. __regargs long _CXCERR(long);        /* always __regargs for efficiency */
  118. #ifndef __NO_DOS_DEFINES
  119. #define _dclose(hand)    _CXCERR(Fclose(hand))
  120. #define _dcreat(name,prot)    _CXCERR(Fcreate(name,prot))
  121. #define    _dopen(name,mode)    _CXCERR(Fopen(name,mode))
  122. #define getfa(name)    ((int)_CXCERR(Fattrib(name,0,0)))
  123. #define chgfa(name,fa)    ((int)_CXCERR(Fattrib(name,1,fa)))
  124. #define getdsk()    ((int)_CXCERR(Dgetdrv()))
  125. #endif
  126.  
  127. long _dcreatx(const char *, int);
  128. long _dread(int, void *, long);
  129. long _dwrite(int, const void *, long);
  130. long _dseek(int, long, int);
  131. int _disatty(int);
  132. int _ddup(int);
  133. int _ddup2(int, int);
  134.  
  135. #ifndef __NO_DOS_DEFINES
  136. #define _ddup(x)    ((int)_CXCERR(Fdup(x)))
  137. #define _ddup2(x,y)    ((int)_CXCERR(Fforce(x,y)))
  138. #endif
  139.  
  140. int chgdsk(int);
  141. void chgdta(struct FILEINFO *);
  142. struct FILEINFO *getdta(void);
  143.  
  144. #ifndef __NO_DOS_DEFINES
  145. #define chgdsk(a)    ((int)Dsetdrv(a))
  146. #define chgdta(a)    ((void)(Fsetdta(a)))
  147. #define getdta()    ((struct FILEINFO *)_CXCERR(Fgetdta()))
  148. #endif
  149.  
  150. int dfind(struct FILEINFO *, const char *, int);
  151. int dnext(struct FILEINFO *);
  152. int getdfs(int,struct DISKINFO *);
  153. #ifndef __NO_DOS_DEFINES
  154. #define getdfs(a,b)    ((int)_CXCERR(Dfree((long *)b,a)))
  155. #endif
  156. long getft(int);
  157. int chgft(int, long);
  158.  
  159. /*
  160.  *
  161.  * Miscellaneous external definitions
  162.  *
  163.  */
  164. long ftpack(const char *);
  165. void ftunpk(long, char *);
  166. int getpf(char *,const char *);
  167. int getpfe(char *,const char *);
  168. __stdargs void _stub(void);
  169. __stdargs void _xcovf(void);
  170. void getclk(unsigned char *);
  171. int chgclk(unsigned char *);
  172. int onbreak(int (*)());
  173. void onerror(int);
  174. int poserr(const char *);
  175.  
  176. extern long volatile _oserr;
  177. extern long volatile _OSERR;
  178. extern unsigned long int _STACK;
  179.  
  180. #define geta4 __builtin_geta4
  181. extern void geta4(void);
  182.  
  183. #define getreg __builtin_getreg
  184. extern long getreg(int);
  185.  
  186. #define putreg __builtin_putreg
  187. extern void putreg(int, long);
  188.  
  189. #define __emit __builtin_emit
  190. extern void __emit(int);
  191.  
  192. #define REG_D0 0
  193. #define REG_D1 1
  194. #define REG_D2 2
  195. #define REG_D3 3
  196. #define REG_D4 4
  197. #define REG_D5 5
  198. #define REG_D6 6
  199. #define REG_D7 7
  200. #define REG_A0 8
  201. #define REG_A1 9
  202. #define REG_A2 10
  203. #define REG_A3 11
  204. #define REG_A4 12
  205. #define REG_A5 13
  206. #define REG_A6 14
  207. #define REG_A7 15
  208.  
  209. #endif
  210.