Thread overview | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
June 27, 2006 the inline assembler | ||||
---|---|---|---|---|
| ||||
I'm trying to call dos interrupts using the inline assembler. Unfortunately I keep getting the following message during compilation: end of instruction The code I used is listed below. Any help is welcome. asm { mov AH, interrupt_code ; int 21H ; .. } where interrupt_code is of type long. |
June 27, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to lee | lee wrote:
> I'm trying to call dos interrupts using the inline assembler.
> Unfortunately I keep getting the following message during compilation:
> end of instruction
> The code I used is listed below. Any help is welcome.
> asm
> {
> mov AH, interrupt_code ;
> int 21H ;
> ..
> }
> where interrupt_code is of type long.
I don't believe '21H' is a valid integer in D.
This should compile:
void main()
{
long interrupt_code;
asm
{
mov AH, interrupt_code ;
int 0x21 ;
}
}
|
June 27, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to Frits van Bommel | In article <e7sa56$3qb$1@digitaldaemon.com>, Frits van Bommel says... > >lee wrote: >> I'm trying to call dos interrupts using the inline assembler. >> Unfortunately I keep getting the following message during compilation: >> end of instruction >> The code I used is listed below. Any help is welcome. >> asm >> { >> mov AH, interrupt_code ; >> int 21H ; >> .. >> } >> where interrupt_code is of type long. > >I don't believe '21H' is a valid integer in D. >This should compile: > >void main() >{ > long interrupt_code; > asm > { > mov AH, interrupt_code ; > int 0x21 ; > } >} > The same error results. |
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | llee schrieb:
> In article <e7sa56$3qb$1@digitaldaemon.com>, Frits van Bommel says...
>> lee wrote:
>>> I'm trying to call dos interrupts using the inline assembler.
>>> Unfortunately I keep getting the following message during compilation:
>>> end of instruction
>>> The code I used is listed below. Any help is welcome.
>>> asm
>>> {
>>> mov AH, interrupt_code ;
>>> int 21H ;
>>> ..
>>> }
>>> where interrupt_code is of type long.
>> I don't believe '21H' is a valid integer in D.
>> This should compile:
>>
>> void main()
>> {
>> long interrupt_code;
>> asm
>> {
>> mov AH, interrupt_code ;
>> int 0x21 ;
>> }
>> }
>>
> The same error results.
long interrupt_code is much larger than the 8bit ah register
btw: what are you doing? plain old dos 21h is decprecated since win95
most 16bit interrupt (int 0x10h, int 0x13...) procs don't work under win32
what do you want from dos? what are you trying todo?
ciao dennis
|
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to dennis luehring | In article <e7sivt$emq$1@digitaldaemon.com>, dennis luehring says... > >llee schrieb: >> In article <e7sa56$3qb$1@digitaldaemon.com>, Frits van Bommel says... >>> lee wrote: >>>> I'm trying to call dos interrupts using the inline assembler. >>>> Unfortunately I keep getting the following message during compilation: >>>> end of instruction >>>> The code I used is listed below. Any help is welcome. >>>> asm >>>> { >>>> mov AH, interrupt_code ; >>>> int 21H ; >>>> .. >>>> } >>>> where interrupt_code is of type long. >>> I don't believe '21H' is a valid integer in D. >>> This should compile: >>> >>> void main() >>> { >>> long interrupt_code; >>> asm >>> { >>> mov AH, interrupt_code ; >>> int 0x21 ; >>> } >>> } >>> >> The same error results. > >long interrupt_code is much larger than the 8bit ah register > >btw: what are you doing? plain old dos 21h is decprecated since win95 most 16bit interrupt (int 0x10h, int 0x13...) procs don't work under win32 > >what do you want from dos? what are you trying todo? > >ciao dennis I'm trying to read keyboard events through dos services. If it's possible to access these services on the win32 platform let me know. |
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | llee schrieb:
> I'm trying to read keyboard events through dos services.
> If it's possible to access these services on the win32 platform let me > know.
why do try to use dos interrupts - what speaks against phobos functions?
(i think) you can only use dos services (realmode emulation on top of win-api) within an real 16bit dos programm - and the D compiler/linker doesn't produce such exes
pure win32 programs (dmd compiled ones) cannot call dos interrupts neither can read ports or something like that
from which type of program you are trying to receive keystrokes?
window or console program?
ciao dennis
|
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to dennis luehring | In article <e7slui$hsv$1@digitaldaemon.com>, dennis luehring says... > >llee schrieb: >> I'm trying to read keyboard events through dos services. > > If it's possible to access these services on the win32 platform let >me > know. > >why do try to use dos interrupts - what speaks against phobos functions? > >(i think) you can only use dos services (realmode emulation on top of win-api) within an real 16bit dos programm - and the D compiler/linker doesn't produce such exes > >pure win32 programs (dmd compiled ones) cannot call dos interrupts neither can read ports or something like that > >from which type of program you are trying to receive keystrokes? window or console program? > >ciao dennis > > it's a console app. |
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | In article <e7ske2$g67$1@digitaldaemon.com>, llee says... > >In article <e7sivt$emq$1@digitaldaemon.com>, dennis luehring says... >> >>llee schrieb: >>> In article <e7sa56$3qb$1@digitaldaemon.com>, Frits van Bommel says... >>>> lee wrote: >>>>> I'm trying to call dos interrupts using the inline assembler. >>>>> Unfortunately I keep getting the following message during compilation: >>>>> end of instruction >>>>> The code I used is listed below. Any help is welcome. >>>>> asm >>>>> { >>>>> mov AH, interrupt_code ; >>>>> int 21H ; >>>>> .. >>>>> } >>>>> where interrupt_code is of type long. >>>> I don't believe '21H' is a valid integer in D. >>>> This should compile: >>>> >>>> void main() >>>> { >>>> long interrupt_code; >>>> asm >>>> { >>>> mov AH, interrupt_code ; >>>> int 0x21 ; >>>> } >>>> } >>>> >>> The same error results. >> >>long interrupt_code is much larger than the 8bit ah register >> >>btw: what are you doing? plain old dos 21h is decprecated since win95 most 16bit interrupt (int 0x10h, int 0x13...) procs don't work under win32 >> >>what do you want from dos? what are you trying todo? >> >>ciao dennis >I'm trying to read keyboard events through dos services. >If it's possible to access these services on the win32 platform let me know. Wow*. Dennis is right, using interrupts from user-land is *way* beyond depricated by this point. Under Windows, your only real alternative is to use the Win32 API. You're going to want to google around some for this. Its a little more involved than I found a decent thread on another site that was started by someone who had a similar question: http://www.gidforums.com/t-2092.html MSDN (http://msdn.microsoft.com) has some more info on the Win32 API, but its pretty useless unless you already have an idea of what to look for. Still, its worth searching there for a good tutorial or two. * - Amazingly enough, I still have a softcover copy of Ralph Brown's Interrupt List on my bookshelf. (2nd Ed. Copyright 1994) - EricAnderton at yahoo |
June 28, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | > it's a console app.
import std.c.stdio;
int c = getchar();
|
June 30, 2006 Re: the inline assembler | ||||
---|---|---|---|---|
| ||||
Posted in reply to llee | llee wrote:
> I'm trying to read keyboard events through dos services.
> If it's possible to access these services on the win32 platform let me know.
What you're looking for are the windows console API functions. Download microemacs from www.digitalmars.com for example code.
|
Copyright © 1999-2021 by the D Language Foundation