www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/08/07/08:47:58

Xref: news2.mv.net comp.os.msdos.djgpp:6809
From: C M Marka <matriu AT gim DOT ktu DOT lt>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: writing hw interrupt handlers.
Date: Sun, 4 Aug 1996 17:46:12 +0000
Organization: LITNET
Lines: 57
Message-ID: <Pine.HPP.3.91.960804173423.12439B-100000@santaka.sc-uni.ktu.lt>
References: <4tuak7$h7m AT news DOT goodnet DOT com>
NNTP-Posting-Host: santaka.sc-uni.ktu.lt
Mime-Version: 1.0
In-Reply-To: <4tuak7$h7m@news.goodnet.com>
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

On 3 Aug 1996 snarfy AT goodnet DOT com wrote:

> 
> _protected_mode_IRQ0_handler:
> cli
> ...do some stuff
> movb $0x20,%al
> outb %al, $0x20
> sti
> iret
> 
> Now, what else would have to be added to that code to make it work 
> without calling _go32_dpmi_allocate_iret_wrapper() on it?  Maybe a 
> pusha, popa, stack switch, ... ?
> 

ok, here's an example:

# no cli!
pusha
pushl %ds
mov %cs:___djgpp_ds_alias, %ds

#
# do your stuff here
#

popl %ds
movb $0x20, %al
outb %al, $0x20
popa
sti
iret

cli/sti take up A LOT of CPU cycles under DPMI, and and the handler gets
called with interrupts disabled anyway. so there..
Stack switch is not important in most cases IMHO. You get 4 Kb of stack,
why shouldn't this be enough?
And, of course, you want ds to point to your data segment, don't you?
And don't forger to lock the handler and averything it touches! 
(___djgpp_ds_alias is locked by DJGPP startup code, so no problems here).
And you can use ___djgpp_dos_sel if you need, it's locked as well.
Anyway, check v2tk/mkkbd3.zip for an example with more explanations.
BTW, I use pushl/popl on ds because that way the stack gets aligned better,
and I use mov instead movw with ds because as generates extra bytes in the
latter case.

Phew... I hope I'll be able to explain all the pitfalls in the HW interrupts
chapter of the DJGPP book, which I am working on (the chapter, not the 
book :)

Cheers!

Martynas



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019