New upstream version 2.0pre9.2
Some checks failed
Master / Scheduled (FULL) (push) Has been cancelled
Master / Triggered (push) Has been cancelled
Master / Triggered (ASAN) (push) Has been cancelled
Master / Triggered (FULL) (push) Has been cancelled

This commit is contained in:
geos_one 2025-08-10 12:35:43 +02:00
commit 91736529d5
1056 changed files with 370820 additions and 0 deletions

3
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,3 @@
# These are supported funding model platforms
patreon: stsp

51
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,51 @@
---
name: Bug report
about: Create a bug report
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A description of what the problem is.
**To Reproduce**
Steps to reproduce the behaviour:
**Attach program/game binaries or provide an URL**
If the problem needs specific DOS files to reproduce, please attach
or provide the download URL.
**Attach the log**
It is located in ~/.dosemu/boot.log
Unless you get the plain crash of dosemu2,
you may need to enable some logging flags
to make your report more useful.
See description of -D option in `man dosemu.bin`.
**A regression?**
If you happened to know this problem didn't
exist on dosemu1 or some earlier versions of
dosemu2, please write.
**dosemu2 origins**
Please describe where do you get dosemu2
from (PPA, COPR, git sources). In case of a
source build, please describe any configure-time
customizations. In case of binary packages,
please specify your distribution and make sure
to install the debuginfo packages before creating
the log file.
**Additional info**
Please write here if you did any dosemu2 setup
customizations, like installing any custom DOS
or command.com, or altering the dosemu2
configuration settings. Note that freedos, even
from dosemu-freedos package of dosemu1, counts
as a custom DOS and should be mentioned here.
Also make a note if it is a protected or real-mode
program. If you suspect any particular dosemu2
component (DPMI, PIC, PIT etc) to be responsible
for the problem, please write.

View File

@ -0,0 +1,10 @@
---
name: Feature request or question
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---

62
.github/workflows/ci-build.yml vendored Normal file
View File

@ -0,0 +1,62 @@
name: Build
on:
workflow_call:
inputs:
jobtype:
required: true
type: string
subtype:
required: true
type: string
runtype:
required: true
type: string
jobs:
build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: package install
run: ./ci_prereq.sh
- name: build
env:
JOBTYPE: ${{ inputs.jobtype }}
SUBTYPE: ${{ inputs.subtype }}
RUNTYPE: ${{ inputs.runtype }}
run: ./ci_build.sh
- name: cache binaries
uses: actions/cache@v4
env:
cache-name: test-binaries
with:
path: ~/cache
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: test
id: test
env:
JOBTYPE: ${{ inputs.jobtype }}
SUBTYPE: ${{ inputs.subtype }}
RUNTYPE: ${{ inputs.runtype }}
run: ./ci_test.sh
- name: upload failure logs
if: ${{ always() && (steps.test.outcome == 'failure') }}
uses: actions/upload-artifact@v4
with:
name: failure-logs
path: test_*

12
.github/workflows/ci-manual-asan.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: Manual ASAN
on:
workflow_dispatch:
jobs:
manual_asan:
name: Manual (ASAN)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'manual'
subtype: 'asan'
runtype: 'simple'

12
.github/workflows/ci-manual-full.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: Manual FULL
on:
workflow_dispatch:
jobs:
manual_full:
name: Manual (FULL)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'manual'
subtype: ''
runtype: 'full'

12
.github/workflows/ci-manual-normal.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: Manual Normal
on:
workflow_dispatch:
jobs:
manual_normal:
name: Manual (Normal)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'manual'
subtype: ''
runtype: 'normal'

73
.github/workflows/ci-master.yml vendored Normal file
View File

@ -0,0 +1,73 @@
name: Master
on:
schedule:
- cron: '23 23 * * 0' # 23:23 Every Sunday
pull_request:
types:
- opened
- reopened
- synchronize
push:
jobs:
# scheduled_asan:
# name: Scheduled (ASAN)
# if: (github.event_name == 'schedule' &&
# github.repository_owner == 'dosemu2')
# uses: ./.github/workflows/ci-build.yml
# with:
# jobtype: 'schedule'
# subtype: 'asan'
# runtype: 'simple'
scheduled_full:
name: Scheduled (FULL)
if: (github.event_name == 'schedule' &&
github.repository_owner == 'dosemu2')
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'schedule'
subtype: ''
runtype: 'full'
triggered:
name: Triggered
if: (github.event_name != 'schedule' &&
contains(github.event.head_commit.message, '[skip ci]') == false &&
contains(github.event.head_commit.message, '[full ci]') == false &&
contains(github.event.head_commit.message, '[asan ci]') == false)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'triggered'
subtype: ''
runtype: 'normal'
triggered_asan:
name: Triggered (ASAN)
if: (github.event_name != 'schedule' &&
contains(github.event.head_commit.message, '[skip ci]') == false &&
contains(github.event.head_commit.message, '[full ci]') == false &&
contains(github.event.head_commit.message, '[asan ci]') == true)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'triggered'
subtype: 'asan'
runtype: 'simple'
triggered_full:
name: Triggered (FULL)
if: (github.event_name != 'schedule' &&
contains(github.event.head_commit.message, '[skip ci]') == false &&
contains(github.event.head_commit.message, '[full ci]') == true &&
contains(github.event.head_commit.message, '[asan ci]') == false)
uses: ./.github/workflows/ci-build.yml
with:
jobtype: 'triggered'
subtype: ''
runtype: 'full'

39
.gitignore vendored Normal file
View File

@ -0,0 +1,39 @@
/install-sh
/config.status
/config.sub
*.d
!dosrc.d
*.o
configure
config.log
aclocal.m4
autom4te.cache
Makefile.conf
plugin_enable
*.map
*.xxd
_*.h.in
_*.h
*.hh
config.hh.in
*.yy.c
*.zz.c
parser.c
parser.h
parser.output
*.1
dosemu_c.c
global_c.c
etc/Xfonts
/etc/ttf/.uuid
.tstamp
/2.*
/bin
/commands
/lib
dosemu.desktop
dosdebug
hdinfo
bios_symbols.c
keysym_attributes.c
make_attributes

3
.tito/packages/.readme Normal file
View File

@ -0,0 +1,3 @@
the .tito/packages directory contains metadata files
named after their packages. Each file has the latest tagged
version and the project's relative directory.

1
.tito/packages/dosemu2 Normal file
View File

@ -0,0 +1 @@
2.0pre9-2 ./

6
.tito/tito.props Normal file
View File

@ -0,0 +1,6 @@
[buildconfig]
builder = tito.builder.Builder
tagger = tito.tagger.VersionTagger
changelog_do_not_remove_cherrypick = 0
changelog_format = %s (%ae)

28
.travis.yml Normal file
View File

@ -0,0 +1,28 @@
language: c
os: linux
dist: focal
if: type = cron
cache:
directories:
- $HOME/cache
before_install:
- ./ci_prereq.sh
install:
- ./ci_build.sh
before_script:
# this acl no longer persists in Focal due to /dev/kvm management by systemd
# - sudo setfacl -m u:${USER}:rw /dev/kvm
# so we have to do this instead
- sudo chmod 666 /dev/kvm
script:
- ./ci_test.sh
after_script:
- echo "after_script"

2
BUGS Normal file
View File

@ -0,0 +1,2 @@
Please report bugs to the Bug Tracking System for DOSEMU2 at
https://github.com/dosemu2/dosemu2/issues

76
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,76 @@
# How to contribute
## Submitting changes
Please send a
[GitHub Pull Request to dosemu2](https://github.com/dosemu2/dosemu2/pull/new/master)
with a clear list of what you've done (read more about
[pull requests](http://help.github.com/pull-requests/)). Please follow our
coding conventions (below), make sure all of your commits are atomic (one
feature per commit) and ensure at every commit in a series the code compiles.
Always write a clear log message for your commits. One-line messages are fine
for small changes, but bigger changes should look like this:
$ git commit -m "A brief summary of the commit
>
> A paragraph describing what changed and its impact."
## Coding conventions
Since dosemu2 has a long history, there are many different coding styles in
use. We'd like to standardise on a subtle variant of the Kernighan & Ritchie
style, but mass conversion is not really an option as we don't want to obscure
the commit history. New code should follow the style below, but old code
should be left in the style it is and modifications to it should be in the
same style. If an existing function is so horridly formatted as to make it
unreadable or it will be 80% changed, then it should be reformatted to the new
style and submitted as a separate commit before any changes are done. Changes
are then made in a followup commit. This will allow reviewers to view
significant changes outside of the reformatting.
Coding style is that which would be produced by
`indent -kr -nut -i2 -cli2`
```C
/*
* large block comments
* second line
*/
int main(int argc, char *argv[])
{
int x, y, z = 1;
switch (z) {
case 1:
printf("hello\n");
break;
case 0:
printf("there\n");
break;
default:
printf("unmatched switch case 0x%02x\n", z);
return 1;
}
while (x == y) {
a();
b();
if (x)
single_line_1();
if (z) {
single_line_2();
} else {
multiple_line1();
multiple_line2();
multiple_line3();
}
}
return 0; // no round brackets
}
```

339
COPYING Normal file
View File

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING.DOSEMU, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

364
COPYING.DOSEMU Normal file
View File

@ -0,0 +1,364 @@
Copyright of DOSEMU2, October 2014
==================================
1.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2. All dosemu2 C sources (*.c) that have no explicit copyright statement,
are copyrighted under GPLv2. Headers (*.h) without explicit
copyrights are copyrighted similar to their respective .c
counterparts, or, if no .c file with that name - under GPLv2+.
3. Parts of the code not covered by the GPL are marked explicitly
within the code, and/or their copyrights are at the end of this
file.
4. There are no restrictions to run any (proprietary or free) DOS software
under dosemu2, unless the license of that software says otherwise.
--- GPLv2 (used as a default license in older dosemu releases)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--- The QEMU emulator, before July 2013
(src/base/dev/pic/*, src/base/dev/ne2k/ne2000.c)
The following points clarify the QEMU license:
1) QEMU as a whole is released under the GNU General Public License
2) Parts of QEMU have specific licenses which are compatible with the
GNU General Public License. Hence each source file contains its own
licensing information.
Many hardware device emulation sources are released under the BSD license.
3) The Tiny Code Generator (TCG) is released under the BSD license
(see license headers in files).
4) QEMU is a trademark of Fabrice Bellard.
Fabrice Bellard.
dosemu2 note: in July 2013 QEMU license was updated to state GPLv2-only:
-1) QEMU as a whole is released under the GNU General Public License
+1) QEMU as a whole is released under the GNU General Public License,
+version 2.
Therefore we take care to remove all changes done since that date,
while porting QEMU sources to dosemu2.
--- The Mach DOS Emulator (mfs.c, emm.c, emufs.s)
Copyright (c) 1991 Carnegie Mellon University
All Rights Reserved.
Permission to use, copy, modify and distribute this software and its
documentation is hereby granted, provided that both the copyright
notice and this permission notice appear in all copies of the
software, derivative works or modified versions, and any portions
thereof, and that both notices appear in supporting documentation.
CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
Carnegie Mellon requests users of this software to return to
Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
School of Computer Science
Carnegie Mellon University
Pittsburgh PA 15213-3890
any improvements or extensions that they make and grant Carnegie Mellon
the rights to redistribute these changes.
--- XFree86 (src/base/mouse/mouseint.c)
Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
Copyright 1993 by David Dawes <dawes@physics.su.oz.au>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the names of Thomas Roell and David Dawes not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission. Thomas Roell
and David Dawes makes no representations about the suitability of this
software for any purpose. It is provided "as is" without express or
implied warranty.
THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- Doug Lea's malloc in src/base/lib/misc/dlmalloc.c
This is a version (aka dlmalloc) of malloc/free/realloc written by
Doug Lea and released to the public domain, as explained at
http://creativecommons.org/licenses/publicdomain. Send questions,
comments, complaints, performance data, etc to dl@cs.oswego.edu
--- The VGA fonts in src/base/dev/vga/vgafonts.c (copyleft_vgafonts.txt)
This *compilation* is (c) Copyright 1991,1992 Joseph (Yossi) Gil.
Permission is granted to use and redistribute the files comprising
this collection in any way (including conversion to another format),
provided that my name and addresses and this notice is preserved.
Simple (dare I say trivial?) bitmapped screen fonts such as the ones
included in this collection cannot be copyrighted. In general, one can
only copyright programs that generate fonts. This is why postscript
fonts are copyrightable. For more details refer to discussions various
"legal" newsgroups. In addition, I have included a relevant excerpt
from the FAQ of comp.fonts at the bottom of this document.
No one can claim any copyright on the fonts in this archive. They
have been collected from numerous sources. Legally speaking, you are
*free* to do with the individual fonts whatever you like. Individual
fonts are in the public domain. I do ask that you will kindly refrain
from causing confusion by distributing modified versions of the fonts
contained in this collection.
Please send any all your EGA/VGA text mode fonts contributions to me
rather than distributing a modified version of this collection. I
will add your fonts to the next edition of this collection and happily
acknowledge your help. Your cooperation will enable us all to benefit
from your contribution. See the file LOOKING4.TXT for more details.
I am trying to keep track of the origins of these fonts. See the file
FONTORIG.TXT. Unfortunately, I only started to record this information
on version 1.2. Records of origin of earlier fonts are missing.
If you know the origin of any of the fonts here, please drop me a note.
Staring on version 1.6 the collection also includes some of the
miscellaneous utilities which I use for preparing it. Among these
you will find programs for loading, viewing, trimming and otherwise
manipulating the fonts. These utilities are also distributed as a
separate archive called fntutlXX.ZIP where XX is the version number.
All the utilities require no shareware payment. Restrictions on
distribution and usage are only to the extent necessary to protect
the free distribution.
I see this is as my pleasant duty to pay tribute to the following
individuals who communicated and contributed to this archive:
Dov Grobgeld <cfgrob@weizmann.weizmann.ac.il>
Angelos Karageorgiou <karage@insci.com>,<karage@scus1.ctstateu.edu>
Alexandre (Alex) Khalil <9999SC01@DT3.DT.UH.EDU>,<alex@dt.uh.edu>
Patrick Arzul <andrewd@cs.uct.ac.za>
Mike Threepoint <linhart@trident.usacs.rutgers.edu>
Glaude David [Glu] <dglaude@is1.vub.ac.be>
Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
Itamar Even-Zohar <itiez@ccsg.tau.ac.il>
A.Weeks%bath.ac.uk@ib.rl.ac.uk
Miguel Farah.
This collection would not have been what it today is without their
help!
Author's Address
================
E-mail internet address: yogi@cs.technion.ac.il
Alternate E-mail addresses: yogi@cs.ubc.ca, yogi@umiacs.umd.edu.
Permanent mailing address is:
Joseph Gil, P.O. Box 3148, Jerusalem, Israel.
Hebrew mailing address (you cannot read the following unless
your screen adapter can display Hebrew character):
ליג יסוי
3148 .ד.ת
םילשורי
--------------------------------------------------------------------------
From comp.fonts Sat Sep 5 11:12:35 1992
walsh@cs.umass.edu (Norman Walsh)
Newsgroups: comp.fonts Subject: FAQ: Part-I: General Info Message-ID:
<WALSH.92Sep4153207@ibis.cs.umass.edu> Date: 4 Sep 92 19:32:07 GMT
Reply-To: walsh@cs.umass.edu Organization: Dept of Comp and Info Sci,
Univ of Mass (Amherst)
FAQ for comp.fonts: Part I: General Info
Maintained by Norm Walsh <walsh@cs.umass.edu> and
Bharathi Jagadeesh <bjag@nwu.edu>
Version 0.0.3, Release 04SEP92
Welcome to the comp.fonts FAQ. This article, posted monthly, describes
many of the basic questions that seem to be repeated frequently on
comp.fonts. Your comments are both welcome and encouraged.
Standard disclaimers apply.
....
At one level, there are two major sorts of fonts: bitmapped and
outline (scalable). Bitmapped fonts are falling out of fashion
as various outline technologies grow in popularity and support.
Bitmapped fonts represent each character as a rectangular grid of
pixels. The bitmap for each character indicates precisely what
pixels should be on and off. Printing a bitmapped character is
simply a matter of blasting the right bits out to the printer.
There are a number of disadvantages to this approach. The bitmap
represents a particular instance of the character at a particular
size and resolution. It is very difficult to change the size,
shape, or resolution of a bitmapped character without significant
loss of quality in the image. On the other hand, it's easy to do
things like shading and filling with bitmapped characters.
.....
5. Are fonts copyrightable?
This topic is hotly debated at regular intervals on comp.fonts.
Terry Carroll <tjc50@juts.ccc.amdahl.COM> provides the following
analysis of current [ed: as of 6/92] legislation and regulation
regarding fonts and copyrights. Members of the comp.fonts community
are encouraged to submit other materials that add clarity to the
issue.
*-[Quote]-----------------------------------------------------------*
First, the short answer: Typefaces are not copyrightable; bitmapped
fonts are not copyrightable, but scalable fonts are copyrightable.
Authorities for these conclusions follow.
Before we get started, let's get some terminology down:
A typeface is a set of letters, numbers, or other symbolic
characters, whose forms are related by repeating design elements
consistently applied in a notational system and are intended to be
embodied in articles whose intrinsic utilitarian function is for use
in composing text or other cognizable combinations of characters.
A font is the computer file or program that is used to represent
or create the typeface.
Now, on to the legal authorities:
Volume 37 of the Code of Federal Regulations specifies this about
the copyrightability of typefaces:
"The following are examples of works not subject to copyright and
applications for registration of such works cannot be entertained:
. . . typeface as typeface" 37 CFR 202.1(e).
By the way, you won't find that in the most recent (7/1/91) edition
of the CFR; the addition was enacted 2/21/92. It'll be in the
next edition, though. It's described in the 2/21/92 edition of
the Federal Register, page 6201 (57 FR 6201). The change didn't
actually change the law, it just clarified it, and codified existing
Copyright Office policy.
The regulation is in accordance with the House of Representatives
report that accompanied the new copyright law, when it was passed
in 1976:
"The Committee has considered, but chosen to defer, the possibility
of protecting the design of typefaces. A 'typeface' can be defined
as a set of letters, numbers, or other symbolic characters, whose
forms are related by repeating design elements consistently applied
in a notational system and are intended to be embodied in articles
whose intrinsic utilitarian function is for use in composing text
or other cognizable combinations of characters. The Committee
does not regard the design of typeface, as thus defined, to be a
copyrightable 'pictoral, graphic, or sculptural work' within the
meaning of this bill and the application of the dividing line in
section 101." H. R. Rep. No. 94-1476, 94th Congress, 2d Session
at 55 (1976), reprinted in 1978 U.S. Cong. and Admin. News 5659,
5668.
It's also in accordance with the one court case I know of that
has considered the matter: Eltra Corp. V. Ringer, 579 F.2d 294,
208 USPQ 1 (1978, C.A. 4, Va.).
The Copyright Office holds that a bitmapped font is nothing more
than a computerized representation of a typeface, and as such is
not copyrightable:
"The [September 29, 1988] Policy Decision [published at 53 FR 38110]
based on the [October 10,] 1986 Notice of Inquiry [published at 51
FR 36410] reiterated a number of previous registration decisions
made by the [Copyright] Office. First, under existing law, typeface
as such is not registerable. The Policy Decision then went on
to state the Office's position that 'data that merely represents
an electronic depiction of a particular typeface or individual
letterform' [that is, a bitmapped font] is also not registerable."
57 FR 6201.
However, scalable fonts are, in the opinion of the Copyright
Office, computer programs, and as such are copyrightable:
"... the Copyright Office is persuaded that creating scalable
typefonts using already-digitized typeface represents a
significant change in the industry since our previous [September
29, 1988] Policy Decision. We are also persuaded that computer
programs designed for generating typeface in conjunction with low
resolution and other printing devices may involve original computer
instructions entitled protection under the Copyright Act. For
example, the creation of scalable font output programs to produce
harmonious fonts consisting of hundreds of characters typically
involves many decisions in drafting the instructions that drive the
printer. The expression of these decisions is neither limited by
the unprotectable shape of the letters nor functionally mandated.
This expression, assuming it meets the usual standard of authorship,
is thus registerable as a computer program." 57 FR 6202.
*-[Unquote]---------------------------------------------------------*
-------------------------------------------------------------------------------
FLEXI IBM VGA9 FONTS: Scalable TrueType fonts based on the iconic hardware
VGA character set.
INCLUDED FONTS:
* Flexi IBM VGA9 True: Corrected aspect ratio, extended character set
* Flexi IBM VGA9 True 437: Corrected aspect ratio, CP437/DOS encoding
* Flexi IBM VGA9 False: Uncorrected aspect ratio, extended character set
* Flexi IBM VGA9 False 437: Uncorrected aspect ratio, CP437/DOS encoding
LICENSE:
These fonts are released under the Creative Commons Attribution-ShareAlike
4.0 International license: http://creativecommons.org/licenses/by-sa/4.0/
_________________________________________
// VileR 2018-05 https://int10.org

3380
ChangeLog.ancient Normal file

File diff suppressed because it is too large Load Diff

5307
ChangeLog.old Normal file

File diff suppressed because it is too large Load Diff

8212
ChangeLog.old1 Normal file

File diff suppressed because it is too large Load Diff

60
INSTALL Normal file
View File

@ -0,0 +1,60 @@
building and installing dosemu2 from sources
==============================================
-> REQUIREMENTS for dosemu2:
- fdpp of the latest version, for now from git or from PPA:
https://code.launchpad.net/~dosemu2/+archive/ubuntu/ppa
of from COPR:
https://copr.fedorainfracloud.org/coprs/stsp/dosemu2/
- gcc >= 8.1 or clang >= 3.7.0
- glibc >= 2.20
- linux >= 3.16 for x86-64, >= 4.7 recommended.
With older version than 3.16 there may be some problems
with DPMI, especially make sure to not use 3.14 and 3.15.
linux >= 4.3 for i386.
linux >= 4.11 if you want to run 32bit dosemu under x86_64 kernel
with multilib environment (you likely don't want to do this).
- bison and flex
- SDL >= 2.0.6, >= 2.26.0 is required for copy/paste support.
- libslirp >= 4.1.0 recommended for networking
- json-c >= 0.13 recommended
- development libraries: Xext, slang, gpm, alsa, fluidsynth,
ladspa, libao can be used when available.
This means that Ubuntu Focal or Fedora 31 are the minimum
recommended systems.
--------------------------------------------------------------------------
1. Compile
--------------------------------------------------------------------------
First you should run:
./autogen.sh
Then either:
./default-configure
make
or
- create a seperate directory and run
$SRCDIR/configure (or $SRCDIR/default-configure; see below)
make
in that directory.
- If you want dosemu2 executable with debug info, then add -d parameter
to default-configure on the previous step. But expect the debug build
to work considerably slower than the release build!
- sudo make install
You can now start dosemu2 by typing "dosemu". But if you didn't install
comcom32, dosemu2 may not find command.com. We recommend to install
the pre-compiled comcom32 package either from PPA or COPR. Or you can
instead download it from here:
https://dosemu2.github.io/comcom32/files/comcom32.zip
unzip to ~/.dosemu/drive_c and symlink as command.com.
You may not want to build comcom32 from sources unless you know how
to install djgpp.

111
Makefile Normal file
View File

@ -0,0 +1,111 @@
# Makefile for DOSEMU
#
all: default
srcdir=.
top_builddir=.
SUBDIR:=.
ifeq ($(filter deb rpm %/configure configure,$(MAKECMDGOALS)),)
-include Makefile.conf
endif
REALTOPDIR ?= $(abspath $(srcdir))
$(REALTOPDIR)/configure: $(REALTOPDIR)/configure.ac
cd $(@D) && autoreconf --install -v -I m4
Makefile.conf config.status src/include/config.hh etc/dosemu.desktop: \
$(REALTOPDIR)/configure
ifeq ($(findstring $(MAKECMDGOALS), clean realclean pristine distclean),)
@echo "Running configure ..."
$<
else
$< || true
endif
install: changelog
default install: config.status src/include/config.hh etc/dosemu.desktop
@$(MAKE) -C man $@
@$(MAKE) -C src $@
clean realclean:
@$(MAKE) -C man $@
@$(MAKE) -C src $@
uninstall:
@$(MAKE) -C src uninstall
docs:
@$(MAKE) -C src/doc all
@$(MAKE) -C src/doc install
docsclean:
@$(MAKE) -C src/doc clean
GIT_REV := $(shell $(REALTOPDIR)/git-rev.sh $(REALTOPDIR) $(top_builddir))
.LOW_RESOLUTION_TIME: $(GIT_REV)
$(PACKETNAME).tar.gz: $(GIT_REV) changelog
rm -f $(PACKETNAME).tar.gz
(cd $(REALTOPDIR); git archive -o $(abs_top_builddir)/$(PACKETNAME).tar --prefix=$(PACKETNAME)/ HEAD)
tar rf $(PACKETNAME).tar --transform 's,^,$(PACKETNAME)/,' --add-file=changelog; \
if [ -f "$(fdtarball)" ]; then \
tar -Prf $(PACKETNAME).tar --transform 's,^$(dir $(fdtarball)),$(PACKETNAME)/,' --add-file=$(fdtarball); \
fi
gzip $(PACKETNAME).tar
dist: $(PACKETNAME).tar.gz
rpm: dosemu2.spec.rpkg
git clean -fd
rpkg local
deb:
debuild -e CC=clang -i -us -uc -b
changelog:
if [ -d $(top_srcdir)/.git -o -f $(top_srcdir)/.git ]; then \
git --git-dir=$(top_srcdir)/.git log >$@ ; \
else \
echo "Unofficial build by `whoami`@`hostname`, `date`" >$@ ; \
fi
log: changelog
tests:
python3 test/test_dos.py PPDOSGITTestCase
pristine distclean mrproper: Makefile.conf docsclean
@$(MAKE) -C src pristine
rm -f Makefile.conf
rm -f $(PACKETNAME).tar.gz
rm -f ChangeLog
rm -f `find . -name config.cache`
rm -f `find . -name config.status`
rm -f `find . -name config.log`
rm -f `find . -name aclocal.m4`
rm -f `find . -name configure`
rm -f `find . -name Makefile.conf`
rm -rf `find . -name autom4te*.cache`
rm -f debian/$(PACKAGE_NAME).*
rm -rf debian/$(PACKAGE_NAME)
rm -f debian/*-stamp
rm -f debian/files
rm -f src/include/config.hh
rm -f src/include/stamp-h1
rm -f src/include/config.hh.in
rm -f src/include/version.hh
rm -f `find . -name '*~'`
rm -f `find . -name '*[\.]o'`
rm -f `find src -type f -name '*.d'`
rm -f `find . -name '*[\.]orig'`
rm -f `find . -name '*[\.]rej'`
rm -f gen*.log
rm -f config.sub config.guess
rm -rf 2.*
rm -rf autom4te.cache
$(REALTOPDIR)/scripts/mkpluginhooks clean
tar: distclean
VERSION=`cat VERSION` && cd .. && tar czvf dosemu-$$VERSION.tgz dosemu-$$VERSION

114
Makefile.conf.in Normal file
View File

@ -0,0 +1,114 @@
# Makefile.conf.in for DOSEMU
#
# This file is included by all Makefiles
DOSBIN = dosemu.bin
PACKAGE_TARNAME:=@PACKAGE_TARNAME@
prefix:=@prefix@
exec_prefix=@exec_prefix@
bindir:=@bindir@
sysconfdir:=@sysconfdir@
confdir:=@confdir@
libdir:=@libdir@
plugindir:=@plugindir@
datarootdir:=@datarootdir@
datadir:=@datadir@
mandir:=@mandir@
docdir:=@docdir@
x11fontdir:=@x11fontdir@
ttffontdir:=@ttffontdir@
fdtarball:=@fdtarball@
cmdsuff:=@cmdsuff@
abs_top_srcdir:=@abs_top_srcdir@
abs_top_builddir:=@abs_top_builddir@
INCDIR=-I${top_builddir}/src/include -I${top_builddir}/src/plugin/include \
-I${top_srcdir}/src/base/bios/x86 -I${top_srcdir}/src/include \
-I${top_srcdir}/src/base/lib
top_srcdir:=$(abs_top_srcdir)
srcdir = $(patsubst %/,%,$(abs_top_srcdir)/src/$(SUBDIR))
CFLAGS:=@CFLAGS@
ALL_CFLAGS:=@DOSEMU_CFLAGS@ $(CFLAGS)
ASFLAGS:=@ASFLAGS@
XASFLAGS:=@XASFLAGS@
CPPFLAGS:=@CPPFLAGS@
ALL_CPPFLAGS:=@DOSEMU_CPPFLAGS@ $(INCDIR) $(CPPFLAGS)
LDFLAGS:=@LDFLAGS@
AS_LDFLAGS:=@AS_LDFLAGS@
ALL_LDFLAGS:=@DOSEMU_LDFLAGS@ $(LDFLAGS)
DOSBIN_LDFLAGS:=@DOSBIN_LDFLAGS@
LIBS:=@LIBS@
CC:=@CC@
CPP:=@CPP@
LD:=@CC@
AS:=@AS@
XAS:=@XAS@
AS_LD:=@AS_LD@
XOBJCOPY:=@XOBJCOPY@
CC_FOR_BUILD:=@CC_FOR_BUILD@
CFLAGS_FOR_BUILD:=@CFLAGS_FOR_BUILD@
YACC:=@YACC@
# NOTE: we really need bison, yacc won't work any more
#YACC=bison -y
LEX:=@LEX@
LN_S := @LN_S@
LN_SFT := @LN_SFT@
# This gets defined even if we chose via ./include/config.h NOT to
# use the debugger
DEBUGGER:=@DEBUGGER@
OPTIONALSUBDIRS := @OPTIONALSUBDIRS@
PLUGINSUBDIRS := @PLUGINSUBDIRS@
ST_PLUGINSUBDIRS := @ST_PLUGINSUBDIRS@
HAVE_LIBBFD := @HAVE_LIBBFD@
OS=@CONFIG_HOST@
RANLIB:=@RANLIB@
PACKAGE_NAME:=@PACKAGE_TARNAME@
USE_DL_PLUGINS := @USE_DL_PLUGINS@
X86_EMULATOR := @X86_EMULATOR@
X86_JIT := @X86_JIT@
DNATIVE := @DNATIVE@
KVM := @KVM@
MCONTEXT := @MCONTEXT@
USE_OFD_LOCKS := @USE_OFD_LOCKS@
USE_XATTRS := @USE_XATTRS@
USE_EVTIMER_FD := @USE_EVTIMER_FD@
USE_OSS := @USE_OSS@
USE_SOFTFLOAT := @USE_SOFTFLOAT@
INSTALL:=@INSTALL@
REALTOPDIR:=$(top_srcdir)
SRCPATH:=$(top_srcdir)/src
PACKAGE_VERSION:=$(shell cd $(top_srcdir) && ./getversion)
PACKAGE_VERSION_SPACES:=$(subst ., ,$(PACKAGE_VERSION))
PACKAGE_VERSION_SPACES:=$(subst -, ,$(PACKAGE_VERSION_SPACES))
PACKAGE_VERSION_SPACES:=$(subst pre, pre,$(PACKAGE_VERSION_SPACES))
VERSION:=$(word 1, $(PACKAGE_VERSION_SPACES))
SUBLEVEL:=$(word 2, $(PACKAGE_VERSION_SPACES))
PATCHLEVEL1:=$(word 3, $(PACKAGE_VERSION_SPACES))
PATCHLEVEL2:=$(word 4, $(PACKAGE_VERSION_SPACES))
ifeq ($(PATCHLEVEL2),)
PACKETNAME:=$(PACKAGE_NAME)-$(VERSION).$(SUBLEVEL)$(PATCHLEVEL1)
else
PACKETNAME:=$(PACKAGE_NAME)-$(VERSION).$(SUBLEVEL)$(PATCHLEVEL1).$(PATCHLEVEL2)
endif
THISVERSION:=$(VERSION).$(SUBLEVEL)-$(PATCHLEVEL1)
PACKVERSION:=$(VERSION).$(SUBLEVEL)$(PATCHLEVEL1)
BINPATH:=$(top_builddir)/$(THISVERSION)
RELEASE_DATE="@RELEASE_DATE@"
REVISION:=$(shell cd $(top_srcdir) && ./getversion -r)
ifeq ($(USE_DL_PLUGINS),1)
DL_CFLAGS:=-fPIC
else
-include $(top_builddir)/src/plugin/*/Makefile.conf
endif

39
NEWS.md Normal file
View File

@ -0,0 +1,39 @@
## pre9
There are over ~3300 commits since the last preview release (pre8)
and a very large chunks of dosemu2 architecture were written and
stabilized. Hopefully it would be possible to do more frequent
releases in the future and avoid such a long development cycles.
Note: because of the new architecture in place, we suggest to
re-install dosemu completely. I.e. erase your /etc/dosemu
~/.dosemurc ~/.dosemu/.dosemurc and clean ~/.dosemu/drive_c from
any system/boot files (or remove ~/.dosemu completely if there is
nothing important within). Compatibility mode (to run old setups)
is present but may require some manual adjustments. Also note that
compatibility mode means a reduced feature set. If you insist on
an old setup but dosemu2 doesn't pick it up properly, don't hesitate
to ask for help on our github discussions page.
Summary of user-visible changes:
* fdpp is now our default OS. It is a 64bit DOS core that boots under
dosemu2 and allows to work without installing any DOS. Of course
you can still install any DOS if you want, but that will in most
cases only cause the features reduction.
* comcom32 is our default shell. comcom32 is a command.com variant that
runs in 32bit space. Eventually we aim for the 64bit shell, but so
far we only have this. You can still use your favourite shell if you
want.
* Worked out the security model. We hope that dosemu2 now provides
a relatively secure sandbox environment, and yet exposes all the
needed features. Exposing features in a secure manner (rather than
to simply declare them insecure and disable) was a challenge.
* Added KVM-assisted acceleration to DPMI (@bartoldeman).
* Added TTF support (@andrewbird)
* Implemented region locking and share support in MFS. One of the
most requested/missed feature of dosemu1 times.
* Implemented $_trace_mmio option (@dos4boss)
* Lots of speed-ups to simx86 (@bartoldeman)
* Lots of i18n work.
* musl support
* Added lots of CI tests (@andrewbird)

331
NEWS.old Normal file
View File

@ -0,0 +1,331 @@
Version dosemu2-2.0pre8
=============
We have ~300 commits, many of which are bug-fixing, as pre7 was horribly
buggy due to heavy development. As for the newly introduced regressions -
not too much known at this time, except the drop of clang support. We
hope to get clang support back again in the very near future.
Summary of changes:
* Improved hx-extender support so that the win32 version of quake2
can now work under dosemu2 (in pre7 it was supposed to but didn't).
* Support for external EMS managers like emm286.exe was (partially)
implemented. As the result, we have a new UMB driver, umb.sys, that
allows to enable UMB without also enabling EMS, leaving this possibility
to an external driver.
* New DOSes supported: RxDOS 7.1.x and 7.2, PC-MOS 5.01.
* fossil driver got updates and missing functionality additions.
* Sound stack got updates to reduce the latencies.
* Passing DOS commands via dosemu's cmdline was changed, see man for
details. Many new possibilities added, like passing environment
variables and more.
* Some no longer used commands (comline.com, ecpuon.com, ecpuoff.com)
were removed.
* Dumb terminal mode now handles the charsets.
* Fixes to all regression bugs of pre7 - there were many of them.
List of tracker bugs that were closed:
cpu exception in dosemu code when launched from .desktop file #414
Duplicate src file detect.h #426
int2f - misplaced brace? #398
HMA unavailable after a reboot from within DOSemu #427
VESA test utility vbetest.exe doesn't work since new int_revect logic #419
Int 14h function 1Bh returns pointer to wrong ID string after reboot #432
DOSemu becomes slow after certain programs return from a DOS shell #433
Windows crashes dosemu in cpusim #435
dosdebug bpint causes crash #442
Int19 loads the MBR but returns to where it was called #441
File or directory creation on hdimage fails #443
BIOS data area entry at 0:0475h "NUMBER OF FIXED DISK DRIVES" is zero #447
Fatfs has duplicate config.sys file #449
Compile error: signal.c:370:6: error: conflicting types for 'deinit_handler' #457
lagging after printing #455
dosdebug INT tracing oddities #458
dosdebug: tracing iret doesn't stop after the iret #465
pause key doesn't work with SDL #472
instremu runs with async signals blocked #477
Build engine and VESA modes #456
dosdebug t misses instruction after sti #480
Windows 3.1 setup reboot hangs #469
Windows 3.1 doesn't start after starting+quiting Borland C #488
MechWarrior crashes dosemu with jit #487
cpatch crash due to misaligned stack (jit) #489
dosdebug d repetition should advance pointers #482
keen4 sometimes crashes in remap.c #491
dosemu2 complains vm.mmap_min_addr > 0 eventhough it is zero #448
INSTALL isn't clear about what problems might be with Linux < 3.16 #499
Int13/04 verify on fatfs #503
No native chars in dumb terminal mode #505
in dumb terminal mode, control chars are displayed rather than working #508
crash or load error after int19 reboot (vm86 jit) #493
CPU should execute two instructions if the first is "mov ss" #481
PC-MOS/386 in DOSEMU2? #502
Bug in modemu.c #527
ucontext issue when using musl libc #531
pthread_getname_np and feenableexcept dont exist in musl #532
Net header issue when using musl libc #530
LFN: Creating a file with LFN from djgpp app gives mangled name file #535
rename with wildcards doesn't work with non-free doses #526
Thanks goes to:
Andrew Bird: MFS/LFN work, new DOSes support
C. Masloch: mkfatimage16, int13 work
Stas Sergeev: credit thyself or no one else will :)
@newbluemoon: musl porting help (not quite there yet)
Julius Schwartzenberg: as usual, lots of testing
@bpranoto, @severach, @jharrison022: testing
Version dosemu2-2.0pre7
=============
We have over 700 commits, mostly targeted on re-introducing and fixing
the features previously supported in dosemu1, and a couple of new ones.
Unfortunately we also have a few regressions.
Summary below.
* Reworks to SDL plugin. The HW-accelerated rendering is now disabled
by default, as well as the scaling filters, and full-screen switching
may not work. If you want to use HW-accelerated rendering, try
$_SDL_swrend = (off). If you want scaling filters or full-screen, use
'dosemu -X'. We will try to improve the SDL support in future releases.
* HX extender now fully supported, quake2 works!
* Mouse wheel support implemented
* Support booting OpenDOS and some old versions of MS-DOS.
* 2 new keyboard plugins implemented ("stdio" and "tty") to allow dumb
terminal mode to work without slang library. Selectable with '-kt', '-ks'.
* VGA pass-through in text-mode console is now fully supported. Hope
no one uses it though.
* Windows-3.1 support is fully re-introduced, and is actually much better
than in dosemu1. We also provide the mouse driver for windows-3.1 that
allows the use of the host's mouse pointer:
https://github.com/stsp/win31-mouse-driver/tree/master/out
* Resurrected basic Windows-3.0 support.
* Foxpro support re-introduced.
* Fixes to SVGA/VESA modes. Support for some missing modes added.
* Many fixes to gfx remapper. The various annoying video artifacts
should now be fixed.
* SB16 fixes to support sound on more games.
* Mouse copy/paste support is fully re-introduced.
* New $_bootdrive option allows to boot from any drive, not only C.
* Net: IPX and packet driver are fully functional again.
* Lots of build system improvements. We have now the debian build support
and "make uninstall".
* X fonts are resurrected and provided again.
* Many fixes and improvements: DPMI support is now much more reliable,
x86 JIT is more reliable, many performance improvements.
* Many updates to interrupt routing code.
* Resurrected emufs.sys.
* Sanitize syntax of lredir2: silly LINUX\FS is no longer needed.
List of tracker bugs that were closed:
ERROR: Drive C not defined can't boot! with clean installation #232
How to use vbootfloppy now? #235
It would be great to have.deb packages for Ubuntu/Debian! #233
jit: performance regression #239
Direct VGA regression #222
fdisk and mkfatimage16 #244
Radeon on Ubuntu 14.04 (+16.04 HWE stack) doesn't work in SDL mode #248
OpenDOS 7.02 causes crash when *not* ran from a harddisk image #250
Strange compiler messages on 32 bit #253
Underscore keypress is ignored in terminal mode #256
Creative SB16 driver installer (for Windows 3.1) hangs at SB16 detection #259
RFC: The flag position with floppy and harddrive directives in dosemu.conf is inconsistent #263
SciTech Display Doctor 5.3a crashes DOSEMU #264
dosemu crashes immedately after startup with MS-DOS 3.3 #49
Mortal Kombat 1 & 2 keyboard issue #277
SDL: copy/paste from dosemu window with mouse #271
x86_64 builds failing on Ubuntu Yakkety and Zesty #262
console switching is unreliable #285
dos prompt in win31 under console #25
plainvga does not restore text #286
windows: krnl286 doesn't work #287
Idle CPU usage anomaly #211
Compile error in lexer.l for yywrap #288
Regression: terminal mode #291
mouse in grab mode broken #293
DPMI is broken on 32bit #294
Typo in vgaemu_modelist.h for VBE mode 1280x1024x16 #295
VM86 not available on 32bit #297
windows-3.0 doesn't work #225
Speedy does not have sound #103
Soft links and contents of ~/.dosemu being overwritten #289
Unable to boot #305
goblins3 gfx and audio problems #304
Foxpro hangs quickly #309
Windows 3.1 installer does not work #97
Norton utilities v8 english causes dosemu crash #311
UMB not working anymore under FreeDOS #315
Mouse support for Foxpro in 132 column mode #319
mouse paste broken #320
All DOS commands stopped working #318
erratic mouse behaviour after mode switches #314
dosemu2 64bit crash on vlm #317
MS-DOS 7.00 / 7.10 unable to format floppy disk #276
Can't run make due to git path issue #324
$_X_font="vga11x19" doesn't work #323
make: git-rev.sh Bad substitution #326
Enhance unix command to set to current DOS folder #328
SDL mouse cursor not hidden #331
Graphic artefacts in PC/GEOS with a lot of VESA modes #301
Add uninstall target #334
Request: ctl-z functionality? #337
FD tarball path specification #341
dosemu -S not ended after exitemu #343
undefined symbol: XLockDisplay #342
Dosemu failing to start #344
Dosemu failing to start in SDL mode #345
X: cursor shape changes by Ctrl-Alt-k #349
'dosemu -t' crashed on screen tmux #351
mouse problems with Master of Orion 2 #354
Serial port initialization appears to be slow with high CPU usage #348
Crash in Fedora 25 #358
Windows 3.1 installation crashes on Fedora 25 #359
in terminal or SDL mode isn't possible copy|paste text on text screen #361
Problem with git-rev.sh and old Git versions (Ubuntu 14.04) #356
Wrong dosemu fonts #364
dune locks up at intro #370
sound in quake lags #369
lredir2 -d c: changes directory listing #362
win31 installer sometimes crashes at the end #372
win31 SB16 driver gives a crash #363
Unmet build dependencies: docbook-style-dsssl #383
Clipper application hangs - ERROR: coopth: unsafe context switch #384
Launchpad ppa deb build failiing on Ubuntu 14.04 #387
key combos broken under X #391
sdl error even with -x #395
ERROR: vde_switch failed: sh: 1: vde_switch: not found #396
Doom 2 and Rise of the Triad nets about 10 FPS #403
DPMI linear allocations broken #385
quake2 does not work #404
Problems with full screen under X #394
fails on ubuntu14.04: cannot load libbfd-2.26.1-system.so #408
mouse cursor ghost #407
Error finding .git/refs/heads/devel after 'git gc' #411
emufs.sys is broken #347
put himem.sys in? #413
make rpm doesn't work #346
jit locks up with -D9+e #409
Thanks goes to:
Andrew Bird for new DOSes support and great fatfs work.
@bolle732 for new remappers, VESA fixes and for the chocolate. :)
Julius Schwartzenberg for a lot of testing and work on wheel support.
Tee-Kiah Chia for work on build improvements
Version dosemu2-2.0pre6
=============
We have around 500 commits since pre5 with the highlights below:
* KVM is now enabled by default on 64bit builds. A huge speed-up!
* SDL plugin now uses hardware-accelerated texture updates instead
of the (slow) drawing surface
* virtual modem support is added
* serial port fifos now work again (were broken/unsupported in dosemu2
but worked in dosemu1)
* DPMI context switching is rewritten for speed-up, using a new
linux kernel extensions and the code from libtask and libpcl
* default DPMI memory size enlarged to 128Mb, which is enough for
all known DOS programs
* new builtin command system.com is added that runs DOS commands
specified via the unix env vars. Similar functionality in unix.com
is kept for compatibility.
* DOSDRIVE_D var is removed. Use new DOSDRIVE_EXTRA variable.
* mouse driver got a huge overhaul for improved robustness in non-grab mode
* winos2 mouse extension is implemented for better support of the OS/2
mouse driver under windows-3.1
* middle mouse button is now supported (was broken)
* dosdebug fixes
* many fixes to SDL plugin
* the home dir is no longer exposed to DOS by default. Use -home if you
need this.
* added -cdrom option that tries to mount the cdrom and expose it to DOS
* $_hdimage option can now embed environment variables
* many performance bottlenecks were located and fixed
* many fixes and updates
List of tracker bugs that were closed:
checking for stack protector disabled... no #61
Signal 11 in dosemu.bin thread in terminal mode under Ubuntu 16.04 #165
On first run, have to run dosemu twice #73
comma on numpad isn't recognized #171
dumb mode is broken when DOS cmd is specified #173
re-introduce system.com #174
Cleanup $_pcm_hpf in default dosemu.conf #181
Installing with DESTDIR set creates bad symlinks #184
remove DOSDRIVE_D and drive_z? #177
failed lredir redirects / #176
cant del symlinked files #180
REG macro breaks strict aliasing on i386 #179
modemu support #164
Compilation error in vgaemu #189
use html docs by default #183
INT33 mouse support for higher resolutions (800x600, 1024x768)
in Windows 3.x (possibly other applications as well) #193
Application crash on x32 #130
Dosdebug: bpload fails to load command #191
Regression: booting from hdimage file fails #203
ERROR: mprotect to lfb? #204
Use global SDL_Texture (speedup) #205
PC/GEOS freezes with VM86, KVM ok #209
Wacky Wheels performance/timing regression #169
Is it possible to suppress issues like:- #207
Mouse range restricted again (was #132) #214
Weird interactions switching between fullscreen and windowed mode #213
Running an unrecognised command locks up DOSEMU #221
SimCity mouse issue with title screen at 640x350x4 #216
In 3D Lemmings the mouse cursor always goes to the upper
left corner when it enters the window #220
Known regressions not fixed in this release:
windows-3.0 doesn't work #225 (all dosemu2 releases affected)
Idle CPU usage anomaly #211 (most dosemu2 releases affected)
Windows 3.1 installer does not work #97 (regression since pre5)
Thanks go to Bart Oldeman and Andrew Bird for their contributions,
and to Julius Schwartzenberg and @bolle732 for continuous testing.
Version dosemu2-2.0pre5
=============
* SDL video backend is now default, which means a GPU-accelerated rendering
* lredir command was deprecated, use lredir2 with the new syntax
* unix.com syntax was slightly changed
* new tool sound.com is added to change sound and MIDI parameters at run-time
* LPT2 is now pre-configured to print to PDF files
* Added preliminary support for old MS-DOSes (>=3.3) and some DR-DOSes
* many improvements to dosdebug
* use logarithmic volume scale for sound
* Preliminary KVM support - a very fast execution on 64bit machines.
Should be manually enabled in config for now.
* Many regressions fixed
* Added valgrind support, which allowed to find many obscure bugs
* Work-arounds to support the newer fluidsynth for MIDI
* More versions of libao are supported for sound (each having its own bugs).
This is good when SDL2 is unavailable.
* munt support for mt32 (you need to download Roland ROMs yourself)
* built-in backtracer is added for a better crash logs.
Used if gdb is not installed.
* clang is now supported to compile dosemu2
List of tracker bugs that were closed:
improve clang support [#160]
DR-DOS 7.02 doesn't boot (7.03 works, 7.02 doesn't) [#151]
broken on large terminals [#153]
Speedy does not have sound [#103]
windows doesnt work with vm86sim [#146]
Textmode --- ERROR: SMALLOC: Out Of Memory on alloc [#143]
cursor stuck top left. in textmode dosemu -t [#144]
Current master does not compile (in_indirect_dpmi_transfer undeclared) [#138]
Mouse range restricted [#132]
trying dosemu2 with svgalib + i915 [#137]
Dosdebug bpint / g results in strange disassembly / location [#136 again]
Dosdebug unintended initial stop [#135]
init.c:375:38: error: macro "__S" passed 2 arguments, but takes just 1 [#111]
enable fixed aspect [#5]
Trying to add support for booting Enhanced DR_DOS [#88]
screamer crash under console [#28]
Where to document config options [#82]
Contributors:
Stas Sergeev: see log :)
Bart Oldeman: KVM, cpuemu fixes, vgaemu fixes, regression fixes
Andrew Bird: Support for old DOSes, fixes to FAT12

70
README.md Normal file
View File

@ -0,0 +1,70 @@
# dosemu2
dosemu2 is an emulator for running DOS programs under linux.
It can also serve as a VM to boot various DOSes.
Binary packages for ubuntu are available here:
https://code.launchpad.net/~dosemu2/+archive/ubuntu/ppa
Binary packages for fedora are here:
https://copr.fedorainfracloud.org/coprs/stsp/dosemu2
Binary packages for OpenSUSE are here:
https://download.opensuse.org/repositories/home:/stsp2/openSUSE_Tumbleweed
Please send bug reports to
https://github.com/dosemu2/dosemu2/issues
## Running
Just type
```
dosemu
```
to run an emulator.
Use
```
dosemu -E <dos_cmd>
```
to run `<dos_cmd>` and exit (add `-T` to not exit).
Use
```
dosemu -K <unix_dir> -E <dos_cmd>
```
or
```
dosemu <unix_full_path> -- <dos_prog_args>
```
to run DOS programs from unix directory.
If you want to run the DOS program from a DOS directory, use this syntax:
```
dosemu -K :C:\\games\\carma -E carma.exe
```
This will run `carma.exe` from `c:\games\carma`. Note the leading colon
after `-K`: it means that the DOS path, rather than unix path, is specified.
You can actually specify both paths:
```
dosemu -K ~/dosgames:carma -E carma.exe
```
This creates the DOS drive for `~/dosgames`, then chdirs to `carma` and
runs `carma.exe`.
## Configuring
Per-user configuration file can be created as `~/.dosemu/.dosemurc`.
Add your custom settings there.
Look into the global configuration file `/etc/dosemu/dosemu.conf` for
existing settings, their descriptions and default values, and modify
the local config accordingly. `$_hdimage` is probably the first setting
to look into, as it configures the host fs access.
Create `c:\userhook.sys` and/or `c:\userhook.bat` files to customize your
boot sequence. userhook.sys can contain the `config.sys` directives and
`userhook.bat` can contain custom boot commands.
Drive `C:` is usually located at `~/.dosemu/drive_c`. You can add DOS
programs there. Or you can run `dosemu -d <unix_dir>` to mount the
`<unix_dir>` as a new DOS drive.

77
THANKS Normal file
View File

@ -0,0 +1,77 @@
dosemu2 credits:
Main contributors (with their github names):
Stas Sergeev @stsp
Bart Oldeman @bartoldeman
Andrew Bird @andrewbird
C. Masloch @ecm-pushbx
Ryan C. Underwood @runderwo
Stuart Axon @stuaxo
Special thanks for making dosemu2 feasible
by sponsoring the initial development:
Caylan Van Larson <i@caylan.net>
Hans-Christian Koch <hc.koch@scheerkoch.de>
Many thanks to our Patreon patrons:
Jeffrey H. Ingber <jharrison02@earthlink.net> (@jharrison022)
C. Masloch <pushbx@ulukai.org> (@ecm-pushbx)
doctorwhoguy@gmail.com (@PaddyMac)
Thanks for the good testing and bugreporting:
Julius Schwartzenberg (@jschwartzenberg)
A big thanks goes to Linus Torvalds and Andy Lutomirski,
who helped in solving many dosemu2-specific problems in
Linux kernel. Yes, Linus personally mentored these efforts
and made sure dosemu2 has the good support both in the
kernel itself, and in the developers community.
And of course, thanks goes also to all our users!
If you like this project, you are always welcome to contribute.
===================================================================
dosemu1 credits:
This release could not have gotten out the door without the work of
our relentless development team, friends and contributors, consisting of
at least (sorted by first name):
Aaron Adam J. Richter Alan Cox
Alberto Vignani Alessandro Rubini Alexander R.Adams
Alexander V. Lukyanov Alistair MacDonald Amit Margalt
Andrew.Tridgell Andries Andy Shevchenko
Antonio Larrosa Arjan Filius Arne de Bruijn
Bart Oldeman Ben Davis Bernd Paysan
Bernd Schueler Christoph Niemann Clarence Dang
Corey Sweeney Daniel R. Barrlow David Brauman
David Etherton David Hansen David Hindman
David Hodges David Pinson Derek Fawcus
DJ Delorie Dong Liu Egbert Eich
Emmanuel Jeandel Eric W. Biederman Erik Mouw
Florian La Roche George K.Bronnikov Grant R. Guenther
Grigory Batalov Hans Lermen Herbert Xu
James Maclean Japheth Jason E Gorden
Jochen Hein John Davis John Kohl
Jon Tombs Josef Pavlik Julia A. Case
Kang-Jin Lee Karl Kiniger Karl-Max Wagner
Kenneth Corbin Kevin P Lawton Lam Lai Yin, Savio
Larry Stephan Lawrence K Mao Linus Torvalds
Lutz Molgedey Manfred Scherer Marcus Better
Mark Rejhon Marty Leisner Matthew Grant
Maxim Ruchko Michael E. Deisher Michael Karcher
Oleg V. Zhirov Pablo Saratxaga Pasi Eronen
Pat Villani Rainer Zimmermann Reinhard Karcher
Rob Clark Robert de Bath Rod May
Ronnie Rutger Nijlunsing Scott Buchholz
Sergey Suleymanov Stas Sergeev Steffen Winterfeld
Theodore T'so Tim Van der Linden Ulrich Weigand
Uwe Bonnes Urban Widmark Vinod G Kulkarni
Wayne P Meissner Witold Filipczyk Wojtek Pilorz
... and others too important to mention.
Of course, all those people involved in the FreeDOS development should be
mentioned here too, but before I fail to mention some of them, I better point
to http://www.freedos.org ;-)

11
TODO Normal file
View File

@ -0,0 +1,11 @@
TODO items for the next release:
- resurrect irqpassing on x86-64
Unlikely to happen before 2.0 release
- implement parport support via ppdev (steal from wine)
Unlikely to happen before 2.0 release
- look into directfb support
- look into gstreamer support

2
VERSION Normal file
View File

@ -0,0 +1,2 @@
2.0pre9
7076

19
autogen.sh Executable file
View File

@ -0,0 +1,19 @@
#!/bin/sh
DIR=$(dirname $0 | xargs realpath)
echo "Generating toplevel configure script in $DIR..."
check_scr() {
[ -f $DIR/$1 ] || cp $DIR/scripts/$1 $DIR/$1
}
rm -f aclocal.m4
if ! autoreconf -v -I m4 --install --force $DIR; then
echo "Failure!"
exit 1
fi
check_scr config.sub
check_scr config.guess
check_scr install-sh
echo
echo "Done, now run $DIR/default-configure"

63
ci_build.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/sh
set -e
LOCALFDPP="localfdpp.git"
LOCALFDPPINST="$(pwd)/localfdpp"
FDPPBRANCH=""
test -d ${LOCALFDPP} && exit 1
if [ "${TRAVIS}" = "true" ] ; then
echo "Travis seems to have some old version of clang in its local directory"
PATH=$(echo ${PATH} | sed 's,:/usr/local/clang-7.0.0/bin,,g')
export PATH
echo PATH is ${PATH}
fi
git clone --depth 1 --no-single-branch https://github.com/dosemu2/fdpp.git ${LOCALFDPP}
(
cd ${LOCALFDPP} || exit 2
[ -z "$FDPPBRANCH" ] || git checkout "$FDPPBRANCH"
git config user.email "cibuild@example.com"
git config user.name "CI build"
git tag tmp -m "make git-describe happy"
echo "DEBUG_MODE = 1" > local.mak
echo "EXTRA_DEBUG = 1" >> local.mak
echo "USE_UBSAN = 1" >> local.mak
# Install the build dependancies based FDPP's debian/control file
sudo add-apt-repository ppa:stsp-0/nasm-segelf
sudo add-apt-repository ppa:stsp-0/thunk-gen
sudo apt update -q
mk-build-deps --install --root-cmd sudo
# Seems to miss this, perhaps the optional dependency confuses things
if [ "${TRAVIS}" = "true" ] ; then
sudo apt install binutils
fi
make
sudo make install
)
# Install the build dependancies based Dosemu's debian/control file
sudo add-apt-repository -y ppa:dosemu2/ppa
mk-build-deps --install --root-cmd sudo
if [ "${SUBTYPE}" = "asan" ] ; then
sed -i 's/asan off/asan on/g' compiletime-settings.devel
fi
CC=clang ./default-configure -d
make
# Install the FAT mount helper
sudo cp test/dosemu_fat_mount.sh /bin/.
sudo chown root.root /bin/dosemu_fat_mount.sh
sudo chmod 755 /bin/dosemu_fat_mount.sh
# Install the TAP helper
sudo cp test/dosemu_tap_interface.sh /bin/.
sudo chown root.root /bin/dosemu_tap_interface.sh
sudo chmod 755 /bin/dosemu_tap_interface.sh

8
ci_prereq.sh Executable file
View File

@ -0,0 +1,8 @@
#!/bin/sh
sudo apt-get update
sudo apt install -y \
devscripts \
equivs \
git \
bash

79
ci_test.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
. ./ci_test_prereq.sh
if [ "${TRAVIS}" = "true" ] ; then
export CI="true"
export CI_BRANCH="${TRAVIS_BRANCH}"
if [ "${TRAVIS_EVENT_TYPE}" = "cron" ] ; then
export RUNTYPE="full"
else
export RUNTYPE="simple"
fi
elif [ "${GITHUB_ACTIONS}" = "true" ] ; then
# CI is already set
export CI_BRANCH="$(echo ${GITHUB_REF} | cut -d/ -f3)"
if [ "${GITHUB_EVENT_NAME}" = "push" ] && [ "${GITHUB_REPOSITORY_OWNER}" = "dosemu2" ] && [ "${CI_BRANCH}" = "devel" ] ; then
export RUNTYPE="simple"
fi
fi
TBINS="test-binaries"
if [ "${CI}" = "true" ] ; then
[ -d "${HOME}"/cache ] || mkdir "${HOME}"/cache
[ -h "${TBINS}" ] || ln -s "${HOME}"/cache "${TBINS}"
else
[ -d "${TBINS}"] || mkdir "${TBINS}"
fi
python3 test/test_dos.py --get-test-binaries
if [ -f /dev/kvm ] ; then
sudo setfacl -m u:${USER}:rw /dev/kvm
fi
echo
echo "====================================================="
echo "= Tests run on various flavours of DOS ="
echo "====================================================="
# all DOS flavours, all tests
# python3 test/test_dos.py
# single DOS example
# python3 test/test_dos.py FRDOS120TestCase
# single test example
# python3 test/test_dos.py FRDOS120TestCase.test_mfs_fcb_rename_wild_1
if [ "${TRAVIS}" = "true" ] ; then
ARGS="--require-attr=cputest"
else
ARGS=""
fi
case "${RUNTYPE}" in
"full")
ARGS="${ARGS} PPDOSGITTestCase MSDOS622TestCase FRDOS130TestCase DRDOS701TestCase"
;;
"normal")
ARGS="${ARGS} PPDOSGITTestCase MSDOS622TestCase"
export SKIP_UNCERTAIN=1
;;
"simple")
ARGS="${ARGS} PPDOSGITTestCase"
export SKIP_EXPENSIVE=1
export SKIP_UNCERTAIN=1
;;
esac
# CC is set on Travis and can confuse compilation during tests
unset CC
# Make cpu tests here so that we see any failures
make -C test/cpu clean all
python3 test/test_dos.py ${ARGS}
for i in test_*.*.*.log ; do
test -f $i || exit 0
done
exit 1

27
ci_test_prereq.sh Executable file
View File

@ -0,0 +1,27 @@
#!/bin/sh
sudo add-apt-repository -y ppa:jwt27/djgpp-toolchain
sudo add-apt-repository -y ppa:tkchia/build-ia16
sudo apt update -q
sudo apt install -y \
acl \
comcom64 \
nasm \
python3-cpuinfo \
python3-pexpect \
mtools \
gcc-djgpp \
djgpp-dev \
qemu-system-common \
gdb \
valgrind \
gcc-ia16-elf \
libi86-ia16-elf \
libi86-testsuite-ia16-elf \
gcc-multilib \
dos2unix \
bridge-utils \
libvirt-daemon \
libvirt-daemon-system

4
compiletime-settings Normal file
View File

@ -0,0 +1,4 @@
config {
sysconfdir /etc
fdtarball dosemu-freedos-1.0-bin.tgz
}

View File

@ -0,0 +1,12 @@
config {
experimental on
debug on
asan off
lsan off
tsan off
ubsan on
optimize off
system-wa off
sysconfdir /etc
fdtarball dosemu-freedos-1.0-bin.tgz
}

142
compiletime-settings.help Normal file
View File

@ -0,0 +1,142 @@
This file describes the compiletime tunable settings for DOSEMU
You have either to edit the ./compiletime-settings file or use the
the setup-dosemu tool. If you edit manually, you _must_ not remove any
of the lines, instead just change 'off' to 'on' and vice versa.
The options have the following meaning:
experimental "enable experimental stuff"
Global switch to prevent experimental stuff from compile.
There are experimental parts in the source, that may do harm to
your system if you use them without care / knowledge.
In order to protect you, those are normally disabled
in ./configure. Even if you enable discrete switches
in ./compiletime-settings, those will not have effect
without the global switch also set.
sbemu "SB Emulation"
Code to support sound via DOSEMU. The sound code emulates
a simple SoundBlaster on any sound card supported by the
Linux Kernel. Hence, your DOS-Box sees a SoundBlaster
even if you don't have it. Keep that in mind
when you setup your DOSish software.
mitshm "Use MIT Shared Memory extensions under X"
You normal would like to have this activated, though you
will not profit from it, when doing remote X.
If you encounter problems with your X-server, try to switch
this off.
vidmode "Use video mode extensions under X"
You normal would like to have this activated, if you want
X to change resolution in fullscreen-mode (Ctrl-Alt-F),
where applicable.
x "Use X-Windows"
With this set on, you enable the X-windows support of DOSEMU.
Though, the compiled binary will run without X too.
If you don't have The X development packages install or
if you won't use it and want a smaller DOSEMU binary,
then turn this option off.
net "enable Linux net code"
There is network related code in DOSEMU such as IPX support,
a builtin packet driver, e.t.c. This will be compiled in
if you set this switch. You may compile with this option
and later disable it in the runtime configuration.
Normally you will let it enabled.
debug "compile with debug info"
This uses the '-g' switch for GCC, hence you can use GDB
to debug DOSEMU.
linkstatic "make static binaries"
With this switch on, a statically linked binary is generated
The size isn't that big (about 30% bigger then a dynamically
linked one) and DOSEMU will run faster and is more portable
between systems (it then depends only on the kernel
version, no (g)libc incompatibilities). The official DOSEMU
binary distribution always is statically linked.
cpuemu "EXPERIMENTAL, enable CPU emulator" cpuemu
This is in _no_ case ready for production, this switch is
here just for the developers ;-)
aspi "compile with ASPI support" aspi
This enables the dosemu builtin ASPI driver, which also
need the DOS driver ./commands/aspi.sys in config.sys.
You then may be able to use DOS software that accesses
SCSI devices such as CD-burners, Scanners e.t.c.
However, not all SCSI devices available in Linux are
offered to the driver, because this is inherently dangerous.
Instead you define in /etc/dosemu.conf which 'sg' device
you want give to dosemu and you also specify the device
type which the ASPI driver then check to avoid you accessing
a mounted disk.
svgalib "compile with svgalib support" svgalib
This enables support for using svgalib >= version 1.4.2
for switching between consoles when running graphics
on console _and_ if you configured 'svgalib' as 'graphic chip'
in /etc/dosemu.conf.
NOTE: this doesn't help for all svgalib supported graphic
cards and your console may freeze anyway. Currently reported
as 'working' are riva TNT 128 and sis.
gpm "compile with gpm support" gpm
This enables support for using GPM, the mouse server for the
Linux console; it is only used when you run DOSEMU on the
Linux console without graphics (unprivileged).
plugin_kbd_unicode "Use new keyboard code" plugin_kbd_unicode
plugin_extra_charsets "Use extra character sets" plugin_extra_charsets
plugin_term "Use new terminal plugin"
plugin_translate "Use Unicode translation plugin" plugin_translate
plugin_demo "Use demo plugin" plugin_demo
target_bits "Target bits" target_bits
Set to auto for native compilation, to 32 to force compilation
of 32-bit DOSEMU on an x86-64 system, and to 64 to force
64-bit compilation.
target_cpu "Target cpu" target_cpu
prefix "Prefix for DOSEMU system-wide directory structure" prefix
bindir "Directory for DOSEMU binaries" bindir
sysconfdir "Directory for system-wide configuration files" sysconfdir
datadir "Directory for DOSEMU data" datadir
mandir "Directory for DOSEMU man pages" mandir
docdir "Directory for DOSEMU documentation" docdir
syshdimagedir "Default directory for images and boot directories" syshdimagedir
x11fontdir "Directory for X fonts" x11fontdir
fdtarball "Name of the FreeDOS tarball" fdtarball
This is normally named dosemu-freedos-bin.tgz, to be obtained from www.dosemu.org
Use "none" if you don't want to use FreeDOS.

792
configure.ac Normal file
View File

@ -0,0 +1,792 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([dosemu2],m4_esyscmd(./getversion -s | tr -d '\n'),[https://github.com/dosemu2/dosemu2/issues],[dosemu2])
dnl AM_SILENT_RULES and AM_DEP_TRACK should not be used explicitly,
dnl AM_INIT_AUTOMAKE includes them
AM_SILENT_RULES
AM_DEP_TRACK
AM_MAINTAINER_MODE
AC_CONFIG_SRCDIR([src/include/emu.h])
AC_PREREQ([2.64])
AC_CONFIG_HEADERS([src/include/config.hh])
dnl Checks for programs.
: ${CFLAGS=""}
AC_PROG_CC
#AC_PROG_CC_C11([AC_DEFINE(HAVE_STD_C11)])
AC_DEFINE(HAVE_STD_C11)
AC_PROG_CPP
AX_PROG_CC_FOR_BUILD
AC_USE_SYSTEM_EXTENSIONS
AC_MSG_CHECKING([for $CC actually being clang])
if $CC -v 2>&1|grep 'clang' >/dev/null; then
AC_MSG_RESULT([yes])
AC_MSG_CHECKING([for clang >= 3.7])
clang_ver=`$CC -v 2>&1 | grep version | sed 's/.*version //' | cut -d " " -f 1`
clang_maj=`echo $clang_ver | cut -d "." -f 1`
clang_mid=`echo $clang_ver | cut -d "." -f 2`
if test $clang_maj -ge 3 -a $clang_mid -ge 7 -o $clang_maj -ge 4 ; then
AC_MSG_RESULT([yes, $clang_ver])
else
AC_MSG_RESULT([no, $clang_ver])
AC_MSG_ERROR([Need clang-3.7 or newer, or use gcc instead])
fi
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -Wno-microsoft -Wno-incompatible-pointer-types \
-Wno-address-of-packed-member"
LDFLAGS="$LDFLAGS -Wno-unused-command-line-argument"
use_clang="yes"
AS="$CC"
clang_as_as=1
ASFLAGS="-xassembler -c -"
else
AC_MSG_RESULT([no])
use_clang="no"
AC_MSG_CHECKING([for $CC actually being c++])
if $CC -v 2>&1 | grep "g++" | grep "COLLECT_GCC" >/dev/null; then
AC_MSG_RESULT([yes, using -fpermissive])
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fpermissive -Wno-narrowing"
else
AC_MSG_RESULT([no])
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fplan9-extensions"
fi
fi
CONFIG_HOST=`uname -s`
AC_SUBST(CONFIG_HOST)
machine=`$CC -dumpmachine | cut -d- -f1 | sed 's/i.86/i386/'`
if test -z "$AS"; then
AC_PATH_PROG([AS], [as])
if test -z "$AS"; then
AC_PATH_PROG([AS], [clang])
if test -z "$AS"; then
AC_MSG_ERROR(as not found)
fi
AC_MSG_NOTICE(Using clang as as...)
clang_as_as=1
ASFLAGS="-xassembler -c -"
fi
fi
AC_PATH_PROGS([XAS], [i686-linux-gnu-as i386-elf-as])
if test -z "$XAS"; then
if test "$CONFIG_HOST" = "Darwin"; then
AC_MSG_ERROR([Please install i386-elf-binutils from https://github.com/nativeos/homebrew-i386-elf-toolchain])
fi
AC_PATH_PROG([XAS], [x86_64-linux-gnu-as])
if test -z "$XAS"; then
if test "$machine" = "i386" -o "$machine" = "x86_64"; then
XAS="$AS"
if test "$clang_as_as" = "1"; then
XASFLAGS="$ASFLAGS -m32"
else
XASFLAGS="$ASFLAGS --32"
fi
else
AC_MSG_ERROR([cross-assembler not found, please install binutils-i686-linux-gnu])
fi
else
XASFLAGS="$ASFLAGS --32"
fi
fi
AC_PATH_PROGS([LD], [ld ld.lld])
if test -z "$LD"; then
AC_MSG_ERROR(ld not found)
fi
AC_PATH_PROGS([AS_LD], [i686-linux-gnu-ld i386-elf-ld x86_64-linux-gnu-ld ld.lld ld])
if test -z "$AS_LD"; then
AS_LD="$LD"
fi
AC_PATH_PROG([OBJCOPY], [objcopy])
O_VER=`$OBJCOPY -V | head -n 1 | grep "GNU objcopy"`
if test -z "$O_VER"; then
AC_MSG_WARN([rejecting BSD objcopy])
OBJCOPY=""
fi
if test -z "$OBJCOPY"; then
AC_PATH_PROG([LOBJCOPY], [llvm-objcopy], [], [$PATH${PATH_SEPARATOR}/usr/local/opt/llvm/bin])
if test -z "$LOBJCOPY"; then
AC_MSG_ERROR(objcopy not found)
fi
OBJCOPY="$LOBJCOPY"
fi
AC_PATH_PROGS([XOBJCOPY], [i686-linux-gnu-objcopy x86_64-linux-gnu-objcopy objcopy])
if test -z "$XOBJCOPY"; then
XOBJCOPY="$OBJCOPY"
fi
AC_SUBST(AS)
AC_SUBST(XAS)
AC_SUBST(AS_LD)
AC_SUBST(XOBJCOPY)
AC_ARG_WITH(target-bits-32, [AS_HELP_STRING([--with-target-bits-32],
[build for 32bit target (multilib in case of x86_64 host)])],
CPPFLAGS="$CPPFLAGS -m32"
LDFLAGS="$LDFLAGS -m32"
ASFLAGS="--32"
with_target_bits="32"
)
AC_PROG_INSTALL
AC_PROG_LEX([noyywrap])
if test -z "$LEX"; then
AC_MSG_WARN(Your system doesn't seem to have lex or flex available.)
AC_MSG_ERROR(Install lex or flex and retry.)
fi
AC_PROG_LN_S
AC_MSG_CHECKING([if $LN_S is a GNU ln])
if $LN_S --help >/dev/null 2>&1; then
AC_MSG_RESULT([yes, using -T])
LN_SFT="$LN_S -f -T"
else
AC_MSG_RESULT([no, using -F])
LN_SFT="$LN_S -f -F"
fi
AC_SUBST(LN_SFT)
AC_CHECK_PROGS([MAKE], [gmake make])
if test -z "$MAKE"; then
AC_MSG_ERROR(You don't have make installed)
fi
# export MAKE to run from scripts
export MAKE="$MAKE"
AC_CHECK_PROGS([REALPATH], [realpath])
if test -z "$REALPATH"; then
AC_MSG_ERROR(You don't have realpath installed)
fi
AC_PROG_RANLIB
AC_PROG_YACC
dnl The bison problem
if test -z "`echo $YACC | grep bison`" ; then
AC_MSG_WARN( )
AC_MSG_WARN(Your system doesn't seem to have bison available.)
AC_MSG_ERROR(Install bison and retry.)
fi
AC_PROG_GREP
AC_PROG_EGREP
AC_PROG_SED
AC_PROG_AWK
if test "$ac_cv_prog_AWK" != "gawk" ; then
AC_MSG_ERROR(Install gawk and retry.)
fi
AC_CHECK_PROGS([PKG_CONFIG], [pkg-config])
if test -z "$PKG_CONFIG"; then
AC_MSG_ERROR(Install pkg-config and retry.)
fi
dnl Checks for libraries.
dnl Checks for header files.
dnl need largefile check here, dont remove, it defines magic macros
AC_SYS_LARGEFILE
dnl Checks for library functions.
AC_MSG_CHECKING([for static_assert support])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <assert.h>]], [[
static_assert(sizeof(char) == 1, "sizeof doesn't work");
]])], [
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_STATIC_ASSERT)
], [
AC_MSG_RESULT([no])
])
AC_MSG_CHECKING([for assignable stderr])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <stdio.h>
int main(void)
{
stderr = NULL;
return 0;
}
])],
[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_ASSIGNABLE_STDERR)
],
[
AC_MSG_RESULT([no])
]
)
AC_MSG_CHECKING([for optreset])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <unistd.h>
int main(void)
{
optreset = 1;
return 0;
}
])],
[
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_OPTRESET)
],
[
AC_MSG_RESULT([no])
]
)
AC_CHECK_LIB(rt, shm_open)
dnl below defines HAVE_xxx so needed even if AC_CHECK_LIB() succeeded
AC_CHECK_FUNCS([shm_open memfd_create fopencookie sigtimedwait closefrom])
AC_CHECK_FUNCS([setxattr], [
USE_XATTRS=1
AC_SUBST(USE_XATTRS)
])
AC_CHECK_FUNCS([timerfd_create], [
USE_EVTIMER_FD=1
AC_SUBST(USE_EVTIMER_FD)
], [AC_CHECK_FUNCS([kqueue], [
USE_EVTIMER_FD=1
AC_SUBST(USE_EVTIMER_FD)
])])
AC_CHECK_FUNCS([mremap])
AC_CHECK_FUNCS([fls])
AC_CHECK_DECLS([F_OFD_SETLK], [
USE_OFD_LOCKS=1
AC_SUBST(USE_OFD_LOCKS)
],, [[#include <fcntl.h>]]
)
AC_CHECK_DECLS([MREMAP_MAYMOVE],,, [[#include <sys/mman.h>]])
AC_CHECK_DECLS([MADV_POPULATE_WRITE, MADV_COLD],,,
[[#include <sys/mman.h>]])
AC_CHECK_TYPES([__float80],, [
if test "$machine" != "i386" -a "$machine" != "x86_64"; then
USE_SOFTFLOAT=1
AC_SUBST(USE_SOFTFLOAT)
fi
]
)
AC_CHECK_FUNC(strlcpy,, [
PKG_CHECK_MODULES([LIBBSD], [libbsd], [
dnl re-check for proper arch (multilib)
AC_CHECK_LIB(bsd, strlcpy,, [AC_MSG_ERROR(libbsd not found)])
]
)])
dnl Here is where we do our stuff
AC_ARG_WITH(confdir, [AS_HELP_STRING([--with-confdir=dir],
[directory suffix under sysconfdir. default: dosemu])],
confdir="$withval", confdir="dosemu")
AC_ARG_WITH(x11fontdir, [AS_HELP_STRING([--with-x11fontdir=dir],
[directory to install the VGA X11 font. default: ${datadir}/dosemu/Xfonts])],
x11fontdir="$withval", x11fontdir="${datadir}/dosemu/Xfonts")
AC_ARG_WITH(ttffontdir, [AS_HELP_STRING([--with-ttffontdir=dir],
[directory to install the ttf font. default: ${datadir}/fonts/oldschool])],
ttffontdir="$withval", ttffontdir="${datadir}/fonts/oldschool")
AC_ARG_WITH(fdtarball, [AS_HELP_STRING([--with-fdtarball=file],
[path to FreeDOS tarball])],
fdtarball="$withval")
# Hard-code this. It is evaluated at run-time as <binary_dir>../lib/dosemu,
# so we do not use libdir here (which can be lib64 or something unrelated)
plugindir="\${prefix}/lib/dosemu"
AC_SUBST(confdir)
AC_SUBST(plugindir)
AC_SUBST(x11fontdir)
AC_SUBST(ttffontdir)
AC_SUBST(syshdimagedir)
AC_SUBST(fdtarball)
AC_DEFINE_DIR([SYSCONFDIR], [sysconfdir], [ System config dir ])
AC_DEFINE_DIR([CONFSUBDIR], [confdir], [ dosemu-specific config subdir ])
AC_DEFINE_DIR([PREFIX], [prefix], [ prefix ])
AC_DEFINE_DIR([LIBEXECDIR], [libexecdir], [ Where extra executables are placed to ])
AC_DEFINE_DIR([SYSTEM_XFONTS_PATH], [x11fontdir], [ Directory for x11 fonts ])
DOSEMU_CPPFLAGS="$DOSEMU_CPPFLAGS -imacros config.hh"
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -Wall -Wstrict-prototypes -Wmissing-declarations \
-Wnested-externs -fms-extensions -pthread \
-Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef"
AX_CHECK_COMPILE_FLAG([-Waddress-of-packed-member],
[DOSEMU_CFLAGS="$DOSEMU_CFLAGS -Wno-address-of-packed-member"],, [-Werror])
AX_CHECK_COMPILE_FLAG([-Wstring-plus-int],
[DOSEMU_CFLAGS="$DOSEMU_CFLAGS -Wno-string-plus-int"],, [-Werror])
DOSEMU_LDFLAGS="-pthread"
AC_CHECK_LIB(m, pow)
AC_ARG_ENABLE(dlplugins,
AS_HELP_STRING([--disable-dlplugins], [do NOT use dynamically loaded plugins]))
if test "$enable_dlplugins" != "no"; then
AC_MSG_NOTICE(Using dynamically loaded plugins...)
AC_DEFINE(USE_DL_PLUGINS)
USE_DL_PLUGINS=1
AC_SUBST(USE_DL_PLUGINS)
DOSBIN_LDFLAGS="-rdynamic"
AC_SUBST(DOSBIN_LDFLAGS)
AC_CHECK_LIB(dl, dlopen)
else
AC_MSG_NOTICE(Not using dynamically loaded plugins...)
fi
SIG_PROTO_PFX="__attribute__((no_instrument_function))"
dnl check for stack protector disabling functionaity
AC_MSG_CHECKING([for __attribute__((optimize("no-stack-protector")))])
AX_SAVE_FLAGS([attr_check])
CFLAGS="-Wall -Werror -fstack-protector-all"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
void foo(void);
__attribute__((optimize("no-stack-protector")))
void foo(void)
{
}
])],
[
AC_MSG_RESULT([supported])
SIG_PROTO_PFX="$SIG_PROTO_PFX __attribute__((optimize(\"no-stack-protector\")))"
],
[
AC_MSG_RESULT([unsupported])
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fno-stack-protector"
])
AX_RESTORE_FLAGS([attr_check])
AC_DEFINE_UNQUOTED(SIG_PROTO_PFX, $SIG_PROTO_PFX)
dnl Check whether we have pthreads and whether to use it
AC_CHECK_LIB(pthread, pthread_create,, [
dnl see if the func is provided nevertheless (not needing -lpthread)
AC_CHECK_FUNC(pthread_create,, [
AC_MSG_ERROR([No libpthread found, please install glibc-devel package])
]
)])
AC_CHECK_FUNC(pthread_cancel,, [
AC_CHECK_HEADERS([bthread.h],, [
AC_MSG_ERROR([pthread_cancel() missing, install libbthread])
])
])
AC_CHECK_LIB(bthread, pthread_cancel)
AC_CHECK_FUNCS([pthread_getname_np pthread_setname_np])
AC_CHECK_FUNCS([pthread_attr_setsigmask_np pthread_setattr_default_np])
AC_CHECK_HEADER([wordexp.h],, [
AC_MSG_ERROR([wordexp.h missing, install libwordexp])
])
AC_CHECK_LIB(wordexp, wordexp)
AC_CHECK_HEADERS([scsi/sg.h linux/cdrom.h sys/io.h])
AC_CHECK_HEADERS([netipx/ipx.h linux/ipx.h netpacket/packet.h])
AC_CHECK_HEADERS([asm/ucontext.h],,, [
#include <ucontext.h>
#include <signal.h>
])
AC_CHECK_HEADERS([ucontext.h],, [
AS_UNSET([ac_cv_header_ucontext_h])
AC_CHECK_HEADER([ucontext.h],
AC_DEFINE([_XOPEN_SOURCE], [500], [Use X/Open 5 with POSIX 1995]),
AC_MSG_ERROR([Can't use ucontext.h]), [
#define _XOPEN_SOURCE 500
])])
AC_CHECK_HEADERS([linux/signal.h],,, [#include <signal.h>])
AC_CHECK_HEADERS([sys/soundcard.h], [
USE_OSS=1
AC_SUBST(USE_OSS)
])
DATE_FMT="%F %T %z"
test -n "$SOURCE_DATE_EPOCH" || SOURCE_DATE_EPOCH=`date +%s`
CONFIG_TIME=`date -u -d "@$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "+$DATE_FMT" 2>/dev/null || date -u "+$DATE_FMT"`
AC_DEFINE_UNQUOTED(CONFIG_HOST, "$CONFIG_HOST")
AC_DEFINE_UNQUOTED(CONFIG_TIME, "$CONFIG_TIME")
dnl enable EXPERIMENTAL stuff
AC_ARG_ENABLE(experimental,
AS_HELP_STRING([--enable-experimental], [enable configuration of EXPERIMENTAL stuff]))
if test "$enable_experimental" = "yes"; then
AC_MSG_NOTICE(Allowing EXPERIMENTAL stuff to be configured...);
AC_DEFINE([EXPERIMENTAL], 1, [ Define this to enable experimental stuff ])
else
AC_MSG_NOTICE(EXPERIMENTAL stuff disabled...);
fi
dnl try to hook in available plug-ins
AC_ARG_ENABLE(plugins,
AS_HELP_STRING([--enable-plugins=list],
[comma-separated list of plugins, use + to append]))
def_plugins=`cat $srcdir/plugin_list | sed 's/$/,/g' | tr -d '\n' | sed 's/,$//'`
if test -z "$enable_plugins"; then
enable_plugins="$def_plugins"
fi
if test "${enable_plugins#\+}" != "$enable_plugins"; then
enable_plugins="$def_plugins,${enable_plugins#\+}"
fi
if test "$enable_plugins" = "no"; then
enable_plugins=""
fi
AC_ARG_WITH(plugin-options,
[AS_HELP_STRING([--with-plugin-options=PLUGIN,OPTS],
[Pass options OPTS to plugin PLUGIN])],
[
plu=`echo $withval |cut -d "," -f 1`
val=`echo $withval |cut -d "," -f 2`
export ${plu}_OPTS="$val"
]
)
if ! test -f Makefile.conf.in; then
AC_MSG_NOTICE([Populating makefiles...])
wd=`pwd`
abssrcdir=`cd $srcdir && pwd`
if test "${wd#$abssrcdir}" != "$wd" ; then
builddir=".${wd#$abssrcdir}"
else
builddir="$wd"
fi
mkdir -p `(cd $abssrcdir; find doc man etc src test -type d -print)`
for i in `(cd $abssrcdir; find . -path $builddir -prune -o -name Makefile -print -o -name '*.mak' -print -o -name '*.bat' -print -o -name '*.sys' -print)`; do
echo $LN_S -f $abssrcdir/${i#./} $i
$LN_S -f $abssrcdir/${i#./} $i
done
for i in `(cd $abssrcdir; find man -name '*.1')`; do
cp $abssrcdir/$i $i
done
fi
AC_MSG_NOTICE([Creating plug-in hooks...])
PLUGINSUBDIRS=
ST_PLUGINSUBDIRS=
$srcdir/scripts/mkpluginhooks clean
for i in $(echo $enable_plugins | tr ',' ' '); do
if test -z "$i"; then continue; fi
if $srcdir/scripts/plugctl.sh $i yes --disable-option-checking $ac_configure_args; then
PLUGINSUBDIRS="$PLUGINSUBDIRS plugin/$i"
if ! $EGREP 'USE_DL_PLUGINS|NO_LIB' $srcdir/src/plugin/$i/Makefile >/dev/null ; then
ST_PLUGINSUBDIRS="$ST_PLUGINSUBDIRS plugin/$i"
fi
fi
done
PLUGINS=`echo $PLUGINSUBDIRS | $SED 's/plugin\//\n\t/g'`
FDPP_PLU=`echo $PLUGINS | $EGREP 'fdpp'`
AC_ARG_ENABLE(fdpp,
[AS_HELP_STRING([--disable-fdpp], [compile without fdpp support])],,
enable_fdpp="yes"
)
AC_ARG_ENABLE(system_wa,
AS_HELP_STRING([--disable-system-wa], [compile without system-specific
work-arounds (mostly for linux kernel) that are not needed on this system]))
AS_IF([test "x$enable_system_wa" = "xno"], [
AC_MSG_NOTICE(Disabling system-specific work-arounds)
AC_DEFINE(DISABLE_SYSTEM_WA)
AS_IF([test -z "$WARN_OUTDATED_WA" -a -n "$WARN_UNDISABLED_WA"], [
AC_DEFINE(WARN_UNDISABLED_WA)])
])
AS_IF([test -n "$WARN_OUTDATED_WA"], [
AC_MSG_NOTICE(Enabling compile-time warnings for outdated work-arounds)
AC_DEFINE(WARN_OUTDATED_WA)
])
dnl Do compilation for GDB
HAVE_LIBBFD=0
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug], [compile with debug info]))
if test "$enable_debug" != "no"; then
AC_MSG_NOTICE(Compiling with debug info...)
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -ggdb3"
if test "$use_clang" = "yes" ; then
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fdebug-macro"
fi
AC_ARG_ENABLE(xbacktrace, AS_HELP_STRING([--enable-xbacktrace],
[enable extended backtrace functionality]))
if test "$enable_xbacktrace" = "yes"; then
AC_CHECK_HEADER(bfd.h, [
AC_CHECK_LIB(z, inflate)
dnl check iberty before bfd - order matters
AC_CHECK_LIB(iberty, lrealpath)
AC_CHECK_LIB(bfd, bfd_init)
if test "$ac_cv_lib_bfd_bfd_init" = "yes"; then
HAVE_LIBBFD=1
AC_DEFINE(HAVE_LIBBFD)
fi
])
if test "$HAVE_LIBBFD" = "1"; then
AC_MSG_NOTICE(Enabling extended backtrace functionality)
else
AC_MSG_WARN(libbfd not available, no extended backtrace functionality)
fi
fi
AC_CHECK_HEADER([execinfo.h], [
AC_DEFINE(HAVE_EXECINFO)
if test "$HAVE_LIBBFD" != "1"; then
DOSEMU_LDFLAGS="$DOSEMU_LDFLAGS -rdynamic"
fi
AC_CHECK_FUNCS([backtrace backtrace_symbols])
])
else
AC_MSG_NOTICE(Compiling without debug info...)
fi
AC_ARG_ENABLE(profile,
AS_HELP_STRING([--enable-profile], [compile with profile info]))
AC_ARG_ENABLE(asan, [AS_HELP_STRING(--enable-asan, [enable address sanitizer])])
AC_ARG_ENABLE(lsan, [AS_HELP_STRING(--enable-lsan, [enable leak sanitizer])])
AC_ARG_ENABLE(tsan, [AS_HELP_STRING(--enable-tsan, [enable thread sanitizer])])
AC_ARG_ENABLE(ubsan, [AS_HELP_STRING(--enable-ubsan, [enable UB sanitizer])])
AC_SUBST(OPTIONALSUBDIRS)
AC_SUBST(REQUIRED)
AC_SUBST(PLUGINSUBDIRS)
AC_SUBST(ST_PLUGINSUBDIRS)
RELEASE_DATE=`cd $srcdir && ./getversion -d`
AC_SUBST(RELEASE_DATE)
dnl CPU emulator
AC_ARG_ENABLE(cpuemu, [AS_HELP_STRING([--disable-cpuemu],
[do NOT compile with optional x86 emulation code])])
if test "$enable_cpuemu" != "no"; then
AC_MSG_NOTICE(Compiling with x86 emulator)
AC_DEFINE(X86_EMULATOR)
X86_EMULATOR=1
AC_SUBST(X86_EMULATOR)
if test "$machine" = "i386" -o "$machine" = "x86_64"; then
AC_ARG_ENABLE(cpuemu_jit, [AS_HELP_STRING([--disable-cpuemu-jit],
[do NOT compile with optional x86 JIT])])
if test "$enable_cpuemu_jit" != "no"; then
AC_MSG_NOTICE(Compiling with x86 JIT)
AC_DEFINE(X86_JIT)
X86_JIT=1
AC_SUBST(X86_JIT)
fi
fi
fi
AC_ARG_WITH(target_cpu, [AS_HELP_STRING([--with-target-cpu=CPU],
[use the specified target CPU. default=auto])])
if test "$with_target_cpu" = ""; then
AC_MSG_NOTICE(Compiling with default target CPU...)
target_cpu=""
else
AC_MSG_NOTICE(Compiling with specified target CPU...)
target_cpu=$with_target_cpu
fi
if test "$machine" = "i386" -o "$with_target_bits" = "32" -o \
"$enable_profile" = "yes"; then
AC_MSG_NOTICE(Compiling as non-PIE...)
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fno-pie"
AX_CHECK_COMPILE_FLAG([-no-pie],
[DOSEMU_LDFLAGS="$DOSEMU_LDFLAGS -no-pie"])
else
AC_MSG_NOTICE(Compiling as PIE for $machine...)
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fpie"
DOSEMU_LDFLAGS="$DOSEMU_LDFLAGS -pie"
fi
if test "$CONFIG_HOST" = "Linux"; then
if test "$machine" = "i386" -o "$machine" = "x86_64"; then
AC_ARG_ENABLE(dnative, [AS_HELP_STRING([--disable-dnative],
[do NOT compile with native DPMI support])])
if test "$enable_dnative" != "no"; then
AC_MSG_NOTICE([Enabling native DPMI support...])
AC_DEFINE(DNATIVE)
DNATIVE=1
AC_SUBST(DNATIVE)
fi
AC_DEFINE(USE_KVM)
KVM=1
AC_SUBST(KVM)
fi
fi
if test "$CONFIG_HOST" = "Darwin"; then
DOSEMU_LDFLAGS="$DOSEMU_LDFLAGS -Wl,-undefined,dynamic_lookup"
fi
AC_ARG_ENABLE(mcontext,
AS_HELP_STRING([--disable-mcontext], [disable fast context switch]))
if test "$enable_mcontext" != "no"; then
AC_MSG_NOTICE([Enabling fast context switching...])
AC_DEFINE(MCONTEXT)
MCONTEXT=1
AC_SUBST(MCONTEXT)
fi
if test "$enable_asan" = "yes"; then
AX_CHECK_LINK_FLAG([-fsanitize=address], [
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fsanitize=address"
# working around this bug:
# https://github.com/google/sanitizers/issues/934
# Linking to libstdc++ seems to be the cure.
LDFLAGS="$LDFLAGS -fsanitize=address -lstdc++"
AC_MSG_NOTICE(enabling address sanitizer)
])
fi
if test "$enable_lsan" = "yes"; then
AX_CHECK_LINK_FLAG([-fsanitize=leak], [
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fsanitize=leak"
LDFLAGS="$LDFLAGS -fsanitize=leak"
AC_MSG_NOTICE(enabling leak sanitizer)
])
fi
if test "$enable_tsan" = "yes"; then
AX_CHECK_LINK_FLAG([-fsanitize=thread], [
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fsanitize=thread"
LDFLAGS="$LDFLAGS -fsanitize=thread"
AC_MSG_NOTICE(enabling thread sanitizer)
])
fi
if test "$enable_ubsan" = "yes"; then
AX_CHECK_LINK_FLAG([-fsanitize=undefined], [
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -fsanitize=undefined -fno-sanitize=alignment"
LDFLAGS="$LDFLAGS -fsanitize=undefined"
AC_MSG_NOTICE(enabling UB sanitizer)
])
fi
if test "$enable_profile" = "yes"; then
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -pg -no-pie"
LDFLAGS="$LDFLAGS -pg -no-pie"
AC_MSG_NOTICE(enabling profiling)
fi
AC_ARG_ENABLE(optimization,
AS_HELP_STRING([--disable-optimization], [disable optimization]))
if test "$enable_optimization" = "no" ; then
if test "$enable_debug" = "yes"; then
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -Og"
AC_MSG_NOTICE(optimization set to -Og)
else
# simx86 is too slow on gcc without -O
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -O0"
AC_MSG_NOTICE(optimization set to -O0)
fi
elif test -z "$CFLAGS" ; then
DOSEMU_CFLAGS="$DOSEMU_CFLAGS -O2"
AC_MSG_NOTICE(optimization set to -O2)
fi
DOSEMU_CFLAGS="${DOSEMU_CFLAGS} ${OPT} ${PIPE}"
DOSEMU_CPPFLAGS="${DOSEMU_CPPFLAGS} -MD -DCFLAGS_STR=\"$DOSEMU_CFLAGS $CFLAGS\""
DOSEMU_VERSION=`cd $srcdir && ./getversion -b`
AS_LDFLAGS="-melf_i386"
AC_SUBST(XASFLAGS)
AC_SUBST(ASFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(AS_LDFLAGS)
AC_SUBST(DOSEMU_CFLAGS)
AC_SUBST(DOSEMU_CPPFLAGS)
AC_SUBST(DOSEMU_LDFLAGS)
AC_SUBST(LIBS)
AC_SUBST(HAVE_LIBBFD)
AC_SUBST(HAVE_LIBBSD)
AC_SUBST(DOSEMU_VERSION)
cmds_rev=3
cmds_ver=0.$cmds_rev
cmdsuff=$PACKAGE_TARNAME-cmds-$cmds_ver
AC_DEFINE_UNQUOTED(CMDS_SUFF, "$cmdsuff")
AC_DEFINE_UNQUOTED(CMDS_REV, $cmds_rev)
AC_SUBST(cmdsuff)
dnl Print some warnings (if neccessary)
if test "$enable_fdpp" != "no" -a -z "$FDPP_PLU"; then
AC_MSG_ERROR([fdpp not available!])
fi
dnl Create output files. If you add new ones, please do it in order.
man_files=`cd $srcdir && find man -name '*.in' | sed 's/\.in$//'`
AC_DEFUN([AC_DATAROOTDIR_CHECKED])
adl_RECURSIVE_EVAL([$bindir], [e_bindir])
adl_RECURSIVE_EVAL([$datadir], [e_datadir])
AC_SUBST([e_bindir])
AC_SUBST([e_datadir])
AC_CONFIG_FILES([Makefile.conf $man_files etc/dosemu.desktop])
AC_OUTPUT
AC_MSG_RESULT()
AC_MSG_RESULT(Enabling plugins: $PLUGINS)
VID_PLU=`echo $PLUGINS | $EGREP 'sdl|X|term|sdl1'`
if test -z "$VID_PLU"; then
AC_MSG_RESULT()
AC_MSG_WARN([No video plugins available!])
fi
AUD_PLU=`echo $PLUGINS | $EGREP 'sdl|ao|sdl1'`
if test -z "$AUD_PLU"; then
AC_MSG_RESULT()
AC_MSG_WARN([No audio plugins available!])
fi
if test -z "$FDPP_PLU"; then
AC_MSG_RESULT()
AC_MSG_WARN([fdpp not available!])
fi
AH_TEMPLATE([HAVE_ASSIGNABLE_STDERR],
[ Define if stderr is not const ])
AH_TEMPLATE([HAVE_OPTRESET],
[ Define if optreset is available ])
AH_TEMPLATE([CONFIG_HOST],
[ Define the host for which Dosemu is configured ])
AH_TEMPLATE([CONFIG_TIME],
[ Define the configure time ])
AH_TEMPLATE([SIG_PROTO_PFX],
[ Define the signal handling function prototype prefix ])
AH_TEMPLATE([HAVE_STD_C11],
[Define this if your compiler supports c11])
AH_TEMPLATE([HAVE_STATIC_ASSERT],
[Define this if your glibc defines static_assert])
AH_TEMPLATE(HAVE_LIBBFD,
[Define this if you have binutils-devel installed])
AH_TEMPLATE(HAVE_LIBBSD,
[Define this if you have bsd-devel installed])
AH_TEMPLATE(HAVE_EXECINFO,
[Define this if you have execinfo.h in libc])
AH_TEMPLATE([USE_DL_PLUGINS],
[ DEFINE this, if you want dynamically loaded plugins ])
AH_TEMPLATE([X86_EMULATOR],
[ Define this to use the X86 CPU emulator ])
AH_TEMPLATE([X86_JIT],
[ Define this to use the X86 JIT ])
AH_TEMPLATE([DNATIVE],
[ Define this to enable native DPMI back-end ])
AH_TEMPLATE([USE_KVM],
[ Define this to enable kvm support ])
AH_TEMPLATE([MCONTEXT],
[ Define this to enable libmcontext use ])
AH_TEMPLATE([DISABLE_SYSTEM_WA],
[ Define this to disable system-specific work-arounds that are
unneeded on your system ])
AH_TEMPLATE([WARN_UNDISABLED_WA],
[ Define this to enable compile-time warnings for system-specific
work-arounds that were failed to disable ])
AH_TEMPLATE([WARN_OUTDATED_WA],
[ Define this to enable compile-time warnings for outdated
system-specific work-arounds ])
AH_TEMPLATE([CMDS_SUFF],
[ Commands directory suffix ])
AH_TEMPLATE([CMDS_REV],
[ Commands revision num ])

29
debian/changelog vendored Normal file
View File

@ -0,0 +1,29 @@
dosemu2 (2.0~pre9-1) focal; urgency=low
* pre9
-- Stas Sergeev <stsp@users.sourceforge.net> Sat, 29 Jan 2022 23:00:00 +0300
dosemu2 (2.0~pre8-2) disco; urgency=low
* fixing deps
-- Stas Sergeev <stsp@users.sourceforge.net> Mon, 25 Feb 2019 15:00:00 +0300
dosemu2 (2.0~pre8-1) artful; urgency=low
* pre8
-- Stas Sergeev <stsp@users.sourceforge.net> Mon, 27 Nov 2017 21:00:00 +0300
dosemu2 (2.0~pre7-1) xenial; urgency=low
* pre7
-- Stas Sergeev <stsp@users.sourceforge.net> Fri, 31 Mar 2017 23:00:00 +0300
dosemu2 (2.0~pre6-1) xenial; urgency=low
* Initial Release
-- Stas Sergeev <stsp@users.sourceforge.net> Mon, 12 Sep 2016 18:00:00 +0300

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
12

58
debian/control vendored Normal file
View File

@ -0,0 +1,58 @@
Source: dosemu2
Section: otherosfs
Priority: optional
Maintainer: Stas Sergeev <stsp@users.sourceforge.net>
Standards-Version: 4.1.5
Build-Depends:
git (>= 2.0),
autoconf,
autotools-dev,
automake,
make,
linuxdoc-tools,
bison,
debhelper (>= 9~),
flex,
gawk,
libx11-dev,
libxext-dev,
libslang2-dev,
xfonts-utils,
libgpm-dev,
libasound2-dev,
libsdl2-dev,
libsdl2-ttf-dev,
libfontconfig1-dev,
ladspa-sdk,
libfluidsynth-dev,
libao-dev,
libieee1284-3-dev,
libslirp-dev,
libbsd-dev,
libreadline-dev,
libjson-c-dev,
libb64-dev,
binutils-dev,
pkg-config,
fdpp-dev,
dj64-dev,
clang,
binutils-i686-linux-gnu
Homepage: https://github.com/dosemu2/dosemu2
Package: dosemu2
Replaces: dosemu
Conflicts: dosemu
Architecture: any
Depends:
${misc:Depends},
${shlibs:Depends},
fdpp,
dj64,
comcom64
Recommends:${shlibs-:Recommends}, ladspa-sdk, gdb, kbd, fluid-soundfont-gm,
install-freedos
Suggests: vde2, valgrind, install-otherdos
Description: fast and secure DOS emulator
dosemu2 is an emulator for running DOS programs under linux.
It can also serve as a VM to boot various DOSes.

341
debian/copyright vendored Normal file
View File

@ -0,0 +1,341 @@
Copyright of DOSEMU2, October 2014
==================================
1.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2. All dosemu2 sources that have no explicit copyright statement,
are copyrighted under GPLv2.
3. Parts of the code not covered by the GPL are marked explicitly
within the code, and/or their copyrights are at the end of this
file.
4. There are no restrictions to run any (proprietary or free) DOS software
under dosemu, unless the license of that software says otherwise.
The copyrights referred to in clause 2:
--- GPLv2 (used as a default license in older dosemu releases)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program 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 General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
The copyrights referred to in clause 3 are from:
--- The Mach DOS Emulator
Copyright (c) 1991 Carnegie Mellon University
All Rights Reserved.
Permission to use, copy, modify and distribute this software and its
documentation is hereby granted, provided that both the copyright
notice and this permission notice appear in all copies of the
software, derivative works or modified versions, and any portions
thereof, and that both notices appear in supporting documentation.
CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
Carnegie Mellon requests users of this software to return to
Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
School of Computer Science
Carnegie Mellon University
Pittsburgh PA 15213-3890
any improvements or extensions that they make and grant Carnegie Mellon
the rights to redistribute these changes.
--- XFree86 (mouse code)
Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
Copyright 1993 by David Dawes <dawes@physics.su.oz.au>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the names of Thomas Roell and David Dawes not be
used in advertising or publicity pertaining to distribution of the
software without specific, written prior permission. Thomas Roell
and David Dawes makes no representations about the suitability of this
software for any purpose. It is provided "as is" without express or
implied warranty.
THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--- Doug Lea's malloc in src/base/misc/dlmalloc.c
This is a version (aka dlmalloc) of malloc/free/realloc written by
Doug Lea and released to the public domain, as explained at
http://creativecommons.org/licenses/publicdomain. Send questions,
comments, complaints, performance data, etc to dl@cs.oswego.edu
--- The VGA fonts in src/env/video/vgafonts.c (copyleft_vgafonts.txt)
This *compilation* is (c) Copyright 1991,1992 Joseph (Yossi) Gil.
Permission is granted to use and redistribute the files comprising
this collection in any way (including conversion to another format),
provided that my name and addresses and this notice is preserved.
Simple (dare I say trivial?) bitmapped screen fonts such as the ones
included in this collection cannot be copyrighted. In general, one can
only copyright programs that generate fonts. This is why postscript
fonts are copyrightable. For more details refer to discussions various
"legal" newsgroups. In addition, I have included a relevant excerpt
from the FAQ of comp.fonts at the bottom of this document.
No one can claim any copyright on the fonts in this archive. They
have been collected from numerous sources. Legally speaking, you are
*free* to do with the individual fonts whatever you like. Individual
fonts are in the public domain. I do ask that you will kindly refrain
from causing confusion by distributing modified versions of the fonts
contained in this collection.
Please send any all your EGA/VGA text mode fonts contributions to me
rather than distributing a modified version of this collection. I
will add your fonts to the next edition of this collection and happily
acknowledge your help. Your cooperation will enable us all to benefit
from your contribution. See the file LOOKING4.TXT for more details.
I am trying to keep track of the origins of these fonts. See the file
FONTORIG.TXT. Unfortunately, I only started to record this information
on version 1.2. Records of origin of earlier fonts are missing.
If you know the origin of any of the fonts here, please drop me a note.
Staring on version 1.6 the collection also includes some of the
miscellaneous utilities which I use for preparing it. Among these
you will find programs for loading, viewing, trimming and otherwise
manipulating the fonts. These utilities are also distributed as a
separate archive called fntutlXX.ZIP where XX is the version number.
All the utilities require no shareware payment. Restrictions on
distribution and usage are only to the extent necessary to protect
the free distribution.
I see this is as my pleasant duty to pay tribute to the following
individuals who communicated and contributed to this archive:
Dov Grobgeld <cfgrob@weizmann.weizmann.ac.il>
Angelos Karageorgiou <karage@insci.com>,<karage@scus1.ctstateu.edu>
Alexandre (Alex) Khalil <9999SC01@DT3.DT.UH.EDU>,<alex@dt.uh.edu>
Patrick Arzul <andrewd@cs.uct.ac.za>
Mike Threepoint <linhart@trident.usacs.rutgers.edu>
Glaude David [Glu] <dglaude@is1.vub.ac.be>
Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>
Itamar Even-Zohar <itiez@ccsg.tau.ac.il>
A.Weeks%bath.ac.uk@ib.rl.ac.uk
Miguel Farah.
This collection would not have been what it today is without their
help!
Author's Address
================
E-mail internet address: yogi@cs.technion.ac.il
Alternate E-mail addresses: yogi@cs.ubc.ca, yogi@umiacs.umd.edu.
Permanent mailing address is:
Joseph Gil, P.O. Box 3148, Jerusalem, Israel.
Hebrew mailing address (you cannot read the following unless
your screen adapter can display Hebrew character):
ליג יסוי
3148 .ד.ת
םילשורי
--------------------------------------------------------------------------
From comp.fonts Sat Sep 5 11:12:35 1992
walsh@cs.umass.edu (Norman Walsh)
Newsgroups: comp.fonts Subject: FAQ: Part-I: General Info Message-ID:
<WALSH.92Sep4153207@ibis.cs.umass.edu> Date: 4 Sep 92 19:32:07 GMT
Reply-To: walsh@cs.umass.edu Organization: Dept of Comp and Info Sci,
Univ of Mass (Amherst)
FAQ for comp.fonts: Part I: General Info
Maintained by Norm Walsh <walsh@cs.umass.edu> and
Bharathi Jagadeesh <bjag@nwu.edu>
Version 0.0.3, Release 04SEP92
Welcome to the comp.fonts FAQ. This article, posted monthly, describes
many of the basic questions that seem to be repeated frequently on
comp.fonts. Your comments are both welcome and encouraged.
Standard disclaimers apply.
....
At one level, there are two major sorts of fonts: bitmapped and
outline (scalable). Bitmapped fonts are falling out of fashion
as various outline technologies grow in popularity and support.
Bitmapped fonts represent each character as a rectangular grid of
pixels. The bitmap for each character indicates precisely what
pixels should be on and off. Printing a bitmapped character is
simply a matter of blasting the right bits out to the printer.
There are a number of disadvantages to this approach. The bitmap
represents a particular instance of the character at a particular
size and resolution. It is very difficult to change the size,
shape, or resolution of a bitmapped character without significant
loss of quality in the image. On the other hand, it's easy to do
things like shading and filling with bitmapped characters.
.....
5. Are fonts copyrightable?
This topic is hotly debated at regular intervals on comp.fonts.
Terry Carroll <tjc50@juts.ccc.amdahl.COM> provides the following
analysis of current [ed: as of 6/92] legislation and regulation
regarding fonts and copyrights. Members of the comp.fonts community
are encouraged to submit other materials that add clarity to the
issue.
*-[Quote]-----------------------------------------------------------*
First, the short answer: Typefaces are not copyrightable; bitmapped
fonts are not copyrightable, but scalable fonts are copyrightable.
Authorities for these conclusions follow.
Before we get started, let's get some terminology down:
A typeface is a set of letters, numbers, or other symbolic
characters, whose forms are related by repeating design elements
consistently applied in a notational system and are intended to be
embodied in articles whose intrinsic utilitarian function is for use
in composing text or other cognizable combinations of characters.
A font is the computer file or program that is used to represent
or create the typeface.
Now, on to the legal authorities:
Volume 37 of the Code of Federal Regulations specifies this about
the copyrightability of typefaces:
"The following are examples of works not subject to copyright and
applications for registration of such works cannot be entertained:
. . . typeface as typeface" 37 CFR 202.1(e).
By the way, you won't find that in the most recent (7/1/91) edition
of the CFR; the addition was enacted 2/21/92. It'll be in the
next edition, though. It's described in the 2/21/92 edition of
the Federal Register, page 6201 (57 FR 6201). The change didn't
actually change the law, it just clarified it, and codified existing
Copyright Office policy.
The regulation is in accordance with the House of Representatives
report that accompanied the new copyright law, when it was passed
in 1976:
"The Committee has considered, but chosen to defer, the possibility
of protecting the design of typefaces. A 'typeface' can be defined
as a set of letters, numbers, or other symbolic characters, whose
forms are related by repeating design elements consistently applied
in a notational system and are intended to be embodied in articles
whose intrinsic utilitarian function is for use in composing text
or other cognizable combinations of characters. The Committee
does not regard the design of typeface, as thus defined, to be a
copyrightable 'pictoral, graphic, or sculptural work' within the
meaning of this bill and the application of the dividing line in
section 101." H. R. Rep. No. 94-1476, 94th Congress, 2d Session
at 55 (1976), reprinted in 1978 U.S. Cong. and Admin. News 5659,
5668.
It's also in accordance with the one court case I know of that
has considered the matter: Eltra Corp. V. Ringer, 579 F.2d 294,
208 USPQ 1 (1978, C.A. 4, Va.).
The Copyright Office holds that a bitmapped font is nothing more
than a computerized representation of a typeface, and as such is
not copyrightable:
"The [September 29, 1988] Policy Decision [published at 53 FR 38110]
based on the [October 10,] 1986 Notice of Inquiry [published at 51
FR 36410] reiterated a number of previous registration decisions
made by the [Copyright] Office. First, under existing law, typeface
as such is not registerable. The Policy Decision then went on
to state the Office's position that 'data that merely represents
an electronic depiction of a particular typeface or individual
letterform' [that is, a bitmapped font] is also not registerable."
57 FR 6201.
However, scalable fonts are, in the opinion of the Copyright
Office, computer programs, and as such are copyrightable:
"... the Copyright Office is persuaded that creating scalable
typefonts using already-digitized typeface represents a
significant change in the industry since our previous [September
29, 1988] Policy Decision. We are also persuaded that computer
programs designed for generating typeface in conjunction with low
resolution and other printing devices may involve original computer
instructions entitled protection under the Copyright Act. For
example, the creation of scalable font output programs to produce
harmonious fonts consisting of hundreds of characters typically
involves many decisions in drafting the instructions that drive the
printer. The expression of these decisions is neither limited by
the unprotectable shape of the letters nor functionally mandated.
This expression, assuming it meets the usual standard of authorship,
is thus registerable as a computer program." 57 FR 6202.
*-[Unquote]---------------------------------------------------------*
-------------------------------------------------------------------------------
FLEXI IBM VGA9 FONTS: Scalable TrueType fonts based on the iconic hardware
VGA character set.
INCLUDED FONTS:
* Flexi IBM VGA9 True: Corrected aspect ratio, extended character set
* Flexi IBM VGA9 True 437: Corrected aspect ratio, CP437/DOS encoding
* Flexi IBM VGA9 False: Uncorrected aspect ratio, extended character set
* Flexi IBM VGA9 False 437: Uncorrected aspect ratio, CP437/DOS encoding
LICENSE:
These fonts are released under the Creative Commons Attribution-ShareAlike
4.0 International license: http://creativecommons.org/licenses/by-sa/4.0/
_________________________________________
// VileR 2018-05 https://int10.org
###### separator marking the end of COPYING.DOSEMU ######
On Debian systems, the complete text of the GNU General Public License version
2 can be found in `/usr/share/common-licenses/GPL-2'.

7
debian/docs vendored Normal file
View File

@ -0,0 +1,7 @@
BUGS
CONTRIBUTING.md
COPYING
COPYING.DOSEMU
NEWS.md
README.md
THANKS

1
debian/install vendored Normal file
View File

@ -0,0 +1 @@
etc/dosemu2.alias etc/X11/fonts/misc/

20
debian/rules vendored Executable file
View File

@ -0,0 +1,20 @@
#!/usr/bin/make -f
export DH_ALWAYS_EXCLUDE=fonts.dir:fonts.alias
export CC=clang
%:
dh $@ --parallel --builddirectory=build
override_dh_autoreconf:
./autogen.sh
override_dh_auto_configure:
dh_auto_configure -O--parallel -- \
--with-x11fontdir=/usr/share/fonts/X11/misc
override_dh_shlibdeps:
dh_shlibdeps -X.so
dh_shlibdeps -- -dRecommends -pshlibs-
override_dh_dwz:

1
debian/source/format vendored Normal file
View File

@ -0,0 +1 @@
3.0 (quilt)

163
default-configure Executable file
View File

@ -0,0 +1,163 @@
#! /bin/sh
srcdir="`dirname "$0" | xargs realpath`"
CONF_FILE=compiletime-settings
if [ ! -f configure.ac ]; then
[ -f $CONF_FILE ] || cp "$srcdir"/$CONF_FILE .
[ -f $CONF_FILE.devel ] || cp "$srcdir"/$CONF_FILE.devel .
fi
if [ "$1" != "" ]; then
if [ "${1#--}" = "$1" -a "${1#*=}" = "$1" ]; then
CONF_FILE=$1
if [ "$CONF_FILE" = "-d" ]; then
CONF_FILE=compiletime-settings.devel
fi
shift
fi
fi
if [ ! -f $CONF_FILE ]; then
echo "$CONF_FILE cannot be opened"
exit 1
fi
CONF=`cat $CONF_FILE`
CONF=`printf "$CONF"| sed '/^config {/d' | sed '/^}/d' | tr '\n' ' ' `
SUFFIX=""
while [ "$#" != "0" ]; do
case "$1" in
--enable-plugin*)
EXTRA_PLUGINS="$EXTRA_PLUGINS,${1#*=}"
;;
--*)
SUFFIX="$SUFFIX $1"
;;
*)
CONF="$CONF `echo $1 | tr '=' ' '`"
;;
esac
shift
done
set $CONF
#echo "$*"
STRING=""
PLUGIN=`cat $srcdir/plugin_list | sed 's/$/,/g' | tr -d '\n' | sed 's/,$//'`
while [ "$1" != "" ]; do
# echo "$1 $2"
case "$1" in
experimental)
if [ "$2" = "on" ]; then STRING="$STRING --enable-experimental"; fi
;;
debug)
if [ "$2" = "on" ]; then STRING="$STRING --enable-debug"; fi
;;
asan)
if [ "$2" = "on" ]; then STRING="$STRING --enable-asan"; fi
;;
lsan)
if [ "$2" = "on" ]; then STRING="$STRING --enable-lsan"; fi
;;
tsan)
if [ "$2" = "on" ]; then STRING="$STRING --enable-tsan"; fi
;;
ubsan)
if [ "$2" = "on" ]; then STRING="$STRING --enable-ubsan"; fi
;;
optimize)
if [ "$2" = "off" ]; then STRING="$STRING --disable-optimization"; fi
;;
system-wa)
if [ "$2" = "off" ]; then STRING="$STRING --disable-system-wa"; fi
;;
cpuemu)
if [ "$2" = "off" ]; then STRING="$STRING --disable-cpuemu"; fi
;;
dlplugins)
if [ "$2" = "off" ]; then STRING="$STRING --disable-dlplugins"; fi
;;
x11fontdir)
STRING="$STRING --with-$1=$2"
;;
fdtarball)
STRING="$STRING --with-$1=$srcdir/$2"
;;
fdpp-build-path)
FDPP_STR="$FDPP_STR --with-$1=$2"
;;
fdpp-include-path)
FDPP_STR="$FDPP_STR --with-$1=$2"
;;
fdpp)
if [ "$2" = "off" ]; then
STRING="$STRING --disable-fdpp";
PLUGIN=`echo "$PLUGIN" | sed -e s/fdpp//`;
fi
;;
docdir|mandir|datadir|libdir|sysconfdir|bindir|prefix)
STRING="$STRING --$1=`echo $2`"
;;
target_bits)
if [ "$2" != "auto" ]; then
if uname -m | grep -q 64; then
otherbits=64
if cpp -dM /dev/null | grep -q __x86_64__; then
otherbits=32
fi
if [ "$2" = "$otherbits" ]; then
STRING="$STRING --with-target-bits=$otherbits";
fi
elif [ "$2" = "64" ]; then
# cross compilation on pure 32-bit machines
STRING="$STRING --with-target-bits=64 --host=x86_64-pc-linux-gnu";
fi
fi
;;
target_cpu)
if [ "$2" != "auto" ]; then STRING="$STRING --with-target-cpu=$2"; fi
;;
plugin_*)
plugin=${1#plugin_}
if [ "$2" = "on" ]; then PLUGIN="$PLUGIN,$plugin"; fi
if [ "$2" = "off" ]; then
PLUGIN=`echo "$PLUGIN" | sed -e s/$plugin// -e s/,,/,/`;
fi
;;
*)
;;
esac
shift; shift;
done
[ -f "$srcdir"/install-sh ] || "$srcdir"/autogen.sh || exit $?
if [ -z "$MAKE" ]; then
if [ `uname -s` = "FreeBSD" ]; then
MAKE=gmake
else
MAKE=make
fi
fi
if [ `uname -s` = "FreeBSD" ]; then
export CPPFLAGS="${CPPFLAGS} -I/usr/local/include"
export LDFLAGS="${LDFLAGS} -L/usr/local/lib"
fi
${MAKE} "$srcdir"/configure
STRING="$STRING --enable-plugins=$PLUGIN,$EXTRA_PLUGINS"
if [ -n "$FDPP_STR" ]; then
FDPP_STR=`echo $FDPP_STR | sed 's/^ *//'`
STRING="$STRING --with-plugin-options=fdpp,\"$FDPP_STR\""
fi
if [ -z "$CC" ] && which ccache; then
echo "Enabling ccache use"
export CC="ccache cc"
fi
echo exec "$srcdir"/configure $STRING $SUFFIX
eval exec "$srcdir"/configure $STRING $SUFFIX

607
doc/EMUfailure.html Normal file
View File

@ -0,0 +1,607 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Known dosemu problems</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
><BODY
CLASS="ARTICLE"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
NAME="AEN2"
>Known dosemu problems</A
></H1
><DIV
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN4"
></A
><P
>This file lists programs and groups of programs not running or running
only partially under dosemu. The most up-to-date version of this file
may be found on:
<SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
><A
HREF="http://www.dosemu.org/"
TARGET="_top"
>http://www.dosemu.org/</A
></I
></SPAN
>.
Please report about possible additions to
<SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
><A
HREF="mailto:linux-msdos@vger.kernel.org"
TARGET="_top"
>linux-msdos@vger.kernel.org</A
></I
></SPAN
>
or the SourceForge BTS at
<SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
><A
HREF="http://www.dosemu.org/"
TARGET="_top"
>http://www.dosemu.org/</A
></I
></SPAN
>.
Perhaps your program can be made going
with the help of others. Have a look at the dosemu-howto how to do so.</P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1. <A
HREF="#AEN12"
>Fundamental problems</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="#AEN15"
>Virtual Control Program Interface (VCPI)</A
></DT
><DT
>1.2. <A
HREF="#AEN19"
>Programs using older versions of the Pharlap Extender</A
></DT
><DT
>1.3. <A
HREF="#AEN24"
>Programs using the JEMM memory manager</A
></DT
><DT
>1.4. <A
HREF="#AEN28"
>Does my failing program belong to these groups?</A
></DT
><DT
>1.5. <A
HREF="#AEN32"
>Fundamental problem with the Linux kernel</A
></DT
><DT
>1.6. <A
HREF="#AEN40"
>Fundamental problems with the CPU</A
></DT
><DD
><DL
><DT
>1.6.1. <A
HREF="#AEN43"
>Problem with the virtualization of the IF flag</A
></DT
><DT
>1.6.2. <A
HREF="#AEN52"
>ESP register corruption</A
></DT
></DL
></DD
></DL
></DD
><DT
>2. <A
HREF="#AEN69"
>Known bugs</A
></DT
><DD
><DL
><DT
>2.1. <A
HREF="#AEN71"
>Things YOU may help changing</A
></DT
><DD
><DL
><DT
>2.1.1. <A
HREF="#AEN73"
>List of currently known bugs in dosemu2</A
></DT
></DL
></DD
></DL
></DD
><DT
>3. <A
HREF="#AEN84"
>Programs exhibiting graphical problems in xdosemu</A
></DT
><DD
><DL
><DT
>3.1. <A
HREF="#AEN87"
>Games with graphical problems</A
></DT
></DL
></DD
><DT
>4. <A
HREF="#AEN95"
>Differences in behaviour between Dosemu and Dosemu2</A
></DT
><DD
><DL
><DT
>4.1. <A
HREF="#AEN98"
>Filesystems</A
></DT
><DD
><DL
><DT
>4.1.1. <A
HREF="#AEN100"
>MFS</A
></DT
></DL
></DD
></DL
></DD
></DL
></DIV
><DIV
CLASS="SECT1"
><H2
CLASS="SECT1"
><A
NAME="AEN12"
>1. Fundamental problems</A
></H2
><P
>Programs that don't work under the MSDOS Emulator and probably won't
ever work, because of fundamental problems. Some of these fundamental
problems result in these programs not being runnable on
Win3.x/Win95/WinNT and under OS/2 DOS box either. These programs
are characterized by using any of these features:</P
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN15"
>1.1. Virtual Control Program Interface (VCPI)</A
></H3
><P
>VCPI allows programs to run in ring 0. This is kernel mode in Linux
and not sensible.</P
><P
>Example: sim2181.exe from Analog Devices DSP Kit</P
></DIV
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN19"
>1.2. Programs using older versions of the Pharlap Extender</A
></H3
><P
>Older versions of the Pharlap Extender (run286) need ring-0 access
under DOSEMU to install their own DPMI server. The use of proprietary
undocumented extensions to the DPMI protocol makes DOSEMU's DPMI server
unsuitable for this extender.</P
><P
>Example: Autocad Version 12c1 For DOS</P
><P
>Example: the game BioForge by Origin Systems.</P
></DIV
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN24"
>1.3. Programs using the JEMM memory manager</A
></H3
><P
>The JEMM memory manager provides proprietary extensions to the EMS
protocol. These are not supported by DOSEMU.</P
><P
>Example: Wing Commander Privateer by Origin Systems</P
></DIV
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN28"
>1.4. Does my failing program belong to these groups?</A
></H3
><P
>Check with "strings &lt;program.exe&gt; | less" if the program
contains some of these keywords: <SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
> vcpi, RUN286</I
></SPAN
>.</P
></DIV
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN32"
>1.5. Fundamental problem with the Linux kernel</A
></H3
><P
>The Programmable Interval Timer (PIT) can be programmed to produce
interrupts with frequencies up to almost 2MHz. Linux sets this to
only 100Hz (2.6 kernels can set it to 1KHz) and doesn't allow the
software to change that. This limits the minimal interval between subsequent
SIGALRM notifications for software that uses the setitimer(2) syscall.
To emulate the PIT frequencies that are higher than the frequency Linux
sets the PIT to, dosemu uses "interrupt bursts": on every SIGALRM
reception dosemu triggers the timer interrupt as many times as necessary
to compensate the gap since the previous SIGALRM reception. This allows
to keep a precise timing but causes problems for some programs. When
the timer interrupt handler is invoked more than once without letting
the main thread to execute, some programs can lock up. The game "Cosmo" is
one of those.</P
><P
>Another problem is that due to the aforementioned low timer frequency
dosemu is not able to properly emulate the timings for different
emulated hardware. That also causes problems for some programs.
Scream Tracker 3, for example, can lock up at startup because the
interrupt from an emulated SB card can be triggered earlier than it
should be in a real system.</P
><P
>Possibly a workaround may be found in future DOSEMU versions.</P
><P
>Linux kernels prior to 3.16 may have various problems on x86-64.
Make sure to not use 3.14 and 3.15 as they
<A
HREF="https://www.codeweavers.com/support/wiki/Diag/BrokenLDT16"
TARGET="_top"
>lack 16bit segments support</A
></P
><P
>3.16 adds support for espfix64 feature.</P
></DIV
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN40"
>1.6. Fundamental problems with the CPU</A
></H3
><P
>There are several defects in Intel's x86 CPUs that are causing
problems for some software. Below is a description of the defects
that are known to cause problems for software running under dosemu.</P
><DIV
CLASS="SECT3"
><HR><H4
CLASS="SECT3"
><A
NAME="AEN43"
>1.6.1. Problem with the virtualization of the IF flag</A
></H4
><P
><A
HREF="http://www.intel.com/design/intarch/techinfo/pentium/inout.htm"
TARGET="_top"
>Intel's manual</A
>
says:</P
><P
>" A procedure may use the POPF instruction to change the setting of the IF
flag only if the CPL is less than or equal to the current IOPL. An attempt
by a less privileged procedure to change the IF flag does not result in
an exception; the IF flag simply remains unchanged. "</P
><P
>The fact that the exception is not being generated, prevents dosemu from
catching and properly simulating the POPF instruction executed in protected
mode. That, in particular, means that the following code, executed in
protected mode (not in v86 mode) under dosemu, will end up with interrupts
disabled (IF cleared):</P
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
> sti
pushf
cli
popf</PRE
></TD
></TR
></TABLE
>
[ the interrupts are still disabled here ]</P
><P
>This bug can only affect DPMI programs, as using DPMI is the only way
to execute protected mode code under dosemu.
Known programs that are affected are the games from ID software, namely
Doom2 and Duke Nukem 3D, but only when configured with sound.
An optional work-around was added to dosemu, which just re-enables the
interrupts if they were disabled for too long in protected mode.
Additionally the address of the instruction that disabled the interrupts,
is added to a black-list and this instruction is ignored for subsequent
passes so that it can't disable the interrupts any more.
This is potentially unsafe, but if the timeout is long enough, no harm
was observed so far.
The timeout is configured via the $_cli_timeout option, which is measured
in a 10ms timer ticks. Setting that option to 0 disables the workaround
completely, making Doom2 unplayable with sound enabled.</P
></DIV
><DIV
CLASS="SECT3"
><HR><H4
CLASS="SECT3"
><A
NAME="AEN52"
>1.6.2. ESP register corruption</A
></H4
><P
>Intel's x86 CPUs have a defect
<A
HREF="http://www.intel.com/design/intarch/specupdt/27287402.PDF"
TARGET="_top"
>described here</A
>,
chapter "Specification Clarifications"
section 4: "Use Of ESP In 16-Bit Code With 32-Bit Interrupt Handlers",
which reads as follows:</P
><P
>"ISSUE: When a 32-bit IRET is used to return to another privilege level,
and the old level uses a 4G stack (D/B bit in the segment register = 1),
while the new level uses a 64k stack (D/B bit = 0), then only the
lower word of ESP is updated. The upper word remains unchanged. This is
fine for pure 16-bit code, as well as pure 32-bit code. However, when
32-bit interrupt handlers are present, 16-bit code should avoid any
dependence on the upper word of ESP. No changes are necessary in existing
16-bit code, since the only way to access ESP in USE16 segments is
through the 32-bit address size prefix."</P
><P
>Unfortunately, the above quote from Intel is silent about the 32-bit
programs that use 16-bit stack segment - this is where the problem pops us.
The corruption happens when the Linux kernel returns control to the dosemu
process, while a 32-bit DPMI client that uses a 16-bit data segment for
the stack is active. This is not the usual case, but unfortunately some
32-bit DPMI clients are actually using a 16-bit segment for the stack,
and even the dos4gw extender behaves that way sometimes.</P
><P
>Programs that are known to be affected by this issue are:
<P
></P
><UL
><LI
><P
>Need For Speed 1 (demo version at least, when configured with sound)</P
></LI
><LI
><P
>Syndicate Wars (when used with dos4gw 0.8)</P
></LI
><LI
><P
>Open Cubic Player</P
></LI
></UL
></P
><P
>These programs are crashing shortly after startup, but this problem
is difficult to detect reliably, so there may be many more programs
that experience a random crashes due to this CPU bug.</P
><P
>The reliable work-around was developed and added into linux-2.6.12
for 32-bit systems, and into linux-3.16 for 64-bit systems.</P
><P
>Note: linux kernels prior to 3.16 may have various problems on x86-64.</P
></DIV
></DIV
></DIV
><DIV
CLASS="SECT1"
><HR><H2
CLASS="SECT1"
><A
NAME="AEN69"
>2. Known bugs</A
></H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN71"
>2.1. Things YOU may help changing</A
></H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN73"
>2.1.1. List of currently known bugs in dosemu2</A
></H4
><P
></P
><UL
><LI
><P
>Some documentation is known to be well out of date. </P
></LI
><LI
><P
>Some database programs (Clipper, FoxPro) have problems with
locking in certain configurations. smbfs doesn't support
locking. $_full_file_locks=(on) may or may not help.</P
></LI
><LI
><P
>Mortal Kombat 1 and 2 are not producing any sound for unknown reasons.</P
></LI
><LI
><P
>X-COM Apocalypse (DEMO version) locks up at startup if configured with sound.</P
></LI
></UL
></DIV
></DIV
></DIV
><DIV
CLASS="SECT1"
><HR><H2
CLASS="SECT1"
><A
NAME="AEN84"
>3. Programs exhibiting graphical problems in xdosemu</A
></H2
><P
>The following programs work perfectly on the Linux console
(suid/sudo/root) with graphics enabled but exhibit minor or
major glitches in xdosemu.</P
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN87"
>3.1. Games with graphical problems</A
></H3
><P
>The following games exhibit glitches or don't work at all in
xdosemu. Please let us know when any problems are solved or
even better, help us solving!</P
><P
></P
><UL
><LI
><P
>Commander Keen 1 wobbles like jelly and the window shakes
every time it scrolls.</P
></LI
><LI
><P
>Pinball Dreams 2 takes a long time to start. Once it's past
the startup screen it runs fine though.</P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="SECT1"
><HR><H2
CLASS="SECT1"
><A
NAME="AEN95"
>4. Differences in behaviour between Dosemu and Dosemu2</A
></H2
><P
>The following differences may be apparent if you have previously been
using Dosemu.</P
><DIV
CLASS="SECT2"
><HR><H3
CLASS="SECT2"
><A
NAME="AEN98"
>4.1. Filesystems</A
></H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN100"
>4.1.1. MFS</A
></H4
><P
>Network device DOS filesystem that provides read write access to the host filesystem.</P
><P
></P
><UL
><LI
><P
>Dosemu2 does not redirect a drive to arbitrary host paths on the command
line of the emufs.sys driver when it is loaded in config.sys. Use the lredir2
command to accomplish this in autoexec.bat instead.</P
></LI
><LI
><P
>Dosemu2 does not support LFN on the SUBST / JOIN drives.</P
></LI
><LI
><P
>Dosemu2 now provides enhanced FAT32 disk functions only as a fallback
to the native DOS in the event that the DOS does not implement them itself.
A consequence of being a fallback is that if the DOS has a bug in its
implementation it is not overriden by Dosemu2. Examples of this are
MS-DOS 7.0 and PC-DOS 7.10.</P
></LI
></UL
></DIV
></DIV
></DIV
></DIV
></BODY
></HTML
>

430
doc/NOVELL-HOWTO.txt Normal file
View File

@ -0,0 +1,430 @@
Netware-HOWTO
Lauri Tischler ltischler@fipower.pp.fi
rev.0.2 30 Mar 1995
updated for DOSEMU 1.2.0, 18 Jan 2004, Bart Oldeman -- contributions
by Peter Eckhardt
This document tryes to descibe how to connect to Novell Netware
servers from Linux.
1. Introduction
Due to the limited scope of this note, it is not a real HOWTO, not
even a 'mini-HOWTO'. You might call it a 'nano-HOWTO' if you like.
In most sites the Netware is really just an extension to PC's running
DOS and DOS applications (Windows is JUST another DOS-application),
the Netware providing fileserver and printing support.
I will concentrate on getting the connection via DOSEMU only.
My everyday network is a Netware network with 3 servers and appr. 110
PC's connected to it. It is TOTALLY Dos/Windows environment, running
Novell standard Ethernet_802.3 frames, very ordinary REAL LIFE setup.
Tested Environment :
o LinuxBox 486DX2/66, 17Meg Ram + 20 Meg Swap, two ESDI disks 340Mb
and 320 Mb (Linux InSide), Netcard SMC Elite Ultra.
o Linux 1.2.2, Dosemu pre0.53.55.
o Netware 3.11 on all servers, SMC Elite 32 EISA on main server.
The following may or may not work on Your pile of iron.
2. Netware Requirements.
One of the main questions is What Is the Ethernet Frame Type your
Netware uses.
2.1. Frametype Ethernet_II.
For IP-connectivity Novell has always used Ethernet_II frametype.
Some sites use Ethernet_II for IPX _and_ IP (good for them). This is
also easiest case to connect to Netware, you also get IP-connectivity
between your linuxboxes if/when they are located in separate segments.
For IP-connectivity you need to load TCPIP.NLM in your server and
define FORWARD=YES on loadline. You also need to BIND the IP to your
server networkcards with proper IP-address. In general if you need
any kind of IP-connection to Netware Server (NFS, BOOTPD, FTPD) you
_must_ use Ethernet_II frame.
2.2. Frametype Ethernet_802.3.
Traditionally Novell has used Ethernet_802.3 for IPX protocol. That is
_before_ the Netvare 4.0x and various VLM stuff. In this case you
can't communicate with other linuxboxes if they are located on
separate segments because Netware will not route IP-protocol on 802.3
frames. You can however connect to Netware server as an isolated
workstation.
2.3. Frametype Ethernet_802.2.
New Novell practice is to recommend the Ethernet_802.2 frame for IPX.
The 802.2 is actually the default frametype unless otherwise declared
(in server autoexec.ncf and workstation net.cfg files). This is also
the worst case because the dosemu packetdrivers do not support this
frametype. You can still connect using direct-IPX approach.
I would recommend that you load the Ethernet_II frame in your server
in ANY CASE because that makes the care-and-feeding-and-development
much easier in the longrun.
There has been some worried noises about messing up the IP-traffic on
Ethernet_II if you run IPX on Ethernet_II frames at the same time.
There is no problem in running both protocols on same frame and cable,
it is done all the time on many sites (RTFM - Novell TCP/IP Docs) 8-).
This how I do both frames and protocols on single card and cable .
load SMCE32 port=6810 Name=First Frame=Ethernet_802.3 ; 'novell' frame
load SMCE32 port=6810 Name=Second Frame=Ethernet_II ; 'normal' frame
bind ipx to First Net=E1
bind ipx to Second Net=E2
So I actually run IPX on both frames, Ethernet_802.3 on logical net E1
and Ethernet_II logical net E2. All on one card and cable.
3. Making The Connection.
There are basically two methods for making the connection between the
Linuxbox and Netware server, The Direct-IPX or Packet Drivers. At
the time of writing the Packet Driver method is the most reliable
in particular if you combine it with DPMI programs. Direct-IPX may
just work though (depending on the DOS program in question).
3.1. The Direct-IPX.
Make sure that you have the IPX support compiled in to your kernel.
Within DosEmu, in directory ipxutils, there are some utilities which
are necessary. At the time of this writing the compiling of those
utilities was not automatic, so it may be necessary to go to
directory ipxutils and run 'make'.
Check that in your 'dosemu.conf' file you have 'ipx_support' enabled.
$_ipxsupport = (on)
Now you need to enable the ipxinterface. To do that you execute
following command :
ipx_interface add -p eth0 802.3
Instead of 'eth0' you can give some other Id in case your ethernetcard
is somewhere else.
The last parameter, ie. 802.3, depends on what type of ethernetframe
runs on your network. Possibe values are 802.2, 802.3 and EtherII.
Check with your Netware Administrator if you are not sure. You may
wish to add the above mentioned command into your rc.local file.
Now start the dosemu session and load the Netware shell, NETX. The
NETX is the only TSR necessary to run the connection, no LSL, no
Packetdrivers nor IPXODI.
Pros.
o Connection is reasonably fast, about 2.41666.. times faster then
packetdrivers.
o This is the ONLY way to connect if you are using Ethernet_802.2
frame.
Cons.
o SPX support is still missing, this means that some software will
not run, like Intel LanDesk Inventory, Novell Remote Console,
Netware Access Services, I'm sure there are more 8=(
o The connection drops dead after about 15 min of idletime. I
suspect that it has something to do with 'watchdog packets' from
the server not getting proper answer. Maybe some IPX/SPX guru will
look into this.
o DPMI in combination with direct IPX is broken as of DOSEMU 1.2.0.
3.2. The Packet Driver (IPX).
As a driver you should use PDETHER which is an ipx-to-packet driver
shim, but masquerading as an ODI compliant driver. There also exists
an older driver PDIPX, technology represented by PDIPX is no longer
supported by Novell. A driver named IPXPD is more likely to work
than PDIPX. PDETHER and IPXPD are using Ethernet_II frames, while
PDIPX uses 802.3 frames.
The Packet Driver uses build-in packetdriver interface which means
that the IPX-SUPPORT in Kernel and in DOSEMU is NOT needed. When
configuring the Kernel you can define IPX-SUPPORT (n), this is
actually the default case.
Corresponding parameter for DOSEMU is found in the NETWORKING SUPPORT
section of dosemu.conf/.dosemurc. There you just leave the line
$_ipxsupport = (off) commented out. (see below)
The use of the second configuration parameter $_novell_hack is
explained in detail in later paragraphs.
#************************* NETWORKING SUPPORT *****************************
#
# Turn the following option 'on' if you require IPX/SPX emulation.
# Therefore, there is no need to load IPX.COM within the DOS session.
# The following option does not emulate LSL.COM, IPXODI.COM, etc.
# NOTE: MUST HAVE IPX PROTOCOL ENABLED IN KERNEL !!
# $_ipxsupport = (off)
#
# Enable Novell 8137->raw 802.3 translation hack in new packet
# driver.
$_pktdriver = (on)
# $_novell_hack = (off)
Also set up a working packet driver (eg. TUN/TAP) connection; refer to
README.txt for details. For example (with tunctl) set:
$_netdev="tap0"
$_vnet="tap"
There are various versions of the packetdriver PDETHER floating around, but
it is recommended to use version 1.05 or later. Those versions have
support for a "raw packet send" interface.
PDETHER in its native mode understands only Ethernet_II frames, by
enabling the dosemu.conf parameter pktdriver novell_hack it can be
fooled to use Ethernet_802.3 frames instead.
Because PDETHER is an ODI driver, you load..
LSL (at least version 2.20; older versions may crash dosemu)
PDETHER
IPXODI
NETX
If you use IPXPD or PDIPX you just load
IPXPD (for Ethernet_II frames) or PDIPX (for 802.3 frames)
NETX
Because PDETHER is an ODI driver, there must be corresponding section
in your net.cfg file. Here is a snippet of my NET.CFG
Link Support
Buffers 4 1514
MemPool 2048
Link Driver PDETHER
Int 60
FRAME Ethernet_II
NetWare DOS Requester
FIRST NETWORK DRIVE = F
SHOW DOTS = ON
SET STATION TIME = ON
PREFERRED SERVER = HOME
FILE HANDLES = 40
LOCAL PRINTERS = 1
The packetdrivers support only Ethernet_802.3 and Ethernet_II frames.
If you are unlucky enough to use Ethernet_802.2 frame, your only
change is to use direct-IPX interface (unless you can persuade the
system admin to add Ethernet_II frames to your network 8=)).
Do NOT CHANGE line 'FRAME Ethernet_II' in Link Driver PDETHER section,
instead enable or disable the 'pkdriver novell_hack' in 'dosemu.conf'
$_pktdriver = (on)
$_novell_hack = (on) If you have Ethernet_802.3
# $_novell_hack = (off) If you have Ethernet_II
Read the PDETHER.DOC for further info.
Example from Peter Eckhardt:
Create a startnet.bat and net.cfg in dosemu
CD C:\NWCLIENT
edit ....
- startnet.bat -
SET NWLANGUAGE=DEUTSCH
LH C:\NWCLIENT\LSL /c=C:\NWCLIENT\net.cfg
C:\NWCLIENT\PDETHER.EXE
LH C:\NWCLIENT\IPXODI.COM
rem LH C:\NWCLIENT\NETX
LH C:\NWCLIENT\VLM.EXE
- net.cfg -
Link Support
Buffers 4 1514
MemPool 2048
Link Driver PDETHER
Int 60
FRAME Ethernet_II
USE DEFAULTS=OFF
VLM=CONN.VLM
VLM=IPXNCP.VLM
VLM=TRAN.VLM
VLM=SECURITY.VLM
VLM=NDS.VLM
VLM=NWP.VLM
VLM=FIO.VLM
VLM=BIND.VLM
VLM=PRINT.VLM
VLM=GENERAL.VLM
VLM=REDIR.VLM
VLM=NETX.VLM
NetWare DOS Requester
FIRST NETWORK DRIVE = F
NETWORK PROTOCOL = BIND
SHOW DOTS = ON
SET STATION TIME = ON
PREFERRED SERVER = EMK1
FILE HANDLES = 40
LOCAL PRINTERS = 1
VLM = AUTO.VLM
4. Speed Of Connection
Here is some benchmarking I did with testprogram TESTNET.EXE,
available somewhere in NetWire. It tests the network transfer speed.
I can saturate my ethernet with two stations running at full tilt.
Maximum aggregate speed is appr. 900 kilobytes/sec.
I'm using SMC Elite 32 EISA board in Server and SMC Elite Ultra in
workstation.
NETX
Dos6.2 620
DosEmu (directIPX) 290
DosEmu (pktdrv) 120
The figures denote transferspeed in kilobytes/second.
Few months ago I had a NE2000 clone in my box, with DOS6.2/NETX it
would run to appr. 460 kbs. I could live with that.
Note: Recently improvements were made that speed up the packet
driver throughput more than twice. The above measurements are no longer
valid. It is expected that the Packet Driver now has the same performance
as the directIPX method, or even better, but no precise measurements
were made.
5. NFS and Other Connectivity.
It is possible to access Netware server and services from Linux
directly by using various commercial supportpackages to get Unix
filesystem and/or printing services.
o Netware-NFS.
o Netware Flex-IP.
o Nov*iX from FireFox.
o Charon, shareware SMTP-gateway and printservices.
There also exists a freeware NFS connectivity using SOSS package,
below is a contribution from a fellow netter, Andrew J. Anderson,
andrew@db.erau.edu.
--- message begins ---
I am currently using a package called "soss" (Son of Stan's Server)
that turns a DOS PC into an NFS server. I am using this to export
NetWare volumes to my Linux box so that I can have multi-user access
to several CD-ROM packages. I will continue using this until multiple
logins from DOSEmu becomes a reality. The speed of this setup depends
on the speed of the PC that is running the NFS server package.
Currently, I am using a 286 with 4 Megs of RAM being used as a disk
cache. If I remember correctly, I can get about 50K/s across this
setup. I tested a 486DX-33 with 8 megs and got about 250- 300K/s
transfer. I am hoping to get about 500K/s with a 486DX2-66 with 16
megs of RAM. Not blazingly fast, but good enough.
So if you play with drive mappings under DOSEmu using LREDIR, you
could setup a scheme where each user had a mapping to their home
directory on the Novell side. There is potential for security risk in
doing that because SOSS doesn't have much in the way of security built
in, but I am using part of my NetWare volumes as "overflow" space when
my Linux drives fill up -- as they so often do! :)
--- message ends --- Thanks Andrew..
I have no personal experience with any of the packages mentioned
above, I'm sure that there are a lot of other useful packages
floating around. Please mail me, so I can add them to possible future
incarnations of this note.
6. History.
6.1. Revision 0.1.
Written with great haste and enthusiasm. Contained some mistakes for
which I was promptly flamed 8:). Some reports of success were also
received.
6.2. Revision 0.2.
Known errors corrected and new sections added.
Any additions for this HOWTO are humbly accepted and if relevant to
great cause will be added to later revisions.
7. Begin Legalese.
Unless otherwise stated, Linux HOWTO documents are copyrighted by
their respective authors. Linux HOWTO documents may be reproduced and
distributed in whole or in part, in any medium physical or electronic,
as long as this copyright notice is retained on all copies. Commercial
redistribution is allowed and encouraged; however, the author would
like to be notified of any such distributions.
All translations, derivative works, or aggregate works incorporating
any Linux HOWTO documents must be covered under this copyright notice.
That is, you may not produce a derivative work from a HOWTO and impose
additional restrictions on its distribution. Exceptions to these rules
may be granted under certain conditions; please contact the Linux
HOWTO coordinator at the address given below.
In short, we wish to promote dissemination of this information through
as many channels as possible. However, we do wish to retain copyright
on the HOWTO documents, and would like to be notified of any plans to
redistribute the HOWTOs.
If you have questions, please contact Greg Hankings, the Linux HOWTO
coordinator, at greg.hankings@cc.gatech.edu. You may finger this
address for phone number and additional contact information.
End Legalese.
Happy Netting. Lauri Tischler, ltischler@fipower.pp.fi

63
doc/README.gdb Normal file
View File

@ -0,0 +1,63 @@
From lermen@elserv.ffm.fgan.de Fri Jan 9 02:02:28 1998
Date: Sun, 4 Jan 1998 16:30:24 +0100 (MET)
From: Hans Lermen <lermen@elserv.ffm.fgan.de>
To: Marty Leisner <leisner@sdsp.mc.xerox.com>
Cc: Pat Villani <patv@iop.com>, dosemu developers <dosemu-devel@suse.com>
Subject: Re: Ideas for debugging
On Sat, 3 Jan 1998, Marty Leisner wrote:
>
> In order to run gdb under dosemu:
> attach (compile with the -g option)
> do
> handle SIGSEGV nostop noprint
>
> then you're fine
Yup, that's the trick ;-)
However, to 'compile with -g' one has to do:
make pristine
./default-configure --enable-debug
make
> (but its very difficult to debug programs under
> dosemu).
its nearly impossible, for that we have 'dosdebug', the bultin debugger.
>
> Several years we discussed this...has any work been done essentially
> having dosemu act as a gdbserver, which can talk to gdb...??
hmm, can gdb handle 16 bit code or even segmented code?
Hans
<lermen@fgan.de>
Bart:
It can handle 16 bit code but you have to handle the segmentation yourself,
e.g. use
set architecture i8086
x/20i 0x9089*16+0x18e
to dump 9089:019e
Another issue is that whilst single stepping the SIGALRM handler may
disturb. You can avoid that using hooks, as below, and paste everything
into a .gdbinit file.
define hook-stop
handle SIGALRM nopass
end
define hook-run
handle SIGALRM pass
end
define hook-continue
handle SIGALRM pass
end
handle SIGSEGV nostop noprint

6096
doc/README.html Normal file

File diff suppressed because it is too large Load Diff

1023
doc/tweaks.html Normal file

File diff suppressed because it is too large Load Diff

119
dosemu2.spec Normal file
View File

@ -0,0 +1,119 @@
#
# spec file template for dosemu2
#
# Written by Mateusz Viste, stsp
#
Name: dosemu2
Version: 2.0pre9
Release: 2
Summary: fast and secure DOS emulator
Group: System/Emulator
License: GPLv2+
URL: https://github.com/dosemu2/dosemu2
VCS: https://github.com/dosemu2/dosemu2.git
Source0: dosemu2.tar.gz
BuildRequires: SDL2-devel
BuildRequires: SDL2_ttf-devel
BuildRequires: fontconfig-devel
BuildRequires: libXext-devel
BuildRequires: alsa-lib-devel
BuildRequires: fluidsynth-devel
BuildRequires: gpm-devel
BuildRequires: libao-devel
BuildRequires: ladspa-devel
BuildRequires: slang-devel
BuildRequires: libslirp-devel
BuildRequires: libieee1284-devel
BuildRequires: mt32emu-devel
BuildRequires: libbsd-devel
BuildRequires: gcc
BuildRequires: bison
BuildRequires: flex
BuildRequires: gawk
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: make
BuildRequires: sed
BuildRequires: bash
BuildRequires: findutils
BuildRequires: git >= 2.0
BuildRequires: bdftopcf
BuildRequires: mkfontscale
BuildRequires: linuxdoc-tools
BuildRequires: readline-devel
BuildRequires: json-c-devel
BuildRequires: libb64-devel
BuildRequires: binutils
BuildRequires: binutils-x86_64-linux-gnu
BuildRequires: pkgconf-pkg-config
BuildRequires: fdpp-devel
BuildRequires: dj64-devel
# our startup script is bash-specific
Requires: bash
Requires: comcom64
Recommends: fluid-soundfont-gm
Suggests: timidity++ >= 2.14.0
Recommends: ladspa
# ncurses-base is for terminfo
Recommends: ncurses-base
Recommends: gdb
Recommends: kbd
Suggests: valgrind
Recommends: install-freedos
Suggests: install-otherdos
# cannot coexist with dosemu1
Conflicts: dosemu
%description
dosemu2 is an emulator for running DOS programs under linux.
It can also serve as a VM to boot various DOSes.
%prep
%setup -T -b 0 -q -n dosemu2
%build
./autogen.sh
%configure
make %{?_smp_mflags}
%check
%install
mkdir -p %{buildroot}%{_sysconfdir}/X11/fontpath.d
make DESTDIR=%{buildroot} install
%files
%defattr(-,root,root)
%{_bindir}/*
%{_mandir}/man1/*
%lang(ru) %dir %{_mandir}/ru
%lang(ru) %dir %{_mandir}/ru/man1
%lang(ru) %{_mandir}/ru/man1/*
# Not using libdir here as we only install plugins, and their path hard-coded
%{_prefix}/lib/dosemu
%{_datadir}/dosemu
%{_datadir}/applications/dosemu.desktop
%{_datadir}/fonts/oldschool
%{_sysconfdir}/X11/fontpath.d/dosemu2*
%doc %{_docdir}/dosemu2
%dir %{_sysconfdir}/dosemu
%config(noreplace) %{_sysconfdir}/dosemu/dosemu.conf
%changelog
* Tue Apr 09 2024 Stas Sergeev <stsp@users.sourceforge.net> 2.0pre9-2
-
* Tue Apr 09 2024 Stas Sergeev <stsp@users.sourceforge.net>
-
* Tue Apr 09 2024 Stas Sergeev <stsp@users.sourceforge.net> 2.0pre9-1
- new package built with tito
* Sat Aug 20 2016 Stas Sergeev <stsp@users.sourceforge.net> 2.0pre6-dev
(none)

109
dosemu2.spec.rpkg Normal file
View File

@ -0,0 +1,109 @@
#
# spec file template for dosemu2
#
# Written by Mateusz Viste, stsp
#
Name: {{{ git_dir_name }}}
Version: {{{ git_dir_version }}}
Release: 1%{?dist}
Summary: fast and secure DOS emulator
Group: System/Emulator
License: GPLv2+
URL: https://github.com/dosemu2/dosemu2
VCS: {{{ git_dir_vcs }}}
Source0: {{{ git_dir_archive }}}
BuildRequires: SDL2-devel
BuildRequires: SDL2_ttf-devel
BuildRequires: fontconfig-devel
BuildRequires: libXext-devel
BuildRequires: alsa-lib-devel
BuildRequires: fluidsynth-devel
BuildRequires: gpm-devel
BuildRequires: libao-devel
BuildRequires: ladspa-devel
BuildRequires: slang-devel
BuildRequires: libslirp-devel
BuildRequires: libieee1284-devel
BuildRequires: mt32emu-devel
BuildRequires: libbsd-devel
BuildRequires: gcc
BuildRequires: bison
BuildRequires: flex
BuildRequires: gawk
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: make
BuildRequires: sed
BuildRequires: bash
BuildRequires: findutils
BuildRequires: git >= 2.0
BuildRequires: bdftopcf
BuildRequires: mkfontscale
BuildRequires: linuxdoc-tools
BuildRequires: readline-devel
BuildRequires: json-c-devel
BuildRequires: libb64-devel
BuildRequires: binutils
BuildRequires: binutils-x86_64-linux-gnu
BuildRequires: pkgconf-pkg-config
BuildRequires: fdpp-devel
BuildRequires: dj64-devel
# our startup script is bash-specific
Requires: bash
Requires: comcom64
Recommends: fluid-soundfont-gm
Suggests: timidity++ >= 2.14.0
Recommends: ladspa
# ncurses-base is for terminfo
Recommends: ncurses-base
Recommends: gdb
Recommends: kbd
Suggests: valgrind
Recommends: install-freedos
Suggests: install-otherdos
# cannot coexist with dosemu1
Conflicts: dosemu
%description
dosemu2 is an emulator for running DOS programs under linux.
It can also serve as a VM to boot various DOSes.
%prep
{{{ git_dir_setup_macro }}}
%build
./autogen.sh
%configure
make %{?_smp_mflags}
%check
%install
mkdir -p %{buildroot}%{_sysconfdir}/X11/fontpath.d
make DESTDIR=%{buildroot} install
%files
%defattr(-,root,root)
%{_bindir}/*
%{_mandir}/man1/*
%lang(ru) %dir %{_mandir}/ru
%lang(ru) %dir %{_mandir}/ru/man1
%lang(ru) %{_mandir}/ru/man1/*
# Not using libdir here as we only install plugins, and their path hard-coded
%{_prefix}/lib/dosemu
%{_datadir}/dosemu
%{_datadir}/applications/dosemu.desktop
%{_datadir}/fonts/oldschool
%{_sysconfdir}/X11/fontpath.d/dosemu2*
%doc %{_docdir}/dosemu2
%dir %{_sysconfdir}/dosemu
%config(noreplace) %{_sysconfdir}/dosemu/dosemu.conf
%changelog
{{{ git_dir_changelog since_tag=dosemu2-2.0pre6-dev }}}

BIN
etc/cpi/ega.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega10.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega11.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega12.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega13.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega14.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega15.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega16.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega17.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega18.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega2.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega3.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega4.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega5.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega6.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega7.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega8.cpi Normal file

Binary file not shown.

BIN
etc/cpi/ega9.cpi Normal file

Binary file not shown.

1068
etc/dosemu.conf Normal file

File diff suppressed because it is too large Load Diff

10
etc/dosemu.desktop.in Normal file
View File

@ -0,0 +1,10 @@
[Desktop Entry]
Name=DOS emulator
Name[lt]=DOS emuliatorius
Comment=DOS emulator "dosemu2"
Comment[lt]=DOS emuliatorius "dosemu2"
Exec=@e_bindir@/dosemu
Icon=@e_datadir@/dosemu/icons/dosemu.xpm
Terminal=false
Type=Application
Categories=System;Emulator;

73
etc/dosemu.xpm Normal file
View File

@ -0,0 +1,73 @@
/* XPM */
static char * dosemu_xpm[] = {
"64 48 22 1",
" c none s mask",
". c #000000000000",
"X c #B2CA6595C30B",
"o c #C71BC71BF7DE",
"O c #0820F7DE0820",
"+ c #D34C75D64924",
"@ c #9A69DF7D9248",
"# c #F7DEF7DEF7DE",
"$ c #6185BAEA2492",
"% c #555555555555",
"& c #4D344D34F3CE",
"* c #4514AAAAE38D",
"= c #08200820F7DE",
"- c #FFFF65956595",
"; c #FFFFBAEA30C2",
": c #FFFFFFFF0000",
"> c #FFFF00000000",
", c #8617FFFF8E38",
"< c #49249A69FFFF",
"1 c #FFFFFFFFFFFF",
"2 c #0000FFFF0000",
"3 c #FFFF0000FFFF",
" ",
" .................................................... ",
" .XXoooooooooooooooooooooooooooooO+O+OOoX@oooooooooo. ",
" .+o####o#####o#o###o@#o#o#o##o##O$OOOOoo@o#o#@#####. ",
" .%&&&&&&&&&&&&&&&oo&&&*o=&&&&&&*#############o#oooo. ",
" .%&&*&*@@XXX===================&o$OOOOOOOOOOO@o%ooo. ",
" .X&&=&&&=&&&&&&&===============&oo###########oo%ooo. ",
" .X&============================&oo###########oo%ooo. ",
" .%&============================&o############o@%ooo. ",
" .X&&&&&&X@@X===================&o##o@o#######oo%ooo. ",
" .X&============================&ooo@#@#o#####oo%ooo. ",
" .%&&&=X@X@&&&=X@@==============&oooo#########o@%ooo. ",
" .%&============================&o############o@%ooo. ",
" .X&===&&=======================&oo###########oo%ooo. ",
" .%&============================&o############oo%ooo. ",
" .%&==&&&&&&&&==================&o############oo%ooo. ",
" .X&==&@&@X@XX@o&X==============&oo@@#########oo%ooo. ",
" .X&==&@=@&@X&==================&ooo@#ooooXooooo%ooo. ",
" .%&==&&=&&&X=&@@X=&=&&==.======&o##o#########oo%ooo. ",
" .X&===..........====&=..-.=====&o############oo%ooo. ",
" .X&...;;;;;;;.;.=====.---.=====&o@@@@@@oooooooX%ooo. ",
" ...;;;;;;;;..;;.&&&..-----.@&&&==......%%%%%%%%%ooo. ",
" .......;....;;;;.&&..------.&&&==...====*%oooooooooo. ",
" ..:::::::.::.;;;;;.=.>>.------.===.,,..===&%oooooooooo. ",
" .:::::..:::::.;;;;.==.>>.------.==.,,,,,..=&%oooooooooo. ",
" .::::..;;..:::.;;..=...>>.-------.=.,,,,,,,.*%oooooooooo. ",
" .::::.;;;;.=..:.;.=&.<<..>>.------..,,,,,,,,.*%oooooooooo. ",
" .:::.;;;;;.==.:..=..<<.<.>>.------.,,,,,,,,,.=%oooooooooo. ",
" .::::.;;;;;.%.%.%%.....<<.>>..----....,,,,,,,.%%oooooooooo. ",
" .:::.;;;;;;.oooooo.111.<.o.>>.---.222..,,,,,,.oooooooooooo. ",
" .::::.;;;;;;.oooooo.111..oo.>>.----.2222..,,,,.oooooooooooo. ",
" .::::.;;;;;;.##o###.111.#o#.>>.-----..2222..,.########o##o#. ",
" .::::.;;;;;;;................>>.----....2222................ ",
" .::::.;;;;;;;;.... .33.. .>>.----. .,..222. ",
" .::::.;;;;;;;;;;;. ..33.3. .>>..--. .,,..222. ",
" .::::.;;;;;;;;... .333.33. .>>.--. .,.2222. ",
" .::::.;;;;;..::......333. .>>.-. ...222.. ",
" .:::::.....:::. .111.33. .>>.-..2222.. ",
" .:::::::::::. .111.3. .>>. .22.. ",
" ..:::::::.. .111.. .>>. .. ",
" ....... ..... .. ",
" ",
" ",
" ",
" ",
" ",
" ",
" "};

11
etc/dosemu2.alias Normal file
View File

@ -0,0 +1,11 @@
vga -dosemu-vga-medium-r-normal--17-160-75-75-p-80-ibm-cp437
vga8x19 -dosemu-vga-medium-r-normal--19-190-75-75-c-80-ibm-cp437
vga11x19 -dosemu-vga-medium-r-normal--19-190-75-75-c-100-ibm-cp437
vga10x24 -dosemu-vga-medium-r-normal--24-240-75-75-c-100-ibm-cp437
vga12x30 -dosemu-vga-medium-r-normal--30-300-75-75-c-120-ibm-cp437
vgacyr -dosemu-vga-medium-r-normal--17-160-75-75-c-80-ibm-cp866
vga10x20 -dosemu-vga-medium-r-normal--20-200-75-75-c-100-ibm-cp866
vga-ua -dosemu-vga-medium-r-normal--17-160-75-75-c-80-ibm-cp1125
vga10x20-ua -dosemu-vga-medium-r-normal--20-200-75-75-c-100-ibm-cp1125
vga8x14-cp850 -xos4-Terminus-Bold-R-Normal--14-140-72-72-C-80-IBM-CP850
vga10x20-cp850 -xos4-Terminus-Bold-R-Normal--20-200-72-72-C-100-IBM-CP850

597
etc/global.conf Normal file
View File

@ -0,0 +1,597 @@
##############################################################################
# WARNING: THIS FILE IS NOT USED BY DEFAULT. ADJUST dosemu.users OR USE -F.
#
# This file is global.conf. By default a compiled-in copy is used. If you
# make custom changes to the settings in this file, then you need to use
# the -F switch or change dosemu.users; the custom file is then parsed
# after the built-in copy.
#
# Linux dosemu configuration for parser versions >= 3 (dosemu-0.97.0.1)
#
# ./doc/README-tech.txt (chapter 2.) contains a description of the syntax
# and the usage. However, you normally won't edit this file !!
#
# NOTES:
#
# 1. The file dosemu.conf (and optionally ~/.dosemurc) contains variable
# settings, that are included by global.conf for doing the
# most reasonable configuration.
# The file dosemu.conf (and optionally ~/.dosemurc) is what gets
# updated by the menu driven 'setup-dosemu' tool.
#
# 2. We strongly recommend you to edit ONLY dosemu.conf.
# If you change global.conf, you are at your own and could break
# 'setup-dosemu'. You really need to know a lot of DOSEMU
# internals before you fiddle with editing global.conf.
# However, some very special cases can only be handled in global.conf.
#
# 3. The file global.conf (this one) is either
# - the one compiled into dosemu.bin.
# - specified by the config_script option in dosemu.users ("builtin"
# by default)
# - or given via the -F option (from root login, else only on
# non-suid-root DOSEMU)
#
# 4. The only compiled-in path is /etc/dosemu.users (or if not found
# /etc/dosemu/dosemu.users), however, this can be overridden by
# --Fusers, if not running suid-root. All other paths are configurable
# and the dosemu binaries can reside everywhere in the system.
#
# This file (global.conf) may also serve as an example file for
# .dosrc ( old style user configuration file )
# option -I ( configuration via commandline, see man/dos.1 )
#
# Access rights for suid-root running DOSEMU sessions are defined in
#
# /etc/dosemu.users or /etc/dosemu/dosemu.users
#
##############################################################################
ifdef u_forceold
undef parser_version_3
define version_3_style_used
endif
ifndef parser_version_3
# normally won't come here, because older DOSEMUs don't use this file
# ... but if using -F option ...
include "/etc/dosemu.conf"
else
# we are on version 3 parser
## we set some vital variable
if (!strlen($DOSEMU_LIB_DIR))
abort "DOSEMU_LIB_DIR not set";
endif
if (!strlen($DOSEMU_IMAGE_DIR))
$DOSEMU_IMAGE_DIR = $DOSEMU_LIB_DIR;
endif
# make sure we have absolute paths
shell("test -d ", $DOSEMU_IMAGE_DIR)
if ($DOSEMU_SHELL_RETURN)
abort "DOSEMU_IMAGE_DIR does not exist ", $DOSEMU_IMAGE_DIR;
endif
$DOSEMU_IMAGE_DIR = shell("cd ", $DOSEMU_IMAGE_DIR, "; pwd -P");
$DOSEMU_IMAGE_DIR = strdel($DOSEMU_IMAGE_DIR, strlen($DOSEMU_IMAGE_DIR)-1, 1);
shell("test -d ", $DOSEMU_LIB_DIR)
if (!$DOSEMU_SHELL_RETURN)
$DOSEMU_LIB_DIR = shell("cd ", $DOSEMU_LIB_DIR, "; pwd -P");
$DOSEMU_LIB_DIR = strdel($DOSEMU_LIB_DIR, strlen($DOSEMU_LIB_DIR)-1, 1);
endif
$CONFIG_VERSION = ( (1 << 24) | (1 << 16) | (4 << 8) | 0)
# ^ ^ ^ ^
if ( $DOSEMU_VERSION_CODE < $CONFIG_VERSION )
abort "
*** sorry, your ", $DOSEMU_LIB_DIR, "/global.conf doesn't match this dosemu version
"
endif
$LIST_DELIM = " , " #delimiters for lists <tab>, blank, comma
# for non-suid-root we can switch off restricted checking.
if (strlen($DOSEMU_LAX_CHECKING))
undef restricted
undef guest
endif
if (strlen($_mapping)) $xxx = $_mapping else $xxx = "auto" endif
mappingdriver $xxx;
if (strlen($_debug))
debug $_debug ;
else
debug { off }
endif
if (strlen($_trace_ports)) trace ports { $$_trace_ports } endif
if (strlen($_trace_mmio)) trace_mmio { $$_trace_mmio } endif
cpuspeed $_cpuspeed
timer 0
mathco $_mathco
$xxx = "cpu ", $_cpu;
$$xxx
cpuemu $$_cpuemu
$xxx = "cpu_vm ", $_cpu_vm;
$$xxx
$xxx = "cpu_vm_dpmi ", $_cpu_vm_dpmi;
$$xxx
if ($_ems)
ems {
ems_size $_ems
ems_frame $_ems_frame
ems_uma_pages $_ems_uma_pages
ems_conv_pages $_ems_conv_pages
}
else
ems off
endif
umb_a0 $_umb_a0
umb_b0 $_umb_b0
umb_b8 $_umb_b8
umb_f0 $_umb_f0
hma $_hma
dos_up $_dos_up
dpmi $_dpmi
dpmi_base $_dpmi_base
pm_dos_api 1
ignore_djgpp_null_derefs $_ignore_djgpp_null_derefs
dosmem $_dosmem
ext_mem $_ext_mem
xms $_xms
if ($_emusys ne "") emusys $_emusys endif
## terminal stuff, we check a lot to insure proper operation
terminal { color $_term_color escchar $_escchar size $_fixed_term_size }
xterm_title $_xterm_title
video { vga }
if ($_external_char_set ne "")
charset { external $$_external_char_set }
endif
if ($_internal_char_set ne "")
charset { internal $$_internal_char_set }
endif
## X param settings
$xxx = ""
if ($_X_sharecmap) $xxx = $xxx, " sharecmap" endif
if ($_X_aspect_43) $xxx = $xxx, " aspect_43" endif
if ($_X_lin_filt) $xxx = $xxx, " lin_filt" endif
if ($_X_bilin_filt) $xxx = $xxx, " bilin_filt" endif
$xxx = $xxx, " mode13fact ", $_X_mode13fact
$xxx = $xxx, " gamma ", (int($_X_gamma * 100))
$xxx = $xxx, " font '", $_X_font, "'"
if (strlen($_X_winsize))
$yyy = (strstr($_X_winsize,","))
$yyy = " winsize (", strdel($_X_winsize,$yyy,999), ") , (",
strsplit($_X_winsize,$yyy+1,999), ")"
$xxx = $xxx, $yyy
endif
if (strlen($_X_vesamode))
foreach $yyy (" ", $_X_vesamode)
$zzz = (strchr($yyy,","))
$xxx = $xxx, " vesamode (", strdel($yyy,$zzz,999), "),(",
strsplit($yyy,$zzz+1,999), ") "
done
endif
$xxx = $xxx, ' mgrab_key "', $_X_mgrab_key, '"'
X {
title $_X_title title_show_appname $_X_title_show_appname
icon_name $_X_icon_name
blinkrate $_X_blinkrate
fixed_aspect $_X_fixed_aspect vgaemu_memsize $_X_vgaemu_memsize
lfb $_X_lfb pm_interface $_X_pm_interface mitshm $_X_mitshm
background_pause $_X_background_pause fullscreen $_X_fullscreen
noclose $_X_noclose
noresize $_X_noresize
$$xxx
}
## SDL settings
SDL { sdl_hwrend $_SDL_hwrend sdl_fonts $_SDL_fonts sdl_wcontrols $_SDL_wcontrols sdl_clip_native $_SDL_clip_native }
# video settings
vga_fonts $$_force_vga_fonts
if ($DOSEMU_STDIN_IS_CONSOLE eq "1")
warn "dosemu running on console"
$xxx = $_video
if ($_console) $xxx = $xxx, " console"
if ($_console == auto) $xxx = $xxx, " auto" endif
endif
if ($_graphics) $xxx = $xxx, " graphics"
if ($_graphics == auto) $xxx = $xxx, " auto" endif
endif
$xxx = $xxx, " vbios_seg ", $_vbios_seg, " vbios_size ",
$_vbios_size, " memsize ", $_vmemsize
if (strlen($_chipset)) $yyy = $_chipset else $yyy = "plainvga" endif
$xxx = $xxx, " chipset ", $yyy
if ($_vbios_post) $xxx = $xxx, " vbios_post " endif
if ($_dualmon) $xxx = $xxx, " dualmon" endif
if (strlen($_vbios_file)) $xxx = $xxx, " vgaemubios_file ", $_vbios_file endif
video { $$xxx }
else
warn "dosemu not running on console"
$xxx = $_video
if (strlen($_vbios_file)) $xxx = $xxx, " vgaemubios_file ", $_vbios_file endif
if ($_dualmon) $xxx = $xxx, " dualmon " endif
if (strlen($xxx)) video { $$xxx } endif
endif
## sound settings
sound $_sound
sound_emu { sb_base $_sb_base
sb_irq $_sb_irq
sb_dma $_sb_dma
sb_hdma $_sb_hdma
mpu_base $_mpu_base
mpu_base_mt32 $_mpu_base_mt32
midi_synth $_midi_synth
mpu_irq $_mpu_irq
mpu_irq_mt32 $_mpu_irq_mt32
sound_driver $_sound_driver
midi_driver $_midi_driver
fluid_sfont $_fluid_sfont
fluid_volume $_fluid_volume
munt_roms $_munt_roms
opl2lpt_dev $_opl2lpt_dev
opl2lpt_type $_opl2lpt_type
snd_plugin_params $_snd_plugin_params
pcm_hpf $_pcm_hpf
midi_file $_midi_file
wav_file $_wav_file
}
## joystick settings
joystick_emu { joy_device $_joy_device joy_dos_min $_joy_dos_min
joy_dos_max $_joy_dos_max joy_granularity $_joy_granularity
joy_latency $_joy_latency }
## hacks
cli_timeout $_cli_timeout
timemode $_timemode
timer_tweaks $_timer_tweaks
file_lock_limit $$_file_lock_limit
lfn_support $_lfn_support
force_int_revect $_force_int_revect
set_int_hooks $_set_int_hooks
trace_irets $_trace_irets
force_fs_redirect $_force_fs_redirect
## serial
$xxx = "'", $_ttylocks, "'"
ttylocks { directory $$xxx namestub LCK.. }
if (1) # no idea why but we need this...
foreach $xxx (" ", "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16")
$zzz = "$_com", $xxx
$zzz = $$zzz
if (strlen($zzz))
$jjj = ""
if (strchr($zzz, " ") > 0)
$yyy = strsplit($zzz, strchr($zzz, " ") + 1, 999)
$zzz = strdel($zzz, strchr($zzz, " "), 999)
else
$yyy = ""
endif
if (strchr($zzz, "/") == 0)
if (strchr($yyy, " ") > 0)
$jjj = strsplit($yyy, strchr($yyy, " ") + 1, 999)
$yyy = strdel($yyy, strchr($yyy, " "), 999)
endif
if (strlen($jjj) > 0)
serial { com $xxx device $zzz $$yyy $jjj }
else
serial { com $xxx device $zzz $$yyy }
endif
else
if (strlen($yyy) > 0)
serial { com $xxx $$zzz $yyy }
else
serial { com $xxx $$zzz }
endif
endif
endif
done
endif
## mouse settings
if ($_mouse_internal)
$xxx = ""
if ($_mouse_baud)
$xxx = "baudrate ", $_mouse_baud
endif
$xxx = $xxx, " device '", $_mouse_dev, "'"
mouse { $$_mouse $$_mouse_flags $$xxx internaldriver mouse_ungrab_tweak $_mouse_ungrab_tweak }
else
$xxx = "'", $_mouse_dev, "'"
mouse { $$_mouse device $$xxx }
endif
hogthreshold $_hogthreshold
## keyboard setting
if ($DOSEMU_STDIN_IS_CONSOLE ne "1") $_rawkeyboard = (off) endif
if ( strstr($_layout, "load") <0 )
# we use the builtin keytables
if (strlen($_layout)) $yyy = $_layout else $yyy = "us" endif
keyboard { layout $yyy rawkeyboard $_rawkeyboard }
else
# we have to load a keytable
$yyy = ""
if (1) # no idea why (see com as well) but we need this...
foreach $zzz ($LIST_DELIM, $_layout)
if ($zzz ne "load")
$yyy = $zzz
endif
done
endif
if (!strlen($yyy))
abort "no keytable name in $_layout"
endif
shell("test -f ", $DOSEMU_LIB_DIR, "/keymap/", $yyy)
if ( $DOSEMU_SHELL_RETURN)
abort "keytable ",$yyy, " not found in ", $DOSEMU_LIB_DIR, "/keymap/*"
endif
$_layout = 'include "keymap/', $yyy, '"' ;
$$_layout
keyboard { rawkeyboard $_rawkeyboard }
endif
bootdrive $_bootdrive
swap_bootdrive $_swap_bootdrive
if (strlen($_floppy_a))
$fpath = strsplit($_floppy_a, 0, strstr($_floppy_a, ":"))
if (strlen($fpath))
$ftype = strsplit($_floppy_a, strstr($_floppy_a, ":")+1, 999)
else
$fpath = $_floppy_a
$ftype = ""
endif
$zzz = $fpath
if (strlen($zzz))
if (strchr($zzz, "/") != 0)
$izzz = $DOSEMU_IMAGE_DIR, "/", $zzz
$xxx = shell("test -r ", $izzz);
if (!$DOSEMU_SHELL_RETURN)
$zzz = $izzz
endif
endif
$xxx = shell("test -r ", $zzz);
if ($DOSEMU_SHELL_RETURN)
warn "**** Warning: floppy ", $zzz, " not accessible, disabled";
else
shell("test -d '", $zzz, "'")
if ($DOSEMU_SHELL_RETURN)
floppy { device $$zzz $$ftype }
else
floppy { directory $$zzz $$ftype }
endif
endif
endif
endif
if (strlen($_floppy_b))
$fpath = strsplit($_floppy_b, 0, strstr($_floppy_b, ":"))
if (strlen($fpath))
$ftype = strsplit($_floppy_b, strstr($_floppy_b, ":")+1, 999)
else
$fpath = $_floppy_b
$ftype = ""
endif
$zzz = $fpath
if (strlen($zzz))
if (strchr($zzz, "/") != 0)
$izzz = $DOSEMU_IMAGE_DIR, "/", $zzz
$xxx = shell("test -r ", $izzz);
if (!$DOSEMU_SHELL_RETURN)
$zzz = $izzz
endif
endif
$xxx = shell("test -r ", $zzz);
if ($DOSEMU_SHELL_RETURN)
warn "**** Warning: floppy ", $zzz, " not accessible, disabled";
else
shell("test -d '", $zzz, "'")
if ($DOSEMU_SHELL_RETURN)
floppy { device $$zzz $$ftype }
else
floppy { directory $$zzz $$ftype }
endif
endif
endif
endif
fastfloppy 1
## setting up hdimages
$xxx = shell("ls ", $DOSEMU_IMAGE_DIR, "/drives/*.lnk 2>/dev/null")
if (strlen($xxx))
error "Compatibility warning: found deprecated setup of dosemu2 pre-alpha version."
error " If you do not intend to run such old dosemu2 versions "
error " (dosemu1 is fine), please do:"
error " rm ~/.dosemu/drives/*.lnk"
error " You may also do"
error " rm -rf ~/.dosemu/drives"
error " if you dont intend to run dosemu1."
endif
if (strlen($_hdimage))
foreach $xxxx ($LIST_DELIM, $_hdimage)
$xxx_pref = ""
$xxx_suff = ""
if (strchr($xxxx, "*") != -1)
$xxx_pref = strdel($xxxx, strchr($xxxx, "*"), 999);
$xxx_suff = strsplit($xxxx, strchr($xxxx, "*") + 1, 999);
if (strchr($xxx_pref, "/") == 0)
$xxxx = shell("cd '", $xxx_pref, "' 2>/dev/null && printf *")
else
$xxxx = shell("cd '", $DOSEMU_IMAGE_DIR, "/", $xxx_pref, "' 2>/dev/null && printf *")
endif
if ($DOSEMU_SHELL_RETURN)
abort "**** directory ", $xxx_pref, " not accessible";
endif
endif
if (strchr($xxxx, "+") == 0)
default_drives strtol(strdel($xxxx, 0, 1))
else if (strchr($xxxx, "-") == 0)
skip_drives strtol(strdel($xxxx, 0, 1))
else if (strlen($xxxx))
foreach $xxx ($LIST_DELIM, $xxxx)
$xxx = $xxx_pref, $xxx, $xxx_suff
if (!strncmp($xxx, "/dev/", 4))
$yyy = strdel($xxx, strstr($xxx, ":"), 999);
$zzz = strsplit($xxx, strstr($xxx, ":"), 999);
if (strtol(strdel($xxx,0,8)) > 0)
disk { partition $yyy $$zzz };
else
disk { wholedisk $yyy $$zzz };
endif
else
$yyy = strdel($xxx, strstr($xxx, ":"), 999);
$zzz = strsplit($xxx, strstr($xxx, ":"), 999);
if (strchr($yyy, "/") != 0)
$yyyy = $DOSEMU_IMAGE_DIR, "/", $yyy
$yyy = $yyyy
endif
shell("test -d '", $yyy, "'")
if (!$DOSEMU_SHELL_RETURN)
disk { directory $yyy $$zzz };
else
shell("test -f '", $yyy, "'")
if (!$DOSEMU_SHELL_RETURN)
disk { image $yyy $$zzz };
else
abort "hdimage ", $yyy, " not found"
endif
endif
endif
done
endif endif endif
done
endif
## setting up CDROM devices
if (strlen($_cdrom))
foreach $xxx ($LIST_DELIM, $_cdrom)
cdrom { $xxx }
done
endif
## setting up ASPI devices
ifndef restricted
if (strlen($_aspi))
foreach $xxx ($LIST_DELIM, $_aspi)
$zz = (1);
$yy2 = ""; $yy3 = (-1);
if(strlen($xxx))
foreach $yyy (":", $xxx)
$zzz = "$yy", $zz, " = $yyy";
$zz = ($zz + 1);
$$zzz
done;
endif;
aspi { $yy1 devicetype $yy2 target $yy3 };
done
endif
endif
ipxsupport $_ipxsupport
ipx_network $_ipx_network
novell_hack $_novell_hack
if (1) # no idea why but we need this...
foreach $xxx (" ", "1 2 3 4 5 6 7 8 9")
$zzz = "$_lpt", $xxx
$zzz = $$zzz
if ((strstr($zzz, "direct") != -1) && (strchr($zzz, ' ') != -1))
$zzz = strdel($zzz, 0, strchr($zzz, ' ') + 1)
printer { lpt $xxx file $zzz timeout $_printer_timeout }
else if (strlen($zzz))
$zzz = "'", $zzz, "'"
printer { lpt $xxx command $$zzz timeout $_printer_timeout }
endif
done
endif
if (strlen($_speaker))
$xxx = "speaker ", $_speaker;
$$xxx
else
speaker off
endif
ifdef restricted
## /etc/dosemu.users defined 'restricted' for this login
define c_normal
undef c_all
if ($_vnet eq "vde" || !$_pktdriver)
vdeswitch $_vdeswitch
slirpargs $_slirpargs
vnet $_vnet
pktdriver $_pktdriver
endif
if ($_pci)
pci auto
endif
else
# here are the root requiring options
if (strlen($_irqpassing))
$yyy = "irqpassing { "
if (strlen($_irqpassing))
foreach $xxx (" ", $_irqpassing)
$yyy = $yyy, "use_sigio ", $xxx
done
endif
$yyy = $yyy, " }";
$$yyy
else
irqpassing off
endif
if (strlen($_hardware_ram))
hardware_ram { $$_hardware_ram }
endif
ethdev $_ethdev
tapdev $_tapdev
vdeswitch $_vdeswitch
slirpargs $_slirpargs
netsock $_netsock
vnet $_vnet
pktdriver $_pktdriver
ne2k $_ne2k
if (strlen($_ports)) ports { $$_ports } endif
pci $_pci
endif
if (strlen($_unix_exec))
unix_exec $_unix_exec
endif
if (strlen($_lredir_paths))
lredir_paths $_lredir_paths
endif
if (strlen($_hostfs_drives))
hostfs_drives $_hostfs_drives
endif
## setting up the features list
if ( ( ($DOSEMU_VERSION_CODE >= ((98 << 16) | (3 << 8) | 3))
&& ($DOSEMU_VERSION_CODE < (99 << 16)) )
|| ($DOSEMU_VERSION_CODE > ((99 << 16) | (5 << 8))) )
if (strlen($_features))
foreach $xxx ($LIST_DELIM, $_features)
$yyy = strdel($xxx, strstr($xxx, ":"), 999);
$zzz = strsplit($xxx, strstr($xxx, ":"), 999);
if (strlen($zzz))
$zzz = strsplit($zzz, 1, 999);
else
$zzz = (0);
endif
feature { $yyy = $zzz };
done
endif
endif
endif
#############################################################################

29
etc/keymap/be Normal file
View File

@ -0,0 +1,29 @@
#keytable be
keytable "keyb-user" {
0=
0,27,"&",130,34,39,"(",21,138,"!",128,133,")-",127,9,
"azertyuiop",dcircum,"$",13,0,"qs",
"dfghjklm",151,253,0,230,"wxcv",
"bn,;:=",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"1234567890",248,"_",127,9,
"AZERTYUIOP",ddiares,"*",13,0,"QS",
"DFGHJKLM%",252,0,156,"WXCV",
"BN?./+",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"|@#",0,0,"^",0,0,"{}",dabover,0,0,0,
0,0,0,0,0,0,0,0,0,0,"[]",13,0,0,0,
0,0,0,0,0,0,0,0,dacute,dgrave,0,dgrave,0,0,0,0,
0,0,dcedilla,0,0,dtilde,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

29
etc/keymap/cz-qwerty Normal file
View File

@ -0,0 +1,29 @@
#keytable cz-qwerty
keytable "keyb-user" {
0=
0,27,"+",216,231,159,253,167,236,160,161,130,"=",dacute,127,9,
"qwertyuiop",163,")",13,0,"as",
"dfghjkl",133,245,";",0,ddiares,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"&",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"1234567890%",dcaron,127,9,
"QWERTYUIOP/(",13,0,"AS",
"DFGHJKL",34,"!",248,0,39,"ZXCV",
"BNM?:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"*",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",dcaron,dcircum,dbreve,248,dogonek,dgrave,daboved,dacute,ddacute,ddiares,dcedilla,0,0,
92,"|",169,0,0,0,0,0,162,0,246,158,0,0,165,208,
209,"[]",0,0,136,157,"$",225,0,0,207,">#",134,"@",
"{}",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

29
etc/keymap/cz-qwertz Normal file
View File

@ -0,0 +1,29 @@
#keytable cz-qwertz
keytable "keyb-user" {
0=
0,27,"+",216,231,159,253,167,236,160,161,130,"=",dacute,127,9,
"qwertzuiop",163,")",13,0,"as",
"dfghjkl",133,245,";",0,ddiares,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"&",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"1234567890%",dcaron,127,9,
"QWERTZUIOP/(",13,0,"AS",
"DFGHJKL",34,"!",248,0,39,"YXCV",
"BNM?:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"*",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",dcaron,dcircum,dbreve,248,dogonek,dgrave,daboved,dacute,ddacute,ddiares,dcedilla,0,0,
92,"|",169,0,0,0,0,0,162,0,246,158,0,0,165,208,
209,"[]",0,0,136,157,"$",225,0,0,207,">#",134,"@",
"{}",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/de Normal file
View File

@ -0,0 +1,29 @@
#keytable de
keytable "keyb-user" {
0=
0,27,"1234567890",225,39,127,9,
"qwertzuiop",129,"+",13,0,"as",
"dfghjkl",148,132,"^",0,"#yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,156,"$%&/()=?",96,127,9,
"QWERTZUIOP",154,"*",13,0,"AS",
"DFGHJKL",153,142,248,0,39,"YXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,253,252,0,0,0,"{[]}",92,0,0,0,
"@",0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/de-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable de-latin1
keytable "keyb-user" {
0=
0,27,"1234567890",225,dacute,127,9,
"qwertzuiop",129,"+",13,0,"as",
"dfghjkl",148,132,dcircum,0,"#yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,21,"$%&/()=?",dgrave,127,9,
"QWERTZUIOP",154,"*",13,0,"AS",
"DFGHJKL",153,142,248,0,39,"YXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,253,252,"$",0,0,"{[]}",92,0,0,0,
"@",0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,230,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/dk Normal file
View File

@ -0,0 +1,29 @@
#keytable dk
keytable "keyb-user" {
0=
0,27,"1234567890+",39,127,9,
"qwertyuiop",134,0,13,0,"as",
"dfghjkl",145,155,0,0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",96,127,9,
"QWERTYUIOP",143,"^",13,0,"AS",
"DFGHJKL",146,157,0,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",163,"$",0,0,"{[]}",0,"|",0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/dk-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable dk-latin1
keytable "keyb-user" {
0=
0,27,"1234567890+",180,127,9,
"qwertyuiop",229,168,13,0,"as",
"dfghjkl",230,162,189,0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",96,127,9,
"QWERTYUIOP",197,"^",13,0,"AS",
"DFGHJKL",198,165,167,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",163,"$",0,0,"{[]}",0,"|",0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,92,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/dvorak Normal file
View File

@ -0,0 +1,29 @@
#keytable dvorak
keytable "keyb-user" {
0=
0,27,"1234567890",92,"=",127,9,
39,",.pyfgcrl/]",13,0,"ao",
"euidhtns-",96,0,"[;qjk",
"xbmwvz",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!@#$%^&*()|+",127,9,
34,"<>PYFGCRL?}",13,0,"AO",
"EUIDHTNS_~",0,"{:QJK",
"XBMWVZ",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",0,"$",0,0,"{[]}",92,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/es Normal file
View File

@ -0,0 +1,29 @@
#keytable es
keytable "keyb-user" {
0=
0,27,"1234567890",39,0,127,9,
"qwertyuiop",96,"+",13,0,"as",
"dfghjkl",0,39,96,0,0,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",0,127,9,
"QWERTYUIOP^*",13,0,"AS",
"DFGHJKL",0,0,"~",0,0,"ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"|@#$",0,0,"{[]}",92,"~",0,0,
0,0,0,0,0,0,0,0,0,0,"[]",13,0,0,0,
0,0,0,0,0,0,0,0,"{",92,0,"}",0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"~",0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/es-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable es-latin1
keytable "keyb-user" {
0=
0,27,"1234567890",39,173,127,9,
"qwertyuiop",dgrave,"+",13,0,"as",
"dfghjkl",164,dacute,167,0,135,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,250,"$%&/()=?",168,127,9,
"QWERTYUIOP",dcircum,"*",13,0,"AS",
"DFGHJKL",165,ddiares,166,0,128,"ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"|@#$",0,172,"{[]}",92,"~",0,0,
0,0,0,0,0,0,0,0,0,0,"[]",13,0,0,0,
0,0,0,0,0,0,0,0,"{",92,0,"}",0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"~",0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/finnish Normal file
View File

@ -0,0 +1,29 @@
#keytable finnish
keytable "keyb-user" {
0=
0,27,"1234567890+",39,127,9,
"qwertyuiop}",0,13,0,"as",
"dfghjkl|{",0,0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",96,127,9,
"QWERTYUIOP]^",13,0,"AS",
"DFGHJKL",92,"[",0,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",163,"$",0,0,"{[]}",92,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/finnish-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable finnish-latin1
keytable "keyb-user" {
0=
0,27,"1234567890+",180,127,9,
"qwertyuiop",134,168,13,0,"as",
"dfghjkl",148,132,167,0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",96,127,9,
"QWERTYUIOP",143,"^",13,0,"AS",
"DFGHJKL",153,142,171,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",156,"$",0,0,"{[]}",92,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/fr Normal file
View File

@ -0,0 +1,29 @@
#keytable fr
keytable "keyb-user" {
0=
0,27,"&{",34,39,"(-}_/@)=",127,9,
"azertyuiop^$",13,0,"qs",
"dfghjklm|",96,0,"*wxcv",
"bn,;:!",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"1234567890]+",127,9,
"AZERTYUIOP<>",13,0,"QS",
"DFGHJKLM%~",0,"#WXCV",
"BN?./",92,0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"~#{[|",96,92,"^@]}",0,0,
"@",0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

29
etc/keymap/fr-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable fr-latin1
keytable "keyb-user" {
0=
0,27,"&",130,34,39,"(-",138,"_",135,133,")=",127,9,
"azertyuiop",dcircum,"$",13,0,"qs",
"dfghjklm",151,253,0,"*wxcv",
"bn,;:!",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"1234567890",248,"+",127,9,
"AZERTYUIOP",ddiares,156,13,0,"QS",
"DFGHJKLM%~",0,230,"WXCV",
"BN?./",167,0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"~#{[|",96,92,"^@]}",0,0,
"@",0,0,0,0,0,0,0,0,0,0,164,13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

29
etc/keymap/hr-cp852 Normal file
View File

@ -0,0 +1,29 @@
#keytable hr-cp852
keytable "keyb-user" {
0=
0,27,"1234567890",39,"+",127,9,
"qwertzuiop",231,208,13,0,"as",
"dfghjkl",159,134,0,0,167,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?*",127,9,
"QWERTZUIOP",230,209,13,0,"AS",
"DFGHJKL",172,143,0,0,166,"YXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",183,"^",244,248,242,96,250,239,241,249,247,0,0,
92,"|",0,0,0,0,0,0,0,0,246,158,13,0,0,0,
0,"[]",0,0,146,145,92,225,0,0,207,0,0,0,"@",
"{}",245,0,"|/",0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/hr-latin2 Normal file
View File

@ -0,0 +1,29 @@
#keytable hr-latin2
keytable "keyb-user" {
0=
0,27,"1234567890",39,"+",127,9,
"qwertzuiop",185,240,13,0,"as",
"dfghjkl",232,230,0,0,190,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?*",127,9,
"QWERTZUIOP",169,208,13,0,"AS",
"DFGHJKL",200,198,0,0,174,"YXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",183,"^",162,176,178,96,255,180,189,168,184,0,0,
92,"|",0,0,0,0,0,0,0,0,247,215,13,0,0,0,
0,"[]",0,0,179,163,92,223,0,0,164,0,0,0,"@",
"{}",167,0,"|/",0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/hu Normal file
View File

@ -0,0 +1,29 @@
#keytable hu
keytable "keyb-user" {
0=
0,27,"123456789",148,129,162,127,9,
"qwertzuiop",139,163,13,0,"as",
"dfghjkl",130,160,"0",0,251,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,39,34,"+!%/=()",153,154,39,127,9,
"QWERTZUIOP",138,233,13,0,"AS",
"DFGHJKL",144,181,21,"0",235,"YXCV",
"BNM?:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,146,0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",dcaron,dcircum,dbreve,248,dogonek,dgrave,daboved,dacute,ddacute,ddiares,dcedilla,0,0,
92,"|",0,0,0,0,0,146,0,0,246,158,13,0,0,208,
209,"[]",0,161,136,157,"$",225,0,0,207,">#&@",
"{}",0,";",0,"*",0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/hu-cwi Normal file
View File

@ -0,0 +1,29 @@
#keytable hu-cwi
keytable "keyb-user" {
0=
0,27,"123456789",148,129,162,127,9,
"qwertzuiop",147,163,13,0,"as",
"dfghjkl",130,160,"0",0,150,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,161,0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,39,34,"+!%/=()",153,154,149,127,9,
"QWERTZUIOP",167,151,13,0,"AS",
"DFGHJKL",144,143,21,"0",152,"YXCV",
"BNM?:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,141,0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",dcaron,dcircum,dbreve,248,dogonek,dgrave,daboved,dacute,ddacute,ddiares,dcedilla,0,0,
92,"|",0,0,0,0,0,141,0,0,246,0,13,0,0,0,
0,"[]",0,161,0,0,"$",225,0,0,0,">#&@",
"{}",0,";",0,"*",0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/hu-latin2 Normal file
View File

@ -0,0 +1,29 @@
#keytable hu-latin2
keytable "keyb-user" {
0=
0,27,"123456789",246,252,243,127,9,
"qwertzuiop",245,250,13,0,"as",
"dfghjkl",233,225,"0",0,251,"yxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,237,0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,39,34,"+!%/=()",214,220,211,127,9,
"QWERTZUIOP",213,218,13,0,"AS",
"DFGHJKL",201,193,21,"0",219,"YXCV",
"BNM?:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,205,0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,"~",dcaron,dcircum,dbreve,248,dogonek,dgrave,daboved,dacute,ddacute,ddiares,dcedilla,0,0,
92,"|",0,0,0,0,0,205,0,0,247,215,13,0,0,240,
208,"[]",0,237,179,163,"$",223,0,0,164,">#&@",
"{}",0,";",0,"*",0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/it Normal file
View File

@ -0,0 +1,29 @@
#keytable it
keytable "keyb-user" {
0=
0,27,"1234567890",39,141,127,9,
"qwertyuiop",138,"+",13,0,"as",
"dfghjkl",149,133,92,0,151,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,156,"$%&/()=?^",127,9,
"QWERTYUIOP",130,"*",13,0,"AS",
"DFGHJKL",135,248,"|0",21,"ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",0,"$",0,0,"{[]}{}",0,0,
0,0,0,0,0,0,0,0,0,0,"[]",13,0,0,0,
0,0,0,0,0,0,0,"@#",0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,"|",0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

35
etc/keymap/jp106 Normal file
View File

@ -0,0 +1,35 @@
#keytable jp106
keytable "keyb-user" {
0=
0,27,"1234567890-^",127,9,
"qwertyuiop@[",13,0,"as",
"dfghjkl;:",96,0,"]zxcv",
"bnm,./",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"0",0,0,92,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,92,0,0,0,0,0,0,0,0,0,92,0,0,
0
shift 0=
0,27,"!",34,"#$%&",39,"()~=~",127,9,
"QWERTYUIOP",96,"{",dgrave,0,"AS",
"DFGHJKL+*~0}ZXCV",
"BNM<>?",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"0",0,0,"_",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,"_",0,0,0,0,0,0,0,0,0,"|",0,0,
0
alt 0=
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230."
}

29
etc/keymap/keyb-no Normal file
View File

@ -0,0 +1,29 @@
#keytable keyb-no
keytable "keyb-user" {
0=
0,27,"1234567890+",92,127,9,
"qwertyuiop}~",13,0,"as",
"dfghjkl|{|",0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",96,127,9,
"QWERTYUIOP]^",13,0,"AS",
"DFGHJKL",92,"[",0,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",0,"$",0,0,"{[]}",0,39,0,0,
0,0,0,0,0,0,0,0,0,0,0,"~",13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

29
etc/keymap/no-latin1 Normal file
View File

@ -0,0 +1,29 @@
#keytable no-latin1
keytable "keyb-user" {
0=
0,27,"1234567890+",92,127,9,
"qwertyuiop",134,ddiares,13,0,"as",
"dfghjkl",155,145,"|",0,39,"zxcv",
"bnm,.-",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,"<",0,0,0,0,0,0,0,0,0,
0
shift 0=
0,27,"!",34,"#$%&/()=?",dgrave,127,9,
"QWERTYUIOP",143,dcircum,13,0,"AS",
"DFGHJKL",157,146,245,0,"*ZXCV",
"BNM;:_",0,"*",0," ",0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,"-",0,0,0,"+",0,
0,0,0,0,0,0,">",0,0,0,0,0,0,0,0,0,
0
alt 0=
0,0,0,"@",156,207,0,0,"{[]}",0,dacute,0,0,
0,0,0,0,0,0,0,0,0,0,0,dtilde,13,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0
numpad 0=
"789-456+1230,"
}

Some files were not shown because too many files have changed in this diff Show More