Mail Archives: djgpp/1995/06/27/19:38:31
Xref: | news-dnh.mv.net comp.os.msdos.djgpp:637
|
Path: | news-dnh.mv.net!mv!news.sprintlink.net!news.clark.net!rahul.net!a2i!wilsont.a2i!wilsont
|
From: | Timothy Wilson <wilsont AT rahul DOT net>
|
Newsgroups: | comp.os.msdos.djgpp
|
Subject: | Serial Port Interupt programming, ideas/help/info wanted...
|
Date: | 27 Jun 1995 20:18:28 GMT
|
Organization: | a2i network
|
Lines: | 36
|
Distribution: | ca
|
Nntp-Posting-Host: | foxtrot.rahul.net
|
Nntp-Posting-User: | wilsont
|
To: | djgpp AT sun DOT soe DOT clarkson DOT edu
|
Dj-Gateway: | from newsgroup comp.os.msdos.djgpp
|
Hey fellow djgpp'ers.
I wrote a program that creates two queues for the input and output
on a serial port. This is handled in an interrupt.
the interrupt is "wrapped", using those go32_dpmi_ functions, then
attached to the interupt vector using go32_dpmi_set_protected_vector.
I use the function adress & go32_my_cs() combo for the wrapper.
Ok, that seems to work in a very simple case, ie, a dumb terminal program.
however, when I move this interrupt driven code to another djgpp program
(a BBS of mine), it crashes, and it crashes in a bad way, bad meaning that
if I use gdb it will hang the system completely.
I was using FOSSIL drivers and int86(0x14,xx) calls before, so I know it's
not my BBS crashing. I'm trying to get rid of the fossil drivers, since I
can't ship them with my BBS, and I need 19.2k+ baud. BIOS only goes to 9600.
Where should I go from here? should I use a real mode vector and allocate
my buffers from the lower 640? Is my simple test running because it
fits in the lower 640?
Any ideas would be appreciated, I'll be happy to post or otherwise make
availbile the interrupt code when it works.
Thank you!
--
Timothy Wilson --- wilsont AT rahul DOT net --- Sillicon Valley
>Dark Oak Software<-+Entertainment and Applications programming in C
^^^^^^^^^^^^^^^^^^^+->X/Unix, and MS-DOS
- Raw text -