📄 proto.h
字号:
VOID DosCharOutput(COUNT c);VOID DosDisplayOutput(COUNT c);BYTE FAR *FatGetDrvData(UBYTE drive, UBYTE * spc, UWORD * bps, UWORD * nc);UWORD FcbParseFname(UBYTE *wTestMode, const BYTE FAR *lpFileName, fcb FAR * lpFcb);const BYTE FAR *ParseSkipWh(const BYTE FAR * lpFileName);BOOL TestCmnSeps(BYTE FAR * lpFileName);BOOL TestFieldSeps(BYTE FAR * lpFileName);const BYTE FAR *GetNameField(const BYTE FAR * lpFileName, BYTE FAR * lpDestField, COUNT nFieldSize, BOOL * pbWildCard);UBYTE FcbReadWrite(xfcb FAR *, UCOUNT, int);UBYTE FcbGetFileSize(xfcb FAR * lpXfcb);void FcbSetRandom(xfcb FAR * lpXfcb);UBYTE FcbRandomBlockIO(xfcb FAR * lpXfcb, UWORD *nRecords, int mode);UBYTE FcbRandomIO(xfcb FAR * lpXfcb, int mode);UBYTE FcbOpen(xfcb FAR * lpXfcb, unsigned flags);UBYTE FcbDelete(xfcb FAR * lpXfcb);UBYTE FcbRename(xfcb FAR * lpXfcb);UBYTE FcbClose(xfcb FAR * lpXfcb);void FcbCloseAll(void);UBYTE FcbFindFirstNext(xfcb FAR * lpXfcb, BOOL First);/* intr.asm */COUNT ASMPASCAL res_DosExec(COUNT mode, exec_blk * ep, BYTE * lp);UCOUNT ASMPASCAL res_read(int fd, void *buf, UCOUNT count);#ifdef __WATCOMC__#pragma aux (pascal) res_DosExec modify exact [ax bx dx es]#pragma aux (pascal) res_read modify exact [ax bx cx dx]#endif/* ioctl.c */COUNT DosDevIOctl(lregs * r);/* memmgr.c */seg far2para(VOID FAR * p);seg long2para(ULONG size);void FAR *add_far(void FAR * fp, unsigned off);VOID FAR *adjust_far(const void FAR * fp);COUNT DosMemAlloc(UWORD size, COUNT mode, seg * para, UWORD * asize);COUNT DosMemLargest(UWORD * size);COUNT DosMemFree(UWORD para);COUNT DosMemChange(UWORD para, UWORD size, UWORD * maxSize);COUNT DosMemCheck(void);COUNT FreeProcessMem(UWORD ps);COUNT DosGetLargestBlock(UWORD * block);VOID show_chain(void);void DosUmbLink(unsigned n);VOID mcb_print(mcb FAR * mcbp);/* lfnapi.c */COUNT lfn_allocate_inode(VOID);COUNT lfn_free_inode(COUNT handle);COUNT lfn_setup_inode(COUNT handle, ULONG dirstart, UWORD diroff);COUNT lfn_create_entries(COUNT handle, lfn_inode_ptr lip);COUNT lfn_remove_entries(COUNT handle);COUNT lfn_dir_read(COUNT handle, lfn_inode_ptr lip);COUNT lfn_dir_write(COUNT handle);/* nls.c */BYTE DosYesNo(unsigned char ch);#ifndef DosUpMemVOID DosUpMem(VOID FAR * str, unsigned len);#endifunsigned char ASMCFUNC DosUpChar(unsigned char ch);VOID DosUpString(char FAR * str);VOID DosUpFMem(VOID FAR * str, unsigned len);unsigned char DosUpFChar(unsigned char ch);VOID DosUpFString(char FAR * str);COUNT DosGetData(int subfct, UWORD cp, UWORD cntry, UWORD bufsize, VOID FAR * buf);#ifndef DosGetCountryInformationCOUNT DosGetCountryInformation(UWORD cntry, VOID FAR * buf);#endif#ifndef DosSetCountryCOUNT DosSetCountry(UWORD cntry);#endifCOUNT DosGetCodepage(UWORD * actCP, UWORD * sysCP);COUNT DosSetCodepage(UWORD actCP, UWORD sysCP);UWORD ASMCFUNC syscall_MUX14(DIRECT_IREGS);/* prf.c */#ifdef DEBUGint VA_CDECL printf(const char * fmt, ...);int VA_CDECL sprintf(char * buff, const char * fmt, ...);#endifVOID hexd(char *title, VOID FAR * p, COUNT numBytes);void put_unsigned(unsigned n, int base, int width);void put_string(const char *s);void put_console(int);/* strings.c */size_t /* ASMCFUNC */ ASMPASCAL strlen(const char * s);size_t /* ASMCFUNC */ ASMPASCAL fstrlen(const char FAR * s);char FAR * /*ASMCFUNC*/ ASMPASCAL _fstrcpy(char FAR * d, const char FAR * s);int /*ASMCFUNC*/ ASMPASCAL strcmp(const char * d, const char * s);int /*ASMCFUNC*/ ASMPASCAL fstrcmp(const char FAR * d, const char FAR * s);int /*ASMCFUNC*/ ASMPASCAL fstrncmp(const char FAR * d, const char FAR * s, size_t l);int /*ASMCFUNC*/ ASMPASCAL strncmp(const char * d, const char * s, size_t l);char * /*ASMCFUNC*/ ASMPASCAL strchr(const char * s, int c);char FAR * /*ASMCFUNC*/ ASMPASCAL fstrchr(const char FAR * s, int c);void FAR * /*ASMCFUNC*/ ASMPASCAL fmemchr(const void FAR * s, int c, size_t n);/* misc.c */char * /*ASMCFUNC*/ ASMPASCAL strcpy(char * d, const char * s);void /*ASMCFUNC*/ ASMPASCAL fmemcpyBack(void FAR * d, const void FAR * s, size_t n);void /*ASMCFUNC*/ ASMPASCAL fmemcpy(void FAR * d, const void FAR * s, size_t n);void /*ASMCFUNC*/ ASMPASCAL fstrcpy(char FAR * d, const char FAR * s);void * /*ASMCFUNC*/ ASMPASCAL memcpy(void *d, const void * s, size_t n);void * /*ASMCFUNC*/ ASMPASCAL fmemset(void FAR * s, int ch, size_t n);void * /*ASMCFUNC*/ ASMPASCAL memset(void * s, int ch, size_t n);int /*ASMCFUNC*/ ASMPASCAL memcmp(const void *m1, const void *m2, size_t n);int /*ASMCFUNC*/ ASMPASCAL fmemcmp(const void FAR *m1, const void FAR *m2, size_t n);#ifdef __WATCOMC__/* bx, cx, dx and es not used or clobbered for all asmsupt.asm functions except (f)memchr/(f)strchr (which clobber dx) */#pragma aux (pascal) pascal_ax modify exact [ax]#pragma aux (pascal_ax) fmemcpy#pragma aux (pascal_ax) memcpy#pragma aux (pascal_ax) fmemset#pragma aux (pascal_ax) memset#pragma aux (pascal_ax) fmemcmp modify nomemory#pragma aux (pascal_ax) memcmp modify nomemory#pragma aux (pascal_ax) fstrcpy#pragma aux (pascal_ax) strcpy#pragma aux (pascal_ax) fstrlen modify nomemory#pragma aux (pascal_ax) strlen modify nomemory#pragma aux (pascal) memchr modify exact [ax dx] nomemory#pragma aux (pascal) fmemchr modify exact [ax dx] nomemory#pragma aux (pascal) strchr modify exact [ax dx] nomemory#pragma aux (pascal) fstrchr modify exact [ax dx] nomemory#endif/* sysclk.c */COUNT BcdToByte(COUNT x);COUNT BcdToWord(BYTE * x, UWORD * mon, UWORD * day, UWORD * yr);COUNT ByteToBcd(COUNT x);LONG WordToBcd(BYTE * x, UWORD * mon, UWORD * day, UWORD * yr);/* syspack.c */#ifdef NONNATIVEVOID getdirent(UBYTE FAR * vp, struct dirent FAR * dp);VOID putdirent(struct dirent FAR * dp, UBYTE FAR * vp);#else#define getdirent(vp, dp) fmemcpy(dp, vp, sizeof(struct dirent))#define putdirent(dp, vp) fmemcpy(vp, dp, sizeof(struct dirent))#endif/* systime.c */void DosGetTime(struct dostime *dt);int DosSetTime(const struct dostime *dt);unsigned char DosGetDate(struct dosdate *dd);int DosSetDate(const struct dosdate *dd);const UWORD *is_leap_year_monthdays(UWORD year);UWORD DaysFromYearMonthDay(UWORD Year, UWORD Month, UWORD DayOfMonth);/* task.c */VOID new_psp(seg para, seg cur_psp);VOID child_psp(seg para, seg cur_psp, int psize);VOID return_user(void);COUNT DosExec(COUNT mode, exec_blk FAR * ep, BYTE FAR * lp);ULONG SftGetFsize(int sft_idx);VOID InitPSP(VOID);/* newstuff.c */int SetJFTSize(UWORD nHandles);long DosMkTmp(BYTE FAR * pathname, UWORD attr);COUNT truename(const char FAR * src, char * dest, COUNT t);/* network.c */int network_redirector(unsigned cmd);int network_redirector_fp(unsigned cmd, void far *s);long ASMPASCAL network_redirector_mx(unsigned cmd, void far *s, void *arg);#define remote_rw(cmd,s,arg) network_redirector_mx(cmd, s, (void *)arg)#define remote_getfree(s,d) (int)network_redirector_mx(REM_GETSPACE, s, d)#define remote_lseek(s,new_pos) network_redirector_mx(REM_LSEEK, s, &new_pos)#define remote_setfattr(attr) (int)network_redirector_mx(REM_SETATTR, NULL, (void *)attr)#define remote_printredir(dx,ax) (int)network_redirector_mx(REM_PRINTREDIR, MK_FP(0,dx),(void *)ax)#define QRemote_Fn(d,s) (int)network_redirector_mx(REM_FILENAME, d, (void *)&s)UWORD get_machine_name(BYTE FAR * netname);VOID set_machine_name(BYTE FAR * netname, UWORD name_num);/* procsupt.asm */VOID ASMCFUNC exec_user(iregs FAR * irp, int disable_a20);/* new by TE *//* assert at compile time, that something is true. use like ASSERT_CONST( SECSIZE == 512) ASSERT_CONST( (BYTE FAR *)x->fcb_ext - (BYTE FAR *)x->fcbname == 8)*/#define ASSERT_CONST(x) { typedef struct { char _xx[x ? 1 : -1]; } xx ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -