📄 globals.h
字号:
/****************************************************************/
/* */
/* 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 + -