[comp.sys.ibm.pc] IBM-AT IRQs

mdf@osu-eddie.UUCP (Mark D. Freeman) (05/09/87)

I only recieved one reply containing useful information.  Here it is:

   From Ralf.Brown@b.gp.cs.cmu.edu Tue May  5 18:30:54 1987

	IRQ0	timer tick
	IRQ1	keyboard
	IRQ2	IRQ8 through IRQ15 go through here
	IRQ3	COM1
	IRQ4	COM2
	IRQ5	second printer port
	IRQ6	floppy disk
	IRQ7	printer port on MDA
	IRQ8	real-time clock--alarm and 1/1024 sec interrupt
	IRQ9	LAN adapter, redirected to INT0A (== IRQ2) by BIOS
	IRQ10	spare
	IRQ11	spare
	IRQ12	spare
	IRQ13	Coprocessor interrupt
	IRQ14	hard disk
	IRQ15	spare

additionally, IRQ7 gets all the interrupt requests from IRQ8 thru IRQ15.

You can check which interrupts are pending by querying the interrupt 
controllers.  The first controller (for IRQ0 thru 7) is at I/O ports 20h and
21h, the second at A0h and A1h.

	MOV	AL,0Bh
	OUT	20h,AL
	JMP	$+2
	IN	AL,20h
will get the pending interrupt mask from the first controller.  Bit 0 of
AL is 1 if IRQ0 pending, bit 1 for IRQ1, etc.  Change the 20h to A0h for
IRQ8 thru 15.

	MOV	AL,enable_mask
	OUT	21h,AL
will disable IRQ0 if bit 0 of AL is 1, IRQ1 if bit 1 is 1, etc.  Use A1h for
IRQ8 thru 15.

If you are handling the hardware interrupt yourself, you must tell the
appropriate controller when you are done and another interrupt of the same
or lower priority is to be allowed.  The following code fragment tells the
controller that the current interrupt is done.  (Apparently, there is a way
to tell the controller that a specific interrupt has been handled, such as
when a high-priority interrupt handler wants to stop lower-priority
interrupts that occur while it executes, but I have never seen code for
this)
	MOV	AL,20h
	OUT	20h,AL
(or OUT A0h,AL for the second controller)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
ARPA:  RALF@B.GP.CS.CMU.EDU               USnail: Ralf Brown
AT&T:  (412) 268-3053 (school)                    Computer Science Department
                                                  Carnegie-Mellon University
DISCLAIMER?  Who ever said I claimed anything?    Pittsburgh, PA 15213
"Teaching COBOL ought to be regarded as a criminal act" --- Edsger Dijkstra





-- 
< < < < < < < < < < < < < < < < < < < <> > > > > > > > > > > > > > > > > > > >
Mark D. Freeman						    mdf@osu-eddie.uucp
StrongPoint Systems, Inc.				   mdf@Ohio-State.arpa
2440 Medary Avenue				      ...!cbosgd!osu-eddie!mdf
Columbus, OH  43202		    Guest account at The Ohio State University
(614) 262-3703
< < < < < < < < < < < < < < < < < < < <> > > > > > > > > > > > > > > > > > > >

kalra@cit-vax.Caltech.Edu (Devendra Kalra) (05/09/87)

I have a question about the AT disk setup.

Where and when does the system found how many disks are connected in the system.

More particularly, I friend of mine booted up an AT with DOS 2.0 and the system
refused to acknowledge the harddisk at c:. The system has three disks.
I went into debug and looked at location 0000:0410 which is the equipment
bytes that is where the system keeps the record of what equipment is connected
to the system where it indicated that the system thought there WERE three disks.

Thanks.
Devendra