Mail Archives: djgpp/2003/07/22/15:11:46
Ben,
Thank you for the reply.
One other question:
I went to the DJGPP download site and they wanted to know what operating
system I wanted to use. I think that they are assuming that the compiler
will be run on the same operating system that the executables will run on.
Well, the answer is that I want to use the compiler/assembler on WinXP or
Win2K (or even Win98). But I want to run the executables under MSDOS. What
should I say when downloading DJGPP? My expectation is that the compiler
will run on any of the operating systems but the executable determines if
there is a DOS extender needed, so my guess is that if I want to run the
executables on DOS then that is the version that I download.
Thank You for your help
"Ben Peddell" <killer DOT lightspeed AT bigpond DOT com> wrote in message
news:JZdTa.8844$OM3 DOT 1217 AT news-server DOT bigpond DOT net DOT au...
> Teece wrote:
> > Please bear with me since I am not all that sure about how to ask the
> > questions that I have.
> >
> > I have an application that I want to develop for the PC with special
> > hardware that will run on the PCI bus. I will need to send data from the
> > program directly to the hardware. It is not necessary that I use a
> > sophisticated operating system like XP or even any version of Windows.
> > Therefore I can avoid the difficulty of writing Windows device drivers
> > for the new hardware, etc.
> >
> > I suppose that I could go a couple of ways. One way would be to use good
> > old DOS, which does not run in protected mode, and use DJGPP (or VC1.52,
> > I think) to obtain an executable. Since DOS does not know about
> > protected mode I would not cause a segmentation fault when I directly
> > access the PCI hardware. Is this correct?
> >
> Yes.
> You can also use the PCI BIOS in real mode or protected mode.
> You can read and write PCI Configuration Registers using the PCI BIOS,
> then do direct I/O to the memory and ports of the device.
>
> > I was reading in the DJGPP documentation that DJGPP has a DOS extender.
> > This was described as a layer of software that "traps the call, switches
> > the CPU to real mode, reissues the call, waits for the service to do its
> > thing, then switches the CPU back into protected mode, and returns to
> > the application code that called the real-mode service".
> >
> Actually, DJGPP uses DPMI. It only switches to V86 mode when it needs to
> issue a real-mode call (such as Disk I/O), or an interrupt which is not
> fully handled by the program.
>
> > Does Windows have a DOS extender? Is it not possible to run old DOS
> > programs on XP in what passes for a DOS emulator?
> >
> Windows has DPMI. Alas, Windows NT/2k/XP do not permit direct port I/O
> without being severly hampered ("helped").
>
> > Does Linux have a DOS extender? Will an executable made with DJGPP run
> > on Linux?
> >
> A compiled DJGPP executable will not run natively on Linux.
> However, a DJGPP program can be easily ported to Linux (provided you
> don't use too much DJGPP-specific stuff).
>
> You'd need to make a kernel module to access the ports of the device.
>
- Raw text -