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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? batch.c

?? 一個dos操作系統DRDOS的源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*rbf*/
#if 1
BYTE	prmptcpbuf[MAX_ENVLEN];
REG BYTE *prmptcp = prmptcpbuf;
#endif

	if(!echoflg)			/* Return if No Echo	*/
	    return;



#if defined(CPM)
	cp = heap();
	strcpy(cp, "[CPM] $u$p$g");
#else
	if(env_scan(msg_prmeq, cp = (BYTE *)heap()))
	    strcpy(cp, DEFAULT_PROMPT);
#endif

	if(prompt_flg)			/* If the previous Prompt display   */
	    strcpy(cp, "$n$g");		/* terminated due to a Critical	    */
					/* then just display the default    */
	prompt_flg = TRUE;		/* drive.			    */

#if STACK
	cp = stack(strlen(cp) + 1);
#else
	cp = &cpbuf[0];
#endif
	strcpy(cp, heap());

	while((c = *cp++) != 0) {	/* get next character */
	    if (c != '$')		/* if not '$', print as is */
		putc (c);
	    else {
		c = *cp++;
		switch(tolower(c)) {	/* else get next character */
		 case '\0':		/* Treat "$\0" as an invalid 	    */
		     cp--;		/* prompt command sequence	    */
		     break;
		 case 't':		/* print current time */
		    disp_systime();
		    break;
		 case 'd':		/* print current date */
		    disp_sysdate();
		    break;
		 case 'p':		/* print current path */
		    if (ms_x_curdir(drive+1, buf) < 0)
		        printf(MSG_DRV_INVALID);
		    else
		        printf("%c:%s%s", drive+'A', pathchar, buf);
		    break;
		 case 'v':		/* print version number */
		    cmd_ver("");
		    break;
		 case 'n':		/* print default drive */
		    putc((BYTE) drive+'A');
		    break;
		 case 'g':		/* print ">" */
		    putc ('>');
		    break;
		 case 'l':		/* print "<" */
		    putc ('<');
		    break;
		 case 'b':		/* print "|" */
		    putc ('|');
		    break;
		 case 'q':		/* print "=" */
		    putc ('=');
		    break;
		 case '_':		/* print CR,LF */
		    crlf();
		    break;
		 case 'h':		/* print backspace, space, backspace */
		    printf("\b \b");
		    break;
		 case 'e':		/* print ESC character */
		    putc ('\33');
		    break;
/*RG-01 */ 

#if !defined(NOXBATCH)
#if !defined (NOSECURITY) 
#if defined(CDOSTMP) || defined(CDOS)
		 case 'm':		/* print mail status */
                if (login_enabled()) {
                    if(chk_mail()) { /* we have mail */
	                if(env_scan("MAIL=", heap())) 
                            printf(MSG_UHAVEMAIL);
                        else
                            printf("%s",heap());
                    }
                }
		    break;

		 case 'u':		/* Display the User Name */
                if (login_enabled()) {
                    if((aschextobin(user_info.userid)!=get_user_on_station())||(strlen(user_info.userid)==0)) {
	                if(get_user_info(get_user_on_station())!=0) 
		                printf("#%04X",get_user_on_station());
                        else
		                printf("%s",user_info.loginname);
                    }
                    else
		            printf("%s",user_info.loginname);
                }
                break;
#endif
#endif
#endif /*NOXBATCH*/
/*RG-01-end*/
#if defined(CPM)
		 case 'u':		/* Display the User Number */
		    printf("%d", user);
		    break;
#endif
#if defined(DOSPLUS)
		 case 'u':
		    if (!env_scan("LOGINNAME=",heap()))
		        printf("%s",heap());
		    break;
#endif		    
		 case '$':
		    putc ('$'); 	/* print single '$' */
		    break;
		 case 'x':
		    if ((allow_pexec)&&(!batchflg)) prompt_exec();
		    break;
		 default:		/* Otherwise the character */
		    break;
		}
	    }
	}

	prompt_flg = FALSE;		/* Prompt display completed OK	*/
}


#if !defined(CDOSTMP)
/* The following functions are called by the int2e_handler function in
 * COM.C. If a program is run from a batch file and calls INT 2E to
 * execute a new batch file the original batch file must NOT be terminated.
 * Therefore batch and batchflg must be saved, set to zero, and then
 * restored when INT 2E returns. - EJH 
 */
 
GLOBAL VOID int2e_start()
{
	batchflg_save = batchflg;
	batchflg = 0;
	batch_save = batch;
	echoflg_save = echoflg;
	echoflg = ECHO_ON;
}

GLOBAL VOID int2e_finish()
{
	batchflg = batchflg_save;
	batch = batch_save;
	echoflg = echoflg_save;
}

#endif

#if defined(CDOS)
MLOCAL VOID map_user_page(UWORD window_page, UWORD physical_page)
{
UWORD pblk[3];
	pblk[0] = window_page;
	pblk[1] = physical_page;
	pblk[2] = 0;
	bdos(181, pblk);
}


MLOCAL BYTE FAR * map_pd_mem(UWORD ppd, UWORD wp, UWORD seg, UWORD offset)
{
/* Map memory for another process into our memory space so we examine it */
UWORD base_seg;
UWORD page;
PD FAR * pdptr;
UWORD sysdat;
UWORD mptbl;
UWORD FAR * ptr;
UWORD mp_off;
UWORD i;
MPAD FAR * mp;


	sysdat = FP_SEG(pd);
	ptr = MK_FP(sysdat, 0xc8);
/* DEBUG */
	if (*ptr == 0) /* for DEBUG under XM assume non-banked system */
	    return(MK_FP(seg, offset));
/* DEBUG */
	ptr = MK_FP(sysdat, *ptr + 8);
	mptbl = *ptr;

	/* get segment of 4k page to map */
	base_seg = (seg + (offset+15)/16) & 0xff00;


	/* now find physical page to map */

	pdptr = (PD FAR *) MK_FP(sysdat, ppd);
	
	for (mp_off = pdptr->P_MPAR; mp_off !=0;) {
	    mp = MK_FP(sysdat, mp_off);
	    mp_off = mp->link;
	    if ((base_seg >= mp->start) && 
		(base_seg < (mp->start + mp->length))) {
		page = mp->xios;
		for (i = 0; i < ((base_seg - mp->start)/1024); i++){
		    ptr = MK_FP(mptbl, page*2);
		    page = *ptr;
		}
		page = 4*page + (((base_seg - mp->start)/0x0100) & 3);
		map_user_page(wp, page);
		return(MK_FP(wp*0x0100,(seg*16+offset) & 0x0fff));
	    }
	}

	/* not found in mpad's - must be non-banked address */
	return(MK_FP(seg, offset));
}

MLOCAL VOID ip_poke(UWORD ppd, UWORD wp, UWORD seg, UWORD offset, UBYTE val)
{
UBYTE FAR *ptr;

	ptr = map_pd_mem(ppd, wp, seg, offset);
	*ptr = val;
}

MLOCAL UBYTE ip_peek(UWORD ppd, UWORD wp, UWORD seg, UWORD offset)
{
UBYTE FAR *ptr;

	ptr = map_pd_mem(ppd, wp, seg, offset);
	return(*ptr);
}

MLOCAL UWORD ip_peek_word(UWORD ppd, UWORD wp, UWORD seg, UWORD offset)
{
	return (ip_peek(ppd, wp, seg, offset) + 
			256*ip_peek(ppd, wp, seg, offset+1));
}

GLOBAL VOID inherit_TMP_state(VOID)
/* inherit batch files */
/* NB. This is bodged - we don't inherit FOR state, or redirection */
{
PD FAR *parent;
UWORD batch_seg;
UWORD tmp_mpad;
UWORD mp_off;
MPAD FAR * mp;
VOID FAR *window;
UWORD win_page;
UWORD i;

	parent = (PD FAR *) MK_FP(FP_SEG(pd), pd->P_PARENT);

	/* verify our parent is a Tmp, forget if it isn't */
	if ((parent->P_NAME[0] != 'T') ||
	    (parent->P_NAME[1] != 'm') ||
	    (parent->P_NAME[2] != 'p'))
	    return;

	/* allocate a 4k aligned window to bank data into */
	i = 2*4096/16;
	mem_alloc(&window, &i, i, i);
	if (i==0)
	    return;
	win_page = (FP_SEG(window) + 0x0100) / 0x100;

	batch_seg = ip_peek_word(pd->P_PARENT, win_page,
		parent->P_PSP, TmpPspBatchSeg);

	/* do we have any batch files to inherit */
	if (batch_seg) {

            echoflg = (BOOLEAN)ip_peek_word(pd->P_PARENT, win_page,
		ip_peek_word(pd->P_PARENT, win_page,
		    parent->P_PSP, TmpPspDataSeg),
		ip_peek_word(pd->P_PARENT, win_page,
		    parent->P_PSP, TmpPspEchoFlgPtr));

		/* recover Tmp's hidden mpads */

	    tmp_mpad = ip_peek_word(pd->P_PARENT, win_page,
		parent->P_PSP, TmpPspMpad);

	    for (mp_off = parent->P_MPAR; mp_off != 0;) {
		mp  = MK_FP(FP_SEG(parent), parent->P_MPAR);
		mp_off  = mp->link;
	    }	
	
	    mp->link = tmp_mpad;
	    inherit_batch_file(pd->P_PARENT, win_page, batch_seg);
	    mp->link = 0;		/* unlink again */
	}
	map_user_page(0, 0);	/* force user page to be unmapped */
	bdos(141,0);		/* dispatch to re-map TPA memory */
	mem_free(&window);	/* free the window */
}

MLOCAL VOID inherit_batch_file(UWORD ppd, UWORD win_page, UWORD batch_seg)
{
UBYTE FAR * dst;
BCONTROL FAR *save0;
FCONTROL *save1;
BYTE	 *save2;
WORD	 save3;
UWORD	i;
UWORD	data_seg;
PD FAR *parent;



	/* if we are in a nested batch file, inherit older batch file first */
	i = ip_peek_word(ppd, win_page, batch_seg, 2);

	if (i != 0)
	    inherit_batch_file( ppd, win_page, i);

	batch_new();			/* new incarnation of batch	*/

	save0 = batch->bcontrol; save1 = batch->fcontrol;
	save2 = batch->heap_start; save3 = batch->heap_size;

	dst = (BYTE FAR *) batch;		/* copy batch structure */
	for (i=0; i<sizeof(BCONTROL); i++)	/* from parental PD */
	    dst[i] = ip_peek(ppd, win_page, batch_seg, i);

	/* now terminate parental batch processing by poking EOF */
	ip_poke(ppd, win_page,
		batch_seg, (UWORD) &batch->eof - (UWORD) &batch->bcontrol,
		(UBYTE) TRUE);

	/*
	 *	Copy the invoking command and the individual elements 
	 *	of the command line into a buffer ready for processing
	 */

	parent = (PD FAR *) MK_FP(FP_SEG(pd), pd->P_PARENT);
	data_seg = ip_peek_word(pd->P_PARENT, win_page,
		parent->P_PSP, TmpPspDataSeg);

	i = (UWORD) batch->batcmd;
	batch->batcmd = (BYTE *)heap();	/* Initialize Parameter Buffer	*/

	while (ip_peek_word(ppd, win_page, data_seg, i) != 0)
		*(BYTE *)heap_get(1) = ip_peek(ppd, win_page, data_seg, i++);

	*(WORD *)heap_get(2) = 0;	/* Double NULL is a terminator	 */
					/* for command line params	 */

	batch->bcontrol = save0; batch->fcontrol = save1;
	batch->heap_start = save2; batch->heap_size = save3;

	batchflg++;			/* increment batch flag		*/

	crlfflg  = YES;			/* print CR/LF after this  */
}
#endif


EXTERN	N_CMD	novell_ext_list[];

EXTERN BYTE FAR * CDECL farptr(BYTE *);
EXTERN BYTE FAR * CDECL cgroupptr(BYTE *);

EXTERN BOOLEAN CDECL call_novell(BYTE *, BYTE *, WORD);
EXTERN BOOLEAN CDECL nov_station(WORD *);
EXTERN WORD    CDECL nov_connection();


MLOCAL	BOOLEAN novell_extension(src,dst)
BYTE	*src;
BYTE	*dst;
/*
 * Check if src string is a novell string to be expanded. eg login_name.
 * if so, put expansion in dst.
 */
{
	N_CMD FAR *n_cmd_p;
	BYTE  FAR *cpf; 
	WORD	i;

	for (i=0;src[i] && src[i]!='=';i++);
	src[i] = 0;

	n_cmd_p = (N_CMD FAR *)farptr((BYTE *)&novell_ext_list[0]);

	while(n_cmd_p->string) {

	    cpf = cgroupptr(n_cmd_p->string);

	    for(i=0; (cpf[i]==src[i]) && src[i]; i++);

	    if(cpf[i]==src[i]) {
	        (*n_cmd_p->func)(dst);
	    	return(0);
	    }
	    
	    n_cmd_p++;
	}
	return(1);
}



GLOBAL	VOID	CDECL get_login_name(dst)
BYTE	*dst;
{
	struct s_nov_e346_in {
	    WORD	len;
	    BYTE	code;
	} nov_e346_in;
	struct s_nov_e346_out {
	    WORD	len;
	    BYTE	level;
	    LONG	id;
	} nov_e346_out;
	struct s_nov_e336_in {
	    WORD	len;
	    BYTE	code;
	    LONG	id;
	} nov_e336_in;
	struct s_nov_e336_out {
	    WORD	len;
	    LONG	id;
	    WORD	type;
	    BYTE	name[48];
	} nov_e336_out;
	
	nov_e346_in.len  = 1;
	nov_e346_in.code = 0x46;
	nov_e346_out.len = 5;
	nov_e346_out.id = -1L;
	call_novell((BYTE *)&nov_e346_in, (BYTE *)&nov_e346_out, 0xE3);
	
	if (nov_e346_out.id == -1L) {
	    *dst = 0;
	    return;
	}
	
	nov_e336_in.len  = 5;
	nov_e336_in.code = 0x36;
	nov_e336_in.id   = nov_e346_out.id;
	nov_e336_out.len = 54;
	call_novell((BYTE *)&nov_e336_in, (BYTE *)&nov_e336_out, 0xE3);

	strcpy(dst,nov_e336_out.name);

}

GLOBAL	VOID CDECL get_pstation(dst)
BYTE	*dst;
{
	WOR

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区在线播放| 成人的网站免费观看| 久99久精品视频免费观看| 国产麻豆午夜三级精品| 成人永久看片免费视频天堂| 99久久99久久久精品齐齐| 色综合激情久久| 91麻豆精品国产91久久久久久久久| 日韩视频一区二区在线观看| 国产色爱av资源综合区| 亚洲欧美日韩中文播放| 亚洲第一福利视频在线| 国产一区二区三区在线观看精品| av在线不卡观看免费观看| 欧美蜜桃一区二区三区| 久久精品视频网| 亚洲第一搞黄网站| 懂色av一区二区三区免费观看 | 精品久久久久久无| 国产精品久久久久天堂| 日韩综合小视频| 成人app在线观看| 6080日韩午夜伦伦午夜伦| 国产精品色一区二区三区| 天堂va蜜桃一区二区三区漫画版 | 国产亚洲午夜高清国产拍精品 | 欧美欧美欧美欧美首页| 亚洲国产岛国毛片在线| 亚洲高清免费一级二级三级| 激情欧美一区二区| 欧美日韩一级二级三级| 国产精品情趣视频| 捆绑调教美女网站视频一区| 91美女视频网站| 久久久久久久综合日本| 午夜精品一区二区三区免费视频 | 久久国产精品72免费观看| 亚洲大尺度视频在线观看| 国产精选一区二区三区| 欧美网站一区二区| 亚洲国产精品v| 美女诱惑一区二区| 日本韩国欧美一区| 国产精品欧美精品| 狠狠色丁香婷综合久久| 欧美精三区欧美精三区| 日韩码欧中文字| 97se亚洲国产综合自在线| 久久国产精品99精品国产| 国产精品正在播放| 欧美一区二区国产| 一区二区三区欧美在线观看| eeuss鲁片一区二区三区 | 日本中文在线一区| 欧美午夜影院一区| 一区二区三区在线免费播放| 成人少妇影院yyyy| 久久综合久久久久88| 日本不卡视频在线观看| 717成人午夜免费福利电影| 一区二区三区不卡在线观看 | 国产精品久久久久久久久免费丝袜| 久久电影网站中文字幕| 欧美一级夜夜爽| 婷婷六月综合网| 欧美日韩国产精品自在自线| 一级做a爱片久久| 色呦呦网站一区| 亚洲欧洲日韩在线| 99久久精品一区二区| 欧美极品xxx| 成人一级片在线观看| 国产视频一区二区在线| 成人美女在线观看| 国产精品久久久久久久久久久免费看 | 成人av在线影院| 中文子幕无线码一区tr| 成人性生交大片免费看中文| 日本一区二区三区电影| 欧美丝袜丝交足nylons图片| 亚洲精品成人少妇| 91黄视频在线观看| 亚洲mv在线观看| 8x福利精品第一导航| 美女网站视频久久| 欧美综合色免费| 蜜臀久久99精品久久久久宅男| 亚洲成人精品在线观看| 亚洲情趣在线观看| 欧美极品xxx| 亚洲国产视频直播| 色婷婷国产精品久久包臀| 亚洲韩国精品一区| 51久久夜色精品国产麻豆| 日韩电影在线观看一区| 欧美一区二区三区四区高清| 久久99久久精品| 国产精品欧美一区喷水| 色偷偷久久一区二区三区| 亚洲国产精品一区二区www | 亚洲欧洲综合另类在线| 欧美性猛片xxxx免费看久爱| 日韩精品一二三| 久久久蜜桃精品| 一本大道久久a久久精二百| 日本成人在线视频网站| 久久久精品国产免费观看同学| bt7086福利一区国产| 亚洲国产精品一区二区久久恐怖片| 欧美变态口味重另类| 99亚偷拍自图区亚洲| 五月天婷婷综合| 久久久久久久久久久黄色| 色综合中文字幕国产| 日本午夜精品视频在线观看 | 99久久综合精品| 视频一区二区中文字幕| 国产亚洲精品超碰| 欧美中文字幕一区| 国产一区二区免费看| 亚洲欧美日韩久久| 欧美日韩成人一区二区| 国产东北露脸精品视频| 亚洲综合免费观看高清在线观看| 69堂精品视频| 国产成人免费9x9x人网站视频| 亚洲综合色噜噜狠狠| 精品国产免费视频| 99精品一区二区| 亚洲美女屁股眼交3| 欧美一区二区私人影院日本| 国产一区二区精品久久| 国产精品久久久久7777按摩| 欧美日韩三级视频| 成人av电影在线| 久久久久久日产精品| 日本一二三四高清不卡| 欧美国产一区在线| 日本一区二区三区在线不卡| 国产精品久99| 一区二区欧美精品| 自拍偷拍国产精品| 成人黄色av电影| 日韩激情一区二区| 中文字幕在线观看不卡| 欧美一区在线视频| 亚洲不卡在线观看| 国产裸体歌舞团一区二区| 国产精品2024| 日韩一区二区在线看片| 国产精品久久久久久妇女6080| 欧美自拍丝袜亚洲| 国产精品色噜噜| 大胆欧美人体老妇| 欧美日韩高清影院| 中文字幕在线不卡一区| 亚洲成人免费看| 国产精品自拍在线| 精品国产一区二区三区久久影院| 激情国产一区二区| 欧美日韩视频在线一区二区| 国产精品久久久久久久久图文区| 日本va欧美va欧美va精品| 97精品久久久午夜一区二区三区 | 免费一区二区视频| 99久久精品国产观看| 亚洲色图视频网| 久久嫩草精品久久久精品一| 色先锋aa成人| 日日夜夜免费精品视频| 欧美tickle裸体挠脚心vk| 成人免费三级在线| 亚洲三级免费电影| 欧美性xxxxxx少妇| 久久国产夜色精品鲁鲁99| 欧美极品xxx| 这里只有精品电影| 国产盗摄精品一区二区三区在线| 国产午夜一区二区三区| 欧美视频在线不卡| 蜜桃视频在线一区| 2024国产精品| 91同城在线观看| 免费xxxx性欧美18vr| 久久久精品一品道一区| 国产伦精品一区二区三区免费迷| 国产精品久久久久久久第一福利| 6080亚洲精品一区二区| 人人爽香蕉精品| 亚洲女同一区二区| 欧美一区二区三区免费在线看 | 3d动漫精品啪啪1区2区免费| av福利精品导航| 激情图片小说一区| 午夜婷婷国产麻豆精品| 久久蜜桃av一区二区天堂| 97精品超碰一区二区三区| 精品影院一区二区久久久| 国产高清不卡一区| 日韩经典一区二区|