X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f Date: Fri, 11 Jul 2014 10:38:11 +0200 From: Mateusz Viste User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: Using outportb() with djgpp References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Lines: 49 Message-ID: <53bfa273$0$1981$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 11 Jul 2014 10:38:11 CEST NNTP-Posting-Host: 82.225.72.113 X-Trace: 1405067891 news-1.free.fr 1981 82.225.72.113:51894 X-Complaints-To: abuse AT proxad DOT net Bytes: 3019 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Hi, Thank you all for your kind replies. The "weird interrupt happening during I/O" sounded sexy enough that I had to test it out immediately - I replaced all my inportb() and outportb() calls with a function that first call disable(), then do the in/out operation, and then call enable() if interrupts were enabled before. Unfortunately this doesn't changed my problem - my PC still reboots wildly on random i/o operations on the 0x330 port. Some context: I am trying to play a few notes on my Sound Blaster 64 (ISA) card using its embedded MPU401 synth controller. It works pretty well when compiled in realmode with Turbo C 2.0.1, but then I am having a bit of hard time with memory management (64K limit et all), so I thought I'd recompile it under DJGPP. And then I experienced those wild reboots I was writing before. Interestingly enough, the protected mode version works fine on DOSBox. Of course I am aware that such 'bug report' is good for nothing - I was just wondering whether there is some top secret information about doing I/O calls from protected mode that I ignored, but I understand now that there is nothing specific to do in protected mode (or at least nothing much else than in real mode), so I will try to put together some minimalistic test program to reproduce the problem on the smallest possible example, and then I'll see where it leads me (might get back to you then). Again, thanks for all your prompt replies! cheers, Mateusz On 07/10/2014 10:20 PM, Mateusz Viste wrote: > Hi, > > I am trying to write to a hardware port from within djgpp, using > outportb(). It does work from time to time, but often outportb() will > make the whole PC reboot. Specifically I am writing to port 0x330 (to a > MPU401 adapter). If using the same code with turbo C, it works > perfectly. Hence I am wondering: are there any special "rules" I should > be aware of when trying to outportb() from within protected mode? > > regards, > Mateusz