From 10f1d28ac12e2aa8532f098c847d34d2cf23e164 Mon Sep 17 00:00:00 2001 From: Warner Losh Date: Thu, 16 Jul 1998 23:54:26 +0000 Subject: [PATCH] o remove -f from doscmd man page, as it is not implemented. o Remove init printf o Don't set optind from return value for do_args. getopt has already done this. o Bump EMS memory from 1M to 10M (this really should be a command line option). o Open /dev/null when requested to open emmxxxx0 to allow many programs checking to see if EMS is installed to find it. o Route int67 to ems_entry to allow EMS to be used when DOS is emulated as well as when DOS is booted. This may obviate the need for the driver doing anything at all in a really booted situation and won't hurt that case. I can now run the DOS program I'm interested in running with enough EMS memory that its "advanced" functions are enabled and working. --- usr.bin/doscmd/dos.c | 22 +++++++++++++++++++++- usr.bin/doscmd/doscmd.1 | 8 -------- usr.bin/doscmd/doscmd.c | 5 ++--- usr.bin/doscmd/ems.h | 4 ++-- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/usr.bin/doscmd/dos.c b/usr.bin/doscmd/dos.c index 7d79c2faaba..aada188b071 100644 --- a/usr.bin/doscmd/dos.c +++ b/usr.bin/doscmd/dos.c @@ -31,7 +31,7 @@ * * BSDI int21.c,v 2.2 1996/04/08 19:32:51 bostic Exp * - * $Id: dos.c,v 1.2 1998/07/01 19:56:13 imp Exp $ + * $Id: dos.c,v 1.3 1998/07/02 05:12:52 imp Exp $ */ #include "doscmd.h" @@ -277,6 +277,14 @@ translate_filename(u_char *dname, u_char *uname, int *drivep) return (0); } + /* XXX KLUDGE for EMS support w/o booting DOS */ + /* Really need a better way to handle devices */ + if (!strcasecmp(dname, "emmxxxx0")) { + *drivep = -1; + strcpy(uname, "/dev/null"); + return (0); + } + error = dos_makepath(dname, newpath); if (error) return (error); @@ -2466,6 +2474,12 @@ int21(regcontext_t *REGS) return; } +static void +int67(regcontext_t *REGS) +{ + ems_entry(REGS); +} + static u_char upcase_trampoline[] = { 0xf4, /* HLT */ 0xcb, /* RETF */ @@ -2493,6 +2507,10 @@ dos_init(void) ivec[0x29] = vec; register_callback(vec, int29, "int 29"); + vec = insert_softint_trampoline(); + ivec[0x67] = vec; + register_callback(vec, int67, "int 67 (EMS)"); + vec = insert_null_trampoline(); ivec[0x28] = vec; /* dos idle */ ivec[0x2b] = vec; /* reserved */ @@ -2505,4 +2523,6 @@ dos_init(void) /* build fastlookup index into the monster table of interrupts */ intfunc_init(int21_table, int21_fastlookup); + + ems_init(); } diff --git a/usr.bin/doscmd/doscmd.1 b/usr.bin/doscmd/doscmd.1 index 6a3dafc68b8..83f09f39e94 100644 --- a/usr.bin/doscmd/doscmd.1 +++ b/usr.bin/doscmd/doscmd.1 @@ -137,14 +137,6 @@ Enable debugging of the exec routines. .\" .\" .\" -.It Fl f -Use -.Xr fork 2 -for spawned processes rather than running them in the -current memory space. -.\" -.\" -.\" .It Fl H Enable tracing of half implemented calls. .\" diff --git a/usr.bin/doscmd/doscmd.c b/usr.bin/doscmd/doscmd.c index 7082dd20974..c83903cbd59 100644 --- a/usr.bin/doscmd/doscmd.c +++ b/usr.bin/doscmd/doscmd.c @@ -29,7 +29,7 @@ * * BSDI doscmd.c,v 2.3 1996/04/08 19:32:30 bostic Exp * - * $Id: doscmd.c,v 1.5 1998/07/01 19:56:14 imp Exp $ + * $Id: doscmd.c,v 1.6 1998/07/02 05:23:54 imp Exp $ */ #include @@ -129,7 +129,7 @@ main(int argc, char **argv) debug_set(0); /* debug any D_TRAPS without intnum */ /* perform option argument processing */ - optind = do_args(argc, argv); + do_args(argc, argv); argc -= optind; argv += optind; @@ -270,7 +270,6 @@ main(int argc, char **argv) vm86.sub_op = VM86_INIT; vm86.sub_args = (char *)&kargs; i = sysarch(I386_VM86, &vm86); - printf("Init: %d\n", i); sigreturn(&sc); debug(D_ALWAYS,"sigreturn failed : %s\n", strerror(errno)); diff --git a/usr.bin/doscmd/ems.h b/usr.bin/doscmd/ems.h index 866a5515ecb..990866cff78 100644 --- a/usr.bin/doscmd/ems.h +++ b/usr.bin/doscmd/ems.h @@ -25,7 +25,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id$ + * $Id: ems.h,v 1.1 1997/09/30 22:03:45 jlemon Exp $ */ #ifndef EMS_H @@ -36,7 +36,7 @@ /* Global definitions, some of them will be configurable in the future */ #define EMS_NUM_HANDLES 256 /* Includes OS handle 0 */ -#define EMS_MAXSIZE 1024 /* In kbytes */ +#define EMS_MAXSIZE 10240 /* In kbytes */ #define EMS_MAX_PHYS 4 /* Frame is 64kB */ #define EMS_FRAME_ADDR 0xe0000 #define EMS_VERSION 0x40 /* Version 4.0 */