📄 globals.h
字号:
#ifdef MAIN = "FreeDOS kernel build " KERNEL_BUILD_STRING " [version " SOURCE_DATE_STRING " compiled " __DATE__ "]\n"#if 0 = "FreeDOS kernel version " KERNEL_VERSION_STRING " (Build " KERNEL_BUILD_STRING ") [" __DATE__ " " __TIME__ "]\n"#endif#if 0 "For technical information and description of the DOS-C operating system\n\consult \"FreeDOS Kernel\" by Pat Villani, published by Miller\n\Freeman Publishing, Lawrence KS, USA (ISBN 0-87930-436-7).\n\\n"#endif#endif ;/* Globally referenced variables - WARNING: ORDER IS DEFINED IN *//* KERNAL.ASM AND MUST NOT BE CHANGED. DO NOT CHANGE ORDER BECAUSE THEY *//* ARE DOCUMENTED AS UNDOCUMENTED (?) AND HAVE MANY PROGRAMS AND TSR'S *//* ACCESSING THEM */extern UWORD ASM NetBios;extern BYTE * ASM net_name;extern BYTE ASM net_set_count;extern BYTE ASM NetDelay, ASM NetRetry;extern UWORD ASM first_mcb, /* Start of user memory */ ASM uppermem_root; /* Start of umb chain (usually 9fff) */extern char * ASM inputptr; /* pointer to unread CON input */ extern sfttbl FAR * ASM sfthead; /* System File Table head */extern struct dhdrFAR * ASM clock, /* CLOCK$ device */ FAR * ASM syscon; /* console device */extern WORD ASM maxbksize; /* Number of Drives in system */extern struct bufferFAR *ASM firstbuf; /* head of buffers linked list */enum {LOC_CONV=0, LOC_HMA=1};extern unsigned char ASM bufloc; /* 0=conv, 1=HMA */extern void far * ASM deblock_buf; /* pointer to workspace buffer */GLOBAL char FAR *firstAvailableBuf;extern struct cds FAR * ASM CDSp; /* Current Directory Structure */externstruct cds FAR * ASM current_ldt;extern LONG ASM current_filepos; /* current file position */extern sfttbl FAR * ASM FCBp; /* FCB table pointer */extern WORD ASM nprotfcb; /* number of protected fcbs */extern UBYTE ASM nblkdev, /* number of block devices */ ASM lastdrive, /* value of last drive */ ASM uppermem_link, /* UMB Link flag */ ASM PrinterEcho; /* Printer Echo Flag */extern UWORD ASM LoL_nbuffers; /* Number of buffers */extern struct dhdr ASM nul_dev;extern UBYTE ASM mem_access_mode; /* memory allocation scheme */extern BYTE ASM ErrorMode, /* Critical error flag */ ASM InDOS, /* In DOS critical section */ ASM OpenMode, /* File Open Attributes */ ASM SAttr, /* Attrib Mask for Dir Search */ ASM dosidle_flag, ASM Server_Call, ASM CritErrLocus, ASM CritErrAction, ASM CritErrClass, ASM VgaSet, ASM njoined; /* number of joined devices */extern UWORD ASM Int21AX;extern COUNT ASM CritErrCode;extern BYTE FAR * ASM CritErrDev;extern struct dirent ASM SearchDir;extern struct { COUNT nDrive; BYTE szName[FNAME_SIZE + 1]; BYTE szExt[FEXT_SIZE + 1];} ASM FcbSearchBuffer;extern struct /* Path name parsing buffer */{ BYTE _PriPathName[128];} ASM _PriPathBuffer;#define PriPathName _PriPathBuffer._PriPathNameextern struct /* Alternate path name parsing buffer */{ BYTE _SecPathName[128];} ASM _SecPathBuffer;#define SecPathName _SecPathBuffer._SecPathNameextern UWORD ASM wAttr;extern BYTE ASM default_drive; /* default drive for dos */extern dmatch ASM sda_tmp_dm; /* Temporary directory match buffer */extern BYTE ASM internal_data[], /* sda areas */ ASM swap_always[], /* " " */ ASM swap_indos[], /* " " */ ASM tsr, /* true if program is TSR */ ASM break_flg, /* true if break was detected */ ASM break_ena; /* break enabled flag */extern void FAR * ASM dta; /* Disk transfer area (kludge) */extern seg ASM cu_psp; /* current psp segment */extern iregs FAR * ASM user_r; /* User registers for int 21h call */extern struct dirent /* Temporary directory entry */ ASM DirEntBuffer;extern fcb FAR * ASM sda_lpFcb; /* Pointer to users fcb */extern sft FAR * ASM lpCurSft;extern BYTE ASM verify_ena, /* verify enabled flag */ ASM switchar; /* switch char */extern UWORD ASM return_code; /* Process termination rets */extern UBYTE ASM BootDrive, /* Drive we came up from */ ASM scr_pos; /* screen position for bs, ht, etc *//*extern WORD NumFloppies; !!*//* How many floppies we have */extern keyboard ASM kb_buf;extern char ASM local_buffer[LINEBUFSIZE0A];extern UBYTE DiskTransferBuffer[SEC_SIZE];extern struct cds ASM TempCDS;/* start of uncontrolled variables */#ifdef DEBUGGLOBAL iregs error_regs; /* registers for dump */GLOBAL WORD dump_regs; /* dump registers of bad call */#endifextern struct f_node FAR * ASM f_nodes; /* pointer to the array */extern UWORD ASM f_nodes_cnt; /* number of allocated f_nodes *//* *//* Function prototypes - automatically generated *//* */#include "proto.h"/* Process related functions - not under automatic generation. *//* Typically, these are in ".asm" files. */VOID ASMCFUNC FAR cpm_entry(VOID)/*INRPT FAR handle_break(VOID) */ ;COUNT ASMCFUNC CriticalError(COUNT nFlag, COUNT nDrive, COUNT nError, struct dhdr FAR * lpDevice);VOID ASMCFUNC FAR CharMapSrvc(VOID);#if 0VOID ASMCFUNC FAR set_stack(VOID);VOID ASMCFUNC FAR restore_stack(VOID);#endif/*VOID INRPT FAR handle_break(VOID); */ULONG ASMPASCAL ReadPCClock(VOID);VOID ASMPASCAL WriteATClock(BYTE *, BYTE, BYTE, BYTE);VOID ASMPASCAL WritePCClock(ULONG);intvec getvec(unsigned char);#ifdef __WATCOMC__#pragma aux (pascal) ReadPCClock modify exact [ax cx dx]#pragma aux (pascal) WriteATClock modify exact [ax bx cx dx]#pragma aux (pascal) WritePCClock modify exact [ax cx dx]#endif/* *//* special word packing prototypes *//* */#ifdef NATIVE#define getlong(vp) (*(UDWORD *)(vp))#define getword(vp) (*(UWORD *)(vp))#define getbyte(vp) (*(UBYTE *)(vp))#define fgetlong(vp) (*(UDWORD FAR *)(vp))#define fgetword(vp) (*(UWORD FAR *)(vp))#define fgetbyte(vp) (*(UBYTE FAR *)(vp))#define fputlong(vp, l) (*(UDWORD FAR *)(vp)=l)#define fputword(vp, w) (*(UWORD FAR *)(vp)=w)#define fputbyte(vp, b) (*(UBYTE FAR *)(vp)=b)#elseUDWORD getlong(VOID *);UWORD getword(VOID *);UBYTE getbyte(VOID *);UDWORD fgetlong(VOID FAR *);UWORD fgetword(VOID FAR *);UBYTE fgetbyte(VOID FAR *);VOID fputlong(VOID FAR *, UDWORD);VOID fputword(VOID FAR *, UWORD);VOID fputbyte(VOID FAR *, UBYTE);#endif#ifndef __WATCOMC__#define setvec setvec_resident#endifvoid setvec(unsigned char intno, intvec vector);/*#define is_leap_year(y) ((y) & 3 ? 0 : (y) % 100 ? 1 : (y) % 400 ? 0 : 1) *//* ^Break handling */#ifdef __WATCOMC__#pragma aux (cdecl) spawn_int23 aborts;#endifvoid ASMCFUNC spawn_int23(void); /* procsupt.asm */GLOBAL BYTE ReturnAnyDosVersionExpected;GLOBAL struct f_node fnode[2];GLOBAL int fnode_fd[2];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -