📄 globals.h
字号:
# endif
#endif
GLOBAL BYTE *copyright
#ifdef MAIN
="(C) Copyright 1995, 1996, 1997, 1998\nPasquale J. Villani\nAll Rights Reserved\n";
#else
;
#endif
GLOBAL BYTE *os_release
#ifdef MAIN
# ifdef SHWR
="DOS-C version %d.%d Beta %d [FreeDOS Release] (Build %d).\n\
\n\
DOS-C is free software; you can redistribute it and/or modify it under the\n\
terms of the GNU General Public License as published by the Free Software\n\
Foundation; either version 2, or (at your option) any later version.\n\n\
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";
# else
="DOS-C version %d.%d.%d (Build %d)\n\n";
# endif
#else
;
#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
first_mcb; /* Start of user memory */
extern struct dpb
FAR *DPBp; /* First drive Parameter Block */
extern sfttbl
FAR *sfthead; /* System File Table head */
extern struct dhdr
FAR *clock, /* CLOCK$ device */
FAR *syscon; /* console device */
extern WORD
maxbksize; /* Number of Drives in system */
extern struct buffer
FAR *firstbuf; /* head of buffers linked list */
extern VOID
FAR *CDSp; /* Current Directory Structure */
extern sfttbl
FAR *FCBp; /* FCB table pointer */
extern WORD
nprotfcb; /* number of protected fcbs */
extern BYTE
nblkdev, /* number of block devices */
lastdrive; /* value of last drive */
extern struct dhdr
nul_dev;
extern BYTE
LocalPath[PARSE_MAX+3], /* Room for drive spec */
mem_access_mode, /* memory allocation scheme */
InDOS, /* In DOS critical section */
njoined; /* number of joined devices */
extern struct dirent
SearchDir;
extern struct
{
COUNT nDrive;
BYTE szName[FNAME_SIZE+1];
BYTE szExt[FEXT_SIZE+1];
} FcbSearchBuffer;
extern union /* Path name parsing buffer */
{
BYTE _PriPathName[128];
struct
{
BYTE _dname[NAMEMAX];
BYTE _fname[FNAME_SIZE];
BYTE _fext[FEXT_SIZE];
} _f;
} _PriPathBuffer;
#define PriPathName _PriPathBuffer._PriPathName
#define szDirName _PriPathBuffer._f._dname
#define szFileName _PriPathBuffer._f._fname
#define szFileExt _PriPathBuffer._f._fext
#define szPriDirName _PriPathBuffer._f._dname
#define szPriFileName _PriPathBuffer._f._fname
#define szPriFileExt _PriPathBuffer._f._fext
extern union /* Alternate path name parsing buffer */
{
BYTE _SecPathName[128];
struct
{
BYTE _dname[NAMEMAX];
BYTE _fname[FNAME_SIZE];
BYTE _fext[FEXT_SIZE];
} _f;
} _SecPathBuffer;
#define SecPathName _SecPathBuffer._SecPathName
#define szSecDirName _SecPathBuffer._f._dname
#define szSecFileName _SecPathBuffer._f._fname
#define szSecFileExt _SecPathBuffer._f._fext
extern UWORD
wAttr;
extern BYTE
default_drive; /* default drive for dos */
extern BYTE
TempBuffer[], /* Temporary general purpose buffer */
FAR *internal_data, /* sda areas */
FAR *swap_always, /* " " */
FAR *swap_indos, /* " " */
tsr, /* true if program is TSR */
break_flg, /* true if break was detected */
break_ena, /* break enabled flag */
FAR *dta; /* Disk transfer area (kludge) */
extern seg
cu_psp; /* current psp segment */
extern iregs
FAR *user_r; /* User registers for int 21h call */
extern struct dirent /* Temporary directory entry */
DirEntBuffer;
extern request /* I/O Request packets */
CharReqHdr,
IoReqHdr,
MediaReqHdr;
extern fcb
FAR *lpFcb; /* Pointer to users fcb */
extern sfttbl
FAR *lpCurSft;
extern BYTE
verify_ena, /* verify enabled flag */
switchar, /* switch char */
return_mode, /* Process termination rets */
return_code; /* " " " */
extern WORD
scr_pos, /* screen position for bs, ht, etc */
BootDrive, /* Drive we came up from */
NumFloppies; /* How many floppies we have */
extern keyboard
kb_buf;
extern struct cds
TempCDS;
/* start of uncontrolled variables */
GLOBAL struct f_node
*pDirFileNode;
GLOBAL iregs error_regs; /* registers for dump */
GLOBAL WORD
dump_regs; /* dump registers of bad call */
GLOBAL struct dpb
blk_devices[NDEVS];
GLOBAL struct f_node FAR
*f_nodes; /* pointer to the array */
GLOBAL struct buffer
FAR *lastbuf, /* tail of ditto */
FAR *buffers; /* pointer to array of track buffers */
GLOBAL iregs
FAR *ustackp, /* user stack */
FAR *kstackp; /* kernel stack */
/* Start of configuration variables */
GLOBAL struct config
{
UBYTE cfgBuffers; /* number of buffers in the system */
UBYTE cfgFiles; /* number of available files */
UBYTE cfgFcbs; /* number of available FCBs */
UBYTE cfgProtFcbs; /* number of protected FCBs */
BYTE cfgInit[NAMEMAX]; /* init of command.com */
BYTE cfgInitTail[NAMEMAX]; /* command.com's tail */
BYTE cfgLastdrive; /* last drive */
BYTE cfgStacks; /* number of stacks */
UWORD cfgStackSize; /* stacks size for each stack */
} Config
#ifdef MAIN
= {
NUMBUFF,
NFILES,
NFCBS,
0,
"command.com",
" /P\r\n",
NLAST,
NSTACKS,
128
};
#else
;
#endif
GLOBAL
/* */
/* Function prototypes - automatically generated */
/* */
#include "proto.h"
/* Process related functions - not under automatic generation. */
/* Typically, these are in ".asm" files. */
VOID
FAR cpm_entry(VOID),
INRPT FAR re_entry(VOID),
INRPT FAR handle_break(VOID);
VOID
enable(VOID),
disable(VOID);
#ifdef PROTO
VOID FAR CharMapSrvc(VOID);
VOID FAR set_stack(VOID);
VOID FAR restore_stack(VOID);
VOID execrh(request FAR *, struct dhdr FAR *);
VOID exit(COUNT);
VOID INRPT FAR handle_break(VOID);
VOID tmark(VOID);
BOOL tdelay(LONG);
BYTE FAR *device_end(VOID);
COUNT kb_data(VOID);
COUNT kb_input(VOID);
COUNT kb_init(VOID);
VOID setvec(UWORD, VOID (INRPT FAR *)());
BYTE FAR *getvec(UWORD);
COUNT con(COUNT);
VOID getdirent(BYTE FAR *, struct dirent FAR *);
VOID putdirent(struct dirent FAR *, BYTE FAR *);
#else
VOID FAR CharMapSrvc();
VOID FAR set_stack();
VOID FAR restore_stack();
VOID execrh();
VOID exit();
VOID INRPT FAR handle_break();
VOID tmark();
BOOL tdelay();
BYTE FAR *device_end();
COUNT kb_data();
COUNT kb_input();
COUNT kb_init();
VOID setvec();
BYTE FAR *getvec();
COUNT con();
VOID getdirent();
VOID putdirent();
#endif
/* */
/* special word packing prototypes */
/* */
#ifdef NATIVE
# define getlong(vp, lp) (*(LONG *)(lp)=*(LONG *)(vp))
# define getword(vp, wp) (*(WORD *)(wp)=*(WORD *)(vp))
# define getbyte(vp, bp) (*(BYTE *)(bp)=*(BYTE *)(vp))
# define fgetlong(vp, lp) (*(LONG FAR *)(lp)=*(LONG FAR *)(vp))
# define fgetword(vp, wp) (*(WORD FAR *)(wp)=*(WORD FAR *)(vp))
# define fgetbyte(vp, bp) (*(BYTE FAR *)(bp)=*(BYTE FAR *)(vp))
# define fputlong(lp, vp) (*(LONG FAR *)(vp)=*(LONG FAR *)(lp))
# define fputword(wp, vp) (*(WORD FAR *)(vp)=*(WORD FAR *)(wp))
# define fputbyte(bp, vp) (*(BYTE FAR *)(vp)=*(BYTE FAR *)(bp))
#else
# ifdef PROTO
VOID getword(VOID *, WORD *);
VOID getbyte(VOID *, BYTE *);
VOID fgetlong(VOID FAR *, LONG FAR *);
VOID fgetword(VOID FAR *, WORD FAR *);
VOID fgetbyte(VOID FAR *, BYTE FAR *);
VOID fputlong(LONG FAR *, VOID FAR *);
VOID fputword(WORD FAR *, VOID FAR *);
VOID fputbyte(BYTE FAR *, VOID FAR *);
# else
VOID getword();
VOID getbyte();
VOID fgetlong();
VOID fgetword();
VOID fgetbyte();
VOID fputlong();
VOID fputword();
VOID fputbyte();
# endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -