Path: utzoo!attcan!uunet!lll-winken!ncis.llnl.gov!ncis!helios.ee.lbl.gov!pasteur!ucbvax!decwrl!purdue!bu-cs!mirror!ima!johnl From: johnl@ima.ima.isc.com (John R. Levine) Newsgroups: comp.os.minix Subject: Re: Query about level-triggered interrupts on the PS/2 Message-ID: <3187@ima.ima.isc.com> Date: 17 Jan 89 23:12:03 GMT References: <1910@ast.cs.vu.nl> Reply-To: johnl@ima.UUCP (John R. Levine) Organization: Segue Software, Inc. Lines: 22 Looking at my copy of the PS/2 technical reference, I see that you need to do a little more to dismiss an interrupt than previously. In general: ... tell the device to turn off the interrupt request JMP $+2 ; delay ... send EOI to the interrupt controller JMP $+2 ; delay some more STI ; turn interrupts back on IRET ; go back to where you were interrupted This code is supposed to work on ATs as well. In the particular case of the diskette controller, the manual says nothing about how you trigger and reset interrupts, but I suspect that the interrupt request goes away when you read all of the status bytes back from the controller. You may need the JMP $+2 between IN instructions when reading back the status bytes. Also, the high bit of the status byte at port address 3F0 tells whether there's an interrupt pending. Perhaps a few experiments with "debug" would show how to make the interrupt request go away.-- John R. Levine, Segue Software, POB 349, Cambridge MA 02238, +1 617 492 3869 { bbn | spdcc | decvax | harvard | yale }!ima!johnl, Levine@YALE.something You're never too old to have a happy childhood.