📄 globals.h
字号:
#ifdef MAIN
#if 0
= "DOS-C version %d.%d Beta %d [FreeDOS Release] (Build %d).\n"
#endif
= "FreeDOS kernel version " KERNEL_VERSION_STRING
" (Build " KERNEL_BUILD_STRING ") [" __DATE__ " " __TIME__ "]\n"
#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 dhdr
FAR * ASM clock, /* CLOCK$ device */
FAR * ASM syscon; /* console device */
extern WORD ASM maxbksize; /* Number of Drives in system */
extern struct buffer
FAR *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 */
extern
struct 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._PriPathName
extern struct /* Alternate path name parsing buffer */
{
BYTE _SecPathName[128];
} ASM _SecPathBuffer;
#define SecPathName _SecPathBuffer._SecPathName
extern 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 DEBUG
GLOBAL iregs error_regs; /* registers for dump */
GLOBAL WORD dump_regs; /* dump registers of bad call */
#endif
extern 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 0
VOID 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)
#else
UDWORD 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
#endif
void 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;
#endif
void 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 + -