VOGONS


First post, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

PocketDOS, a commercial MS-DOS emulator for Windows CD / Mobile, supports CPU-emulation using a plug-in model. They even have one based on DOSBox 0.70.

The download comes with a pre-compiled DLL, a readme (see below), and the full source (including what looks like the required Visual C project files to build the DLL).

http://forums.pocketpcfaq.com/viewtopic.php?t=10285

=============================================================================== Copyright (C) 2007 PocketDOS […]
Show full quote

===============================================================================
Copyright (C) 2007 PocketDOS

PocketDOS
http://www.pocketdos.com/

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

===============================================================================

This CPU emulator is based on the 80486 CPU emulator from DOSBox (by The DOSBox
Team).

It has been compiled to emulate an i80486 processor with a built-in FPU. This
version requires an ARM compatible processor and Windows CE.NET or Windows
Mobile 4.0 or later.

The source code for the emulator is included.
This release is based on DOSBox 0.70

To use this emulator with PocketDOS, copy the DLL file to the same folder as
the PocketDOS.exe executable.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 2 of 2, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

When I die, it needs to say on my head-stone: He played a lawyer on the 'net. Oh well...

I think there is an issue here. No one but the original license holders can change the license terms. So all the stuff that PocketDOS has added to the DOSBox sources needs to stay under GPL.

And worse (for PocketDOS), by using a (complex) plug-in like this, they are required to make their own software GPL'ed (or maybe not, because the plug-in is an optional module??):

Can I release a non-free program that is designed to load a GPL-covered plug-in?

It depends on how the program invokes its plug-ins. For instance, if the program uses only simple fork and exec to invoke and co […]
Show full quote

It depends on how the program invokes its plug-ins. For instance, if the program uses only simple fork and exec to invoke and communicate with plug-ins, then the plug-ins are separate programs, so the license of the plug-in makes no requirements about the main program.

If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the `main' function of the plug-in with some options and waiting for it to return, that is a borderline case.

Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

See also the question I am writing free software that uses a non-free library.

The FSF has an answer for this - and it requires the license holder to grant them explicitely rights to call the plug-in through a pre-defined interface (in case an interface designed by PocketDOS for their CPU-plugins):

How can I allow linking of proprietary modules with my GPL-covered library under a controlled interface only?

Add this text to the license notice of each file in the package, at the end of the text that says the file is distributed under […]
Show full quote

Add this text to the license notice of each file in the package, at the end of the text that says the file is distributed under the GNU GPL:

Linking ABC statically or dynamically with other modules is making a combined work based on ABC.  Thus, the terms and conditions of the GNU General Public License cover the whole combination.

In addition, as a special exception, the copyright holders of ABC give you permission to combine ABC program with free software programs or libraries that are released under the GNU LGPL and with independent modules that communicate with ABC solely through the ABCDEF interface. You may copy and distribute such a system following the terms of the
GNU GPL for ABC and the licenses of the other code concerned, provided that you include the source code of that other code when and as the GNU GPL requires distribution of source code.

Note that people who make modified versions of ABC are not obligated to grant this special exception for their modified versions; it is their choice whether to do so. The GNU General Public License gives permission to release a modified version without this exception; this exception also makes it possible to release a modified version which carries forward this exception.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32