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

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

?? cmd.c

?? 這是DOS操作系統(tǒng)啟動(dòng)的源代碼 里面是匯編語言 包括了部分的驅(qū)動(dòng)程序
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/****************************************************************/
/*								*/
/*			       cmd.c				*/
/*								*/
/*		     command.com Top Level Driver 		*/
/*								*/
/*			  August 9, 1991			*/
/*								*/
/*		     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/command/cmd.c_v  $ */

/* $Log:   C:/dos-c/src/command/cmd.c_v  $ 
 * 
 *    Rev 1.4   31 Jan 1998  8:12:30   patv
 * Put preprocessor switch for version strings and changed log strings
 * 
 *    Rev 1.3   29 Aug 1996 13:07:04   patv
 * Bug fixes for v0.91b
 * 
 *    Rev 1.2   19 Feb 1996  3:18:54   patv
 * Added NLS, int2f and config.sys processing
 * 
 *    Rev 1.1   01 Sep 1995 18:04:34   patv
 * First GPL release.
 * 
 *    Rev 1.0   02 Jul 1995 10:01:48   patv
 * Initial revision.
 */
/* $EndLog$ */

#include <ctype.h>
#include "../../hdr/portab.h"
#define MAIN
#include "globals.h"
#include "proto.h"

#ifdef VERSION_STRINGS
static BYTE *RcsId = "$Header:   C:/dos-c/src/command/cmd.c_v   1.4   31 Jan 1998  8:12:30   patv  $";
#endif

#ifdef PROTO
struct table
{
	BYTE	*entry;
	BOOL	(*func)(COUNT, BYTE **);
};
#else
struct table
{
	BYTE	*entry;
	BOOL	(*func)();
};
#endif

#ifdef PROTO
struct table *lookup(struct table *, BYTE *);
VOID err_report(COUNT);
VOID put_prompt(BYTE *);
VOID Redirect(BYTE *, BYTE *, BYTE *, BOOL *);
VOID RestoreIO(COUNT, COUNT);
#else
struct table *lookup();
VOID err_report();
VOID put_prompt();
VOID Redirect();
VOID RestoreIO();
#endif

BOOL	ExecCmd();
BOOL	prompt();
BOOL	cmd_path();
BOOL	cmd_exit();
BOOL	type();
BOOL	cd();
BOOL	copy();
BOOL	del();
BOOL	ren();
BOOL	mkdir();
BOOL	rmdir();
BOOL	cmd_time();
BOOL	cmd_date();
BOOL	verify();
BOOL	ver();
BOOL	cmd_break();
BOOL 	batch();
BOOL	label_bat();
BOOL	pause_bat();
BOOL	call_bat();
BOOL	echo_bat();
BOOL	echo_dot_bat();
BOOL	for_bat();
BOOL	if_bat();
BOOL	rem_bat();
BOOL	shift_bat();
BOOL	goto_bat();
BOOL	set_bat();

/* External cmmands							*/

struct table  commands[] =
{
	{"break",	cmd_break},
	{"copy",	copy},
	{"cd",		cd},
	{"chdir",	cd},
	{"date",	cmd_date},
	{"del",		del},
	{"dir",		dir},
	{"erase",	del},
	{"exit",	cmd_exit},
	{"mkdir",	mkdir},
	{"md",		mkdir},
	{"path",	cmd_path},
	{"prompt",	prompt},
	{"ren",		ren},
	{"rmdir",	rmdir},
	{"rd",		rmdir},
	{"time",	cmd_time},
	{"type",	type},
	{"verify",	verify},
	{"ver",		ver},
	{"if",		if_bat},
	{"label",	label_bat},
	{"pause",	pause_bat},
	{"call",	call_bat},
	{"echo",	echo_bat},
	{"echo.",	echo_dot_bat},
	{"echo+",	echo_dot_bat},
	{"echo\"",	echo_dot_bat},
	{"echo/",	echo_dot_bat},
	{"echo[",	echo_dot_bat},
	{"echo]",	echo_dot_bat},
	{"echo:",	echo_dot_bat},
	{"for",		for_bat},
	{"rem",		rem_bat},
	{"shift",	shift_bat},
	{"goto",	goto_bat},
	{"set",		set_bat},
	{"",		ExecCmd}
};

static COUNT argc;
static BYTE *argv[NPARAMS];

static BOOL pflag, bootup = FALSE;

VOID main()
{
	COUNT nread;
	BOOL bool_FLAG = FALSE;
	BOOL cflag;
	BYTE FAR *cmd_tail;
	BYTE *p_ptr;
	extern UWORD _psp;
	psp FAR *p;
	COUNT driveno = -1;
	BYTE pattern[MAX_CMDLINE] = "";
	BYTE path[MAX_CMDLINE] = "", esize[MAX_CMDLINE] = "";

	/* Initialize the interpreter					*/
	p = MK_FP(_psp, 0);
	switchchar = '/';
	batch_FLAG = FALSE;
	argv[0] = args[0];
	argv[1] = (BYTE *)0;
	args[0][0] = '\0';
	*tail = '\0';
	lpEnviron = (BYTE FAR *)MK_FP(p -> ps_environ, 0);
	cmd_tail = MK_FP(_psp, 0x81);
	fstrncpy((BYTE FAR *)tail, cmd_tail, 0x7f);

	pflag = cflag = FALSE;
	dosopt("$d$p*[e:pc]+", (BYTE FAR *)tail,
		&driveno, path, pattern, esize, &pflag, &cflag);

	/* Get the passed-in Environment size and make certain we	*/
	/* allocate enough space					*/
	EnvSize = EnvSizeUp();
	if(EnvSize < ENV_DEFAULT)
		EnvSize = ENV_DEFAULT;
	if(*esize != '\0')
	{
		COUNT size = atoi(esize);

		bool_FLAG = EnvAlloc(size);
		EnvSize = size;
	}
	else
		bool_FLAG = EnvAlloc(EnvSize);

	if(!bool_FLAG)
		error_message(OUT_ENV_SPACE);

	/* Check what PROMPT is set in env to over ride default 	*/
	p_ptr = EnvLookup("PROMPT");
	if(p_ptr != (BYTE *)0)
		scopy(p_ptr, prompt_string);
	else
		scopy(dflt_pr_string, prompt_string);

	/* Check what PATH is set in env to over ride default 		*/
	p_ptr = EnvLookup("PATH");
	if(p_ptr != (BYTE *)0)
		scopy(p_ptr, path);
	else
		scopy(dflt_path_string, path);
	if(!cflag)
	{
		if(pflag)
		{
			/* Special MS-DOS compatability initialization,	*/
			/* all command shells terminate onto		*/
			/* themselves, but we always terminate at the	*/
			/* root shell. If anyone complains, we'll	*/
			/* change it.					*/
#ifndef DEBUG
			p -> ps_parent = _psp;
#endif

			/* Try to exec autoexec.bat			*/
			bootup = TRUE;
			*tail = '\0';
			if(!batch(".\\autoexec.bat", tail))
			{
				*tail = '\0';
				cmd_date(1, argv);
				cmd_time(1, argv);
				bootup = FALSE;
			}
		}
		else
		{
			/* Announce our version				*/
			printf(ANNOUNCE, copyright);
#ifdef SHWR
			printf("**** Shareware version ****\nPlease register your copy.\n");
#else
			printf("\n\n");
#endif
		}

		FOREVER
		{
			default_drive = DosGetDrive();
			put_prompt(prompt_string);
			if((nread = DosRead(STDIN, (BYTE FAR *)cmd_line, MAX_CMDLINE)) < 0)
				continue;
			do_command(nread);
		}
	}
	else
	{
		BYTE FAR *p;

		default_drive = DosGetDrive();
		for(p = cmd_tail; *p != '\r'; p++)
		{
			if(*p == '/' && (*(p + 1) == 'c' || *(p + 1) == 'C'))
				break;
		}
		p += 2;
		fstrncpy((BYTE FAR *)cmd_line, p, 0x7f);
		for(nread = 0; *p != '\r'; nread++, p++)
			;
		++nread;
		do_command(nread);
	}
}


VOID Redirect(cmd_line, Input, Output, AppendMode)
BYTE *cmd_line, *Input, *Output;
BOOL *AppendMode;
{
	BYTE LocalBuffer[MAX_CMDLINE], *lp, *dp = cmd_line;

	/* First - create an image, since we'll be copying back into	*/
	/* the original buffer.						*/
	strcpy(LocalBuffer, cmd_line);

	/* Next, start looking for redirect symbols.			*/
	lp = skipwh(LocalBuffer);
	while(*lp != '\0')
	{
		switch(*lp)
		{
		case '<':
			lp = scan(++lp, Input);
			break;

		case '>':
			if(*(lp + 1) == '>')
			{
				++lp;
				*AppendMode = TRUE;
			}
			lp = scan(++lp, Output);
			break;

		default:
			*dp++ = *lp++;
			break;
		}
	}
	*dp = '\0';
}


VOID do_command(nread)
COUNT nread;
{
	REG struct table *p;
	REG BYTE *lp;
	COUNT index = 0;
	BYTE Input[MAX_CMDLINE], Output[MAX_CMDLINE];
	BOOL AppendMode;
	COUNT OldStdin = -1, OldStdout = -1, ErrorCode;
	BOOL IORedirected = FALSE;

	if(nread <= 0)
		return;
	cmd_line[nread] = '\0';

	/* Pre-scan the command line and look for any re-directs	*/
	*Input = *Output = '\0';
	AppendMode = FALSE;
	Redirect(cmd_line, Input, Output, &AppendMode);
	IORedirected = (*Input != '\0' || *Output != '\0');
	if(*Input != '\0')
	{
		COUNT Handle;

		if(!DosDupHandle(STDIN, (COUNT FAR *)&OldStdin, (COUNT FAR *)&ErrorCode))
		{
			RestoreIO(OldStdin, -1);
			error_message(INTERNAL_ERR);
			return;
		}

		Handle = DosOpen((BYTE FAR *)Input, O_RDWR);
		if((Handle < 0) || (!DosForceDupHandle(Handle, STDIN, (COUNT FAR *)&ErrorCode)))
		{
			RestoreIO(OldStdin, -1);
			error_message(INTERNAL_ERR);
			return;
		}
		DosClose(Handle);
	}

	if(*Output != '\0')
	{
		COUNT Handle;

		if(!DosDupHandle(STDOUT, (COUNT FAR *)&OldStdout, (COUNT FAR *)&ErrorCode))
		{
			RestoreIO(-1, OldStdout);
			error_message(INTERNAL_ERR);
			return;
		}

		if(AppendMode)
		{
			if((Handle = DosOpen((BYTE FAR *)Output, O_RDWR)) < 0)
			{
				RestoreIO(-1, OldStdout);
				error_message(INTERNAL_ERR);
				return;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美巨大另类极品videosbest| 色丁香久综合在线久综合在线观看| 亚洲国产一区在线观看| 一区二区三区小说| 亚洲永久免费av| 婷婷综合在线观看| 久久97超碰国产精品超碰| 激情欧美一区二区| 成年人网站91| 91精品久久久久久久91蜜桃 | 在线观看日韩电影| 日韩一级视频免费观看在线| 日本一区二区三区在线观看| 亚洲丶国产丶欧美一区二区三区| 日本午夜一本久久久综合| 色婷婷久久久亚洲一区二区三区 | 亚洲国产欧美日韩另类综合| 日本aⅴ免费视频一区二区三区| 国内精品伊人久久久久av一坑| 91麻豆国产自产在线观看| 日韩美女在线视频 | 97久久超碰国产精品电影| 欧美日韩久久久一区| 中文字幕日韩av资源站| 日本欧美在线看| 日本精品一级二级| 国产女人aaa级久久久级| 丝袜亚洲另类丝袜在线| 欧美亚洲国产bt| 亚洲精品视频观看| 高清久久久久久| 国产区在线观看成人精品| 麻豆久久一区二区| 日韩一区二区电影| 日韩成人午夜电影| 欧美精品乱码久久久久久按摩| 亚洲综合免费观看高清在线观看| 成人aaaa免费全部观看| 国产婷婷色一区二区三区| 国产专区欧美精品| 亚洲一区影音先锋| 日韩三级av在线播放| 五月天一区二区三区| 色系网站成人免费| 一区二区三区四区亚洲| 欧美无人高清视频在线观看| 香蕉成人伊视频在线观看| 日韩亚洲电影在线| 成人av在线资源网| 亚洲免费观看在线视频| 欧美在线高清视频| 国精产品一区一区三区mba视频| 久久色.com| 色婷婷亚洲精品| 91网页版在线| 加勒比av一区二区| 亚洲一卡二卡三卡四卡| 91精品中文字幕一区二区三区| 国内成人免费视频| 一区二区三区美女视频| 久久久欧美精品sm网站| 欧美日韩国产免费| 波多野结衣中文一区| 视频在线观看一区| 亚洲主播在线播放| 日本一区二区三级电影在线观看 | 午夜精品久久久| 国产精品盗摄一区二区三区| 欧美电影精品一区二区| 欧美伊人精品成人久久综合97 | 亚洲欧美激情一区二区| 国产亚洲欧美日韩日本| 欧美一级日韩免费不卡| 日本高清不卡一区| gogo大胆日本视频一区| 国产91在线看| 国产精品一卡二卡在线观看| 蜜臀av国产精品久久久久| 三级在线观看一区二区| 亚洲一区二区综合| 亚洲第一二三四区| 一个色综合网站| 一区二区三区丝袜| 天天影视涩香欲综合网| 日韩在线卡一卡二| 久久国产精品99精品国产| 久久精品国产亚洲高清剧情介绍| 日韩精彩视频在线观看| 另类人妖一区二区av| 国产精品自在在线| 99久久国产综合精品女不卡| 色8久久精品久久久久久蜜| 在线视频国内自拍亚洲视频| 欧美日产在线观看| 国产欧美一区二区三区沐欲| 中文字幕一区二区视频| 亚洲国产日韩a在线播放性色| 亚洲高清免费视频| 国产在线精品国自产拍免费| 国产91精品久久久久久久网曝门| 成人精品国产免费网站| 欧美日韩免费视频| 日韩欧美的一区| 亚洲三级久久久| 成人黄色网址在线观看| 欧美日韩免费在线视频| 国产午夜精品理论片a级大结局 | 在线欧美小视频| 欧美韩国日本不卡| 日韩激情中文字幕| 欧美色图天堂网| 精品国产乱码久久久久久久久 | 色天使色偷偷av一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲精品成人悠悠色影视| 国产成人精品网址| 精品国产在天天线2019| 亚洲精品国产精品乱码不99| 国产乱人伦偷精品视频不卡| 91麻豆精品国产91久久久| 亚洲第一在线综合网站| 99精品一区二区| 亚洲丝袜美腿综合| 色悠悠久久综合| 亚洲精品一二三区| 色综合色综合色综合| 一区二区视频在线| 欧洲一区二区av| 午夜不卡在线视频| 91精品久久久久久久久99蜜臂| 日韩高清一区二区| 欧美电影免费观看高清完整版在线观看| 视频一区二区三区中文字幕| 日韩欧美国产综合一区| 国产不卡免费视频| 亚洲丝袜精品丝袜在线| 欧美吞精做爰啪啪高潮| 久久99热这里只有精品| 国产人久久人人人人爽| 色综合天天综合| 日韩 欧美一区二区三区| 亚洲精品在线三区| 91在线观看视频| 老司机午夜精品| 亚洲免费观看高清完整版在线| 欧美乱妇15p| 99久久精品国产观看| 麻豆国产精品777777在线| 日韩在线一区二区三区| 中文字幕在线不卡一区| 91麻豆精品国产91久久久久| 高清不卡一区二区在线| 日韩激情一二三区| 日韩美女视频19| 久久精品在线观看| 7777精品伊人久久久大香线蕉 | 日韩一区二区电影| 欧美性受极品xxxx喷水| 国产精品资源在线看| 午夜精品在线看| 亚洲美女偷拍久久| 欧美国产精品中文字幕| 欧美精品一区二区蜜臀亚洲| 欧美日本韩国一区| 欧美高清视频一二三区| 色屁屁一区二区| 色呦呦国产精品| 欧美日韩一级片网站| 色综合色综合色综合| 色综合夜色一区| 欧美日韩专区在线| 欧美性受xxxx| 欧美性大战久久久久久久| 欧洲色大大久久| 欧美日韩欧美一区二区| 欧美亚洲动漫精品| 91精品国产一区二区三区香蕉| 欧美日韩一区二区三区在线| 欧美精品少妇一区二区三区| 91精品福利在线一区二区三区| 91精品国产一区二区三区| 欧美一区二区三区四区五区| 日韩欧美亚洲国产精品字幕久久久 | 欧美日韩国产首页在线观看| 欧美日韩的一区二区| 日韩女优av电影| 国产蜜臀av在线一区二区三区| 亚洲一区二区欧美日韩| 日韩av午夜在线观看| 国产91丝袜在线观看| 欧美视频在线播放| 日韩午夜电影av| 亚洲欧洲国产日韩| 国产麻豆精品久久一二三| 97久久超碰国产精品电影| 日韩一区二区三免费高清| 亚洲色图20p| jlzzjlzz亚洲女人18| 欧美久久久影院| 有坂深雪av一区二区精品|