From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Courtier-Dutton Subject: Re: Somewhat confused with Interrupts/TSRs Date: Fri, 30 Nov 2007 22:13:12 +0000 Message-ID: <47508AF8.8090909@superbug.co.uk> References: <20071130151225.691a424b.john@jcoppens.com> <47505962.8060304@sbcglobal.net> <20071130182911.bcd28090.john@jcoppens.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20071130182911.bcd28090.john@jcoppens.com> Sender: linux-msdos-owner@vger.kernel.org List-Id: Content-Type: text/plain; charset="us-ascii" To: John Coppens Cc: FreeDOS John Coppens wrote: > > Yes... The logger calls Int16, which works fine, except that in that case > the TSR stops working, because both 'hooks' to 'stimulate' the TSR (Int > 1C and 28) stop working (see below). Note that both 1Ch and 28h are > 'voluntary' interrupts, called only when DOS is idle. So while in the > (BIOS's) Int16, DOS won't be able to call them. The program does use Int16, function AH=0x10. You would need to also hook Int16 so that it "stimulates" your TSR program. > > > And at F000:C016 is a HLT. I suspect this is part of the mechanism dosemu > uses to emulate. > That is correct, the HLT causes the dosemu to callout of DOS back into the dosemu program to process the BIOS call. I would probably take this approach: Modify dosemu, or dosbox so that the BIOS call reads keyboard input from a unix pipe. Then you can simply cat characters into the pipe from a shell and the dos program will receive them. Then you would not need a TSR at all! James