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 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