mitchell (Bill Mitchell) (09/13/90)
In article <37363@unix.cis.pitt.edu> zhang@unix.cis.pitt.edu (Hong Zhang) writes: > >According to MS-DOS Encyclopedia, on PC the int numbers of COM1 / COM2 >are 12 / 11, while on AT, they are 11 / 12. How do I write a comm >program for all IBM compatibles? > >Thanks in advance. There is a BIOS data area from 0040:0000 thru 0040:008f, containing all sorts of interesting stuff. In particular, the first four words contain the I/O addresses of COM1 thru COM4, and the next four words contain the I/O addresses of LPT1 thru LPT4.
jc58+@andrew.cmu.edu (Johnny J. Chin) (09/14/90)
First of all ... the hardware interrupt for the serial ports are 3 or 4, by
default.
COM1 - IRQ4 (hardware interrupt request #4)
COM2 - IRQ3
As for some other common ones:
INT 0 - NMI (non-maskable interrupt) - usually due to memory parity error
INT 1 - reserved
INT 2 - used by many EGA/VGA cards (usually available on 8088)
cascading interrupt on 286/386/486 machines
INT 3 - COM2:
INT 4 - COM1:
INT 5 - Hard Disk Controller on 8088 (available for LPT2: on 286/386/486)
INT 6 - Floppy Controller
INT 7 - LPT1:
INT 14 - cascaded off INT 2 - Hard Disk Controller on 286/386/486.
I hope this information helps ...
__________ ___
/ \ / / /_/ / /\/
_/ / / / __/. /__ / / / / /
/ / /
/ / 4730 Centre Ave. #412 ARPAnet: Johnny.J.Chin@andrew.cmu.edu
/ ------- / Pittsburgh, PA 15213 BITnet: jc58@andrew
\__________/ (412) 268-8936 UUCP: ...!harvard!andrew.cmu.edu!jc58
Computer Dr.
Disclaimer: The views expressed herein are STRICTLY my own, and not CMU's.PA163514@tecmtyvm.mty.itesm.mx (09/15/90)
Mr. or Miss Zhang
I don't know where did you find your MS-DOS reference, but my literature
say the opposite, look that:
Int Purpose
1C Com1
1B Com2
This is for PC-XT
I'm sure about int 1C, because, I work with com-interrupts.
I'm not sure, but I think com-interrupt in AT are inverse. That is,
com1 1B and Com2 1C, but look that:
You can know if your Pc is AT or XT, in this manner:
With basic,
10 def seg=&hf000
20 x=peek (&hffe)
If x=FF It's PC
x=FE XT
x=FD PCjr
x=FC AT
In assembly language
mov ax,0f000h
mov es,ax
mov al,es:{0fffeh}
And al is equivalent to x
Some questions, refer to:
Juan Manuel Gonzalez Nava
Informatic Research Center
ITESM Monterrey Mexico
Bitnet: PA163514@MTYTECVM.MTY.ITESM.MX
There is a new country. MexicoRalf.Brown@B.GP.CS.CMU.EDU (09/15/90)
In article <90257.214305PA163514@tecmtyvm.mty.itesm.mx>, PA163514@tecmtyvm.mty.itesm.mx wrote: }Int Purpose }1C Com1 }1B Com2 } }This is for PC-XT } }I'm sure about int 1C, because, I work with com-interrupts. }I'm not sure, but I think com-interrupt in AT are inverse. That is, }com1 1B and Com2 1C, but look that: First of all, that's INT 0C/0B, not 1C/1B (which are timer tick and ^Break). Secondly, both PC and AT use INT 0C for COM1 and INT 0B for COM2 (as do IBM- compatible 386s). -- UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=- 412-268-3053 (school) -=- FAX: ask ARPA: ralf@cs.cmu.edu BIT: ralf%cs.cmu.edu@CMUCCVMA FIDO: 1:129/3.1 Disclaimer? | I was gratified to be able to answer promptly, and I did. What's that? | I said I didn't know. --Mark Twain
PA163514@tecmtyvm.mty.itesm.mx (09/16/90)
Sorry from PA163514 You ara right. Interrupts are 12(decimal) or its equivalent Ch I put a Re: in this list, there is a mistake, I wrote 1Ch sorry, check it's 0Ch 1Ch is the timer tick.
stever@Octopus.COM (Steve Resnick ) (09/27/90)
In article <Iaw_cB600VY6IMyqUW@andrew.cmu.edu> jc58+@andrew.cmu.edu (Johnny J. Chin) writes: >First of all ... the hardware interrupt for the serial ports are 3 or 4, by >default. > >COM1 - IRQ4 (hardware interrupt request #4) >COM2 - IRQ3 > >As for some other common ones: > >INT 0 - NMI (non-maskable interrupt) - usually due to memory parity error >INT 1 - reserved >INT 2 - used by many EGA/VGA cards (usually available on 8088) > cascading interrupt on 286/386/486 machines >INT 3 - COM2: >INT 4 - COM1: >INT 5 - Hard Disk Controller on 8088 (available for LPT2: on 286/386/486) >INT 6 - Floppy Controller >INT 7 - LPT1: > >INT 14 - cascaded off INT 2 - Hard Disk Controller on 286/386/486. > > >I hope this information helps ... These are IRQ's, not INTS - ie, when COM1 needs service it DOES NOT issue an int 3, it issues an INT 0BH. Note that IRQ interrupts start at int 08H the timer vector. Based on this I think that INT 0 is not an IRQ but an INT line on the CPU, otherwise, the timer would be vectored to NMI (which it isn't) Steve -- ---------------------------------------------------------------------------- steve.resnick@f105.n143.z1.FIDONET.ORG - or - apple!camphq!105!steve.resnick Flames, grammar errors, spelling errrors >/dev/nul ----------------------------------------------------------------------------
Ralf.Brown@B.GP.CS.CMU.EDU (09/27/90)
In article <Iaw_cB600VY6IMyqUW@andrew.cmu.edu>, jc58+@andrew.cmu.edu (Johnny J. Chin) wrote: }INT 0 - NMI (non-maskable interrupt) - usually due to memory parity error }INT 1 - reserved }INT 2 - used by many EGA/VGA cards (usually available on 8088) } cascading interrupt on 286/386/486 machines }INT 3 - COM2: }INT 4 - COM1: }INT 5 - Hard Disk Controller on 8088 (available for LPT2: on 286/386/486) }INT 6 - Floppy Controller }INT 7 - LPT1: } }INT 14 - cascaded off INT 2 - Hard Disk Controller on 286/386/486. Read IRQ instead of INT for all of the above (IRQ0-7 are normally programmed to appear as INT 08-0F and IRQ8-15 as INT 70-77). Secondly, NMI is *not* tied to any IRQ (it is INT 02). IRQ0 is the system clock tick and IRQ1 is the keyboard interrupt. -- UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf -=- 412-268-3053 (school) -=- FAX: ask ARPA: ralf@cs.cmu.edu BIT: ralf%cs.cmu.edu@CMUCCVMA FIDO: 1:129/3.1 Disclaimer? | I was gratified to be able to answer promptly, and I did. What's that? | I said I didn't know. --Mark Twain