From: rock2000 AT ntplx DOT com (Rock) Newsgroups: comp.os.msdos.djgpp Subject: Nasm and real-mode ISRs (bimodal) Message-ID: <379739de.5187825@news.ntplx.com> X-Newsreader: Forte Free Agent 1.11/32.235 Lines: 35 Date: Thu, 22 Jul 1999 15:50:01 GMT NNTP-Posting-Host: 204.213.189.209 X-Trace: news.ntplx.net 932702016 204.213.189.209 (Thu, 22 Jul 1999 23:53:36 EDT) NNTP-Posting-Date: Thu, 22 Jul 1999 23:53:36 EDT Organization: NETPLEX Internet Services - http://www.ntplx.net/ To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com I'm trying to setup a bimodal ISR for the keyboard handler and I'm having big problems under DJGPP (CWSDPMI). I tried just using a protected mode handler, but I get segment violations RMCBs (And I've locked everything the handler touches). Here's my setup: - Allocate some DOS memory for the real-mode ISR and key table. - Copy the real mode ISR into the DOS memory. The key table will reside in low memory so both ISRs can access it. It will be 128 bytes into the DOS memory block (i.e. after the real mode ISR code). My problem is with NASM. I can't seem to find a way to write the real-mode ISR in a way that allows the routine to index the key table. In other assemblers, I could use "ASSUME cs" to tell the assembler that I want cs to point to my function and then simply index the table as cs:[128 + keyIndex]. However, NASM doesn't support ASSUME, and apparently cs is not coming in pointing directly to my routine. It says you can write mov ax, seg blah mov es, ax mov bx, blah to have es:bx point to blah, but I tried that and NASM says that COFF doesn't support anything but 32 bit relocations for the 2 lines above with "blah" in them. I even tried hacking it by using cs:ip and trying a get an offset using that, but NASM won't let me access IP apparently. How the heck do you make these routines with such limited tools? What am I missing? Rock