⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 globals.h

📁 DOS操作系统的C语言源代码 强烈推荐!!! 可以用来学习基于字符界面的操作系统的设计
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************/
/*                                                              */
/*                          globals.h                           */
/*                            DOS-C                             */
/*                                                              */
/*             Global data structures and declarations          */
/*                                                              */
/*                   Copyright (c) 1995, 1996                   */
/*                      Pasquale J. Villani                     */
/*                      All Rights Reserved                     */
/*                                                              */
/* This file is part of DOS-C.                                  */
/*                                                              */
/* DOS-C is free software; you can redistribute it and/or       */
/* modify it under the terms of the GNU General Public License  */
/* as published by the Free Software Foundation; either version */
/* 2, or (at your option) any later version.                    */
/*                                                              */
/* DOS-C is distributed in the hope that it will be useful, but */
/* WITHOUT ANY WARRANTY; without even the implied warranty of   */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See    */
/* the GNU General Public License for more details.             */
/*                                                              */
/* You should have received a copy of the GNU General Public    */
/* License along with DOS-C; see the file COPYING.  If not,     */
/* write to the Free Software Foundation, 675 Mass Ave,         */
/* Cambridge, MA 02139, USA.                                    */
/****************************************************************/

/* $Logfile:   C:/dos-c/src/kernel/globals.h_v  $ */
#ifdef VERSION_STRINGS
# ifdef MAIN
static BYTE *Globals_hRcsId = "$Header:   C:/dos-c/src/kernel/globals.h_v   1.15   07 Feb 1998 20:38:00   patv  $";
# endif
#endif

/* $Log:   C:/dos-c/src/kernel/globals.h_v  $
   
      Rev 1.15   07 Feb 1998 20:38:00   patv
   Modified stack fram to match DOS standard
   
      Rev 1.14   02 Feb 1998 22:33:46   patv
   Fixed size of default_drive.  Caused failures when break_ena was not zero.
   
      Rev 1.13   22 Jan 1998  4:09:24   patv
   Fixed pointer problems affecting SDA
   
      Rev 1.12   04 Jan 1998 23:16:22   patv
   Changed Log for strip utility
   
      Rev 1.11   03 Jan 1998  8:36:50   patv
   Converted data area to SDA format
   
      Rev 1.10   06 Feb 1997 21:57:04   patv
   Changed version format string
   
      Rev 1.9   06 Feb 1997 21:35:08   patv
   Modified to support new version format
   
      Rev 1.8   22 Jan 1997 13:17:14   patv
   Changed to support version.h and pre-0.92 Svante Frey bug fixes.
   
      Rev 1.6   16 Jan 1997 12:47:00   patv
   pre-Release 0.92 feature additions
   
      Rev 1.5   13 Sep 1996 19:26:32   patv
   Fixed boot for hard drive
   
      Rev 1.4   29 Aug 1996 13:07:22   patv
   Bug fixes for v0.91b
   
      Rev 1.3   29 May 1996 21:03:34   patv
   bug fixes for v0.91a
   
      Rev 1.2   19 Feb 1996  3:23:04   patv
   Added NLS, int2f and config.sys processing
   
      Rev 1.1   01 Sep 1995 17:54:16   patv
   First GPL release.
   
      Rev 1.0   02 Jul 1995  8:31:00   patv
   Initial revision.
 */   
/* $EndLog$ */

#include "../../hdr/device.h"
#include "../../hdr/mcb.h"
#include "../../hdr/pcb.h"
#include "../../hdr/date.h"
#include "../../hdr/time.h"
#include "../../hdr/fat.h"
#include "../../hdr/fcb.h"
#include "../../hdr/tail.h"
#include "../../hdr/process.h"
#include "../../hdr/dcb.h"
#include "../../hdr/sft.h"
#include "../../hdr/cds.h"
#include "../../hdr/exe.h"
#include "../../hdr/fnode.h"
#include "../../hdr/dirmatch.h"
#include "../../hdr/file.h"
#include "../../hdr/clock.h"
#include "../../hdr/kbd.h"
#include "../../hdr/error.h"

#include "../../hdr/version.h"

/*                                                                      */
/* Convience switch for maintaining variables in a single location      */
/*                                                                      */
#ifdef MAIN
#define GLOBAL
#else
#define GLOBAL extern
#endif

/*                                                                      */
/* Convience definitions of TRUE and FALSE                              */
/*                                                                      */
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef FALSE
#define FALSE (0)
#endif

/*                                                                      */
/* Constants and macros                                                 */
/*                                                                      */
/* Defaults and limits - System wide                                    */
#define PARSE_MAX	67		/* maximum # of bytes in path	*/
#define NFILES          16              /* number of files in table     */
#define NFCBS           16              /* number of fcbs               */
#define NDEVS           8               /* number of supported devices  */
#define NSTACKS         8               /* number of stacks             */
#define NLAST           2               /* last drive                   */
#define NAMEMAX         PARSE_MAX       /* Maximum path for CDS         */
#define NUMBUFF         6               /* Number of track buffers      */
					/* -- must be at least 3        */

/* 0 = CON, standard input, can be redirected                           */
/* 1 = CON, standard output, can be redirected                          */
/* 2 = CON, standard error                                              */
/* 3 = AUX, auxiliary                                                   */
/* 4 = PRN, list device                                                 */
/* 5 = 1st user file ...                                                */
#define STDIN           0
#define STDOUT          1
#define STDERR          2
#define STDAUX          3
#define STDPRN          4

/* error results returned after asking user                             */
#define ABORT           -1
#define RETRY           1
#define FAIL            0
#define CONTINUE        2

/* internal error from failure or aborted operation                     */
#define ERROR           -1
#define OK              0

/* internal transfer direction flags                                    */
#define XFR_READ        1
#define XFR_WRITE       2

#define RDONLY          0
#define WRONLY          1
#define RDWR            2

/* special ascii code equates                                           */
#define SPCL            0x00
#define CTL_C           0x03
#define CTL_F           0x06
#define BELL            0x07
#define BS              0x08
#define HT              0x09
#define LF              0x0a
#define CR              0x0d
#define CTL_Q           0x11
#define CTL_S           0x13
#define CTL_Z           0x1a
#define ESC             0x1b
#define CTL_BS          0x7f

#define F3              0x3d
#define LEFT            0x4b
#define RIGHT           0x4d

/* Blockio constants                                                    */
#define DSKWRITE        1               /* dskxfr function parameters   */
#define DSKREAD         2

/* FAT cluster special flags                                            */
#define FREE                    0x000

#define LONG_LAST_CLUSTER       0xFFFF
#define LONG_MASK               0xFFF8
#define LONG_BAD                0xFFF0
#define LAST_CLUSTER            0x0FFF
#define MASK                    0xFF8
#define BAD                     0xFF0

/* Keyboard buffer maximum size                                         */
#ifdef LINESIZE
# undef LINESIZE
#endif
#define LINESIZE 256

/*                                                                      */
/* Data structures and unions                                           */
/*                                                                      */
/* Sector buffer structure                                              */
#define BUFFERSIZE 512
struct  buffer
{
	struct  buffer
		FAR *b_next;            /* form linked list for LRU     */
	BYTE    b_unit;                 /* disk for this buffer         */
	BYTE    b_flag;                 /* buffer flags                 */
	LONG    b_blkno;                /* block for this buffer        */
	BYTE    b_copies;               /* number of copies to write    */
	BYTE    b_offset;               /* span between copies          */
	BYTE    b_buffer[BUFFERSIZE];   /* 512 byte sectors for now     */
};

#define BFR_DIRTY       0x40            /* buffer contains valid data   */
#define BFR_VALID       0x20            /* buffer modified              */
#define BFR_DATA        0x08            /* buffer is from data area     */
#define BFR_DIR         0x04            /* buffer is from dir area      */
#define BFR_FAT         0x02            /* buffer is from fat area      */
#define BFR_BOOT        0x01            /* buffer is boot disk          */

/* NLS character table type                                             */
typedef BYTE *UPMAP;

/*                                                                      */
/* External Assembly variables                                          */
/*                                                                      */
extern struct dhdr
	FAR clk_dev,            /* Clock device driver                  */
	FAR con_dev,            /* Console device driver                */
	FAR blk_dev;            /* Block device (Disk) driver           */
extern UWORD
	ram_top,                /* How much ram in Kbytes               */
#ifdef I86
	api_sp,                 /* api stacks - for context             */
#endif
	api_ss,                 /* switching                            */
	usr_sp,                 /* user stack                           */
	usr_ss;
extern COUNT *
#ifdef MC68K
	api_sp,                 /* api stacks - for context             */
#endif
	error_tos,              /* error stack                          */
	disk_api_tos,           /* API handler stack - disk fns         */
	char_api_tos;           /* API handler stack - char fns         */
extern BYTE
	FAR last;               /* first available byte of ram          */
extern struct ClockRecord
	ClkRecord;


/*                                                                      */
/* Global variables                                                     */
/*                                                                      */
GLOBAL
	seg master_env;         /* Master environment segment           */

GLOBAL BYTE
	os_major                /* major version number                 */
#ifdef MAIN
	=  MAJOR_RELEASE,
#else
,
#endif
	os_minor                /* minor version number			*/
#ifdef MAIN
	=  MINOR_RELEASE,
#else
,
#endif
	rev_number              /* minor version number			*/
#ifdef MAIN
	=  REV_NUMBER,
#else
,
#endif
	version_flags;          /* minor version number			*/
#ifdef DEBUG
GLOBAL WORD bDumpRegs
# ifdef MAIN
= FALSE;
# else
;
# endif
GLOBAL WORD bDumpRdWrParms
# ifdef MAIN
= FALSE;
# else
;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -