PROTO.H
上传用户:dcs7469208
上传日期:2010-01-02
资源大小:443k
文件大小:14k
源码类别:

操作系统开发

开发平台:

DOS

  1. /****************************************************************/
  2. /*                                                              */
  3. /*                          proto.h                             */
  4. /*                                                              */
  5. /*                   Global Function Prototypes                 */
  6. /*                                                              */
  7. /*                   Copyright (c) 1995, 1996                   */
  8. /*                      Pasquale J. Villani                     */
  9. /*                      All Rights Reserved                     */
  10. /*                                                              */
  11. /* This file is part of DOS-C.                                  */
  12. /*                                                              */
  13. /* DOS-C is free software; you can redistribute it and/or       */
  14. /* modify it under the terms of the GNU General Public License  */
  15. /* as published by the Free Software Foundation; either version */
  16. /* 2, or (at your option) any later version.                    */
  17. /*                                                              */
  18. /* DOS-C is distributed in the hope that it will be useful, but */
  19. /* WITHOUT ANY WARRANTY; without even the implied warranty of   */
  20. /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See    */
  21. /* the GNU General Public License for more details.             */
  22. /*                                                              */
  23. /* You should have received a copy of the GNU General Public    */
  24. /* License along with DOS-C; see the file COPYING.  If not,     */
  25. /* write to the Free Software Foundation, 675 Mass Ave,         */
  26. /* Cambridge, MA 02139, USA.                                    */
  27. /****************************************************************/
  28. /* $Logfile:   C:/dos-c/src/kernel/proto.h_v  $ */
  29. #ifdef MAIN
  30. # ifdef VERSION_STRINGS
  31. static BYTE *Proto_hRcsId = "$Header:   C:/dos-c/src/kernel/proto.h_v   1.10   07 Feb 1998 20:38:00   patv  $";
  32. # endif
  33. #endif
  34. /* $Log:   C:/dos-c/src/kernel/proto.h_v  $
  35.  *
  36.  *   Rev 1.10   07 Feb 1998 20:38:00   patv
  37.  *Modified stack fram to match DOS standard
  38.  *
  39.  *   Rev 1.9   22 Jan 1998  4:09:26   patv
  40.  *Fixed pointer problems affecting SDA
  41.  *
  42.  *   Rev 1.8   11 Jan 1998  2:06:22   patv
  43.  *Added functionality to ioctl.
  44.  *
  45.  *   Rev 1.7   04 Jan 1998 23:16:22   patv
  46.  *Changed Log for strip utility
  47.  *
  48.  *   Rev 1.6   03 Jan 1998  8:36:48   patv
  49.  *Converted data area to SDA format
  50.  *
  51.  *   Rev 1.5   16 Jan 1997 12:46:44   patv
  52.  *pre-Release 0.92 feature additions
  53.  *
  54.  *   Rev 1.4   29 May 1996 21:03:40   patv
  55.  *bug fixes for v0.91a
  56.  *
  57.  *   Rev 1.3   19 Feb 1996  3:23:06   patv
  58.  *Added NLS, int2f and config.sys processing
  59.  *
  60.  *   Rev 1.2   01 Sep 1995 17:54:26   patv
  61.  *First GPL release.
  62.  *
  63.  *   Rev 1.1   30 Jul 1995 20:51:58   patv
  64.  *Eliminated version strings in ipl
  65.  *
  66.  *   Rev 1.0   05 Jul 1995 11:32:16   patv
  67.  *Initial revision.
  68.  */
  69. /* $EndLog$ */
  70. /* blockio.c */
  71. VOID init_buffers(void);
  72. struct buffer FAR *getblock(LONG blkno, COUNT dsk);
  73. BOOL getbuf (struct buffer FAR **pbp, LONG blkno, COUNT dsk);
  74. VOID setinvld(REG COUNT dsk);
  75. BOOL flush_buffers(REG COUNT dsk);
  76. BOOL flush1(struct buffer FAR *bp);
  77. BOOL flush(void);
  78. BOOL fill(REG struct buffer FAR *bp, LONG blkno, COUNT dsk);
  79. BOOL dskxfer(COUNT dsk, LONG blkno, VOID FAR *buf, COUNT mode);
  80. /* chario.c */
  81. BYTE *CharName(struct dhdr far *lpDhdr);
  82. VOID INRPT FAR handle_break(void);
  83. VOID sto(COUNT c);
  84. VOID mod_sto(REG UCOUNT c);
  85. VOID destr_bs(void);
  86. UCOUNT _sti(void);
  87. VOID con_hold(void);
  88. BOOL con_break(void);
  89. BOOL KbdBusy(void);
  90. VOID KbdFlush(void);
  91. VOID sti(keyboard FAR *kp);
  92. sft FAR *get_sft(COUNT);
  93. /* config.c */
  94. VOID PreConfig(VOID);
  95. VOID DoConfig(VOID);
  96. VOID PostConfig(VOID);
  97. /* dosfns.c */
  98. BOOL check_break(void);
  99. UCOUNT DosRead(COUNT hndl, UCOUNT n, BYTE FAR *bp, COUNT FAR *err);
  100. UCOUNT DosWrite(COUNT hndl, UCOUNT n, BYTE FAR *bp, COUNT FAR *err);
  101. COUNT DosSeek(COUNT hndl, LONG new_pos, COUNT mode, ULONG *set_pos);
  102. COUNT DosCreat(BYTE FAR *fname, COUNT attrib);
  103. COUNT CloneHandle(COUNT hndl);
  104. COUNT DosDup(COUNT Handle);
  105. COUNT DosForceDup(COUNT OldHandle, COUNT NewHandle);
  106. COUNT DosOpen(BYTE FAR *fname, COUNT mode);
  107. COUNT DosClose(COUNT hndl);
  108. VOID DosGetFree(COUNT drive, COUNT FAR *spc, COUNT FAR *navc, COUNT FAR *bps, COUNT FAR *nc);
  109. COUNT DosGetCuDir(COUNT drive, BYTE FAR *s);
  110. COUNT DosChangeDir(BYTE FAR *s);
  111. COUNT DosFindFirst(UCOUNT attr, BYTE FAR *name);
  112. COUNT DosFindNext(void);
  113. COUNT DosGetFtime(COUNT hndl, date FAR *dp, time FAR *tp);
  114. COUNT DosSetFtime(COUNT hndl, date FAR *dp, time FAR *tp);
  115. COUNT DosGetFattr(BYTE FAR *name, UWORD FAR *attrp);
  116. COUNT DosSetFattr(BYTE FAR *name, UWORD FAR *attrp);
  117. /* dosnames.c */
  118. VOID SpacePad(BYTE *, COUNT);
  119. COUNT ParseDosName(BYTE FAR *, COUNT *, BYTE *, BYTE *, BYTE *);
  120. COUNT ParseDosPath(BYTE FAR *, COUNT *, BYTE *, BYTE *);
  121. BOOL IsDevice(BYTE *FileName);
  122. /* dsk.c */
  123. COUNT blk_driver(rqptr rp);
  124. /* error.c */
  125. VOID dump(void);
  126. VOID panic(BYTE *s);
  127. VOID fatal(BYTE *err_msg);
  128. COUNT char_error(request *rq, BYTE *devname);
  129. COUNT block_error(request *rq, COUNT drive);
  130. /* fatdir.c */
  131. struct f_node FAR *dir_open(BYTE FAR *dirname);
  132. COUNT dir_read(REG struct f_node FAR *fnp);
  133. COUNT dir_write(REG struct f_node FAR *fnp);
  134. VOID dir_close(REG struct f_node FAR *fnp);
  135. COUNT dos_findfirst(UCOUNT attr, BYTE FAR *name);
  136. COUNT dos_findnext(void);
  137. /* fatfs.c */
  138. COUNT dos_open(BYTE FAR *path, COUNT flag);
  139. BOOL fcmp(BYTE FAR *s1, BYTE FAR *s2, COUNT n);
  140. BOOL fcmp_wild(BYTE FAR *s1, BYTE FAR *s2, COUNT n);
  141. VOID touc(BYTE FAR *s, COUNT n);
  142. COUNT dos_close(COUNT fd);
  143. COUNT dos_creat(BYTE FAR *path, COUNT attrib);
  144. COUNT dos_delete(BYTE FAR *path);
  145. COUNT dos_rmdir(BYTE FAR *path);
  146. COUNT dos_rename(BYTE FAR *path1, BYTE FAR *path2);
  147. date dos_getdate(void);
  148. time dos_gettime(void);
  149. BOOL dos_getftime(COUNT fd, date FAR *dp, time FAR *tp);
  150. BOOL dos_setftime(COUNT fd, date FAR *dp, time FAR *tp);
  151. LONG dos_getcufsize(COUNT fd);
  152. LONG dos_getfsize(COUNT fd);
  153. BOOL dos_setfsize(COUNT fd, LONG size);
  154. COUNT dos_mkdir(BYTE FAR *dir);
  155. BOOL last_link(struct f_node FAR *fnp);
  156. COUNT map_cluster(REG struct f_node FAR *fnp, COUNT mode);
  157. UCOUNT rdwrblock(COUNT fd, VOID FAR *buffer, UCOUNT count, COUNT mode, COUNT *err);
  158. COUNT dos_read(COUNT fd, VOID FAR *buffer, UCOUNT count);
  159. COUNT dos_write(COUNT fd, VOID FAR *buffer, UCOUNT count);
  160. LONG dos_lseek(COUNT fd, LONG foffset, COUNT origin);
  161. UWORD dos_free(struct dpb *dpbp);
  162. VOID dos_pwd(struct dpb *dpbp, BYTE FAR *s);
  163. VOID trim_path(BYTE FAR *s);
  164. COUNT dos_cd(struct dpb *dpbp, BYTE FAR *s);
  165. struct f_node FAR *get_f_node(void);
  166. VOID release_f_node(struct f_node FAR *fnp);
  167. VOID dos_setdta(BYTE FAR *newdta);
  168. COUNT dos_getfattr(BYTE FAR *name, UWORD FAR *attrp);
  169. COUNT dos_setfattr(BYTE FAR *name, UWORD FAR *attrp);
  170. COUNT media_check(REG struct dpb *dpbp);
  171. struct f_node FAR *xlt_fd(COUNT fd);
  172. COUNT xlt_fnp(struct f_node FAR *fnp);
  173. struct dhdr FAR *select_unit(COUNT drive);
  174. /* fattab.c */
  175. UCOUNT link_fat(struct dpb *dpbp, UCOUNT Cluster1, REG UCOUNT Cluster2);
  176. UCOUNT link_fat16(struct dpb *dpbp, UCOUNT Cluster1, UCOUNT Cluster2);
  177. UCOUNT link_fat12(struct dpb *dpbp, UCOUNT Cluster1, UCOUNT Cluster2);
  178. UWORD next_cluster(struct dpb *dpbp, REG UCOUNT ClusterNum);
  179. UWORD next_cl16(struct dpb *dpbp, REG UCOUNT ClusterNum);
  180. UWORD next_cl12(struct dpb *dpbp, REG UCOUNT ClusterNum);
  181. /* fcbfns.c */
  182. VOID DosOutputString(BYTE FAR *s);
  183. int DosCharInputEcho(VOID);
  184. int DosCharInput(VOID);
  185. VOID DosDirectConsoleIO(iregs FAR *r);
  186. VOID DosCharOutput(COUNT c);
  187. VOID DosDisplayOutput(COUNT c);
  188. VOID FatGetDrvData(COUNT drive, COUNT FAR *spc, COUNT FAR *bps, COUNT FAR *nc, BYTE FAR **mdp);
  189. WORD FcbParseFname(int wTestMode, BYTE FAR **lpFileName, fcb FAR *lpFcb);
  190. BYTE FAR *ParseSkipWh(BYTE FAR *lpFileName);
  191. BOOL TestCmnSeps(BYTE FAR *lpFileName);
  192. BOOL TestFieldSeps(BYTE FAR *lpFileName);
  193. BYTE FAR *GetNameField(BYTE FAR *lpFileName, BYTE FAR *lpDestField, COUNT nFieldSize, BOOL *pbWildCard);
  194. BOOL FcbRead(xfcb FAR *lpXfcb, COUNT *nErrorCode);
  195. BOOL FcbWrite(xfcb FAR *lpXfcb, COUNT *nErrorCode);
  196. BOOL FcbGetFileSize(xfcb FAR *lpXfcb);
  197. BOOL FcbSetRandom(xfcb FAR *lpXfcb);
  198. BOOL FcbCalcRec(xfcb FAR *lpXfcb);
  199. BOOL FcbRandomBlockRead(xfcb FAR *lpXfcb, COUNT nRecords, COUNT *nErrorCode);
  200. BOOL FcbRandomBlockWrite(xfcb FAR *lpXfcb, COUNT nRecords, COUNT *nErrorCode);
  201. BOOL FcbRandomRead(xfcb FAR *lpXfcb, COUNT *nErrorCode);
  202. BOOL FcbRandomWrite(xfcb FAR *lpXfcb, COUNT *nErrorCode);
  203. BOOL FcbCreate(xfcb FAR *lpXfcb);
  204. void FcbNameInit(fcb FAR *lpFcb, BYTE *pszBuffer, COUNT *pCurDrive);
  205. BOOL FcbOpen(xfcb FAR *lpXfcb);
  206. BOOL FcbDelete(xfcb FAR *lpXfcb);
  207. BOOL FcbRename(xfcb FAR *lpXfcb);
  208. void MoveDirInfo(dmatch FAR *lpDmatch, struct dirent FAR *lpDir);
  209. BOOL FcbClose(xfcb FAR *lpXfcb);
  210. BOOL FcbFindFirst(xfcb FAR *lpXfcb);
  211. BOOL FcbFindNext(xfcb FAR *lpXfcb);
  212. /* initoem.c */
  213. UWORD init_oem(void);
  214. /* inthndlr.c */
  215. VOID INRPT far int20_handler (iregs UserRegs);
  216. VOID INRPT far int21_handler(iregs UserRegs);
  217. VOID far int21_entry(iregs UserRegs);
  218. VOID int21_service(iregs far *r);
  219. VOID INRPT FAR int22_handler(void);
  220. VOID INRPT FAR int23_handler(int es, int ds, int di, int si, int bp, int sp, int bx, int dx, int cx, int ax, int ip, int cs, int flags);
  221. VOID INRPT FAR int24_handler(void);
  222. void low_int25_handler(void);
  223. void low_int26_handler(void);
  224. VOID int25_handler();
  225. VOID int26_handler();
  226. VOID INRPT FAR int27_handler(int es, int ds, int di, int si, int bp, int sp, int bx, int dx, int cx, int ax, int ip, int cs, int flags);
  227. VOID INRPT FAR int28_handler(void);
  228. VOID INRPT FAR int2f_handler(void);
  229. VOID INRPT FAR empty_handler (void);
  230. /* ioctl.c */
  231. COUNT DosDevIOctl(iregs FAR *r, COUNT FAR *err);
  232. /* main.c */
  233. VOID main(void);
  234. VOID reinit_k(void);
  235. VOID init_device(struct dhdr FAR *dhp, BYTE FAR *cmdLine);
  236. struct dhdr FAR *link_dhdr(struct dhdr FAR *lp, struct dhdr FAR *dhp, BYTE FAR *cmdLine);
  237. /* memmgr.c */
  238. VOID mcb_init (mcb FAR *mcbp, UWORD size);
  239. seg far2para (VOID FAR *p);
  240. seg long2para (LONG size);
  241. VOID FAR *add_far (VOID FAR *fp, ULONG off);
  242. VOID FAR *adjust_far (VOID FAR *fp);
  243. COUNT DosMemAlloc (UWORD size, COUNT mode, seg FAR *para, UWORD FAR *asize);
  244. seg DosMemLargest (seg FAR *size);
  245. COUNT DosMemFree (UWORD para);
  246. COUNT DosMemChange (UWORD para, UWORD size, UWORD *maxSize);
  247. COUNT DosMemCheck (void);
  248. COUNT FreeProcessMem (UWORD ps);
  249. COUNT DosGetLargestBlock(UWORD FAR *block);
  250. VOID show_chain (void);
  251. VOID mcb_print (mcb FAR *mcbp);
  252. VOID _fmemcpy(BYTE FAR *d, BYTE FAR *s, REG COUNT n);
  253. /* misc.c */
  254. VOID scopy(REG BYTE *s, REG BYTE *d);
  255. VOID fscopy(REG BYTE FAR *s, REG BYTE FAR *d);
  256. VOID fsncopy(BYTE FAR *s, BYTE FAR *d, REG COUNT n);
  257. VOID bcopy(REG BYTE *s, REG BYTE *d, REG COUNT n);
  258. VOID fbcopy(REG VOID FAR *s, REG VOID FAR *d, REG COUNT n);
  259. BYTE *skipwh(BYTE *s);
  260. BYTE *scan(BYTE *s, BYTE *d);
  261. BYTE *scan_seperator(BYTE *s, BYTE *d);
  262. BYTE *GetNumber(REG BYTE *pszString, REG COUNT *pnNum);
  263. BOOL isnum(BYTE *pszString);
  264. /* nls.c */
  265. UWORD GetCtryInfo(UBYTE FAR *lpShrtCode, UWORD FAR *lpLongCode, BYTE FAR *lpTable);
  266. UWORD SetCtryInfo(UBYTE FAR *lpShrtCode, UWORD FAR *lpLongCode, BYTE FAR *lpTable, UBYTE *nRetCode);
  267. UWORD internalUpcase(UWORD c);
  268. BOOL GetGlblCodePage(UWORD FAR *ActvCodePage, UWORD FAR *SysCodePage);
  269. BOOL SetGlblCodePage(UWORD FAR *ActvCodePage, UWORD FAR *SysCodePage);
  270. BOOL ExtCtryInfo(UBYTE nOpCode, UWORD CodePageID, UWORD InfoSize, VOID FAR *Information);
  271. char upMChar(UPMAP map, char ch);
  272. VOID upMMem(UPMAP map, char FAR *str, unsigned len);
  273. BYTE yesNo(char ch);
  274. char upChar(char ch);
  275. VOID upString(char FAR *str);
  276. VOID upMem(char FAR *str, unsigned len);
  277. char upFChar(char ch);
  278. VOID upFString(char FAR *str);
  279. VOID upFMem(char FAR *str, unsigned len);
  280. BOOL LoadCountryInfo(char FAR *filename, WORD ctryCode, WORD codePage);
  281. /* prf.c */
  282. VOID put_console(COUNT c);
  283. WORD printf(CONST BYTE *fmt, ...);
  284. WORD sprintf(BYTE *buff, CONST BYTE *fmt, ...);
  285. /* strings.c */
  286. COUNT strlen(REG BYTE *s);
  287. COUNT fstrlen(REG BYTE FAR *s);
  288. VOID strcpy(REG BYTE *d, REG BYTE *s);
  289. VOID _fstrcpy(REG BYTE FAR *d, REG BYTE FAR *s);
  290. VOID strncpy(REG BYTE *d, REG BYTE *s, COUNT l);
  291. VOID strcat(REG BYTE *d, REG BYTE *s);
  292. COUNT strcmp(REG BYTE *d, REG BYTE *s);
  293. COUNT fstrcmp (REG BYTE FAR *d, REG BYTE FAR *s);
  294. COUNT fstrncmp (REG BYTE FAR *d, REG BYTE FAR *s, COUNT l);
  295. COUNT strncmp(REG BYTE *d, REG BYTE *s, COUNT l);
  296. VOID fstrncpy (REG BYTE FAR *d, REG BYTE FAR *s, COUNT l);
  297. COUNT tolower(COUNT c);
  298. COUNT toupper(COUNT c);
  299. /* sysclk.c */
  300. WORD clk_driver(rqptr rp);
  301. COUNT BcdToByte(COUNT x);
  302. COUNT BcdToWord(BYTE *x, UWORD *mon, UWORD *day, UWORD *yr);
  303. COUNT ByteToBcd(COUNT x);
  304. LONG WordToBcd(BYTE *x, UWORD *mon, UWORD *day, UWORD *yr);
  305. /* syscon.c */
  306. WORD con_driver(rqptr rp);
  307. VOID break_handler(void);
  308. VOID INRPT FAR int29_handler(int es, int ds, int di, int si, int bp, int sp, int bx, int dx, int cx, int ax, int ip, int cs, int flags);
  309. /* syspack.c */
  310. VOID getdirent(BYTE FAR *vp, struct dirent FAR *dp);
  311. VOID putdirent(struct dirent FAR *dp, BYTE FAR *vp);
  312. /* systime.c */
  313. VOID DosGetTime(BYTE FAR *hp, BYTE FAR *mp, BYTE FAR *sp, BYTE FAR *hdp);
  314. COUNT DosSetTime(BYTE FAR *hp, BYTE FAR *mp, BYTE FAR *sp, BYTE FAR *hdp);
  315. VOID DosGetDate(BYTE FAR *wdp, BYTE FAR *mp, BYTE FAR *mdp, COUNT FAR *yp);
  316. COUNT DosSetDate(BYTE FAR *mp, BYTE FAR *mdp, COUNT FAR *yp);
  317. /* task.c */
  318. COUNT ChildEnv (exec_blk FAR *exp, UWORD *pChildEnvSeg, char far *pathname);
  319. VOID new_psp(psp FAR *p, int psize);
  320. VOID return_user(void);
  321. COUNT DosExec(COUNT mode, exec_blk FAR *ep, BYTE FAR *lp);
  322. /* irqstack.asm */
  323. VOID init_stacks(VOID FAR *stack_base, COUNT nStacks, WORD stackSize);
  324. /* newstuff.c */
  325. int SetJFTSize(UWORD nHandles);
  326. int DosMkTmp(BYTE FAR *pathname, UWORD attr);
  327. int truename(char FAR *src, char FAR *dest);
  328. /* procsupt.asm */
  329. VOID INRPT FAR exec_user(iregs FAR *irp);