| Thread overview | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
November 15, 2001 DM 8.23 | ||||
|---|---|---|---|---|
| ||||
trying DM 8.23 compiler in DOSX model.
i only replaced bin\SCPPN.EXE and bin\SCPPND.EXE
i had
typedef enum boolean {false,true};
in a header.
it does not compile any more: "identifier expected"
not a big problem, just for information
Roland
| ||||
November 15, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland | Roland a écrit :
> trying DM 8.23 compiler in DOSX model.
>
> i only replaced bin\SCPPN.EXE and bin\SCPPND.EXE
>
- i mean bin\SCPPND.DLL
- sorry outpw, inpw are still 32 bit contrary to what compiler.htm says
Regards
Roland
| |||
November 15, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland | "Roland" <rv@ronetech.com> wrote in message news:3BF396E2.CB83AF95@ronetech.com... > trying DM 8.23 compiler in DOSX model. > > i only replaced bin\SCPPN.EXE and bin\SCPPND.EXE > > i had > > typedef enum boolean {false,true}; > > in a header. > it does not compile any more: "identifier expected" It should work, and it does for me (I also used 8.23, to be sure). In C, not in C++ (true and false are keywords in ISO-C++, they are the only acceptable values for the bool type). I wonder why this worked until now, -Ab is default for some time (8.20, at least, if not sooner). Probably your header is included from a C++ file, and the compiler correctly complains about misuse of a keyword instead of an (expected) identifier. Regards, Laurentiu | |||
November 15, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland | "Roland" <rv@ronetech.com> wrote in message news:3BF39B52.6D08BC5F@ronetech.com... > - sorry outpw, inpw are still 32 bit contrary to what compiler.htm says I thought I tested & verified it. Could you post an example? -Walter | |||
November 15, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland | This compiles correctly with C, and fails correctly with C++ (since false and true are now C++ keywords). -Walter "Roland" <rv@ronetech.com> wrote in message news:3BF396E2.CB83AF95@ronetech.com... > trying DM 8.23 compiler in DOSX model. > > i only replaced bin\SCPPN.EXE and bin\SCPPND.EXE > > i had > > typedef enum boolean {false,true}; > > in a header. > it does not compile any more: "identifier expected" > > not a big problem, just for information > > Roland > | |||
November 16, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter | okay, thanks
Roland
Walter a écrit :
> This compiles correctly with C, and fails correctly with C++ (since false and true are now C++ keywords). -Walter
>
> "Roland" <rv@ronetech.com> wrote in message news:3BF396E2.CB83AF95@ronetech.com...
> > trying DM 8.23 compiler in DOSX model.
> >
> > i only replaced bin\SCPPN.EXE and bin\SCPPND.EXE
> >
> > i had
> >
> > typedef enum boolean {false,true};
> >
> > in a header.
> > it does not compile any more: "identifier expected"
> >
> > not a big problem, just for information
> >
> > Roland
> >
| |||
November 16, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Walter |
Walter a écrit :
> "Roland" <rv@ronetech.com> wrote in message news:3BF39B52.6D08BC5F@ronetech.com...
> > - sorry outpw, inpw are still 32 bit contrary to what compiler.htm says
>
> I thought I tested & verified it. Could you post an example? -Walter
little function
int _testbug() {
int i;
i1 = inpw(0x03ce); //16 bit
outpw(0x03ce,i); //16 bit
return i;
}
unassembles
?_testbug@@YAHXZ:
mov EDX,03CEh
in EAX,DX ;32 bit !
mov ECX,EAX
mov EAX,ECX
out DX,EAX ;32 bit !
mov EAX,ECX
ret
Regard
Roland
| |||
November 16, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland |
Roland a écrit :
> int _testbug() {
> int i;
> i1 = inpw(0x03ce); //16 bit
> outpw(0x03ce,i); //16 bit
> return i;
> }
>
> unassembles
>
> ?_testbug@@YAHXZ:
> mov EDX,03CEh
> in EAX,DX ;32 bit !
> mov ECX,EAX
> mov EAX,ECX
> out DX,EAX ;32 bit !
> mov EAX,ECX
> ret
>
> Regard
>
> Roland
i forgot: model is DOSX (-mx), i use the idde
Roland
| |||
November 16, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Roland | Hi,
I can generate this too, but only by using a conio.h to provide the prototypes
for inp*/outp*:
====== CODE GENERATES inpw/outpw as 16 bit
#include <stdint.h>
// #include <dos.h>
#include <conio.h>
const baseAddress = 0x300;
int main (int argc, char * argv[])
{
uint8_t i8;
uint16_t i16;
uint32_t i32;
// Generate 3 inputs
i8 = inp (baseAddress);
i16 = inpw(baseAddress);
i32 = inpl(baseAddress);
// generate 3 outputs
outp (baseAddress, i8);
outpw(baseAddress, i16);
outpl(baseAddress, i32);
return 0;
}
====== END of CODE GENERATES inpw/outpw as 16 bit
This variant below (the one I've used) works 100%, fully inline and _inpw/_outpw are 16
bit with -mx.
The changes are the _ before the inp* and outp* and the use of dos.h rather than
conio.h :
====== CODE that works
#include <stdint.h>
#include <dos.h>
// #include <conio.h>
const baseAddress = 0x300;
int main (int argc, char * argv[])
{
uint8_t i8;
uint16_t i16;
uint32_t i32;
// Generate 3 inputs
i8 = _inp (baseAddress);
i16 = _inpw(baseAddress);
i32 = _inpl(baseAddress);
// generate 3 outputs
_outp (baseAddress, i8);
_outpw(baseAddress, i16);
_outpl(baseAddress, i32);
return 0;
}
====== END of CODE that works
======== build lines ...
sc -mx -c -C ioTest.Cpp
Obj2Asm ioTest.Obj >Fixed.Dmp
========
The problem appears to be the conio.h on my system, The 'offending' conio.h on my
system is :
CONIO H 8,091 03-17-01 12:15a CONIO.H
I've not checked the exact nature of the inp/outp prototypes in there, but I assume
that they are substantially different to the updated ones in the dos.h that appeared
with the 8.23 Beta.
John Culver
"Roland" <rv@ronetech.com> wrote in message news:3BF4DB59.9B791A69@ronetech.com...
>
> Walter a écrit :
>
> > "Roland" <rv@ronetech.com> wrote in message news:3BF39B52.6D08BC5F@ronetech.com...
> > > - sorry outpw, inpw are still 32 bit contrary to what compiler.htm says
> >
> > I thought I tested & verified it. Could you post an example? -Walter
>
> little function
>
> int _testbug() {
> int i;
> i1 = inpw(0x03ce); //16 bit
> outpw(0x03ce,i); //16 bit
> return i;
> }
>
> unassembles
>
> ?_testbug@@YAHXZ:
> mov EDX,03CEh
> in EAX,DX ;32 bit !
> mov ECX,EAX
> mov EAX,ECX
> out DX,EAX ;32 bit !
> mov EAX,ECX
> ret
>
> Regard
>
> Roland
>
>
| |||
November 16, 2001 Re: DM 8.23 | ||||
|---|---|---|---|---|
| ||||
Posted in reply to John Culver | Hi.
I've just patched my DM up to the current code set cd81d, then cd823, and the
incorrect code generation with conio.h remains.
John Culver
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply