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