1 /*
2  * routines for writing a fake dos
3  */
4 
5 #include	"rogue.h"
6 #include	"curses.h"
7 
8 char *stpblk();
9 
10 fakedos()
11 {
12     char comline[132];
13     register char *savedir = "a:", *comhead;
14 
15 	wdump();
16 	clear();
17 	move (0,0);
18 	cursor(TRUE);
19 	*savedir = bdos(0x19,0) + 'A';
20 	do {
21 		setmem(comline, sizeof comline, 0);
22 	    printw("\n%c>",bdos(0x19,0)+'A');
23         getinfo(comline,130);
24         comhead = stpblk(comline);
25         endblk(comhead);
26     } while (dodos(comhead));
27 	dodos(savedir);    
28     cursor(FALSE);
29     wrestor();
30 }
31 
32 /*
33  * execute a dos like command
34  */
35 dodos(com)
36     char *com;
37 {
38 	if ((*com & 0x80) || (strcmp(com, "rogue") == 0))
39 		return 0;
40     if (com[1] == ':' && com[2] == 0) {
41     	int drv = (*com & 0x1f) - 1;
42 
43 		printw("\n");
44 		if ((!isalpha(*com)) || drv >= bdos(0x0e, drv))
45 		    printw("Invalid drive specification\n");
46     } else  if (com[0])
47 	    printw("\nBad command or file name\n");
48 	return 1;
49 }
50 