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 ÿ