aboutsummaryrefslogtreecommitdiffstats
path: root/roms/QemuMacDrivers
diff options
context:
space:
mode:
Diffstat (limited to 'roms/QemuMacDrivers')
-rw-r--r--roms/QemuMacDrivers/COPYING339
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/QemuVGADriver.mcp.xml1
-rwxr-xr-xroms/QemuMacDrivers/QemuVGADriver/src/DriverDoDriverIO.c605
-rwxr-xr-xroms/QemuMacDrivers/QemuVGADriver/src/DriverGestaltHandler.c50
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.c622
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.h42
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/QemuEdid.c1
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.c386
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.h89
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/VideoDriver.exp2
-rw-r--r--roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrivate.h85
-rwxr-xr-xroms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrototypes.h100
-rw-r--r--roms/QemuMacDrivers/builds/qemu_vga.ndrvbin0 -> 18752 bytes
-rw-r--r--roms/QemuMacDrivers/builds/qemu_vga_debugosi.ndrvbin0 -> 21312 bytes
-rwxr-xr-xroms/QemuMacDrivers/cleanup.sh8
-rw-r--r--roms/QemuMacDrivers/shared/LinuxOSI.h92
-rw-r--r--roms/QemuMacDrivers/shared/LinuxOSI.s370
-rw-r--r--roms/QemuMacDrivers/shared/LinuxOSIDefs.s76
-rw-r--r--roms/QemuMacDrivers/shared/MacDriverUtils.c1
-rw-r--r--roms/QemuMacDrivers/shared/MacDriverUtils.h1
-rw-r--r--roms/QemuMacDrivers/shared/MakeFunction.s29
-rw-r--r--roms/QemuMacDrivers/shared/logger.h32
-rwxr-xr-xroms/QemuMacDrivers/shared/vsprintf.c343
23 files changed, 3274 insertions, 0 deletions
diff --git a/roms/QemuMacDrivers/COPYING b/roms/QemuMacDrivers/COPYING
new file mode 100644
index 000000000..00ccfbb62
--- /dev/null
+++ b/roms/QemuMacDrivers/COPYING
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/roms/QemuMacDrivers/QemuVGADriver/QemuVGADriver.mcp.xml b/roms/QemuMacDrivers/QemuVGADriver/QemuVGADriver.mcp.xml
new file mode 100644
index 000000000..fda99e800
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/QemuVGADriver.mcp.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <?codewarrior exportversion="1.0.1" ideversion="5.0" ?> <!DOCTYPE PROJECT [ <!ELEMENT PROJECT (TARGETLIST, TARGETORDER, GROUPLIST, DESIGNLIST?)> <!ELEMENT TARGETLIST (TARGET+)> <!ELEMENT TARGET (NAME, SETTINGLIST, FILELIST?, LINKORDER?, SEGMENTLIST?, OVERLAYGROUPLIST?, SUBTARGETLIST?, SUBPROJECTLIST?, FRAMEWORKLIST?, PACKAGEACTIONSLIST?)> <!ELEMENT NAME (#PCDATA)> <!ELEMENT USERSOURCETREETYPE (#PCDATA)> <!ELEMENT PATH (#PCDATA)> <!ELEMENT FILELIST (FILE*)> <!ELEMENT FILE (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?, ROOTFILEREF?, FILEKIND?, FILEFLAGS?)> <!ELEMENT PATHTYPE (#PCDATA)> <!ELEMENT PATHROOT (#PCDATA)> <!ELEMENT ACCESSPATH (#PCDATA)> <!ELEMENT PATHFORMAT (#PCDATA)> <!ELEMENT ROOTFILEREF (PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)> <!ELEMENT FILEKIND (#PCDATA)> <!ELEMENT FILEFLAGS (#PCDATA)> <!ELEMENT FILEREF (TARGETNAME?, PATHTYPE, PATHROOT?, ACCESSPATH?, PATH, PATHFORMAT?)> <!ELEMENT TARGETNAME (#PCDATA)> <!ELEMENT SETTINGLIST ((SETTING|PANELDATA)+)> <!ELEMENT SETTING (NAME?, (VALUE|(SETTING+)))> <!ELEMENT PANELDATA (NAME, VALUE)> <!ELEMENT VALUE (#PCDATA)> <!ELEMENT LINKORDER (FILEREF*)> <!ELEMENT SEGMENTLIST (SEGMENT+)> <!ELEMENT SEGMENT (NAME, ATTRIBUTES?, FILEREF*)> <!ELEMENT ATTRIBUTES (#PCDATA)> <!ELEMENT OVERLAYGROUPLIST (OVERLAYGROUP+)> <!ELEMENT OVERLAYGROUP (NAME, BASEADDRESS, OVERLAY*)> <!ELEMENT BASEADDRESS (#PCDATA)> <!ELEMENT OVERLAY (NAME, FILEREF*)> <!ELEMENT SUBTARGETLIST (SUBTARGET+)> <!ELEMENT SUBTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)> <!ELEMENT SUBPROJECTLIST (SUBPROJECT+)> <!ELEMENT SUBPROJECT (FILEREF, SUBPROJECTTARGETLIST)> <!ELEMENT SUBPROJECTTARGETLIST (SUBPROJECTTARGET*)> <!ELEMENT SUBPROJECTTARGET (TARGETNAME, ATTRIBUTES?, FILEREF?)> <!ELEMENT FRAMEWORKLIST (FRAMEWORK+)> <!ELEMENT FRAMEWORK (FILEREF, DYNAMICLIBRARY?, VERSION?)> <!ELEMENT PACKAGEACTIONSLIST (PACKAGEACTION+)> <!ELEMENT PACKAGEACTION (#PCDATA)> <!ELEMENT LIBRARYFILE (FILEREF)> <!ELEMENT VERSION (#PCDATA)> <!ELEMENT TARGETORDER (ORDEREDTARGET|ORDEREDDESIGN)*> <!ELEMENT ORDEREDTARGET (NAME)> <!ELEMENT ORDEREDDESIGN (NAME, ORDEREDTARGET+)> <!ELEMENT GROUPLIST (GROUP|FILEREF)*> <!ELEMENT GROUP (NAME, (GROUP|FILEREF)*)> <!ELEMENT DESIGNLIST (DESIGN+)> <!ELEMENT DESIGN (NAME, DESIGNDATA)> <!ELEMENT DESIGNDATA (#PCDATA)> ]> <PROJECT> <TARGETLIST> <TARGET> <NAME>QemuVGADriver_DebugOSI</NAME> <SETTINGLIST> <!-- Settings for "Source Trees" panel --> <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Access Paths" panel --> <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>UserSearchPaths</NAME> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>../shared</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> </SETTING> <SETTING><NAME>SystemSearchPaths</NAME> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> </SETTING> <!-- Settings for "Debugger Runtime" panel --> <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Target Settings" panel --> <SETTING><NAME>Linker</NAME><VALUE>MacOS PPC Linker</VALUE></SETTING> <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PostLinker</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Targetname</NAME><VALUE>QemuVGADriver_DebugOSI</VALUE></SETTING> <SETTING><NAME>OutputDirectory</NAME> <SETTING><NAME>Path</NAME><VALUE>../builds</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "File Mappings" panel --> <SETTING><NAME>FileMappings</NAME> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>APPL</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>Appl</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MMLB</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Lib Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MPLF</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Lib Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MWCD</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>RSRC</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.arr</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.bh</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Balloon Help</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.c++</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.exp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.pch</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.pch++</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.plist</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.r</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Rez</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>Rez</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PPCAsm</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>XCOF</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>XCOFF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>docu</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>rsrc</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>shlb</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PEF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>stub</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PEF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.doc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>XCOFF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.ppob</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.rsrc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> </SETTING> <!-- Settings for "Build Extras" panel --> <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>BrowserGenerator</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>DebuggerAppPath</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>DebuggerWorkingDir</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Debugger Target" panel --> <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING> <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>AltExePath</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING> <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "Remote Debug" panel --> <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING> <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Auto-target" panel --> <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Analyzer Connections" panel --> <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Custom Keywords" panel --> <SETTING><NAME>CustomColor1</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor2</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor3</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor4</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <!-- Settings for "C/C++ Compiler" panel --> <SETTING><NAME>MWFrontEnd_C_cplusplus</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_checkprotos</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_arm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_trigraphs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_onlystdkeywords</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_enumsalwaysint</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_ansistrict</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_wchar_type</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_enableexceptions</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_dontreusestrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_poolstrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_dontinline</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_useRTTI</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_unsignedchars</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_autoinline</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_booltruefalse</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_inlinelevel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_ecplusplus</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_defer_codegen</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_templateparser</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_c99</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_bottomupinline</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_gcc_extensions</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_instance_manager</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "C/C++ Preprocessor" panel --> <SETTING><NAME>C_CPP_Preprocessor_EmitFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitLine</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitFullPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_KeepComments</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_PCHUsesPrefixText</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitPragmas</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_KeepWhiteSpace</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_MultiByteEncoding</NAME><VALUE>encAutoDetectMultibyte</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_PrefixText</NAME><VALUE>#define DEBUG_OSI </VALUE></SETTING> <!-- Settings for "C/C++ Warnings" panel --> <SETTING><NAME>MWWarning_C_warn_illpragma</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_emptydecl</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_possunwant</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_unusedvar</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_unusedarg</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_extracomma</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_pedantic</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warningerrors</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_hidevirtual</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_implicitconv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_notinlined</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_structclass</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_missingreturn</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_no_side_effect</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_resultnotused</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_padding</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_i2f_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_f2i_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_s2u_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_illtokenpasting</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_filenamecaps</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_filenamecapssystem</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_undefmacro</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_ptrintconv</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "MacOS Merge Panel" panel --> <SETTING><NAME>MWMerge_MacOS_projectType</NAME><VALUE>Application</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputName</NAME><VALUE>Merge Out</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputCreator</NAME><VALUE>????</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputType</NAME><VALUE>APPL</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_suppressWarning</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_copyFragments</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_copyResources</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flattenResource</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flatFileName</NAME><VALUE>a.rsrc</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flatFileOutputPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWMerge_MacOS_skipResources</NAME> <SETTING><VALUE>DLGX</VALUE></SETTING> <SETTING><VALUE>ckid</VALUE></SETTING> <SETTING><VALUE>Proj</VALUE></SETTING> <SETTING><VALUE>WSPC</VALUE></SETTING> </SETTING> <!-- Settings for "Output Flags" panel --> <SETTING><NAME>FileLocked</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourcesMapIsReadOnly</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PrinterDriverIsMultiFinderCompatible</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Invisible</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasBundle</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>NameLocked</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Stationery</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasCustomIcon</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Shared</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasBeenInited</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Label</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Comments</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>HasCustomBadge</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasRoutingInfo</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "PPC CodeGen" panel --> <SETTING><NAME>MWCodeGen_PPC_structalignment</NAME><VALUE>PPC_mw</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_tracebacktables</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_function_align</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_tocdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_largetoc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_profiler</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_vectortocdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_poolconst</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_peephole</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_readonlystrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_linkerpoolsstrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_volatileasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_schedule</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_altivec</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_altivec_move_block</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_strictIEEEfp</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_fpcontract</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_genfsel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_orderedfpcmp</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC CodeGen Mach-O" panel --> <SETTING><NAME>MWCodeGen_MachO_structalignment</NAME><VALUE>PPC_mw</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_profiler_enum</NAME><VALUE>Off</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_function_align</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_common</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_boolisint</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_peephole</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_readonlystrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_linkerpoolsstrings</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_volatileasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_schedule</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_altivec</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_vecmove</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fp_ieee_strict</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fpcontract</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_genfsel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fp_cmps_ordered</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC Disassembler" panel --> <SETTING><NAME>MWDisassembler_PPC_showcode</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_extended</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_mix</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_nohex</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showexceptions</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showsym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_shownames</NAME><VALUE>1</VALUE></SETTING> <!-- Settings for "PPC Global Optimizer" panel --> <SETTING><NAME>GlobalOptimizer_PPC_optimizationlevel</NAME><VALUE>Level2</VALUE></SETTING> <SETTING><NAME>GlobalOptimizer_PPC_optfor</NAME><VALUE>Size</VALUE></SETTING> <!-- Settings for "PPC Linker" panel --> <SETTING><NAME>MWLinker_PPC_linksym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_symfullpath</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_linkmap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_nolinkwarnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_permitmultdefs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_linkmode</NAME><VALUE>Fast</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_code_folding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_mainname</NAME><VALUE>DoDriverIO</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE></VALUE></SETTING> <!-- Settings for "PPC Mac OS X Linker" panel --> <SETTING><NAME>MWLinker_MacOSX_linksym</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_symfullpath</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_nolinkwarnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_linkmap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_permitmultdefs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_use_objectivec_semantics</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_strip_debug_symbols</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_prebind_all_twolevel_modules</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_data_before_text_segment</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_report_msl_overloads</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_objects_follow_linkorder</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_linkmode</NAME><VALUE>Normal</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_exports</NAME><VALUE>ReferencedGlobals</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_sortcode</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_mainname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_initname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_code_folding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_stabsgen</NAME><VALUE>None</VALUE></SETTING> <!-- Settings for "PPC Mac OS X Project" panel --> <SETTING><NAME>MWProject_MacOSX_type</NAME><VALUE>SharedLibrary</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_outfile</NAME><VALUE>video.nw</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_filecreator</NAME><VALUE>PSSD</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_filetype</NAME><VALUE>ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_vmaddress</NAME><VALUE>4096</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_usedefaultvmaddr</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrcfilename</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrcoutputdir</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWProject_MacOSX_installpath</NAME><VALUE>./</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_dont_prebind</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flat_namespace</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_frameworkversion</NAME><VALUE>A</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_currentversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flat_oldimpversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_AddrMode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_SingleModule</NAME><VALUE>1</VALUE></SETTING> <!-- Settings for "PPC PEF" panel --> <SETTING><NAME>MWPEF_exports</NAME><VALUE>File</VALUE></SETTING> <SETTING><NAME>MWPEF_libfolder</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_sortcode</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWPEF_expandbss</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWPEF_sharedata</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_olddefversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_oldimpversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_currentversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_fragmentname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWPEF_collapsereloads</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC Project" panel --> <SETTING><NAME>MWProject_PPC_type</NAME><VALUE>SharedLibrary</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_outfile</NAME><VALUE>qemu_vga_debugosi.ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_filecreator</NAME><VALUE>PSSD</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_filetype</NAME><VALUE>ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_size</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_minsize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_stacksize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_symfilename</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcheader</NAME><VALUE>Native</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrctype</NAME><VALUE>????</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcflags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcstore</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcmerge</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flatrsrc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flatrsrcoutputdir</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWProject_PPC_flatrsrcfilename</NAME><VALUE></VALUE></SETTING> <!-- Settings for "PPCAsm Panel" panel --> <SETTING><NAME>MWAssembler_PPC_auxheader</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_symmode</NAME><VALUE>Mac</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_dialect</NAME><VALUE>PPC</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_prefixfile</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_typecheck</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_warnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_casesensitive</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "Property List" panel --> <SETTING><NAME>PList_OutputType</NAME><VALUE>File</VALUE></SETTING> <SETTING><NAME>PList_OutputEncoding</NAME><VALUE>UTF-8</VALUE></SETTING> <SETTING><NAME>PList_PListVersion</NAME><VALUE>1.0</VALUE></SETTING> <SETTING><NAME>PList_Prefix</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PList_FileFilename</NAME><VALUE>Info.plist</VALUE></SETTING> <SETTING><NAME>PList_FileDirectory</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>PList_ResourceType</NAME><VALUE>plst</VALUE></SETTING> <SETTING><NAME>PList_ResourceID</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>PList_ResourceName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Rez Compiler" panel --> <SETTING><NAME>MWRez_Language_maxwidth</NAME><VALUE>80</VALUE></SETTING> <SETTING><NAME>MWRez_Language_script</NAME><VALUE>Roman</VALUE></SETTING> <SETTING><NAME>MWRez_Language_alignment</NAME><VALUE>Align1</VALUE></SETTING> <SETTING><NAME>MWRez_Language_filtermode</NAME><VALUE>FilterSkip</VALUE></SETTING> <SETTING><NAME>MWRez_Language_suppresswarnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWRez_Language_escapecontrolchars</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWRez_Language_prefixname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRez_Language_filteredtypes</NAME><VALUE>'CODE' 'DATA' 'PICT'</VALUE></SETTING> <!-- Settings for "WinRC Compiler" panel --> <SETTING><NAME>MWWinRC_prefixname</NAME><VALUE></VALUE></SETTING> <!-- Settings for "x86 CodeGen" panel --> <SETTING><NAME>MWCodeGen_X86_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_alignment</NAME><VALUE>bytes8</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_exceptions</NAME><VALUE>ZeroOverhead</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_name_mangling</NAME><VALUE>MWWin32</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_use_extinst</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_mmx</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_3dnow</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_use_mmx_3dnow_convention</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_cmov</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_sse</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_sse2</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_intrinsics</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_optimizeasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_disableopts</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_profile</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_runtime</NAME><VALUE>Custom</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_readonlystrings</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_vectorize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_relaxieee</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "x86 COFF" panel --> <SETTING><NAME>MWLinker_X86_subsysmajorid</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_subsysminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_opsysmajorid</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_opsysminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usrmajorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usrminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_X86_maxstacksize</NAME><VALUE>1024</VALUE></SETTING> <SETTING><NAME>MWProject_X86_minstacksize</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWProject_X86_size</NAME><VALUE>1024</VALUE></SETTING> <SETTING><NAME>MWProject_X86_minsize</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_coff_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_dll_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_X86_baseaddress</NAME><VALUE>4194304</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_filealign</NAME><VALUE>4096</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_sectionalign</NAME><VALUE>4096</VALUE></SETTING> <!-- Settings for "x86 Disassembler" panel --> <SETTING><NAME>PDisasmX86_showHeaders</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSectHeaders</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSymTab</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showCode</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showData</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showDebug</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showExceptions</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showRaw</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showAllRaw</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSource</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showRelocation</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showHex</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showComments</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSymDefs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_unmangle</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_verbose</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_resolveRelocs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_resolveLocals</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "x86 Exceptions Panel" panel --> <SETTING><NAME>MWDebugger_X86_Exceptions</NAME> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> </SETTING> <!-- Settings for "x86 Global Optimizer" panel --> <SETTING><NAME>GlobalOptimizer_X86_optimizationlevel</NAME><VALUE>Level0</VALUE></SETTING> <SETTING><NAME>GlobalOptimizer_X86_optfor</NAME><VALUE>Speed</VALUE></SETTING> <!-- Settings for "x86 Linker" panel --> <SETTING><NAME>MWLinker_X86_entrypointusage</NAME><VALUE>Default</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_entrypoint</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_X86_subsystem</NAME><VALUE>Unknown</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_commandfile</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_X86_generatemap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linksym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkCV</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_symfullpath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkdebug</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_checksum</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_zero_init_bss</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_mergedata</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usedefaultlibs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_adddefaultlibs</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_nowarnings</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_verbose</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkformem</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_codefolding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_debuginline</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "x86 Project" panel --> <SETTING><NAME>MWProject_X86_type</NAME><VALUE>Application</VALUE></SETTING> <SETTING><NAME>MWProject_X86_outfile</NAME><VALUE>noname.exe</VALUE></SETTING> <SETTING><NAME>MWProject_X86_importlib</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_X86_setimportlibdir</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_dontgenerateimportlib</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>MWProject_X86_oldformatlib</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_replaceobjextension</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_copyallfiles</NAME><VALUE>false</VALUE></SETTING> </SETTINGLIST> <FILELIST> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverLoaderLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>NameRegistryLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>PCILib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>vsprintf.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverDoDriverIO.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverGestaltHandler.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverQDCalls.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>QemuEdid.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>QemuVga.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>VideoServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>LinuxOSI.s</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>VideoDriver.exp</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>MacDriverUtils.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>InterfaceLibForDriverServices</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>MSL_ShLibRuntime_PPC.Lib</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> </FILELIST> <LINKORDER> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverDoDriverIO.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverGestaltHandler.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverQDCalls.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>QemuVga.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>MacDriverUtils.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>LinuxOSI.s</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>vsprintf.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>VideoDriver.exp</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>PCILib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>NameRegistryLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverLoaderLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>VideoServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>InterfaceLibForDriverServices</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>MSL_ShLibRuntime_PPC.Lib</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> </LINKORDER> </TARGET> <TARGET> <NAME>QemuVGADriver</NAME> <SETTINGLIST> <!-- Settings for "Source Trees" panel --> <SETTING><NAME>UserSourceTrees</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Access Paths" panel --> <SETTING><NAME>AlwaysSearchUserPaths</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>InterpretDOSAndUnixPaths</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>RequireFrameworkStyleIncludes</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>SourceRelativeIncludes</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>UserSearchPaths</NAME> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>../shared</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> </SETTING> <SETTING><NAME>SystemSearchPaths</NAME> <SETTING> <SETTING><NAME>SearchPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>CodeWarrior</VALUE></SETTING> </SETTING> <SETTING><NAME>Recursive</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>FrameworkPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HostFlags</NAME><VALUE>All</VALUE></SETTING> </SETTING> </SETTING> <!-- Settings for "Debugger Runtime" panel --> <SETTING><NAME>MWRuntimeSettings_WorkingDirectory</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRuntimeSettings_CommandLine</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRuntimeSettings_HostApplication</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>MWRuntimeSettings_EnvVars</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Target Settings" panel --> <SETTING><NAME>Linker</NAME><VALUE>MacOS PPC Linker</VALUE></SETTING> <SETTING><NAME>PreLinker</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PostLinker</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Targetname</NAME><VALUE>QemuVGADriver</VALUE></SETTING> <SETTING><NAME>OutputDirectory</NAME> <SETTING><NAME>Path</NAME><VALUE>../builds</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>SaveEntriesUsingRelativePaths</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "File Mappings" panel --> <SETTING><NAME>FileMappings</NAME> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>APPL</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>Appl</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MMLB</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Lib Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MPLF</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Lib Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>MWCD</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>RSRC</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.arr</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.bh</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Balloon Help</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.c</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.c++</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.cpp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.exp</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.h</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.pch</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.pch++</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>MW C/C++ PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>C/C++</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.plist</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.r</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>Rez</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE>Rez</VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>TEXT</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.s</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PPCAsm</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>XCOF</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>XCOFF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>docu</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>rsrc</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>shlb</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PEF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileType</NAME><VALUE>stub</VALUE></SETTING> <SETTING><NAME>FileExtension</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>PEF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.doc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>true</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.o</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE>XCOFF Import PPC</VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.ppob</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> <SETTING> <SETTING><NAME>FileExtension</NAME><VALUE>.rsrc</VALUE></SETTING> <SETTING><NAME>Compiler</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>EditLanguage</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>Precompile</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Launchable</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>ResourceFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>IgnoredByMake</NAME><VALUE>false</VALUE></SETTING> </SETTING> </SETTING> <!-- Settings for "Build Extras" panel --> <SETTING><NAME>CacheModDates</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>DumpBrowserInfo</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>CacheSubprojects</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>UseThirdPartyDebugger</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>BrowserGenerator</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>DebuggerAppPath</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>DebuggerCmdLineArgs</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>DebuggerWorkingDir</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>CodeCompletionPrefixFileName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>CodeCompletionMacroFileName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Debugger Target" panel --> <SETTING><NAME>ConsoleEncoding</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>LogSystemMessages</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>AutoTargetDLLsPopUp</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>StopAtWatchpoints</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PauseWhileRunning</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PauseInterval</NAME><VALUE>5</VALUE></SETTING> <SETTING><NAME>PauseUIFlags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>AltExePath</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Absolute</VALUE></SETTING> </SETTING> <SETTING><NAME>StopAtTempBPOnLaunch</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>CacheSymbolics</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>TempBPFunctionName</NAME><VALUE>main</VALUE></SETTING> <SETTING><NAME>TempBPType</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "Remote Debug" panel --> <SETTING><NAME>Enabled</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ConnectionName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>DownloadPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>LaunchRemoteApp</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>RemoteAppPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>CoreID</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>JTAGClockSpeed</NAME><VALUE>8000</VALUE></SETTING> <SETTING><NAME>IsMultiCore</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>OSDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>UseGlobalOSDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>OSDownloadConnectionName</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>OSDownloadPath</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>AltDownload</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>AltDownloadConnectionName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Auto-target" panel --> <SETTING><NAME>OtherExecutables</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Analyzer Connections" panel --> <SETTING><NAME>AnalyzerConnectionName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Custom Keywords" panel --> <SETTING><NAME>CustomColor1</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor2</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor3</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <SETTING><NAME>CustomColor4</NAME> <SETTING><NAME>Red</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Green</NAME><VALUE>32767</VALUE></SETTING> <SETTING><NAME>Blue</NAME><VALUE>0</VALUE></SETTING> </SETTING> <!-- Settings for "C/C++ Compiler" panel --> <SETTING><NAME>MWFrontEnd_C_cplusplus</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_checkprotos</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_arm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_trigraphs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_onlystdkeywords</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_enumsalwaysint</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_ansistrict</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_wchar_type</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_enableexceptions</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_dontreusestrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_poolstrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_dontinline</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_useRTTI</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_unsignedchars</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_autoinline</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_booltruefalse</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_inlinelevel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_ecplusplus</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_defer_codegen</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_templateparser</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_c99</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_bottomupinline</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_gcc_extensions</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWFrontEnd_C_instance_manager</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "C/C++ Preprocessor" panel --> <SETTING><NAME>C_CPP_Preprocessor_EmitFile</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitLine</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitFullPath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_KeepComments</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_PCHUsesPrefixText</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_EmitPragmas</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_KeepWhiteSpace</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_MultiByteEncoding</NAME><VALUE>encAutoDetectMultibyte</VALUE></SETTING> <SETTING><NAME>C_CPP_Preprocessor_PrefixText</NAME><VALUE>#define DEBUG_OSI</VALUE></SETTING> <!-- Settings for "C/C++ Warnings" panel --> <SETTING><NAME>MWWarning_C_warn_illpragma</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_emptydecl</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_possunwant</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_unusedvar</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_unusedarg</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_extracomma</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWWarning_C_pedantic</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warningerrors</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_hidevirtual</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_implicitconv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_notinlined</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_structclass</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_missingreturn</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_no_side_effect</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_resultnotused</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_padding</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_i2f_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_f2i_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_impl_s2u_conv</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_illtokenpasting</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_filenamecaps</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_filenamecapssystem</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_undefmacro</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWWarning_C_warn_ptrintconv</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "MacOS Merge Panel" panel --> <SETTING><NAME>MWMerge_MacOS_projectType</NAME><VALUE>Application</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputName</NAME><VALUE>Merge Out</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputCreator</NAME><VALUE>????</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_outputType</NAME><VALUE>APPL</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_suppressWarning</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_copyFragments</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_copyResources</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flattenResource</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flatFileName</NAME><VALUE>a.rsrc</VALUE></SETTING> <SETTING><NAME>MWMerge_MacOS_flatFileOutputPath</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWMerge_MacOS_skipResources</NAME> <SETTING><VALUE>DLGX</VALUE></SETTING> <SETTING><VALUE>ckid</VALUE></SETTING> <SETTING><VALUE>Proj</VALUE></SETTING> <SETTING><VALUE>WSPC</VALUE></SETTING> </SETTING> <!-- Settings for "Output Flags" panel --> <SETTING><NAME>FileLocked</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>ResourcesMapIsReadOnly</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PrinterDriverIsMultiFinderCompatible</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Invisible</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasBundle</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>NameLocked</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Stationery</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasCustomIcon</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Shared</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasBeenInited</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>Label</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>Comments</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>HasCustomBadge</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>HasRoutingInfo</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "PPC CodeGen" panel --> <SETTING><NAME>MWCodeGen_PPC_structalignment</NAME><VALUE>PPC_mw</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_tracebacktables</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_function_align</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_tocdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_largetoc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_profiler</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_vectortocdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_poolconst</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_peephole</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_readonlystrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_linkerpoolsstrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_volatileasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_schedule</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_altivec</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_altivec_move_block</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_strictIEEEfp</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_fpcontract</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_genfsel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_PPC_orderedfpcmp</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC CodeGen Mach-O" panel --> <SETTING><NAME>MWCodeGen_MachO_structalignment</NAME><VALUE>PPC_mw</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_profiler_enum</NAME><VALUE>Off</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_function_align</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_common</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_boolisint</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_peephole</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_readonlystrings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_linkerpoolsstrings</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_volatileasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_schedule</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_altivec</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_vecmove</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fp_ieee_strict</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fpcontract</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_genfsel</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_MachO_fp_cmps_ordered</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC Disassembler" panel --> <SETTING><NAME>MWDisassembler_PPC_showcode</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_extended</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_mix</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_nohex</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showdata</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showexceptions</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_showsym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWDisassembler_PPC_shownames</NAME><VALUE>1</VALUE></SETTING> <!-- Settings for "PPC Global Optimizer" panel --> <SETTING><NAME>GlobalOptimizer_PPC_optimizationlevel</NAME><VALUE>Level2</VALUE></SETTING> <SETTING><NAME>GlobalOptimizer_PPC_optfor</NAME><VALUE>Size</VALUE></SETTING> <!-- Settings for "PPC Linker" panel --> <SETTING><NAME>MWLinker_PPC_linksym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_symfullpath</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_linkmap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_nolinkwarnings</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_permitmultdefs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_linkmode</NAME><VALUE>Fast</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_code_folding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_initname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_mainname</NAME><VALUE>DoDriverIO</VALUE></SETTING> <SETTING><NAME>MWLinker_PPC_termname</NAME><VALUE></VALUE></SETTING> <!-- Settings for "PPC Mac OS X Linker" panel --> <SETTING><NAME>MWLinker_MacOSX_linksym</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_symfullpath</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_nolinkwarnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_linkmap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_dontdeadstripinitcode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_permitmultdefs</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_use_objectivec_semantics</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_strip_debug_symbols</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_prebind_all_twolevel_modules</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_data_before_text_segment</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_report_msl_overloads</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_objects_follow_linkorder</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_linkmode</NAME><VALUE>Normal</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_exports</NAME><VALUE>ReferencedGlobals</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_sortcode</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_mainname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_initname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_code_folding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_MacOSX_stabsgen</NAME><VALUE>None</VALUE></SETTING> <!-- Settings for "PPC Mac OS X Project" panel --> <SETTING><NAME>MWProject_MacOSX_type</NAME><VALUE>SharedLibrary</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_outfile</NAME><VALUE>video.nw</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_filecreator</NAME><VALUE>PSSD</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_filetype</NAME><VALUE>ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_vmaddress</NAME><VALUE>4096</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_usedefaultvmaddr</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrcfilename</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flatrsrcoutputdir</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWProject_MacOSX_installpath</NAME><VALUE>./</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_dont_prebind</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flat_namespace</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_frameworkversion</NAME><VALUE>A</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_currentversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_flat_oldimpversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_AddrMode</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_MacOSX_SingleModule</NAME><VALUE>1</VALUE></SETTING> <!-- Settings for "PPC PEF" panel --> <SETTING><NAME>MWPEF_exports</NAME><VALUE>File</VALUE></SETTING> <SETTING><NAME>MWPEF_libfolder</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_sortcode</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWPEF_expandbss</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWPEF_sharedata</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_olddefversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_oldimpversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_currentversion</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWPEF_fragmentname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWPEF_collapsereloads</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "PPC Project" panel --> <SETTING><NAME>MWProject_PPC_type</NAME><VALUE>SharedLibrary</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_outfile</NAME><VALUE>qemu_vga.ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_filecreator</NAME><VALUE>PSSD</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_filetype</NAME><VALUE>ndrv</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_size</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_minsize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_stacksize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_symfilename</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcheader</NAME><VALUE>Native</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrctype</NAME><VALUE>????</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcflags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcstore</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_rsrcmerge</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flatrsrc</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_PPC_flatrsrcoutputdir</NAME> <SETTING><NAME>Path</NAME><VALUE>:</VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>MacOS</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>MWProject_PPC_flatrsrcfilename</NAME><VALUE></VALUE></SETTING> <!-- Settings for "PPCAsm Panel" panel --> <SETTING><NAME>MWAssembler_PPC_auxheader</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_symmode</NAME><VALUE>Mac</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_dialect</NAME><VALUE>PPC</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_prefixfile</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_typecheck</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_warnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWAssembler_PPC_casesensitive</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "Property List" panel --> <SETTING><NAME>PList_OutputType</NAME><VALUE>File</VALUE></SETTING> <SETTING><NAME>PList_OutputEncoding</NAME><VALUE>UTF-8</VALUE></SETTING> <SETTING><NAME>PList_PListVersion</NAME><VALUE>1.0</VALUE></SETTING> <SETTING><NAME>PList_Prefix</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PList_FileFilename</NAME><VALUE>Info.plist</VALUE></SETTING> <SETTING><NAME>PList_FileDirectory</NAME> <SETTING><NAME>Path</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>PathFormat</NAME><VALUE>Unix</VALUE></SETTING> <SETTING><NAME>PathRoot</NAME><VALUE>Project</VALUE></SETTING> </SETTING> <SETTING><NAME>PList_ResourceType</NAME><VALUE>plst</VALUE></SETTING> <SETTING><NAME>PList_ResourceID</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>PList_ResourceName</NAME><VALUE></VALUE></SETTING> <!-- Settings for "Rez Compiler" panel --> <SETTING><NAME>MWRez_Language_maxwidth</NAME><VALUE>80</VALUE></SETTING> <SETTING><NAME>MWRez_Language_script</NAME><VALUE>Roman</VALUE></SETTING> <SETTING><NAME>MWRez_Language_alignment</NAME><VALUE>Align1</VALUE></SETTING> <SETTING><NAME>MWRez_Language_filtermode</NAME><VALUE>FilterSkip</VALUE></SETTING> <SETTING><NAME>MWRez_Language_suppresswarnings</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWRez_Language_escapecontrolchars</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWRez_Language_prefixname</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWRez_Language_filteredtypes</NAME><VALUE>'CODE' 'DATA' 'PICT'</VALUE></SETTING> <!-- Settings for "WinRC Compiler" panel --> <SETTING><NAME>MWWinRC_prefixname</NAME><VALUE></VALUE></SETTING> <!-- Settings for "x86 CodeGen" panel --> <SETTING><NAME>MWCodeGen_X86_processor</NAME><VALUE>Generic</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_alignment</NAME><VALUE>bytes8</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_exceptions</NAME><VALUE>ZeroOverhead</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_name_mangling</NAME><VALUE>MWWin32</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_use_extinst</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_mmx</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_3dnow</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_use_mmx_3dnow_convention</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_cmov</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_sse</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_extinst_sse2</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_intrinsics</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_optimizeasm</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_disableopts</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_profile</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_runtime</NAME><VALUE>Custom</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_readonlystrings</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_vectorize</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCodeGen_X86_relaxieee</NAME><VALUE>0</VALUE></SETTING> <!-- Settings for "x86 COFF" panel --> <SETTING><NAME>MWLinker_X86_subsysmajorid</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_subsysminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_opsysmajorid</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_opsysminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usrmajorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usrminorid</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_X86_maxstacksize</NAME><VALUE>1024</VALUE></SETTING> <SETTING><NAME>MWProject_X86_minstacksize</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWProject_X86_size</NAME><VALUE>1024</VALUE></SETTING> <SETTING><NAME>MWProject_X86_minsize</NAME><VALUE>4</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_coff_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_dll_flags</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWProject_X86_baseaddress</NAME><VALUE>4194304</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_filealign</NAME><VALUE>4096</VALUE></SETTING> <SETTING><NAME>MWCOFF_X86_sectionalign</NAME><VALUE>4096</VALUE></SETTING> <!-- Settings for "x86 Disassembler" panel --> <SETTING><NAME>PDisasmX86_showHeaders</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSectHeaders</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSymTab</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showCode</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showData</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showDebug</NAME><VALUE>false</VALUE></SETTING>O <SETTING><NAME>PDisasmX86_showExceptions</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showRaw</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showAllRaw</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSource</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showRelocation</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showHex</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showComments</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_showSymDefs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_unmangle</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_verbose</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>PDisasmX86_resolveRelocs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>PDisasmX86_resolveLocals</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "x86 Exceptions Panel" panel --> <SETTING><NAME>MWDebugger_X86_Exceptions</NAME> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> <SETTING><VALUE>0</VALUE></SETTING> </SETTING> <!-- Settings for "x86 Global Optimizer" panel --> <SETTING><NAME>GlobalOptimizer_X86_optimizationlevel</NAME><VALUE>Level0</VALUE></SETTING> <SETTING><NAME>GlobalOptimizer_X86_optfor</NAME><VALUE>Speed</VALUE></SETTING> <!-- Settings for "x86 Linker" panel --> <SETTING><NAME>MWLinker_X86_entrypointusage</NAME><VALUE>Default</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_entrypoint</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_X86_subsystem</NAME><VALUE>Unknown</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_commandfile</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWLinker_X86_generatemap</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linksym</NAME><VALUE>0</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkCV</NAME><VALUE>1</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_symfullpath</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkdebug</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_checksum</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_zero_init_bss</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_mergedata</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_usedefaultlibs</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_adddefaultlibs</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_nowarnings</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_verbose</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_linkformem</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_codefolding</NAME><VALUE>None</VALUE></SETTING> <SETTING><NAME>MWLinker_X86_debuginline</NAME><VALUE>false</VALUE></SETTING> <!-- Settings for "x86 Project" panel --> <SETTING><NAME>MWProject_X86_type</NAME><VALUE>Application</VALUE></SETTING> <SETTING><NAME>MWProject_X86_outfile</NAME><VALUE>noname.exe</VALUE></SETTING> <SETTING><NAME>MWProject_X86_importlib</NAME><VALUE></VALUE></SETTING> <SETTING><NAME>MWProject_X86_setimportlibdir</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_dontgenerateimportlib</NAME><VALUE>true</VALUE></SETTING> <SETTING><NAME>MWProject_X86_oldformatlib</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_replaceobjextension</NAME><VALUE>false</VALUE></SETTING> <SETTING><NAME>MWProject_X86_copyallfiles</NAME><VALUE>false</VALUE></SETTING> </SETTINGLIST> <FILELIST> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverLoaderLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>NameRegistryLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>PCILib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverDoDriverIO.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverGestaltHandler.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>DriverQDCalls.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>QemuEdid.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>QemuVga.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>VideoServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS></FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>VideoDriver.exp</PATH> <PATHFORMAT>MacOS</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>MacDriverUtils.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Text</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>InterfaceLibForDriverServices</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> <FILE> <PATHTYPE>Name</PATHTYPE> <PATH>MSL_ShLibRuntime_PPC.Lib</PATH> <PATHFORMAT>Unix</PATHFORMAT> <FILEKIND>Library</FILEKIND> <FILEFLAGS>Debug</FILEFLAGS> </FILE> </FILELIST> <LINKORDER> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverLoaderLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>NameRegistryLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>PCILib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverDoDriverIO.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverGestaltHandler.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>DriverQDCalls.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>QemuVga.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>QemuEdid.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>VideoServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>VideoDriver.exp</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>MacDriverUtils.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>InterfaceLibForDriverServices</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>MSL_ShLibRuntime_PPC.Lib</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> </LINKORDER> </TARGET> </TARGETLIST> <TARGETORDER> <ORDEREDTARGET><NAME>QemuVGADriver</NAME></ORDEREDTARGET> <ORDEREDTARGET><NAME>QemuVGADriver_DebugOSI</NAME></ORDEREDTARGET> </TARGETORDER> <GROUPLIST> <GROUP><NAME>Util</NAME> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>MacDriverUtils.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> </GROUP> <GROUP><NAME>Libs</NAME> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>DriverLoaderLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>DriverServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>InterfaceLibForDriverServices</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>NameRegistryLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>PCILib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>VideoDriver.exp</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>VideoServicesLib</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>MSL_ShLibRuntime_PPC.Lib</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> </GROUP> <GROUP><NAME>Src</NAME> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>DriverGestaltHandler.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>DriverDoDriverIO.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>QemuVga.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <PATHTYPE>Name</PATHTYPE> <PATH>QemuEdid.c</PATH> <PATHFORMAT>Unix</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>DriverQDCalls.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> </GROUP> <GROUP><NAME>LinuxInterface</NAME> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>LinuxOSI.s</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> <FILEREF> <TARGETNAME>QemuVGADriver_DebugOSI</TARGETNAME> <PATHTYPE>Name</PATHTYPE> <PATH>vsprintf.c</PATH> <PATHFORMAT>MacOS</PATHFORMAT> </FILEREF> </GROUP> </GROUPLIST> </PROJECT> a \ No newline at end of file
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/DriverDoDriverIO.c b/roms/QemuMacDrivers/QemuVGADriver/src/DriverDoDriverIO.c
new file mode 100755
index 000000000..d72fd9cdf
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/DriverDoDriverIO.c
@@ -0,0 +1,605 @@
+/* Simple PCI video driver for use with Mac-On-Linux emulator
+ *
+ * Basically, this driver forward Apple video driver calls to
+ * the emulator via a fake HW (and later, a "sc" based API).
+*/
+
+#include "VideoDriverPrivate.h"
+#include "VideoDriverPrototypes.h"
+#include "DriverQDCalls.h"
+#include "QemuVga.h"
+
+DriverDescription TheDriverDescription = {
+ /*
+ * Signature info
+ */
+ kTheDescriptionSignature, /* OSType driverDescSignature */
+ kInitialDriverDescriptor, /* DriverDescVersion driverDescVersion */
+ QEMU_PCI_VIDEO_NAME,
+ 0x01, 0x01,
+ 0, 0,
+ /*
+ * DriverOSRuntime driverOSRuntimeInfo
+ */
+ 0 /* RuntimeOptions driverRuntime */
+ | (0 * kDriverIsLoadedUponDiscovery) /* Loader runtime options */
+ | (1 * kDriverIsOpenedUponLoad) /* Opened when loaded */
+ | (1 * kDriverIsUnderExpertControl) /* I/O expert handles loads/opens */
+ | (0 * kDriverIsConcurrent) /* concurrent */
+ | (0 * kDriverQueuesIOPB), /* Internally queued */
+ QEMU_PCI_VIDEO_PNAME, /* Str31 driverName (OpenDriver param) */
+ 0, 0, 0, 0, 0, 0, 0, 0, /* UInt32 driverDescReserved[8] */
+ /*
+ * DriverOSService Information. This section contains a vector count followed by
+ * a vector of structures, each defining a driver service.
+ */
+ 1, /* ServiceCount nServices */
+ /*
+ * DriverServiceInfo service[0]
+ */
+ kServiceCategoryNdrvDriver, /* OSType serviceCategory */
+ kNdrvTypeIsVideo, /* OSType serviceType */
+ 1, 0, 0, 0
+};
+
+/*
+ * All driver-global information is in a structure defined in NCRDriverPrivate.
+ * Note that "modern" drivers do not have access to their dce. In native Power PC
+ * environments, the global world is created by the Code Fragment Manager (hmm,
+ * perhaps it is created by CFMInitialize).
+ */
+DriverGlobal gDriverGlobal;
+
+/*
+ * DoDriverIO
+ *
+ * In the new driver environment, DoDriverIO performs all driver
+ * functions. It is called with the following parameters:
+ * IOCommandID A unique reference for this driver request. In
+ * the emulated environment, this will be the ParamBlkPtr
+ * passed in from the Device Manager.
+ *
+ * IOCommandContents A union structure that contains information for the
+ * specific request. For the emulated environment, this
+ * will contain the following:
+ * Initialize Driver RefNum and the name registry id for this driver.
+ * Finalize Driver RefNum and the name registry id for this driver.
+ * Others The ParamBlkPtr
+ *
+ * IOCommandCode A switch value that specifies the required function.
+ *
+ * IOCommandKind A bit-mask indicating Synchronous, Asynchronous, and Immediate
+ *
+ * For Synchronous and Immediate commands, DoDriverIO returns the final status to
+ * the Device Manager. For Asynchronous commands, DoDriverIO may return kIOBusyStatus.
+ * If it returns busy status, the driver promises to call IOCommandIsComplete when
+ * the transaction has completed.
+ */
+OSStatus
+DoDriverIO( AddressSpaceID addressSpaceID, IOCommandID ioCommandID, IOCommandContents ioCommandContents,
+ IOCommandCode ioCommandCode, IOCommandKind ioCommandKind )
+{
+ OSStatus status;
+
+ /*
+ * Note: Initialize, Open, KillIO, Close, and Finalize are either synchronous
+ * or immediate. Read, Write, Control, and Status may be immediate,
+ * synchronous, or asynchronous.
+ */
+
+ lprintf("DoDriverIO cmdCode=%d\n", ioCommandCode);
+
+ switch( ioCommandCode ) {
+ case kInitializeCommand: /* Always immediate */
+ status = DriverInitializeCmd(addressSpaceID, ioCommandContents.initialInfo);
+ CheckStatus(status, "Initialize failed");
+ break;
+ case kFinalizeCommand: /* Always immediate */
+ status = DriverFinalizeCmd(ioCommandContents.finalInfo);
+ break;
+ case kSupersededCommand:
+ status = DriverSupersededCmd(ioCommandContents.supersededInfo, FALSE);
+ break;
+ case kReplaceCommand: /* replace an old driver */
+ status = DriverReplaceCmd(addressSpaceID, ioCommandContents.replaceInfo);
+ break;
+ case kOpenCommand: /* Always immediate */
+ status = DriverOpenCmd(addressSpaceID, ioCommandContents.pb);
+ break;
+ case kCloseCommand: /* Always immediate */
+ status = DriverCloseCmd(ioCommandContents.pb);
+ break;
+ case kControlCommand:
+ /* lprintf("kControlCommand\n"); */
+ status = DriverControlCmd( addressSpaceID, ioCommandID, ioCommandKind,
+ (CntrlParam*)ioCommandContents.pb );
+ break;
+ case kStatusCommand:
+ status = DriverStatusCmd( ioCommandID, ioCommandKind,
+ (CntrlParam *)ioCommandContents.pb );
+ break;
+ case kReadCommand:
+ status = DriverReadCmd( addressSpaceID, ioCommandID, ioCommandKind,
+ ioCommandContents.pb );
+ break;
+ case kWriteCommand:
+ status = DriverWriteCmd( addressSpaceID, ioCommandID, ioCommandKind,
+ ioCommandContents.pb);
+ break;
+ case kKillIOCommand: /* Always immediate */
+ status = DriverKillIOCmd(ioCommandContents.pb);
+ break;
+ default:
+ status = paramErr;
+ break;
+ }
+ lprintf("Completing with status=%d (kind: %x)\n", status, ioCommandKind);
+
+ /*
+ * Force a valid result for immediate commands -- they must return a valid
+ * status to the Driver Manager: returning kIOBusyStatus would be a bug..
+ * Non-immediate commands return a status from the lower-level routine. If the
+ * status is kIOBusyStatus, we just return -- an asynchronous I/O completion
+ * routine will eventually complete the request. If it's some other status, the
+ * lower-level routine has completed a non-immediate task, so we call
+ * IOCommandIsComplete and return its (presumably noErr) status.
+ */
+ if( (ioCommandKind & kImmediateIOCommandKind) != 0 ) {
+ ; /* Immediate commands return the operation status */
+ }
+ else if (status == ioInProgress) {
+ /*
+ * An asynchronous operation is in progress. The driver handler promises
+ * to call IOCommandIsComplete when the operation concludes.
+ */
+ status = noErr;
+ } else {
+ /*
+ * Normal command that completed synchronously. Dequeue the user's
+ * parameter block.
+ */
+ status = (OSStatus)IOCommandIsComplete(ioCommandID, (OSErr)status);
+ }
+ return status;
+}
+
+/*
+ * DriverInitializeCmd
+ *
+ * The New Driver Manager calls this when the driver is first opened.
+ */
+OSStatus
+DriverInitializeCmd( AddressSpaceID addressSpaceID, DriverInitInfoPtr driverInitInfoPtr )
+{
+ OSStatus status;
+
+ Trace(DriverInitializeCmd);
+
+ lprintf("** First call:\n");
+ lprintf(" DoDriverIO @ %p\n", DoDriverIO);
+ lprintf(" DriverStatusCmd @ %p\n", DriverStatusCmd);
+ lprintf(" DriverControlCmd @ %p\n", DriverControlCmd);
+
+ GLOBAL.refNum = driverInitInfoPtr->refNum;
+ GLOBAL.openCount = 0;
+ GLOBAL.inInterrupt = false;
+ GLOBAL.hasTimer = false;
+
+ RegistryEntryIDInit( &GLOBAL.deviceEntry );
+ status = RegistryEntryIDCopy( &driverInitInfoPtr->deviceEntry, &GLOBAL.deviceEntry );
+ if( status != noErr )
+ return status;
+
+ GLOBAL.isOpen = false;
+ GLOBAL.qdInterruptsEnable = false;
+ GLOBAL.qdVBLInterrupt = NULL;
+
+ GLOBAL.boardFBAddress = GetDeviceBARAddress(&GLOBAL.deviceEntry,
+ QEMU_PCI_VIDEO_BASE_REG,
+ &GLOBAL.boardFBMappedSize,
+ NULL);
+ if (GLOBAL.boardFBAddress == NULL) {
+ status = paramErr;
+ goto bail;
+ }
+ lprintf("boardFBAddress %08lX boardFBMappedSize %08lX\n",
+ GLOBAL.boardFBAddress, GLOBAL.boardFBMappedSize);
+
+ GLOBAL.boardRegAddress = GetDeviceBARAddress(&GLOBAL.deviceEntry,
+ QEMU_PCI_VIDEO_MMIO_REG,
+ &GLOBAL.boardRegMappedSize,
+ NULL);
+ if (GLOBAL.boardRegAddress == NULL) {
+ status = paramErr;
+ goto bail;
+ }
+ lprintf("boardRegAddress %08lX boardRegMappedSize %08lX\n",
+ GLOBAL.boardRegAddress, GLOBAL.boardRegMappedSize);
+
+
+ lprintf("Enabling memory space..\n");
+ status = EnablePCIMemorySpace(&GLOBAL.deviceEntry);
+ if (status != noErr) {
+ lprintf("EnablePCIMemorySpace returned %d\n", status);
+ goto bail;
+ }
+
+ status = QemuVga_Init();
+ if (status != noErr)
+ goto bail;
+
+bail:
+ DBG(lprintf("Driver init result: %d\n", status));
+
+ return status;
+}
+
+/*
+ * DriverReplaceCmd
+ *
+ * We are replacing an existing driver -- or are completing an initialization sequence.
+ * Retrieve any state information from the Name Registry (we have none), install
+ * our interrupt handlers, and activate the device.
+ *
+ * We don't use the calledFromInitialize parameter, but it's here so that a driver can
+ * distinguish between initialization (fetch only the NVRAM parameter) and replacement
+ * (fetch state information that may be left-over from the previous incantation).
+ */
+OSStatus
+DriverReplaceCmd( AddressSpaceID addressSpaceID, DriverReplaceInfoPtr driverReplaceInfoPtr )
+{
+ OSStatus status;
+
+ Trace(DriverReplaceCmd);
+
+ GLOBAL.refNum = driverReplaceInfoPtr->refNum;
+ GLOBAL.deviceEntry = driverReplaceInfoPtr->deviceEntry;
+
+ status = DriverInitializeCmd(addressSpaceID, driverReplaceInfoPtr);
+
+ return status;
+}
+
+/*
+ * DriverFinalizeCmd
+ *
+ * Process a DoDriverIO finalize command.
+ */
+OSStatus
+DriverFinalizeCmd( DriverFinalInfoPtr driverFinalInfoPtr )
+{
+ Trace(DriverFinializeCmd);
+ (void) DriverSupersededCmd((DriverSupersededInfoPtr) driverFinalInfoPtr, TRUE);
+ return noErr;
+}
+
+/*
+ * DriverSupersededCmd
+ *
+ * We are shutting down, or being replaced by a later driver. Wait for all I/O to
+ * complete and store volatile state in the Name Registry whree it will be retrieved
+ * by our replacement.
+ */
+OSStatus
+DriverSupersededCmd( DriverSupersededInfoPtr driverSupersededInfoPtr, Boolean calledFromFinalize )
+{
+ Trace(DriverSupersededCmd);
+
+ /*
+ * This duplicates DriverKillIOCmd, the correct algorithm would wait for
+ * concurrent I/O to complete. Hmm, what about "infinite wait" I/O, such
+ * as would be posted by a modem server or socket listener? Note that
+ * this section needs to be extended to handle all pending requests.
+ *
+ * It's safe to call CompleteThisRequest, as that routine uses an atomic
+ * operation that allows it to be called when no request is pending without
+ * any possible problems. Since it's a secondary interrupt handler, we
+ * need to call it through the Driver Services Library.
+ *
+ * Warning: GLOBAL.perRequestDataPtr will be NULL if initialization fails
+ * and the Driver Manager tries to terminate us. When we permit concurrent
+ * requests, this will loop on all per-request records.
+ */
+
+ QemuVga_Exit();
+
+ RegistryEntryIDDispose( &GLOBAL.deviceEntry );
+
+ return noErr;
+}
+
+/*
+ * DriverControlCmd
+ *
+ * Process a PBControl command.
+ */
+OSStatus
+DriverControlCmd( AddressSpaceID addressSpaceID, IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind, CntrlParam *pb )
+{
+ OSStatus status;
+ void *genericPtr;
+
+ /* The 'csParam' field of the 'CntrlParam' stucture is defined as 'short csParam[11]'. This is
+ * meant for 'operation defined parameters.' For the graphics driver, only the first 4 bytes are
+ * used. They are used as a pointer to another structure.
+ * To help code readability, the pointer will be extracted as a generic 'void *' and then cast as
+ * appropriate.
+ */
+
+ genericPtr = (void *) *((UInt32 *) &(pb->csParam[0]));
+
+ Trace(DriverControlCmd);
+
+ switch( pb->csCode ) {
+ case cscReset: // Old obsolete call..return a 'controlErr'
+ return controlErr;
+ break;
+
+ case cscKillIO: // Old obsolete call..do nothing
+ return noErr;
+
+ case cscSetMode:
+ status = GraphicsCoreSetMode((VDPageInfo *) genericPtr);
+ break;
+
+ case cscSetEntries:
+ status = GraphicsCoreSetEntries((VDSetEntryRecord *) genericPtr);
+ // if ((status == noErr)&&(GLOBAL.qdDeskServiceCreated)&&(ioCommandKind == kSynchronousIOCommandKind))
+ // VSLWaitOnInterruptService(GLOBAL.qdVBLInterrupt, 1000);
+ break;
+
+ case cscSetGamma:
+ status = GraphicsCoreSetGamma((VDGammaRecord *) genericPtr);
+ break;
+
+ case cscGrayPage:
+ status = GraphicsCoreGrayPage((VDPageInfo *) genericPtr);
+ break;
+
+ case cscSetGray:
+ status = GraphicsCoreSetGray((VDGrayRecord *) genericPtr);
+ break;
+
+ case cscSetInterrupt:
+ status = GraphicsCoreSetInterrupt((VDFlagRecord *) genericPtr);
+ break;
+
+ case cscDirectSetEntries:
+ status = GraphicsCoreDirectSetEntries((VDSetEntryRecord *) genericPtr);
+ break;
+
+ case cscSetDefaultMode:
+ return controlErr;
+
+ case cscSwitchMode:
+ status = GraphicsCoreSwitchMode((VDSwitchInfoRec *) genericPtr);
+ break;
+
+ case cscSetSync:
+ status = GraphicsCoreSetSync((VDSyncInfoRec *) genericPtr);
+ break;
+
+ case cscSavePreferredConfiguration:
+ status = GraphicsCoreSetPreferredConfiguration((VDSwitchInfoRec *) genericPtr);
+ break;
+
+ case cscSetHardwareCursor:
+ status = GraphicsCoreSetHardwareCursor((VDSetHardwareCursorRec *) genericPtr);
+ break;
+
+ case cscDrawHardwareCursor:
+ status = GraphicsCoreDrawHardwareCursor((VDDrawHardwareCursorRec *) genericPtr);
+ break;
+ case cscSetPowerState:
+ status = GraphicsCoreSetPowerState((VDPowerStateRec *) genericPtr);
+ break;
+ default:
+ break;
+ }
+ if (status)
+ status = paramErr;
+
+ return status;
+}
+
+/*
+ * DriverStatusCmd
+ *
+ * Process a PBStatus command. We support the driver gestalt call and our private
+ * debugging commands.
+ */
+OSStatus
+DriverStatusCmd( IOCommandID ioCommandID, IOCommandKind ioCommandKind, CntrlParam *pb )
+{
+ OSStatus status;
+ void *genericPtr;
+
+ /* The 'csParam' field of the 'CntrlParam' stucture is defined as 'short csParam[11]'. This is
+ * meant for 'operation defined parameters.' For the graphics driver, only the first 4 bytes are
+ * used. They are used as a pointer to another structure.
+ * To help code readability, the pointer will be extracted as a generic 'void *' and then cast as
+ * appropriate.
+ */
+
+ genericPtr = (void *) *((UInt32 *) &(pb->csParam[0]));
+
+ Trace(DriverStatusCmd);
+ lprintf("csCode=%d\n", pb->csCode);
+ switch( pb->csCode ) {
+ case cscGetMode:
+ status = GraphicsCoreGetMode((VDPageInfo *) genericPtr);
+ break;
+
+ case cscGetEntries:
+ status = GraphicsCoreGetEntries((VDSetEntryRecord *) genericPtr);
+ break;
+
+ case cscGetPages:
+ status = GraphicsCoreGetPages((VDPageInfo *) genericPtr);
+ break;
+
+ case cscGetBaseAddr:
+ status = GraphicsCoreGetBaseAddress((VDPageInfo *) genericPtr);
+ break;
+
+ case cscGetGray:
+ status = GraphicsCoreGetGray((VDGrayRecord *) genericPtr);
+ break;
+
+ case cscGetInterrupt:
+ status = GraphicsCoreGetInterrupt((VDFlagRecord *) genericPtr);
+ break;
+
+ case cscGetGamma:
+ status = GraphicsCoreGetGamma((VDGammaRecord *) genericPtr);
+ break;
+
+ case cscGetDefaultMode:
+ status = statusErr;
+ break;
+
+ case cscGetCurMode:
+ status = GraphicsCoreGetCurrentMode((VDSwitchInfoRec *) genericPtr);
+ break;
+
+ case cscGetSync:
+ status = GraphicsCoreGetSync((VDSyncInfoRec *) genericPtr);
+ break;
+
+ case cscGetConnection:
+ status = GraphicsCoreGetConnection((VDDisplayConnectInfoRec *) genericPtr);
+ break;
+
+ case cscGetModeTiming:
+ status = GraphicsCoreGetModeTiming((VDTimingInfoRec *) genericPtr);
+ break;
+
+ case cscGetPreferredConfiguration:
+ status = GraphicsCoreGetPreferredConfiguration((VDSwitchInfoRec *) genericPtr);
+ break;
+
+ case cscGetNextResolution:
+ status = GraphicsCoreGetNextResolution((VDResolutionInfoRec *) genericPtr);
+ break;
+
+ case cscGetVideoParameters:
+ status = GraphicsCoreGetVideoParams((VDVideoParametersInfoRec *) genericPtr);
+ break;
+
+ case cscGetGammaInfoList:
+ status = GraphicsCoreGetGammaInfoList((VDGetGammaListRec *) genericPtr);
+ break;
+
+ case cscRetrieveGammaTable:
+ status = GraphicsCoreRetrieveGammaTable((VDRetrieveGammaRec *) genericPtr);
+ break;
+
+ case cscSupportsHardwareCursor:
+ status = GraphicsCoreSupportsHardwareCursor((VDSupportsHardwareCursorRec *) genericPtr);
+ break;
+
+ case cscGetHardwareCursorDrawState:
+ status = GraphicsCoreGetHardwareCursorDrawState((VDHardwareCursorDrawStateRec *) genericPtr);
+ break;
+
+ case kDriverGestaltCode:
+ status = DriverGestaltHandler(pb);
+ break;
+
+ case cscGetPowerState:
+ status = GraphicsCoreGetPowerState((VDPowerStateRec *) genericPtr);
+ break;
+ case cscGetClutBehavior:
+ *(VDClutBehaviorPtr)genericPtr = kSetClutAtSetEntries;
+ status = noErr;
+ break;
+ default:
+ return statusErr;
+ }
+ if (status)
+ status = paramErr;
+
+ return status;
+}
+
+/*
+ * DriverKillIOCmd stops all I/O for this chip. It's a big hammer, use it wisely.
+ * This will need revision when we support concurrent I/O as we must stop all
+ * pending requests.
+ */
+OSStatus
+DriverKillIOCmd( ParmBlkPtr pb )
+{
+#define REQUEST (GLOBAL.perRequestData)
+
+ Trace(DriverKillIOCmd);
+ return noErr;
+#undef REQUEST
+}
+
+/*
+ * DriverReadCmd
+ *
+ * The caller passes the data buffer and buffer length in the IOParam record and
+ * a pointer to a SCSI NCRSCSIParam in the ioMisc field.
+ */
+OSStatus
+DriverReadCmd( AddressSpaceID addressSpaceID, IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind, ParmBlkPtr pb )
+{
+ Trace(DriverReadCmd);
+ return paramErr;
+}
+
+
+/*
+ * DriverWriteCmd
+ *
+ * The caller passes the data buffer and buffer length in the IOParam record and
+ * a pointer to a SCSI NCRSCSIParam in the ioMisc field.
+ */
+OSStatus
+DriverWriteCmd( AddressSpaceID addressSpaceID, IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind, ParmBlkPtr pb )
+{
+ Trace(DriverWriteCmd);
+ return paramErr;
+}
+
+/*
+ * DriverCloseCmd does nothing..
+ */
+OSStatus
+DriverCloseCmd( ParmBlkPtr pb )
+{
+ Trace(DriverCloseCmd);
+
+ if( !GLOBAL.openCount )
+ return notOpenErr;
+
+ GLOBAL.openCount--;
+
+ if (!GLOBAL.openCount)
+ QemuVga_Close();
+
+ return noErr;
+}
+
+/*
+ * DriverOpenCmd does nothing: remember that many applications will open a device, but
+ * never close it..
+ */
+OSStatus
+DriverOpenCmd( AddressSpaceID addressSpaceID, ParmBlkPtr pb )
+{
+ Trace(DriverOpenCmd);
+
+ GLOBAL.openCount++;
+ if (GLOBAL.openCount == 1)
+ QemuVga_Open();
+
+ return noErr;
+}
+
+
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/DriverGestaltHandler.c b/roms/QemuMacDrivers/QemuVGADriver/src/DriverGestaltHandler.c
new file mode 100755
index 000000000..84189e0f0
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/DriverGestaltHandler.c
@@ -0,0 +1,50 @@
+#include "VideoDriverPrivate.h"
+#include "VideoDriverPrototypes.h"
+
+/*
+ * Called on PBStatus, csCode = 43
+ */
+OSStatus
+DriverGestaltHandler( CntrlParam *pb )
+{
+#define PB (*((DriverGestaltParam *) pb))
+#define OPTIONS (TheDriverDescription.driverOSRuntimeInfo)
+
+ OSStatus status;
+ Trace(DriverGestaltHandler);
+
+ PB.driverGestaltResponse = 0;
+ status = noErr;
+
+ lprintf("DriverGestalt, selector=%c%c%c%c\n",
+ PB.driverGestaltSelector >> 24,
+ (PB.driverGestaltSelector >> 16) & 0xff,
+ (PB.driverGestaltSelector >> 8) & 0xff,
+ (PB.driverGestaltSelector ) & 0xff);
+ switch( PB.driverGestaltSelector ) {
+ case kdgSync:
+ PB.driverGestaltResponse = FALSE; /* We handle asynchronous I/O */
+ break;
+ case kdgVersion:
+ PB.driverGestaltResponse =
+ *((UInt32 *) &TheDriverDescription.driverType.version);
+ break;
+ case kdgDeviceType:
+ PB.driverGestaltResponse = 'QEMU';
+ break;
+ case kdgInterface:
+ PB.driverGestaltResponse = 'pci ';
+ break;
+ case kdgSupportsSwitching: /* Support Power up/down switching? */
+ PB.driverGestaltResponse = FALSE; /* Not supported yet */
+ break;
+ case kdgSupportsPowerCtl: /* TRUE if in high-power mode */
+ PB.driverGestaltResponse = FALSE; /* Power-switching is not supported */
+ break;
+ default:
+ status = statusErr;
+ break;
+ }
+ return status;
+#undef PB
+}
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.c b/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.c
new file mode 100644
index 000000000..fdfc043ec
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.c
@@ -0,0 +1,622 @@
+#include "VideoDriverPrivate.h"
+#include "VideoDriverPrototypes.h"
+#include "DriverQDCalls.h"
+#include "QemuVga.h"
+
+#define MAX_DEPTH_MODE kDepthMode3
+
+static UInt8 DepthToDepthMode(UInt8 depth)
+{
+ switch (depth) {
+ case 8:
+ return kDepthMode1;
+ case 15:
+ case 16:
+ return kDepthMode2;
+ case 24:
+ case 32:
+ return kDepthMode3;
+ default:
+ return kDepthMode1;
+ }
+}
+
+static UInt8 DepthModeToDepth(UInt8 mode)
+{
+ switch (mode) {
+ case kDepthMode1:
+ return 8;
+ case kDepthMode2:
+ return 15;
+ case kDepthMode3:
+ return 32;
+ default:
+ return 8;
+ }
+}
+
+/************************ Color Table Stuff ****************************/
+
+static OSStatus
+GraphicsCoreDoSetEntries(VDSetEntryRecord *entryRecord, Boolean directDevice, UInt32 start, UInt32 stop, Boolean useValue)
+{
+ UInt32 i;
+
+ CHECK_OPEN( controlErr );
+ if (GLOBAL.depth != 8)
+ return controlErr;
+ if (NULL == entryRecord->csTable)
+ return controlErr;
+
+ /* Note that stop value is included in the range */
+ for(i=start;i<=stop;i++) {
+ UInt32 colorIndex = useValue ? entryRecord->csTable[i].value : i;
+ QemuVga_SetColorEntry(colorIndex, &entryRecord->csTable[i].rgb);
+ }
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreSetEntries(VDSetEntryRecord *entryRecord)
+{
+ Boolean useValue = (entryRecord->csStart < 0);
+ UInt32 start = useValue ? 0UL : (UInt32)entryRecord->csStart;
+ UInt32 stop = start + entryRecord->csCount;
+
+ Trace(GraphicsCoreSetEntries);
+
+ return GraphicsCoreDoSetEntries(entryRecord, false, start, stop, useValue);
+}
+
+OSStatus
+GraphicsCoreDirectSetEntries(VDSetEntryRecord *entryRecord)
+{
+ Boolean useValue = (entryRecord->csStart < 0);
+ UInt32 start = useValue ? 0 : entryRecord->csStart;
+ UInt32 stop = start + entryRecord->csCount;
+
+ Trace(GraphicsCoreDirectSetEntries);
+
+ return GraphicsCoreDoSetEntries(entryRecord, true, start, stop, useValue);
+}
+
+OSStatus
+GraphicsCoreGetEntries(VDSetEntryRecord *entryRecord)
+{
+ Boolean useValue = (entryRecord->csStart < 0);
+ UInt32 start = useValue ? 0UL : (UInt32)entryRecord->csStart;
+ UInt32 stop = start + entryRecord->csCount;
+ UInt32 i;
+
+ Trace(GraphicsCoreGetEntries);
+
+ if (GLOBAL.depth != 8)
+ return controlErr;
+ for(i=start;i<=stop;i++) {
+ UInt32 colorIndex = useValue ? entryRecord->csTable[i].value : i;
+ QemuVga_GetColorEntry(colorIndex, &entryRecord->csTable[i].rgb);
+ }
+
+ return noErr;
+}
+
+/************************ Gamma ****************************/
+
+OSStatus
+GraphicsCoreSetGamma(VDGammaRecord *gammaRec)
+{
+ CHECK_OPEN( controlErr );
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetGammaInfoList(VDGetGammaListRec *gammaList)
+{
+ Trace(GraphicsCoreGammaInfoList);
+
+ return statusErr;
+}
+
+OSStatus
+GraphicsCoreRetrieveGammaTable(VDRetrieveGammaRec *gammaRec)
+{
+ Trace(GraphicsCoreRetrieveGammaTable);
+
+ return statusErr;
+}
+
+OSStatus
+GraphicsCoreGetGamma(VDGammaRecord *gammaRecord)
+{
+ CHECK_OPEN( statusErr );
+
+ Trace(GraphicsCoreGetGamma);
+
+ gammaRecord->csGTable = NULL;
+
+ return noErr;
+}
+
+
+/************************ Gray pages ****************************/
+
+OSStatus
+GraphicsCoreGrayPage(VDPageInfo *pageInfo)
+{
+ UInt32 pageCount;
+
+ CHECK_OPEN( controlErr );
+
+ Trace(GraphicsCoreGrayPage);
+
+ QemuVga_GetModePages(GLOBAL.curMode, GLOBAL.depth, NULL, &pageCount);
+ if (pageInfo->csPage >= pageCount)
+ return paramErr;
+
+ /* XXX Make it gray ! */
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreSetGray(VDGrayRecord *grayRecord)
+{
+ CHECK_OPEN( controlErr );
+
+ Trace(GraphicsCoreSetGray);
+
+ GLOBAL.qdLuminanceMapping = grayRecord->csMode;
+ return noErr;
+}
+
+
+OSStatus
+GraphicsCoreGetPages(VDPageInfo *pageInfo)
+{
+ UInt32 pageCount, depth;
+
+ CHECK_OPEN( statusErr );
+
+ Trace(GraphicsCoreGetPages);
+
+ depth = DepthModeToDepth(pageInfo->csMode);
+ QemuVga_GetModePages(GLOBAL.curMode, depth, NULL, &pageCount);
+ pageInfo->csPage = pageCount;
+
+ return noErr;
+}
+
+
+OSStatus
+GraphicsCoreGetGray(VDGrayRecord *grayRecord)
+{
+ CHECK_OPEN( statusErr );
+
+ Trace(GraphicsCoreGetGray);
+
+ grayRecord->csMode = (GLOBAL.qdLuminanceMapping);
+
+ return noErr;
+}
+
+/************************ Hardware Cursor ****************************/
+
+OSStatus
+GraphicsCoreSupportsHardwareCursor(VDSupportsHardwareCursorRec *hwCursRec)
+{
+ CHECK_OPEN( statusErr );
+
+ Trace(GraphicsCoreSupportsHardwareCursor);
+
+ hwCursRec->csReserved1 = 0;
+ hwCursRec->csReserved2 = 0;
+
+ hwCursRec->csSupportsHardwareCursor = false;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreSetHardwareCursor(VDSetHardwareCursorRec *setHwCursRec)
+{
+ Trace(GraphicsCoreSetHardwareCursor);
+
+ return controlErr;
+}
+
+OSStatus
+GraphicsCoreDrawHardwareCursor(VDDrawHardwareCursorRec *drawHwCursRec)
+{
+ Trace(GraphicsCoreDrawHardwareCursor);
+
+ return controlErr;
+}
+
+OSStatus
+GraphicsCoreGetHardwareCursorDrawState(VDHardwareCursorDrawStateRec *hwCursDStateRec)
+{
+ Trace(GraphicsCoreGetHardwareCursorDrawState);
+
+ return statusErr;
+}
+
+/************************ Misc ****************************/
+
+OSStatus
+GraphicsCoreSetInterrupt(VDFlagRecord *flagRecord)
+{
+ CHECK_OPEN( controlErr );
+
+ Trace(GraphicsCoreSetInterrupt);
+
+ if (!flagRecord->csMode)
+ QemuVga_EnableInterrupts();
+ else
+ QemuVga_DisableInterrupts();
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetInterrupt(VDFlagRecord *flagRecord)
+{
+ Trace(GraphicsCoreGetInterrupt);
+
+ CHECK_OPEN( statusErr );
+
+ flagRecord->csMode = !GLOBAL.qdInterruptsEnable;
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreSetSync(VDSyncInfoRec *syncInfo)
+{
+ UInt8 sync, mask;
+
+ Trace(GraphicsCoreSetSync);
+
+ CHECK_OPEN( controlErr );
+
+ sync = syncInfo->csMode;
+ mask = syncInfo->csFlags;
+
+ /* Unblank shortcut */
+ if (sync == 0 && mask == 0) {
+ sync = 0;
+ mask = kDPMSSyncMask;
+ }
+ /* Blank shortcut */
+ if (sync == 0xff && mask == 0xff) {
+ sync = 0x7;
+ mask = kDPMSSyncMask;
+ }
+
+ lprintf("SetSync req: sync=%x mask=%x\n", sync, mask);
+
+ /* Only care about the DPMS mode */
+ if ((mask & kDPMSSyncMask) == 0)
+ return noErr;
+
+ /* If any sync is disabled, blank */
+ if (sync & kDPMSSyncMask)
+ QemuVga_Blank(true);
+ else
+ QemuVga_Blank(false);
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetSync(VDSyncInfoRec *syncInfo)
+{
+ Trace(GraphicsCoreGetSync);
+
+ if (syncInfo->csMode == 0xff) {
+ /* Return HW caps */
+ syncInfo->csMode = (1 << kDisableHorizontalSyncBit) |
+ (1 << kDisableVerticalSyncBit) |
+ (1 << kDisableCompositeSyncBit) |
+ (1 << kNoSeparateSyncControlBit);
+ } else if (syncInfo->csMode == 0x00){
+ syncInfo->csMode = GLOBAL.blanked ? kDPMSSyncMask : 0;
+ } else
+ return statusErr;
+
+ syncInfo->csFlags = 0;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreSetPowerState(VDPowerStateRec *powerStateRec)
+{
+ Trace(GraphicsCoreSetPowerState);
+
+ return paramErr;
+}
+
+OSStatus
+GraphicsCoreGetPowerState(VDPowerStateRec *powerStateRec)
+{
+ Trace(GraphicsCoreGetPowerState);
+
+ return paramErr;
+}
+
+OSStatus
+GraphicsCoreSetPreferredConfiguration(VDSwitchInfoRec *switchInfo)
+{
+ Trace(GraphicsCoreSetPreferredConfiguration);
+
+ CHECK_OPEN( controlErr );
+
+ return noErr;
+}
+
+
+OSStatus
+GraphicsCoreGetPreferredConfiguration(VDSwitchInfoRec *switchInfo)
+{
+ Trace(GraphicsCoreGetPreferredConfiguration);
+
+ CHECK_OPEN( statusErr );
+
+ switchInfo->csMode = DepthToDepthMode(GLOBAL.bootDepth);
+ switchInfo->csData = GLOBAL.bootMode + 1; /* Modes are 1 based */
+ switchInfo->csPage = 0;
+ switchInfo->csBaseAddr = FB_START;
+
+ return noErr;
+}
+
+// €***************** Misc status calls *********************/
+
+OSStatus
+GraphicsCoreGetBaseAddress(VDPageInfo *pageInfo)
+{
+ UInt32 pageCount, pageSize;
+
+ Trace(GraphicsCoreGetBaseAddress);
+
+ CHECK_OPEN( statusErr );
+
+ QemuVga_GetModePages(GLOBAL.curMode, GLOBAL.depth, &pageSize, &pageCount);
+ if (pageInfo->csPage >= pageCount)
+ return paramErr;
+
+ pageInfo->csBaseAddr = FB_START + pageInfo->csPage * pageSize;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetConnection(VDDisplayConnectInfoRec *connectInfo)
+{
+ Trace(GraphicsCoreGetConnection);
+
+ CHECK_OPEN( statusErr );
+
+ connectInfo->csDisplayType = kVGAConnect;
+ connectInfo->csConnectTaggedType = 0;
+ connectInfo->csConnectTaggedData = 0;
+
+ connectInfo->csConnectFlags =
+ (1 << kTaggingInfoNonStandard) | (1 << kUncertainConnection);
+
+ connectInfo->csDisplayComponent = 0;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetMode(VDPageInfo *pageInfo)
+{
+ Trace(GraphicsCoreGetMode);
+
+ CHECK_OPEN( statusErr );
+
+ pageInfo->csMode = DepthToDepthMode(GLOBAL.depth);
+ pageInfo->csPage = GLOBAL.curPage;
+ pageInfo->csBaseAddr = GLOBAL.curBaseAddress;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetCurrentMode(VDSwitchInfoRec *switchInfo)
+{
+ Trace(GraphicsCoreGetCurrentMode);
+
+ CHECK_OPEN( statusErr );
+
+ //lprintf("GetCurrentMode\n");
+ switchInfo->csMode = DepthToDepthMode(GLOBAL.depth);
+ switchInfo->csData = GLOBAL.curMode + 1;
+ switchInfo->csPage = GLOBAL.curPage;
+ switchInfo->csBaseAddr = GLOBAL.curBaseAddress;
+
+ return noErr;
+}
+
+/********************** Video mode *****************************/
+
+OSStatus
+GraphicsCoreGetModeTiming(VDTimingInfoRec *timingInfo)
+{
+ Trace(GraphicsCoreGetModeTiming);
+
+ CHECK_OPEN( statusErr );
+
+ if (timingInfo->csTimingMode < 1 || timingInfo->csTimingMode > GLOBAL.numModes )
+ return paramErr;
+
+ timingInfo->csTimingFlags =
+ (1 << kModeValid) | (1 << kModeDefault) | (1 <<kModeSafe);
+
+ timingInfo->csTimingFormat = kDeclROMtables;
+ timingInfo->csTimingData = timingVESA_640x480_60hz;
+
+ return noErr;
+}
+
+
+OSStatus
+GraphicsCoreSetMode(VDPageInfo *pageInfo)
+{
+ UInt32 newDepth, newPage, pageCount;
+
+ Trace(GraphicsCoreSetMode);
+
+ CHECK_OPEN(controlErr);
+
+ newDepth = DepthModeToDepth(pageInfo->csMode);
+ newPage = pageInfo->csPage;
+ QemuVga_GetModePages(GLOBAL.curMode, newDepth, NULL, &pageCount);
+
+ lprintf("Requested depth=%d page=%d\n", newDepth, newPage);
+ if (pageInfo->csPage >= pageCount)
+ return paramErr;
+
+ if (newDepth != GLOBAL.depth || newPage != GLOBAL.curPage)
+ QemuVga_SetMode(GLOBAL.curMode, newDepth, newPage);
+
+ pageInfo->csBaseAddr = GLOBAL.curBaseAddress;
+ lprintf("Returning BA: %lx\n", pageInfo->csBaseAddr);
+
+ return noErr;
+}
+
+
+OSStatus
+GraphicsCoreSwitchMode(VDSwitchInfoRec *switchInfo)
+{
+ UInt32 newMode, newDepth, newPage, pageCount;
+
+ Trace(GraphicsCoreSwitchMode);
+
+ CHECK_OPEN(controlErr);
+
+ newMode = switchInfo->csData - 1;
+ newDepth = DepthModeToDepth(switchInfo->csMode);
+ newPage = switchInfo->csPage;
+ QemuVga_GetModePages(GLOBAL.curMode, newDepth, NULL, &pageCount);
+
+ if (newPage >= pageCount)
+ return paramErr;
+
+ if (newMode != GLOBAL.curMode || newDepth != GLOBAL.depth ||
+ newPage != GLOBAL.curPage) {
+ if (QemuVga_SetMode(newMode, newDepth, newPage))
+ return controlErr;
+ }
+ switchInfo->csBaseAddr = GLOBAL.curBaseAddress;
+
+ return noErr;
+}
+
+OSStatus
+GraphicsCoreGetNextResolution(VDResolutionInfoRec *resInfo)
+{
+ UInt32 width, height;
+ int id = resInfo->csPreviousDisplayModeID;
+
+ Trace(GraphicsCoreGetNextResolution);
+
+ CHECK_OPEN(statusErr);
+
+ if (id == kDisplayModeIDFindFirstResolution)
+ id = 0;
+ else if (id == kDisplayModeIDCurrent)
+ id = GLOBAL.curMode;
+ id++;
+
+ if (id == GLOBAL.numModes + 1) {
+ resInfo->csDisplayModeID = kDisplayModeIDNoMoreResolutions;
+ return noErr;
+ }
+ if (id < 1 || id > GLOBAL.numModes)
+ return paramErr;
+
+ if (QemuVga_GetModeInfo(id - 1, &width, &height))
+ return paramErr;
+
+ resInfo->csDisplayModeID = id;
+ resInfo->csHorizontalPixels = width;
+ resInfo->csVerticalLines = height;
+ resInfo->csRefreshRate = 60;
+ resInfo->csMaxDepthMode = MAX_DEPTH_MODE; /* XXX Calculate if it fits ! */
+
+ return noErr;
+}
+
+// Looks quite a bit hard-coded, isn't it ?
+OSStatus
+GraphicsCoreGetVideoParams(VDVideoParametersInfoRec *videoParams)
+{
+ UInt32 width, height, depth, rowBytes, pageCount;
+ OSStatus err = noErr;
+
+ Trace(GraphicsCoreGetVideoParams);
+
+ CHECK_OPEN(statusErr);
+
+ if (videoParams->csDisplayModeID < 1 || videoParams->csDisplayModeID > GLOBAL.numModes)
+ return paramErr;
+ if (videoParams->csDepthMode > MAX_DEPTH_MODE)
+ return paramErr;
+ if (QemuVga_GetModeInfo(videoParams->csDisplayModeID - 1, &width, &height))
+ return paramErr;
+
+ depth = DepthModeToDepth(videoParams->csDepthMode);
+ QemuVga_GetModePages(videoParams->csDisplayModeID - 1, depth, NULL, &pageCount);
+ videoParams->csPageCount = pageCount;
+ lprintf("Video Params says %d pages\n", pageCount);
+
+ rowBytes = width * ((depth + 7) / 8);
+ (videoParams->csVPBlockPtr)->vpBaseOffset = 0; // For us, it's always 0
+ (videoParams->csVPBlockPtr)->vpBounds.top = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpBounds.left = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpVersion = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpPackType = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpPackSize = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpHRes = 0x00480000; // Hard coded to 72 dpi
+ (videoParams->csVPBlockPtr)->vpVRes = 0x00480000; // Hard coded to 72 dpi
+ (videoParams->csVPBlockPtr)->vpPlaneBytes = 0; // Always 0
+ (videoParams->csVPBlockPtr)->vpBounds.bottom = height;
+ (videoParams->csVPBlockPtr)->vpBounds.right = width;
+ (videoParams->csVPBlockPtr)->vpRowBytes = rowBytes;
+
+ switch (depth) {
+ case 8:
+ videoParams->csDeviceType = clutType;
+ (videoParams->csVPBlockPtr)->vpPixelType = 0;
+ (videoParams->csVPBlockPtr)->vpPixelSize = 8;
+ (videoParams->csVPBlockPtr)->vpCmpCount = 1;
+ (videoParams->csVPBlockPtr)->vpCmpSize = 8;
+ (videoParams->csVPBlockPtr)->vpPlaneBytes = 0;
+ break;
+ case 15:
+ case 16:
+ videoParams->csDeviceType = directType;
+ (videoParams->csVPBlockPtr)->vpPixelType = 16;
+ (videoParams->csVPBlockPtr)->vpPixelSize = 16;
+ (videoParams->csVPBlockPtr)->vpCmpCount = 3;
+ (videoParams->csVPBlockPtr)->vpCmpSize = 5;
+ (videoParams->csVPBlockPtr)->vpPlaneBytes = 0;
+ break;
+ case 32:
+ videoParams->csDeviceType = directType;
+ (videoParams->csVPBlockPtr)->vpPixelType = 16;
+ (videoParams->csVPBlockPtr)->vpPixelSize = 32;
+ (videoParams->csVPBlockPtr)->vpCmpCount = 3;
+ (videoParams->csVPBlockPtr)->vpCmpSize = 8;
+ (videoParams->csVPBlockPtr)->vpPlaneBytes = 0;
+ break;
+ default:
+ err = paramErr;
+ break;
+ }
+
+ return err;
+}
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.h b/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.h
new file mode 100644
index 000000000..cca4d28e6
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/DriverQDCalls.h
@@ -0,0 +1,42 @@
+#ifndef _DRIVER_QD_CALLS_H__
+#define _DRIVER_QD_CALLS_H__
+
+// ###ÊCONTROL ROUTINES ###
+
+OSStatus GraphicsCoreSetMode(VDPageInfo *pageInfo);
+OSStatus GraphicsCoreSetEntries(VDSetEntryRecord *entryRecord);
+OSStatus GraphicsCoreSetGamma(VDGammaRecord *gammaRec);
+OSStatus GraphicsCoreGrayPage(VDPageInfo *pageInfo);
+OSStatus GraphicsCoreSetGray(VDGrayRecord *grayRecord);
+OSStatus GraphicsCoreSetInterrupt(VDFlagRecord *flagRecord);
+OSStatus GraphicsCoreDirectSetEntries(VDSetEntryRecord *entryRecord);
+OSStatus GraphicsCoreSwitchMode(VDSwitchInfoRec *switchInfo);
+OSStatus GraphicsCoreSetSync(VDSyncInfoRec *syncInfo);
+OSStatus GraphicsCoreSetPreferredConfiguration(VDSwitchInfoRec *switchInfo);
+OSStatus GraphicsCoreSetHardwareCursor(VDSetHardwareCursorRec *setHwCursRec);
+OSStatus GraphicsCoreDrawHardwareCursor(VDDrawHardwareCursorRec *drawHwCursRec);
+OSStatus GraphicsCoreSetPowerState(VDPowerStateRec * powerStateRec);
+
+// ### STATUS ROUTINES ###
+
+OSStatus GraphicsCoreGetMode(VDPageInfo *pageInfo);
+OSStatus GraphicsCoreGetEntries(VDSetEntryRecord *entryRecord);
+OSStatus GraphicsCoreGetPages(VDPageInfo *pageInfo);
+OSStatus GraphicsCoreGetBaseAddress(VDPageInfo *pageInfo);
+OSStatus GraphicsCoreGetGray(VDGrayRecord *grayRecord);
+OSStatus GraphicsCoreGetInterrupt(VDFlagRecord *flagRecord);
+OSStatus GraphicsCoreGetGamma(VDGammaRecord *gammaRecord);
+OSStatus GraphicsCoreGetCurrentMode(VDSwitchInfoRec *switchInfo);
+OSStatus GraphicsCoreGetSync(VDSyncInfoRec *syncInfo);
+OSStatus GraphicsCoreGetConnection(VDDisplayConnectInfoRec *connectInfo);
+OSStatus GraphicsCoreGetModeTiming(VDTimingInfoRec *timingInfo);
+OSStatus GraphicsCoreGetPreferredConfiguration(VDSwitchInfoRec *switchInfo);
+OSStatus GraphicsCoreGetNextResolution(VDResolutionInfoRec *resInfo);
+OSStatus GraphicsCoreGetVideoParams(VDVideoParametersInfoRec *videoParams);
+OSStatus GraphicsCoreGetGammaInfoList(VDGetGammaListRec *gammaList);
+OSStatus GraphicsCoreRetrieveGammaTable(VDRetrieveGammaRec *gammaRec);
+OSStatus GraphicsCoreSupportsHardwareCursor(VDSupportsHardwareCursorRec *hwCursRec);
+OSStatus GraphicsCoreGetHardwareCursorDrawState(VDHardwareCursorDrawStateRec *hwCursDStateRec);
+OSStatus GraphicsCoreGetPowerState(VDPowerStateRec * powerStateRec);
+
+#endif /* DRIVER_QD_CALLS */
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/QemuEdid.c b/roms/QemuMacDrivers/QemuVGADriver/src/QemuEdid.c
new file mode 100644
index 000000000..57de244a3
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/QemuEdid.c
@@ -0,0 +1 @@
+#include <Video.h> #include "VideoDriverPrivate.h" #include "logger.h" #include "QemuVga.h" /* List of video modes */ struct vMode *vModes; /* Default modes if no EDID (must be 0 terminated) */ static struct _vMode defaultVModes[] = { { 640, 480 }, { 800, 600 }, { 1024, 768 }, { 1280, 1024 }, { 1600, 1200 }, { 1920, 1080 }, { 1920, 1200 }, }; /* EDID standard timings */ static struct _vMode edidStdVModes[] = { { 800, 600 }, /* 800x600 @ 60Hz */ { 800, 600 }, /* 800x600 @ 56Hz */ { 640, 480 }, /* 640x480 @ 75Hz */ { 640, 480 }, /* 640x480 @ 72Hz */ { 640, 480 }, /* 640x480 @ 67Hz */ { 640, 480 }, /* 640x480 @ 60Hz */ { 720, 400 }, /* 720x400 @ 88Hz */ { 720, 400 }, /* 720x400 @ 70Hz */ { 1280, 1024 }, /* 1280x1024 @ 75Hz */ { 1024, 768 }, /* 1024x768 @ 75Hz */ { 1024, 768 }, /* 1024x768 @ 72Hz */ { 1024, 768 }, /* 1024x768 @ 60Hz */ { 1024, 768 }, /* 1024x768 @ 87Hz */ { 832, 624 }, /* 832x624 @ 75Hz */ { 800, 600 }, /* 800x600 @ 75Hz */ { 800, 600 }, /* 800x600 @ 72Hz */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 1152, 870 }, /* 1152x870 @ 75Hz */ }; /* EDID extended standard timings */ static struct _vMode edidExtStdVModes[] = { { 1152, 864 }, /* 1152x864 @ 85Hz */ { 1024, 768 }, /* 1024x768 @ 75Hz */ { 800, 600 }, /* 800x600 @ 85Hz */ { 848, 480 }, /* 848x480 @ 60Hz */ { 640, 480 }, /* 640x480 @ 85Hz */ { 720, 400 }, /* 720x400 @ 85Hz */ { 640, 400 }, /* 640x400 @ 85Hz */ { 640, 350 }, /* 640x350 @ 85Hz */ { 1280, 1024 }, /* 1280x1024 @ 85Hz */ { 1280, 1024 }, /* 1280x1024 @ 60Hz */ { 1280, 960 }, /* 1280x960 @ 85Hz */ { 1280, 960 }, /* 1280x960 @ 60Hz */ { 1280, 768 }, /* 1280x768 @ 85Hz */ { 1280, 768 }, /* 1280x768 @ 75Hz */ { 1280, 768 }, /* 1280x768 @ 60Hz */ { 1280, 768 }, /* 1280x768 @ 60Hz (CVT-RB) */ { 1440, 1050 }, /* 1440x1050 @ 75Hz */ { 1440, 1050 }, /* 1440x1050 @ 60Hz */ { 1440, 1050 }, /* 1440x1050 @ 60Hz (CVT-RB) */ { 1440, 900 }, /* 1440x900 @ 85Hz */ { 1440, 900 }, /* 1440x900 @ 75Hz */ { 1440, 900 }, /* 1440x900 @ 60Hz (CVT-RB) */ { 1360, 768 }, /* 1360x768 @ 60Hz */ { 1360, 768 }, /* 1360x768 @ 60Hz (CVT-RB) */ { 1600, 1200 }, /* 1600x1200 @ 70Hz */ { 1600, 1200 }, /* 1600x1200 @ 65Hz */ { 1600, 1200 }, /* 1600x1200 @ 60Hz */ { 1680, 1050 }, /* 1680x1050 @ 85Hz */ { 1680, 1050 }, /* 1680x1050 @ 75Hz */ { 1680, 1050 }, /* 1680x1050 @ 60Hz */ { 1680, 1050 }, /* 1680x1050 @ 60Hz (CVT-RB) */ { 1440, 1050 }, /* 1440x1050 @ 85Hz */ { 1920, 1200 }, /* 1920x1200 @ 60Hz */ { 1920, 1200 }, /* 1920x1200 @ 60Hz (CVT-RB) */ { 1856, 1392 }, /* 1856x1392 @ 75Hz */ { 1856, 1392 }, /* 1856x1392 @ 60Hz */ { 1792, 1344 }, /* 1792x1344 @ 75Hz */ { 1792, 1344 }, /* 1792x1344 @ 60Hz */ { 1600, 1200 }, /* 1600x1200 @ 85Hz */ { 1600, 1200 }, /* 1600x1200 @ 75Hz */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 0, 0 }, /* Reserved */ { 1920, 1440 }, /* 1920x1440 @ 75Hz */ { 1920, 1440 }, /* 1920x1440 @ 60Hz */ { 1920, 1200 }, /* 1920x1200 @ 75Hz */ { 1920, 1200 }, /* 1920x1200 @ 60Hz */ }; /* EDID timing extension modes */ static struct _vMode edidTimingExtensionVModes[] = { { 640, 480 }, /* DMT0659 */ { 720, 480 }, /* 480p */ { 720, 480 }, /* 480pH */ { 1280, 720 }, /* 720p */ { 1920, 540 }, /* 1080i */ { 1440, 240 }, /* 480i */ { 1440, 240 }, /* 480iH */ { 1440, 240 }, /* 240p */ { 1440, 240 }, /* 240pH */ { 2880, 240 }, /* 480i4x */ { 2880, 240 }, /* 480i4xH */ { 2880, 240 }, /* 240p4x */ { 2880, 240 }, /* 240p4xH */ { 1440, 480 }, /* 480p2x */ { 1440, 480 }, /* 480p2xH */ { 1920, 1080 }, /* 1080p */ { 720, 576 }, /* 576p */ { 720, 576 }, /* 576pH */ { 1280, 720 }, /* 720p50 */ { 1920, 540 }, /* 1080i25 */ { 1440, 288 }, /* 576i */ { 1440, 288 }, /* 576iH */ { 1440, 288 }, /* 288p */ { 1440, 288 }, /* 288pH */ { 2880, 288 }, /* 576i4x */ { 2880, 288 }, /* 576i4xH */ { 2880, 288 }, /* 288p4x */ { 2880, 288 }, /* 288p4xH */ { 1440, 576 }, /* 576p2x */ { 1440, 576 }, /* 576p2xH */ { 1920, 1080 }, /* 1080p50 */ { 1920, 1080 }, /* 1080p24 */ { 1920, 1080 }, /* 1080p25 */ { 1920, 1080 }, /* 1080p30 */ { 2880, 240 }, /* 480p4x */ { 2880, 240 }, /* 480p4xH */ { 2880, 576 }, /* 576p4x */ { 2880, 576 }, /* 576p4xH */ { 1920, 540 }, /* 1080i25 */ { 1920, 540 }, /* 1080i50 */ { 1280, 720 }, /* 720p100 */ { 720, 576 }, /* 576p100 */ { 720, 576 }, /* 576p100H */ { 1440, 576 }, /* 576i50 */ { 1440, 576 }, /* 576i50H */ { 1920, 540 }, /* 1080i60 */ { 1280, 720 }, /* 720p120 */ { 720, 576 }, /* 480p119 */ { 720, 576 }, /* 480p119H */ { 1440, 576 }, /* 480i59 */ { 1440, 576 }, /* 480i59H */ { 720, 576 }, /* 576p200 */ { 720, 576 }, /* 576p200H */ { 1440, 288 }, /* 576i100 */ { 1440, 288 }, /* 576i100H */ { 720, 480 }, /* 480p239 */ { 720, 480 }, /* 480p239H */ { 1440, 240 }, /* 480i119 */ { 1440, 240 }, /* 480i119H */ { 1280, 720 }, /* 720p24 */ { 1280, 720 }, /* 720p25 */ { 1280, 720 }, /* 720p30 */ { 1920, 1080 }, /* 1080p120 */ { 1920, 1080 }, /* 1080p100 */ { 1280, 720 }, /* 720p24 */ { 1280, 720 }, /* 720p25 */ { 1280, 720 }, /* 720p30 */ { 1280, 720 }, /* 720p50 */ { 1650, 750 }, /* 720p */ { 1280, 720 }, /* 720p100 */ { 1280, 720 }, /* 720p120 */ { 1920, 1080 }, /* 1080p24 */ { 1920, 1280 }, /* 1080p25 */ { 1920, 1280 }, /* 1080p30 */ { 1920, 1280 }, /* 1080p50 */ { 1920, 1280 }, /* 1080p */ { 1920, 1280 }, /* 1080p100 */ { 1920, 1280 }, /* 1080p120 */ { 1680, 720 }, /* 720p2x24 */ { 1680, 720 }, /* 720p2x25 */ { 1680, 720 }, /* 720p2x30 */ { 1680, 720 }, /* 720p2x50 */ { 1680, 720 }, /* 720p2x */ { 1680, 720 }, /* 720p2x100 */ { 1680, 720 }, /* 720p2x120 */ { 2560, 1080 }, /* 1080p2x24 */ { 2560, 1080 }, /* 1080p2x25 */ { 2560, 1080 }, /* 1080p2x30 */ { 2560, 1080 }, /* 1080p2x50 */ { 2560, 1080 }, /* 1080p2x */ { 2560, 1080 }, /* 1080p2x100 */ { 2560, 1080 }, /* 1080p2x120 */ { 3840, 2160 }, /* 2160p24 */ { 3840, 2160 }, /* 2160p25 */ { 3840, 2160 }, /* 2160p30 */ { 3840, 2160 }, /* 2160p50 */ { 3840, 2160 }, /* 2160p */ { 4096, 2160 }, /* 2160p24 */ { 4096, 2160 }, /* 2160p25 */ { 4096, 2160 }, /* 2160p30 */ { 4096, 2160 }, /* 2160p50 */ { 4096, 2160 }, /* 2160p */ { 3840, 2160 }, /* 2160p24 */ { 3840, 2160 }, /* 2160p25 */ { 3840, 2160 }, /* 2160p30 */ { 3840, 2160 }, /* 2160p50 */ { 3840, 2160 }, /* 2160p */ { 1280, 720 }, /* 720p48 */ { 1280, 720 }, /* 720p48 */ { 1680, 720 }, /* 720p2x48 */ { 1920, 1280 }, /* 1080p48 */ { 1920, 1280 }, /* 1080p48 */ { 2560, 1080 }, /* 1080p2x48 */ { 3840, 2160 }, /* 2160p48 */ { 4096, 2160 }, /* 2160p48 */ { 3840, 2160 }, /* 2160p48 */ { 3840, 2160 }, /* 2160p100 */ { 3840, 2160 }, /* 2160p120 */ { 3840, 2160 }, /* 2160p100 */ { 3840, 2160 }, /* 2160p120 */ { 5120, 2160 }, /* 2160p2x24 */ { 5120, 2160 }, /* 2160p2x25 */ { 5120, 2160 }, /* 2160p2x30 */ { 5120, 2160 }, /* 2160p2x48 */ { 5120, 2160 }, /* 2160p2x50 */ { 5120, 2160 }, /* 2160p2x */ { 5120, 2160 }, /* 2160p2x100 */ { 0, 0 }, /* Reserved */ }; struct _vMode *getVMode(UInt16 idx) { struct vMode *v = vModes; UInt16 i = 0; while (v != NULL) { if (i == idx) { return v->mode; } v = v->next; i++; } return NULL; } static void dumpVModeList(void) { struct vMode *v = vModes; while (v != NULL) { lprintf(" %d, %d\n", v->mode->width, v->mode->height); v = v->next; } } static UInt16 getVModeListSize(void) { struct vMode *v = vModes; UInt16 i = 0; while (v != NULL) { v = v->next; i++; } return i; } static void addVModeToList(struct _vMode *vMode) { /* Add mode to list */ struct vMode **v = &vModes; struct vMode *n; while (*v != NULL) { /* Don't add mode if resulting framebuffer is too large for PCI MMIO space */ if (vMode->width * vMode->height * 4 > GLOBAL.boardFBMappedSize) { return; } /* Don't add duplicate mode if it already exists */ if ((*v)->mode->width == vMode->width && (*v)->mode->height == vMode->height) { return; } /* Add mode in order */ if (((*v)->mode->width == vMode->width && (*v)->mode->height > vMode->height) || ((*v)->mode->width > vMode->width)) { n = PoolAllocateResident(sizeof(struct vMode), true); n->next = *v; n->mode = vMode; *v = n; return; } v = &(*v)->next; } n = PoolAllocateResident(sizeof(struct vMode), true); n->next = NULL; n->mode = vMode; *v = n; } static UInt8 EdidReadB(UInt16 port) { UInt8 *ptr, val; ptr = (UInt8 *)((UInt32)GLOBAL.boardRegAddress + port); val = *ptr; SynchronizeIO(); return val; } static UInt16 GetEdidSize() { return 0x80 * ((UInt16)EdidReadB(0x7e) + 1); } static void ParseEdid(UInt8 *edid) { int i, j, d, idx; /* Standard modes */ lprintf("Standard modes: \n"); for (i = 35; i <= 37; i++) { for (j = 0; j <= 7; j++) { if (edid[i] & (1 << j)) { idx = ((i - 35) << 3) + j; lprintf(" %d, %d\n", edidStdVModes[idx].width, edidStdVModes[idx].height); addVModeToList(&edidStdVModes[idx]); } } } /* Extended standard modes */ lprintf("Extended standard modes: \n"); d = i = 54; while (d < 126) { /* Search for descriptor */ if (edid[d] == 0x0 && edid[d + 1] == 0x0 && edid[d + 2] == 0x0 && edid[d + 3] == 0xf7 && edid[d + 4] == 0x0) { for (i = d + 6; i <= d + 11; i++) { for (j = 0; j <= 7; j++) { if (edid[i] & (1 << j)) { idx = ((i - d - 6) << 3) + j; lprintf(" %d, %d\n", edidExtStdVModes[idx].width, edidExtStdVModes[idx].height); addVModeToList(&edidExtStdVModes[idx]); } } } break; } d += 18; } /* Extension block modes */ lprintf("Extension block modes: \n"); if (edid[126] > 0) { /* Search for descriptor */ i = 128; if (edid[i] == 0x2 && edid[i + 1] == 0x3) { /* Data present: check for video block */ d = edid[i + 2]; if (d > 0x4 && (edid[i + 4] & 0xf0) == (2 << 5)) { for (j = 0; j < (edid[i + 4] & 0x1f); j++) { idx = edid[(i + 5 + j)]; lprintf(" %d, %d\n", edidTimingExtensionVModes[idx].width, edidTimingExtensionVModes[idx].height); addVModeToList(&edidTimingExtensionVModes[idx]); } } } } } static void ParseDefaultVModes() { UInt8 defaultVModeCount; int i; defaultVModeCount = sizeof(defaultVModes) / sizeof(struct _vMode); lprintf("Default modes:\n"); for (i = 0; i < defaultVModeCount; i++) { lprintf(" %d, %d\n", defaultVModes[i].width, defaultVModes[i].height); addVModeToList(&defaultVModes[i]); } } UInt16 QemuVga_ReadEdidModes(void) { UInt16 edidSize = GetEdidSize(); UInt8 *edid; int i; if (EdidReadB(0x0) != 0x0 || EdidReadB(0x1) != 0xff) { lprintf("No valid EDID detected, using default modes\n"); ParseDefaultVModes(); return getVModeListSize(); } lprintf("EDID size: %d bytes, reading modes from EDID...\n", edidSize); edid = (UInt8 *)PoolAllocateResident(edidSize, true); if (!edid) return; for (i = 0; i < edidSize; i++) { edid[i] = EdidReadB(i); } ParseEdid(edid); PoolDeallocate(edid); lprintf("Final mode list:\n"); dumpVModeList(); return getVModeListSize(); } \ No newline at end of file
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.c b/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.c
new file mode 100644
index 000000000..7b6dd2303
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.c
@@ -0,0 +1,386 @@
+#include "VideoDriverPrivate.h"
+#include "VideoDriverPrototypes.h"
+#include "DriverQDCalls.h"
+#include "QemuVga.h"
+#include <Timer.h>
+
+/*
+static struct _vMode defaultVModes[] = {
+ { 640, 480 },
+ { 800, 600 },
+ { 1024, 768 },
+ { 1280, 1024 },
+ { 1600, 1200 },
+ { 1920, 1080 },
+ { 1920, 1200 },
+ { 0, 0 }
+};
+*/
+static void VgaWriteB(UInt16 port, UInt8 val)
+{
+ UInt8 *ptr;
+
+ ptr = (UInt8 *)((UInt32)GLOBAL.boardRegAddress + port + 0x400 - 0x3c0);
+ *ptr = val;
+ SynchronizeIO();
+}
+
+static UInt8 VgaReadB(UInt16 port)
+{
+ UInt8 *ptr, val;
+
+ ptr = (UInt8 *)((UInt32)GLOBAL.boardRegAddress + port + 0x400 - 0x3c0);
+ val = *ptr;
+ SynchronizeIO();
+ return val;
+}
+
+static void DispiWriteW(UInt16 reg, UInt16 val)
+{
+ UInt16 *ptr;
+
+ ptr = (UInt16 *)((UInt32)GLOBAL.boardRegAddress + (reg << 1) + 0x500);
+ *ptr = EndianSwap16Bit(val);
+ SynchronizeIO();
+}
+
+static UInt16 DispiReadW(UInt16 reg)
+{
+ UInt16 *ptr, val;
+
+ ptr = (UInt16 *)((UInt32)GLOBAL.boardRegAddress + (reg << 1) + 0x500);
+ val = EndianSwap16Bit(*ptr);
+ SynchronizeIO();
+ return val;
+}
+
+static void ExtWriteL(UInt16 reg, UInt32 val)
+{
+ UInt32 *ptr;
+
+ ptr = (UInt32 *)((UInt32)GLOBAL.boardRegAddress + (reg << 2) + 0x600);
+ *ptr = EndianSwap32Bit(val);
+ SynchronizeIO();
+}
+
+static UInt32 ExtReadL(UInt32 reg)
+{
+ UInt32 *ptr, val;
+
+ ptr = (UInt32 *)((UInt32)GLOBAL.boardRegAddress + (reg << 2) + 0x600);
+ val = EndianSwap32Bit(*ptr);
+ SynchronizeIO();
+ return val;
+}
+
+static OSStatus VBLTimerProc(void *p1, void *p2);
+
+#ifndef USE_DSL_TIMER
+static TMTask gLegacyTimer;
+
+static pascal void legacyTimerCB(TMTaskPtr *inTask)
+{
+ VBLTimerProc(NULL, NULL);
+}
+
+static const RoutineDescriptor gLegacyTimerDesc = BUILD_ROUTINE_DESCRIPTOR(uppTimerProcInfo, legacyTimerCB);
+static const TimerUPP gLegacyTimerProc = (TimerUPP) &gLegacyTimerDesc;
+static int gTimerInstalled;
+
+static OSStatus ScheduleVBLTimer(void)
+{
+ if (!gTimerInstalled) {
+ BlockZero(&gLegacyTimer, sizeof(gLegacyTimer));
+ gLegacyTimer.tmAddr = gLegacyTimerProc;
+ gLegacyTimer.qLink = (QElemPtr)'eada';
+ InsXTime((QElemPtr)&gLegacyTimer);
+ gTimerInstalled = true;
+ }
+ PrimeTime((QElemPtr)&gLegacyTimer, TIMER_DURATION);
+ return noErr;
+}
+
+#else
+
+static OSStatus ScheduleVBLTimer(void)
+{
+ AbsoluteTime target = AddDurationToAbsolute(TIMER_DURATION, UpTime());
+ return SetInterruptTimer(&target, VBLTimerProc, NULL, &GLOBAL.VBLTimerID);
+}
+
+#endif
+
+static OSStatus VBLTimerProc(void *p1, void *p2)
+{
+ static UInt32 VBcnt;
+
+ GLOBAL.inInterrupt = 1;
+
+ /* This can be called before the service is ready */
+ if (GLOBAL.qdVBLInterrupt && GLOBAL.qdInterruptsEnable)
+ VSLDoInterruptService(GLOBAL.qdVBLInterrupt);
+
+ /* Reschedule */
+ ScheduleVBLTimer();
+
+ GLOBAL.inInterrupt = 0;
+}
+
+#ifdef USE_PCI_IRQ
+static InterruptMemberNumber PCIInterruptHandler(InterruptSetMember ISTmember,
+ void *refCon, UInt32 theIntCount)
+{
+ UInt32 reg;
+
+ reg = ExtReadL(2);
+ if (!(reg & 1))
+ return kIsrIsNotComplete;
+ if (GLOBAL.qdVBLInterrupt && GLOBAL.qdInterruptsEnable)
+ VSLDoInterruptService(GLOBAL.qdVBLInterrupt);
+ ExtWriteL(2, 3);
+ return kIsrIsComplete;
+}
+#endif
+
+
+OSStatus QemuVga_Init(void)
+{
+ UInt16 id, i;
+ UInt32 mem, width, height, depth;
+ Boolean modeFound = false;
+ struct vMode *v;
+
+ lprintf("First MMIO read...\n");
+ id = DispiReadW(VBE_DISPI_INDEX_ID);
+ mem = DispiReadW(VBE_DISPI_INDEX_VIDEO_MEMORY_64K);
+ mem <<= 16;
+ lprintf("DISPI_ID=%04x VMEM=%d Mb\n", id, mem >> 20);
+ if ((id & 0xfff0) != VBE_DISPI_ID0) {
+ lprintf("Unsupported ID !\n");
+ return controlErr;
+ }
+ if (mem > GLOBAL.boardFBMappedSize)
+ mem = GLOBAL.boardFBMappedSize;
+ GLOBAL.vramSize = mem;
+
+ // XXX Add endian control regs
+
+ width = DispiReadW(VBE_DISPI_INDEX_XRES);
+ height = DispiReadW(VBE_DISPI_INDEX_YRES);
+ depth = DispiReadW(VBE_DISPI_INDEX_BPP);
+ lprintf("Current setting: %dx%dx%d\n", width, height, depth);
+
+ GLOBAL.depth = GLOBAL.bootDepth = depth;
+ GLOBAL.numModes = QemuVga_ReadEdidModes();
+ lprintf("Number of modes: %d\n", GLOBAL.numModes);
+
+ for (i = 0, v = vModes; v != NULL; v = v->next, i++) {
+ if (width == v->mode->width && height == v->mode->height) {
+ modeFound = true;
+ break;
+ }
+ }
+
+ if (!modeFound) {
+ lprintf("Not found in list ! using default.\n");
+ i = 0;
+ } else {
+ lprintf("Using mode: %d\n", i);
+ }
+ GLOBAL.bootMode = i;
+
+ QemuVga_SetMode(GLOBAL.bootMode, depth, 0);
+
+#ifdef USE_PCI_IRQ
+ if (SetupPCIInterrupt(&GLOBAL.deviceEntry, &GLOBAL.irqInfo,
+ PCIInterruptHandler, NULL) == noErr)
+ GLOBAL.hasPCIInterrupt = true;
+ else
+#else
+ GLOBAL.hasPCIInterrupt = false;
+#endif
+ return noErr;
+}
+
+OSStatus QemuVga_Open(void)
+{
+ lprintf("QemuVga v1.00\n");
+
+ GLOBAL.isOpen = true;
+
+ if (GLOBAL.hasPCIInterrupt) {
+ QemuVga_EnableInterrupts();
+ lprintf("VBL registered using PCI interrupts\n");
+ } else {
+ /* Schedule the timer now if timers are supported. They aren't on OS X
+ * in which case we must not create the VSL service, otherwise OS X will expect
+ * a VBL and fail to update the cursor when not getting one.
+ */
+ lprintf("Testing using timer to simulate VBL..\n");
+ GLOBAL.hasTimer = (ScheduleVBLTimer() == noErr);
+ GLOBAL.qdInterruptsEnable = GLOBAL.hasTimer;
+
+ if (GLOBAL.hasTimer)
+ lprintf("Using timer to simulate VBL.\n");
+ else
+ lprintf("No timer service (OS X ?), VBL not registered.\n");
+
+ }
+
+ /* Create VBL if we have a PCI interrupt or timer works */
+ if (GLOBAL.hasPCIInterrupt || GLOBAL.hasTimer)
+ VSLNewInterruptService(&GLOBAL.deviceEntry, kVBLInterruptServiceType, &GLOBAL.qdVBLInterrupt);
+
+ return noErr;
+}
+
+OSStatus QemuVga_Close(void)
+{
+ lprintf("Closing Driver...\n");
+
+ GLOBAL.isOpen = false;
+
+ QemuVga_DisableInterrupts();
+ if (GLOBAL.qdVBLInterrupt)
+ VSLDisposeInterruptService( GLOBAL.qdVBLInterrupt );
+ GLOBAL.qdVBLInterrupt = NULL;
+
+ return noErr;
+}
+
+OSStatus QemuVga_Exit(void)
+{
+ QemuVga_Close();
+
+ return noErr;
+}
+
+void QemuVga_EnableInterrupts(void)
+{
+ GLOBAL.qdInterruptsEnable = true;
+ if (GLOBAL.hasTimer)
+ ScheduleVBLTimer();
+ else if (GLOBAL.hasPCIInterrupt) {
+ GLOBAL.irqInfo.enableFunction(GLOBAL.irqInfo.interruptSetMember, GLOBAL.irqInfo.refCon);
+ ExtWriteL(2, 3);
+ }
+}
+
+void QemuVga_DisableInterrupts(void)
+{
+ AbsoluteTime remaining;
+
+ GLOBAL.qdInterruptsEnable = false;
+ if (GLOBAL.hasTimer)
+ CancelTimer(GLOBAL.VBLTimerID, &remaining);
+ else if (GLOBAL.hasPCIInterrupt) {
+ ExtWriteL(2, 1);
+ GLOBAL.irqInfo.disableFunction(GLOBAL.irqInfo.interruptSetMember, GLOBAL.irqInfo.refCon);
+ }
+}
+
+OSStatus QemuVga_SetColorEntry(UInt32 index, RGBColor *color)
+{
+ //lprintf("SetColorEntry %d, %x %x %x\n", index, color->red, color->green, color->blue);
+ VgaWriteB(0x3c8, index);
+ VgaWriteB(0x3c9, color->red >> 8);
+ VgaWriteB(0x3c9, color->green >> 8);
+ VgaWriteB(0x3c9, color->blue >> 8);
+ return noErr;
+}
+
+OSStatus QemuVga_GetColorEntry(UInt32 index, RGBColor *color)
+{
+ UInt32 r,g,b;
+
+ VgaWriteB(0x3c7, index);
+ r = VgaReadB(0x3c9);
+ g = VgaReadB(0x3c9);
+ b = VgaReadB(0x3c9);
+ color->red = (r << 8) | r;
+ color->green = (g << 8) | g;
+ color->blue = (b << 8) | b;
+
+ return noErr;
+}
+
+OSStatus QemuVga_GetModeInfo(UInt32 index, UInt32 *width, UInt32 *height)
+{
+ if (index >= GLOBAL.numModes)
+ return paramErr;
+ if (width)
+ *width = getVMode(index)->width;
+ if (height)
+ *height = getVMode(index)->height;
+ return noErr;
+}
+
+OSStatus QemuVga_GetModePages(UInt32 index, UInt32 depth,
+ UInt32 *pageSize, UInt32 *pageCount)
+{
+ UInt32 width, height, pBytes;
+
+ if (index >= GLOBAL.numModes)
+ return paramErr;
+ width = getVMode(index)->width;
+ height = getVMode(index)->height;
+ pBytes = width * ((depth + 7) / 8) * height;
+ if (pageSize)
+ *pageSize = pBytes;
+ if (pageCount) {
+ if (pBytes <= (GLOBAL.boardFBMappedSize / 2))
+ *pageCount = 2;
+ else
+ *pageCount = 1;
+ }
+ return noErr;
+}
+
+OSStatus QemuVga_SetMode(UInt32 mode, UInt32 depth, UInt32 page)
+{
+ UInt32 width, height;
+ UInt32 pageSize, numPages;
+
+ if (mode >= GLOBAL.numModes)
+ return paramErr;
+
+ width = getVMode(mode)->width;
+ height = getVMode(mode)->height;
+ QemuVga_GetModePages(mode, depth, &pageSize, &numPages);
+ lprintf("Set Mode: %dx%dx%d has %d pages\n", width, height, depth, numPages);
+ if (page >= numPages)
+ return paramErr;
+
+ DispiWriteW(VBE_DISPI_INDEX_ENABLE, 0);
+ DispiWriteW(VBE_DISPI_INDEX_BPP, depth);
+ DispiWriteW(VBE_DISPI_INDEX_XRES, width);
+ DispiWriteW(VBE_DISPI_INDEX_YRES, height);
+ DispiWriteW(VBE_DISPI_INDEX_BANK, 0);
+ DispiWriteW(VBE_DISPI_INDEX_VIRT_WIDTH, width);
+ DispiWriteW(VBE_DISPI_INDEX_VIRT_HEIGHT, height * numPages);
+ DispiWriteW(VBE_DISPI_INDEX_X_OFFSET, 0);
+ DispiWriteW(VBE_DISPI_INDEX_Y_OFFSET, height * page);
+ DispiWriteW(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED | VBE_DISPI_8BIT_DAC);
+ GLOBAL.curMode = mode;
+ GLOBAL.depth = depth;
+ GLOBAL.curPage = page;
+ GLOBAL.curBaseAddress = FB_START + page * pageSize;
+
+ return noErr;
+}
+
+OSStatus QemuVga_Blank(Boolean blank)
+{
+ /* We use the AR Index VGA register which is a flip flop
+ * so we need to ensure we write twice. We use a non-existing
+ * index so that the second write is dropped.
+ */
+ if (blank) {
+ VgaWriteB(0x3c0, 0x1f);
+ VgaWriteB(0x3c0, 0x1f);
+ } else {
+ VgaWriteB(0x3c0, 0x3f);
+ VgaWriteB(0x3c0, 0x3f);
+ }
+ GLOBAL.blanked = blank;
+}
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.h b/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.h
new file mode 100644
index 000000000..f070bb72a
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/QemuVga.h
@@ -0,0 +1,89 @@
+#ifndef __QEMU_VGA_H__
+#define __QEMU_VGA_H__
+
+/* This must be enabled for the MacOS X version of the timer otherwise
+ * we don't know if the call failed and don't back off to non-VBL ops
+ */
+#define USE_DSL_TIMER
+
+/* Pseudo VBL timer duration in ms */
+#define TIMER_DURATION 30
+
+/* Enable use of the PCI IRQ as VBL using non-upstream QEMU VGA
+ * extensions
+ */
+#undef USE_PCI_IRQ
+
+/* --- Qemu/Bochs special registers --- */
+
+#define VBE_DISPI_IOPORT_INDEX 0x01CE
+#define VBE_DISPI_IOPORT_DATA 0x01CF
+
+#define VBE_DISPI_INDEX_ID 0x0
+#define VBE_DISPI_INDEX_XRES 0x1
+#define VBE_DISPI_INDEX_YRES 0x2
+#define VBE_DISPI_INDEX_BPP 0x3
+#define VBE_DISPI_INDEX_ENABLE 0x4
+#define VBE_DISPI_INDEX_BANK 0x5
+#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
+#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
+#define VBE_DISPI_INDEX_X_OFFSET 0x8
+#define VBE_DISPI_INDEX_Y_OFFSET 0x9
+#define VBE_DISPI_INDEX_VIDEO_MEMORY_64K 0xa
+
+#define VBE_DISPI_ID0 0xB0C0
+#define VBE_DISPI_ID1 0xB0C1
+#define VBE_DISPI_ID2 0xB0C2
+#define VBE_DISPI_ID3 0xB0C3
+#define VBE_DISPI_ID4 0xB0C4
+#define VBE_DISPI_ID5 0xB0C5
+
+#define VBE_DISPI_DISABLED 0x00
+#define VBE_DISPI_ENABLED 0x01
+#define VBE_DISPI_GETCAPS 0x02
+#define VBE_DISPI_8BIT_DAC 0x20
+#define VBE_DISPI_LFB_ENABLED 0x40
+#define VBE_DISPI_NOCLEARMEM 0x80
+
+/* --- VModes */
+
+struct _vMode {
+ UInt32 width;
+ UInt32 height;
+};
+
+struct vMode {
+ struct vMode *next;
+ struct _vMode *mode;
+};
+
+extern struct vMode *vModes;
+extern struct _vMode defaultVModes[];
+extern struct _vMode *getVMode(UInt16 idx);
+
+/* --- Internal APIs */
+
+extern OSStatus QemuVga_Init();
+extern OSStatus QemuVga_Exit();
+
+extern OSStatus QemuVga_Open();
+extern OSStatus QemuVga_Close();
+
+extern void QemuVga_EnableInterrupts(void);
+extern void QemuVga_DisableInterrupts(void);
+
+extern UInt16 QemuVga_ReadEdidModes(void);
+
+extern OSStatus QemuVga_SetDepth(UInt32 bpp);
+
+extern OSStatus QemuVga_SetColorEntry(UInt32 index, RGBColor *color);
+extern OSStatus QemuVga_GetColorEntry(UInt32 index, RGBColor *color);
+
+extern OSStatus QemuVga_GetModePages(UInt32 index, UInt32 depth,
+ UInt32 *pageSize, UInt32 *pageCount);
+extern OSStatus QemuVga_GetModeInfo(UInt32 index, UInt32 *width, UInt32 *height);
+extern OSStatus QemuVga_SetMode(UInt32 modeIndex, UInt32 depth, UInt32 page);
+
+extern OSStatus QemuVga_Blank(Boolean blank);
+
+#endif
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriver.exp b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriver.exp
new file mode 100644
index 000000000..0a102ee95
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriver.exp
@@ -0,0 +1,2 @@
+TheDriverDescription
+DoDriverIO
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrivate.h b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrivate.h
new file mode 100644
index 000000000..47a95a641
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrivate.h
@@ -0,0 +1,85 @@
+#ifndef __VideoDriverPrivate_H__
+#define __VideoDriverPrivate_H__
+
+#pragma internal off
+
+#include <VideoServices.h>
+#include <Video.h>
+#include <Displays.h>
+#include <DriverGestalt.h>
+#include <DriverServices.h>
+#include <PCI.h>
+
+#include "MacDriverUtils.h"
+
+#ifndef FALSE
+#define TRUE 1
+#define FALSE 0
+#endif
+
+#define QEMU_PCI_VIDEO_VENDOR_ID 0x1234
+#define QEMU_PCI_VIDEO_DEVICE_ID 0x1111
+#define QEMU_PCI_VIDEO_NAME "\pQEMU,VGA"
+#define QEMU_PCI_VIDEO_PNAME "\p.Display_Video_QemuVGA"
+
+#define QEMU_PCI_VIDEO_BASE_REG 0x10
+#define QEMU_PCI_VIDEO_MMIO_REG 0x18
+
+#define kDriverGlobalsPropertyName "GLOBALS"
+#define kDriverFailTextPropertyName "FAILURE"
+#define kDriverFailCodePropertyName "FAIL-CODE"
+
+
+/*
+ * Our global storage is defined by this structure. This is not a requirement of the
+ * driver environment, but it collects globals into a coherent structure for debugging.
+ */
+struct DriverGlobal {
+ DriverRefNum refNum; /* Driver refNum for PB... */
+ RegEntryID deviceEntry; /* Name Registry Entry ID */
+ LogicalAddress boardFBAddress;
+ ByteCount boardFBMappedSize;
+ LogicalAddress boardRegAddress;
+ ByteCount boardRegMappedSize;
+
+ volatile Boolean inInterrupt;
+
+ /* Common globals */
+ UInt32 openCount;
+
+ /* Frame buffer configuration */
+ Boolean qdInterruptsEnable; /* Enable VBLs for qd */
+ Boolean qdLuminanceMapping;
+
+ Boolean hasPCIInterrupt;
+ IRQInfo irqInfo;
+
+ Boolean hasTimer;
+ InterruptServiceIDType qdVBLInterrupt;
+ TimerID VBLTimerID;
+
+ Boolean isOpen;
+
+ UInt32 vramSize;
+ UInt32 depth;
+ UInt32 bootDepth;
+ UInt32 bootMode;
+ UInt32 curMode;
+ UInt32 numModes;
+ UInt32 curPage;
+ LogicalAddress curBaseAddress;
+ Boolean blanked;
+};
+typedef struct DriverGlobal DriverGlobal, *DriverGlobalPtr;
+
+/*
+ * Globals and functions
+ */
+extern DriverGlobal gDriverGlobal; /* All interesting globals */
+#define GLOBAL (gDriverGlobal) /* GLOBAL.field for references */
+extern DriverDescription TheDriverDescription; /* Exported to the universe */
+
+#define FB_START ((char*)GLOBAL.boardFBAddress)
+#define CHECK_OPEN( error ) if( !GLOBAL.isOpen ) return (error)
+
+#endif
diff --git a/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrototypes.h b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrototypes.h
new file mode 100755
index 000000000..682671a0c
--- /dev/null
+++ b/roms/QemuMacDrivers/QemuVGADriver/src/VideoDriverPrototypes.h
@@ -0,0 +1,100 @@
+#ifndef __VideoDriverPrototypes_H__
+#define __VideoDriverPrototypes_H__
+
+#include <PCI.h>
+#include "logger.h"
+
+/*
+ * The Driver Manager calls DoDriverIO to perform I/O.
+ */
+
+OSStatus
+DoDriverIO( AddressSpaceID addressSpaceID,
+ IOCommandID ioCommandID,
+ IOCommandContents ioCommandContents,
+ IOCommandCode ioCommandCode,
+ IOCommandKind ioCommandKind);
+
+#include "MacDriverUtils.h"
+
+/*
+ * Prototypes for the specific driver handlers. These do real work.
+ */
+OSStatus
+DriverInitializeCmd( AddressSpaceID addressSpaceID,
+ DriverInitInfoPtr driverInitInfoPtr);
+
+OSStatus
+DriverFinalizeCmd( DriverFinalInfoPtr driverFinalInfoPtr);
+
+OSStatus
+DriverSupersededCmd( DriverSupersededInfoPtr driverSupersededInfoPtr,
+ Boolean calledFromFinalize);
+
+OSStatus
+DriverReplaceCmd( AddressSpaceID addressSpaceID,
+ DriverReplaceInfoPtr driverReplaceInfoPtr);
+
+OSStatus
+DriverOpenCmd( AddressSpaceID addressSpaceID,
+ ParmBlkPtr pb);
+
+OSStatus
+DriverCloseCmd( ParmBlkPtr pb);
+
+OSStatus
+DriverControlCmd( AddressSpaceID addressSpaceID,
+ IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind,
+ CntrlParam *pb);
+
+OSStatus
+DriverStatusCmd( IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind,
+ CntrlParam *pb);
+
+OSStatus
+DriverKillIOCmd( ParmBlkPtr pb);
+
+OSStatus
+DriverReadCmd(
+ AddressSpaceID addressSpaceID,
+ IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind,
+ ParmBlkPtr pb);
+
+OSStatus
+DriverWriteCmd( AddressSpaceID addressSpaceID,
+ IOCommandID ioCommandID,
+ IOCommandKind ioCommandKind,
+ ParmBlkPtr pb);
+
+/* .___________________________________________________________________________________.
+ | Driver Gestalt handler -- called from the PBStatus handler. |
+ .___________________________________________________________________________________.
+ */
+OSStatus
+DriverGestaltHandler( CntrlParam* pb);
+
+
+/* .___________________________________________________________________________________.
+ | Utitlity function to clear a block of memory. |
+ .___________________________________________________________________________________.
+ */
+#ifndef CLEAR
+#define CLEAR(what) BlockZero((char*)&what, sizeof what)
+#endif
+
+/*
+ * This uses the ANSI-C string concatenate and "stringize" operations.
+ */
+#define Trace(what) lprintf("Trace: %s\n", #what)
+
+#if 0
+static void
+CheckStatus( OSStatus value,
+ char* message)
+{}
+#endif
+
+#endif \ No newline at end of file
diff --git a/roms/QemuMacDrivers/builds/qemu_vga.ndrv b/roms/QemuMacDrivers/builds/qemu_vga.ndrv
new file mode 100644
index 000000000..de81cfd1c
--- /dev/null
+++ b/roms/QemuMacDrivers/builds/qemu_vga.ndrv
Binary files differ
diff --git a/roms/QemuMacDrivers/builds/qemu_vga_debugosi.ndrv b/roms/QemuMacDrivers/builds/qemu_vga_debugosi.ndrv
new file mode 100644
index 000000000..d98c2643b
--- /dev/null
+++ b/roms/QemuMacDrivers/builds/qemu_vga_debugosi.ndrv
Binary files differ
diff --git a/roms/QemuMacDrivers/cleanup.sh b/roms/QemuMacDrivers/cleanup.sh
new file mode 100755
index 000000000..490025241
--- /dev/null
+++ b/roms/QemuMacDrivers/cleanup.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# Cleanup cruft left by MacOS
+
+find . -name "@eaDir" -print0 | xargs -0 rm -rf
+find . -type d -print0 | xargs -0 chmod o-w
+find . -type f -print0 | xargs -0 chmod a-x
+chmod +x cleanup.sh
diff --git a/roms/QemuMacDrivers/shared/LinuxOSI.h b/roms/QemuMacDrivers/shared/LinuxOSI.h
new file mode 100644
index 000000000..628ab7145
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/LinuxOSI.h
@@ -0,0 +1,92 @@
+/*
+ * <LinuxOSI.h>
+ *
+ * Copyright (C) 1999, 2002, 2003 Samuel Rydh (samuel@ibrium.se)
+ *
+ * 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
+ *
+ */
+
+#ifndef _LINUX_OSI_H
+#define _LINUX_OSI_H
+
+#include <Types.h>
+
+#define MOL_GESTALT_SELECTOR 'MOL-'
+//#define MOL_GESTALT_VALUE '-MOL' /* old value, osi_interrupts used */
+#define MOL_GESTALT_VALUE '1MOL'
+
+extern int OSI_IRQTest( int cmd, int param );
+
+/* Misc */
+extern int MOLIsRunning( void );
+extern void OSI_Debugger( int debugnum );
+
+extern UInt32 OSI_GetTime( void );
+extern void OSI_PutC( char ch );
+extern void OSI_CMountDrvVol( void );
+
+/* Mouse Driver */
+struct osi_mouse;
+extern int OSI_GetMouse( struct osi_mouse *pb );
+extern int OSI_MouseCntrl( int cmd );
+extern int OSI_MouseCntrl1( int cmd, int param );
+extern int OSI_MouseAckIRQ( void );
+
+/* Video Driver */
+extern int OSI_SetVMode_( int modeID, int depthMode );
+extern int OSI_GetVModeInfo_( int modeID, int depthMode, void *ret );
+extern int OSI_SetVPowerState( int powerState );
+
+extern int OSI_GetColor( int index );
+extern int OSI_SetColor( int index, int col );
+extern int OSI_VideoAckIRQ( int *events );
+extern int OSI_VideoCntrl( int cmd );
+extern int OSI_VideoCntrl1( int cmd, int param );
+
+/* Ethernet Driver */
+extern int OSI_EnetOpen( UInt32 osi_id );
+extern void OSI_EnetClose( UInt32 id );
+extern UInt32 OSI_EnetGetEthAddress( UInt32 id, UInt32 eth_address_phys_ptr );
+extern UInt32 OSI_EnetGetStatus( UInt32 id );
+extern UInt32 OSI_EnetControl( UInt32 id, UInt32 command );
+extern UInt32 OSI_EnetControl1( UInt32 id, UInt32 command, UInt32 param );
+extern int OSI_EnetGetPacket( UInt32 id, UInt32 packet );
+extern int OSI_EnetSendPacket( UInt32 id, UInt32 packet, UInt32 size );
+extern UInt32 OSI_EnetAddMulticast( UInt32 id, UInt32 eth_address_phys_ptr );
+extern UInt32 OSI_EnetDelMulticast( UInt32 id, UInt32 eth_address_phys_ptr );
+
+/* Sound Driver */
+extern int OSI_SoundWrite( UInt32 phys_buf, int count, int resume );
+extern long OSI_SoundSetVolume( long hwVol, long speakerVol, int hwMute );
+extern int OSI_SoundIrqAck( void );
+extern int OSI_SoundCntl2( int cmd, int parm, int param2 );
+extern int OSI_SoundCntl1( int cmd, int parm );
+extern int OSI_SoundCntl( int cmd );
+
+/* Interrupt management */
+extern UInt32 OSI_RegisterIRQ( UInt32 reg_word, UInt32 appl_int );
+extern void OSI_UnregisterIRQ( UInt32 irq_cookie );
+extern int OSI_PollIRQ( UInt32 irq_cookie );
+extern int OSI_AckIRQ( UInt32 irq_cookie );
+extern int OSI_EnableIRQ( UInt32 irq_cookie, int enable );
+
+/* ABlk driver */
+struct ablk_disk_info;
+extern int OSI_ABlkRingSetup( int channel, UInt32 mphys, int nel );
+extern int OSI_ABlkDiskInfo( int channel, int index, struct ablk_disk_info *info );
+extern int OSI_ABlkIRQAck( int channel, int *req_cnt, int *active, int *events );
+extern int OSI_ABlkCntrl( int channel, int cmd );
+extern int OSI_ABlkCntrl1( int channel, int cmd, int arg );
+extern int OSI_ABlkKick( int channel );
+extern int OSI_ABlkSyncRead( int channel, int unit, int blk, UInt32 physbuf, int size );
+extern int OSI_ABlkSyncWrite( int channel, int unit, int blk, UInt32 physbuf, int size );
+
+/* SCSI */
+extern int OSI_SCSISubmit( int req_mphys );
+extern int OSI_SCSIAck( void );
+extern int OSI_SCSIControl( int cmd, int param );
+
+#endif
diff --git a/roms/QemuMacDrivers/shared/LinuxOSI.s b/roms/QemuMacDrivers/shared/LinuxOSI.s
new file mode 100644
index 000000000..487683416
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/LinuxOSI.s
@@ -0,0 +1,370 @@
+;#######################################################
+;#
+;# Linux Interace Stub
+;#
+;#######################################################
+
+ INCLUDE 'MakeFunction.s'
+ INCLUDE 'LinuxOSIDefs.s'
+
+
+;#######################################################
+; int OSI_IRQTest( int cmd, int param )
+;#######################################################
+
+ MakeFunction OSI_IRQTest
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_IRQTEST
+ blr
+
+
+;#######################################################
+; void OSI_PutC( char ch )
+;#######################################################
+
+ MakeFunction OSI_PutC
+ mr r6,r3
+ OSI_CALL( OSI_LOG_PUTC )
+ blr
+
+;#######################################################
+; void OSI_Debugger( int debugnum )
+;#######################################################
+
+ MakeFunction OSI_Debugger
+ mr r6,r3
+ osi_call OSI_DEBUGGER
+ blr
+
+;#######################################################
+; ulong OSI_GetTime( void )
+;#######################################################
+
+ MakeFunction OSI_GetTime
+ osi_call OSI_GET_DATE
+ blr
+
+;#######################################################
+; void OSI_CMountDrvVol( void )
+;#######################################################
+
+ MakeFunction OSI_CMountDrvVol
+ osi_call OSI_CMOUNT_DRV_VOL
+ blr
+
+
+;#######################################################
+; int OSI_ABlkDiskInfo( int channel, int unit, ablk_disk_info_t *ret )
+; int OSI_ABlkRingSetup( int channel, ulong mphys, int num_el )
+; int OSI_ABlkCntrl( int channel, int cmd )
+; int OSI_ABlkCntrl( int channel, int cmd, int param )
+; int OSI_ABlkKick( int channel )
+; int OSI_ABlkIRQAck( int channel, int *req_count, int *active, int *event )
+; int OSI_ABlkSyncRead( int channel, int unit, int blk, ulong mphys, int size )
+; int OSI_ABlkSyncWrite( int channel, int unit, int blk, ulong mphys, int size )
+;#######################################################
+
+ MakeFunction OSI_ABlkDiskInfo
+ mr r6,r3
+ mr r7,r4
+ mr r10,r5 ; save pointer in r10
+ osi_call OSI_ABLK_DISK_INFO
+ stw r4,0(r10) ; 16 byte return info
+ stw r5,4(r10)
+ stw r6,8(r10)
+ stw r7,12(r10)
+ blr
+
+ MakeFunction OSI_ABlkRingSetup
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ osi_call OSI_ABLK_RING_SETUP
+ blr
+
+ MakeFunction OSI_ABlkCntrl
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ABLK_CNTRL
+ blr
+
+ MakeFunction OSI_ABlkCntrl1
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ osi_call OSI_ABLK_CNTRL
+ blr
+
+ MakeFunction OSI_ABlkKick
+
+ mr r6,r3
+ osi_call OSI_ABLK_KICK
+ blr
+
+ MakeFunction OSI_ABlkIRQAck
+ mr r8,r4 ; save r4 in r8
+ mr r9,r5 ; save r5 in r9
+ mr r10,r6 ; save r6 in r10
+ mr r6,r3
+ osi_call OSI_ABLK_IRQ_ACK
+ stw r4,0(r8) ; return req_count
+ stw r5,0(r9) ; return active
+ stw r6,0(r10) ; return event
+ blr
+
+ MakeFunction OSI_ABlkSyncRead
+ mr r10,r7
+ mr r9,r6
+ mr r8,r5
+ mr r7,r4
+ mr r6,r3
+ osi_call OSI_ABLK_SYNC_READ
+ blr
+
+ MakeFunction OSI_ABlkSyncWrite
+ mr r10,r7
+ mr r9,r6
+ mr r8,r5
+ mr r7,r4
+ mr r6,r3
+ osi_call OSI_ABLK_SYNC_WRITE
+ blr
+
+
+;#######################################################
+; int OSI_MouseAckIRQ( void )
+; int OSI_GetMouse( osi_mouse_t *pb )
+; int OSI_MouseCntrl( int cmd )
+; int OSI_MouseCntrl1( int cmd, int param )
+;#######################################################
+
+ MakeFunction OSI_MouseAckIRQ
+ osi_call OSI_MOUSE_ACK_IRQ
+ blr
+
+ MakeFunction OSI_GetMouse
+ mr r10,r3
+ osi_call OSI_GET_MOUSE
+ stw r4,0(r10)
+ stw r5,4(r10)
+ stw r6,8(r10)
+ stw r7,12(r10)
+ stw r8,16(r10)
+ blr
+
+ MakeFunction OSI_MouseCntrl
+ mr r6,r3
+ osi_call OSI_MOUSE_CNTRL
+ blr
+
+ MakeFunction OSI_MouseCntrl1
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_MOUSE_CNTRL
+ blr
+
+
+;#######################################################
+; int OSI_SetVMode_( int modeID, int depthMode )
+; int OSI_GetVModeInfo_( int modeID, int depthMode, osi_get_vmode_info_t *ret )
+; int OSI_SetVPowerState( int powerState )
+; int OSI_GetColor( int index )
+; int OSI_SetColor( int index, int color )
+; int OSI_VideoAckIRQ( int *events )
+; int OSI_VideoCntrl( int cmd )
+; int OSI_VideoCntrl1( int cmd, int param )
+;#######################################################
+
+ MakeFunction OSI_SetVMode_
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_SET_VMODE
+ blr
+
+ MakeFunction OSI_GetVModeInfo_
+ mr r6,r3
+ mr r7,r4
+ mr r10,r5
+ osi_call OSI_GET_VMODE_INFO
+ stw r4,0(r10)
+ stw r5,4(r10)
+ stw r6,8(r10)
+ stw r7,12(r10)
+ stw r8,16(r10)
+ stw r9,20(r10)
+ blr
+
+ MakeFunction OSI_SetVPowerState
+ mr r6,r3
+ osi_call OSI_SET_VIDEO_POWER
+ blr
+
+ MakeFunction OSI_GetColor
+ mr r6,r3
+ osi_call OSI_GET_COLOR
+ blr
+
+ MakeFunction OSI_SetColor
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_SET_COLOR
+ blr
+
+ MakeFunction OSI_VideoAckIRQ
+ mr r10,r3 ; save pointer in r10
+ osi_call OSI_VIDEO_ACK_IRQ
+ stw r4,0(r10) ; events return in r4
+ blr
+
+ MakeFunction OSI_VideoCntrl
+ mr r6,r3
+ osi_call OSI_VIDEO_CNTRL
+ blr
+
+ MakeFunction OSI_VideoCntrl1
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_VIDEO_CNTRL
+ blr
+
+
+;#######################################################
+; void OSI_EnetClose( UInt32 id )
+; UInt32 OSI_EnetOpen( UInt32 interruptNumber )
+; UInt32 OSI_EnetGetEthAddress( UInt32 id, UInt32 eth_address_phys_ptr )
+; UInt32 OSI_EnetGetStatus( UInt32 id )
+; UInt32 OSI_EnetControl1( UInt32 id, UInt32 command, int param )
+; UInt32 OSI_EnetControl( UInt32 id, UInt32 command )
+; int OSI_EnetGetPacket( UInt32 id, UInt32 packet )
+; int OSI_EnetSendPacket( UInt32 id, UInt32 packet, UInt32 size )
+; UInt32 OSI_EnetAddMulticast( UInt32 id, UInt32 eth_address_phys_ptr )
+; UInt32 OSI_EnetDelMulticast( UInt32 id, UInt32 eth_address_phys_ptr )
+;#######################################################
+
+ MakeFunction OSI_EnetOpen
+ mr r6,r3
+ osi_call OSI_ENET_OPEN
+ blr
+
+ MakeFunction OSI_EnetClose
+ mr r6,r3
+ osi_call OSI_ENET_CLOSE
+ blr
+
+ MakeFunction OSI_EnetGetEthAddress
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ENET_GET_ADDR
+ blr
+
+ MakeFunction OSI_EnetGetStatus
+ mr r6,r3
+ osi_call OSI_ENET_GET_STATUS
+ blr
+
+ MakeFunction OSI_EnetControl
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ENET_CONTROL
+ blr
+
+ MakeFunction OSI_EnetControl1
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ osi_call OSI_ENET_CONTROL
+ blr
+
+ MakeFunction OSI_EnetGetPacket
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ENET_GET_PACKET
+ blr
+
+ MakeFunction OSI_EnetSendPacket
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ osi_call OSI_ENET_SEND_PACKET
+ blr
+
+ MakeFunction OSI_EnetAddMulticast
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ENET_ADD_MULTI
+ blr
+
+ MakeFunction OSI_EnetDelMulticast
+ mr r6,r3
+ mr r7,r4
+ osi_call OSI_ENET_DEL_MULTI
+ blr
+
+
+;#######################################################
+; int OSI_SoundWrite( UInt32 phys_buf, int size, int restart )
+; int OSI_SoundCntl2( int cmd, int param, int param2 )
+; int OSI_SoundCntl1( int cmd, int param )
+; int OSI_SoundCntl( int cmd )
+; int OSI_SoundSetVolume( int hwVol, int speakerVol, int hwMute )
+; int OSI_SoundIrqAck( void )
+;#######################################################
+
+ MakeFunction OSI_SoundWrite
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ OSI_CALL( OSI_SOUND_WRITE )
+ blr
+
+ MakeFunction OSI_SoundCntl2
+ mr r8,r5
+ mr r7,r4
+ mr r6,r3
+ OSI_CALL( OSI_SOUND_CNTL )
+ blr
+
+ MakeFunction OSI_SoundCntl1
+ mr r7,r4
+ mr r6,r3
+ OSI_CALL( OSI_SOUND_CNTL )
+ blr
+
+ MakeFunction OSI_SoundCntl
+ mr r6,r3
+ OSI_CALL( OSI_SOUND_CNTL )
+ blr
+
+ MakeFunction OSI_SoundSetVolume
+ mr r6,r3
+ mr r7,r4
+ mr r8,r5
+ OSI_CALL( OSI_SOUND_SET_VOLUME )
+ blr
+
+ MakeFunction OSI_SoundIrqAck
+ OSI_CALL( OSI_SOUND_IRQ_ACK )
+ blr
+
+
+;#######################################################
+; int OSI_SCSIControl( int sel, int param )
+; int OSI_SCSISubmit( int req_mphys )
+; int OSI_SCSIAck( void )
+;#######################################################
+
+ MakeFunction OSI_SCSIControl
+ mr r7,r4
+ mr r6,r3
+ OSI_CALL( OSI_SCSI_CNTRL )
+ blr
+
+ MakeFunction OSI_SCSISubmit
+ mr r6,r3
+ OSI_CALL( OSI_SCSI_SUBMIT )
+ blr
+
+ MakeFunction OSI_SCSIAck
+ OSI_CALL( OSI_SCSI_ACK )
+ blr
diff --git a/roms/QemuMacDrivers/shared/LinuxOSIDefs.s b/roms/QemuMacDrivers/shared/LinuxOSIDefs.s
new file mode 100644
index 000000000..d39d1954a
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/LinuxOSIDefs.s
@@ -0,0 +1,76 @@
+;
+; Linux interface magic
+;
+
+OSI_SC_MAGIC_R3: set 0x113724FA
+OSI_SC_MAGIC_R4: set 0x77810F9B
+
+ MACRO
+ osi_call &selector
+ li r3,0x24FA
+ addis r3,r3,0x1137
+ li r4,0x0F9B
+ addis r4,r4,0x7781
+ li r5,&selector
+ sc
+ ENDM
+
+;
+; Selectors
+;
+
+OSI_DEBUGGER set 1
+OSI_CMOUNT_DRV_VOL set 4
+
+OSI_MOUSE_CNTRL set 8
+OSI_GET_DATE set 9
+
+OSI_ENET_OPEN set 10
+OSI_ENET_CLOSE set 11
+OSI_ENET_GET_ADDR set 12
+OSI_ENET_GET_STATUS set 13
+OSI_ENET_CONTROL set 14
+OSI_ENET_ADD_MULTI set 16
+OSI_ENET_DEL_MULTI set 17
+OSI_ENET_GET_PACKET set 18
+OSI_ENET_SEND_PACKET set 19
+
+OSI_SCSI_CNTRL set 23
+OSI_SCSI_SUBMIT set 24
+OSI_SCSI_ACK set 25
+
+OSI_GET_MOUSE set 26 ; void -- r4-r7 mouse data, r3 status
+OSI_MOUSE_ACK_IRQ set 27
+
+OSI_SET_VMODE set 28 ; vmode, depthmode -- err
+OSI_GET_VMODE_INFO set 29 ; int modeID -- r3-status, r4-r7 osi_get_next_vmode_t
+OSI_GET_MOUSE_DPI set 30 ; -- mouse dpi
+
+OSI_SET_VIDEO_POWER set 31 ; set VESA DPMS (Energy Star) state on console-video
+
+OSI_SOUND_WRITE set 33
+OSI_SOUND_SET_VOLUME set 35
+OSI_SOUND_CNTL set 36
+
+OSI_VIDEO_ACK_IRQ set 38
+OSI_VIDEO_CNTRL set 39
+
+OSI_SOUND_IRQ_ACK set 40
+OSI_SOUND_START_STOP set 41
+
+OSI_REGISTER_IRQ set 42 ; first_word_of_reg_property -- irq_cookie
+
+OSI_LOG_PUTC set 47
+
+OSI_SET_COLOR set 59
+OSI_GET_COLOR set 64
+
+OSI_IRQTEST set 65
+
+OSI_ABLK_RING_SETUP set 79
+OSI_ABLK_CNTRL set 80
+OSI_ABLK_DISK_INFO set 81
+OSI_ABLK_KICK set 82
+OSI_ABLK_IRQ_ACK set 83
+OSI_ABLK_SYNC_READ set 84
+OSI_ABLK_SYNC_WRITE set 85
diff --git a/roms/QemuMacDrivers/shared/MacDriverUtils.c b/roms/QemuMacDrivers/shared/MacDriverUtils.c
new file mode 100644
index 000000000..3537dad0d
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/MacDriverUtils.c
@@ -0,0 +1 @@
+/* * Various utilities for writing a MacOS "ndrv" driver, such as device-tree * helpers. These replace the various Apple sample codes whose licences * are dubious and probably not suitable for GPL code */ //#include "VideoDriverPrivate.h" //#include "VideoDriverPrototypes.h" #include "logger.h" #include "MacDriverUtils.h" /* Simplified DT properties accessors */ void *DTGetProp(RegEntryIDPtr dtNode, RegPropertyNamePtr name, RegPropertyValueSize *outSize) { OSStatus err; RegPropertyValue *v; if (!outSize) return NULL; /* Grab size so we can allocate some memory */ err = RegistryPropertyGetSize(dtNode, name, outSize); if (err) return NULL; /* Allocate */ v = PoolAllocateResident(*outSize, FALSE); if (!v) return NULL; err = RegistryPropertyGet(dtNode, name, v, outSize); if (err) return NULL; return v; } void DTFreeProp(void *v) { if (v) PoolDeallocate(v); } /* Find a BAR logical address and size */ LogicalAddress GetDeviceBARAddress(RegEntryIDPtr dtNode, PCIRegisterNumber barOffset, ByteCount *size, Boolean *isIO) { RegPropertyValueSize aasize, lasize; LogicalAddress *las = NULL; PCIAssignedAddress *aas = NULL; LogicalAddress result = 0; UInt32 i; /* First grab assigned-addresses to find the BAR */ aas = DTGetProp(dtNode, kPCIAssignedAddressProperty, &aasize); if (!aas) return NULL; aasize /= sizeof(*aas); /* Then grab AAPL,addresses to get the corresponding logical addresses */ las = DTGetProp(dtNode, kAAPLDeviceLogicalAddress, &lasize); if (!las) goto bail; lasize /= sizeof(LogicalAddress); /* Lookup BAR */ for (i = 0; i < aasize; i++) { struct PCIAssignedAddress *aa = aas + i; /* Skip config space */ if (GetPCIAddressSpaceType(aa) == kPCIConfigSpace) continue; /* Check BAR offset */ if (GetPCIRegisterNumber(aa) != barOffset) continue; /* Found it, check that it was assigned */ if (aa->size.hi == 0 && aa->size.lo == 0) { lprintf("BAR %02x not assigned !\n"); goto bail; } /* Check we have a logical for it */ if (i >= lasize) { lprintf("BAR %02x missing AAPL,address property !\n"); goto bail; } /* We don't do 64-bit, sorry... */ if (aa->size.hi) { lprintf("BAR %02x too big !\n"); goto bail; } /* Gotcha ! */ if (size) *size = aa->size.lo; if (isIO) *isIO = GetPCIAddressSpaceType(aa) == kPCIIOSpace; result = las[i]; break; } bail: DTFreeProp(aas); DTFreeProp(las); return result; } /* PCI "Command" config register address */ #define kPCIConfigCommandAddress 0x04 #define cwCommandEnableMemorySpace 0x0002 /* Enable access to PCI memory space */ OSStatus EnablePCIMemorySpace(RegEntryIDPtr dtNode) { OSStatus status; UInt16 cmd; lprintf("Reading cmd word...\n"); status = ExpMgrConfigReadWord(dtNode, (LogicalAddress)kPCIConfigCommandAddress, &cmd); if( status ) return status; lprintf("cmad word is: %04x, writing update...\n", cmd); cmd |= cwCommandEnableMemorySpace; return ExpMgrConfigWriteWord(dtNode, (LogicalAddress)kPCIConfigCommandAddress, cmd); } OSStatus SetupPCIInterrupt(RegEntryID *dtNode, IRQInfo *info, InterruptHandler handler, void *refCon) { ISTProperty *ist; RegPropertyValueSize istSize; OSStatus err; ist = DTGetProp(dtNode, kISTPropertyName, &istSize); if (!ist) { lprintf("SetupPCIInterrupt: No %s property\n", kISTPropertyName); return paramErr; } info->interruptSetMember = (*ist)[kISTChipInterruptSource]; DTFreeProp(ist); err = GetInterruptFunctions(info->interruptSetMember.setID, info->interruptSetMember.member, &info->refCon, &info->handlerFunction, &info->enableFunction, &info->disableFunction); if (err) { lprintf("SetupPCIInterrupt: Error %d getting interrupt functions\n"); return err; } err = InstallInterruptFunctions(info->interruptSetMember.setID, info->interruptSetMember.member, refCon, handler, NULL, NULL); if (err) { lprintf("SetupPCIInterrupt: Error %d setting interrupt functions\n"); return err; } return noErr; } \ No newline at end of file
diff --git a/roms/QemuMacDrivers/shared/MacDriverUtils.h b/roms/QemuMacDrivers/shared/MacDriverUtils.h
new file mode 100644
index 000000000..d93429a94
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/MacDriverUtils.h
@@ -0,0 +1 @@
+#ifndef __MAC_DRIVER_UTILS_H__ #define __MAC_DRIVER_UTILS_H__ #include <NameRegistry.h> #include <DriverServices.h> #include <PCI.h> void *DTGetProp(RegEntryIDPtr dtNode, RegPropertyNamePtr name, RegPropertyValueSize *outSize); void DTFreeProp(void *); LogicalAddress GetDeviceBARAddress(RegEntryIDPtr dtNode, PCIRegisterNumber barOffset, ByteCount *size, Boolean *isIO); OSStatus EnablePCIMemorySpace(RegEntryIDPtr dtNode); typedef struct IRQInfo { InterruptSetMember interruptSetMember; void* refCon; InterruptHandler handlerFunction; InterruptEnabler enableFunction; InterruptDisabler disableFunction; } IRQInfo; OSStatus SetupPCIInterrupt(RegEntryID *dtNode, IRQInfo *info, InterruptHandler handler, void *refCon); #endif /* __MAC_DRIVER_UTILS_H__ */ \ No newline at end of file
diff --git a/roms/QemuMacDrivers/shared/MakeFunction.s b/roms/QemuMacDrivers/shared/MakeFunction.s
new file mode 100644
index 000000000..7d3820ff9
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/MakeFunction.s
@@ -0,0 +1,29 @@
+; MakeFunction sets up everything you need to make an assembly function
+; callable from C and debuggable with a symbolic debugger. It does the following:
+; - export the function's transition vector
+; - export the function name
+; - create a toc entry for the function's transition vector
+; - create the transition vector, which must contain
+; - the function entry point (the name of the function)
+; - the TOC anchor (the predefined variable TOC[tc0])
+; - tell PPCAsm to create a function entry point symbol for symbolic debuggers
+; - create a csect for the function (one csect per function lets the
+; linker do dead code stripping, resulting in smaller executables)
+
+ MACRO
+ MakeFunction &fnName
+ EXPORT &fnName[DS]
+ EXPORT .&fnName[PR]
+
+ TC &fnName[TC], &fnName[DS]
+
+ CSECT &fnName[DS]
+ DC.L .&fnName[PR]
+ DC.L TOC[tc0]
+
+ CSECT .&fnName[PR]
+ FUNCTION .&fnName[PR]
+
+ ENDM
+
+ \ No newline at end of file
diff --git a/roms/QemuMacDrivers/shared/logger.h b/roms/QemuMacDrivers/shared/logger.h
new file mode 100644
index 000000000..6a65287c2
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/logger.h
@@ -0,0 +1,32 @@
+/*
+ * Creation Date: <1999/03/20 07:38:38 samuel>
+ * Time-stamp: <2002/07/20 19:29:22 samuel>
+ *
+ * <logger.h>
+ *
+ * Interface to some logging functions
+ *
+ * Copyright (C) 1999, 2002 Samuel Rydh (samuel@ibrium.se)
+ *
+ * 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
+ *
+ */
+
+#ifndef __LOGGER_H_
+#define __LOGGER_H_
+
+#include <Types.h>
+
+#define DBG(x) do {x;} while(0)
+
+#ifdef DEBUG_OSI
+extern void lprintf( char *fmt,... );
+extern OSStatus CheckStatus( OSStatus value, char *message);
+#else
+static inline void lprintf( char *fmt,... ) { }
+static inline OSStatus CheckStatus( OSStatus value, char *message) { return value; }
+#endif
+
+#endif
diff --git a/roms/QemuMacDrivers/shared/vsprintf.c b/roms/QemuMacDrivers/shared/vsprintf.c
new file mode 100755
index 000000000..b8eae5c21
--- /dev/null
+++ b/roms/QemuMacDrivers/shared/vsprintf.c
@@ -0,0 +1,343 @@
+/*
+ * String functions for logger.
+ */
+
+/*
+ * linux/lib/vsprintf.c
+ *
+ * Copyright (C) 1991, 1992, Linus Torvalds
+ */
+
+/* vsprintf.c -- Lars Wirzenius & Linus Torvalds. */
+/*
+ * Wirzenius wrote this portably, Torvalds fucked it up :-)
+ */
+
+#include <stdarg.h>
+#include "logger.h"
+
+/* we use this so that we can do without the ctype library */
+#define is_digit(c) ((c) >= '0' && (c) <= '9')
+
+static int skip_atoi(const char **s)
+{
+ int i=0;
+
+ while (is_digit(**s))
+ i = i*10 + *((*s)++) - '0';
+ return i;
+}
+
+#define ZEROPAD 1 /* pad with zero */
+#define SIGN 2 /* unsigned/signed long */
+#define PLUS 4 /* show plus */
+#define SPACE 8 /* space if plus */
+#define LEFT 16 /* left justified */
+#define SPECIAL 32 /* 0x */
+#define LARGE 64 /* use 'ABCDEF' instead of 'abcdef' */
+
+#define do_div(n,base) ({ \
+int __res; \
+__res = ((unsigned long) n) % (unsigned) base; \
+n = ((unsigned long) n) / (unsigned) base; \
+__res; })
+
+static int mstrlen( const char *str );
+
+static char * number(char * str, long num, int base, int size, int precision
+ ,int type)
+{
+ char c,sign,tmp[66];
+ const char *digits="0123456789abcdefghijklmnopqrstuvwxyz";
+ int i;
+
+ if (type & LARGE)
+ digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ if (type & LEFT)
+ type &= ~ZEROPAD;
+ if (base < 2 || base > 36)
+ return 0;
+ c = (type & ZEROPAD) ? '0' : ' ';
+ sign = 0;
+ if (type & SIGN) {
+ if (num < 0) {
+ sign = '-';
+ num = -num;
+ size--;
+ } else if (type & PLUS) {
+ sign = '+';
+ size--;
+ } else if (type & SPACE) {
+ sign = ' ';
+ size--;
+ }
+ }
+ if (type & SPECIAL) {
+ if (base == 16)
+ size -= 2;
+ else if (base == 8)
+ size--;
+ }
+ i = 0;
+ if (num == 0)
+ tmp[i++]='0';
+ else while (num != 0) {
+#if 0
+ tmp[i++] = digits[do_div(num,base)];
+#endif
+ int __res;
+ __res = ((unsigned long) num) % (unsigned) base;
+ num = ((unsigned long) num) / (unsigned) base;
+ tmp[i++] = digits[__res];
+ }
+ if (i > precision)
+ precision = i;
+ size -= precision;
+ if (!(type&(ZEROPAD+LEFT)))
+ while(size-->0)
+ *str++ = ' ';
+ if (sign)
+ *str++ = sign;
+ if (type & SPECIAL) {
+ if (base==8)
+ *str++ = '0';
+ else if (base==16) {
+ *str++ = '0';
+ *str++ = digits[33];
+ }
+ }
+ if (!(type & LEFT))
+ while (size-- > 0)
+ *str++ = c;
+ while (i < precision--)
+ *str++ = '0';
+ while (i-- > 0)
+ *str++ = tmp[i];
+ while (size-- > 0)
+ *str++ = ' ';
+ return str;
+}
+
+/* Forward decl. to keep compiler happy. */
+int sprintf(char * buf, const char *fmt, ...);
+int vsprintf(char *buf, const char *fmt, va_list args);
+
+
+int vsprintf(char *buf, const char *fmt, va_list args)
+{
+ int len;
+ unsigned long num;
+ int i, base;
+ char * str;
+ const char *s;
+
+ int flags; /* flags to number() */
+
+ int field_width; /* width of output field */
+ int precision; /* min. # of digits for integers; max
+ number of chars for from string */
+ int qualifier; /* 'h', 'l', or 'L' for integer fields */
+
+ for (str=buf ; *fmt ; ++fmt) {
+ if (*fmt != '%') {
+ *str++ = *fmt;
+ continue;
+ }
+
+ /* process flags */
+ flags = 0;
+ repeat:
+ ++fmt; /* this also skips first '%' */
+ switch (*fmt) {
+ case '-': flags |= LEFT; goto repeat;
+ case '+': flags |= PLUS; goto repeat;
+ case ' ': flags |= SPACE; goto repeat;
+ case '#': flags |= SPECIAL; goto repeat;
+ case '0': flags |= ZEROPAD; goto repeat;
+ }
+
+ /* get field width */
+ field_width = -1;
+ if (is_digit(*fmt))
+ field_width = skip_atoi(&fmt);
+ else if (*fmt == '*') {
+ ++fmt;
+ /* it's the next argument */
+ field_width = va_arg(args, int);
+ if (field_width < 0) {
+ field_width = -field_width;
+ flags |= LEFT;
+ }
+ }
+
+ /* get the precision */
+ precision = -1;
+ if (*fmt == '.') {
+ ++fmt;
+ if (is_digit(*fmt))
+ precision = skip_atoi(&fmt);
+ else if (*fmt == '*') {
+ ++fmt;
+ /* it's the next argument */
+ precision = va_arg(args, int);
+ }
+ if (precision < 0)
+ precision = 0;
+ }
+
+ /* get the conversion qualifier */
+ qualifier = -1;
+ if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L') {
+ qualifier = *fmt;
+ ++fmt;
+ }
+
+ /* default base */
+ base = 10;
+
+ switch (*fmt) {
+ case 'c':
+ if (!(flags & LEFT))
+ while (--field_width > 0)
+ *str++ = ' ';
+ *str++ = (unsigned char) va_arg(args, int);
+ while (--field_width > 0)
+ *str++ = ' ';
+ continue;
+
+ case 's':
+ s = va_arg(args, char *);
+ if (!s)
+ s = "<NULL>";
+
+#if 0
+ len = strnlen(s, precision);
+#else
+ len = mstrlen(s);
+ if( precision > len )
+ len = precision;
+#endif
+
+ if (!(flags & LEFT))
+ while (len < field_width--)
+ *str++ = ' ';
+ for (i = 0; i < len; ++i)
+ *str++ = *s++;
+ while (len < field_width--)
+ *str++ = ' ';
+ continue;
+
+ case 'p':
+ if (field_width == -1) {
+ field_width = 2*sizeof(void *);
+ flags |= ZEROPAD;
+ }
+ str = number(str,
+ (unsigned long) va_arg(args, void *), 16,
+ field_width, precision, flags);
+ continue;
+
+
+ case 'n':
+ if (qualifier == 'l') {
+ long * ip = va_arg(args, long *);
+ *ip = (str - buf);
+ } else {
+ int * ip = va_arg(args, int *);
+ *ip = (str - buf);
+ }
+ continue;
+
+ /* integer number formats - set up the flags and "break" */
+ case 'o':
+ base = 8;
+ break;
+
+ case 'X':
+ flags |= LARGE;
+ case 'x':
+ base = 16;
+ break;
+
+ case 'd':
+ case 'i':
+ flags |= SIGN;
+ case 'u':
+ break;
+
+ default:
+ if (*fmt != '%')
+ *str++ = '%';
+ if (*fmt)
+ *str++ = *fmt;
+ else
+ --fmt;
+ continue;
+ }
+ if (qualifier == 'l')
+ num = va_arg(args, unsigned long);
+ else if (qualifier == 'h') {
+ num = (unsigned short) va_arg(args, int);
+ if (flags & SIGN)
+ num = (short) num;
+ } else if (flags & SIGN)
+ num = va_arg(args, int);
+ else
+ num = va_arg(args, unsigned int);
+ str = number(str, num, base, field_width, precision, flags);
+ }
+ *str = '\0';
+ return str-buf;
+}
+
+int sprintf(char * buf, const char *fmt, ...)
+{
+ va_list args;
+ int i;
+
+ va_start(args, fmt);
+ i=vsprintf(buf,fmt,args);
+ va_end(args);
+ return i;
+}
+
+static int mstrlen( const char *str )
+{
+ int i=0;
+ if( str == NULL )
+ return 0;
+ while( *str++ )
+ i++;
+ return i;
+}
+
+/*
+ * MOL OSI logging
+ */
+
+#include "LinuxOSI.h"
+
+void lprintf( char *fmt,... )
+{
+ va_list args;
+ char *p, buf[256];
+
+ va_start(args, fmt);
+ vsprintf(buf, fmt, args);
+ va_end(args);
+
+ OSI_PutC( '*' );
+ OSI_PutC( '*' );
+ OSI_PutC( '*' );
+ OSI_PutC( ' ' );
+ for( p=buf; *p; p++ )
+ OSI_PutC( *p );
+}
+
+OSStatus
+CheckStatus( OSStatus status, char *message )
+{
+ if( status != noErr )
+ lprintf("%s\n",message);
+ return status;
+}