mirror of
https://github.com/retro100/dosbox-wii.git
synced 2024-12-25 01:51:49 +01:00
sync with SVN
This commit is contained in:
parent
d7f0bbb505
commit
b6e39ef9fe
22
AUTHORS
22
AUTHORS
@ -1,11 +1,11 @@
|
||||
The DOSBox Team
|
||||
---------------
|
||||
|
||||
Sjoerd v.d. Berg <harekiet>
|
||||
Peter Veenstra <qbix79>
|
||||
Ulf Wohlers <finsterr>
|
||||
Tommy Frössman <fanskapet>
|
||||
Dean Beeler <canadacow>
|
||||
Sebastian Strohhäcker <c2woody>
|
||||
|
||||
nick_without_<> @ users.sourceforge.net
|
||||
The DOSBox Team
|
||||
---------------
|
||||
|
||||
Sjoerd v.d. Berg <harekiet>
|
||||
Peter Veenstra <qbix79>
|
||||
Ulf Wohlers <finsterr>
|
||||
Tommy Frössman <fanskapet>
|
||||
Dean Beeler <canadacow>
|
||||
Sebastian Strohhäcker <c2woody>
|
||||
|
||||
nick_without_<> @ users.sourceforge.net
|
||||
|
680
COPYING
680
COPYING
@ -1,340 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General
|
||||
Public License instead of this License.
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library General
|
||||
Public License instead of this License.
|
||||
|
208
INSTALL
208
INSTALL
@ -1,104 +1,104 @@
|
||||
Things needed for compilation.
|
||||
|
||||
SDL
|
||||
The Simple DirectMedia Library available at http://www.libsdl.org
|
||||
The dll distributed with the windows version of DOSBox is slightly
|
||||
modified. You can find the changes in the sourcepackage of DOSBox
|
||||
(src/platform/sdl-win32.diff). If you want the patched sourcetree
|
||||
send us an email. (see README)
|
||||
Licensed under LGPL
|
||||
Note that only version 1.2 and its subversions (1.2.8, 1.2.13 etc.)
|
||||
are currently supported.
|
||||
|
||||
Curses (optional)
|
||||
If you want to enable the debugger you need a curses library.
|
||||
ncurses should be installed on just about every unix distro.
|
||||
For win32 get pdcurses at http://pdcurses.sourceforge.net
|
||||
License: Open source
|
||||
|
||||
Libpng (optional)
|
||||
Needed for the screenshots.
|
||||
For win32 get libpng from http://gnuwin32.sourceforge.net/packages.html
|
||||
See http://www.libpng.org/pub/png/ for more details.
|
||||
License: Open Source
|
||||
|
||||
Zlib (optional)
|
||||
Needed by libpng.
|
||||
For win32 get libz (rename to zlib) from http://gnuwin32.sourceforge.net/packages.html
|
||||
See http://www.zlib.net for more details.
|
||||
License: Open Source
|
||||
|
||||
SDL_Net (optional)
|
||||
For modem/ipx support. Get it from http://www.libsdl.org/projects/SDL_net/
|
||||
Licensed under LGPL
|
||||
|
||||
SDL_Sound
|
||||
For compressed audio on diskimages. (optional)
|
||||
This is for cue/bin cdrom images with compressed (mp3/ogg) audio tracks.
|
||||
Get it from http://icculus.org/SDL_sound
|
||||
Licenced under LGPL
|
||||
|
||||
ALSA_Headers
|
||||
(optional)
|
||||
for Alsa support under linux. Part of the linux kernel sources
|
||||
Licensed under LGPL
|
||||
|
||||
If you want compile from the CVS under a unix system, you'll also need
|
||||
automake (>=1.6), autoconf(>=2.50). Should be available at http://www.gnu.org
|
||||
|
||||
For building on unix systems.
|
||||
If you are building from the cvs run ./autogen.sh first before doing the following.
|
||||
|
||||
1. ./configure
|
||||
2. make
|
||||
|
||||
In step 1 you could add the following switches:
|
||||
--enable-debug
|
||||
enables the internal debugger. --enable-debug=heavy enables even more
|
||||
debug options. DOSBox should then be run from a xterm and when the sdl-
|
||||
window is active press alt-pause to enter the debugger.
|
||||
|
||||
--enable-core-inline
|
||||
enables some memory increasing inlines. This greatly increases
|
||||
compiletime for maybe a increase in speed.
|
||||
|
||||
--disable-fpu
|
||||
disables the emulated fpu. Although the fpu emulation code isn't
|
||||
finished and isn't entirely accurate it's advised to leave it on.
|
||||
|
||||
--disable-fpu-x86
|
||||
disables the assembly fpu core. Although relatively new the x86 fpu
|
||||
core has more accuracy then the regular fpu core.
|
||||
|
||||
--disable-dynamic-x86
|
||||
disables the dynamic x86 specific cpu core. Although it might be
|
||||
be a bit unstable, it can greatly improve the speed of dosbox on x86
|
||||
hosts.
|
||||
Please note that this option on x86 will result in a different
|
||||
dynamic/recompiling cpu core being compiled then the default.
|
||||
For more information see the option --disable-dynrec
|
||||
|
||||
--disable-dynrec
|
||||
disables the recompiling cpu core. Currently x86 and x86_64 only.
|
||||
You can activate this core on x86 by disabling the dynamic-x86 core.
|
||||
|
||||
--disable-dynamic-core
|
||||
disables all dynamic cores. (same effect as
|
||||
--disable-dynamic-x86 --disable-dynrec)
|
||||
|
||||
--disable-opengl
|
||||
disables OpenGL-support (output mode that can be selected in the
|
||||
DOSBox configuration file).
|
||||
|
||||
--disable-unaligned-memory
|
||||
disables unaligned memory access.
|
||||
|
||||
Check the src subdir for the binary.
|
||||
|
||||
NOTE: If capslock and numlock appear to be broken. open
|
||||
src/ints/bios_keyboard.cpp and go to line 30 and read there how to fix it.
|
||||
|
||||
|
||||
Build instructions for VC++6
|
||||
Don't use VC++ 6: it creates faulty code in core_normal.cpp
|
||||
Later Visual Studio versions work fine (vs2003/.net, vs2005, vs2008)
|
||||
Things needed for compilation.
|
||||
|
||||
SDL
|
||||
The Simple DirectMedia Library available at http://www.libsdl.org
|
||||
The dll distributed with the windows version of DOSBox is slightly
|
||||
modified. You can find the changes in the sourcepackage of DOSBox
|
||||
(src/platform/sdl-win32.diff). If you want the patched sourcetree
|
||||
send us an email. (see README)
|
||||
Licensed under LGPL
|
||||
Note that only version 1.2 and its subversions (1.2.8, 1.2.13 etc.)
|
||||
are currently supported.
|
||||
|
||||
Curses (optional)
|
||||
If you want to enable the debugger you need a curses library.
|
||||
ncurses should be installed on just about every unix distro.
|
||||
For win32 get pdcurses at http://pdcurses.sourceforge.net
|
||||
License: Open source
|
||||
|
||||
Libpng (optional)
|
||||
Needed for the screenshots.
|
||||
For win32 get libpng from http://gnuwin32.sourceforge.net/packages.html
|
||||
See http://www.libpng.org/pub/png/ for more details.
|
||||
License: Open Source
|
||||
|
||||
Zlib (optional)
|
||||
Needed by libpng.
|
||||
For win32 get libz (rename to zlib) from http://gnuwin32.sourceforge.net/packages.html
|
||||
See http://www.zlib.net for more details.
|
||||
License: Open Source
|
||||
|
||||
SDL_Net (optional)
|
||||
For modem/ipx support. Get it from http://www.libsdl.org/projects/SDL_net/
|
||||
Licensed under LGPL
|
||||
|
||||
SDL_Sound
|
||||
For compressed audio on diskimages. (optional)
|
||||
This is for cue/bin cdrom images with compressed (mp3/ogg) audio tracks.
|
||||
Get it from http://icculus.org/SDL_sound
|
||||
Licenced under LGPL
|
||||
|
||||
ALSA_Headers
|
||||
(optional)
|
||||
for Alsa support under linux. Part of the linux kernel sources
|
||||
Licensed under LGPL
|
||||
|
||||
If you want compile from the CVS under a unix system, you'll also need
|
||||
automake (>=1.6), autoconf(>=2.50). Should be available at http://www.gnu.org
|
||||
|
||||
For building on unix systems.
|
||||
If you are building from the cvs run ./autogen.sh first before doing the following.
|
||||
|
||||
1. ./configure
|
||||
2. make
|
||||
|
||||
In step 1 you could add the following switches:
|
||||
--enable-debug
|
||||
enables the internal debugger. --enable-debug=heavy enables even more
|
||||
debug options. DOSBox should then be run from a xterm and when the sdl-
|
||||
window is active press alt-pause to enter the debugger.
|
||||
|
||||
--enable-core-inline
|
||||
enables some memory increasing inlines. This greatly increases
|
||||
compiletime for maybe a increase in speed.
|
||||
|
||||
--disable-fpu
|
||||
disables the emulated fpu. Although the fpu emulation code isn't
|
||||
finished and isn't entirely accurate it's advised to leave it on.
|
||||
|
||||
--disable-fpu-x86
|
||||
disables the assembly fpu core. Although relatively new the x86 fpu
|
||||
core has more accuracy then the regular fpu core.
|
||||
|
||||
--disable-dynamic-x86
|
||||
disables the dynamic x86 specific cpu core. Although it might be
|
||||
be a bit unstable, it can greatly improve the speed of dosbox on x86
|
||||
hosts.
|
||||
Please note that this option on x86 will result in a different
|
||||
dynamic/recompiling cpu core being compiled then the default.
|
||||
For more information see the option --disable-dynrec
|
||||
|
||||
--disable-dynrec
|
||||
disables the recompiling cpu core. Currently x86 and x86_64 only.
|
||||
You can activate this core on x86 by disabling the dynamic-x86 core.
|
||||
|
||||
--disable-dynamic-core
|
||||
disables all dynamic cores. (same effect as
|
||||
--disable-dynamic-x86 --disable-dynrec)
|
||||
|
||||
--disable-opengl
|
||||
disables OpenGL-support (output mode that can be selected in the
|
||||
DOSBox configuration file).
|
||||
|
||||
--disable-unaligned-memory
|
||||
disables unaligned memory access.
|
||||
|
||||
Check the src subdir for the binary.
|
||||
|
||||
NOTE: If capslock and numlock appear to be broken. open
|
||||
src/ints/bios_keyboard.cpp and go to line 30 and read there how to fix it.
|
||||
|
||||
|
||||
Build instructions for VC++6
|
||||
Don't use VC++ 6: it creates faulty code in core_normal.cpp
|
||||
Later Visual Studio versions work fine (vs2003/.net, vs2005, vs2008)
|
||||
|
56
THANKS
56
THANKS
@ -1,28 +1,28 @@
|
||||
We would like to thank:
|
||||
|
||||
|
||||
Vlad R. of the vdmsound project for excellent sound blaster info.
|
||||
Tatsuyuki Satoh of the Mame Team for making an excellent FM emulator.
|
||||
Jarek Burczynski for the new OPL3 emulator.
|
||||
Ken Silverman for his work on an OPL2 emulator.
|
||||
|
||||
The Bochs and DOSemu projects which I used for information.
|
||||
Freedos for ideas in making my shell.
|
||||
|
||||
Pierre-Yves Gérardy for hosting the old Beta Board.
|
||||
Colin Snover for hosting our forum.
|
||||
|
||||
Sourceforge for hosting our homepage and other development tools.
|
||||
Mirek Luza, for his moderation of the forums.
|
||||
eL_Pusher, DosFreak and MiniMax for their moderation of VOGONS forum.
|
||||
|
||||
crazyc, gulikoza, M-HT for their work on the dynrec core.
|
||||
|
||||
Jantien for the version management.
|
||||
Shawn, Johannes and Marcus for creating the MAC OS X version.
|
||||
Jochen for creating the OS/2 version.
|
||||
Ido Beeri for the icon.
|
||||
GOG Team for the splash screen.
|
||||
All the people who submitted a bug.
|
||||
The Beta Testers.
|
||||
|
||||
We would like to thank:
|
||||
|
||||
|
||||
Vlad R. of the vdmsound project for excellent sound blaster info.
|
||||
Tatsuyuki Satoh of the Mame Team for making an excellent FM emulator.
|
||||
Jarek Burczynski for the new OPL3 emulator.
|
||||
Ken Silverman for his work on an OPL2 emulator.
|
||||
|
||||
The Bochs and DOSemu projects which I used for information.
|
||||
Freedos for ideas in making my shell.
|
||||
|
||||
Pierre-Yves Gérardy for hosting the old Beta Board.
|
||||
Colin Snover for hosting our forum.
|
||||
|
||||
Sourceforge for hosting our homepage and other development tools.
|
||||
Mirek Luza, for his moderation of the forums.
|
||||
eL_Pusher, DosFreak and MiniMax for their moderation of VOGONS forum.
|
||||
|
||||
crazyc, gulikoza, M-HT for their work on the dynrec core.
|
||||
|
||||
Jantien for the version management.
|
||||
Shawn, Johannes and Marcus for creating the MAC OS X version.
|
||||
Jochen for creating the OS/2 version.
|
||||
Ido Beeri for the icon.
|
||||
GOG Team for the splash screen.
|
||||
All the people who submitted a bug.
|
||||
The Beta Testers.
|
||||
|
||||
|
@ -305,7 +305,7 @@ AC_SUBST(ALSA_LIBS)
|
||||
|
||||
AH_TOP([
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
28
autogen.sh
28
autogen.sh
@ -1,14 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "Generating build information using aclocal, autoheader, automake and autoconf"
|
||||
echo "This may take a while ..."
|
||||
|
||||
# Regenerate configuration files.
|
||||
|
||||
aclocal
|
||||
autoheader
|
||||
automake --include-deps --add-missing --copy
|
||||
autoconf
|
||||
|
||||
echo "Now you are ready to run ./configure."
|
||||
echo "You can also run ./configure --help for extra features to enable/disable."
|
||||
#!/bin/sh
|
||||
|
||||
echo "Generating build information using aclocal, autoheader, automake and autoconf"
|
||||
echo "This may take a while ..."
|
||||
|
||||
# Regenerate configuration files.
|
||||
|
||||
aclocal
|
||||
autoheader
|
||||
automake --include-deps --add-missing --copy
|
||||
autoconf
|
||||
|
||||
echo "Now you are ready to run ./configure."
|
||||
echo "You can also run ./configure --help for extra features to enable/disable."
|
||||
|
1056
configure.in
1056
configure.in
File diff suppressed because it is too large
Load Diff
100
docs/PORTING
100
docs/PORTING
@ -1,50 +1,50 @@
|
||||
Some notes about porting DOSBox to systems with certain restrictions,
|
||||
like handheld devices.
|
||||
|
||||
General:
|
||||
- depending on where you start off with the port, assure that the
|
||||
config.h entries are correct/exhausting, like GCC_ATTRIBUTE is
|
||||
required (struct packing) but is undefined if you base the port
|
||||
on msvc sources which have a special config.h
|
||||
|
||||
If memory is a constraint:
|
||||
- in paging.h out-comment the USE_FULL_TLB define to enable special
|
||||
TLB linking code that uses less memory
|
||||
drawback: none (the code is not heavily tested though)
|
||||
gain: reduces memory requirements about ~15mb
|
||||
- in render.h lower the scaler integration:
|
||||
#define RENDER_USE_ADVANCED_SCALERS 1
|
||||
or
|
||||
#define RENDER_USE_ADVANCED_SCALERS 0
|
||||
drawback: complex scalers and the scaler cache are disabled,
|
||||
be sure to test if this affects speed!
|
||||
with define RENDER_USE_ADVANCED_SCALERS==0 most simple
|
||||
scalers are disabled as well, some graphics modes won't
|
||||
work due to reduced cache sizes
|
||||
gain: ~2mb with RENDER_USE_ADVANCED_SCALERS==1
|
||||
~5mb with RENDER_USE_ADVANCED_SCALERS==0
|
||||
- in dos_system.h reduce the drive cache entries:
|
||||
#define MAX_OPENDIRS 256
|
||||
drawback: some apps might not work with large directory trees
|
||||
gain: ~1mb per mounted drive
|
||||
- remove the GUS emulation (gus.cpp, especially GUSRam[1024*1024] )
|
||||
drawback: no gravis ultrasound
|
||||
gain: reduces memory requirements about 1mb
|
||||
- reduce the size of the emulated graphics memory:
|
||||
see the memory sizing in SVGA_Setup_*, especially the defaults
|
||||
in vga_s3.cpp's SVGA_Setup_S3Trio
|
||||
drawback: some graphics modes won't work then
|
||||
gain: reduces memory requirements
|
||||
TODO: fully check this, introduce hard limits
|
||||
|
||||
If speed is a constraint:
|
||||
- see if the simple core is faster, possibly remove the normal core
|
||||
set the simple core as default
|
||||
drawback: one game is known to not work with the simple core;
|
||||
the simple core does only work for games which don't use paging
|
||||
(when paging is requested the normal core is used automatically)
|
||||
gain: the simple core should be somewhat faster
|
||||
TODO: add possibility to easily remove the normal core, use fullcore fallback
|
||||
- raise the default frameskip value
|
||||
drawback: minor graphics smoothness loss for some games (video playback)
|
||||
gain: reduces graphics load
|
||||
Some notes about porting DOSBox to systems with certain restrictions,
|
||||
like handheld devices.
|
||||
|
||||
General:
|
||||
- depending on where you start off with the port, assure that the
|
||||
config.h entries are correct/exhausting, like GCC_ATTRIBUTE is
|
||||
required (struct packing) but is undefined if you base the port
|
||||
on msvc sources which have a special config.h
|
||||
|
||||
If memory is a constraint:
|
||||
- in paging.h out-comment the USE_FULL_TLB define to enable special
|
||||
TLB linking code that uses less memory
|
||||
drawback: none (the code is not heavily tested though)
|
||||
gain: reduces memory requirements about ~15mb
|
||||
- in render.h lower the scaler integration:
|
||||
#define RENDER_USE_ADVANCED_SCALERS 1
|
||||
or
|
||||
#define RENDER_USE_ADVANCED_SCALERS 0
|
||||
drawback: complex scalers and the scaler cache are disabled,
|
||||
be sure to test if this affects speed!
|
||||
with define RENDER_USE_ADVANCED_SCALERS==0 most simple
|
||||
scalers are disabled as well, some graphics modes won't
|
||||
work due to reduced cache sizes
|
||||
gain: ~2mb with RENDER_USE_ADVANCED_SCALERS==1
|
||||
~5mb with RENDER_USE_ADVANCED_SCALERS==0
|
||||
- in dos_system.h reduce the drive cache entries:
|
||||
#define MAX_OPENDIRS 256
|
||||
drawback: some apps might not work with large directory trees
|
||||
gain: ~1mb per mounted drive
|
||||
- remove the GUS emulation (gus.cpp, especially GUSRam[1024*1024] )
|
||||
drawback: no gravis ultrasound
|
||||
gain: reduces memory requirements about 1mb
|
||||
- reduce the size of the emulated graphics memory:
|
||||
see the memory sizing in SVGA_Setup_*, especially the defaults
|
||||
in vga_s3.cpp's SVGA_Setup_S3Trio
|
||||
drawback: some graphics modes won't work then
|
||||
gain: reduces memory requirements
|
||||
TODO: fully check this, introduce hard limits
|
||||
|
||||
If speed is a constraint:
|
||||
- see if the simple core is faster, possibly remove the normal core
|
||||
set the simple core as default
|
||||
drawback: one game is known to not work with the simple core;
|
||||
the simple core does only work for games which don't use paging
|
||||
(when paging is requested the normal core is used automatically)
|
||||
gain: the simple core should be somewhat faster
|
||||
TODO: add possibility to easily remove the normal core, use fullcore fallback
|
||||
- raise the default frameskip value
|
||||
drawback: minor graphics smoothness loss for some games (video playback)
|
||||
gain: reduces graphics load
|
||||
|
@ -1,35 +1,35 @@
|
||||
Starting with version 0.65, DOSBox allows you to create movies out of screen
|
||||
output.
|
||||
|
||||
To record a movie, you have to press CTRL-ALT-F5.
|
||||
To stop/end the recording, you have to press CTRL-ALT-F5 again.
|
||||
|
||||
To play the recorded movie, you need a movie player which can handle the
|
||||
ZMBV codec. MS Windows users can find this codec in the start menu entry of
|
||||
DOSBox. Users of Linux and other OSes should look for a movie player that
|
||||
uses the ffmpeg libary (you may need to update or ask your distribution to
|
||||
upgrade).
|
||||
|
||||
FAQ:
|
||||
Q: During the display of the movies the sound is lagging.
|
||||
A: Check your display properties to see whether your refresh rate is set to
|
||||
at least 70 hz. Try playing the movie in virtualdub (http://virtualdub.sf.net)
|
||||
|
||||
Q: Why does the resulting movie consist of multiple files?
|
||||
A: Each time the game changes resolution, DOSBox creates a new movie file,
|
||||
because a movie file can only contain one resolution.
|
||||
|
||||
Q: Can I set the cycles higher than my PC can handle during recording?
|
||||
A: Yes. During recording, the game might play slowly and stuttering, but the
|
||||
resulting movie should play at the intended speed and have no stuttering.
|
||||
|
||||
Q: CTRL-ALT-F5 switches to the console under linux.
|
||||
A: 1. Start DOSBox like this: dosbox -startmapper
|
||||
2. Click on Video, click on Add
|
||||
3. Press the key you want (for example scroll lock or printscreen)
|
||||
4. Click exit.
|
||||
5. You can make movies by pressing scroll lock or whichever key you
|
||||
selected.
|
||||
|
||||
Q: The colours are wrong and I'm using 64 bit windows
|
||||
A: Look here: http://vogons.zetafleet.com/viewtopic.php?t=12133
|
||||
Starting with version 0.65, DOSBox allows you to create movies out of screen
|
||||
output.
|
||||
|
||||
To record a movie, you have to press CTRL-ALT-F5.
|
||||
To stop/end the recording, you have to press CTRL-ALT-F5 again.
|
||||
|
||||
To play the recorded movie, you need a movie player which can handle the
|
||||
ZMBV codec. MS Windows users can find this codec in the start menu entry of
|
||||
DOSBox. Users of Linux and other OSes should look for a movie player that
|
||||
uses the ffmpeg libary (you may need to update or ask your distribution to
|
||||
upgrade).
|
||||
|
||||
FAQ:
|
||||
Q: During the display of the movies the sound is lagging.
|
||||
A: Check your display properties to see whether your refresh rate is set to
|
||||
at least 70 hz. Try playing the movie in virtualdub (http://virtualdub.sf.net)
|
||||
|
||||
Q: Why does the resulting movie consist of multiple files?
|
||||
A: Each time the game changes resolution, DOSBox creates a new movie file,
|
||||
because a movie file can only contain one resolution.
|
||||
|
||||
Q: Can I set the cycles higher than my PC can handle during recording?
|
||||
A: Yes. During recording, the game might play slowly and stuttering, but the
|
||||
resulting movie should play at the intended speed and have no stuttering.
|
||||
|
||||
Q: CTRL-ALT-F5 switches to the console under linux.
|
||||
A: 1. Start DOSBox like this: dosbox -startmapper
|
||||
2. Click on Video, click on Add
|
||||
3. Press the key you want (for example scroll lock or printscreen)
|
||||
4. Click exit.
|
||||
5. You can make movies by pressing scroll lock or whichever key you
|
||||
selected.
|
||||
|
||||
Q: The colours are wrong and I'm using 64 bit windows
|
||||
A: Look here: http://vogons.zetafleet.com/viewtopic.php?t=12133
|
||||
|
724
docs/dosbox.1
724
docs/dosbox.1
@ -1,361 +1,363 @@
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.TH DOSBOX 1 "May 27, 2009"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.SH NAME
|
||||
dosbox \- an x86/DOS emulator with sound/graphics
|
||||
.SH SYNOPSIS
|
||||
.B dosbox
|
||||
.B [\-fullscreen]
|
||||
.B [\-startmapper]
|
||||
.B [\-noautoexec]
|
||||
.B [\-securemode]
|
||||
.BI "[\-scaler " scaler ]
|
||||
.BI "[\-forcescaler " scaler ]
|
||||
.BI "[\-conf " configfile ]
|
||||
.BI "[\-lang " langfile ]
|
||||
.B [file]
|
||||
.BI "[\-c " command ]
|
||||
.B [\-exit]
|
||||
.BI "[\-machine " machinetype ]
|
||||
.LP
|
||||
.B dosbox \-version
|
||||
.LP
|
||||
.BI "dosbox \-editconf" " program"
|
||||
.LP
|
||||
.BI "dosbox \-opencaptures" " program"
|
||||
.LP
|
||||
.B dosbox \-printconf
|
||||
.LP
|
||||
.B dosbox \-eraseconf
|
||||
.SH DESCRIPTION
|
||||
This manual page briefly documents
|
||||
.BR "dosbox" ", an x86/DOS emulator."
|
||||
.LP
|
||||
.RB "The optional " file " argument should be a DOS executable or a"
|
||||
directory. If it is a dos executable (.com .exe .bat) the program will
|
||||
run automatically. If it is a directory, a DOS session will run with
|
||||
the directory mounted as C:\\.
|
||||
.LP
|
||||
.RI "For an introduction type " INTRO
|
||||
.RB "inside " dosbox .
|
||||
.SH OPTIONS
|
||||
A summary of options is included below.
|
||||
.TP
|
||||
.B \-fullscreen
|
||||
.RB "Start " dosbox " in fullscreen mode."
|
||||
.TP
|
||||
.B \-startmapper
|
||||
.RB "Start the internal keymapper on startup of " dosbox ". You can use it to change the keys " dosbox " uses."
|
||||
.TP
|
||||
.B \-noautoexec
|
||||
Skips the [autoexec] section of the loaded configuration file.
|
||||
.TP
|
||||
.B \-securemode
|
||||
.RB "Same as " \-noautoexec ", but adds " "config.com \-securemode"
|
||||
at the end of
|
||||
.I AUTOEXEC.BAT
|
||||
(which in turn disables any changes to how the drives are mounted
|
||||
.RB "inside " dosbox )
|
||||
.TP
|
||||
.BI \-scaler " scaler"
|
||||
.RI "Uses the graphical scaler specified by " scaler ". See the configuration"
|
||||
file for the available scalers
|
||||
.TP
|
||||
.BI \-forcescaler " scaler"
|
||||
.RB "Similar to the " \-scaler " parameter, but tries to force usage of"
|
||||
the specified scaler even if it might not fit.
|
||||
.TP
|
||||
.BI \-c " command"
|
||||
.RI "Runs the specified " command " before running "
|
||||
.BR file .
|
||||
.RI "Multiple commands can be specified. Each " command " should start with "
|
||||
.BR \-c " though. A command can be:"
|
||||
an Internal Program, a DOS command or an executable on a mounted drive.
|
||||
.TP
|
||||
.BI \-conf " configfile
|
||||
.RB "Start " dosbox " with the options specified in "
|
||||
.IR configfile ". This file has a section in which you can put commands you "
|
||||
wish to execute on startup. Multiple
|
||||
.IR configfiles " can be present at the commandline."
|
||||
.TP
|
||||
.BI \-lang " langfile
|
||||
.RB "Start " dosbox " with the language specified in "
|
||||
.IR langfile .
|
||||
.TP
|
||||
.B "\-exit "
|
||||
.BR "dosbox" " will close itself when the DOS program specified by "file " ends."
|
||||
.TP
|
||||
.BI \-machine " machinetype
|
||||
.RB "Setup " dosbox " to emulate a specific type of machine."
|
||||
.RI "Valid choices are: " "hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3(default), svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe".
|
||||
The machinetype has influence on both the videocard and the available
|
||||
soundcards.
|
||||
.TP
|
||||
.B \-version
|
||||
Output version information and exit. Useful for frontends.
|
||||
.TP
|
||||
.BI \-editconf " program"
|
||||
.RI calls " program" " with as first parameter the configuration file."
|
||||
.R You can specify this command more than once. In this case it will
|
||||
.RI " move to second " program " if the first one fails to start."
|
||||
.TP
|
||||
.BI \-opencaptures " program"
|
||||
.RI "calls " program " with as first paramater the location of the captures folder."
|
||||
.TP
|
||||
.B \-printconf
|
||||
.R prints the location of the default configuration file.
|
||||
.TP
|
||||
.B \-eraseconf
|
||||
.R removes the default configuration file.
|
||||
.SH "INTERNAL COMMANDS"
|
||||
.B dosbox
|
||||
supports most of the DOS commands found in command.com. In addition, the
|
||||
following extra commands are available:
|
||||
.HP
|
||||
.BI "MOUNT [\-t " type "] [\-size " size ]
|
||||
.I driveletter sourcedirectory
|
||||
.B [\-ioctl]
|
||||
.BI "[\-usecd " number "] [\-label " drivelabel "] [\-freesize " freesize ]
|
||||
.LP
|
||||
.B MOUNT \-cd
|
||||
.LP
|
||||
.B MOUNT \-u driveletter
|
||||
.LP
|
||||
.RB "Program to mount local directories as drives inside " dosbox .
|
||||
.RS
|
||||
.TP
|
||||
.I driveletter
|
||||
The driveletter inside dosbox (eg. C).
|
||||
.TP
|
||||
.I sourcedirectory
|
||||
The local directory you want to have inside dosbox.
|
||||
.TP
|
||||
.BI \-t " type"
|
||||
Type of the mounted directory. Supported are: dir (standard), floppy, cdrom.
|
||||
.TP
|
||||
.BI \-size " drivesize"
|
||||
Sets the size of the drive. See the examples in the README for details.
|
||||
.TP
|
||||
.BI \-freesize " size_in_mb"
|
||||
Sets the amount of free space available on a drive in MB's. This is a more
|
||||
.RB "simple version of " \-size .
|
||||
.TP
|
||||
.BI \-label " drivelabel"
|
||||
.RI "Sets the name of the drive to " drivelabel ". Needed on some"
|
||||
systems if the cd label isn't read correctly. Useful when a
|
||||
program can't find its cdrom. If you don't specify a label and no
|
||||
.RB "lowlevel support is selected (" "\-usecd #" " and/or " "\-ioctl/aspi" "):"
|
||||
.RS
|
||||
.LP
|
||||
For win32: label is extracted from "Real Drive".
|
||||
.TP
|
||||
For Linux: label is set to NO_LABEL.
|
||||
.TP
|
||||
If you do specify a label this label will be kept as long as the drive
|
||||
is mounted. It will not be updated !!
|
||||
.RE
|
||||
.TP
|
||||
.B \-ioctl
|
||||
Forces to use ioctl commands.
|
||||
.TP
|
||||
.BI \-usecd " number"
|
||||
Forces to use SDL cdrom support for drive number.
|
||||
.IR Number " can be found by "
|
||||
.BR \-cd ".
|
||||
.TP
|
||||
.B \-cd
|
||||
.RB "Displays all detected cdrom drives and their numbers. Use with " \-usecd "."
|
||||
.TP
|
||||
.B \-u
|
||||
Unmounts a mounted drive. Doesn't work on virtual Drives (like Z:\\)
|
||||
.RE
|
||||
.PP
|
||||
.B "Example:"
|
||||
.TP
|
||||
.RB "To mount your /home/dos/dosgames directory as C drive in " dosbox :
|
||||
.RS
|
||||
mount c /home/dos/dosgames
|
||||
.RE
|
||||
.TP
|
||||
.B MEM
|
||||
.LP
|
||||
Display the amount of free memory
|
||||
.TP
|
||||
.B CONFIG [\-writeconf] [\-writelang] file
|
||||
.LP
|
||||
.B CONFIG -securemode
|
||||
.LP
|
||||
.RB "Write the current configuration or language settings to " file ,
|
||||
which is located on the local filesystem. Not a mounted drive in
|
||||
.BR dosbox .
|
||||
.TP
|
||||
.B \-securemode
|
||||
.RB Switches dosbox " to a more secure mode. In this mode the"
|
||||
.RI "internal commands " MOUNT ", " IMGMOUNT " and " BOOT " won\'t work."
|
||||
It\'s not possible
|
||||
either to create a new configfile or languagefile in this mode.
|
||||
(Warning you can only undo this mode by restarting
|
||||
.BR dosbox .)
|
||||
.LP
|
||||
The configuration file controls various settings of
|
||||
.BR dosbox ": The amount of emulated memory,"
|
||||
the emulated soundcards and many
|
||||
.RI "more things. It futher allows acces to " AUTOEXEC.BAT .
|
||||
.LP
|
||||
The language file controls all visible ouput of the internal commands and
|
||||
the internal dos.
|
||||
.RB "See the section " FILES " for more information."
|
||||
.TP
|
||||
.B LOADFIX [\-size] [programname] [parameters]
|
||||
.LP
|
||||
.B LOADFIX \-f
|
||||
.LP
|
||||
Program to reduce the amount of memory available. Useful for old programs which don't expect much memory to be free.
|
||||
.RS
|
||||
.TP
|
||||
.B [programname]
|
||||
The name of the program which is executed after loadfix eats up its memory.
|
||||
.TP
|
||||
.B [parameters]
|
||||
.RB "Parameters given to the " programname " executable."
|
||||
.TP
|
||||
.B \-size
|
||||
The amount of memory to eat up (in kb). Example -32, -64 or -128
|
||||
.TP
|
||||
.B \-f
|
||||
Frees all memory eaten up by loadfix.
|
||||
.RE
|
||||
.TP
|
||||
.B RESCAN
|
||||
.LP
|
||||
.RB "Make " dosbox " reread the directory structure. Useful if you changed
|
||||
.RB "something on a mounted drive outside " dosbox ".(CTRL\-F4 does"
|
||||
this as well!)
|
||||
.TP
|
||||
.B IMGMOUNT
|
||||
.LP
|
||||
.RB "A utility to mount disk images and CD-ROM images in " dosbox .
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B BOOT
|
||||
.LP
|
||||
Boot will start floppy images or hard disk images independent of the
|
||||
.RB "operating system emulation offered by " dosbox ". This will allow you to play booter floppies or boot to other operating systems inside " dosbox .
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B IPX
|
||||
.LP
|
||||
.RB "You need to enable IPX networking in the configuration file of " dosbox .
|
||||
.RB "All of the IPX networking is managed through the internal " dosbox " program
|
||||
.BR IPXNET ". For help on the IPX networking from inside " dosbox ", type"
|
||||
.BR "IPXNET HELP" " and the program will list out the commands and relevant documentation."
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B KEYB
|
||||
.LP
|
||||
Keyb can change the keyboardlayout and the codepage used inside dosbox.
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.SH FILES
|
||||
Configuration and language files use a format similar to Windows .ini files.
|
||||
If no configfile is specified at the commandline, a file named
|
||||
.BR dosbox.conf " (if present in the current directory) will be"
|
||||
loaded automatically. If a configfile is specified at the commandline
|
||||
that one will be used instead. If no configfile is specified or found
|
||||
in the current directory
|
||||
.RB " then dosbox will load one from " ~/.dosbox/ ". It will try to create "
|
||||
one if there is none.
|
||||
.SH "SPECIAL KEYS"
|
||||
.TP 12m
|
||||
.IP ALT\-ENTER
|
||||
Go full screen and back.
|
||||
.IP ALT\-PAUSE
|
||||
Pause emulation.
|
||||
.IP CTRL\-F1
|
||||
Start the keymapper.
|
||||
.IP CTRL\-ALT\-F5
|
||||
Start/Stop creating a movie of the screen.
|
||||
.IP CTRL\-F4
|
||||
Swap mounted disk-image (Only used with imgmount). Update directory cache
|
||||
for all drives!
|
||||
.IP CTRL\-F5
|
||||
Save a screenshot.(png)
|
||||
.IP CTRL\-F6
|
||||
Start/Stop recording sound output to a wave file.
|
||||
.IP CTRL\-ALT\-F7
|
||||
Start/Stop recording of OPL commands.
|
||||
.IP CTRL\-ALT\-F8
|
||||
Start/Stop the recording of raw MIDI commands.
|
||||
.IP CTRL\-F7
|
||||
Decrease frameskip.
|
||||
.IP CTRL\-F8
|
||||
Increase frameskip.
|
||||
.IP CTRL\-F9
|
||||
Kill dosbox.
|
||||
.IP CTRL\-F10
|
||||
Capture/Release the mouse.
|
||||
.IP CTRL\-F11
|
||||
Slow down emulation (Increase dosbox Cycles).
|
||||
.IP CTRL\-F12
|
||||
Speed up emulation (Decrease dosbox Cycles).
|
||||
.IP ALT\-F12
|
||||
Unlock speed (turbo button).
|
||||
.PP
|
||||
These are the default keybindings. They can be changed in the keymapper.
|
||||
.PP
|
||||
Saved/recorded files can be found in current_directory/capture
|
||||
(can be changed in the configfile).
|
||||
.RB "The directory has to exist prior to starting " dosbox " else nothing"
|
||||
gets saved/recorded !
|
||||
.PP
|
||||
.BR "Note: " "Once you increase your " dosbox " cycles beyond your computer's maximum
|
||||
capacity, it will produce the same effect as slowing down the emulation.
|
||||
This maximum will vary from computer to computer, there is no standard.
|
||||
.SH "SYSTEM REQUIREMENTS"
|
||||
Fast machine. My guess would be pentium\-2 400+ to get decent emulation
|
||||
of games written for an 286 machine.
|
||||
For protected mode games a 1 Ghz machine is recommended and don't expect
|
||||
them to run fast though!! Be sure to read the next section on how to speed
|
||||
it up somewhat.
|
||||
.SS "To run resource\-demanding games"
|
||||
.BR dosbox " emulates the CPU, the sound and graphic cards, and some other"
|
||||
.RB " stuff, all at the same time. You can overclock " dosbox " by using CTRL\-F12, but"
|
||||
you'll be limited by the power of your actual CPU. You can see how much free
|
||||
time your true CPU has by various utils (top). Once 100% of your real CPU time is
|
||||
.RB "used there is no further way to speed up " dosbox " unless you reduce the load"
|
||||
.RB "generated by the non\-CPU parts of " dosbox .
|
||||
.PP
|
||||
So:
|
||||
.PP
|
||||
.RB "Close every program but " dosbox .
|
||||
.PP
|
||||
.RB "Overclock " dosbox " until 100% of your CPU is used.(CTRL\-F12)"
|
||||
.PP
|
||||
.RB "Since VGA emulation is the most demanding part of " dosbox " in terms of actual"
|
||||
CPU usage, we'll start here. Increase the number of frames skipped (in
|
||||
increments of one) by pressing CTRL\-F8. Your CPU usage should decrease.
|
||||
Go back one step and repeat this until the game runs fast enough for you.
|
||||
Please note that this is a trade off: you lose in fluidity of video what you
|
||||
gain in speed.
|
||||
.SH NOTES
|
||||
.RB "While we hope that, one day, " dosbox " will run virtually all programs ever made for the PC..."
|
||||
.RB "we are not there yet. At present, " dosbox " run on a 1.7 Gigahertz PC is roughly the equivalent of a 25MHz 386 PC."
|
||||
While the 0.60 release has added support for "protected mode" allowing for more complex and recent programs,
|
||||
but note that this support is early in development and nowhere near as complete as the support for 386 real\-mode
|
||||
games (or earlier). Also note that "protected mode" games need substantially more resources and may
|
||||
.RB "require a much faster processor for you to run it properly in " dosbox .
|
||||
.SH BUGS
|
||||
Not all DOS programs work properly.
|
||||
.BR dosbox " will exit without warning if an error occurred."
|
||||
.SH "SEE ALSO"
|
||||
The README in /usr/share/doc/dosbox
|
||||
.SH AUTHOR
|
||||
This manual page was written by Peter Veenstra <H.P.Veenstra@student.rug.nl> and James Oakley <jfunk@funktronics.ca>,
|
||||
for the Debian system (but may be used by others).
|
||||
.\" Hey, EMACS: -*- nroff -*-
|
||||
.TH DOSBOX 1 "May 27, 2009"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.SH NAME
|
||||
dosbox \- an x86/DOS emulator with sound/graphics
|
||||
.SH SYNOPSIS
|
||||
.B dosbox
|
||||
.B [\-fullscreen]
|
||||
.B [\-startmapper]
|
||||
.B [\-noautoexec]
|
||||
.B [\-securemode]
|
||||
.BI "[\-scaler " scaler ]
|
||||
.BI "[\-forcescaler " scaler ]
|
||||
.BI "[\-conf " configfile ]
|
||||
.BI "[\-lang " langfile ]
|
||||
.B [file]
|
||||
.BI "[\-c " command ]
|
||||
.B [\-exit]
|
||||
.BI "[\-machine " machinetype ]
|
||||
.LP
|
||||
.B dosbox \-version
|
||||
.LP
|
||||
.BI "dosbox \-editconf" " program"
|
||||
.LP
|
||||
.BI "dosbox \-opencaptures" " program"
|
||||
.LP
|
||||
.B dosbox \-printconf
|
||||
.LP
|
||||
.B dosbox \-eraseconf
|
||||
.SH DESCRIPTION
|
||||
This manual page briefly documents
|
||||
.BR "dosbox" ", an x86/DOS emulator."
|
||||
.LP
|
||||
.RB "The optional " file " argument should be a DOS executable or a"
|
||||
directory. If it is a dos executable (.com .exe .bat) the program will
|
||||
run automatically. If it is a directory, a DOS session will run with
|
||||
the directory mounted as C:\\.
|
||||
.LP
|
||||
.RI "For an introduction type " INTRO
|
||||
.RB "inside " dosbox .
|
||||
.SH OPTIONS
|
||||
A summary of options is included below.
|
||||
.TP
|
||||
.B \-fullscreen
|
||||
.RB "Start " dosbox " in fullscreen mode."
|
||||
.TP
|
||||
.B \-startmapper
|
||||
.RB "Start the internal keymapper on startup of " dosbox ". You can use it to change the keys " dosbox " uses."
|
||||
.TP
|
||||
.B \-noautoexec
|
||||
Skips the [autoexec] section of the loaded configuration file.
|
||||
.TP
|
||||
.B \-securemode
|
||||
.RB "Same as " \-noautoexec ", but adds " "config.com \-securemode"
|
||||
at the end of
|
||||
.I AUTOEXEC.BAT
|
||||
(which in turn disables any changes to how the drives are mounted
|
||||
.RB "inside " dosbox )
|
||||
.TP
|
||||
.BI \-scaler " scaler"
|
||||
.RI "Uses the graphical scaler specified by " scaler ". See the configuration"
|
||||
file for the available scalers
|
||||
.TP
|
||||
.BI \-forcescaler " scaler"
|
||||
.RB "Similar to the " \-scaler " parameter, but tries to force usage of"
|
||||
the specified scaler even if it might not fit.
|
||||
.TP
|
||||
.BI \-c " command"
|
||||
.RI "Runs the specified " command " before running "
|
||||
.BR file .
|
||||
.RI "Multiple commands can be specified. Each " command " should start with "
|
||||
.BR \-c " though. A command can be:"
|
||||
an Internal Program, a DOS command or an executable on a mounted drive.
|
||||
.TP
|
||||
.BI \-conf " configfile
|
||||
.RB "Start " dosbox " with the options specified in "
|
||||
.IR configfile ". This file has a section in which you can put commands you "
|
||||
wish to execute on startup. Multiple
|
||||
.IR configfiles " can be present at the commandline."
|
||||
.TP
|
||||
.BI \-lang " langfile
|
||||
.RB "Start " dosbox " with the language specified in "
|
||||
.IR langfile .
|
||||
.TP
|
||||
.B "\-exit "
|
||||
.BR "dosbox" " will close itself when the DOS program specified by "file " ends."
|
||||
.TP
|
||||
.BI \-machine " machinetype
|
||||
.RB "Setup " dosbox " to emulate a specific type of machine."
|
||||
.RI "Valid choices are: " "hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3(default), svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe".
|
||||
The machinetype has influence on both the videocard and the available
|
||||
soundcards.
|
||||
.TP
|
||||
.B \-version
|
||||
Output version information and exit. Useful for frontends.
|
||||
.TP
|
||||
.BI \-editconf " program"
|
||||
.RI calls " program" " with as first parameter the configuration file."
|
||||
You can specify this command more than once. In this case it will
|
||||
.RI " move to second " program " if the first one fails to start."
|
||||
.TP
|
||||
.BI \-opencaptures " program"
|
||||
.RI "calls " program " with as first paramater the location of the captures folder."
|
||||
.TP
|
||||
.B \-printconf
|
||||
prints the location of the default configuration file.
|
||||
.TP
|
||||
.B \-eraseconf
|
||||
removes the default configuration file.
|
||||
.SH "INTERNAL COMMANDS"
|
||||
.B dosbox
|
||||
supports most of the DOS commands found in command.com. In addition, the
|
||||
following extra commands are available:
|
||||
.HP
|
||||
.BI "MOUNT [\-t " type "] [\-size " size ]
|
||||
.I driveletter sourcedirectory
|
||||
.B [\-ioctl]
|
||||
.BI "[\-usecd " number "] [\-label " drivelabel "] [\-freesize " freesize ]
|
||||
.LP
|
||||
.B MOUNT \-cd
|
||||
.LP
|
||||
.B MOUNT \-u driveletter
|
||||
.LP
|
||||
.RB "Program to mount local directories as drives inside " dosbox .
|
||||
.RS
|
||||
.TP
|
||||
.I driveletter
|
||||
The driveletter inside dosbox (eg. C).
|
||||
.TP
|
||||
.I sourcedirectory
|
||||
The local directory you want to have inside dosbox.
|
||||
.TP
|
||||
.BI \-t " type"
|
||||
Type of the mounted directory. Supported are: dir (standard), floppy, cdrom.
|
||||
.TP
|
||||
.BI \-size " drivesize"
|
||||
Sets the size of the drive. See the examples in the README for details.
|
||||
.TP
|
||||
.BI \-freesize " size_in_mb"
|
||||
Sets the amount of free space available on a drive in MB's. This is a more
|
||||
.RB "simple version of " \-size .
|
||||
.TP
|
||||
.BI \-label " drivelabel"
|
||||
.RI "Sets the name of the drive to " drivelabel ". Needed on some"
|
||||
systems if the cd label isn't read correctly. Useful when a
|
||||
program can't find its cdrom. If you don't specify a label and no
|
||||
.RB "lowlevel support is selected (" "\-usecd #" " and/or " "\-ioctl/aspi" "):"
|
||||
.RS
|
||||
.LP
|
||||
For win32: label is extracted from "Real Drive".
|
||||
.TP
|
||||
For Linux: label is set to NO_LABEL.
|
||||
.TP
|
||||
If you do specify a label this label will be kept as long as the drive
|
||||
is mounted. It will not be updated !!
|
||||
.RE
|
||||
.TP
|
||||
.B \-ioctl
|
||||
Forces to use ioctl commands.
|
||||
.TP
|
||||
.BI \-usecd " number"
|
||||
Forces to use SDL cdrom support for drive number.
|
||||
.IR Number " can be found by "
|
||||
.BR \-cd ".
|
||||
.TP
|
||||
.B \-cd
|
||||
.RB "Displays all detected cdrom drives and their numbers. Use with " \-usecd "."
|
||||
.TP
|
||||
.B \-u
|
||||
Unmounts a mounted drive. Doesn't work on virtual Drives (like Z:\\)
|
||||
.RE
|
||||
.PP
|
||||
.B "Example:"
|
||||
.TP
|
||||
.RB "To mount your /home/dos/dosgames directory as C drive in " dosbox :
|
||||
.RS
|
||||
mount c /home/dos/dosgames
|
||||
.RE
|
||||
.TP
|
||||
.B MEM
|
||||
.LP
|
||||
Display the amount of free memory
|
||||
.TP
|
||||
.B CONFIG [\-writeconf] [\-writelang] file
|
||||
.LP
|
||||
.B CONFIG \-securemode
|
||||
.LP
|
||||
.RB "Write the current configuration or language settings to " file ,
|
||||
which is located on the local filesystem. Not a mounted drive in
|
||||
.BR dosbox .
|
||||
.RS
|
||||
.TP
|
||||
.B \-securemode
|
||||
.RB Switches dosbox " to a more secure mode. In this mode the"
|
||||
.RI "internal commands " MOUNT ", " IMGMOUNT " and " BOOT " won\'t work."
|
||||
It\'s not possible
|
||||
either to create a new configfile or languagefile in this mode.
|
||||
(Warning you can only undo this mode by restarting
|
||||
.BR dosbox .)
|
||||
.RE
|
||||
.LP
|
||||
The configuration file controls various settings of
|
||||
.BR dosbox ": The amount of emulated memory,"
|
||||
the emulated soundcards and many
|
||||
.RI "more things. It futher allows acces to " AUTOEXEC.BAT .
|
||||
.LP
|
||||
The language file controls all visible ouput of the internal commands and
|
||||
the internal dos.
|
||||
.RB "See the section " FILES " for more information."
|
||||
.TP
|
||||
.B LOADFIX [\-size] [programname] [parameters]
|
||||
.LP
|
||||
.B LOADFIX \-f
|
||||
.LP
|
||||
Program to reduce the amount of memory available. Useful for old programs which don't expect much memory to be free.
|
||||
.RS
|
||||
.TP
|
||||
.B [programname]
|
||||
The name of the program which is executed after loadfix eats up its memory.
|
||||
.TP
|
||||
.B [parameters]
|
||||
.RB "Parameters given to the " programname " executable."
|
||||
.TP
|
||||
.B \-size
|
||||
The amount of memory to eat up (in kb). Example \-32, \-64 or \-128
|
||||
.TP
|
||||
.B \-f
|
||||
Frees all memory eaten up by loadfix.
|
||||
.RE
|
||||
.TP
|
||||
.B RESCAN
|
||||
.LP
|
||||
.RB "Make " dosbox " reread the directory structure. Useful if you changed
|
||||
.RB "something on a mounted drive outside " dosbox ".(CTRL\-F4 does"
|
||||
this as well!)
|
||||
.TP
|
||||
.B IMGMOUNT
|
||||
.LP
|
||||
.RB "A utility to mount disk images and CD\(hyROM images in " dosbox .
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B BOOT
|
||||
.LP
|
||||
Boot will start floppy images or hard disk images independent of the
|
||||
.RB "operating system emulation offered by " dosbox ". This will allow you to play booter floppies or boot to other operating systems inside " dosbox .
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B IPX
|
||||
.LP
|
||||
.RB "You need to enable IPX networking in the configuration file of " dosbox .
|
||||
.RB "All of the IPX networking is managed through the internal " dosbox " program
|
||||
.BR IPXNET ". For help on the IPX networking from inside " dosbox ", type"
|
||||
.BR "IPXNET HELP" " and the program will list out the commands and relevant documentation."
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.TP
|
||||
.B KEYB
|
||||
.LP
|
||||
Keyb can change the keyboardlayout and the codepage used inside dosbox.
|
||||
.TP
|
||||
.RB "Read the " README " of " dosbox " for the full and correct syntax."
|
||||
.RE
|
||||
.SH FILES
|
||||
Configuration and language files use a format similar to Windows .ini files.
|
||||
If no configfile is specified at the commandline, a file named
|
||||
.BR dosbox.conf " (if present in the current directory) will be"
|
||||
loaded automatically. If a configfile is specified at the commandline
|
||||
that one will be used instead. If no configfile is specified or found
|
||||
in the current directory
|
||||
.RB " then dosbox will load one from " ~/.dosbox/ ". It will try to create "
|
||||
one if there is none.
|
||||
.SH "SPECIAL KEYS"
|
||||
.TP 12m
|
||||
.IP ALT\-ENTER
|
||||
Go full screen and back.
|
||||
.IP ALT\-PAUSE
|
||||
Pause emulation.
|
||||
.IP CTRL\-F1
|
||||
Start the keymapper.
|
||||
.IP CTRL\-ALT\-F5
|
||||
Start/Stop creating a movie of the screen.
|
||||
.IP CTRL\-F4
|
||||
Swap mounted disk\(hyimage (Only used with imgmount). Update directory cache
|
||||
for all drives!
|
||||
.IP CTRL\-F5
|
||||
Save a screenshot.(png)
|
||||
.IP CTRL\-F6
|
||||
Start/Stop recording sound output to a wave file.
|
||||
.IP CTRL\-ALT\-F7
|
||||
Start/Stop recording of OPL commands.
|
||||
.IP CTRL\-ALT\-F8
|
||||
Start/Stop the recording of raw MIDI commands.
|
||||
.IP CTRL\-F7
|
||||
Decrease frameskip.
|
||||
.IP CTRL\-F8
|
||||
Increase frameskip.
|
||||
.IP CTRL\-F9
|
||||
Kill dosbox.
|
||||
.IP CTRL\-F10
|
||||
Capture/Release the mouse.
|
||||
.IP CTRL\-F11
|
||||
Slow down emulation (Increase dosbox Cycles).
|
||||
.IP CTRL\-F12
|
||||
Speed up emulation (Decrease dosbox Cycles).
|
||||
.IP ALT\-F12
|
||||
Unlock speed (turbo button).
|
||||
.PP
|
||||
These are the default keybindings. They can be changed in the keymapper.
|
||||
.PP
|
||||
Saved/recorded files can be found in current_directory/capture
|
||||
(can be changed in the configfile).
|
||||
.RB "The directory has to exist prior to starting " dosbox " else nothing"
|
||||
gets saved/recorded !
|
||||
.PP
|
||||
.BR "Note: " "Once you increase your " dosbox " cycles beyond your computer's maximum
|
||||
capacity, it will produce the same effect as slowing down the emulation.
|
||||
This maximum will vary from computer to computer, there is no standard.
|
||||
.SH "SYSTEM REQUIREMENTS"
|
||||
Fast machine. My guess would be pentium\-2 400+ to get decent emulation
|
||||
of games written for an 286 machine.
|
||||
For protected mode games a 1 Ghz machine is recommended and don't expect
|
||||
them to run fast though!! Be sure to read the next section on how to speed
|
||||
it up somewhat.
|
||||
.SS "To run resource\-demanding games"
|
||||
.BR dosbox " emulates the CPU, the sound and graphic cards, and some other"
|
||||
.RB " stuff, all at the same time. You can overclock " dosbox " by using CTRL\-F12, but"
|
||||
you'll be limited by the power of your actual CPU. You can see how much free
|
||||
time your true CPU has by various utils (top). Once 100% of your real CPU time is
|
||||
.RB "used there is no further way to speed up " dosbox " unless you reduce the load"
|
||||
.RB "generated by the non\-CPU parts of " dosbox .
|
||||
.PP
|
||||
So:
|
||||
.PP
|
||||
.RB "Close every program but " dosbox .
|
||||
.PP
|
||||
.RB "Overclock " dosbox " until 100% of your CPU is used.(CTRL\-F12)"
|
||||
.PP
|
||||
.RB "Since VGA emulation is the most demanding part of " dosbox " in terms of actual"
|
||||
CPU usage, we'll start here. Increase the number of frames skipped (in
|
||||
increments of one) by pressing CTRL\-F8. Your CPU usage should decrease.
|
||||
Go back one step and repeat this until the game runs fast enough for you.
|
||||
Please note that this is a trade off: you lose in fluidity of video what you
|
||||
gain in speed.
|
||||
.SH NOTES
|
||||
.RB "While we hope that, one day, " dosbox " will run virtually all programs ever made for the PC..."
|
||||
.RB "we are not there yet. At present, " dosbox " run on a 1.7 Gigahertz PC is roughly the equivalent of a 25MHz 386 PC."
|
||||
While the 0.60 release has added support for "protected mode" allowing for more complex and recent programs,
|
||||
but note that this support is early in development and nowhere near as complete as the support for 386 real\-mode
|
||||
games (or earlier). Also note that "protected mode" games need substantially more resources and may
|
||||
.RB "require a much faster processor for you to run it properly in " dosbox .
|
||||
.SH BUGS
|
||||
Not all DOS programs work properly.
|
||||
.BR dosbox " will exit without warning if an error occurred."
|
||||
.SH "SEE ALSO"
|
||||
The README in /usr/share/doc/dosbox
|
||||
.SH AUTHOR
|
||||
This manual page was written by Peter Veenstra <H.P.Veenstra@student.rug.nl> and James Oakley <jfunk@funktronics.ca>,
|
||||
for the Debian system (but may be used by others).
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
@ -141,8 +141,8 @@ public:
|
||||
char* GetExpandName (const char* path);
|
||||
bool GetShortName (const char* fullname, char* shortname);
|
||||
|
||||
bool FindFirst (char* path, Bitu& id);
|
||||
bool FindNext (Bitu id, char* &result);
|
||||
bool FindFirst (char* path, Bit16u& id);
|
||||
bool FindNext (Bit16u id, char* &result);
|
||||
|
||||
void CacheOut (const char* path, bool ignoreLastDir = false);
|
||||
void AddEntry (const char* path, bool checkExist = false);
|
||||
@ -205,7 +205,7 @@ private:
|
||||
char dirSearchName [MAX_OPENDIRS];
|
||||
bool free [MAX_OPENDIRS];
|
||||
CFileInfo* dirFindFirst [MAX_OPENDIRS];
|
||||
Bitu nextFreeFindFirst;
|
||||
Bit16u nextFreeFindFirst;
|
||||
|
||||
char label [CROSS_LEN];
|
||||
bool updatelabel;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
@ -100,8 +100,9 @@ public:
|
||||
Bit8u getb() {
|
||||
if (!used) return data[pos];
|
||||
Bitu where=pos;
|
||||
if (++pos>=size) pos-=size;
|
||||
used--;
|
||||
if(used) pos++;
|
||||
if (pos>=size) pos-=size;
|
||||
return data[where];
|
||||
}
|
||||
Bit8u getTop() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,157 +1,157 @@
|
||||
!define VER_MAYOR 0
|
||||
!define VER_MINOR 73
|
||||
!define APP_NAME "DOSBox ${VER_MAYOR}.${VER_MINOR} Installer"
|
||||
!define COMP_NAME "DOSBox Team"
|
||||
!define COPYRIGHT "Copyright © 2002-2009 DOSBox Team"
|
||||
!define DESCRIPTION "DOSBox Installer"
|
||||
|
||||
VIProductVersion "${VER_MAYOR}.${VER_MINOR}.0.0"
|
||||
VIAddVersionKey "ProductName" "${APP_NAME}"
|
||||
VIAddVersionKey "CompanyName" "${COMP_NAME}"
|
||||
VIAddVersionKey "FileDescription" "${DESCRIPTION}"
|
||||
VIAddVersionKey "FileVersion" "${VER_MAYOR}.${VER_MINOR}.0.0"
|
||||
VIAddVersionKey "ProductVersion" "${VER_MAYOR}, ${VER_MINOR}, 0, 0"
|
||||
VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
|
||||
|
||||
; The name of the installer
|
||||
Name "${APP_NAME}"
|
||||
|
||||
; The file to write
|
||||
OutFile "DOSBox${VER_MAYOR}.${VER_MINOR}-win32-installer.exe"
|
||||
|
||||
; The default installation directory
|
||||
InstallDir "$PROGRAMFILES\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
|
||||
; The text to prompt the user to enter a directory
|
||||
DirText "This will install DOSBox v${VER_MAYOR}.${VER_MINOR} on your computer. Choose a directory"
|
||||
SetCompressor /solid lzma
|
||||
|
||||
|
||||
LicenseData COPYING
|
||||
LicenseText "DOSBox v${VER_MAYOR}.${VER_MINOR} License" "Next >"
|
||||
|
||||
; Else vista enables compatibility mode
|
||||
RequestExecutionLevel admin
|
||||
; Shortcuts in all users
|
||||
|
||||
ComponentText "Select components for DOSBox"
|
||||
; The stuff to install
|
||||
Section "!Core files" Core
|
||||
SetShellVarContext all
|
||||
|
||||
; Set output path to the installation directory.
|
||||
ClearErrors
|
||||
SetOutPath $INSTDIR
|
||||
IfErrors error_createdir
|
||||
SectionIn RO
|
||||
|
||||
; Put file there
|
||||
|
||||
CreateDirectory "$INSTDIR\zmbv"
|
||||
File /oname=README.txt README
|
||||
File /oname=COPYING.txt COPYING
|
||||
File /oname=THANKS.txt THANKS
|
||||
File /oname=NEWS.txt NEWS
|
||||
File /oname=AUTHORS.txt AUTHORS
|
||||
File /oname=INSTALL.txt INSTALL
|
||||
File DOSBox.exe
|
||||
File SDL.dll
|
||||
File SDL_net.dll
|
||||
File /oname=zmbv\zmbv.dll zmbv.dll
|
||||
File /oname=zmbv\zmbv.inf zmbv.inf
|
||||
File /oname=zmbv\README.txt README.video
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video"
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox.lnk" "$INSTDIR\DOSBox.exe" "" "$INSTDIR\DOSBox.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox (noconsole).lnk" "$INSTDIR\DOSBox.exe" "-noconsole" "$INSTDIR\DOSBox.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\README.lnk" "$INSTDIR\README.txt"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Edit Configuration.lnk" "$INSTDIR\DOSBox.exe" "-editconf notepad.exe -editconf $\"%SystemRoot%\system32\notepad.exe$\" -editconf $\"%WINDIR%\notepad.exe$\""
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Reset Configuration.lnk" "$INSTDIR\DOSBox.exe" "-eraseconf"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Capture folder.lnk" "$INSTDIR\DOSBox.exe" "-opencaptures explorer.exe"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Video instructions.lnk" "$INSTDIR\zmbv\README.txt"
|
||||
;change outpath so the working directory gets set to zmbv
|
||||
SetOutPath "$INSTDIR\zmbv"
|
||||
; Shortcut creation depends on wether we are 9x of NT
|
||||
ClearErrors
|
||||
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
|
||||
IfErrors we_9x we_nt
|
||||
we_nt:
|
||||
;shortcut for win NT
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk" "rundll32" "setupapi,InstallHinfSection DefaultInstall 128 $INSTDIR\zmbv\zmbv.inf"
|
||||
goto end
|
||||
we_9x:
|
||||
;shortcut for we_9x
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk" "rundll" "setupx.dll,InstallHinfSection DefaultInstall 128 $INSTDIR\zmbv\zmbv.inf"
|
||||
end:
|
||||
SetOutPath $INSTDIR
|
||||
WriteUninstaller "uninstall.exe"
|
||||
|
||||
goto end_section
|
||||
|
||||
error_createdir:
|
||||
MessageBox MB_OK "Can't create DOSBox program directory, aborting."
|
||||
Abort
|
||||
goto end_section
|
||||
|
||||
end_section:
|
||||
SectionEnd ; end the section
|
||||
|
||||
Section "Desktop Shortcut" SecDesktop
|
||||
SetShellVarContext all
|
||||
|
||||
CreateShortCut "$DESKTOP\DOSBox ${VER_MAYOR}.${VER_MINOR}.lnk" "$INSTDIR\DOSBox.exe" "" "$INSTDIR\DOSBox.exe" 0
|
||||
|
||||
SectionEnd ; end the section
|
||||
|
||||
|
||||
UninstallText "This will uninstall DOSBox v${VER_MAYOR}.${VER_MINOR}. Hit next to continue."
|
||||
|
||||
Section "Uninstall"
|
||||
|
||||
; Shortcuts in all users
|
||||
SetShellVarContext all
|
||||
|
||||
Delete "$DESKTOP\DOSBox ${VER_MAYOR}.${VER_MINOR}.lnk"
|
||||
; remove registry keys
|
||||
; remove files
|
||||
Delete $INSTDIR\README.txt
|
||||
Delete $INSTDIR\COPYING.txt
|
||||
Delete $INSTDIR\THANKS.txt
|
||||
Delete $INSTDIR\NEWS.txt
|
||||
Delete $INSTDIR\AUTHORS.txt
|
||||
Delete $INSTDIR\INSTALL.txt
|
||||
Delete $INSTDIR\DOSBox.exe
|
||||
Delete $INSTDIR\SDL.dll
|
||||
Delete $INSTDIR\SDL_net.dll
|
||||
Delete $INSTDIR\zmbv\zmbv.dll
|
||||
Delete $INSTDIR\zmbv\zmbv.inf
|
||||
Delete $INSTDIR\zmbv\README.txt
|
||||
;Files left by sdl taking over the console
|
||||
Delete $INSTDIR\stdout.txt
|
||||
Delete $INSTDIR\stderr.txt
|
||||
|
||||
; MUST REMOVE UNINSTALLER, too
|
||||
Delete $INSTDIR\uninstall.exe
|
||||
|
||||
; remove shortcuts, if any.
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Uninstall.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\README.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox (noconsole).lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Edit Configuration.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Reset Configuration.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Capture folder.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Video instructions.lnk"
|
||||
; remove directories used.
|
||||
RMDir "$INSTDIR\zmbv"
|
||||
RMDir "$INSTDIR"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
SectionEnd
|
||||
|
||||
; eof
|
||||
!define VER_MAYOR 0
|
||||
!define VER_MINOR 73
|
||||
!define APP_NAME "DOSBox ${VER_MAYOR}.${VER_MINOR} Installer"
|
||||
!define COMP_NAME "DOSBox Team"
|
||||
!define COPYRIGHT "Copyright © 2002-2009 DOSBox Team"
|
||||
!define DESCRIPTION "DOSBox Installer"
|
||||
|
||||
VIProductVersion "${VER_MAYOR}.${VER_MINOR}.0.0"
|
||||
VIAddVersionKey "ProductName" "${APP_NAME}"
|
||||
VIAddVersionKey "CompanyName" "${COMP_NAME}"
|
||||
VIAddVersionKey "FileDescription" "${DESCRIPTION}"
|
||||
VIAddVersionKey "FileVersion" "${VER_MAYOR}.${VER_MINOR}.0.0"
|
||||
VIAddVersionKey "ProductVersion" "${VER_MAYOR}, ${VER_MINOR}, 0, 0"
|
||||
VIAddVersionKey "LegalCopyright" "${COPYRIGHT}"
|
||||
|
||||
; The name of the installer
|
||||
Name "${APP_NAME}"
|
||||
|
||||
; The file to write
|
||||
OutFile "DOSBox${VER_MAYOR}.${VER_MINOR}-win32-installer.exe"
|
||||
|
||||
; The default installation directory
|
||||
InstallDir "$PROGRAMFILES\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
|
||||
; The text to prompt the user to enter a directory
|
||||
DirText "This will install DOSBox v${VER_MAYOR}.${VER_MINOR} on your computer. Choose a directory"
|
||||
SetCompressor /solid lzma
|
||||
|
||||
|
||||
LicenseData COPYING
|
||||
LicenseText "DOSBox v${VER_MAYOR}.${VER_MINOR} License" "Next >"
|
||||
|
||||
; Else vista enables compatibility mode
|
||||
RequestExecutionLevel admin
|
||||
; Shortcuts in all users
|
||||
|
||||
ComponentText "Select components for DOSBox"
|
||||
; The stuff to install
|
||||
Section "!Core files" Core
|
||||
SetShellVarContext all
|
||||
|
||||
; Set output path to the installation directory.
|
||||
ClearErrors
|
||||
SetOutPath $INSTDIR
|
||||
IfErrors error_createdir
|
||||
SectionIn RO
|
||||
|
||||
; Put file there
|
||||
|
||||
CreateDirectory "$INSTDIR\zmbv"
|
||||
File /oname=README.txt README
|
||||
File /oname=COPYING.txt COPYING
|
||||
File /oname=THANKS.txt THANKS
|
||||
File /oname=NEWS.txt NEWS
|
||||
File /oname=AUTHORS.txt AUTHORS
|
||||
File /oname=INSTALL.txt INSTALL
|
||||
File DOSBox.exe
|
||||
File SDL.dll
|
||||
File SDL_net.dll
|
||||
File /oname=zmbv\zmbv.dll zmbv.dll
|
||||
File /oname=zmbv\zmbv.inf zmbv.inf
|
||||
File /oname=zmbv\README.txt README.video
|
||||
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video"
|
||||
CreateDirectory "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox.lnk" "$INSTDIR\DOSBox.exe" "" "$INSTDIR\DOSBox.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox (noconsole).lnk" "$INSTDIR\DOSBox.exe" "-noconsole" "$INSTDIR\DOSBox.exe" 0
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\README.lnk" "$INSTDIR\README.txt"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Edit Configuration.lnk" "$INSTDIR\DOSBox.exe" "-editconf notepad.exe -editconf $\"%SystemRoot%\system32\notepad.exe$\" -editconf $\"%WINDIR%\notepad.exe$\""
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Reset Configuration.lnk" "$INSTDIR\DOSBox.exe" "-eraseconf"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Capture folder.lnk" "$INSTDIR\DOSBox.exe" "-opencaptures explorer.exe"
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Video instructions.lnk" "$INSTDIR\zmbv\README.txt"
|
||||
;change outpath so the working directory gets set to zmbv
|
||||
SetOutPath "$INSTDIR\zmbv"
|
||||
; Shortcut creation depends on wether we are 9x of NT
|
||||
ClearErrors
|
||||
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
|
||||
IfErrors we_9x we_nt
|
||||
we_nt:
|
||||
;shortcut for win NT
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk" "rundll32" "setupapi,InstallHinfSection DefaultInstall 128 $INSTDIR\zmbv\zmbv.inf"
|
||||
goto end
|
||||
we_9x:
|
||||
;shortcut for we_9x
|
||||
CreateShortCut "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk" "rundll" "setupx.dll,InstallHinfSection DefaultInstall 128 $INSTDIR\zmbv\zmbv.inf"
|
||||
end:
|
||||
SetOutPath $INSTDIR
|
||||
WriteUninstaller "uninstall.exe"
|
||||
|
||||
goto end_section
|
||||
|
||||
error_createdir:
|
||||
MessageBox MB_OK "Can't create DOSBox program directory, aborting."
|
||||
Abort
|
||||
goto end_section
|
||||
|
||||
end_section:
|
||||
SectionEnd ; end the section
|
||||
|
||||
Section "Desktop Shortcut" SecDesktop
|
||||
SetShellVarContext all
|
||||
|
||||
CreateShortCut "$DESKTOP\DOSBox ${VER_MAYOR}.${VER_MINOR}.lnk" "$INSTDIR\DOSBox.exe" "" "$INSTDIR\DOSBox.exe" 0
|
||||
|
||||
SectionEnd ; end the section
|
||||
|
||||
|
||||
UninstallText "This will uninstall DOSBox v${VER_MAYOR}.${VER_MINOR}. Hit next to continue."
|
||||
|
||||
Section "Uninstall"
|
||||
|
||||
; Shortcuts in all users
|
||||
SetShellVarContext all
|
||||
|
||||
Delete "$DESKTOP\DOSBox ${VER_MAYOR}.${VER_MINOR}.lnk"
|
||||
; remove registry keys
|
||||
; remove files
|
||||
Delete $INSTDIR\README.txt
|
||||
Delete $INSTDIR\COPYING.txt
|
||||
Delete $INSTDIR\THANKS.txt
|
||||
Delete $INSTDIR\NEWS.txt
|
||||
Delete $INSTDIR\AUTHORS.txt
|
||||
Delete $INSTDIR\INSTALL.txt
|
||||
Delete $INSTDIR\DOSBox.exe
|
||||
Delete $INSTDIR\SDL.dll
|
||||
Delete $INSTDIR\SDL_net.dll
|
||||
Delete $INSTDIR\zmbv\zmbv.dll
|
||||
Delete $INSTDIR\zmbv\zmbv.inf
|
||||
Delete $INSTDIR\zmbv\README.txt
|
||||
;Files left by sdl taking over the console
|
||||
Delete $INSTDIR\stdout.txt
|
||||
Delete $INSTDIR\stderr.txt
|
||||
|
||||
; MUST REMOVE UNINSTALLER, too
|
||||
Delete $INSTDIR\uninstall.exe
|
||||
|
||||
; remove shortcuts, if any.
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Uninstall.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\README.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\DOSBox (noconsole).lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Edit Configuration.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration\Reset Configuration.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Capture folder.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Install movie codec.lnk"
|
||||
Delete "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video\Video instructions.lnk"
|
||||
; remove directories used.
|
||||
RMDir "$INSTDIR\zmbv"
|
||||
RMDir "$INSTDIR"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Configuration"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}\Video"
|
||||
RMDir "$SMPROGRAMS\DOSBox-${VER_MAYOR}.${VER_MINOR}"
|
||||
SectionEnd
|
||||
|
||||
; eof
|
||||
|
@ -1,32 +1,32 @@
|
||||
#!/usr/bin/perl
|
||||
use integer;
|
||||
open (THEFILE,'>','../src/hardware/ega-switch.h')
|
||||
or die "Can't open my file $!";
|
||||
|
||||
print THEFILE "switch (bit_mask) {\n";
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
print THEFILE "\tcase $i:\n";
|
||||
$b=128;
|
||||
$add=0;
|
||||
do {
|
||||
if ($i & $b) {
|
||||
print THEFILE "\t{\n";
|
||||
print THEFILE "\t\tBit8u color=0;\n";
|
||||
print THEFILE "\t\tif (pixels.b[0] & $b) color|=1;\n";
|
||||
print THEFILE "\t\tif (pixels.b[1] & $b) color|=2;\n";
|
||||
print THEFILE "\t\tif (pixels.b[2] & $b) color|=4;\n";
|
||||
print THEFILE "\t\tif (pixels.b[3] & $b) color|=8;\n";
|
||||
print THEFILE "\t\t*(write_pixels+$add)=color;\n";
|
||||
print THEFILE "\t\t*(write_pixels+$add+512*1024)=color;\n";
|
||||
print THEFILE "\t}\n";
|
||||
}
|
||||
|
||||
$b=$b >> 1;
|
||||
$add=$add+1;
|
||||
} until ($b == 0);
|
||||
print THEFILE "\tbreak;\n";
|
||||
}
|
||||
print THEFILE "}\n";
|
||||
|
||||
|
||||
close (THEFILE);
|
||||
#!/usr/bin/perl
|
||||
use integer;
|
||||
open (THEFILE,'>','../src/hardware/ega-switch.h')
|
||||
or die "Can't open my file $!";
|
||||
|
||||
print THEFILE "switch (bit_mask) {\n";
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
print THEFILE "\tcase $i:\n";
|
||||
$b=128;
|
||||
$add=0;
|
||||
do {
|
||||
if ($i & $b) {
|
||||
print THEFILE "\t{\n";
|
||||
print THEFILE "\t\tBit8u color=0;\n";
|
||||
print THEFILE "\t\tif (pixels.b[0] & $b) color|=1;\n";
|
||||
print THEFILE "\t\tif (pixels.b[1] & $b) color|=2;\n";
|
||||
print THEFILE "\t\tif (pixels.b[2] & $b) color|=4;\n";
|
||||
print THEFILE "\t\tif (pixels.b[3] & $b) color|=8;\n";
|
||||
print THEFILE "\t\t*(write_pixels+$add)=color;\n";
|
||||
print THEFILE "\t\t*(write_pixels+$add+512*1024)=color;\n";
|
||||
print THEFILE "\t}\n";
|
||||
}
|
||||
|
||||
$b=$b >> 1;
|
||||
$add=$add+1;
|
||||
} until ($b == 0);
|
||||
print THEFILE "\tbreak;\n";
|
||||
}
|
||||
print THEFILE "}\n";
|
||||
|
||||
|
||||
close (THEFILE);
|
||||
|
@ -1,25 +1,25 @@
|
||||
#!/usr/bin/perl
|
||||
use integer;
|
||||
open (THEFILE,'>','../src/hardware/font-switch.h')
|
||||
or die "Can't open my file $!";
|
||||
|
||||
print THEFILE "switch (bit_mask) {\n";
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
print THEFILE "\tcase $i:\n";
|
||||
$b=128;
|
||||
$add=0;
|
||||
do {
|
||||
if ($i & $b) {
|
||||
print THEFILE "\t\t*(draw+$add)=fg;\n";
|
||||
} else {
|
||||
print THEFILE "\t\t*(draw+$add)=bg;\n";
|
||||
}
|
||||
$b=$b >> 1;
|
||||
$add=$add+1;
|
||||
} until ($b == 0);
|
||||
print THEFILE "\tbreak;\n";
|
||||
}
|
||||
print THEFILE "}\n";
|
||||
|
||||
|
||||
close (THEFILE);
|
||||
#!/usr/bin/perl
|
||||
use integer;
|
||||
open (THEFILE,'>','../src/hardware/font-switch.h')
|
||||
or die "Can't open my file $!";
|
||||
|
||||
print THEFILE "switch (bit_mask) {\n";
|
||||
for ($i = 0; $i < 256; $i++) {
|
||||
print THEFILE "\tcase $i:\n";
|
||||
$b=128;
|
||||
$add=0;
|
||||
do {
|
||||
if ($i & $b) {
|
||||
print THEFILE "\t\t*(draw+$add)=fg;\n";
|
||||
} else {
|
||||
print THEFILE "\t\t*(draw+$add)=bg;\n";
|
||||
}
|
||||
$b=$b >> 1;
|
||||
$add=$add+1;
|
||||
} until ($b == 0);
|
||||
print THEFILE "\tbreak;\n";
|
||||
}
|
||||
print THEFILE "}\n";
|
||||
|
||||
|
||||
close (THEFILE);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,498 +1,498 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: dyn_fpu_dh.h,v 1.7 2009/09/23 20:55:19 c2woody Exp $ */
|
||||
|
||||
#include "dosbox.h"
|
||||
#if C_FPU
|
||||
|
||||
static void FPU_FLD_16(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = (Bit32u)mem_readw(addr);
|
||||
}
|
||||
|
||||
static void FPU_FST_16(PhysPt addr) {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.temp.m1);
|
||||
}
|
||||
|
||||
static void FPU_FLD_32(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
}
|
||||
|
||||
static void FPU_FST_32(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
}
|
||||
|
||||
static void FPU_FLD_64(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
}
|
||||
|
||||
static void FPU_FST_64(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
}
|
||||
|
||||
static void FPU_FLD_80(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+8);
|
||||
}
|
||||
|
||||
static void FPU_FST_80(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
mem_writew(addr+8,dyn_dh_fpu.temp.m3);
|
||||
}
|
||||
|
||||
static void FPU_FLDCW_DH(PhysPt addr){
|
||||
dyn_dh_fpu.cw = mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = (Bit32u)(dyn_dh_fpu.cw|0x3f);
|
||||
}
|
||||
|
||||
static void FPU_FNSTCW_DH(PhysPt addr){
|
||||
mem_writew(addr,(Bit16u)(dyn_dh_fpu.cw&0xffff));
|
||||
}
|
||||
|
||||
static void FPU_FNINIT_DH(void){
|
||||
dyn_dh_fpu.cw = 0x37f;
|
||||
}
|
||||
|
||||
static void FPU_FSTENV_DH(PhysPt addr){
|
||||
if(!cpu.code.big) {
|
||||
mem_writew(addr+0,(Bit16u)dyn_dh_fpu.cw);
|
||||
mem_writew(addr+2,(Bit16u)dyn_dh_fpu.temp.m2);
|
||||
mem_writew(addr+4,dyn_dh_fpu.temp.m3);
|
||||
} else {
|
||||
mem_writed(addr+0,dyn_dh_fpu.temp.m1);
|
||||
mem_writew(addr+0,(Bit16u)dyn_dh_fpu.cw);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
mem_writed(addr+8,dyn_dh_fpu.temp.m3);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FLDENV_DH(PhysPt addr){
|
||||
if(!cpu.code.big) {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = dyn_dh_fpu.cw|0x3f;
|
||||
dyn_dh_fpu.temp.m2 = (Bit32u)mem_readw(addr+2);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+4);
|
||||
} else {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr)|0x3f;
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+8);
|
||||
dyn_dh_fpu.temp.d1 = mem_readw(addr+10);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FSAVE_DH(PhysPt addr){
|
||||
if (!cpu.code.big) {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.cw);
|
||||
addr+=2;
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x04]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x05]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x08]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x09]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x0c]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x0d]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x10]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x11]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x14]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x15]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x18]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x19]);
|
||||
for(Bitu i=28;i<108;i++) mem_writeb(addr++,dyn_dh_fpu.temp_state[i]);
|
||||
} else {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.cw);
|
||||
addr+=2;
|
||||
for(Bitu i=2;i<108;i++) mem_writeb(addr++,dyn_dh_fpu.temp_state[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FRSTOR_DH(PhysPt addr){
|
||||
if (!cpu.code.big) {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp_state[0x00] = mem_readb(addr++)|0x3f;
|
||||
dyn_dh_fpu.temp_state[0x01] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x04] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x05] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x08] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x09] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x0c] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x0d] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x10] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x11] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x14] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x15] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x18] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x19] = mem_readb(addr++);
|
||||
for(Bitu i=28;i<108;i++) dyn_dh_fpu.temp_state[i] = mem_readb(addr++);
|
||||
} else {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
for(Bitu i=0;i<108;i++) dyn_dh_fpu.temp_state[i] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0]|=0x3f;
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc0(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xd8);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd8);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc1(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xd9);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FLD float*/
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* UNKNOWN */
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC EA 1:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FST float*/
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FSTP float*/
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FLDENV */
|
||||
gen_call_function((void*)&FPU_FLDENV_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x05: /* FLDCW */
|
||||
gen_call_function((void *)&FPU_FLDCW_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x06: /* FSTENV */
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FSTENV_DH,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x07: /* FNSTCW*/
|
||||
gen_call_function((void*)&FPU_FNSTCW_DH,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC EA 1:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc2(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xda);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xda);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc3(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
switch (group) {
|
||||
case 0x04:
|
||||
switch (sub) {
|
||||
case 0x00: //FNENI
|
||||
case 0x01: //FNDIS
|
||||
LOG(LOG_FPU,LOG_ERROR)("8087 only fpu code used esc 3: group 4: subfuntion :%d",sub);
|
||||
break;
|
||||
case 0x02: //FNCLEX FCLEX
|
||||
cache_addb(0xdb);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x03: //FNINIT FINIT
|
||||
gen_call_function((void*)&FPU_FNINIT_DH,"");
|
||||
cache_addb(0xdb);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x04: //FNSETPM
|
||||
case 0x05: //FRSTPM
|
||||
// LOG(LOG_FPU,LOG_ERROR)("80267 protected mode (un)set. Nothing done");
|
||||
break;
|
||||
default:
|
||||
E_Exit("ESC 3:ILLEGAL OPCODE group %d subfunction %d",group,sub);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FILD */
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* FISTTP */
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FIST */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FISTP */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x05: /* FLD 80 Bits Real */
|
||||
gen_call_function((void*)&FPU_FLD_80,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x07: /* FSTP 80 Bits Real */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_80,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc4(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xdc);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdc);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc5(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xdd);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
switch(group){
|
||||
case 0x00: /* FLD double real*/
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* FISTTP longint*/
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 5 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FST double real*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FSTP double real*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FRSTOR */
|
||||
gen_call_function((void*)&FPU_FRSTOR_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp_state[0])));
|
||||
break;
|
||||
case 0x06: /* FSAVE */
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp_state[0])));
|
||||
gen_call_function((void*)&FPU_FSAVE_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0xe3);
|
||||
break;
|
||||
case 0x07: /* FNSTSW */
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 5 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc6(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xde);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_16,"%Ddr",DREG(EA));
|
||||
cache_addb(0xde);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc7(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
switch (group){
|
||||
case 0x00: /* FFREEP STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x01: /* FXCH STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x02: /* FSTP STi*/
|
||||
case 0x03: /* FSTP STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x04:
|
||||
switch(sub){
|
||||
case 0x00: /* FNSTSW AX*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(0x07<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_load_host(&(dyn_dh_fpu.temp.m1),DREG(TMPB),4);
|
||||
gen_dop_word(DOP_MOV,false,DREG(EAX),DREG(TMPB));
|
||||
gen_releasereg(DREG(TMPB));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FILD Bit16s */
|
||||
gen_call_function((void*)&FPU_FLD_16,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FIST Bit16s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FISTP Bit16s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FBLD packed BCD */
|
||||
gen_call_function((void*)&FPU_FLD_80,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x05: /* FILD Bit64s */
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x06: /* FBSTP packed BCD */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_80,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x07: /* FISTP Bit64s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
/*
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: dyn_fpu_dh.h,v 1.7 2009-09-23 20:55:19 c2woody Exp $ */
|
||||
|
||||
#include "dosbox.h"
|
||||
#if C_FPU
|
||||
|
||||
static void FPU_FLD_16(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = (Bit32u)mem_readw(addr);
|
||||
}
|
||||
|
||||
static void FPU_FST_16(PhysPt addr) {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.temp.m1);
|
||||
}
|
||||
|
||||
static void FPU_FLD_32(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
}
|
||||
|
||||
static void FPU_FST_32(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
}
|
||||
|
||||
static void FPU_FLD_64(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
}
|
||||
|
||||
static void FPU_FST_64(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
}
|
||||
|
||||
static void FPU_FLD_80(PhysPt addr) {
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr);
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+8);
|
||||
}
|
||||
|
||||
static void FPU_FST_80(PhysPt addr) {
|
||||
mem_writed(addr,dyn_dh_fpu.temp.m1);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
mem_writew(addr+8,dyn_dh_fpu.temp.m3);
|
||||
}
|
||||
|
||||
static void FPU_FLDCW_DH(PhysPt addr){
|
||||
dyn_dh_fpu.cw = mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = (Bit32u)(dyn_dh_fpu.cw|0x3f);
|
||||
}
|
||||
|
||||
static void FPU_FNSTCW_DH(PhysPt addr){
|
||||
mem_writew(addr,(Bit16u)(dyn_dh_fpu.cw&0xffff));
|
||||
}
|
||||
|
||||
static void FPU_FNINIT_DH(void){
|
||||
dyn_dh_fpu.cw = 0x37f;
|
||||
}
|
||||
|
||||
static void FPU_FSTENV_DH(PhysPt addr){
|
||||
if(!cpu.code.big) {
|
||||
mem_writew(addr+0,(Bit16u)dyn_dh_fpu.cw);
|
||||
mem_writew(addr+2,(Bit16u)dyn_dh_fpu.temp.m2);
|
||||
mem_writew(addr+4,dyn_dh_fpu.temp.m3);
|
||||
} else {
|
||||
mem_writed(addr+0,dyn_dh_fpu.temp.m1);
|
||||
mem_writew(addr+0,(Bit16u)dyn_dh_fpu.cw);
|
||||
mem_writed(addr+4,dyn_dh_fpu.temp.m2);
|
||||
mem_writed(addr+8,dyn_dh_fpu.temp.m3);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FLDENV_DH(PhysPt addr){
|
||||
if(!cpu.code.big) {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = dyn_dh_fpu.cw|0x3f;
|
||||
dyn_dh_fpu.temp.m2 = (Bit32u)mem_readw(addr+2);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+4);
|
||||
} else {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp.m1 = mem_readd(addr)|0x3f;
|
||||
dyn_dh_fpu.temp.m2 = mem_readd(addr+4);
|
||||
dyn_dh_fpu.temp.m3 = mem_readw(addr+8);
|
||||
dyn_dh_fpu.temp.d1 = mem_readw(addr+10);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FSAVE_DH(PhysPt addr){
|
||||
if (!cpu.code.big) {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.cw);
|
||||
addr+=2;
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x04]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x05]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x08]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x09]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x0c]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x0d]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x10]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x11]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x14]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x15]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x18]);
|
||||
mem_writeb(addr++,dyn_dh_fpu.temp_state[0x19]);
|
||||
for(Bitu i=28;i<108;i++) mem_writeb(addr++,dyn_dh_fpu.temp_state[i]);
|
||||
} else {
|
||||
mem_writew(addr,(Bit16u)dyn_dh_fpu.cw);
|
||||
addr+=2;
|
||||
for(Bitu i=2;i<108;i++) mem_writeb(addr++,dyn_dh_fpu.temp_state[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void FPU_FRSTOR_DH(PhysPt addr){
|
||||
if (!cpu.code.big) {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
dyn_dh_fpu.temp_state[0x00] = mem_readb(addr++)|0x3f;
|
||||
dyn_dh_fpu.temp_state[0x01] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x04] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x05] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x08] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x09] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x0c] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x0d] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x10] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x11] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x14] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x15] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x18] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0x19] = mem_readb(addr++);
|
||||
for(Bitu i=28;i<108;i++) dyn_dh_fpu.temp_state[i] = mem_readb(addr++);
|
||||
} else {
|
||||
dyn_dh_fpu.cw = (Bit32u)mem_readw(addr);
|
||||
for(Bitu i=0;i<108;i++) dyn_dh_fpu.temp_state[i] = mem_readb(addr++);
|
||||
dyn_dh_fpu.temp_state[0]|=0x3f;
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc0(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xd8);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd8);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc1(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xd9);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FLD float*/
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* UNKNOWN */
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC EA 1:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FST float*/
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FSTP float*/
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FLDENV */
|
||||
gen_call_function((void*)&FPU_FLDENV_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x05: /* FLDCW */
|
||||
gen_call_function((void *)&FPU_FLDCW_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x06: /* FSTENV */
|
||||
cache_addb(0xd9);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FSTENV_DH,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x07: /* FNSTCW*/
|
||||
gen_call_function((void*)&FPU_FNSTCW_DH,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC EA 1:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc2(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xda);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xda);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc3(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
switch (group) {
|
||||
case 0x04:
|
||||
switch (sub) {
|
||||
case 0x00: //FNENI
|
||||
case 0x01: //FNDIS
|
||||
LOG(LOG_FPU,LOG_ERROR)("8087 only fpu code used esc 3: group 4: subfuntion :%d",sub);
|
||||
break;
|
||||
case 0x02: //FNCLEX FCLEX
|
||||
cache_addb(0xdb);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x03: //FNINIT FINIT
|
||||
gen_call_function((void*)&FPU_FNINIT_DH,"");
|
||||
cache_addb(0xdb);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x04: //FNSETPM
|
||||
case 0x05: //FRSTPM
|
||||
// LOG(LOG_FPU,LOG_ERROR)("80267 protected mode (un)set. Nothing done");
|
||||
break;
|
||||
default:
|
||||
E_Exit("ESC 3:ILLEGAL OPCODE group %d subfunction %d",group,sub);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FILD */
|
||||
gen_call_function((void*)&FPU_FLD_32,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* FISTTP */
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FIST */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FISTP */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_32,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x05: /* FLD 80 Bits Real */
|
||||
gen_call_function((void*)&FPU_FLD_80,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x07: /* FSTP 80 Bits Real */
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_80,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 3 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc4(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xdc);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdc);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc5(){
|
||||
dyn_get_modrm();
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xdd);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
switch(group){
|
||||
case 0x00: /* FLD double real*/
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01: /* FISTTP longint*/
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 5 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FST double real*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FSTP double real*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FRSTOR */
|
||||
gen_call_function((void*)&FPU_FRSTOR_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp_state[0])));
|
||||
break;
|
||||
case 0x06: /* FSAVE */
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp_state[0])));
|
||||
gen_call_function((void*)&FPU_FSAVE_DH,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdb);
|
||||
cache_addb(0xe3);
|
||||
break;
|
||||
case 0x07: /* FNSTSW */
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 5 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc6(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
cache_addb(0xde);
|
||||
cache_addb(decode.modrm.val);
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
gen_call_function((void*)&FPU_FLD_16,"%Ddr",DREG(EA));
|
||||
cache_addb(0xde);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
}
|
||||
}
|
||||
|
||||
static void dh_fpu_esc7(){
|
||||
dyn_get_modrm();
|
||||
Bitu group=(decode.modrm.val >> 3) & 7;
|
||||
Bitu sub=(decode.modrm.val & 7);
|
||||
if (decode.modrm.val >= 0xc0) {
|
||||
switch (group){
|
||||
case 0x00: /* FFREEP STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x01: /* FXCH STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x02: /* FSTP STi*/
|
||||
case 0x03: /* FSTP STi*/
|
||||
cache_addb(0xdf);
|
||||
cache_addb(decode.modrm.val);
|
||||
break;
|
||||
case 0x04:
|
||||
switch(sub){
|
||||
case 0x00: /* FNSTSW AX*/
|
||||
cache_addb(0xdd);
|
||||
cache_addb(0x05|(0x07<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_load_host(&(dyn_dh_fpu.temp.m1),DREG(TMPB),4);
|
||||
gen_dop_word(DOP_MOV,false,DREG(EAX),DREG(TMPB));
|
||||
gen_releasereg(DREG(TMPB));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
dyn_fill_ea();
|
||||
switch(group){
|
||||
case 0x00: /* FILD Bit16s */
|
||||
gen_call_function((void*)&FPU_FLD_16,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x01:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
case 0x02: /* FIST Bit16s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x03: /* FISTP Bit16s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_16,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x04: /* FBLD packed BCD */
|
||||
gen_call_function((void*)&FPU_FLD_80,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x05: /* FILD Bit64s */
|
||||
gen_call_function((void*)&FPU_FLD_64,"%Ddr",DREG(EA));
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
break;
|
||||
case 0x06: /* FBSTP packed BCD */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_80,"%Ddr",DREG(EA));
|
||||
break;
|
||||
case 0x07: /* FISTP Bit64s */
|
||||
cache_addb(0xdf);
|
||||
cache_addb(0x05|(decode.modrm.reg<<3));
|
||||
cache_addd((Bit32u)(&(dyn_dh_fpu.temp.m1)));
|
||||
gen_call_function((void*)&FPU_FST_64,"%Ddr",DREG(EA));
|
||||
break;
|
||||
default:
|
||||
LOG(LOG_FPU,LOG_WARN)("ESC 7 EA:Unhandled group %d subfunction %d",group,sub);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@ -1,69 +1,69 @@
|
||||
static bool dyn_helper_divb(Bit8u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bitu quo=reg_ax / val;
|
||||
Bit8u rem=(Bit8u)(reg_ax % val);
|
||||
Bit8u quo8=(Bit8u)(quo&0xff);
|
||||
if (quo>0xff) return CPU_PrepareException(0,0);
|
||||
reg_ah=rem;
|
||||
reg_al=quo8;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivb(Bit8s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bits quo=(Bit16s)reg_ax / val;
|
||||
Bit8s rem=(Bit8s)((Bit16s)reg_ax % val);
|
||||
Bit8s quo8s=(Bit8s)(quo&0xff);
|
||||
if (quo!=(Bit16s)quo8s) return CPU_PrepareException(0,0);
|
||||
reg_ah=rem;
|
||||
reg_al=quo8s;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_divw(Bit16u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bitu num=(reg_dx<<16)|reg_ax;
|
||||
Bitu quo=num/val;
|
||||
Bit16u rem=(Bit16u)(num % val);
|
||||
Bit16u quo16=(Bit16u)(quo&0xffff);
|
||||
if (quo!=(Bit32u)quo16) return CPU_PrepareException(0,0);
|
||||
reg_dx=rem;
|
||||
reg_ax=quo16;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivw(Bit16s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bits num=(reg_dx<<16)|reg_ax;
|
||||
Bits quo=num/val;
|
||||
Bit16s rem=(Bit16s)(num % val);
|
||||
Bit16s quo16s=(Bit16s)quo;
|
||||
if (quo!=(Bit32s)quo16s) return CPU_PrepareException(0,0);
|
||||
reg_dx=rem;
|
||||
reg_ax=quo16s;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_divd(Bit32u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bit64u num=(((Bit64u)reg_edx)<<32)|reg_eax;
|
||||
Bit64u quo=num/val;
|
||||
Bit32u rem=(Bit32u)(num % val);
|
||||
Bit32u quo32=(Bit32u)(quo&0xffffffff);
|
||||
if (quo!=(Bit64u)quo32) return CPU_PrepareException(0,0);
|
||||
reg_edx=rem;
|
||||
reg_eax=quo32;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivd(Bit32s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bit64s num=(((Bit64u)reg_edx)<<32)|reg_eax;
|
||||
Bit64s quo=num/val;
|
||||
Bit32s rem=(Bit32s)(num % val);
|
||||
Bit32s quo32s=(Bit32s)(quo&0xffffffff);
|
||||
if (quo!=(Bit64s)quo32s) return CPU_PrepareException(0,0);
|
||||
reg_edx=rem;
|
||||
reg_eax=quo32s;
|
||||
return false;
|
||||
}
|
||||
static bool dyn_helper_divb(Bit8u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bitu quo=reg_ax / val;
|
||||
Bit8u rem=(Bit8u)(reg_ax % val);
|
||||
Bit8u quo8=(Bit8u)(quo&0xff);
|
||||
if (quo>0xff) return CPU_PrepareException(0,0);
|
||||
reg_ah=rem;
|
||||
reg_al=quo8;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivb(Bit8s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bits quo=(Bit16s)reg_ax / val;
|
||||
Bit8s rem=(Bit8s)((Bit16s)reg_ax % val);
|
||||
Bit8s quo8s=(Bit8s)(quo&0xff);
|
||||
if (quo!=(Bit16s)quo8s) return CPU_PrepareException(0,0);
|
||||
reg_ah=rem;
|
||||
reg_al=quo8s;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_divw(Bit16u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bitu num=(reg_dx<<16)|reg_ax;
|
||||
Bitu quo=num/val;
|
||||
Bit16u rem=(Bit16u)(num % val);
|
||||
Bit16u quo16=(Bit16u)(quo&0xffff);
|
||||
if (quo!=(Bit32u)quo16) return CPU_PrepareException(0,0);
|
||||
reg_dx=rem;
|
||||
reg_ax=quo16;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivw(Bit16s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bits num=(reg_dx<<16)|reg_ax;
|
||||
Bits quo=num/val;
|
||||
Bit16s rem=(Bit16s)(num % val);
|
||||
Bit16s quo16s=(Bit16s)quo;
|
||||
if (quo!=(Bit32s)quo16s) return CPU_PrepareException(0,0);
|
||||
reg_dx=rem;
|
||||
reg_ax=quo16s;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_divd(Bit32u val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bit64u num=(((Bit64u)reg_edx)<<32)|reg_eax;
|
||||
Bit64u quo=num/val;
|
||||
Bit32u rem=(Bit32u)(num % val);
|
||||
Bit32u quo32=(Bit32u)(quo&0xffffffff);
|
||||
if (quo!=(Bit64u)quo32) return CPU_PrepareException(0,0);
|
||||
reg_edx=rem;
|
||||
reg_eax=quo32;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool dyn_helper_idivd(Bit32s val) {
|
||||
if (!val) return CPU_PrepareException(0,0);
|
||||
Bit64s num=(((Bit64u)reg_edx)<<32)|reg_eax;
|
||||
Bit64s quo=num/val;
|
||||
Bit32s rem=(Bit32s)(num % val);
|
||||
Bit32s quo32s=(Bit32s)(quo&0xffffffff);
|
||||
if (quo!=(Bit64s)quo32s) return CPU_PrepareException(0,0);
|
||||
reg_edx=rem;
|
||||
reg_eax=quo32s;
|
||||
return false;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,164 +1,164 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
enum STRING_OP {
|
||||
STR_OUTSB=0,STR_OUTSW,STR_OUTSD,
|
||||
STR_INSB=4,STR_INSW,STR_INSD,
|
||||
STR_MOVSB=8,STR_MOVSW,STR_MOVSD,
|
||||
STR_LODSB=12,STR_LODSW,STR_LODSD,
|
||||
STR_STOSB=16,STR_STOSW,STR_STOSD,
|
||||
STR_SCASB=20,STR_SCASW,STR_SCASD,
|
||||
STR_CMPSB=24,STR_CMPSW,STR_CMPSD
|
||||
};
|
||||
|
||||
static void dyn_string(STRING_OP op) {
|
||||
DynReg * si_base=decode.segprefix ? decode.segprefix : DREG(DS);
|
||||
DynReg * di_base=DREG(ES);
|
||||
DynReg * tmp_reg;bool usesi;bool usedi;
|
||||
gen_protectflags();
|
||||
if (decode.rep) {
|
||||
gen_dop_word_imm(DOP_SUB,true,DREG(CYCLES),decode.cycles);
|
||||
gen_releasereg(DREG(CYCLES));
|
||||
decode.cycles=0;
|
||||
}
|
||||
/* Check what each string operation will be using */
|
||||
switch (op) {
|
||||
case STR_MOVSB: case STR_MOVSW: case STR_MOVSD:
|
||||
case STR_CMPSB: case STR_CMPSW: case STR_CMPSD:
|
||||
tmp_reg=DREG(TMPB);usesi=true;usedi=true;break;
|
||||
case STR_LODSB: case STR_LODSW: case STR_LODSD:
|
||||
tmp_reg=DREG(EAX);usesi=true;usedi=false;break;
|
||||
case STR_OUTSB: case STR_OUTSW: case STR_OUTSD:
|
||||
tmp_reg=DREG(TMPB);usesi=true;usedi=false;break;
|
||||
case STR_SCASB: case STR_SCASW: case STR_SCASD:
|
||||
case STR_STOSB: case STR_STOSW: case STR_STOSD:
|
||||
tmp_reg=DREG(EAX);usesi=false;usedi=true;break;
|
||||
case STR_INSB: case STR_INSW: case STR_INSD:
|
||||
tmp_reg=DREG(TMPB);usesi=false;usedi=true;break;
|
||||
default:
|
||||
IllegalOption("dyn_string op");
|
||||
}
|
||||
gen_load_host(&cpu.direction,DREG(TMPW),4);
|
||||
switch (op & 3) {
|
||||
case 0:break;
|
||||
case 1:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),1);break;
|
||||
case 2:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),2);break;
|
||||
default:
|
||||
IllegalOption("dyn_string shift");
|
||||
|
||||
}
|
||||
if (usesi) {
|
||||
gen_preloadreg(DREG(ESI));
|
||||
DynRegs[G_ESI].flags|=DYNFLG_CHANGED;
|
||||
gen_preloadreg(si_base);
|
||||
}
|
||||
if (usedi) {
|
||||
gen_preloadreg(DREG(EDI));
|
||||
DynRegs[G_EDI].flags|=DYNFLG_CHANGED;
|
||||
gen_preloadreg(di_base);
|
||||
}
|
||||
if (decode.rep) {
|
||||
gen_preloadreg(DREG(ECX));
|
||||
DynRegs[G_ECX].flags|=DYNFLG_CHANGED;
|
||||
}
|
||||
DynState rep_state;
|
||||
dyn_savestate(&rep_state);
|
||||
Bit8u * rep_start=cache.pos;
|
||||
Bit8u * rep_ecx_jmp;
|
||||
/* Check if ECX!=zero */
|
||||
if (decode.rep) {
|
||||
gen_dop_word(DOP_OR,decode.big_addr,DREG(ECX),DREG(ECX));
|
||||
rep_ecx_jmp=gen_create_branch_long(BR_Z);
|
||||
}
|
||||
if (usesi) {
|
||||
if (!decode.big_addr) {
|
||||
gen_extend_word(false,DREG(EA),DREG(ESI));
|
||||
gen_lea(DREG(EA),si_base,DREG(EA),0,0);
|
||||
} else {
|
||||
gen_lea(DREG(EA),si_base,DREG(ESI),0,0);
|
||||
}
|
||||
switch (op&3) {
|
||||
case 0:dyn_read_byte(DREG(EA),tmp_reg,false);break;
|
||||
case 1:dyn_read_word(DREG(EA),tmp_reg,false);break;
|
||||
case 2:dyn_read_word(DREG(EA),tmp_reg,true);break;
|
||||
}
|
||||
switch (op) {
|
||||
case STR_OUTSB:
|
||||
gen_call_function((void*)&IO_WriteB,"%Id%Dl",DREG(EDX),tmp_reg);break;
|
||||
case STR_OUTSW:
|
||||
gen_call_function((void*)&IO_WriteW,"%Id%Dw",DREG(EDX),tmp_reg);break;
|
||||
case STR_OUTSD:
|
||||
gen_call_function((void*)&IO_WriteD,"%Id%Dd",DREG(EDX),tmp_reg);break;
|
||||
}
|
||||
}
|
||||
if (usedi) {
|
||||
if (!decode.big_addr) {
|
||||
gen_extend_word(false,DREG(EA),DREG(EDI));
|
||||
gen_lea(DREG(EA),di_base,DREG(EA),0,0);
|
||||
} else {
|
||||
gen_lea(DREG(EA),di_base,DREG(EDI),0,0);
|
||||
}
|
||||
/* Maybe something special to be done to fill the value */
|
||||
switch (op) {
|
||||
case STR_INSB:
|
||||
gen_call_function((void*)&IO_ReadB,"%Dw%Rl",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSB:
|
||||
case STR_STOSB:
|
||||
dyn_write_byte(DREG(EA),tmp_reg,false);
|
||||
break;
|
||||
case STR_INSW:
|
||||
gen_call_function((void*)&IO_ReadW,"%Dw%Rw",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSW:
|
||||
case STR_STOSW:
|
||||
dyn_write_word(DREG(EA),tmp_reg,false);
|
||||
break;
|
||||
case STR_INSD:
|
||||
gen_call_function((void*)&IO_ReadD,"%Dw%Rd",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSD:
|
||||
case STR_STOSD:
|
||||
dyn_write_word(DREG(EA),tmp_reg,true);
|
||||
break;
|
||||
default:
|
||||
IllegalOption("dyn_string op");
|
||||
}
|
||||
}
|
||||
gen_releasereg(DREG(EA));gen_releasereg(DREG(TMPB));
|
||||
|
||||
/* update registers */
|
||||
if (usesi) gen_dop_word(DOP_ADD,decode.big_addr,DREG(ESI),DREG(TMPW));
|
||||
if (usedi) gen_dop_word(DOP_ADD,decode.big_addr,DREG(EDI),DREG(TMPW));
|
||||
|
||||
if (decode.rep) {
|
||||
gen_sop_word(SOP_DEC,decode.big_addr,DREG(ECX));
|
||||
gen_sop_word(SOP_DEC,true,DREG(CYCLES));
|
||||
gen_releasereg(DREG(CYCLES));
|
||||
dyn_savestate(&save_info[used_save_info].state);
|
||||
save_info[used_save_info].branch_pos=gen_create_branch_long(BR_LE);
|
||||
save_info[used_save_info].eip_change=decode.op_start-decode.code_start;
|
||||
save_info[used_save_info].type=normal;
|
||||
used_save_info++;
|
||||
|
||||
/* Jump back to start of ECX check */
|
||||
dyn_synchstate(&rep_state);
|
||||
gen_create_jump(rep_start);
|
||||
|
||||
dyn_loadstate(&rep_state);
|
||||
gen_fill_branch_long(rep_ecx_jmp);
|
||||
}
|
||||
gen_releasereg(DREG(TMPW));
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
enum STRING_OP {
|
||||
STR_OUTSB=0,STR_OUTSW,STR_OUTSD,
|
||||
STR_INSB=4,STR_INSW,STR_INSD,
|
||||
STR_MOVSB=8,STR_MOVSW,STR_MOVSD,
|
||||
STR_LODSB=12,STR_LODSW,STR_LODSD,
|
||||
STR_STOSB=16,STR_STOSW,STR_STOSD,
|
||||
STR_SCASB=20,STR_SCASW,STR_SCASD,
|
||||
STR_CMPSB=24,STR_CMPSW,STR_CMPSD
|
||||
};
|
||||
|
||||
static void dyn_string(STRING_OP op) {
|
||||
DynReg * si_base=decode.segprefix ? decode.segprefix : DREG(DS);
|
||||
DynReg * di_base=DREG(ES);
|
||||
DynReg * tmp_reg;bool usesi;bool usedi;
|
||||
gen_protectflags();
|
||||
if (decode.rep) {
|
||||
gen_dop_word_imm(DOP_SUB,true,DREG(CYCLES),decode.cycles);
|
||||
gen_releasereg(DREG(CYCLES));
|
||||
decode.cycles=0;
|
||||
}
|
||||
/* Check what each string operation will be using */
|
||||
switch (op) {
|
||||
case STR_MOVSB: case STR_MOVSW: case STR_MOVSD:
|
||||
case STR_CMPSB: case STR_CMPSW: case STR_CMPSD:
|
||||
tmp_reg=DREG(TMPB);usesi=true;usedi=true;break;
|
||||
case STR_LODSB: case STR_LODSW: case STR_LODSD:
|
||||
tmp_reg=DREG(EAX);usesi=true;usedi=false;break;
|
||||
case STR_OUTSB: case STR_OUTSW: case STR_OUTSD:
|
||||
tmp_reg=DREG(TMPB);usesi=true;usedi=false;break;
|
||||
case STR_SCASB: case STR_SCASW: case STR_SCASD:
|
||||
case STR_STOSB: case STR_STOSW: case STR_STOSD:
|
||||
tmp_reg=DREG(EAX);usesi=false;usedi=true;break;
|
||||
case STR_INSB: case STR_INSW: case STR_INSD:
|
||||
tmp_reg=DREG(TMPB);usesi=false;usedi=true;break;
|
||||
default:
|
||||
IllegalOption("dyn_string op");
|
||||
}
|
||||
gen_load_host(&cpu.direction,DREG(TMPW),4);
|
||||
switch (op & 3) {
|
||||
case 0:break;
|
||||
case 1:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),1);break;
|
||||
case 2:gen_shift_word_imm(SHIFT_SHL,true,DREG(TMPW),2);break;
|
||||
default:
|
||||
IllegalOption("dyn_string shift");
|
||||
|
||||
}
|
||||
if (usesi) {
|
||||
gen_preloadreg(DREG(ESI));
|
||||
DynRegs[G_ESI].flags|=DYNFLG_CHANGED;
|
||||
gen_preloadreg(si_base);
|
||||
}
|
||||
if (usedi) {
|
||||
gen_preloadreg(DREG(EDI));
|
||||
DynRegs[G_EDI].flags|=DYNFLG_CHANGED;
|
||||
gen_preloadreg(di_base);
|
||||
}
|
||||
if (decode.rep) {
|
||||
gen_preloadreg(DREG(ECX));
|
||||
DynRegs[G_ECX].flags|=DYNFLG_CHANGED;
|
||||
}
|
||||
DynState rep_state;
|
||||
dyn_savestate(&rep_state);
|
||||
Bit8u * rep_start=cache.pos;
|
||||
Bit8u * rep_ecx_jmp;
|
||||
/* Check if ECX!=zero */
|
||||
if (decode.rep) {
|
||||
gen_dop_word(DOP_OR,decode.big_addr,DREG(ECX),DREG(ECX));
|
||||
rep_ecx_jmp=gen_create_branch_long(BR_Z);
|
||||
}
|
||||
if (usesi) {
|
||||
if (!decode.big_addr) {
|
||||
gen_extend_word(false,DREG(EA),DREG(ESI));
|
||||
gen_lea(DREG(EA),si_base,DREG(EA),0,0);
|
||||
} else {
|
||||
gen_lea(DREG(EA),si_base,DREG(ESI),0,0);
|
||||
}
|
||||
switch (op&3) {
|
||||
case 0:dyn_read_byte(DREG(EA),tmp_reg,false);break;
|
||||
case 1:dyn_read_word(DREG(EA),tmp_reg,false);break;
|
||||
case 2:dyn_read_word(DREG(EA),tmp_reg,true);break;
|
||||
}
|
||||
switch (op) {
|
||||
case STR_OUTSB:
|
||||
gen_call_function((void*)&IO_WriteB,"%Id%Dl",DREG(EDX),tmp_reg);break;
|
||||
case STR_OUTSW:
|
||||
gen_call_function((void*)&IO_WriteW,"%Id%Dw",DREG(EDX),tmp_reg);break;
|
||||
case STR_OUTSD:
|
||||
gen_call_function((void*)&IO_WriteD,"%Id%Dd",DREG(EDX),tmp_reg);break;
|
||||
}
|
||||
}
|
||||
if (usedi) {
|
||||
if (!decode.big_addr) {
|
||||
gen_extend_word(false,DREG(EA),DREG(EDI));
|
||||
gen_lea(DREG(EA),di_base,DREG(EA),0,0);
|
||||
} else {
|
||||
gen_lea(DREG(EA),di_base,DREG(EDI),0,0);
|
||||
}
|
||||
/* Maybe something special to be done to fill the value */
|
||||
switch (op) {
|
||||
case STR_INSB:
|
||||
gen_call_function((void*)&IO_ReadB,"%Dw%Rl",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSB:
|
||||
case STR_STOSB:
|
||||
dyn_write_byte(DREG(EA),tmp_reg,false);
|
||||
break;
|
||||
case STR_INSW:
|
||||
gen_call_function((void*)&IO_ReadW,"%Dw%Rw",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSW:
|
||||
case STR_STOSW:
|
||||
dyn_write_word(DREG(EA),tmp_reg,false);
|
||||
break;
|
||||
case STR_INSD:
|
||||
gen_call_function((void*)&IO_ReadD,"%Dw%Rd",DREG(EDX),tmp_reg);
|
||||
case STR_MOVSD:
|
||||
case STR_STOSD:
|
||||
dyn_write_word(DREG(EA),tmp_reg,true);
|
||||
break;
|
||||
default:
|
||||
IllegalOption("dyn_string op");
|
||||
}
|
||||
}
|
||||
gen_releasereg(DREG(EA));gen_releasereg(DREG(TMPB));
|
||||
|
||||
/* update registers */
|
||||
if (usesi) gen_dop_word(DOP_ADD,decode.big_addr,DREG(ESI),DREG(TMPW));
|
||||
if (usedi) gen_dop_word(DOP_ADD,decode.big_addr,DREG(EDI),DREG(TMPW));
|
||||
|
||||
if (decode.rep) {
|
||||
gen_sop_word(SOP_DEC,decode.big_addr,DREG(ECX));
|
||||
gen_sop_word(SOP_DEC,true,DREG(CYCLES));
|
||||
gen_releasereg(DREG(CYCLES));
|
||||
dyn_savestate(&save_info[used_save_info].state);
|
||||
save_info[used_save_info].branch_pos=gen_create_branch_long(BR_LE);
|
||||
save_info[used_save_info].eip_change=decode.op_start-decode.code_start;
|
||||
save_info[used_save_info].type=normal;
|
||||
used_save_info++;
|
||||
|
||||
/* Jump back to start of ECX check */
|
||||
dyn_synchstate(&rep_state);
|
||||
gen_create_jump(rep_start);
|
||||
|
||||
dyn_loadstate(&rep_state);
|
||||
gen_fill_branch_long(rep_ecx_jmp);
|
||||
}
|
||||
gen_releasereg(DREG(TMPW));
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,114 +1,114 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: risc_armv4le-common.h,v 1.3 2009/05/16 21:52:47 c2woody Exp $ */
|
||||
|
||||
|
||||
/* ARMv4 (little endian) backend by M-HT (common data/functions) */
|
||||
|
||||
|
||||
// some configuring defines that specify the capabilities of this architecture
|
||||
// or aspects of the recompiling
|
||||
|
||||
// protect FC_ADDR over function calls if necessaray
|
||||
// #define DRC_PROTECT_ADDR_REG
|
||||
|
||||
// try to use non-flags generating functions if possible
|
||||
#define DRC_FLAGS_INVALIDATION
|
||||
// try to replace _simple functions by code
|
||||
#define DRC_FLAGS_INVALIDATION_DCODE
|
||||
|
||||
// type with the same size as a pointer
|
||||
#define DRC_PTR_SIZE_IM Bit32u
|
||||
|
||||
// calling convention modifier
|
||||
#define DRC_CALL_CONV /* nothing */
|
||||
#define DRC_FC /* nothing */
|
||||
|
||||
// use FC_REGS_ADDR to hold the address of "cpu_regs" and to access it using FC_REGS_ADDR
|
||||
#define DRC_USE_REGS_ADDR
|
||||
// use FC_SEGS_ADDR to hold the address of "Segs" and to access it using FC_SEGS_ADDR
|
||||
#define DRC_USE_SEGS_ADDR
|
||||
|
||||
// register mapping
|
||||
typedef Bit8u HostReg;
|
||||
|
||||
// "lo" registers
|
||||
#define HOST_r0 0
|
||||
#define HOST_r1 1
|
||||
#define HOST_r2 2
|
||||
#define HOST_r3 3
|
||||
#define HOST_r4 4
|
||||
#define HOST_r5 5
|
||||
#define HOST_r6 6
|
||||
#define HOST_r7 7
|
||||
// "hi" registers
|
||||
#define HOST_r8 8
|
||||
#define HOST_r9 9
|
||||
#define HOST_r10 10
|
||||
#define HOST_r11 11
|
||||
#define HOST_r12 12
|
||||
#define HOST_r13 13
|
||||
#define HOST_r14 14
|
||||
#define HOST_r15 15
|
||||
|
||||
// register aliases
|
||||
// "lo" registers
|
||||
#define HOST_a1 HOST_r0
|
||||
#define HOST_a2 HOST_r1
|
||||
#define HOST_a3 HOST_r2
|
||||
#define HOST_a4 HOST_r3
|
||||
#define HOST_v1 HOST_r4
|
||||
#define HOST_v2 HOST_r5
|
||||
#define HOST_v3 HOST_r6
|
||||
#define HOST_v4 HOST_r7
|
||||
// "hi" registers
|
||||
#define HOST_v5 HOST_r8
|
||||
#define HOST_v6 HOST_r9
|
||||
#define HOST_v7 HOST_r10
|
||||
#define HOST_v8 HOST_r11
|
||||
#define HOST_ip HOST_r12
|
||||
#define HOST_sp HOST_r13
|
||||
#define HOST_lr HOST_r14
|
||||
#define HOST_pc HOST_r15
|
||||
|
||||
|
||||
static void cache_block_closing(Bit8u* block_start,Bitu block_size) {
|
||||
#if (__ARM_EABI__)
|
||||
//flush cache - eabi
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long)(block_start); // block start
|
||||
register unsigned long _end __asm ("a2") = (unsigned long)(block_start+block_size); // block end
|
||||
register unsigned long _flg __asm ("a3") = 0;
|
||||
register unsigned long _par __asm ("r7") = 0xf0002; // sys_cacheflush
|
||||
__asm __volatile ("swi 0x0"
|
||||
: // no outputs
|
||||
: "r" (_beg), "r" (_end), "r" (_flg), "r" (_par)
|
||||
);
|
||||
#else
|
||||
// GP2X BEGIN
|
||||
//flush cache - old abi
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long)(block_start); // block start
|
||||
register unsigned long _end __asm ("a2") = (unsigned long)(block_start+block_size); // block end
|
||||
register unsigned long _flg __asm ("a3") = 0;
|
||||
__asm __volatile ("swi 0x9f0002 @ sys_cacheflush"
|
||||
: // no outputs
|
||||
: "r" (_beg), "r" (_end), "r" (_flg)
|
||||
);
|
||||
// GP2X END
|
||||
#endif
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: risc_armv4le-common.h,v 1.3 2009-05-16 21:52:47 c2woody Exp $ */
|
||||
|
||||
|
||||
/* ARMv4 (little endian) backend by M-HT (common data/functions) */
|
||||
|
||||
|
||||
// some configuring defines that specify the capabilities of this architecture
|
||||
// or aspects of the recompiling
|
||||
|
||||
// protect FC_ADDR over function calls if necessaray
|
||||
// #define DRC_PROTECT_ADDR_REG
|
||||
|
||||
// try to use non-flags generating functions if possible
|
||||
#define DRC_FLAGS_INVALIDATION
|
||||
// try to replace _simple functions by code
|
||||
#define DRC_FLAGS_INVALIDATION_DCODE
|
||||
|
||||
// type with the same size as a pointer
|
||||
#define DRC_PTR_SIZE_IM Bit32u
|
||||
|
||||
// calling convention modifier
|
||||
#define DRC_CALL_CONV /* nothing */
|
||||
#define DRC_FC /* nothing */
|
||||
|
||||
// use FC_REGS_ADDR to hold the address of "cpu_regs" and to access it using FC_REGS_ADDR
|
||||
#define DRC_USE_REGS_ADDR
|
||||
// use FC_SEGS_ADDR to hold the address of "Segs" and to access it using FC_SEGS_ADDR
|
||||
#define DRC_USE_SEGS_ADDR
|
||||
|
||||
// register mapping
|
||||
typedef Bit8u HostReg;
|
||||
|
||||
// "lo" registers
|
||||
#define HOST_r0 0
|
||||
#define HOST_r1 1
|
||||
#define HOST_r2 2
|
||||
#define HOST_r3 3
|
||||
#define HOST_r4 4
|
||||
#define HOST_r5 5
|
||||
#define HOST_r6 6
|
||||
#define HOST_r7 7
|
||||
// "hi" registers
|
||||
#define HOST_r8 8
|
||||
#define HOST_r9 9
|
||||
#define HOST_r10 10
|
||||
#define HOST_r11 11
|
||||
#define HOST_r12 12
|
||||
#define HOST_r13 13
|
||||
#define HOST_r14 14
|
||||
#define HOST_r15 15
|
||||
|
||||
// register aliases
|
||||
// "lo" registers
|
||||
#define HOST_a1 HOST_r0
|
||||
#define HOST_a2 HOST_r1
|
||||
#define HOST_a3 HOST_r2
|
||||
#define HOST_a4 HOST_r3
|
||||
#define HOST_v1 HOST_r4
|
||||
#define HOST_v2 HOST_r5
|
||||
#define HOST_v3 HOST_r6
|
||||
#define HOST_v4 HOST_r7
|
||||
// "hi" registers
|
||||
#define HOST_v5 HOST_r8
|
||||
#define HOST_v6 HOST_r9
|
||||
#define HOST_v7 HOST_r10
|
||||
#define HOST_v8 HOST_r11
|
||||
#define HOST_ip HOST_r12
|
||||
#define HOST_sp HOST_r13
|
||||
#define HOST_lr HOST_r14
|
||||
#define HOST_pc HOST_r15
|
||||
|
||||
|
||||
static void cache_block_closing(Bit8u* block_start,Bitu block_size) {
|
||||
#if (__ARM_EABI__)
|
||||
//flush cache - eabi
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long)(block_start); // block start
|
||||
register unsigned long _end __asm ("a2") = (unsigned long)(block_start+block_size); // block end
|
||||
register unsigned long _flg __asm ("a3") = 0;
|
||||
register unsigned long _par __asm ("r7") = 0xf0002; // sys_cacheflush
|
||||
__asm __volatile ("swi 0x0"
|
||||
: // no outputs
|
||||
: "r" (_beg), "r" (_end), "r" (_flg), "r" (_par)
|
||||
);
|
||||
#else
|
||||
// GP2X BEGIN
|
||||
//flush cache - old abi
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long)(block_start); // block start
|
||||
register unsigned long _end __asm ("a2") = (unsigned long)(block_start+block_size); // block end
|
||||
register unsigned long _flg __asm ("a3") = 0;
|
||||
__asm __volatile ("swi 0x9f0002 @ sys_cacheflush"
|
||||
: // no outputs
|
||||
: "r" (_beg), "r" (_end), "r" (_flg)
|
||||
);
|
||||
// GP2X END
|
||||
#endif
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,31 +1,31 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: risc_armv4le.h,v 1.3 2009/05/27 09:15:41 qbix79 Exp $ */
|
||||
|
||||
|
||||
/* ARMv4 (little endian) backend (switcher) by M-HT */
|
||||
|
||||
#include "risc_armv4le-common.h"
|
||||
|
||||
// choose your destiny:
|
||||
#include "risc_armv4le-thumb-niw.h"
|
||||
//#include "risc_armv4le-thumb-iw.h"
|
||||
//#include "risc_armv4le-thumb.h"
|
||||
//#include "risc_armv4le-s3.h"
|
||||
//#include "risc_armv4le-o3.h"
|
||||
/*
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: risc_armv4le.h,v 1.3 2009-05-27 09:15:41 qbix79 Exp $ */
|
||||
|
||||
|
||||
/* ARMv4 (little endian) backend (switcher) by M-HT */
|
||||
|
||||
#include "risc_armv4le-common.h"
|
||||
|
||||
// choose your destiny:
|
||||
#include "risc_armv4le-thumb-niw.h"
|
||||
//#include "risc_armv4le-thumb-iw.h"
|
||||
//#include "risc_armv4le-thumb.h"
|
||||
//#include "risc_armv4le-s3.h"
|
||||
//#include "risc_armv4le-o3.h"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2002-2009 The DOSBox Team
|
||||
* Copyright (C) 2002-2010 The DOSBox Team
|
||||
*
|
||||
* 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
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user