From owner-freebsd-emulation Mon Jan 19 08:40:46 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id IAA13661 for freebsd-emulation-outgoing; Mon, 19 Jan 1998 08:40:46 -0800 (PST) (envelope-from owner-freebsd-emulation@FreeBSD.ORG) Received: from sumatra.americantv.com (sumatra.americantv.com [207.170.17.37]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id IAA13652 for ; Mon, 19 Jan 1998 08:40:34 -0800 (PST) (envelope-from jlemon@americantv.com) Received: from right.PCS (right.PCS [148.105.10.31]) by sumatra.americantv.com (8.8.5/8.8.5) with ESMTP id KAA14830; Mon, 19 Jan 1998 10:39:52 -0600 (CST) Received: (from jlemon@localhost) by right.PCS (8.6.13/8.6.4) id KAA29920; Mon, 19 Jan 1998 10:39:20 -0600 Message-ID: <19980119103920.28769@right.PCS> Date: Mon, 19 Jan 1998 10:39:20 -0600 From: Jonathan Lemon To: Mike Smith Cc: John-Mark Gurney , shmit@erols.com, Randall Hopper , emulation@FreeBSD.ORG Subject: Re: DOSCMD: Problems w/ Quicken References: <19980119022348.44312@hydrogen.nike.efn.org> <199801191136.WAA00350@word.smith.net.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.61.1 In-Reply-To: <199801191136.WAA00350@word.smith.net.au>; from Mike Smith on Jan 01, 1998 at 10:06:50PM +1030 Sender: owner-freebsd-emulation@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org On Jan 01, 1998 at 10:06:50PM +1030, Mike Smith wrote: > Yeah, that's all fine, but what I *don't* understand is why it should > be trapping as it does claiming that 'movw (%bx),%ax' is an illegal > instruction. >From one of the original postings, the setup message for doscmd says `Init: 0', which indicates that the hardware does not support VME. When an int13 (gpf) is generated, under VME, it simply looks at the interrupt vector, and jumps directly to the associated interrupt handler, without leaving vm86 mode. Without VME, it falls back to doscmd, with a SIGBUS. doscmd looks at the instruction to try to figure out why the interrupt was generated (sti, cli, popf, etc) and if it doesn't find it, assumes that this is an illegal instruction. It doesn't attempt to jump to the int 13 vector. It does this since SIGBUS is overloaded with all sorts of things and typically a GPF is fatal anyway. The following (untested) patch to doscmd might fix the problem. -- Jonathan --------------------------------------------------------------------------- *** trap.c 1997/09/30 22:04:05 1.2 --- trap.c 1998/01/19 16:33:43 *************** *** 486,493 **** --- 486,496 ---- /* FALLTHRU */ default: + #if 0 dump_regs(REGS); fatal("unsupported instruction\n"); + #endif + fake_int(REGS, 13); } out: