亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? config.c

?? 這是DOS操作系統(tǒng)啟動(dòng)的源代碼 里面是匯編語(yǔ)言 包括了部分的驅(qū)動(dòng)程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):

/****************************************************************/
/*                                                              */
/*                          config.c                            */
/*                            DOS-C                             */
/*                                                              */
/*                config.sys Processing Functions               */
/*                                                              */
/*                      Copyright (c) 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.                                    */
/****************************************************************/


#include "../../hdr/portab.h"
#include "globals.h"

/* $Logfile:   C:/dos-c/src/kernel/config.c_v  $ */
#ifdef VERSION_STRINGS
static BYTE *RcsId = "$Header:   C:/dos-c/src/kernel/config.c_v   1.6   22 Jan 1998  4:09:24   patv  $";
#endif

/* $Log:   C:/dos-c/src/kernel/config.c_v  $
 * 
 *    Rev 1.6   22 Jan 1998  4:09:24   patv
 * Fixed pointer problems affecting SDA
 *
 *    Rev 1.5   04 Jan 1998 23:15:18   patv
 * Changed Log for strip utility
 * 
 *    Rev 1.4   04 Jan 1998 17:26:14   patv
 * Corrected subdirectory bug
 * 
 *    Rev 1.3   16 Jan 1997 12:46:50   patv
 * pre-Release 0.92 feature additions
 * 
 *    Rev 1.1   29 May 1996 21:03:44   patv
 * bug fixes for v0.91a
 * 
 *    Rev 1.0   19 Feb 1996  3:22:16   patv
 * Added NLS, int2f and config.sys processing
 */
/* $EndLog$ */

#if 0
#define dos_open(x,y)   _open((const char *)(x),(y))
#define dos_read(x,y,z) _read((int)(x),(void *)(y),(unsigned)(z))
#define dos_close       _close
#endif

#ifdef KDB
# include <alloc.h>

# define KernelAlloc(x) adjust_far((void far *)malloc((unsigned long)(x)))
#endif

BYTE FAR *lpBase;
static BYTE FAR *lpOldLast;
static COUNT nCfgLine;
static COUNT nPass;
static BYTE szLine[256];
static BYTE szBuf[256];

int     singleStep = 0;

VOID Buffers(BYTE *pLine);
VOID Break(BYTE *pLine);
VOID Device(BYTE *pLine);
VOID Files(BYTE *pLine);
VOID Fcbs(BYTE *pLine);
VOID Lastdrive(BYTE *pLine);
VOID Country(BYTE *pLine);
VOID InitPgm(BYTE *pLine);
VOID Switchar(BYTE *pLine);
VOID CfgFailure(BYTE *pLine);
VOID Stacks(BYTE *pLine);
BYTE *GetNumArg(BYTE *pLine, COUNT *pnArg);
BYTE *GetStringArg(BYTE *pLine, BYTE *pszString);
struct dhdr FAR *linkdev(struct dhdr FAR *dhp);
UWORD 
initdev (struct dhdr FAR *dhp, BYTE FAR *cmdTail);
int     SkipLine(char *pLine);

static VOID FAR *AlignParagraph(VOID FAR *lpPtr);
#ifndef I86
# define AlignParagraph(x) (x)
#endif

#define EOF 0x1a

struct table *LookUp(struct table *p, BYTE *token);

struct table
{
	BYTE    *entry;
	BYTE    pass;
	VOID    (*func)(BYTE *pLine);
};

static struct table  commands[] =
{
	{"break",       1,      Break},
	{"buffers",     1,      Buffers},
	{"command",     1,      InitPgm},
	{"country",     1,      Country},
	{"device",      2,      Device},
	{"fcbs",        1,      Fcbs},
	{"files",       1,      Files},
	{"lastdrive",   1,      Lastdrive },
	/* rem is never executed by locking out pass                    */
	{"rem",         0,      CfgFailure},
	{"shell",       1,      InitPgm},
	{"stacks",      1,      Stacks },
	{"switchar",    1,      Switchar },
	/* default action                                               */
	{"",            -1,     CfgFailure}
};

#ifndef KDB
BYTE FAR *KernelAlloc(WORD nBytes);
#endif
BYTE *pLineStart;

/* Do first time initialization.  Store last so that we can reset it    */
/* later.                                                               */
void
PreConfig(void)
{
	/* Set pass number                                              */
	nPass = 0;

	/* Initialize the base memory pointers                          */
	lpOldLast = lpBase = AlignParagraph((BYTE FAR *)&last);

	/* Begin by initializing our system buffers                     */
	buffers = (struct buffer FAR *)
		KernelAlloc(Config.cfgBuffers * sizeof(struct buffer));
#ifdef DEBUG
	printf("Preliminary buffer allocated at 0x%04x:0x%04x\n",
		FP_SEG(buffers), FP_OFF(buffers));
#endif

	/* Initialize the file table                                    */
	f_nodes = (struct f_node FAR *)
		KernelAlloc(Config.cfgFiles * sizeof(struct f_node));
	/* sfthead = (sfttbl FAR *)&basesft; */
	/* FCBp = (sfttbl FAR *)&FcbSft; */
	FCBp = (sfttbl FAR *)
		KernelAlloc(sizeof(sftheader)
		 + Config.cfgFiles * sizeof(sft));
	sfthead = (sfttbl FAR *)
		KernelAlloc(sizeof(sftheader)
		 + Config.cfgFiles * sizeof(sft));

#ifdef DEBUG
	printf("Preliminary f_node allocated at 0x%04x:0x%04x\n",
		FP_SEG(f_nodes), FP_OFF(f_nodes));
	printf("Preliminary FCB table allocated at 0x%04x:0x%04x\n",
		FP_SEG(FCBp), FP_OFF(FCBp));
	printf("Preliminary sft table allocated at 0x%04x:0x%04x\n",
		FP_SEG(sfthead), FP_OFF(sfthead));
#endif

	/* Done.  Now initialize the MCB structure                      */
	/* This next line is 8086 and 80x86 real mode specific          */
#ifdef DEBUG
	printf("Preliminary  allocation completed: top at 0x%04x:0x%04x\n",
		FP_SEG(lpBase), FP_OFF(lpBase));
#endif

#ifdef KDB
	lpBase = malloc(4096);
	first_mcb = FP_SEG(lpBase) + ((FP_OFF(lpBase) + 0x0f) >> 4);
#else
	first_mcb = FP_SEG(lpBase) + ((FP_OFF(lpBase) + 0x0f) >> 4);
#endif

	/* We expect ram_top as Kbytes, so convert to paragraphs */
	mcb_init((mcb FAR *)(MK_FP(first_mcb, 0)),
	 (ram_top << 6) - first_mcb - 1);
	nPass = 1;
}


/* Do second pass initialization.                                       */
/* Also, run config.sys to load drivers.                                */
void
PostConfig(void)
{
	/* Set pass number                                              */
	nPass = 2;

	/* Initialize the base memory pointers from last time.          */
	lpBase = AlignParagraph(lpOldLast);

	/* Begin by initializing our system buffers                     */
	buffers = (struct buffer FAR *)
		KernelAlloc(Config.cfgBuffers * sizeof(struct buffer));
#ifdef DEBUG
	printf("Buffer allocated at 0x%04x:0x%04x\n",
		FP_SEG(buffers), FP_OFF(buffers));
#endif

	/* Initialize the file table                                    */
	f_nodes = (struct f_node FAR *)
		KernelAlloc(Config.cfgFiles * sizeof(struct f_node));
	/* sfthead = (sfttbl FAR *)&basesft; */
	/* FCBp = (sfttbl FAR *)&FcbSft; */
	FCBp = (sfttbl FAR *)
		KernelAlloc(sizeof(sftheader)
		 + Config.cfgFiles * sizeof(sft));
	sfthead = (sfttbl FAR *)
		KernelAlloc(sizeof(sftheader)
		 + Config.cfgFiles * sizeof(sft));

#ifdef DEBUG
	printf("f_node allocated at 0x%04x:0x%04x\n",
		FP_SEG(f_nodes), FP_OFF(f_nodes));
	printf("FCB table allocated at 0x%04x:0x%04x\n",
		FP_SEG(FCBp), FP_OFF(FCBp));
	printf("sft table allocated at 0x%04x:0x%04x\n",
		FP_SEG(sfthead), FP_OFF(sfthead));
#endif
	if (Config.cfgStacks)
	{
		VOID FAR *stackBase = KernelAlloc(Config.cfgStacks * Config.cfgStackSize);
		init_stacks(stackBase, Config.cfgStacks, Config.cfgStackSize);
	
#ifdef  DEBUG
		printf("Stacks allocated at %04x:%04x\n",
		    FP_SEG(stackBase), FP_OFF(stackBase));
#endif
	}
#ifdef DEBUG
	printf("Allocation completed: top at 0x%04x:0x%04x\n",
		FP_SEG(lpBase), FP_OFF(lpBase));
#endif
}

/* This code must be executed after device drivers has been loaded */
VOID    configDone(VOID)
{
	COUNT   i;

	first_mcb = FP_SEG(lpBase) + ((FP_OFF(lpBase) + 0x0f) >> 4);
	
	/* We expect ram_top as Kbytes, so convert to paragraphs */
	mcb_init((mcb FAR *)(MK_FP(first_mcb, 0)),
	 (ram_top << 6) - first_mcb - 1);
	
	/* The standard handles should be reopened here, because
	   we may have loaded new console or printer drivers in CONFIG.SYS */
}

VOID DoConfig(VOID)
{
	COUNT nFileDesc;
	COUNT nRetCode;
	BYTE    *pLine, *pTmp;
	BOOL    bEof;

	/* Check to see if we have a config.sys file.  If not, just     */
	/* exit since we don't force the user to have one.              */
	if((nFileDesc = dos_open((BYTE FAR *)"config.sys", 0)) < 0)
	{
#ifdef DEBUG
		printf("CONFIG.SYS not found\n");
#endif
		return;
	}

	/* Have one -- initialize.                                      */
	nCfgLine = 0;
	bEof = 0;
	pLine = szLine;

	/* Read each line into the buffer and then parse the line,      */
	/* do the table lookup and execute the handler for that         */
	/* function.                                                    */
	while (!bEof)
	{
		struct table *pEntry;
		UWORD bytesLeft = 0;
		
		if (pLine > szLine) bytesLeft = LINESIZE - (pLine - szLine);
		
		if (bytesLeft)
		{
		    fbcopy(pLine, szLine, LINESIZE - bytesLeft);
		    pLine = szLine + bytesLeft;
		}

		/* Read a line from config                              */
		/* Interrupt processing if read error or no bytes read  */
		if ((nRetCode = dos_read(nFileDesc, pLine, LINESIZE - bytesLeft)) <= 0) 
		    break;

		/* If the buffer was not filled completely, append a 
		   CTRL-Z character to mark where the file ends */
		
		if (nRetCode + bytesLeft < LINESIZE) 
		    szLine[nRetCode + bytesLeft] = EOF;

		/* Process the buffer, line by line */
		pLine = szLine;

		while (!bEof && *pLine != EOF)
		{
			for (pTmp = pLine; pTmp - szLine < LINESIZE; pTmp++)
			{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美男生操女生| 精品国产一区二区三区久久久蜜月| 日韩不卡一区二区| 中文字幕一区二区不卡| 日韩视频在线一区二区| 一本久久a久久精品亚洲| 激情综合网av| 亚洲第一二三四区| 国产精品免费视频网站| 欧美mv和日韩mv国产网站| 欧美午夜一区二区三区免费大片| 国产福利精品一区| 日韩电影在线免费| 亚洲第一在线综合网站| 中文字幕在线播放不卡一区| 久久久久久久综合色一本| 91精品在线麻豆| 欧美日韩亚洲综合在线| 91麻豆福利精品推荐| 国产成人aaa| 国产精品一区在线| 精品一区二区三区不卡| 日日噜噜夜夜狠狠视频欧美人| 自拍偷自拍亚洲精品播放| 欧美激情在线一区二区| 久久久亚洲国产美女国产盗摄| 欧美一区二区三区人| 精品视频一区二区三区免费| 91丨九色丨黑人外教| 不卡电影一区二区三区| 国产成人av自拍| 懂色av中文字幕一区二区三区| 美女任你摸久久| 看国产成人h片视频| 日本va欧美va瓶| 日本人妖一区二区| 三级久久三级久久| 奇米影视一区二区三区| 美女网站色91| 欧美aaaaaa午夜精品| 蜜桃精品视频在线观看| 久久福利视频一区二区| 精品在线播放午夜| 精品中文av资源站在线观看| 另类小说欧美激情| 国产一区二区毛片| 成人中文字幕电影| 91蜜桃婷婷狠狠久久综合9色| 色婷婷久久综合| 欧美美女bb生活片| 欧美一级免费大片| 精品成人在线观看| 日本一区二区视频在线| 亚洲同性gay激情无套| 亚洲综合一区二区三区| 天天操天天色综合| 精品一区二区三区欧美| 成人午夜碰碰视频| 色av一区二区| 欧美一区二区三区免费| 26uuu亚洲| 中文字幕一区二区三区乱码在线| 亚洲视频在线一区二区| 午夜视频在线观看一区二区三区| 免费的国产精品| 国产精品白丝jk黑袜喷水| 不卡的av中国片| 精品视频在线免费观看| 精品久久久久一区| 中文字幕制服丝袜成人av| 一区二区三区蜜桃网| 另类综合日韩欧美亚洲| 国产福利91精品一区二区三区| 91看片淫黄大片一级在线观看| 欧美四级电影在线观看| 久久色在线观看| 亚洲与欧洲av电影| 国产一区二区三区在线观看免费| 色综合久久六月婷婷中文字幕| 欧美乱妇一区二区三区不卡视频| 久久久久一区二区三区四区| 一区二区三区蜜桃网| 国产在线国偷精品产拍免费yy| 91香蕉国产在线观看软件| 日韩午夜小视频| 亚洲精品中文在线观看| 久久99国产精品免费网站| www.欧美日韩| 日韩美女在线视频| 亚洲私人黄色宅男| 国产精品白丝jk黑袜喷水| 欧美日韩aaa| 综合久久给合久久狠狠狠97色| 蜜臀av一区二区三区| 日本乱码高清不卡字幕| 久久久久久久国产精品影院| 午夜一区二区三区在线观看| 粉嫩aⅴ一区二区三区四区 | 香蕉久久夜色精品国产使用方法 | 色综合欧美在线| 久久综合国产精品| 五月天激情综合| 日本韩国一区二区| 欧美激情一二三区| 狠狠色综合播放一区二区| 欧美日韩中文国产| 有坂深雪av一区二区精品| 国产91精品免费| 欧美精品一区二区蜜臀亚洲| 亚洲国产sm捆绑调教视频| 99精品黄色片免费大全| 日本一区二区三区视频视频| 蜜臀精品一区二区三区在线观看| 欧美在线|欧美| 亚洲欧美偷拍三级| 成人av高清在线| 国产欧美视频一区二区| 国产一区二区网址| 精品欧美乱码久久久久久1区2区| 五月激情丁香一区二区三区| 在线视频亚洲一区| 亚洲毛片av在线| 99久久免费精品| 自拍偷在线精品自拍偷无码专区| 国产91丝袜在线观看| 国产欧美日韩三区| 国产福利精品导航| 国产日韩视频一区二区三区| 韩国一区二区在线观看| 精品捆绑美女sm三区| 毛片av一区二区三区| 日韩欧美一二三| 狠狠色伊人亚洲综合成人| 欧美mv日韩mv国产网站| 精品一区中文字幕| 国产日韩成人精品| 不卡av免费在线观看| 国产精品久久午夜夜伦鲁鲁| va亚洲va日韩不卡在线观看| 亚洲欧洲av另类| 欧美在线免费观看亚洲| 五月天亚洲婷婷| 日韩三级中文字幕| 国产伦精品一区二区三区在线观看| 精品欧美一区二区三区精品久久 | 2017欧美狠狠色| 国产激情91久久精品导航| 国产精品免费av| 91黄色免费网站| 日韩高清不卡一区| 久久综合九色综合97婷婷女人 | 一本在线高清不卡dvd| 一区二区理论电影在线观看| 欧美日韩国产123区| 免费观看一级特黄欧美大片| 精品久久久久久久一区二区蜜臀| 国产精品综合一区二区三区| 国产精品久久一级| 欧美性色综合网| 九色|91porny| 亚洲天堂福利av| 日韩一区二区三区三四区视频在线观看| 精油按摩中文字幕久久| 国产午夜亚洲精品理论片色戒| 91啪九色porn原创视频在线观看| 午夜久久久久久| 国产人妖乱国产精品人妖| 91丨九色丨国产丨porny| 日韩精品亚洲专区| 欧美激情一区二区三区在线| 在线观看一区二区视频| 精品一区二区三区在线播放| **欧美大码日韩| 日韩欧美国产三级电影视频| 成人精品免费网站| 三级一区在线视频先锋| 国产午夜亚洲精品羞羞网站| 在线免费不卡电影| 国产精品中文字幕欧美| 亚洲小说春色综合另类电影| 久久亚洲私人国产精品va媚药| 色综合网色综合| 精品午夜久久福利影院| 一区二区三区四区在线播放| 日韩精品一区二区三区四区视频 | 午夜精品影院在线观看| 国产日韩精品一区二区三区 | 韩国三级在线一区| 亚洲男同1069视频| 久久久久久久电影| 在线观看91av| 色婷婷久久久久swag精品 | 国产99久久久精品| 美女高潮久久久| 亚洲精品欧美激情| 久久精品免费在线观看| 91精品国产综合久久香蕉麻豆 | 日本韩国一区二区| 成人黄色综合网站| 国产传媒欧美日韩成人|