[RTTY] RE: second soundcard

K4SB hamcat@directvinternet.com
Mon, 08 Jul 2002 17:45:32 +0000


Bill Turner wrote:
> This may not be exactly the answer you're looking for, but if you're running
> Windows, you shouldn't need to assign IRQs.  Windows will do it for you.  I have
> four com ports on my system and can run programs requiring all four at the same
> time - normally difficult or impossible on a DOS system.  Com1 is for radio
> control of the Kenwood, com2 is for PTT under WriteLog, com3 is for CW keying
> under WriteLog and com4 is an external modem.  All four can operate
> simultaneously.  I've operated successfully this way on Win98 and WinXP.

Up to this point, Bill has scored a bulls eye, but
 
> I'm not really cognizant of the inner workings of Windows, but apparently it
> swaps IRQs around as needed by the different programs which are running.  I
> picture Windows as saying in effect "ok, program A needs IRQ3 on com2 now, so
> other programs just wait a bit... ok, program A is done and now program B needs
> IRQ3 on com4, so it's your turn, etc, etc".  Probably a clumsy analogy but
> that's what seems to be happening.

Here it gets a little hazy. Bill is correct to the point that the
above is true IF the 2 programs are not
operating simultaneously. Taking for example, let's say we have a Kam
on Comm 2, IRQ 3, and  Radio control on 
Comm 4 IRQ3. Nether of the programs will work in this case, because
they are attempting to use the same IRQ to submit a request to the
CPU, and the CPU may well return the radio frequency to the Kam, or
try to send a packet to the radio. There are exceptions, usually
occurring with USB ports. But, you cannot, for example, in paragraph 1
assign Comm 2 to PTT and Comm2 to any other function while both
functions are running, even if you shift comm ports. The IRQ (
interrupt request ) is exactly that. The program in use sends a
command to the Comm port, which in turn, sends a command to the IRQ,
which in turn, when CPU availability is present, will ask IRQ what the
hell it wants. At this time, IRQ3 will inform the Comm port that it
has the undivided attention of the CPU and to send what it wants. The
CPU executes the instruction, and then sends it back to the COMM port.
In both cases, after the CPU acknowledges the IRQ request, it and the
Comm port are working alone, without intervention by the IRQ.

And if that confuses you, you know exactly how I feel.

Now, as a matter of fact, there are some 65,000 comm ports on every
machine. ( the exact number is equivalent to Hex FFFF ) Now, how it
does it I don't know, but many of these ports are used by the CPU, and
some by the OS, without an IRQ. They don't need one because the CPU
knows exactly what that particular port is used for, and expects it to
be free at all times. Incidentally, you can write a small program to
interrogate each of these ports in turn. At some point, long before to
get to FFFFh, your machine will crash, and you very well may have to
re install the OS. Keep in mind I said interrogate, not send data.
Don't EVER try to send data to one of these ports. That's a good way
to start shopping for a new CPU.

As for the lack of availability of IRQs, there is no excuse for only
15. It is merely a manufacturer's choice. Many of the ports mentioned
above are not used at all ( thousands in fact ) but the MB makers have
just decided 15 is enough. Now, you can manipulate the system. IRQ 6
is assigned to the floppy drive controller, and you can disable it by
merely telling the BIOS there is no floppy there. However, being able
to then assign IRQ 6 to another device is a bear. Windows won't do it,
because it's been told not to under any circumstances. But, I have
been able to use it by manually modifying the sys.ini file.

But, do you need your modem during a contest? Do you need the sound
card during a CW operation? It's simply a matter of disabling them in
control panel, and you free up the IRQ. Same goes for the printer. If
a printer is not connected, IRQ 7 is released. If Win won't let you
use it, you're going to have to go into SYS.INI and disable the LPT1=7
line. At the same time, modify the Comm sections which says COMM
4=9600,N,8,2 or something to that effect, with 9600, N, 8, 7.

Admittedly, all of this may differ with different OSs. But you should
be able to grab at least one.

BTW, copy SYS.INI to SYSINI.BAK before you start tinkering. Same goes
for WIN.INI. In fact, it's a good idea to do that every time BEFORE
you install a new program. If something goes astray, just restore the
original INI files. That will take care of 90% of any problems.  

As a closing note, DO NOT EVER mess with IRQ15. Last time I did that,
I had to boot using MSDOS on a floppy and reformat the HD. Same goes
for 14, except you may get away with it for a short period, and I
didn't have to reformat, but thank God, DOS will boot on any machine
from the floppy, if you can get the BIOS to let you. 
Good example of what stupidity will do for you.

Too long and confusing, but hope this helps a little.

73
Ed