Hi David,

> I'm wanting to set up a packet driver, but it asks for which packet int
> number to use. From the packet driver specification, I see this is
> supposed to be between 0x60 and 0x80, but how can I tell if any of these
> are already taken?

As the introduction for writing packet drivers on

> http://crynwr.com/packet_driver.html

does not mention any constraints here, I would say
0x60 is a good choice to start with. Looking into
the famous RBIL Ralf Browns Interrupt List, I get
various more or less exotic drivers and hardware
(BIOS) using 0x60 to 0x6f.

In the 0x70 to 0x77 range, you have a number of
PC/AT IRQ, so you probably want to avoid those.

Some interrupts after that are described as being
related to netware or DOS extenders.

I guess it would be a safe option to read the raw
interrupt vector values to see what unused ones
look like on your system, then take one of those.

With DEBUG, you can do this:

echo d 0:180 l 80 | debug > int6x7x.txt

(QUESTION: Why is mouse text copy and paste missing
in DOSEMU 2.0pre6.1? I really miss that function!)

Here are the int6x7x.txt contents for a DOSEMU:

> -d 0:180 l 80 
> 0000:0180  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................

Each interrupt has 4 bytes in this listing of pointers, so
the first line describes interrupt 60 to 63, the next one
64 to 67, the next 68 to 6b, the next 6c to 6f, then 70 to
73 and so on :-)

> 0000:0190  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................

Interrupt 60 to 67 are completely free: 00 00 00 00 each.
Note that interrupt 67 can be used for EMS in many cases!
So I suggest that int 60 to 66 are generally free here.

> 0000:01A0  DF 62 00 F8 DF 62 00 F8-DF 62 00 F8 DF 62 00 F8   .b...b...b...b..
> 0000:01B0  DF 62 00 F8 DF 62 00 F8-DF 62 00 F8 DF 62 00 F8   .b...b...b...b..

Interrupt 68 to 6f all point to  the same DF 62 00 F8, which
could be some sort of placeholder. Checking with DEBUG, using
"u f800:62df" (note how you have to rearrange the digits in
reverse byte order) says that they point to "IRET", so any
call to the current interrupt 68 to 6f would do nothing and
return immediately. It MIGHT be safe to re-use those ints.

> 0000:01C0  F0 63 00 F8 E7 7E 00 F8-74 C0 00 F0 75 C0 00 F0   .c...~..t...u...
> 0000:01D0  F0 E2 FF EF 98 7E 00 F8-78 C0 00 F0 79 C0 00 F0   .....~..x...y...

Interrupt 70, 71 and 75 point to places in f800. Do not use those.
Interrupt 72, 73, 76 and 77 point to places in f000, the BIOS.
Consider those to be used, too. Interrupt 78 points to another
place, so it is already in use by a driver.

> 0000:01E0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
> 0000:01F0  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
> -

Interrupt 78 to 7f are completely free as well.

In short, this somewhat tedious check gave me 15 out of 32
candidate interrupt numbers as being safely free for use as
network packet driver interrupts, plus 8 more which might
be okay to use and 8 which should be avoided in this case.

Regards, Eric :-)


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user

Reply via email to