pax_global_header00006660000000000000000000000064121334672450014521gustar00rootroot0000000000000052 comment=902e4d7cadd4036aae0bb6720e7d1934f5839aed aranym-0.9.15/000077500000000000000000000000001213346724500131045ustar00rootroot00000000000000aranym-0.9.15/AUTHORS000066400000000000000000000131311213346724500141530ustar00rootroot00000000000000The ARAnyM core, glue and additional features were written or adapted from the projects mentioned below by the following main ARAnyM developers: Milan Jurik - main framework from Basilisk and building system (autoconf stuff) - continuous updates and syncing with UAE CPU core - memory management - portability - ndebug (New Debug) - MMU040 (memory protection unit) - JIT (just-in-time compiler for CPU and FPU) - TUN/TAP networking driver skeleton Stanislav Opichal - Host filesystem access driver (hostfs) for FreeMiNT and MetaDOS - Networking driver work - Network Bridging - VIDEL bitplanes to chunky conversion code - fVDI driver - general hostscreen and SDL work Petr Stehlik - some hardware emulation (Falcon-specific HW) - interrupt system (inspired by STonX and STonC) - 68040 friendly TOS (based on old information from Douglas Little of BSS) - host input/output (keyboard and mouse, parallel port) - XHDI interface - SDL GUI (based on Hatari) - Networking adjustments and debugging - NatFeats - CPU/FPU/MMU debugging - ARAnyM Release Manager and Webmaster Johan Klockars - fVDI author, helps with ARAnyM fVDI driver - fVDI driver polyline implementation and bitblt speedup - PAGE_MASK addressing speedup Didier MEQUIGNON - audio support in ARAnyM - Atari XBIOS sound driver (atari/sound/*) Patrice Mandin - Natfeat host CD-ROM driver - Minimal NCR5380 scsi emulation - Linux kernel loader - DSP M56001 emulation - IKBD/ACIA rewrite, joystick support - the SDL-MiNT port of ARAnyM - Videl autozoom - EPS limiter - NatFeat based PCI bridge (atari software can access host PCI) - NatFeat based JPEG decoder, following Brainstorm's JPEG DSP decoder API - Natfeat OpenGL rendering, using host's OSMesa - close examination of our code and finding obvious and not-so-obvious bugs (IDE, parameters handling, TOS patches) - MIDI output - DMA Sound - joysticks and joypads Xavier Joubert - for Windows/cygwin improvements - HostFS fixes - CPU Double Bus Fault handling - SDL GUI improvements - enabled JIT CPU compiler in MS Windows by writing Win sigsegv handler - CPU/MMU fix for data on page boundary Andreas Schwab - damn important fix of MOVES instruction (for Linux-m68k boot) - fix of PTESTR/PTESTW and more MMU fixes - LILO fixes, no longer needs /usr/src/linux/include for compiling - complete PMMU revision and fixing, got Linux/m68k working - important IEEE/UAE FPU fixes - various configure & build fixes - new MPFR FPU core using libmpfr - more CPU fixes (CAS, CAS2) Stefan Kuhr - Mac OS X port - many improvements (too many to list them here) - nfvdi OpenGL fixes - HostFS fix for MAGXDESK - an icon for Darwin Philipp Donze - Mac OS X fixes, new project, universal (ppc+intel) binaries - various small fixes in many places Jens Heitmann - JIT for Mac OS X on Intel - ethernet for Mac OS X - delayed screen updates - 64bit fixes François Revol - resource file for Haiku and BeOS - VIDEL refresh palette fix when switching to bitplane mode - BeOS NF clipboard support --- ARAnyM source code consists of several parts. Some were taken from other projects (in alphabetical order): AmigaOS XL http://amigaosxl.haage-partner.de/ Parts of CPU BasiliskII http://www.uni-mainz.de/~bauec002/B2Main.html Core Bochs http://bochs.sf.net/ IDE JIT Basilisk II http://gwenole.beauchesne.online.fr/basilisk2/ Parts of CPU Hatari http://hatari.sf.net/ Parts of CPU, complete SDL GUI STonX http://stonx.sf.net/ Blitter, FDC, .xfs STonC http://lvogel.free.fr/stonc.htm MFP SDL_gfxPrimitves (LGPL) http://www.ferzkopp.net/Software/SDL_gfx-2.0/index.html Base for the fVDI driver drawing functions The Autoconf Macro Archive http://ac-archive.sf.net/ UAE http://www.freiburg.linux.de/~uae/ Parts of CPU UAE-JIT http://byron.csse.monash.edu.au/uaejit.html Parts of CPU We thank to them and to their authors for releasing the code under GPL. Special thanks go to: Bernd Schmidt (UAE CPU) Christian Bauer (BasiliskII core) Marinos "Nino" Yannikos and Martin D. Griffiths (STonX) Gwenole Beauchesne (BasiliskII[-JIT]) Bernie Meyer (UAE JIT) This is the list of people who have contributed to project Thanks go to :- Ctirad Fertr - the main idea of new Atari machine - deep user testing - VIDEL color fixes Francois LE COAT - for the Solaris port - for work on MacOSX port - sinh/tanh debugged and fixed Olivier Landemarre - for the Windows/cygwin binaries - corrections related to timer Rodolphe Pineau - for the SGI/Irix port - corrections in configure script and memory allocation - better portability of aranymfs Antonin Kral - Debian maintainer Frank Naumann - termio -> termios conversion - NatFeat support in FreeMiNT 1.16 Thomas Huth - SDL GUI (from hatari project) - suggestion to remove 680[023]0 CPU core generation - original README skeleton (from hatari) - cfgopts fixes Heiko Achilles - mouse packets compression in ACIA Wim De Meester - for Mac OS X port Carsten Gaschler - for the Alpha/Linux port Matti Levänen - for BeOS port Carlo Baiocco - new Mac OS X port (src/MacOSX/*) - various bugfixes (floppy, parameters, memory management) Laurent Vogel - crucial MFP/IKBD GPIP fix Konrad Kokoszkiewicz - many hints and small fixes Bill Allombert - first real buildd (ARAnyM as Debian build machine) - FPU fixes - many bug reports about Debian problems on aranym Roman Zippel - MMU optimized (MMU translations cached for nice speed up) David Bolt - aranym.spec improvements Anders Eriksson - ARAnyM icons and logo David Gálvez - USB NatFeat support aranym-0.9.15/BUGS000066400000000000000000000030621213346724500135700ustar00rootroot00000000000000General (all platforms) known bugs: ----------------------------------- Bug: PureC cannot open project file on host filesystem. Reason: A MetaDOS related bug in PureC. Solution: Patch your PureC with supplied patch. -- Bug: Programs started from MetaDOS HOSTFS sometime crash. Reason: A MetaDOS bug in its Pexec implementation. Solution: Forget MetaDOS and use BetaDOS 3.12+ instead. -- Bug: Videlity Configure Tool does not work (hangs during launching) Reason: Dirty delay loop - while(clock() == certain_value). This may not work even under multitasking system and does not work in current ARAnyM where TimerC interrupts come in pairs (100 Hz host interrupt) unless RTC source clock is used. Solution: General solution is to get a more precise host timer interrupt (at least 200 Hz, with the Linux RTC). Specific (and suggested) solution is to stop using Videlity and replace it with BlowUP030 or something similar. Platform dependent known bugs and limitations: ---------------------------------------------- MacOS X does not like floating videoram. Compile with --enable-fixedvideoram. Calling SDLGUI in fullscreen mode does crash the program anyway. Windows 95/98/99/00 do not support direct disk access (Windows NT/2K/XP do). This is a limitation of Cygwin, or rather a limitation of the windows itself. Only Linux-ia32 (x86), MS-Windows and Solaris (x86) currently support JIT compiler for the CPU emulator. This is not a design limitation or a bug in other operating systems, it's just lack of manpower willing to work on JIT support for the other systems. aranym-0.9.15/COPYING000066400000000000000000000354221213346724500141450ustar00rootroot00000000000000 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 aranym-0.9.15/ChangeLog000066400000000000000000010301701213346724500146600ustar00rootroot00000000000000*** CVS tagged as ARANYM_0_9_15 2013/04/15 - Petr - input.cpp: fixed click to grab input, added proper host<->Atari mouse sync - ikbd.cpp: fixed SendMouseMotion() and MergeMousePacket() - include/aradata.h: added setAtariMousePosition() 2013/01/23 - Petr - natfeat/nfvdi.cpp: fixes a bug (sort of a race condition) in NFVDI. When fVDI switches to 32-bit display in VdiDriver::setResolution(), a new HostSurface is created immediately for the VDI driver. Then the video mode change is applied to the host window only on next VBL, in HostScreen::refreshSurface(). But in VdiDriver::expandArea(), there was a bogus test: if (host->video->getBpp() == 8) { This was wrong, because the VDI made a test on the host window surface, which would only be correct on next VBL. Found and fixed by Vincent Riviere. - bootos_emutos.cpp: fix for now correct BCD date format in EmuTOS by Vincent. 2013/01/14 - Petr - include/natfeats.h: added proper check for end of memory block that is to be copied between host and guest using the LIBC memcpy(). Re-enabled NATFEAT_LIBC_MEMCPY fast copying in NatFeats because I believe it's relatively safe now when there are checks for begin and end of the Atari memory block. Atari memory is contiguous so when both begin and end of the block is readable/writeable the whole block should be OK to copy by LIBC memcpy. 2013/01/13 - Petr - input.cpp: "Reseting weird mouse packet" error message changed to "Resetting suspicious mouse packet" debug message thus it'll no longer annoy you. Thanks to Helmut Karlowski for pointing it out. - include/natfeats.h: added switch for previously default and dangerous direct LIBC memcpy() to/from guest provided memory pointer. Now it is disabled by default and byte by byte copying routine is used instead (guest programs should no longer be able to kill the whole ARAnyM). It might affect the NatFeats performance negatively so if required set the newly introduced NATFEAT_LIBC_MEMCPY define to 1. In addition the direct LIBC memcpy() is now guarded by proper pointer check so even if you enable it for speed reasons you should still be relatively safe. Thanks to Thorsten Glaser for providing simple linux user program that was able to kill ARAnyM by issuing NF_NAME NatFeat. - natfeat/nf_basicset.cpp, natfeat/ethernet.cpp: removed incorrect ValidAddr checks. 2012/09/24 - Philipp - Xcode 4.5 project/build system: fixes for building with OS X 10.8, changed packaging DMG to include README_ethernet.rtf instead of TunTap description, adjusted detection of aclocal and makedepend to support usage of MacPorts - Disabled loading of WMIcon on MacAranym as the correct icon is already bundled with the application. *** CVS tagged as ARANYM_0_9_14 2012/09/20 - Petr - README, NEWS: updated for a new release - aranym.spec, version.h, export: increased version to 0.9.14 2012/08/29 - Petr - input.cpp: use host middle mouse button for keyboard/mouse ungrab. Works only if Eiffel mouse middle button/wheel mode is not enabled. 2012/07/27 - Philipp - Added new option --enable-bpf-ethernet for Mac OS X. This allows using bridged ethernet without installing TunTap kernel extensions. See README_ethernet.rtf. - ethernet_macosx.cpp: Berkley Packet Filter (BPF) based ethernet driver for Mac OS X. This driver supports only "bridge" mode, i.e. Aranym is part of your LAN, with its own IP address. - bpf_helper.c,fd_trans.c: a small utility used to do privileged operations like opening a BPF device. When run for the first time it tries to fix the permissions (chown root, chmod ug+s). The file descriptor to the device is then passed using Unix sockets. - Added Xcode 4 scheme files: added shared schemes for building the targets 2012/07/08 - Philipp - Source cleanup/remove warnings for compilation with latest LLVM compiler of Xcode 4.5 - Building on Mac OS 10.7: Do not set "-isysroot" during compilation. Targetting Mac OS 10.5 is still possible without explicitely specifying the SDK to use for compilation. This was only necessary during Universal Binary builds where explicitely the MacOSX10.4u.sdk had to be used to build multi architecture builds. 2012/05/20 - Philipp - hostscreen.cpp: "enforce VIDEL refresh" was missing => no screen updates during boot up when no nfVDI was active. - gui-osx/SDLMain.m: Fix "deprecated" warning for "poseAsClass" - Xcode project: enable X86_64 compilation beside i386 architecture and build fat binaries. 64 bit support in SDL is only available as of Mac OS 10.6. Therefore on 10.5 only the 32 bit version will run. - hostscreen.cpp: fix missing check for "SingleBlitRefresh" configuration in refreshScreen(). 2012/05/17 - Philipp (Based on the patches provided by Olivier Landemarre) - nfvdi_soft.cpp: Performance improvements by skipping memory translation if MMU emulation is disabled. - dirty_rect.cpp: maintain a surrounding rectangle containing the whole dirtied area. - hostscreen.cpp: Two possible modes for updating the atari screen surface and the host screen surface: "chunky" (as in previous versions, uses multiple, small rectangular updates) and "single" (which uses one single rectangular update over the whole "dirty" surface) - parameters.cpp/dlgVideo.cpp: new boolean "SingleBlitRefresh" and "SingleBlitComposing" for the video configuration segment. If set to "Yes" the screen to be composed/screen to be refreshed will be sent in a single BitBlit to the screen/graphics card. If set to "No", only the dirty screen areas are sent by using multiple BitBlits. Default is "No". => Checkout what combination gives you the best performance. 2012/05/13 - Patrice - hostscreen: Merge consecutive dirty blocks to reduce number of update to screen operations. 2012/05/08 - Philipp - MacAranym.xcodeproj: Support compilation with SDL 1.2.15. The standard Mac OS X deployment target is now 10.6, Intel only. It's still possible to compile binaries with PowerPC and OS 10.5 but no more Universal Binaries are going to be built. Build configuration "Release G5" has been removed. - MacAranym.xcodeproj: Added new target "MacAranym MMU MPFR" with MPFR FPU engine enabled. This target needs libgmp and libmpfr from MacPorts. Please checkout the README_Xcode.rtf for more details on how to build. - MacAranym.xcodeproj: Renamed "MacAranym JIT IEEE" to "MacAranym JIT" as JIT already implies IEEE FPU. Further this target has been modified to include always "--enable-jit-fpu". - MacAranym.xcodeproj: Clean-up of project global and target specific configure flags (CONFIGURE_OPTIONS_BASE and CONFIGURE_OPTIONS_TARGET). Automatic detection when COMPILE_DEFS do not match what is generated in the Makefile during configure. It is now easier to change configure options on a target and really getting the right stuff compiled. - sigsegv_darwin_x86.cpp: Fix compilation of JIT if Mac OS X Deployment target >= 10.5 - fpu/mathlib.h: fix compilation problem with in fp_do_expm1 inline assembly and LLVM GCC compiler. 2012/05/07 - Philipp - dirty_rects.cpp/h: implemented setDirtyLine which calculates the surrounding rectangle and adds it to the dirty rectangle list. - nfvdi_soft.cpp: use setDirtyLine instead of setDirtyRect whenever a line is drawn. This fixes redraw glitches whenever a line is not drawn from top left to bottom right. 2012/04/05 - Petr - configure.ac: don't stop if libusb not found (apparently Debian on kfreebsd has the libusb as a fake package or what so the build was failing there) 2012/03/27 - Andreas - fpu_mpfr.cpp: Fix range check when converting to long word 2012/03/24 - Philipp - Fix MacAranym JIT: set/enforce deployment target to OS 10.4 2012/03/23 - Andreas - fpu_mpfr.cpp: Fix missing fpu exception update *** CVS tagged as ARANYM_0_9_13 2012/03/23 - Petr - configure.ac: disable strict aliasing for JIT target (thanks to Miro) - atari/mmusetup.cnf: FastRAM enlarged from 64 to 512 MB, removed Hades specific VideoRAM (thanks to Miro Kropacek) - aranym.spec: Mandriva uses desktop files without the vendor prefix (with the prefix ARAnyM didn't appear in the list of apps) - tools/export: modified for the Debian compatible source archive name aranym_V.E.R.orig.tar.gz - README, NEWS, version.h: updated for new release 2012/03/22 - Petr - natfeat/usbhost.cpp: Change the location of the status register cleaning from the function usbhost_init_libusb to the class constructor. This avoids that under some circumstances devices can't be claimed. Patch by David. - aranym.spec: make use of the new aranym-{jit,mmu}.desktop files 2012/03/20 - Andreas - fpu_mpfr.cpp: fix restarting of FPU insns in presence of access error exceptions 2012/03/20 - Petr - contrib/*.desktop: updated description of the aranym.desktop and added two new files: aranym-jit.desktop and aranym-mmu.desktop - natfeat/usbhost.cpp: fix compiler warning about comparison with different variables types (by David) *** CVS tagged as ARANYM_0_9_12 2012/03/19 - Petr - natfeat/{nfpci,nfosmesa}.h: made supervisor only (with Patrice's blessing) - aranym.spec: disabled nfpci (Patrice says it's incomplete and should even be dropped from the source code completely) - Makefile.in: quiet 'make depend' - natfeat/usbhost.{cpp,h}: postponed the initialisation of libusb from the class c'tor to the moment when the USB SETUP is invoked for the first time. This saves users that will not use the USB from libusb access errors. Also changed some variables type from int8 to int (both patches by David) - README, NEWS, AUTHORS, version.h: updated for new release 2012/03/18 - Petr - aranym.spec: trying to get the build dependencies right (installed Fedora, openSUSE and Mandriva and playing with it) - natfeat/*: moved all name and isSuperOnly to headers for easier grepping - uae_cpu/fpu/flags.h: fix for newer gcc in tfnstsw inline asm parameters 2012/03/17 - Petr committing patch from David Galvez - natfeat/usbhost.{cpp,h}: - Trigger interrupt for "port status change" from a new thread until the driver acknowledges. - Close libusb resources in class deconstructor. - Check inside usb_lowlevel_init function if any usb device is connected and enable "port status change" bit if necessary. - Rename variable idx_int to clearer idx_interface. - Use reset() function to init port status registers. - Code cleanup. 2012/03/16 - Petr - configure.ac, parameters.cpp: list all Native Features that got compiled in 2012/03/15 - Petr - configure.ac: check for ZLIB is now both by pkg-config and autoconf. Also the mpfr library must be version 3.0+ that has different API than previous versions. Checking for mpfr_set_zero ensures that. - natfeat/nfpci.*: name() is const - natfeat/nfosmesa.cpp: fix strict aliasing issue in newer GCC (twice, thanks to Andreas) - dsp_cpu.c: initialize some uninitialized variables 2012/03/14 - Petr - configure.ac: ARAnyM with MMU tries to select the new MPFR FPU if available. Also, the check for ZLIB changed from pkg-config to autoconf. - parameters.cpp: "--version" shows what FPU emulation is compiled in. 2012/03/08 - Andreas - gencpu.c: fix another CAS emulation bug: if the comparison failed the PC was not advanced. Fix CAS2 to properly update both memory operands. 2012/03/07 - Andreas - gencpu.c: fix CAS.[BW] emulation bug - fpu_mpfr.cpp: fix k factor for FMOVE.P, fix FTST and FSCALE, only set FPIAR when exceptions are raised 2012/02/24 - Andreas - fpu_mpfr.cpp: fpu emulation with mpfr library - configure.ac: fixed define HAVE_LIBZ (not HAVE_ZLIB) 2012/01/16 - Petr committing patch from David Galvez - configure.ac, gui-sdl/dlgMain.cpp: added gui-sdl/dlgUSb.{cpp,h}, a new setup dialog with list of all USB devices attached to the host. Users can claim up to two USB devices that can then be used from the Atari side. - natfeat/usbhost.{cpp,h}: greatly enhanced: now it's able to claim any device (except hubs) to the host computer. The interfaces of the USB devices are shown as different devices (for example printer with a scanner will be listed as two devices, printer and scanner) so they can be attached to the ARAnyM guest independently. - atari/usbhost/usbhost_nfapi.h: increased protocol revision 2011/11/08 - Patrice - nfcdrom_linux: Small 64 bit fixes. Move Atari CD-ROM related stuff to generic header. 2011/11/03 - Patrice - nfcdrom: Use proper sized types when compiling for 64 bits. Remove useless __attribute__((packed)) attribute. Always enable nfcdrom, using SDL as default backend. 2011/08/29 - Patrice - Add silent build rules 2011/08/18 - Andreas - src/natfeat/nfosmesa.cpp: Fixed an aliasing issue 2011/08/14 - Philipp - Changed Xcode project to be compatible with Xcode 4 while staying compatible with older Xcode versions - Simplified and unified Xcode project building - Removed warnings 2011/08/10 - Philipp - configure.ac added pseudo function when pkg-config is not existent. - Xcode project: set project root correctly 2011/06/26 - Rodolphe Pineau - Fix a videl function access if blitter code use memmove - fix the uint64 define for Mac OS X 2011/04/25 - François Revol - src/Unix/vm_alloc.cpp: avoid crashing in mprotect() configure test - src/Unix/beos/clipbrd_beos.cpp, configure.ac: NF Clipboard for BeOS 2011/04/02 - milan - src/natfeat/hostfs.cpp, src/gui-sdl/file.cpp, src/ndebug.cpp: fix memleaks *** CVS tagged as ARANYM_0_9_11 2011/02/06 - Petr - version.h: version++ - gui-sdl/dlgMain.cpp: print current version in the ABOUT dialog - README, NEWS, TODO, aranym.spec, tools/export: updated for release 2011/01/26 - Patrice - Use current fullscreen mode size if fixed size is 0x0. 2010/11/26 - Patrice, contributed by François Revol - Add resource file for Haiku and BeOS. 2010/11/20 - Patrice, contributed by François Revol - videl: refresh palette when switching from true color to bitplane mode. 2010/11/10 - Andreas - fpu_*.cpp: don't modify registers before reading fp value from memory. - cpummu.c: fix initialising mmu register. 2010/09/27 - Patrice, contributed by François Revol - BeOS: Fixes for missing includes, defines, and default configuration. 2010/08/27 - David Gálvez - USB NatFeat support 2010/08/17 - Patrice, contributed by François Revol - Consider Haiku as a BeOS target. 2010/08/09 - milan - newcpu.cpp: fix wrong removal of code 2010/07/22 - milan - use macro guard around config.h (contributed by Benoît Tuduri) - removal of distributed dispatcher 2010/07/20 - Patrice - Check availability of realpath() function, lacking on some Mingw flavours. 2010/07/17 - Patrice, contributed by Jean Conter - Preliminary SCC emulation for serial port. *** CVS tagged as ARANYM_0_9_10 2010/05/27 - Petr - README, NEWS, aranym.spec: updated for release - Makefile.in: fixed version_date.h generation 2010/05/26 - Patrice - HostSurface: Even if we do not recreate a new surface on resize, we must still update the width and height of the dirty rectangle list. - VidelZoom: Keep Atari aspect ratio also when using autozoom, with or without integer coefs. 2009/12/29 - Patrice - Disable resizable window, if we set a fixed size in configuration file. 2009/11/21 - Patrice - videl, videl_zoom: Use autozoom feature to correct aspect ratio of Atari screen when pixel shape is not squared (320x400, 640x200 modes for example). 2009/09/21 - Philipp - clipbrd_darwin.M: character set conversion for standard Atari mapping. 2009/09/22 - Petr - clipbrd_x11.cpp: Clipboard NatFeat support for X11 implemented. - nfclipbrd.cpp: init_aclip() added, minor code formatting. - clipbrd_cygwin, clipbrd_darwin: added init_aclip() dummy definition. - configure.ac: enable Clipbard support by default. 2009/09/21 - Philipp - clipbrd_darwin.M: Clipboard NatFeat support for Mac OS X implemented. - nfclipbrd.cpp: Buffering of clipboard content implemented. 2009/09/20 - Philipp - Xcode project: fix building of Universal Binaries when compiling on PPC - configure.ac: fix script generation when cross-compiling ("[: too many arguments" errors) - nfclipbrd.h: remove warning overriding 'virtual const char* NF_Base::name()' 2009/09/13 - Andreas - uae_cpu/fpu/{fpu_ieee.cpp,fpu_uae.cpp,mathlib.h}: remove strict aliasing violations. 2009/09/08 - Petr - natfeat/hotfs.cpp: fixed two crashes if realpath or canonicalize_file_name return NULL (= invalid file/symlink) 2009/09/07 - Petr - ndebug.cpp: quiet 64-bit GCC printf warnings *** CVS tagged as ARANYM_0_9_9 2009/09/07 - Petr - aranym.spec: should create menu entries for aranym-jit and aranym-mmu as well. Improved by David Bolt, our RPM packages maintainer. 2009/09/05 - Petr - natfeat/hostfs.cpp: fixed crash when hostRoot path is empty (happens when BetaDOS maps a drive but ARAnyM config does not). Thanks for bug report to Petr Stehlik junior :-) 2009/09/05 - Petr - input.cpp: Right Shift was not detected properly at startup. Thanks for indirect bug report to Vincent :-) *** CVS tagged as ARANYM_0_9_9_BETA 2009/09/04 - Petr - configure.ac: added check for canonicalize_file_name() - README, NEWS, tools/build_cygwin.sh: usual updates for a new release 2009/09/03 - Patrice - nfaudio: Revert back to 0.9.8 version. Zmagxsnd.prg assumes 44100 Hz stereo 16 bits device, so you must set this configuration in Aranym config file. 2009/09/03 - Philipp - Fixed ALT+mouse click problem by setting environment variable SDL_HAS3BUTTONMOUSE in input.cpp InputInit for MacAranym. 2009/09/03 - Petr - include/input.h: add SDLK_MODE to allowed ARAnyM hotkey modifiers. - gui-sdl/dlgHotkeys.cpp: SDLK_MODE is shown as "MO" 2009/09/01 - Petr - natfeat/hostfs.cpp: the conversion from absolute to relative symlinks (added recently) was broken. Fixed. 2009/08/31 - Petr - natfeat/hostfs.cpp: realpath() with GNU extension that allows passing in NULL instead of a preallocated buffer and which fails on Mac OSX was changed to canonicalize_file_name() that was reimplemented for platforms where it's undefined. The configure.ac has yet to be updated with check for this. 2009/08/30 - Petr - natfeat/hostfs.cpp changes and bugfixes: 1) hostRoot must contain an absolute filepath, otherwise findDrive() fails when searching for a symlink target and that makes all symlinks appearing as normal files (due to a feature of converting symlinks pointing outside of mapped paths to real files - a controversial thing to say the least (read FreeMiNT mailing list archive)). Used realpath() for converting the hostRoot, hopefully it works everywhere. 2) xfs_readdir() now uses the inodes from dirEntries instead of lstat. Let's see if anything breaks. From my testing the dirEntry->d_ino differs from statBuf.st_ino only if the file is a mount point on the host and then the d_ino contains a "better" number than the st_ino, IMHO (st_ino is 1 or 2 in such case). 3) host_readlink() converts relative symlinks to absolute ones. Sounds superfluous but is handy as it converts paths like "X/../Y" to "Y". This is actually crucial for my code added yesterday that tries to find common path between symlink and its target to return a relative symlink instead of an absolute one (in xfs_readlink()). One wonders why the symlink is converted from relative to absolute and then back to relative. Only Standa knows that... 2009/08/30 - Andreas - cpummu.cpp: correct handling of indirect descriptors during table lookup, there are no bits beside the PDT and the descriptor address. Reported by Toni Wilen. - bootos_linux.cpp: avoid often broken gzseek 2009/08/29 - Petr - natfeat/hostfs.cpp: symlinks with both link and target on the same GEMDOS drive are now returned as relative (to please Vincent :-) 2009/08/28 - Petr - natfeat/hostfs.cpp: Vincent found out that an invalid hostFS symlink breaks the readdir() because it calls stat() and fails eventually. Changing it to 'lstat()' fixes it. Also the lstat() for finding out the inode number might be completely unnecessary. Watch out for "d_ino != st_ino" panic message when using HostFS... 2009/08/27 - Petr - input.cpp: Vicent + Philipp report that positioning the cursor at -1 offset when releasing mouse grab causes troubles on Win and OSX thus the offset code is disabled. It wasn't needed anyway as the mouse autograb is disabled now. 2009/08/25 - Petr - ndebug.cpp, linux/sigsegv_linux_x86.cpp, compiler/compemu_support.cpp, compiler/gencomp.c: quiet GCC warnings 2009/08/25 - Andreas - aranym.desktop: Fix Categories entry. 2009/08/24 - Petr - acsifdc.cpp: handle possible error reading the bootsector (also quiets GCC warning) - midi_{file,sequencer}.cpp: print an error if writing fails (also quiets GCC warning) - dsp_core.cpp, input.cpp, ndebug.cpp, dlgFileSelect.cpp, hostfs.cpp, uae_cpu/build68k.c, uae_cpu/gencpu.c, fpu/core.h, fpu/flags.h: quiet GCC warning 2009/08/24 - Philipp - nfvdi_soft: Fixed some redrawing problems with 'soft' NfVDI in bitdepths < 32 2009/08/22 - Patrice - nfvdi_soft: Add workaround for buggy SDL versions for blitting inside same surface. See http://bugzilla.libsdl.org/show_bug.cgi?id=699 for more info about the bug. 2009/07/19 - Petr - hostfs.cpp: fixed a possible crash when calling std::map->erase(). Thanks to David Binderman (for posting to Novell BTS) and David Bolt (for letting me know about the BTS). 2009/05/24 - Patrice - NfAudio: Only triggers interrupt once m68k buffer is filled. 2009/05/09 - Patrice - Add volume setting to audio conversion. - NfAudio: Use audio conversion class. *** CVS tagged as ARANYM_0_9_8_BETA 2009/04/25 - Petr - README, NEWS, TODO, version.h: updated for a new release 2009/04/24 - Patrice - gui-sdl/dlgDisk.cpp: Fix wait for event after generating disk image if no confirmation needed. 2009/03/31 - Andreas - gencpu.c: Correct exception setup for trapping insns. Thanks for hint to Guillaume Tello. - fpu_{x86,uae,ieee}.cpp: Fix decoding of FTRAPcc insn. Don't raise illegal insn exception on unknown condition codes, they merely give unexpected results. 2009/03/09 - Patrice - dsp56k: Simplify read/write memory functions, thanks to Eero Tamminen. 2009/03/01 - Patrice - dsp56k: More fixes from Laurent Sallafranque. RND instruction properly used with scaling modes. 2009/02/24 - Patrice - dsp56k: Cleanups, small optimisation for MOVEC, remove SCI emulation (useless on Falcon). 2009/02/17 - Patrice - dsp56k: Use function pointers to manage mutex and semaphore, to easily switch between threaded and non threaded emulation at runtime. 2009/02/13 - Patrice - dsp56k: Add flag to run with/without thread (Hatari DSP runs without thread). 2009/02/11 - Patrice - dsp56k: More fixes from Laurent Sallafranque. disasm: Avoid repeating n times same instruction. disasm: Replace some sprintf() by strcpy() to avoid some warning. Fix parallel move not using right register as S2. Fix carry computation in add56/sub56. Integrate preliminary work for DSP interrupts. 2009/01/24 - Patrice - dsp56k: Fix decoding for NORM instruction (thanks to Matthias Alles). 2009/01/08 - Patrice - dsp56k: Cleanup for MOVEC instruction parameter decoding 2009/01/03 - Petr - ikbd: added support for reversing mouse Y-axis (IKBD opcodes 0x0f, 0x10) 2009/01/02 - Petr - parameters, doc/config: removed "AutoGrabMouse" config option - input.cpp: mouse handling clean up. Long time tired by automatic grabbing. - fixed possible negative Atari scancode - disabled (temporarily) auto mouse grab when mouse enters the window - will be re-enabled once new proper appl_tplay() based ARAnyM Tools accessory is finished (and XaAES gets appl_tplay implementation). After this the AutoGrabMouse config will no longer be needed. - added ARAnyM SDL mouse cursor (simple white arrow, to be improved), this is to be easily distinguishable from the Atari GEM mouse cursor (for some unknown reason the standard SDL mouse cursor is identical to Atari GEM mouse cursor so you never knew if you had input grabbed or not). - probably managed to remove the warnings about weird mouse motion packets (the initial mouse motion after mouse grab needs to be ignored). - middle mouse button added (only when Eiffel mode is enabled) 2008/12/26 - Patrice - More dsp56k fixes Immediate value for REP is 12bit wide. Fix REP and DO instruction parameter decoding. - OpenGL: Use __stdcall convention on Win32. 2008/12/14 - Petr - atari/*: added proper NatFeat detection with illegal vector handling etc. 2008/12/11 - Petr - configure.ac: disable jit-fpu by default since it's too buggy. Thanks to Anders Eriksson and Magnus Hansson for providing a simple test case. 2008/12/10 - Petr - atari/natfeat.c: don't check for __NF cookie as FreeMiNT removes it so NF drivers could not be started after MiNT - atari/nfpci/nfpci_cookie.c: do not store value to NULL pointer! - atari/nfpci/nfpci.c, atari/nfjpeg/nfjpeg.c: bump version, remove mention about __NF cookie - atari/nfjpeg/Makefile: don't complain when removing non-existing files 2008/12/10 - Andreas - jpgdh.h: Use fixed sized types - fixes NFJPEG on 64bit host. - nfjpeg.cpp: Use fixed sized types. 2008/12/06 - milan - Makefile.in: ungzipped man pages 2008/11/26 - Patrice - dsp56k: More fixes from Laurent Sallafranque. Fix calculation of overflow bit in add56/sub56. Fix accumulator to use for LSL/LSR. Fix registers S2,D2 for TCC instruction. Fix for DIV instruction. 2008/11/24 - Petr - input.cpp: fixed a very annoying unexpected mouse autograb when leaving ARAnyM window with the mouse pointer faster (the SDL_WarpMouse simply set the mouse pointer position back to ARAnyM window and that caused immediate autograb). 2008/11/23 - Petr - parallel_parport.cpp: fixed check for valid handle in getBusy() 2008/11/21 - Patrice - Hardware scrolling quite OK now :-). 2008/11/20 - Patrice - videl: Change lineoffset if hwscroll register not 0. Still needs pixel-precise position, and scrolling for 16bpp mode. 2008/11/09 - Petr - nfvdi_soft.cpp: removed GCC 4.3.2 warning - configure.ac: corrected mailing list address *** CVS tagged as ARANYM_0_9_7_BETA 2008/11/08 - Petr - videl.cpp: fixes ST-Low detection by converting binary OR to logical OR, found thanks to compile warning of the new GCC 4.3.2 - input.cpp: fixes releasing Alt key when entering SDL GUI by correcting the binary operator precedence (& > |) - main.cpp, ethernet_linux.cpp, sdlgui.cpp, hostfs.cpp, fpu_ieee.cpp: removing some new GCC 4.3.2 warnings - aranym.1: "--halt" documented - README, NEWS, AUTHORS, version.h, aranym.spec: updated for new release 2008/10/22 - Patrice - dsp56k: Fixes for LSL,BCHG instructions. 2008/10/21 - Petr - input.cpp: the PC 'End' key gets Milan compatible scancode while the '<>' key (not found on my PC104 keyboard but it is on the PC105, next to the shortened left Shift) now gets the Atari scancode. Thanks to Jo Even Skarstein. - tools.cpp: safe_strncpy() is now even safer :-) 2008/10/21 - Patrice - Joypads: Add configurable buttons mapping to config file. 2008/10/20 - Patrice - dsp56k: Fixes in register,L:xxx when limiting occurs. 2008/10/19 - Patrice - dsp56k: Fixes in L:xxx,register parallel move, both directions. - TOS: Remove patch that disable DMA audio if joypad ports not detected. 2008/10/18 - Patrice - Joypad emulation seems to be working. TODO: Teamtap emulation, and button mapping from config file. 2008/10/16 - Patrice - Started joypads emulation. 2008/10/14 - Patrice - Add section in configuration files to map host joysticks to Atari joysticks. - Use this section to open correct joysticks now, at least for IKBD. 2008/10/09 - Patrice - dsp56k: try to fix detection of end of loop for DO instruction. 2008/10/08 - Patrice - dsp56k: BSET/BCLR were not clearing/setting A2/B2 when changing bit in A/B accumulator (from Laurent Sallafranque). 2008/10/06 - Patrice - dsp56k: Recode sub/add on 56bits in a simpler way. 2008/09/30 - Patrice - dsp56k: disasm: Mark all instructions that may change SR. core: Try again to fix carry bit computation. 2008/09/28 - Patrice - dsp56k fixes: SUB/ADD/CMP: Simply set carry bit if MSB changed, clear otherwise. 2008/09/28 - Andreas - uae_cpu/table68k: Make EMULOP privileged. 2008/09/27 - Patrice - dsp56k fixes: -MAC/MACR should not change Carry bit (from Laurent Sallafranque). 2008/09/21 - Patrice - dsp56k fixes: -DIV instruction calculation (from Laurent Sallafranque). -disasm: mask out address bits to 32K, to read current instruction. 2008/09/16 - Patrice - dsp56k fixes: -Parallel moves: B,A does not transfer full 56 bits. 2008/09/15 - Patrice - dsp56k fixes: -LUA instruction must not change source register. -Parallel moves: disasm for dsp_pm_4, fixes in dsp_pm_1. 2008/09/14 - Patrice - sdlgui: Make a loop, so we can call processDialog of a caller, following an alert. - dsp56k fixes, from Laurent Sallafranque: -REP [x|y]:ea was not reading right value for LC register. -ENDDO must continue with executing following instruction, not jumping to end of loop. -Parallel moves: Some fixes, for _0, _4x. 2008/09/14 - Andreas - acinclude.m4: fix name of cache variables to match *_cv_*. 2008/08/15 - Petr - bootos_linux.cpp: ARAnyM can shut down instead of rebooting when linux-m68k kernel reboots. Added for Stephen who says installing Debian-m68k is easier this way. Enable the shutdown/halt by "--halt" command line option. - various files: GCC 4.2.3's warning about empty 'if' body when there is just D(bug()) fixed by adding curly brackets. Also "text" is const char*. 2008/07/29 - Patrice - dsp56k: Implementation of DSP emulation in plain C. 2008/07/28 - Patrice - dsp56k: Preliminary work to make a plain C only implementation of DSP emulation, to ease merging with Hatari. 2008/07/26 - Patrice - dsp56k: Reworked dsp thread pause/unpause using semaphores. Also enable force execution of dsp instructions till it read/write to the host port, for code that don't use any sync method. 2008/07/25 - Patrice - dsp56k: Wrong calculation of E (extension) bit in SR. Also wrong calculation of CC given SR due to missing masking. 2008/07/23 - Patrice - dsp56k: Fix disasm to match memory mapping changes. Change detection of polling loop on host port, to take into account programs that have some NOPs before JCLR. 2008/07/22 - Patrice - dsp56k: Change memory mapping to match what happens on Falcon. 2008/07/21 - Patrice - input: Warp mouse to center of screen only if mouse grabbed. 2008/07/20 - Patrice - mmu: Wrong check for address in TTR or not, reported by François Revol, who tries to port Haiku (BeOS clone) to Atari. 2008/07/19 - Patrice - dsp56k: Starts commiting fixes in emulation, coming from Hatari. Fix modulo addressing. Also deal with the case where modifier is higher than modulo. 2008/07/18 - Patrice - dsp56k: Starts commiting fixes in emulation, coming from Hatari. JSSET,JSCLR where pushing wrong return address on the stack. TCC: was using wrong registers as both source and destination (emulation, disasm) TFR: was using wrong registers as source (disasm only). ADD,SUB: was using wrong registers as source (disasm only). AND,EOR,OR: was using wrong registers as source (emulation, disasm). 2008/07/15 - Patrice - Add configuration for host audio device. Some machines only support 48 KHz as hardware frequency for example, so 22.05 KHz is not suited. 2008/07/15 - Andreas - Handle universal endianess in gcc_AC_C_FLOAT_FORMAT autoconf macro. 2008/07/14 - Patrice - Finally fixed audio DMA emulation, using new conversion routine. 2008/06/18 - Patrice - Revert 20080526 audio dma changes, introduced too many regressions :-(. 2008/05/28 - Patrice - ikbd: Remove useless mutex, as everything is running in same thread. 2008/05/26 - Patrice Reworked audio DMA emulation: - Moved audio conversion stuff in another file, so it can be used by other audio related functions (existing or future). - Reduce fragment packet size, so the MFP interrupt triggers more often. - HostAudio reset was deleting callbacks, so no more audio was working after that. 2008/02/05 - Jens - aratapif.sh - Expanded shell script that tries to detect Interface and Nameserver parameters automatically, if it is not manually set. 2008/01/31 - Jens - ethernet_darwin.cpp: Changed search path for aratapif.sh to the config dir. I think this is a good location for a file that has to be edited by the user and it makes it possible to have a configuration that meets with the config file. 2008/01/30 - Jens - MacAranym.xcodeproj: grep added to seperate lines with a leading date before for building version_date.h; ENABLE_VBL_UPDATES removed, LOGO_FILENAME added - parameters_Macos.cpp: getDataFolder() now returns application bundle directory - aranym.icns: new icon file 2008/01/30 - Petr - aranym.spec: SDL_image added to "Requires" and "BuildRequires" 2008/01/29 - Petr - include/*.h, ethernet_cygwin.cpp: removed the $Id expandable CVS keyword - template.cpp: unused, removed *** CVS tagged as ARANYM_0_9_6_BETA2 2008/01/29 - Jens - MacAranym.xcodeproj: Added version_date.h and dlgPartition.cpp to build process 2008/01/29 - Andreas - uae_cpu/fpu/types.h: Use long double also on ia64. 2008/01/29 - Petr - aranym.spec: fixed _icondir for Fedora (thanks Martin for bugreport) - natfeat/xhdi.cpp: fixed two bugs that can be serious if you access a block of data beginning with the simulated root sector (thanks Roman for a bug report). - rtc.cpp: fixed check for unspecified --locale (thanks Martin) - contrib/*.desktop: renamed to lowercase, fixed Category -> Categories *** CVS tagged as ARANYM_0_9_6_BETA 2008/01/28 - Petr - sdl-gui/dlgDisk.cpp: the <= 0.9.5 IDE disk size limit was actually 32 GB, not 8 GB. Fixed for maximal backwards compatibility. - sdl-gui/dlgMain.cpp: disable the "Reboot" button if no OS available - contrib/ folder added with 32x32 + 48x48 ARAnyM icons and a desktop file - aranym.spec: modified for icon, desktop file and new build root - Makefile.in: removed strip from 'make install' (Debian bug #436479) - doc/aranym.1: document the -k command line option - README, NEWS, AUTHORS, TODO, version.h: updated for new release 2008/01/27 - Andreas - uae_cpu/fpu/mathlib.h: Fix fast_fgetexp to compute unbiased exponent as signed value. 2008/01/27 - Petr - input.cpp: fix hotkeys (or generally all modifiers) when NumLock is enabled - sdl-gui/dlgDisk.cpp: restore original 63 Sectors-Per-Track for IDE disks smaller than 8 GB. This fixes C/H/S auto-detection for disk images created with ARAnyM 0.9.5beta or older. 2008/01/26 - Petr - parameters.cpp: "--locale " or "-k " where is one of 18 supported ISO 3166-1 alpha-2 codes. - gui-sdl/*: various little improvements to layout or Help texts - "GuiAlpha" setting removed - it was a nice demo of OpenGL capabilities but wasn't really useful. 2008/01/24 - Petr - rtc: patch() now can optionally set also the system language and keyboard layout. - parameters: new command line switch -k for setting up the NVRAM keyboard layout. 2008/01/23 - Petr - dlgPartition.cpp: added missing PartID edit field 2008/01/20 - Petr - gui-sdl: added Partition setup (in dlgPartition.cpp) - allows editing SCSI0 - SCSI3 (ARAnyM allows up to 8 SCSI drives = host partitions) - dlgDisk.cpp: fixed creating disk image. And when file is not found the filename field is disabled (visual guidance for the user) - file.cpp: some unused functions removed. 2008/01/18 - Petr - xhdi.cpp: fix recently introduced read-only problem ("error writing"). Also improve error messages and disable all partitions at init time. 2008/01/17 - Petr - xhdi.cpp: don't fopen()/fclose() on each transferred sector. Should speed things up a lot. Also force data flush on ARAnyM exit. - configure.ac: proper check for fseeko() and fsync() 2008/01/16 - Petr - xhdi.cpp: fseeko->fseek for MinGW - hostfs.cpp: added missing POSIX functions in MinGW (mostly fake/empty/error returning). ARAnyM compiles under MinGW now, and even runs fine, it seems. The POSIX emulation should be improved, though. Just follow the "FIXME" notes... 2008/01/15 - Petr - xhdi.cpp: fseek->fseeko for 64bit file offsets. Thanks Roman Zippel. - emu_bochs.h: removed snprintf redefinition to fix MinGW compile. Also corrected debug functions. - hostfs.cpp: added some fake #define for missing statfs flags - Makefile.in: the GEN_DIR source files are compiled without the SDL_CFLAGS now to fix building under MinGW 2008/01/11 - Andreas - Makefile.in: Remove unknown option from sed call. More complete dependency generation. - natfeat/nfvdi: Remove misplaced std::. 2008/01/07 - Stefan - darwin/Makefile: There was an error in the generation of the config_tmp.h file, I used '>' for redirecting the first three lines instead of '>>', thus of course the first two lines where lost. - darwin/aranym.xcodeproj/project.pbxproj: Removed some orphan file references. 2008/01/07 - Stefan - darwin/Makefile: Fixed a dependency problem between the depend targets and the config.h file. Now an intermediate file config_tmp.h is generated, which the depend targets copy into config.h. The config_tmp.h now has an inclusion guard and just includes either the config_i386.h or config_ppc.h file. 2008/01/06 - Stefan - Makefile.in: Changed CPU_TYPE to ARCH to have a more consistent naming. Removed -I$(top_srcdir) from CPPFLAGS as it is not needed any more. Added $(builddir)/ to version_date.h. Added missing $(top_srcdir)/ to ChangeLog. Added DEPEND to use architecture dependent depend files. Commented out the makefile definiton with WORD and WORDS, as we now have architecture specific depend files. Instead now makefile is defined to $(builddir)/Makefile. - darwin/Makefile: Added targets depend{,_i386,_ppc} to generate dependencies and distclean{,_i386,_ppc} to have clean and distclean targets similar to the Makefile. Changed usage of make again to use the -C option. Thus now the targets are build in the same way then for other systems. This has been necessary because the builddir now is fixed to "." and can't be changed. On the other hand it's possible now, as we have the dependencies in other files. - configure.ac: Added the option -mmacosx-version-min to ISYSROOT, this should fix the build on Leopard without the crt1.o workaround. Changed the srcdir for darwin back to ".", as now make is used with the -C option. - INSTALL: Fixed the path description to the executable. - mfp.cpp: Commented out the panicbug "mfp_do_interrupt called when another higher priority interrupt is running", as it is issued continuously when MagiC runs. - ndebug.{cpp,h}: Added issavettyvalid and thus fixed ndebug in case the terminal is not supporting tcgetattr(). - darwin/aranym.xcodeproj/project.pbxproj: Updated the Xcode project file to contain new files and to use SCM/CVS. Also cleaned up some settings. 2008/01/05 - Andreas - Makefile.in: Make sure version_date.h is up-to-date. 2008/01/05 - milan - real adressing mode removed from code - Sun Studio supported - C++-izing standard includes here and there, adding std namespace - removing GNU extensions (sed in Makefile.in, -Wall in configure.ac) 2008/01/05 - Petr - acsifdc.cpp: alloca() replaced by std::vector thanks to Blaine's suggestion - hostscreen.cpp: variable array size is C99, not C++ - replaced by vector - logo.cpp: set the USE_ALPHA - hostscreen.cpp: don't crash if logo.png not found - Makefile.in: install logo.png - version_date.h: removed from src/include, moved to root (next to Makefile) - input.cpp: SDL_GUI is configurable - main.cpp: unused HEARTBEAT removed 2008/01/04 - Petr - hostscreen.cpp: alpha blend the logo onto VIDEL screen for half of second upon boot when OpenGL video is enabled. - data/logo.png: updated, in different color, with white background (for now) 2008/01/04 - Patrice - host_surface: Add constructor to create surface with a given SDL_PixelFormat. The logo needs to keep its alpha. - configure.ac: Remove '-fomit-frame-pointer' option, prevent exceptions from being processed. 2008/01/02 - Petr - parameters.*: logo_path removed from the configuration file - hostscreen.cpp: logo is stored in the data folder - logo.h: LOGO_FILENAME could be redefined at compile time, if required... - include "version.h" only where required - generate "include/version_date.h" from the ChangeLog and include it in version.h to get better idea what CVS version was used for building a binary. 2008/01/01 - Jens - Makefile.in - Additional Include path, else the darwin build doesn't find config.h (may be an issue with MACOSX 10.5) - parameters.cpp - Default search for logo in application bundle on MacOS - input.cpp - don't use mouse grabing if setup gui is open, because the mouse was hidden and was not usable in the Setup GUI - xcodeproj - SDL Image added, copy logo from data to application bundle. Debugging disabled, because NDEBUG is not working, if Aranym is started from an application bundle in Leopard (tcgetattr = -1) - logo.png - added because it is necessary for the application bundle - ethernet_darwin.cpp - check first that the device is available (TUNTAP) - debug.cpp - Fixed compilation error if debug is disabled 2007/12/30 - Xavier - tools/build-cygwin.sh: updated to fit the new building system. 2007/12/30 - Petr - gui-sdl/*: ARAnyM SETUP is 76 columns wide now. Main, Alert, FileSelect and Disk dialogs were enlarged to full width. Couple more smaller dialogs were updated to look better. - gui-sdl/dlgDisk.cpp: Fixed entering of large disk image sizes (> 99 GB). Fixed updating of IDE1 values. - gui-sdl/dlgAlert.cpp: dialog width is flexible now. - gui-sdl/dialog.{cpp,h}: redrawing of released touch exit button fixed. 2007/12/29 - Andreas - Makefile.in: Fix dependency generation. 2007/12/28 - Petr - data/wm_icon.bmp: added a 32x32 BMP version of new ARAnyM icon created by Anders Eriksson (thanks!) - main.cpp: set the new icon in the window manager - Makefile.in: copy the new icon to the data folder upon installation - parameters.cpp, rtc.cpp: less verbosity at start up - main.cpp: RTC timer is probed and if it fails then a safe fallback to SDL timer occurs... - configure.ac: RTC timer is enabled by default on Linux platform 2007/12/22 - Patrice - opengl: Always use reversed pixel type for BGRA texture format. 2007/12/21 - Andreas - main_unix: Unconditionally call ndebug::init before parsing command line. 2007/12/21 - Patrice - opengl: Always destroy/recreate texture, as most platforms need it anyway, like MacOSX and win32. 2007/12/19 - Patrice - Makefile.in: Generate dependencies in .depend file, included at end of Makefile. Remove dep (useless?) target. 2007/12/19 - Andreas - Makefile.in: Fix compilation outside source directory. Use standard autoconf variables builddir and top_srcdir. - darwin/Makefile: Change makedir to builddir. 2007/12/18 - Patrice - opengl: Use BGRA texture format if available, till FVDI driver can cope with whatever format we could use. 2007/12/17 - Patrice - gui: process current dialog if a touchexit object is currently pressed. - opengl: disable changing surface format for a compatible texture format, till the fvdi driver is fixed. 2007/12/16 - Petr - main.cpp: SDL_Delay() in the POSG (Power On Setup GUI) increased from 1 to 20 in order to minimize the host CPU load. - natfeat/nfvdi: added reset() function that re-enables VIDEL rendering so after Ctrl+Alt+Del user can see the Fuji/EmuTOS logo :-) 2007/12/16 - Patrice - hostscreen: only update visible part of surface. Dirty rects and surface may be bigger. - gui: fix disk related dialog, writing missing parts. Also fix test cursor updates by always redrawing dialog, then cursor above it. Fix mouse up/down button press events, to properly update object states. Do not wait for an event to refresh file list in selector. 2007/12/12 - Patrice - hostsurface: add alpha property :-). And alpha setting for GUI. Add parameter to force SDL Surface recreation, so OpenGL can use a format that suits texturing formats. 2007/12/11 - Patrice - hostsurface/hostscreen: Need to keep track of created surfaces in a list. Tell surfaces when to recreate OpenGL texture objects (for sure happens on win32 - do not know about other platforms that may require it). Store surface parameter inside surface. Only do screenshot once rendering is done. 2007/12/10 - Patrice - sdlgui: Use SDL_GetTicks() to blink cursor at a fixed rate. - main: No need to check which driver it is for fullscreen state. We read it when setting video mode. - hostscreen: Allow screenshot in OpenGL mode. 2007/12/09 - Stefan - darwin/Makefile: The architecture dependend binaries were build inside the darwin directory, but for the universal binary they were taken from the main directory ($(makedir)) and the universal binary got stored there, too. For the application bundle then a universal binary was taken from the darwin folder again. The build didn't fail if there still were older binaries at both locations. Anyway the application bundle contained a wrong binary. - darwin/aranym.xcodeprj: As now the application bundle is build again as src/Unix/darwin/ARAnyM.app, the XCode project doesn't need a custom location for the build product directory any more. - Makefile.in: For the target mostlyclean now instead of TARGET both APP and APP_BUNLDE will be deleted. - src/dyngl.c: Fixed compiler warning about unused parameter. - src/Unix/aratapif.c: Fixed compiler warning about type mismatch. - src/uae_cpu/compiler/compemu_support.cpp: Fixed compiler warnings about type mismatches. - src/uae_cpu/compiler/codegen_x86.cpp: Fixed compiler warning about type mismatch. - src/natfeat/nfosmesa.h: Fixed return type of name() method. - src/natfeat/nfosmesa.cpp: Fixed return type of name() method. - src/natfeat/nfjpeg.h: Fixed return type of name() method. - src/natfeat/nfjpeg.cpp: Fixed return type of name() method. 2007/12/08 - Stefan - darwin/Makefile: Fixed the Makefile to allow a direct jump to errors in Xcode. - Makefile.in: Added $(makefile) to hold the name of the current Makefile. This is needed for depend to append the dependencies to the right file. Added $(makedir) to hold the path to the config.h and other files. This is needed because for the darwin target make is started from a different folder. - configure.ac: Added again a srcdir definition for darwin. - darwin/aranym.xcodeprj: Updated the Xcode project files. - darwin/info.plist: Udated version information. 2007/12/08 - Patrice - main: Move OS init at the end of initialization - hostscreen: add a BOOT screen (empty), used if starting with GUI, and while processing reset - videl, videl_zoom: Zoomed surface also with partial updates: fast. 2007/12/07 - Patrice - hostscreen: make the bitplane2chunky conversion routine static. Remove similar routines that are duplicates. Add more stuff to force a refresh at proper time. - host_surface: Fix saving palette on resize. - videl: update surface using dirty markers. Added crc using Adler-32 algorithm for 16x16 blocks. 2007/12/07 - Petr - cfgopts.cpp: another fix (this time for $HOME without trailing slash) 2007/12/07 - Stefan - darwin/Makefile: Adapted to build files in root directory. 2007/12/06 - Petr - input.cpp: don't close SDL GUI that was not opened yet 2007/12/05 - Petr - cfgopts.cpp: fix for alternate "-c config_file" specified without any path - gui-sdl/sdlgui.cpp: added a space between checkbox and text - gui-sdl/dlgMain.cpp: use safe_strncpy() wherever possible 2007/12/05 - Jens - Fixed building with XCode (adapted to new code structure) - ethernet_darwin: Fixed hostscreen references to toggleScreen 2007/12/04 - Patrice - logo: Keep it in a SDL_Surface to redraw it at will. 2007/12/03 - Patrice - hostscreen: Add selection of screen to display. Could even make it switchable on the fly if needed. 2007/12/02 - Patrice - hostscreen: OpenGL backend done, still small bugs remaining here and there. Use OpenGL to zoom videl surface. - nfvdi: disable OpenGL renderer atm, corrupt our compositing layer. 2007/12/01 - milan - configure.ac: real mode addressing removed from default, target for removal 2007/11/30 - Patrice - host surface: add function to set wanted surface size for opengl that may need power of two dimensions. Add function to set palette. Also save and restore palette when destroying/recreating surface. - host surface for OpenGL, to hold texture information. - hostscreen: OpenGL backend created. Remove bitsperpixel function, only keep bpp that return bit depth. - nfvdi: do not need reset function anymore. 2007/11/29 - Petr - various files: more 'const' fixes from Thothy - gui-sdl/sdlgui.cpp: SDLGui_Draw3DBox() corrected for 8x16 font - gui-sdl/font.h: added much nicer radio button and check box (two chars wide) - gui-sdl/sdlgui.{cpp,h}: SDLGui_DrawCheckBoxState() updated for two chars wide radio/checkbox. 2007/11/29 - Andreas - cfgopts: More fixes for compress_path. 2007/11/28 - Petr - mkinstalldirs: moved from src/Unix ../.. - src/Unix: removed the autotools files, use the top-level ones instead. - various files: added 'const' before 'char *' to satisfy gcc 4.2. Thanks for patch goes to Thomas Huth. 2007/11/28 - Patrice - host: rename hostscreen as video, makes it a pointer. - hostscreen: clear whole screen when need a complete refresh. 2007/11/27 - Patrice - logo, sdl_gui: use host_surface for rendering. - hostscreen: separate function to draw surface to screen, only update dirtied parts. Encapsulate host surface creation there. Remove VBL_UPDATES stuff. 2007/11/26 - Andreas - cfgopts: Fix compress_path. - host_surface: Fix double free. 2007/11/26 - Patrice - videl, nfvdi_soft: use host_surface for rendering. 2007/11/26 - Andreas - tools.cpp: Include . - Makefile.in: Fix reference to mkinstalldirs. 2007/11/25 - Patrice - dirty rects: Don't set flag outside boundaries. - hostscreen: remove mutex for vbl update stuff. - input: Force screen refresh when closing gui. - host_surface: New base class that will hold SDL_Surface used also for texture with OpenGL renderer. 2007/11/25 - Andreas - configure.ac: Don't clobber srcdir. - Makefile.in: append src to srcdir here. 2007/11/25 - Petr - building system moved to the top-level directory configure.ac, Makefile.in: adapted for new paths install-sh, config.*, acinclude.m4, autogen.sh: just copied Simply run "./autogen.sh", "./configure && make" in the top-level dir now. - SDL-GUI fonts: 8x8 font (font8.h) replaced by 8x16 font (font.h) - sdlgui.cpp: try to load "font" file from the ARAnyM config folder. Fall back to hardwired 8x16 font if not successful. 2007/11/24 - Patrice - nfvdi_soft: Put back vdi->hw palette mapping. 2007/11/23 - Patrice - input: do not send mouse motion events to ikbd if mouse not grabbed. 2007/11/22 - Patrice - main: forgot to redraw screen when starting with GUI enabled. 2007/11/20 - Patrice - hostscreen: remove mutex and associated lock/unlock functions. - gui: do not use a thread. - logo: do not try to endlessly load file if not present. 2007/11/02 - Patrice - midi: send NOTE OFF on all channels before exiting. - sdlgui: first steps to nonthread stuff: create separate function to init, process and close a dialog. Blink and redraw text cursor from main thread. Fix fullscreen toggle. Always ungrab+show mouse when opening gui. Move dlgKeypress dialog in its own source file. 2007/10/31 - Patrice - Set 640x480 as minimum size. 2007/10/28 - Petr - cfgopts.*, parameters.*: moving auto conversion of file paths in the config file to CfgOpts class. 2007/10/09 - Philipp - Updated MacAranym.xcodeproj - Moved OpenGL library initialisation from Host to HostScreen where it is needed. - Added more information if OpenGL initialisation failes. - Added missing header file in ethernet_darwin.cpp. 2007/10/05 - Patrice - parameters.cpp: Always set OpenGL stuff to disabled if not compiled in. 2007/09/30 - Patrice - Added logo, path to image configurable in config file. Logo is displayed till Videl is ready. - configure: Test SDL_image separately, it may be used for something else than nfjpeg. 2007/09/22 - Patrice - Allow window resize. Videl, sdlgui and nfvdi surfaces are centered/clipped to the screen surface. 2007/09/21 - Philipp - MacAranym.xcodeproj/project.pbxproj: Fixed project to compile again. - ethernet_darwin.cpp: fixed reference to hostscreen - nfjpeg.cpp: Enabled conditional compilation by adding a check for NFJPEG_SUPPORT. This file is now always included in the darwin project. 2007/09/21 - Patrice - hostscreen: remove temp surfaces used in various places. Also remove drawing functions. No need to inline everything. Remove log messages from include file. 2007/09/20 - Patrice - Need to disable SDL parachutes for signal handlers; conflict with Aranym sigsegv handler? 2007/09/19 - Patrice - hostscreen: member of Host class now, so created and destroyed there. 2007/09/18 - Patrice - hostscreen: create functions to update each part of video subsystem to main surface, which also has its dirty rectangles list. 2007/09/14 - Patrice - nfvdi: render nfvdi screen in its own surface. Should be much faster on MacOSX now even without the VBL_UPDATE option. Added a dirty rectangle class, so we do not have to blit the whole nfvdi surface on each refresh. 2007/09/09 - Stefan - darwin/Makefile: Removed dependency of ppc target from config_i386.h and the dependency of i386 target from config_ppc.h. 2007/09/07 - Philipp - Corrected handling of --enable-ctrlkey in configure.ac and input.cpp (currently only supported by Darwin / Mac OS X target). - MacOSX/MacAranym.xcodeproj: Removed (once again) dependency to SDL_image Framework. 2007/09/02 - Stefan - darwin/busybee.icns: Again another version of the busybee icon. - darwin/busybee112-glossy.xcf: Added gimp file which I use to create the busybee icon. - darwin/Makefile: New targets universal, i386 and ppc to choose the binary type of ARAnyM. The ppc target now should also allow to build ARAnyM on Mac OS X 10.3.9. Fixed an error that the Makefile_ppc or Makefile_i386 is older than its dependencies. - INSTALL: Added description for darwin port. - Unix/Makefile.in: Removed support for .mm, as .M has already been used for C++/Objective C mixed files. We should stick to one extension. - MacOSX/MacAranym.xcodeproj: Updated XCode project file. - darwin/aranym.xcodeproj: Updated XCode project file. - Unix/configure.ac: Renamed SDLHotkeysRefresh.mm to SDLHotkeysRefresh.M. - aratapif.c: Made it compile on Mac OS X. - darwin/ethernet_darwin.cpp: Changed executeScriptAsRoot() to use Host::getDataFolder(). - darwin/German.lproj/InfoPlist.strings: Added this file to allow further localisations. - codegen_x86.cpp: Solved a compiler warning due to an unused local variable. - sigsegv_darwin_x86.cpp: Solved a compiler warning inside catch_exception_raise(), the return value krc now is initialized with KERN_SUCCESS. 2007/08/30 - Patrice - videl, sdl_gui: Render it in itw own surface instead of drawing on main surface (Some small redraw problems remain for sdl_gui with nfvdi). - hostscreen: its refresh function now responsible for setting mode and blitting videl, gui stuff on screen when needed. 2007/08/29 - Philipp - MacOSX/MacAranym.xcodeproj: "Debug" Konfiguration does not create a Universal Binary anymore. It's for development and debugging purpose only, so there is no need to compile each file for PPC and i386! - autoconf.sh: Fixed misleading message about running configure if NO_CONFIGURE is set. 2007/08/28 - Andreas - Rename always_inline to ALWAYS_INLINE to work around bug in MacOS headers. 2007/08/28 - Jens - configure.ac: Added missing $ sign determining OS_TYPE - MacOSX/MacAranym.xcodeproj: adapted to new configure.ac 2007/08/27 - Andreas - configure.ac: replace AC_CANONICAL_SYSTEM by AC_CANONICAL_HOST, use $host_xxx instead of $target_xxx. - Fix make depend. - Replace reserved identifier __always_inline by always_inline. 2007/08/27 Jens - darwin/Makefile: removed config.h.in dependency from Makefile. It makes some trouble building the Makefile target directly after a CVS checkout and I don't think it's really necessary. - gui-osx/English.lproj: Fixed properties tag - MacOSX/MacAranym.xcodeproj:German bundle added to package 2007/08/26 Jens - darwin/English.lproj: Tags set on menu entries - darwin/German.lproj: Tags set on menu entries - darwin/Makefile: Fix to make it 10.3.9 compatible (code for modifying config_ppc.h taken from the xcodeproj) - darwin/ethernet_darwin.cpp: If it is started as fullscreen application, leave the fullscreen mode before opening the authorization dialog. After initialization reenter fullscreen mode. Added Authorization Service to ask for the user password for starting up the ethernet connection. Location of aratapif.sh changed to "~/Library/Application Support/ARAnyM" - darwin/Readme_ethernet.txt: Updated information for installation of the ethernet on Mac. - darwin/sigsegv_darwin_x86.cpp: Commented a enum value to reduce warnings during compilation. - darwin/SDLHotkeysRefresh.mm: New code interacting as an interface between the cpp code and the Objective-C code of the MAC part that updates the menu shortcuts. - gui-osx/German.lproj: Added german version - gui-osx/English.lproj: added tags for the different menu entries. For a list of the used tags see darwin/SDLHotkeysRefresh.mm - MacOSX/Readme.rtf: JIT/Ethernet comment changed - MacOSX/MacAranym.xcodeproj: changed that the configure is running twice for each target, to make sure that the config file is generated correctly for the target. Added Security.Framework. - configure.ac: Fixed a typo using vblupdates; added Security.Framework; added SDLHotkeysRefresh.mm to source list for Makefile build - input.cpp: Fixed getting modifier if it is pushed by a Menu key - gui-sdl/dlgMain.cpp/main_unix.cpp: Call refreshHotkeys() on Mac to update the key shortcuts in the screen menu bar - Makefile.in: Added compilation rules for .mm files. Fixed bundle creation copying frameworks if SDL_image.framework is not available it fails before. 2007/08/19 Stefan - darwin/busybee.icns: I made a new glossy busy bee icon. - darwin/aranym.xcodeproj: Little fix so that the compiler finds the executable. 2007/08/16 Stefan - darwin/host_filesys_darwin.M: Added this file now containing the file system functions. - darwin/parameters_darwin.cpp: Renamed it from .M to .cpp, as of the split-off of darwin/host_filesys_datwin.M there's no Objective C code any longer. - darwin/English.lproj/aranym.nib, darwin/German.lproj/aranym.nib: Added some more menu items to control ARAnyM. - darwin/SDL.M, darwin/SDL.h: Added functionality to recognise configuration files or bundle names passed to ARAnyM at startup due to a double-click on either one. Solved a problem on terminating ARAnyM. - darwin/Info.plist: Added information to start ARAnyM via double-click on files with the extension ".ARAnyMCFG" or ".amcfg". Added information to define a bundle folder with the extension ".ARAnyMVM" or ".amvm". Such a bundle then can contain disk images, ROMs, a config file and also other stuff. A bundel is treated by the Finder like a single file. A double-click on such a bundle now starts ARAnyM, which then looks for an "org.aranym.amcfg" or usual "config" file to use. - darwin/araynm.pbproj: As this file is not in use any more, I now removed it. - darwin/aranym.xcodeproj: Added an XCode project instead. It mainly just relies on the darwin/Makefile. - Unix/Makefile.in: The new XCode project sets its working path to the darwin folder. To gain from the XCode features, I adapted the Unix/Makefile.in that from within the darwin folder make -f ../Makefile_ppc can be started. - darwin/Makefile: Little changes were necessary to start the autogen.sh, configure and make depend separately from within the darwin folder. - configure.ac: Changed the default config file name according the new extension to "org.aranym.acfg". Added a new configuration switch to select either the control or meta key or both to emulate the control key. Added darwin/host_filesys_darwin.M and darwin/parameters_darwin.cpp to EXTRASYSSRC and removed darwin/parameters_darwin.M instead. Changed the srcdir variable to ".." to get the make system working comfortably form within XCode. - input.cpp: Using the new defines to decide for control or meta key to map the the emulated control key. - Unix/config.h: Also here I added the new control key defines MAP_META_TO_CONTROL and MAP_CONTROL_TO_CONTROL. - INSTALL: Added a more detailed description of how to build ARAnyM for Mac OS X. - uae_cpu/compiler/codegen_x86.cpp: Removed some easy compiler warnings. - darwin/sigsegv_darwin_x86.cpp: Removed some easy compiler warnings. - Unix/vm_alloc.cpp: Removed some easy compiler warnings. - uae_cpu/compiler/gencomp.c: Removed some unused functions and thus some compiler warnings. 2007/08/15 Philipp - New Xcode 1.5 project in "src/Unix/MacOSX". Old project in "src/MacOSX" has been removed. 2007/08/13 Philipp - gui-osx: Moved Mac OS X GUI sources into separate folder. 2007/08/12 Jens - hostscreen.cpp: Introduces new option to have delayed screen updates via SDL_UpdateRects. This is necessary to have a fluently updated screen on the Mac in windowed mode (see http://www.libsdl.org/faq.php?action=listentries&category=7#68). It may be useful on some other systems too. - configure.ac: New option --enable-vblupdates for delayed updates - darwin/Makefile: add parameter --enable-vblupdates - main_unix.cpp: Changed calculation for the mirror space address. It should work in 64 Bit now too, it should be the correct address if all related address calculation is done in 32 Bit. 2007/08/10 Jens - darwin/ethernet_darwin: Completed first TUN/TAP support on mac - darwin/aratapif.sh: A shell script version of aratapif - darwin/Readme_ethernet.txt: A short description of setting up ethernet on the Mac - darwin/Makefile: add parameter --enable-ethernet 2007/08/10 - Petr - gui-sdl/dlgHotkeys.cpp: documented one hidden feature - if you need to set just a shifter hotkey (like Right Control for releasing the mouse+keyboard) then press and hold the Right Control and press the [Enter] key. - parameters.cpp: JIT is now preset to Yes so it's enabled by default (unless disabled by the [JIT] section of your ARAnyM config file). - main.cpp: disabled the heart-beat I invented long time ago - it's visually annoying and distracting. - input.cpp: with "-N" (=don't grab mouse+kbd at startup) allow later keyboard+mouse capture by clicking on the ARAnyM window. 2007/08/06 - Petr - gui-sdl/dlgDisk.cpp: pre-select inserted/created disk 2007/08/04 - Jens - configure.ac: Use TARGET_CPU to determine for darwin, if JIT is supported. Set NO_NESTED_SIGSEGV for Makefile build - /MacAranym.xcodeproj/project.pbxproj: JIT part of standard packaging, ethernet disabled by default, since it is out of experimental. - darwin/Makefile: ethernet default =no (see above) 2007/08/03 - Jens - /MacAranym.xcodeproj/project.pbxproj Fixed compiler options; Added SDL-Image framework, MMU support 2007/07/28 - Jens - ethernet_darwin.cpp/h: added ethernet support to darwin directory - configure.ac: Assume ethernet=yes if OS is darwin - ethernet.cpp: Added include to ethernet_darwin.h 2007/07/26 - Jens - darwin/sigsegv_darwin_x86.cpp: First running version of MacAranym with JIT - configure.ac: added parameter --with-classicconfig for classic configuration files and pointed to sigsegv_darwin_x86.cpp for JIT version. - src/Unix/MacOSX/MacAranym.xcodeproj/project.pbxproj: added new target MacAranym JIT and modified the other targets to keep their local parameter inside itself. Also a packaging JIT target is introduced with is a simple clone of the normal packaging target. 2007/07/23 - Philipp - Fixed Mac OS X framework lookup in acinclude.m4. 2007/07/22 - Stefan - include/toserror.h: Added TOS_ENAMETOOLONG with value -86. - natfeat/hostfs.h, natfeat/hostfs.cpp: Implemented xfs_readlabel(). From the hostRoot path the last folder name is used as the label. If for any reason this is not possible (e.g. hostRoot is "/"), then a default label "HOSTFS" will be used. This now enables MAGXDESK, which uses Dreadlabel(), to open hostfs volumes. 2007/07/22 - Petr - natfeat/ethernet.cpp: reset() just stops the receiver thread. Now networking works even after reboot. - Unix/aratapif.c: added include to define inet_aton() - gui-sdl/dlgNetwork.cpp: added type "None" to not store undefined [ETHx] entries 2007/07/20 - Petr - gui-sdl/dlgNetwork.cpp: new dialog for setting up the networking - gui-sdl/dlgHotkeys.cpp: hotkey defined with the Enter key means that the hotkey is actually just the modifiers (useful for mouse/keyboard ungrabbing by combination like Alt+Shift+Ctrl) 2007/07/15 - Stefan - hostscreen.h: Moved inclusion of parameters.h before SDL header files to solve a header file clash when using OSMesa on Mac OS X. - nfosmesa.cpp: Removed unnecessary inclusion of GL/OSMesa.h. - nfosmesa.h: Added conditional definition of GLAPI and GLAPIENTRY to solve a clash of /usr/X11R6/include/GL/gl.h and /System/Library/Frameworks/OpenGL.framework/Headers/gl.h on Mac OS X. - nfvdi_opengl.h: Removed unnecessary inclusion of glu.h, as this is done above already by including SDL_opengl.h. Moved inclusion of parameters.h before SDL header files to solve a header file clash when using OSMesa on Mac OS X. - nfvdi_opengl.cpp: Removed unnecessary inclusion of glu.h, as this is done above already by including SDL_opengl.h. Removed unnecessary inclusion of parameters.h and SDL_opengl.h, which is done already by nfvdi_opengl.h. - sigsegv_xbsd.cpp: Solved a compiler waring about unused parameter x in function segfault_vec(). - compemu_fpp.cpp: Solved lots of compiler warings regarding unused parameters and variables. Some warnings regarding signed/unsigned comparations still exist. - compemu_support.cpp: Solved lots of compiler warings regarding unused parameters, variables and functions. - sysdeps.h: Checking for __STDC__ as well as for __cplusplus, as in ISO C++ __STDC__ is implementation dependant. - acinclude.m4: Slightly changed the check for framework locations. - configure.ac: Added ARCHFLAGS, CPU_TYPE and GENSRCS to support the build of an universal binary for darwin. For darwin also ISYSROOT is therefore needed. Splited generated from existing source files into GENCPUSRCS and GENJITSRCS to not include them into dependency generation. Reactivated darwin defines. Cleaned up the usage of preprocessor (CPPFLAGS) and compiler flags (CFLAGS, CXXFLAGS). Added general JIT support for darwin. Fixed an error in check for WANT_SIGSEGV_GOTO. Added a default include path for OSMesa support on darwin. - Makefile.in: Fixed the VPATH. Cleaned up the usage of preprocessor (CPPFLAGS) and compiler flags (CFLAGS, CXXFLAGS). Fixed the source file name cfgopts.c into cfgopts.cpp. Changed the icon for darwin to busybee.icns. Added CPU_TYPE, ACHFLAGS, GENCPUSRCS, GEN_DIR and a new target APP_ARCH to support an universal binary build for darwin. The tools build68k, gencpu, gencomp and cpuopti get always compiled for the host CPU (thus without the ARCHFLAGS), as they build executables to generate source files to compile for the target CPU again. GEN_DIR and now also OBJ_DIR depend on the target CPU and are used to store PPC and i386 generated and object files separately. The clean target has been adjusted accordingly. Changed target depend to make it also working on Mac OS X, where makedepend is not available. Now CXX is used with option -MM to generate the depedencies. This should now work on all systems. To not get error messages for not existing files, generated source files are now listed in GENCPUSRCS and excluded from dependency generation. - darwin/Makefile: Added this new Makefile to allow an easy setup for the PPC and i386 parts and to finally generate an universal binary of both. - darwin/busybee.icns: Added a new icon. - vm_alloc.cpp: Resolved some compiler warnings if HAVE_MACH_VM is defined. - bootos_linux.cpp: Resolved a double definition of PAGE_SIZE. - cdrom.cpp: solved compiler warning by removing OpenDrive(). Inside cdrom_interface::insert_cdrom() masterPort now is initialized with 0 instead of NULL to remove a compiler warning and omit a cast. - input.cpp: Added a check on define SWAP_CNTRL_AND_META_KEY in keysymToAtari() to swap them or not. - ndebug.cpp: Put a cast to long double for an fprintf() argument inside ndebug::m68k_print() to remove a compiler warning. - darwin/Info.plist: Updated version, date and link to the homepage. - darwin/sdl.m4: Added file to support the new darwin/Makefile. - darwin/SDLMain.M: Cleaned up a little. - darwin/SDLMain.h: Added methods applicationDidFinishLaunching and applicationWillTerminate. 2007/07/11 - Petr - gui-sdl/dlgDisk.cpp: BTS #1627890 fixed properly by raising the max disk size barrier up to 130 GB. Beware - the C/H/S autodetection in the SETUP now forces sectors-per-track to 255 (used to be 63) so the geometry for existing disks that would be auto-detected changes. Not sure if it affects anything but be careful. - ata.cpp: fixed sector counter overflow for 255 sectors per track 2007/07/11 - Petr - gui-sdl/dlgDisk.cpp: check for 8 GB barrier (16383/16/63 C/H/S) - thanks to mikro_sk's BTS #1627890. - aranym.spec: "patch" related lines commented out (thanks Martin Tarenskeen) 2007/07/10 - Petr - MacAranym.xcodeproj/project.pbxproj: fixed by Philipp, version increased - host.cpp: include dyngl.h only if ENABLE_OPENGL is defined (thanks Olivier) *** CVS tagged as ARANYM_0_9_5_BETA 2007/07/09 - Petr - parameters.cpp: compress_path() fixed, now converts absolute paths to shortcuts properly. - Unix/config.{guess,sub}: updated to version 2006-07-02 - NEWS, README, include/version.h, tools/export: updated for new release 2007/07/04 - Petr - rtc.cpp: check NVRAM related config options upon each reset Also fixed NVRAM error in connected VGA/TV monitor (been there since day 1) - gui-sdl/dlgVideo.cpp: radio buttons cleared correctly now.. 2007/07/03 - Petr - bootos_tos.cpp: check TOS related config options upon each reset - hostscreen.cpp: get ready for 'refresh' config option on-the-fly changes - input.cpp: hack for switching between fullscreen/window from the SETUP GUI - main.cpp: wrong millisecond count for 50 Hz VBL fixed (we used to be refreshing the screen at 12.5 Hz instead of 25 Hz since some time) - gui-sdl: added dialogs for patching TOS and for Video settings. Most of the settings require reboot to have some effect and some even cause crashes when changed on-the-fly. Interesting. The autozoom options were added in the hope that it finally helps to get documented how they affect the nfVDI resolution (rumours say that fVDI settings are overriden by this). 2007/06/23 - milan - fpu: Bill Allombert's patch for inaccurate sin/cos/tan insns of x87 FPU 2007/06/21 - Petr - fixed a bug in TOS conout redirection 2007/05/10 - Standa - hostfs.cpp: symlink resolution buffer size glitch fixed and cleaned up - nfvdi_soft.cpp: mfdb.fd_stand extension meanings changed to be bit flags (instead of 0x100 being a value itself as was before used for fVDI antialiased fonts): 0x0100 chunky expandArea 0x1000 fd_wdwidth contains number of bytes instead ofwords Those are used in the aranymfb I have implemented for Linux-m68k (patch to be published). 2007/04/02 - Petr - videl.cpp: a fix from hatari by Thothy: ST-Shifter register is byte wide - cpummu.cpp: Roman fixes 8 kB page mode and adds a flush to set_tc. 2007/03/29 - Petr commiting patch by Roman - cpummu.cpp: the writeback data was written to the wrong location as the pointer was modified. 2007/03/18 - Andreas - fpu_uae.cpp: Make dump_first_bytes a real nop when !FPU_DEBUG. 2007/03/17 - Andreas - memory.h: Change return type of test_ram_boundary to bool and always define it. - newcpu.cpp: Call mmu_set_super in m68k_reset. 2007/03/17 - Petr commiting patches by Roman Zippel - thanks! - newcpu.[cpp|h], gencpu.c: bitfield instructions fixed (were reading a bit too much). Also wrap around of bitfields in registers has been fixed. - cpummu, newcpu, memory.h, registers.h: new core of the mmu atc cache. It's now a two level cache. The first level cache is optimized for speed (and actually consists of subcaches for read/writes, super/user, instruction/data), while the second level is a bit larger and tries to take alias issues a bit into account. - configure.ac: FIXED_VIDEORAM not required for MMU mode. SDL_image added to SDL_LIBS instead of LIBS. 2007/02/18 - Andreas - Repair SDL_image configuration. 2007/02/04 - milan - JITc: 33 bit addressing hack removed, other 64-bit fixes (CMOV, SAHF), code based synced with Basilisk II - distributed dispatcher removed, not used at all - cpummu.cpp now included in all CPU modes 2007/02/02 - Petr - MMU optimizations by Roman Zippel. MMU translations cached for speed up. 2007/01/29 - Philipp - Existence check of MacOS X frameworks. 2007/01/27 - Patrice - Move path related definitions from CXXFLAGS to config.h file. 2007/01/08 - Philipp - Partially fixed background restore for mouse cursor when it's close to right or bottom border. 2007/01/06 - Patrice - Move AC_ defined functions from configure.ac to acinclude.m4 - Thread related CFLAGS are already defined in SDL_CFLAGS - OpenGL library is now dynamically loaded (no more statically linked). It also requires SDL>=1.2.10 to be able to revert to default system one. 2006/12/31 - Philipp - parameters.cpp: fixed loading of data files relative to config file location. 2006/12/30 - Philipp - nfvdi_opengl.cpp: Disabled interpolation for mouse cursor. Cursor is now drawn with correct size (16x16 instead of 15x15). 2006/12/29 - Philipp - nfosmesa.cpp: Added Darwin/Mac OS X specific enhancement which allows loading of libGL and libOSMesa libraries relative to binary executable location instead of bundle location. - configure.ac: disabled testing for SDL_image, as this way of testing fails always on Mac OS X. A new framework aware way of testing has to be found. Removed modification of CFLAGS, CXXFLAGS and LIBS after SDL check. - Makefile.in: Added references to SDL_CFLAGS, SDL_CXXFLAGS and SDL_LIBS variables to corresponding CFLAGS, CXXFLAGS and LIBS. - parameters.cpp: bugfixes concerning loading and saving of Path_Tag variables. The ~, * and config file relative path expansion and compression (when saving) is now done in the corresponding postload_xx() and presave_xx() functions. - README_Xcode.rtf: added description on how to add support for additional NatFeats (NFOSMESA and NFJPEG) to the base project. 2006/12/26 - Patrice - MinGW: sigaction() does not exists. - cygwin: sometimes, audio callback is called before host is defined. - misc: only include when needed 2006/12/20 - Patrice - nfobjs: Add function to search a NF driver by name, use it in input for NFVDI. 2006/12/19 - milan - cxmon support removed, not used for years - gdbstub removed, not finished for years - Unix/solaris/sigsegv_solaris_x86.cpp: Solaris x86 extended segfault handler (JITc support) 2006/12/14 - Philipp - Changed use of compiler defined CPU macros __i386__, __x86_64__, __powerpc__ to their corresponding CPU_i386, CPU_x86_64, CPU_powerpc macros. This is a necessary step for cross-compilation, as some CPU sources are automatically produced (build68k, gencpu). They should take the target CPU type into account and not the CPU type of the current host! - cfgopts.cpp: When saving the configuration on a Mac OS X system, the temporary file is created in /tmp instead of the current directory (path to application), as this directory is in general not writable on Mac OS X. This option could also be enabled for other Unix based systems. - src/Unix/MacOSX/*: Added new project file for Xcode 2.x used to build Universal binaries of MacAranym. 2006/12/14 - Patrice - nfvdi is disableable if needed. 2006/12/13 - Philipp - nfvdi_opengl.cpp: Fixed bug which made Mac OS X crash on gluDeleteTess() even though no tesselation object was created. - hostscreen.h: Changes to remove warnings and errors when compiled on Mac OS X with enabled OpenGL. 2006/12/07 - Philipp - Updated Xcode 1.5 project (=compiles again). Modifications to support dynamic ARAnyM home directory (configurable in Info.plist file). 2006/12/05 - Philipp - nfvdi_opengl.cpp: Fix of not-endianness-aware alpha channel clearing, which made Kronos fail to detect screen format on Mac OS X with OpenGL fVDI driver enabled. *** CVS tagged as ARANYM_0_9_4_BETA2 2006/11/27 - Andreas - uae_cpu/fpu/fpu_ieee.cpp: Fix conversion of extended zero/Inf/NaN to host format. 2006/11/27 - Petr - natfeat/ethernet.cpp, parameters.*: "MAC=aa:bb:cc:dd:ee:ff" added to [ETHx] section of config file - set your desired MAC Address freely now. 2006/11/26 - Andreas - uae_cpu/fpu/fpu_{uae,ieee}.cpp: Fix aliasing issues. 2006/11/26 - Standa - nfvdi_soft.cpp: Fixes for different vswr_mode alpha expansions (newsgroup reader Troll look good now). 2006/11/25 - Standa - nfvdi_soft.cpp: Other then 4 byte per pixel color depth is unsupported for the 8bit alpha expand mode used by fVDI antialiasing renderer. 2006/11/22 - Xavier - uae_cpu/cpummu.cpp: Reverting back to previous state. This is not a bug since instruction is not restarted if access fault is caused by a write. 2006/11/21 - Xavier - uae_cpu/cpummu.cpp: Restore memory to its original state when a misaligned memory write accessing 2 different pages generates an access fault on the 2nd page. Should fix potential problems with read-modify-instructions like NOT, NEG, ADD, SUB,... 2006/11/18 - Petr - Xavier's patch fixes the following instructions that probably misbehaved when restarted due to bus error: MOVE, RTR, SBCD, SUBX, ABCD and ADDX. - Bill Allombert's patches fix several FPU emulation errors: FCMP (Octave didn't even start), FETOX and ATANH (the latest fixed by correcting function fp_sgn1()). 2006/11/13 - Petr - parameters.cpp: there is no reasonable default filename for files that will aranym write to thus MIDI filename set to empty and PARALLEL outputs back to stderr. - parallel_file.cpp: make sure Type is set to "file" before creating the file. This allows for Type = none like in MIDI. Also ensure filename is not empty. - midi_file.cpp: ensure filename is not empty. - natfeat/nfaudio: implemented simulation of locking. At least the Locksnd() and Unlocksnd() XBIOS calls should return proper values now. - parameters.cpp: in [LILO] Kernel and Ramdisk made Path_Tag (filenames might be relative or contain the "~"). 2006/11/11 - Andreas - uae_cpu/gencpu.c: Perform pre-decrement side effect only after fetching the value from memory. 2006/11/11 - Patrice - main,hostscreen: Move video refresh stuff from main to hostscreen. - input: Use const reference to process events. 2006/11/10 - Petr - uae_cpu/gencpu.cpp: fixed RTD insn emulation bug (same problem as the LINK insn below). According to a careful review at least 10 MOVE insns are still affected by this CPU emulation problem on an unmapped memory page boundary (op_11d8_0, op_11e0_0, op_13d8_0, op_2158_0, op_2160_0, op_21d8_0, op_21e0_0, op_23d8_0, op_23e0_0, op_33d8_0) 2006/11/10 very a.m. - Petr - uae_cpu/gencpu.cpp: fixed LINK insn bug - in MMU mode, when restarted due to fetching its operand from an unmapped memory page it decremented the stack pointer twice. This was causing all sorts of weird crashes in Linux-m68k. Similar fix is likely needed for all CPU instructions... - ndebug.cpp: running with debugger active made much faster 2006/11/06 - milan - ndebug.cpp: roll back of Joy's 23rd October - debug.cpp: roll back of Joy's 23rd October - CPU debugger is primary for CPU and key OS functions debugging 2006/11/02 - Petr - parameters.cpp: store IKBD settings to [IKBD] section in config file 2006/10/28 - milan - ndebug.*: const char declarations in debug printfs - cfgopts.h: const char declaration of option name - natfeat/hostfs.cpp: new Solaris versions support struct statvfs - changes around header files on many places - aranym header files included at first 2006/10/23 - Petr - newcpu.cpp: "usp" register dump added to flight recorder - debug.cpp: ignore_irq set to 1 by default (don't trace interrupt routines) - ndebug.cpp: deactivate_debugger on 'g' (so you can enter debugger again). this breaks breakpoints support 2006/10/22 - Petr - uae_cpu/debug.cpp: reformatted using Artistic Style v1.18 using the following switches: "--style=kr --indent=tab=4 --brackets=linux --brackets=break-closing-headers --indent-cases". Also added a simple command prompt prefix: 'i'=fire IRQs while in debugger, 'I'=ignore IRQ routines while tracing. - input.cpp: fixed invoking of internal debugger by pressing the hotkey 2006/10/20 - Petr - uae_cpu/fpu/types.h: "Fix long double support for x86 targets if -m128bit-long-double" - taken from Basilisk II CVS. - input.cpp: Flight Recorder is enabled by pressing the right Shift and disabled by pressing the left Shift key. - uae_cpu/newcpu.cpp: fixed flushing of the flight recorder buffer if driven by hotkeys. Also pre-set more reasonable defaults to FRLOG_XXX defines. 2006/10/12 - Petr - added third MIDI type: 'none' and made it default to avoid creating the /tmp/aranym-midi.bin file if there is no MIDI output. - bootos_linux: added the RESET instruction before the first kernel boot in order to properly initialize hardware. Fixes bug #1543599 - aranym.spec: David Bolt continuously improves the spec file - now it builds the RPM for SUSE, RedHat and also Mandriva and includes desktop entry (aranym.desktop, added to CVS) and an icon. 2006/10/11 - Petr - ikbd, rtc: switch between localtime() and gmtime() (returning UTC). - parameters, doc/config: new parameter "GMTime" set to No by default. 2006/10/09 - Petr - configure.ac: after some profiling (http://wiki.aranym.org/speedtest) I decided to enable protect2k by default for better compatibility with real Atari hardware. Also the cxx-exceptions are enabled by default now for non-SIGSEGV memory boundary checks. They bring a major speed up to MMU mode (up to 60% in the speed test mentioned above). 2006/09/29 - Petr - main_unix.cpp: QuitEmulator didn't actually quit the program which was causing troubles mainly when no operating system was found (i.e. when the InitAll() failed). - input.cpp: InputExit() added as counterpart to InputInit() - it releases the input focus. - main.cpp: free input focus grab in ExitAll() by calling InputExit() - if the ExitAll() freezed somehow (like by calling SDL_CloseAudio, for example) this would at least let the user control their desktop... - Unix/cygwin/parameters_cygwin.cpp: getHomeFolder() and getDataFolder() ignore Cygwin environment now. Home is in Windows user's home (usually somewhere below Documents and Settings), data is where the ARAnyM's executable resides. Based on patch by Blaine Brysh (bbrysh at shaw.ca). Thanks. - main_unix, linux/sigsegv_linux_x86: remove_signal_handler (restore original sigsegv handler if there was any) right after the CPU emulation finished. This is another improvement for a possible crash in QuitEmulator that would now let SDL to clean itself (SDL parachute). 2006/09/26 - Patrice - main.cpp: Pause audio before killing hw then host classes. 2006/09/24 - Petr - GNU/kFreeBSD support in configure.ac thanks to Petr Salinger. Closes Debian BTS #388995 and also ARAnyM's patch request #1549200. 2006/09/22 - Patrice - midi: Splitted in base class and implementation class (file output atm). Added /dev/sequencer output class for Linux. *** CVS tagged as ARANYM_0_9_4_BETA 2006/09/22 - Petr - main.cpp: CapsLock in newer libsdl worked differently in MS-Windows than on my setup. Took me quite some time to figure out that the Debian's libsdl is patched with a fix for CapsLock+NumLock (see Debian BTS #317010). Wish this fix was in upstream but until it's there ARAnyM must contain a workaround that basically disables this fix in Debian's libsdl. - configure.ac, Makefile.in, natfeat/*: --enable-nfclipbrd added. Allowed in cygwin only since there is now implementation of Clipboard interconnection for MS-Windows only. - doc/config: TuneAlignment, TuneNOPfill removed; BootstrapArgs, JITInline added. - doc/aranym.1: man page updated (-P added), project URL corrected - doc/aranym-jit.1, aranym-mmu.1, aratapif.1: new manpages added - aranym.spec: thanks to David Bolt the spec file does not try to build the JIT version on 64bit system (which caused the whole build to fail). - aranym.spec, README, NEWS, TODO, version.h: updated for release 2006/09/14 - Standa - main.cpp: hack for cygwin vs. MinGW SDL_put(get)env mismatch workaround added. 2006/09/09 - Patrice - Videl: copy high bytes of color component to lower bytes, to make white really white. STE has 4bits/component, hence 0xf was 0xf0, Falcon has 6bits/component. 2006/09/04 - Patrice - Midi: don't bufferize data. 2006/08/31 - Philipp - Check global bootdrive variable before saving and after loading config file: it should always be a printable ASCII value. (0 is not acceptable) 2006/08/29 - Petr - ARAnyM window positioning code moved from hostscreen.cpp to main.cpp, changed from platform specific window manager hacks to documented SDL environment variables and changed the command line option to "-P xxx,yyy" or simply "-P center" for centered window. This also removes the problematic stuff in configure.ac for detecting X11 library I added recently. - Linux/m68k now reboots properly (before ARAnyM died with double bus error). Problem lied in missing 'virtual' keyword in definition of 'reset' function in parent class (BootOs). Beware! This inheritance trap can be hard to spot. - emul_op: implemented new M68K_EMUL_OP_RESET instruction that calls the BootOs::reset function and basically reloads the linux kernel into RAM. - bootos_linux: created a simple OS init routine for successful Linux/m68k reboot (the kernel jumps to $e00030). Makes use of M68K_EMUL_OP_RESET. 2006/08/29 - Patrice - midi: output midi as raw values. 2006/08/29 - Philipp - Repaired Mac OS X project file. Now compiles under Xcode 1.5 and can be upgraded to Xcode 2.4 (by ignoring the "path empty" error message). Some changes as suggested by Francois. Slight reorganization. Added README.txt Still has to be tested in relation to previous binary releases. - Updated autogen.sh script to stop if configure step fails. So it's easier to spot the error message and one doesn't get the idea that everything is OK! - Swapped meaning of CTRL and META key for Mac OS X back to "the logical way": The Apple key(s) represent left and right meta key and CTRL key is mapped to Atari CTRL key. ALT was already mapped to Atari ALT. - A new, more Mac like set of keyboard shortcuts defined: Left Apple + , = Open preferences dialog Left Apple + q = Quit Left Apple + r = Reboot Left Apple + escape = Grab/Ungrab mouse cursor Left Apple + d = Enable debugger (if built-in) Left Apple + s = Save screenshot Left Apple + f = Toggle fullscreen mode As you see, I wrote "Left Apple" because you can't define a hotkey to use "any" Apple key. This is a limitation of the current way how hotkeys are defined. 2006/08/25 - Philipp - Various smaller corrections: cdrom.cpp: Corrected some compiler warnings and include statements for OS X cfgopts.h: Added C++ compiler check to avoid compile errors when included from Objective C files. parameters.h: Added C++ compiler check and removed parse error when included from Objective C files. compemu_support.cpp, sysdeps.h: added correct PowerPC detection on Mac OS X systems. - hostscreen.h: Fixed p2c routine for big endian, colors are now correct. 2006/08/25 - Patrice - mkdir() also works for Darwin - Fixed hostscreen p2c routines on big endian, from Philipp Donze patch. 2006/08/25 - Petr - memory.h: finally found and fixed two (hopefully last) MMU problems. 2006/08/10 - Patrice - HostFilesys::makeDir() now accepts permission flags, to be used by hostfs nf. - Disable hardware surface usage, to avoid locking the screen too frequently. Seems to be the only cause for slowness on MacOSX when not using OpenGL. 2006/07/17 - Patrice - MinGW does not have mkdir() with permissions. 2006/07/13 - Standa - input.cpp: fixing bug #1521310: Shifters are now released before the GUI thread is started. - hostscreen.cpp: Trying to fix the toggle fullscreen. Updating the screen after toggle so that it doesn't stay black. Also calls setWindowSize() to set everything correctly. It works for me now. 2006/07/12 - Patrice - MinGW does not have gettimeofday() function. 2006/07/10 - Petr - hostscreen.cpp: window positioning surrounded with an additional SDL_VIDEO_DRIVER_X11 condition - configure.ac: check for X11/Xlib.h is skipped for MacOSX that has the include file available but does not use X11 for the gfx output. Proper fix would probably be to rely on the SDL_VIDEO_DRIVER_X11 define even in the configure... 2006/07/10 - Petr - hostscreen.cpp: window positioning surrounded with #if HAVE_X11_XLIB_H - configure.ac: check for X11/Xlib.h added (for the window positioning) - parameters.cpp: "-P" documented in the --help 2006/06/25 - Petr - hostscreen.cpp: ignore window positioning on OS_darwin - that one does not offer any SDL_SysWMinfo struct. Patch suggested by Philipp Donzé, thanks. 2006/06/05 - johan - nfvdi_opengl.cpp: Corrected alpha mask when blitting from screen to memory. 2006/06/01 - johan - hostscreen.h: Major speedup for bitplane to chunky conversion. Deactivated on big endian CPUs due to bit order differences. 2006/05/30 - Andreas - natfeat/atari_rootsec.h: Fix definition of fixed size integers. 2006/05/08 - Petr - hostscreen.cpp: implemented window positioning for X11. Needs clean up. - parameters.cpp: window positioning no longer cygwin specific. - uae_cpu/newcpu: Flight Recorder more configurable (see the FRLOG #defines) 2006/05/08 - milan - JITc: cleaning, sync with BII 2006/05/05 - Petr - uae-cpu/newcpu.cpp: improved Flight Recorder. Now can dump to a continuous log, skip interrupt handlers, omit register list and most important - it does not hang the OS when fetching the OPCODE like it used to do regularly. - uae-cpu/compiler/compemu_support.cpp: adapted for passing opcode into flight recorder. NB! One place is unfinished - line 6710 - I don't know how to pass in the opcode as second parameter, sorry. 2006/05/01 - Petr - uae-cpu/memory.h: added #ifdef PROTECT2K that brings more ST/TT hardware compatibility to ARAnyM. When defined it protects the first 2 kB of RAM against read/write access in user mode. It's disabled by default mainly because it will kill some performance when activated. - configure.ac: --enable-protect2k added. It's not enabled by default (see above, performance reasons) but it gets enabled as soon as you opt for full MMU emulation. In such case the additional performance loss will not be noticeable and it will add to more complete real HW emulation. - uae-cpu/newcpu.cpp: changed the order of initialization in m68k_reset() otherwise the PROTECT2K falls into a recursive death. It might also fix the problems with rebooting with active MMU (I think it used to crash). 2006/04/13-30 - Standa - Cygwin build: Clipboard NatFeat added. This is to be used by a m68k side filesystem to be committed soon. One would need to point the GEM environment to it by setting the SCRAPDIR or CLIPBRD variable in most AES configs. It is good to know that e.g. Thing overrides this setting with its own. So one need to configure Thing to the appropriate folder. 2006/04/03 - Standa - A new BootstrapArgs [GLOBAL] section config argument that is provided through the BOOTSTRAP NF to EmuTOS which passes those to the kernel as command line arguments. This allows us to boot without the need of mint.ini. E.g. this boots directly without even showing the bootmenu: Bootstrap = ~/mint/freemint/sys/.compile_arad/mintarad.prg BootstrapArgs = DEBUG_LEVEL=1 BOOT_DELAY=0 MEM_PROT=NO BootDrive = C 2006/03/27 - Standa - In MS Windows the window position can now be set using a command line argument [-P xpos xpos]. No config file entries added yet. The command line args are read into bx_options.video.[xy]_win_offset values. 2006/03/03 - Patrice - nfosmesa.xdd: fixed NF pointer read for MiNT device. 2006/02/27 - Petr - tools/build-cygwin.sh: version of SDL increased to 1.2.9 - include/host_clock.h: virtual destructor added - parameters.cpp: anonymous struct named HOTKEYS_REL 2006/02/26 - Standa - nfvdi_soft: the remaining logical operations implemented for the 8bit alpha expand. Adjusted to work in all TC (16bit-32bit) modes. 2006/02/21 - Standa - nfvdi_soft: expandBitmap() now alpha expands 8bit chunked (mfdb_standard = 0x0100) data *** CVS tagged as ARANYM_0_9_3_BETA 2006/02/20 - Petr - atari/*: binaries moved to a separate 'afros' CVS repository - atari/fvdi: removed completely (now hosted in fVDI CVS repository) - natfeat/fvdidrv_nfapi.h: added from fVDI CVS - natfeat/nfvdi.cpp: renamed FVDI_TEXT enum to FVDI_TEXT_AREA (to match the fVDI CVS) - src/Unix/Makefile.in: updated to not install the missing binaries - doc/*.html: documentation moved to http://wiki.aranym.org/ - aranym.spec, README, NEWS, TODO, version.h: updated for release 2006/02/12 - Andreas - Support compiling outside source directory. 2006/02/11 - Patrice - nfcdrom: Merged SDL backend into base class as default implementation. 2006/02/11 - Petr - tools/arabridge: added chown $USER /dev/net/tun 2006/02/08 - Standa - BOOTSTRAP NF added. Using this the EmuTOS bootstraps the e.g. the FreeMiNT kernel directly (without having to have any boot floppy or HDD image). More information to come later (not all info is in CVS for all parts ATM). Two new [GLOBAL] section config entries introduced: Bootstrap = path/to/the/kernel BootDrive = X 2006/02/08 - Patrice - Merged bootos_linux and lilo. 2006/02/06 - Standa - atari/hostfs and atari/network/ethernet .xfs and .xif stuff moved to the FreeMiNT CVS. The BetaDOS and src dependencies stay in their spots for now. - atari/tools/devdos: Fixed a critical bug in the path2cookie() function. Now it appears to be quite stable (the fix was actually done on 2006/02/05). 2006/02/05 - Andreas - uae_cpu/cpummu.cpp: Fix parameters of mmu_bus_error. 2006/02/04 - Patrice - BootOs files split in parts for each bootable OS. Will merge bootos_linux and lilo later. 2006/02/04 - Standa - atari/network/ethernet: updated to use nf_ops.h - atari/network/natfeat.h removed as an obsolete file - atari/hostfs: All the BetaDOS related code and ifdefs are now isolated in the metados folder only. atari/hostfs files are basically ready to go to the FreeMiNT cvs if we decide to do so. I also did a global aranym -> hostfs replace as the source is not really aranym specific. 2006/02/03 - Patrice - atari/nfpci, atari/nfosmesa, atari/nfosmesa.xdd: updated for new nf_ops.h. - Disable check for SDL_LoadObject function in configure, it is present in SDL>=1.2.6. The check fails on MacOSX for some different linker flag. - Created an host clock class to encapsulate SDL/Unix time functions. 2006/02/01 - Patrice - atari/nfcdrom, atari/nfjpeg: updated for new nf_ops.h 2006/01/20 - Standa - atari/natfeat: the natfeat.h is now deprecated. A new nf_ops.h has been taken from the FreeMiNT (freemint\sys\mint\arch\nf_ops.h) and adjusted for out of mint cvs tree use. - atari/nfstderr: converted to use the new nf_ops.h (nf_init() used to detect NFs and the returned 'struct nf_ops' pointer to call the features). Also there is the freemint\sys\xdd\nfstderr folder containing the .xdd equivalent of this driver for FreeMiNT. A great example how to do basic device driver for TOS as well as for FreeMiNT with almost the same code. - atari/hostfs: uses nf_ops.h now. Binaries and further documentation is coming soon. 2006/01/29 - Standa - atari/nfstderr: nfstderr.bos driver that provides write using the NF_STDERR NatFeat. - atari/tools/devdos: dev.dos driver that provides a filesystem with all the .bos drivers mounted. Using this you can use 'cat x.txt x:\dev\nfstderr' also in TOS. This dev.dos is generic in the sense that it doesn't depend on aranym in any way. 2006/01/29 - milan - cpummu.*, configure.ac: configurable size of ATC - JITc: fix stack alignment, m68k_compile_execute moved to JITc, sync with BII 2006/01/28 - Petr - configure.ac: Ingo Schmidt found out that --enable-blitsdlblit binary crashes with double bus fault. Thus this option is marked as EXPERIMENTAL UNSUPPORTED and BUGGY. It should probably be either fixed or removed. - Makefile.in: Ingo Schmidt found out that install phase fails when it is copying the aratapif binary. Fixed by adding one white space after 'then '. 2006/01/27 - Patrice - aranym from scratch: started MiNT section. 2006/01/26 - Standa - hostfs: dirent.d_ino was deprecated in the latest cygwin version. The stat.st_ino has to be used now. 2006/01/26 - Patrice - host: Don't need to dynamically create HostAudio object. - Created HostFilesys class for system-dependent paths functions. 2006/01/23 - Patrice - host: Added reset() method for host stuff. 2006/01/20 - Patrice - host_audio: Remove useless/crash prone num_callbacks related stuff. 2005/12/30 - Patrice - Renamed AUDIO class to more accurate HostAudio class. - Created a Host class, and put HostAudio in it. 2005/12/29 - Patrice - Created aranym exception class for future classes that need exceptions. Also now it can be created with variable list of arguments like printf(). - BootOs uses it now. 2005/12/27 - Standa - hostfs: fixing f2astrcpy() function migration bug. PureC now works under MiNT again as expected. 2005/12/26 - Patrice - hostscreen: remove unneeded inclusion of glext.h, use included SDL one. 2005/12/18 - Patrice - nfvdi_opengl: fixed getpixel() operation regarding host endianness. Reversed byte order for blits operations on big endian systems, so that GL_BGRA reads or writes ARGB pixels. Done for both 16 and 32 bits per pixel. 2005/12/12 - Patrice - Filled ARAnyM specific drivers section a bit. 2005/12/11 - Patrice - Renamed rom class to bootos, exceptions reenabled in configure.ac. New BootOs class used in main. 2005/12/10 - STanda - autogen.sh: rollback to -r 1.9. You should use ACLOCAL_FLAGS to set the include path (to whatever folder the sdl.m4 is in using -I /path/to/sdl.m4) 2005/12/09 - Patrice - Added Rom class and derivatives for TOS, EmuTOS and Linux. For now, this is disabled till a solution is found to use C++ exceptions along with JIT. Also if you want to try, add rom.cpp to $(SRCS) in Makefile.in, and #define ENABLE_CXX_EXCEPTIONS in main.cpp. The goal was to remove ROM/OS loading/init stuff out of main.cpp. Also, when resetting with TOS, the MD5 was failing because TOS was patched for ARAnyM. Both are nicely fixed with such a class. 2005/12/07 - STanda - parameters: do not screw up all hotkeys if the HOTKEY config section doesn't exist 2005/12/04 - Patrice - rtc: added method to read nvram keyboard setting (for future planned stuff in input). 2005/11/24 - Andreas - parameters.cpp: Fix aliasing violation and format string. 2005/11/20 - Patrice - Started 'ARAnyM from scratch HOWTO'. 2005/11/14 - Stefan - ChangeLog: Updated ChangeLog with missing informations. - aranym.html: Updated documentation of MaxOS X specific parts. - configure.ac: Changed name for configurations files to org.atari.aranym.conf, org.atari.aranym.nvram and org.atari.aranym.keymap. - input.cpp: removed unneded "#ifdef darwin" for command and control key change, the function was already specific to darwin. - nfvdi_opengl.h: Changed include of GL/glu.h to OpenGL/glu.h for darwin. - nfvdi_opengl.cpp: Changed include of GL/glu.h to OpenGL/glu.h for darwin. - hostscreen.cpp: Changed include of GL/glu.h to OpenGL/glu.h and GL/glext.h to OpenGL/glext.h for darwin. 2005/11/10 - Patrice - dsp_disasm was not building, fixed. - nfpci: make linux driver better subclass of nfpci, now when nfpci enabled, you have a default null nfpci driver for non linux systems. 2005/11/8 - Stefan - Makefile.in: Removed building of ARAnyM.app/Contents/ARAnyM data folder, in order to give precedence to Library/Application Support/ARAnyM by default - configure.ac: Fixed typing error of SDLMain.M file. 2005/11/7 - Stefan - Makefile.in: Added targets to build an application bundle for MacOS X. Added suffixes .m and .M to also compile Objective C and Objective C++ sources, which are needed to build the darwin port. - configure.ac: Splited EXTRASYSSRCS and DEFINES for darwin with fink and without. Without fink now the source files parameters_darwin.M and SDLMain.M below src/Unix/darwin/ get compiled and the defines now include ARANYMCONFIG, ARANYMNVRAM, ARANYMKEYMAP and ARANMYHOME. For darwin without fink now also the target changed to APP_BUNDLE in order to build an executable MacOS X application bundle. - autogen.sh: Added -I $PWD to aclocal command. This solves trouble with missing macro definitions from sdl.m4, if this file is just copied into the same directory. - parameters.h: Put #ifndef around the definitions of ARANYMCONFIG, ARANYMNVRAM, ARANYMKEYMAP to be able to define their values via configure.ac. - input.cpp: Switched behaviour of command and control keys for darwin. So under MacOS X normal shortcuts are done as usual with the apple key also for Atari/GEM applications. - parameters_darwin.M: Objective C code to define versions of the functions getHomeFolder(), getConfFolder() and getDataFolder(). They return usual MacOS X pathes like ~/Library/Preferences/ and ~/Library/Application Support/ARAnyM or a path inside the bundle itself for the configuration files. - Info.plist: Updated version informations to 0.9.1alpha. With each official release the version information should be updated. Can this be done automatically by the build system? - SDLMain.M: Completely cleaned up the source code and removed unnecessary parts. - English.lproj/aranym.nib: Renamed the resource file from SDLmain.nib to aranym.nib. Made changes to connect menu entries to according functions in SDLMain.M. - German.lproj/aranym.nib: Made a german port of the resources. - aranym.pbproj: Updated the XCode project to compile also with the changed Makefile. - memory.h: Removed unnecessary define of do_get_real_address for darwin port. - fpu_uae.cpp: Added some defines and using a namespace to overcome compatibility problems with names inside cmath and cstdio. 2005/10/24 - Andreas - Makefile.in: update install target for removal of doc/documentation.txt. - ata.cpp: fix use of uninitialized variable. 2005/10/20 - Petr - mfp.cpp: compute real TimerC frequency (linux-m68k uses 100 Hz, not 200 Hz) - main.cpp: use the real TimerC frequency for correct time in linux-m68k - configure.ac: "--enable-rtctimer" added. Enables /dev/rtc as main source of timer interrupts. Allows for precise 200 Hz Timer A interrupts. 2005/10/18 - Petr - acsifdc.cpp: corrected detection of floppy format in linux-m68k by reporting RECORD NOT FOUND when linux tried to read more sectors than there are on a track (linux tries to read 20, HD floppy has 18 spt). Also added some more heuristic so ARAnyM is now able to detect any floppy format with 80 tracks (DD/HD/ED, and also non-standard 10,11 and 20,21,22 sectors per track). - parameters.cpp: save only those multiple items ([PARTITION1-7], [ETH1-4]) that are not empty (to save some space in the config file). 2005/10/16 - STanda - hostfs: a little rollback (FS_EXT3 extensions removal) as it caused problems with required timezone settings (not easily possible for BetaDOS and FreeMiNT without mintlib-timezone package). * New .dos and .xfs drivers are in atari/hostfs/bin 2005/10/16 - Petr - aranym/atari/network/ethernet: updated for multiple interfaces. Tested. Driver (version 0.6b) now prints all found and installed interfaces. Updated also the binary (aranym.xif.bz2). - parameters.cpp: default ungrab changed to left Alt+Ctrl+Shift - TODO: updated with useful comments 2005/10/13 - Petr (& Standa :-) - natfeat/ethernet.{cpp,h}: wildly modified to allow handling more ethernet devices at once. - atari/network/ethernet/ethernet_nfapi: NFAPI version increased (XIF_IRQ is handled differently now to allow for more ethernet devices) - atari/network/linux-m68k/*: linux-m68k kernel driver for our NF Ethernet - Unix/linux+Unix/cygwin: Handler() ctor now takes ethX parameter that is used internally in receiveFunc for setting up proper interrupt bit mask. - multiple ETHx sections in config file possible now (up to four currently) - atari/network/ethernet: FreeMiNT driver updated (including binary) to version 0.6 (copes with the new NFAPI but doesn't offer multiple ETH interfaces yet). - ethernet type renamed from "ppp" to "ptp" (point-to-point) - ARAnyM and linux-m68k kernel driver tested with two concurrent network interfaces. Cool! Code updated to handle up to 8 interfaces :-) - atari/network/linux-m68k/README: detailed HOW-TO build the NF enabled kernel 2005/10/12 - Petr - acsifdc.cpp: Atari2Host_memcpy() replaced with plain memcpy(). Previous code was incorrect because real ACSI DMA doesn't respect MMU. - uae_cpu/cpu_emulation.h: Atari2Host_*/Host2Atari_* functions modified to allow easy switching between MMU aware/ignoring NatFeats. NatFeats switched to non-MMU mode. This makes it incompatible with the NatFeat patch for linux-m68k kernel published in August. - include/version.h: version number changed to warn linux-m68k users that available aranym linux kernel will not work with this aranym. - gui-sdl/sdlgui.cpp: MIN() defined by including #tools.h - NF based functions moved from cpu_emulation.h to natfeats.h - audio.cpp, audio_dma.cpp, cpummu.cpp: hidden warnings about unused variables. - configure.ac: C++ exceptions disabled by default. They are causing serious startup lockups. It might be caused by particular gcc version, or C++ lib version, or something else. We don't know for sure. Use ./configure --enable-cxx-exceptions if you want to try it out. 2005/10/05 - Petr & STanda - input.cpp: the Alt Gr key might be reported as SDLK_MODE, not SDLK_RALT. Fixed. Now Alt Gr works for more people :-) 2005/10/01 - milan - uae_cpu/newcpu.cpp: flight recorder stores the 1st word of instruction 2005/09/27 - Patrice - various places: include "host.h" instead of redefining hostScreen extern. 2005/09/26 - STanda - atari/hostfs/metados: warnings removed - atari/hostfs: Cleaned up the m68k part so that the Dcntl() is now used to mount filesystems (which only works as expected in FreeMiNT kernels 1.16.x since Apr 10 2003). . Added the FS_NOXBIT filesystem flag back so that whatever is readable is also executable from the kernel point of view (not x permission is visible though on the files). . NF API extended (the version is 0.4 now): You will need to use older aranym build to update the drivers and after that boot using the CVS aranym binary to be able to mount drives properly. - hostfs.(h|cpp): . The FS_EXT_3 xfs_stat64() and Dcntl(FUTIME_UTC) added to speed the mintlib stat() and utime() calls. . Dcntl() /xfs_fscntl()/ implementation extended: * FS_INFO and FS_USAGE implemented (makes fsetter.app be able to show filesystem information). * FTRUNCATE implemented (needed for mintlib's truncate() and ftruncate()). . ioctl(FIONREAD/FIONWRITE/FIOEXCEPT) initial implementation. 2005/09/21 - Patrice - input.cpp: Don't check for OpenGL enabled if not compiled in. 2005/09/20 - milan - natfeat/ethernet.h: virtual destructor - include/ata.h: virtual destructor - cfgopts.cpp: made some functions static and don't link as C - uae_cpu/cpuopti.c: argc and argv are declared explicitly 2005/09/20 - Johan - nfvdi.cpp: Made it possible to query ARAnyM about host mouse cursor. 2005/09/19 - Patrice - Add DSP_ prefix to some definitions. 2005/09/16 - Patrice - Remove old fvdidrv.cpp. 2005/09/15 - Petr - doc/documentation.html renamed to aranym.html (directly in repository) - doc/documentation.txt removed (is superseded by aranym.html) 2005/09/15 - milan - src/Unix/linux/sigsegv_linux_x86.cpp: added 'volatile' to struct sigcontext. Fixes GCC 4.x problem (crash upon startup). 2005/09/14 - Xavier - tools/build-cygwin.sh: fixed a small bug that was preventing a warning to be displayed. 2005/09/12 - Patrice - doc/documentation.txt converted to documentation.html 2005/09/10 - Petr - uae_cpu/cpu_emulation.h: uses ReadInt/WriteInt which is wrong (regarding the MMU) but at least consistent with all the NF modules. The complete change to the direct access will require much more work. - input.cpp: support for AltGr key like in Milan. Suggested by Ingo Schmidt, AltGr information provided by Gerhard Stoll. - parameters.h: "altgr" added to ikbd struct. Should be configurable in the config file. TODO. - sdl-gui/dlgKeyboard.cpp: AltGr configurable at run-time. - TODO, BUGS: updated. 2005/09/09 - Petr - BIG ROLLBACK of changes done on 2005/09/04 - uae_cpu/cpu_emulation.h: Host2Atari/Atari2Host operations now use direct Atari memory access thus ignoring any MMU setup. Atari2HostAddr() is back. - fakeio.cpp, videl.cpp, fvdidrv.cpp, natfeat/{nfjpeg, nfcdrom_sdl, nfcdrom_linux, nfaudio} rolled back to previous revision. 2005/09/06 - Patrice - Don't open GUI when OpenGL enabled, it will crash. hostscreen class should be split in two parts like nfvdi: a software and an OpenGL renderer. 2005/09/04 - Petr - uae_cpu/cpu_emulation.h: Host2Atari/Atari2Host operations now correctly based on ReadInt/WriteInt functions that honor MMU setup. Atari2HostAddr() removed. Was deprecated for a long time already, anyway. - fakeio.cpp: Atari2HostAddr() replaced with Read/WriteHWMem functions. Perhaps proper solution is to move the #ifdef HW_SIGSEGV into the above mentioned functions? TODO: review it. - nf_base.{cpp,h}: memory operations moved to uae_cpu/cpu_emulation.h - natfeats.cpp, natfeat/{debugprintf, xhdi, nfcdrom, nfaudio}: fixed to not use Atari2HostAddr (thus direct Atari memory access) but rather the Host2Atari/Atari2Host memcpy functions. Notice: nfaudio now uses cvt buffer always for copying the sound data from Atari to host - even when there is no conversion needed... - videl.cpp, fvdidrv.cpp, natfeat/{nfjpeg, nfcdrom_sdl, nfcdrom_linux}: TODO: needs to be modified to not use Atari2HostAddr, see above. - natfeat/nf_basicset.cpp: just renamed memcpy functions - natfeat/hostfs.cpp: renamed memcpy functions, strcpy() replaced with strncpy TODO: review and correct the "FIXME 999" strncpy()'s - natfeat/ethernet.cpp: mostly clean up for better source code readability - acsifdc.{cpp,h}: fixed to not use Atari2HostAddr(). Cleaned up a bit by merging code for reading/writing multiple sectors with single ones. Added a hack that was supposed to fix floppy under linux - not working yet. - uae_cpu/{aranym_glue.cpp, cpu_emulation.h, newcpu.cpp}: trying to make the FLIGHT_RECORDER a bit more useful. - input.cpp: if FLIGH_RECORDER is compiled in then it can be enabled for a while by pressing and holding down both Shift keys. This is just a trial how to make it more useful, will be refined in future (configurable event launcher, accessible from SETUP GUI...) - include/version.h: micro version increased to warn everybody that there were a lot of changes thus something could break... *** CVS tagged as ARANYM_0_9_1_ALPHA 2005/09/03 - Petr - atari/network/ethernet/ethernet_nfapi.h: (ethX) is missing in IRQ subcall - natfeat/ethernet.cpp: XIF_GET_MAC: subcall returns FALSE if particular ethX is not defined in the config file, TRUE otherwise. Expected by Linux ethernet driver... 2005/09/01 - milan - src/Unix/configure.ac: enforce fixed videoram for SDL blitter - src/uae_cpu/debug.cpp: correct register size 2005/08/29 - Patrice - nfvdi: Make usage of host mouse cursor a configurable option. 2005/08/21 - Petr - natfeat/ethernet.cpp: do not use Atari2Host_memcpy() and similar, they ignore MMU setup. Fixed by replacing with a2fmemcpy() family. This was an essential fix. Now NF Ethernet works under Linux-m68k :-) Other NF drivers need similar fixes. 2005/08/18 - Petr&milan - include/aramd5.h: portability 2005/08/18 - milan - CPU sync with BasiliskII (better x86 types detection and JITc correction) 2005/08/14 - milan - uae_cpu/cpummu.cpp: microoptimalization 2005/08/05 - Johan - nfvdi*: Support for accelerated text drawing. - nfvdi_opengl.cpp: Fix for S2S blit problem at bottom of screen. Also added rounding for getHwColor. - hostscreen.cpp: Removed unnecessary dependency on glu function. 2005/07/29 - Patrice - Trigger MFP interrupt only once per audio callback. Default format is 16 bits stereo for audio dma. 2005/07/26 - Patrice - mfp.h: Wrong size for irq_* values. 2005/07/25 - Patrice - Fixed speedy replay in DMA audio. Timer A interrupt still not triggered. 2005/07/21 - Patrice - Preliminary crossbar audio emulation. 2005/07/20 - Patrice - Preliminary DMA audio emulation. Remove TOS check for joypad port presence that set DMA audio bit in _SND cookie to 0 if absent (!!). 2005/07/19 - Xavier - INSTALL: added a pointer to tools/build-cygwin.sh for compiling on Microsoft Windows. 2005/07/19 - Patrice - Splitted nfaudio driver in two parts. It is now possible to have several audio emulations (ym, dma, dsp) along with nf audio emulation, all mixed in a final audio buffer. The NF audio driver now does convert buffer from Atari to host format, instead of letting Atari side doing this. 2005/07/16 - Andreas - natfeat/nfcdrom_linux.cpp: move include of linux/cdrom.h down to fix compilation problem. 2005/07/16 - Petr - natfeat/nfvdi.cpp: swapped return values for the mouse event dispatch since default fvdidrv.cpp used value 1 as indication of unknown NF subcode. - input.cpp: adapted for the swapped return values from the nfvdi dispatch. - also CHECK_HOTKEY adapted to allow hotkeys with mod keys only - and keysym.mod replaced with GetModState() since keysym.mod didn't return single mod key presses. - dlgHotkeys.cpp: display hotkeys with mod keys only correctly 2005/07/13 - milan - src/Unix/config.*: updated (thanks, Aurelien Jarno) - src/Unix/vm_alloc.cpp: close(zero_fd) only when opened - correct version of JITInlining - JIT compilation of dispatcher enabled 2005/07/10 - Johan - nfvdi_*: Made the base class capable of polygon filling. OpenGL driver makes use of that for now because of problems with the current polygon tesselation code. Software driver still uses its own polygon filler, but the support routines are now in the base class. 2005/07/10 - milan - src/Unix/configure.ac: typo - src/Unix/linux/sigsegv_linux_x86.cpp: correct type of pointers - UAE CPU: JITc inlining and check_ticks definition 2005/07/09 - Petr - main.cpp: added RTC device driver for real interrupts at 256 HZ rate. Enable #RTC_TIMER if you want to see it running. And start ARAnyM as root because it sets the /dev/rtc to 256 Hz interrupt which is not allowed to regular user (unless enabled by running the following command: sysctl -w dev.rtc.max-user-freq=1024) - startup IRQ storm corrected (more than 80 useless IRQs at power on) - IRQ debug statistics printed (if #DEBUG enabled) 2005/07/09 - Johan - nfvdi_*: Bug fix for polylines with moves. - nfvdi_opengl: Bug fix for single pixel lines. Speedup for polylines. 2005/06/21 - Patrice - hostscreen: Don't use SDL version of glext.h. Also fix bpp for OpenGL screen 2005/06/20 - milan - configure.ac: needed size of LMA increased to 16 MB, should solve problem on some systems with autodetection 2005/06/17 - Patrice - nfosmesa: Added nfosmesa device driver for MiNT, which now works. You can use it with MiNT 1.16, which was removing __NF cookie. 2005/06/16 - Patrice - nfosmesa: Reworked interface to host, can use a MiNT device (to write) ioctl or NF interface. On the Atari side, parameters are no more stacked twice. 2005/06/16 - milan - some small cleanups and fixes in building process 2005/06/15 - Patrice - nfosmesa: g++ 3 with -O3 was over-optimizing Atari2HostDouble to a null function. 2005/06/14 - Patrice - nfvdi: Add reset method. OpenGL rendering: tesselate polygons, use non power of two texture or rectangle texture when available. 2005/06/13 - Patrice - hostscreen: disabling texturing when not used. Correctly setup shadow texture when it is smaller than asked screen. - nfosmesa: Don't pollute gl namespace in NFOSMesa class. Allow NFOSMesa to be compiled with hardware OpenGL rendering. 2005/06/12 - Patrice - hostscreen,parameters: removed width and height parameters for OpenGL, using current ones or autozoom ones'. - nfvdi OpenGL: clear alpha value read. 2005/06/11 - Patrice - nfvdi,hostscreen: remove getComponent() stuff, useless with GL_BGRA format. 2005/06/09 - Patrice - nfvdi: added preliminary OpenGL fillPoly() rendering. Host screen organization fixed on the ARAnyM side. 2005/06/08 - Patrice - hostscreen: correct endianness of GL_RGBA shadow surface for videl OpenGL rendering. Updating the texture with dirty rectangles list. Added getComponent() function to read the real screen organization, waiting for Johan to sync fvdi driver. 2005/06/07 - Johan - Report mouse events (input.cpp) to m68k fVDI driver via Natfeat "backdoor". - Support for forced mouse positioning. - Fix for OpenGL integer coordinates (hostscreen) according to MicroSoft tip. - A bunch of bug fixes for OpenGL drawing. Mostly off-by-one things. 2005/06/05 - Patrice - nfvdi: added mouse cursor rendering for OpenGL driver. Host SDL cursor can be enabled in nfvdi.h by uncommenting USE_HOST_MOUSE_CURSOR (experimental). 2005/06/03 - Patrice - NF audio: close SDL audio device on exit. Closing it on Atari reset event hangs ARAnyM on my system, more investigation needed. - main.cpp, Unix/main_unix.cpp: SDL_Quit() was called twice: once in ExitAll() and once at exit(). 2005/05/27 - Patrice - nfvdi: revert back old mouse driver for software renderer. Will add OpenGL support soon, till support for host mouse cursor is usable. 2005/05/25 - Patrice - OpenGL nfvdi: fixed line clipping. 2005/05/24 - Patrice - OpenGL nfvdi: fixed screen to memory blits. - hostscreen: OpenGL rendering off by 1 unit. 2005/05/22 - Johan & Patrice - OpenGL nfvdi: more blit fixes. Added line clipping. 2005/05/20 - Patrice - OpenGL nfvdi: preliminary blitArea() between screen and memory. - input, ikbd: Add support for joystick hat. 2005/05/19 - Patrice - nfvdi: Add some OpenGL logical operations for blitArea() operations, and preliminary expandArea() function. Updated aranym.sys FVDI driver. 2005/05/16 - Patrice - nfvdi: Enable OpenGL rendering when opening the VDI workstation. 2005/05/14 - Patrice - nfvdi: Missing constructor, and initialization. Swapped disable/enable cursor in drawMouse. OpenGL renderer: add logical operations, and screen to screen blits. 2005/05/13 - milan - uae_cpu/cpu_mmu.*: experimental ATC disabling 2005/05/13 - Patrice - nfvdi: Use host mouse cursor. Need to sync with input.cpp mouse routines. 2005/05/12 - Patrice - Keep all OpenGL things in hostScreen and nfvdi classes. - Split blitArea() function in 4 parts. 2005/05/11 - milan - uae_cpu/cpu_mmu.*: a small prototype fix, debug variable disabled 2005/05/11 - Patrice - Can dynamically choose a NF CD-ROM driver (linux or sdl one). Can also choose a NF VDI driver: software renderer or the non working OpenGL renderer - Get confused with bpp (bytes per pixel) and bpp (bits per pixel). 2005/05/11 - milan - natfeats.cpp: THROW(), not LONGJMP() 2005/05/10 - Patrice - OpenGL rendering done regularly in Videl->renderScreen(), instead of hostScreen.update(): much faster! - Added getBpp() function to FVDI driver (recompilation needed!), needed when using FVDI driver with OpenGL rendering. 2005/05/09 - Patrice - Moved more driver independant stuff from nfvdi_soft.cpp to nfvdi.cpp 2005/05/08 - Patrice - Dynamically create the natfeats. A few more work, and we will be able to choose between different NF drivers for the same feature. 2005/05/07 - Patrice - NF vdi driver split in 2 parts: a base class, and an implementation class (software rendering driver atm). 2005/05/06 - milan - support of old headers removed 2005/05/01 - milan - uae_cpu/compiler: sync with Basilisk (64bit pointers fixed) - Unix/configure.ac: C++ exceptions disabled in JIT compiler mode 2005/04/29 - milan - Unix: a small sync with Basilisk and cleanup - ata.*, cdrom.*: sync with Bochs and small cleanup - uae_cpu: small sync and cleanup of non-JIT CPU - doc/hguide.txt: actualized a bit 2005/04/27 - milan - Unix/configure.ac: nfjpeg test corrected 2005/04/26 - Xavier - Unix/configure.ac: nfjpeg enabled by default 2005/04/24 - Andreas - new configuration option --enable-cxx-exceptions, implement use of C++ exceptions instead of setjmp/longjmp for exception handling. - ndebug.cpp: fix stdarg usage, handle NEED_TO_DEBUG_BADLY in showHistory. 2005/04/22 - Xavier - hostscreen.cpp: SDL_WM_ToggleFullScreen does not work on some GUIs (Microsoft Windows GUI, for example). Added some code to implement the switch to and from fullscreen mode in this case. 2005/04/22 - Patrice - nfjpeg: Save d1/a0-a1 used as scratch registers by gcc when calling JPEG decoding routines 2005/04/17 - Petr - Makefile.in: fvdi.prg.bz2 was removed from archive... - aranym.spec: %files section cleaned up. Fixes build problem with unpackaged documentation and makes it much easier to maintain (no need to track changes in Makefile.in). 2005/04/15 - STanda - atari/hostfs/hostfs_xfs.c: some filesystem flags changed. this should fix the bug #1178909 (hostfs broken under linux) and problems with not being able to execute files with executable flag set. * tagged as ARANYM_0_9_0 2005/04/14 - Petr - doc/documentation.txt: [PARTITION] documented. Programming with ARAnyM documented (NatFeats, detection of ARAnyM presence). - doc/config, parameters.cpp: [DISK] renamed to [PARTITION]. - build_cygwin.sh moved from doc/ to tools/. - README, NEWS, version.h: usual release updates 2005/04/05 - Petr (actually Carlo) - src/MacOSX/*: Carlo has updated the project (added MMU target) 2005/04/01 - Thomas Huth - uae_cpu/newcpu.cpp: free table68k memory 2005/03/24 - Patrice - natfeats: don't switch to supervisor mode if already in supervisor mode to read cookie jar pointer. 2005/03/21 - milan - parameters.cpp: correct the previous commit 2005/03/21 - Patrice - parameters.cpp: display custom enabled NatFeats. 2005/03/20 - STanda - fvdidrv: fixed outstanding bug in the aranym.sys driver. The pixel sizes were updated recursively twice which made them wrong. 2005/03/15 - Petr - gui-sdl/file.cpp: current dir is no longer presented as "./" but it's simply an empty string (fileselector had to be adapted to this change, see below). - gui-sdl/dlgFileSelect.cpp: - initialized 'eol' to remove compiler warning. - if there is an empty path to dir the getcwd() is used to preset it with a reasonable value. - filename "." removed from the fileselector. - gui-sdl/dlgDisk.cpp: allows entering non-existing filename (useful for generating new disk images). Help page updated accordingly. 2005/03/14 - Xavier - gui-sdl/dlgFileSelect.cpp: - New sorting algoritm : folders at the top, files at the bottom. - Reformatted using GNU indent (with "-kr -nce -ts4", as suggested by Petr). 2005/03/05 - Xavier - doc/build-cygwin.sh: added SDL_image support. Allows to compile nfjpeg on Windows. 2005/03/03 - STanda - doc/documentation.txt: update on networking. Clean that up someone. - Blaine Brysh's suggection to remove the 'tapdev' check done. 2005/02/28 - Patrice - nfjpeg, nfpci, nfosmesa, nfcdrom: Use the correct fonction to read current cookie value, not a mix between internal function and mintlib's one. 2005/02/25 - Xavier - doc/build-cygwin.sh: defaults to SDL 1.2.8. 2005/02/24 - Petr - lilo.cpp: required defines copied to lilo.cpp to allow compiling under non-linux systems. 2005/02/23 - Patrice - nfjpeg, nfpci, nfosmesa: Display a message when __NF cookie is missing, or when NF functions needed are missing in ARAnyM. 2005/02/22 - Petr - parameters.cpp: 'RedirPrinter' removed. Default printer file is 'stderr'. - aranym.spec: aranymrc.example removed. * tagged as ARANYM_0_9_0_BETA 2005/02/20 - Petr - atari/aranymrc.example moved to doc/config and updated with all current config options - parameters.cpp: fixed wrong sizeof() for [HOTKEYS] - doc/documentation.txt updated (networking, LILO) doc/aranym-lilo.txt removed - Makefile.in: NFJPEG and NFOSMESA added - aranym.spec: LILO added to MMU build - README, BUGS, NEWS, include/version.h: updated for new release 2005/02/18 - Patrice - nfosmesa: Can not autodetect which libOSMesa is loaded, so ChannelSize in config file is mandatory for any libOSMesa library used. The OpenGL contexts created by OSMesa are endianness independent, no need to convert them after rendering. - nfjpeg: Correct SDL include path. 2005/02/17 - Petr - parameters.cpp: open up SETUP if no config file found and new one is to be created so that users can edit the default values before saving. - dlgAlert: flexible formatting of text to any number of lines (up to 20). Two types of alerts - info "OK" and confirm "OK/Cancel". - dlgMain: dlgAbout and dlgHelp replaced with info alert. - dlgDisk, dlgHotkeys: HELP button and page added - TODO: updated (at last I could remove some long standing issues :) 2005/02/14 - Petr - main.cpp: display the right key for invoking SETUP GUI in the window caption bar. 2005/02/13 - Petr - gui-sdl/sdlgui: getEvent() function fetches the keyboard and mouse events (now also UP events) from the USEREVENT queue and converts them to normal SDLKey and SDLMouse events. - include/parameters.h: hotkey struct bx_hotkeys_t defined and added to global bx_options. - input.cpp: the following seven hotkeys are user-definable now: Setup, Quit, Reboot, Ungrab, Debugger, ScreenShot and FullScreen. - gui-sdl/dlgHotkeys.cpp: hotkey editor added, allows for online editing of the seven hotkeys listed above. - gui-sdl/dlgMain.cpp: hotkey editor activated. - parameters.cpp: hotkeys are saved to config file, section [HOTKEYS]. Further cleanup. [ARANYMFS] fallback dropped. 2005/02/12 - Patrice - nfosmesa: Add support for 16 and 32 bits per channel for OSMesa, using libOSMesa16 or libOSMesa32. 2005/02/04 - Patrice - Added parallel port emulation driver via Linux /dev/parport device. 2005/01/30 - Andreas - uae_cpu/newcpu.cpp: Handle unaligned access in get_ilong_1. 2005/01/29 - Patrice - configure.ac: Add option to add path to Mesa header files. 2005/01/28 - Andreas - uae_cpu/newcpu.h: Handle unaligned access in get_ilong. 2005/01/26 - Patrice - Move all parallel port implementation stuff in yamaha. Don't flush on output to a real file. - Remove useless FAQ item about CD-ROM configuration. 2005/01/25 - Andreas - uae_cpu/cpummu.cpp: Fix wrong address in mmu_get_unaligned, thanks to milan for tracking this down. 2005/01/25 - Patrice - parallel: small fixes. Can redirect to a file, to stdout or stderr. 2005/01/25 - Andreas - uae_cpu/cpummu.cpp, uae_cpu/memory.h: Fix wrong size field in ssw. 2005/01/24 - STanda - fVDI driver * famous fVDI boot bug fixed! VIDEL is shut off on openwk() instead on the first NF(fVDI) call. * Changing the resolution upon openwk() again (back to what was in 0.8.10?) * cleanup in the spec.c m68k part of the driver. 2005/01/24 - Patrice - nfosmesa: Return OpenGL version as 1.0 when extensions disabled. 2005/01/24 - Andreas - More MMU emulation fixes. Linux boots now. 2005/01/23 - Patrice - Reorganized parallel port emulation. Time to write drivers for all OS. 2005/01/22 - Patrice - configure on MacOSX does not like using AC_CHECK_HEADER. 2005/01/22 - Petr - input.{cpp,h}: little cleanup, private things declared static - main.cpp: little cleanup, removed unused function - hostscreen.*, input.cpp, main.cpp, parameters.cpp: "--disable-gui" now disables the SDL GUI related code in these files. 2005/01/21 - Patrice - nfjpeg: Decoding images, with width not multiple of 16 works in Brainstorm's viewer. Zview has a bug in its plugin. 2005/01/20 - Patrice - nfjpeg: More fixes, now Brainstorm's JPEG viewer works, but images with width not multiple of 16 have a problem. 2005/01/19 - STanda - atari/fvdi/../spec.c: bitplane modes are marked as bitplane in v_scrninfo(), unnecessary noshadow and assumenf options removed - 8b_pal.c: palette setting is system wide (not per virtual workstation) 2005/01/19 - Patrice - dsp_cpu.cpp: 64 bit fixes. - nfjpeg: Fixed problems due to endianness and packed structure of JPEG decoder. Decoding works in Zview (except for images with width not multiple of 16), but not in Brainstorm's demo program. 2005/01/18 - milan - gdbstub: a few fixes in communication, configuration for base pointers added 2005/01/18 - Patrice - nfosmesa: revert back mandatory SDL 1.2.6 check. Now nfosmesa disabled if SDL don't have loadable libraries functions. 2005/01/17 - Patrice - nfosmesa: libGL is also dynamically loaded now. It is easier to control which libGL library ARAnyM will use. 2005/01/16 - Patrice - Enable compiling ARAnyM using the Fink suite on MacOSX. (configure --with-fink) 2005/01/16 - milan - cdrom.cpp: new fix for *BSD (thanks, Konrad) - gdbstub: gdb as external debugger (still buggy) 2005/01/16 - Petr - natfeat/xhdi: fixed scary off-by-one bug. Direct partition access works OK. Also implemented proper way for finding out size of block device (such as /dev/hda1) so we can access host disk partitions directly now! 2005/01/14 - Patrice - Preliminary NatFeat JPEG decoder. Don't try it, it does not work atm. If you think you can debug it, SDL_image with JPEG support is required. 2005/01/13 - Petr - natfeat/xhdi: direct access to partitions added (use [DISKx] in config) Beware: the code is not well tested. Might destroy your data! - parameters.cpp: [DISKx] enabled in the config file 2005/01/12 - milan - all files: "unused varible" GCC warnings can be viewed with ./configure --enable-full-debug a few other warnings gone 2005/01/12 - Andreas - natfeat/nfcdrom.cpp: Include for SDL_SwapBE16. 2005/01/12 - Petr - ata.cpp: removed a scary hack for hiding an unused variable - all files: "unused variable" GCC warnings are gone thanks to DUNUSED macro - natfeat/ethernet.cpp: possibly fixed buffer overflow bug in readPacket() 2005/01/12 - Patrice - nfcdrom.cpp: 64 bit fix. 2005/01/11 - milan (thanks Andreas Jochens) - uae_cpu/aranym_glue.cpp: 64 bit fix for GCC 4.0 happy - uae_cpu/newcpu.cpp: 64 bit fix for pc_offset computation 2005/01/11 - Petr - gui-sdl/sdlgui.cpp: 64bit cleanup thanks to Debian BTS #288992 2005/01/11 - STanda - fvdidrv.cpp: 64bit cleanup attempt - CygWin networking tunnel NIF name taken into account - paremeters.cpp: extra slash addition fixed 2005/01/10 - milan - uae_cpu/gencpu.c, uae_cpu/newcpu.cpp: unswapped opcodes disabled in full MMU 2005/01/10 - Andreas - uae_cpu/cpummu.cpp: Many MMU emulation fixes. - uea_cpu/gencpu.c: Make sure that memory stores are performed after all changes visible by the emulation. - uae_cpu/memory.h: Set wb3 for the execption routine on memory write. - uae_cpu/newcpu.cpp: Pass wb3 fields in the access fault exception frame. Don't call check_ram_boundary on a virtual address. - uea_cpu/newcpu.h: Don't call get_real_address in m68k_setpc when FULLMMU. Remove autoinc stuff again. - uae_cpu/registers.h: Add wb3_data, wb3_status, fault_pc, remove autoinc. Don't use pc_p and pc_oldp when FULLMMU. 2005/01/08 - Petr - mfp.cpp: irq handling (enable/pending/masked) copied bit-by-bit from STonC. And it seems to work! At last... Thanks, Laurent, for your great MFP emulation. - configure.ac, TODO: linux kernel headers no longer necessary - ikbd.cpp: when IKBD is reset it should send out the code 0xF1. Linux-m68k kernel checks for it. Fixed. Kernel no longer reports "WARNING: keyboard self test failed!" :-) 2005/01/08 Andreas Schwab - lilo.cpp: Load ramdisk at end of ST ram. 64-bit fixes. Copy needed bits from Linux/m68k kernel headers instead of including them. 2005/01/07 - Andreas Schwab - uae_cpu/cpummu.h: Fix values of MMU_MMUSR_T and MMU_MMUSR_R. - uae_cpu/cpummu.cpp: Fix interpretation of write bit in ptestr/ptestw opcodes. 2005/01/06 - Andreas Schwab - uae_cpu/gencpu.c: Don't pop too much for format 7 exception frame in rte insn. 2005/01/06 - Petr - mfp.cpp: Laurent (STonC author whose code has been used for ARAnyM MFP emulation) identified copy&rename_variables&paste error. Fixing that finally made the setGPIPbit() working (has been waiting for the fix since ARAnyM version 0.1.4! :-O ) - ikbd.cpp: Laurent pointed out that IKBD should not access the MFP externally via the 0xfffa01 address but rather use the setGPIPbit() only. Fixed. - mfp.cpp again: added floppy/SCSI/IDE IRQ and modified the ACIA IRQ to follow the automaticServiceEnd flag. This lets Linux-m68k detect the IDE devices without "hda: lost interrupt" messages. 2005/01/05 - Andreas Schwab - uae_cpu/cpummu.cpp: ptestr/ptestw must never generate an exception, and always to a full table search, an existing ATC entry must be removed but otherwise ignored. - uae_cpu/gencpu.c, uae_cpu/newcpu.*, uae_cpu/registers.h: when an mmu-generated access error occurs we must undo all auto-inc/dec adjustments to address registers, because after returning from the exception handler the instruction is restarted. 2005/01/04 - Andreas Schwab - uae_cpu/gencpu.c - emulation of the moves insn fixed. It is one step further into being able to boot Linux/m68k on ARAnyM. 2004/12/17 - Patrice - nfosmesa: more endianness fixes. Extensions reenabled, beware the lengthy compilation! 2004/12/16 - Patrice - nfosmesa: more endianness fixes. 2004/12/15 - Patrice - nfosmesa: more endianness fixes, small doc in doc/documentation.txt, added ldg to spec file. 2004/12/14 - Patrice - nfosmesa: more bugfixes (mainly to adapt m68k arrays to host CPU endianness). 2004/12/13 - Patrice - nfosmesa: many bugfixes. The hardest/longest part to do: converting all arrays (const TYPE *) to a temporary array for the host CPU. Disabled building of OpenGL extensions (much longer to compile and test). What is working: SDL tests programs, many NeHe tutorials using SDL (not all, due to disabled extensions); for pure Atari software: kronos, tinygl test programs. Added the osmesa.ldg for testers. 2004/12/11 - Patrice - hostscreen.cpp: move one update function using OpenGL from .h to .cpp, needed for compiling for OSMesa. - NF: Add Natfeat OSMesa rendering support for Atari applications using host CPU (highly experimental!). 2004/11/24 - STanda - TAP-Win32 networking for cygwin builds implemented and fully functional The natfeat/ethernet.cpp split to natfeat card emulation and host OS dependent driver part. The dependent part was moved to the appropriate folder Unix/linux and Unix/cygwin. 2004/11/21 - milan - CPU JIT: sync with the latest BII core, really many changes, amd64 corrected, cleanups 2004/11/20 - milan - configure, vm_alloc, main_unix.cpp: a small memory management reorganization, 33BIT addressing, cleanups 2004/11/14 - milan - ata.*, cdrom.*: a small cleanup, some things from Bochs (multisession read TOC) * tagged as ARANYM_0_8_11_BETA 2004/11/07 - Petr - wheel mouse support: based on discussion in mailing list and patch provided by Xavier. Switchable between original arrow up/down key simulation and new Eiffel compatible set of extended scancodes in the SETUP GUI. No possibility to store in config file, yet (intentionally). - doc/documentation.txt: updated section about creating empty disk image. Also added more information about ARAnyM networking (mostly gathered from my replies in the mailing lists). - SETUP GUI: Disk dialog has now its own Apply/Cancel buttons. The main Apply button in the main dialog was removed. Also Keyboard&mouse dialog offers first functionality: switching between two host mouse wheel modes. - DOC files, aranym.spec, include/version.h: updated for a new release. 2004/11/01 - Patrice - hostscreen.cpp: don't need to have autozoom enabled to force a screen size - fvdidrv.cpp: forgot some break instructions. - FVDI aranym.sys modified, for the host resolution to be read. 2004/10/31 - Petr - Carlo provided a new keyboard translation routine that translate directly mac scancodes into atari scancodes: all keys are translated correctly. SDL routine translate mac scancodes in their internal codes but for some keys the translation is incorrect. - fVDI driver (aranym.sys) has finally been recompiled. 2004/09/29 - Xavier - fvdidrv.cpp: fixed a typo that prevented ARAnyM to compile here. - uae_cpu/debug.cpp: fixed a bug in debugger that corrupted SR. - main.cpp: added a patch that allows TOS 4.04 to detect TT-Ram without any AUTO folder program. FASTRAM.PRG not needed anymore. 2004/09/24 - Patrice - Natfeat FVDI driver: added functions to read back the screen width and height really set on the host side 2004/09/13 - Petr - newcpu.cpp, spcflags.h: SPCFLAGS_NMI removed, _BRK used instead (like seen in hatari). SPCFLAGS_MODE_CHANGE removed (it was unused). 2004/09/10 - Patrice - hostscreen.cpp, videl.cpp, parameters.cpp: create a specific section in the configuration file for autozoom. You can now choose to want a constant host screen size for whatever the Atari screen size is. Note about FVDI: it is not aware of this "fixed size", using a bigger size than FVDI's one is OK, but the display is not centered. Using a smaller size is buggy, so don't do it! 2004/09/08 - Xavier - src/gui-sdl/sdlgui.cpp: edit field handling cleaned. 2004/09/07 - Petr - src/parameters.[cpp,h]: configPath added to aranymfs struct. Fixes problem with adding more colons on repeated saving of config file. - src/gui-sdl/dlgDisk.cpp: fixed a problem with updating the CHS values when new disk image was selected. 2004/09/04 - milan - src/parameters.cpp: don't show parameters, which aren't compiled in 2004/09/03 - Petr - atari/network/ethernet/ethernet.c, nfeth-config.c: the idea of new IOCTLs was not working because inet4.xdd blocks the IOCTLs and does not pass them to the XIF driver. So now I am using SIOCGLNKSTATS and it works! Fixed more scary bugs (word alignment in parameters to nfCall can be a killer). nfeth-config even respects the NIF parameter (try eth1 :-) The XIF driver has yet to be updated to handle more NIFs at once. - src/natfeat/ethernet.cpp: better debug message. Make use of safe strncpy. 2004/09/02 - Petr - atari/network/ethernet/ethernet.c, nfeth-config.c: corrected some scary bugs, now it should work but doesn't yet. Seems like the new IOCTLs are blocked somewhere. - patrice: videl.cpp: second fix for autozoom, now zoom tables recalculated also when host screen size changes. 2004/09/01 - Petr - tools/arabridge: modified to allow bridging a non-defaultroute interface. Useful for situations when the machine is on public Internet and you don't want to put ARAnyM there. Also all RedHat specific things replaced so now it works on Debian nicely. 2004/08/31 - Petr - atari/network/ethernet/ethernet.c: - updated for FreeMiNT 1.16 - makes use of nf_ops in kerinfo for clean NatFeat usage (if available) - IP_AUTO configuration was plain wrong thus removed - implements three new control calls for the nfeth-config (SIOCGIFADDRFH, SIOCGIFDSTADDRFH, SIOCGIFNETMASKFH) that have also been defined in FreeMiNT's sockio.h - proper GPL headers added 2004/08/30 - patrice - videl.cpp: with JIT, Atari video screen size was 0 for both height and width, with autozoom, hence the crash. 2004/08/28 - Xavier - gui-sdl/sdlgui.cpp, input.cpp: rewrote edit field handling. - gui-sdl/dlgFileSelect.cpp: updated for the new edit field handling. 2004/08/27 - Petr - lilo.cpp: thanks to David Muse analysis and suggestions I corrected the LiloCheckKernel() simply by copy&pasting it from linux bootstrap properly :-) 2004/08/19 - milan - Unix/cygwin/sigsegv_cygwin.cpp, Unix/linux/sigsegv_linux.cpp: cleaning, merging 2004/08/19 - Xavier - uae_cpu/cpu_emulation.h, Unix/cygwin/sigsegv_cygwin.cpp: hwsp and pagehwsp address checking modes support on Cygwin. - Unix/cygwin/sigsegv_cygwin.cpp, Unix/linux/sigsegv_linux.cpp, Unix/xbsd/sigsegv_xbsd.cpp: hwsp and pagehwsp address checking modes fixed (stacked address fault was wrong). - NFPCI: Patrice: give access to the 256 bytes of configuration space. Some bugfixes. 2004/08/16 - Xavier - Unix/cygwin/sigsegv_cygwin.cpp: fixed GCC warnings. - Unix/cygwin/sigsegv_cygwin.cpp, Unix/linux/sigsegv_linux.cpp, Unix/xbsd/sigsegv_xbsd.cpp: nested sigsegv are not allowed anymore. This was unused since 2004/07/06 and was not supported under Windows. 2004/08/12 - Xavier - Unix/configure.ac, Unix/cygwin/sigsegv_cygwin.cpp, uae_cpu/cpu_emulation.h : clean solution to avoid nested sigsegv on Windows/Cygwin and any other OS that would need it. * tagged as ARANYM_0_8_10_BETA 2004/08/07 - Petr on behalf of Carlo - added a target to generate the DMG file (inspired by bochs) - The SDL library is inserted automatically in the application bundle; now it does not require any installation. 2004/08/05 - Xavier - Unix/cygwin/sigsegv_cygwin.cpp: small cleaning. 2004/08/02 - Xavier - Unix/configure.ac, Unix/cygwin/sigsegv_cygwin.cpp: extended sigsegv handler for Windows/Cygwin. The code needs some cleaning, but at least allows to boot Afros and TOS 4.04. We can now enjoy JIT speed on Windows too ! 2004/07/29 - milan - debug.cpp: S&!M means interupt mode, not only M 2004/07/28 - milan - newcpu.cpp: removing "patch" from 2002/09/28 (PureC hack), it can be enabled with configure script - debuggers: switch 'I' modified, debugger can ignore interupt mode 2004/07/28 - Petr - atari/tools/pcpatch.c: verbose error handling 2004/07/28 - patrice - Correctly read PCI devices list (inspired from pciutils code). 2004/07/26 - milan - src/cdrom.cpp: typo bug (thanks, Konrad) 2004/07/20 - Xavier - Unix/configure.ac: - checks for direct, real and fixed addressing availability made more accurate. - direct, real and fixed addressing allowed on Cygwin. Real addressing won't work since Cygwin can't mmap() low memory. Direct and fixed addressings need a cygwin1.dll from 2004/07/16 or later on W2K and WXP (Available at http://www.cygwin.com/snapshots/ until next Cygwin release - current DLL version is 1.5.10-3 at the time of writing). 2004/07/18 - Xavier - Unix/main_unix.cpp: in direct addressing mode, memory must be allocated with only one call to vm_acquire(). Otherwise memory parts may not be contiguous. CPU emulation rely on this. 2004/07/14 - milan - small sysdeps.h reorganisation 2004/07/14 - Xavier - doc/build-cygwin.sh: updated for SDL 1.2.7 and latest Cygwin (new GCC and X.org/X11 packages). - Unix/acinclude.m4: updated for automake 1.8+. - Unix/configure.ac: fixed error message about extended segfault handler. 2004/07/13 - Petr - natfeat/ethernet.cpp: ARATAPIF is now found in $PATH again (Standa forgot to remove some of his debugging stuff). Thank for the bug report goes to Clement BENRABAH. 2004/07/13 - milan - macro BUS_ERROR defined in cpu_emulation.h and documented - some other minor (mainly cosmetic) corrections 2004/07/12 - Petr - ide.cpp: Xavier explained that Adam's open source IDE driver might use the f00002 register because it's mapped to the same 16-bit IDE port as the f00000. 2004/07/11 - milan - lilo support corrected - other minor (cosmetic) corrections 2004/07/09 - milan - (sig)setjmp/longjmp corrections 2004/07/08 - milan - minor (cosmetic) corrections 2004/07/07 - Petr - uae_cpu/fpu/mathlib.h: Francois fixes sinh and tanh by following the cosh emulation example. 2004/07/07 - milan - man page corrected * tagged as ARANYM_0_8_9_BETA 2004/07/06 - Petr - ikbd.cpp: write to MFP directly, don't throw nested SIGSEGV. This not only fixes the JIT CPU crash on keypress in linux 2.6.x but also seems to help booting linux-m68k (it doesn't freeze now when you press a key) - blitter.cpp: this is probably a breaking news after years of blitter crashing and countless hours spent on debugging it: the source and destination address registers must be restored to original values upon finishing the job, since TOS does not always set the source and dest address for a new blitter job - it clearly relies on the original values set in previous job. This is very unexpected behaviour since Blitter documentation says the source and dest addr registers show increasing values when you read them. Also, now Blitter starts blitting as soon as the BUSY line (0x3c & 0x80) was set - this was possible after implementing the word and long wide register accesses and thanks to idea and support from Thomas. - gui-sdl/dlgAlert.cpp: strdupa() is not defined in neither cygwin nor macosx so there is a quick workaround. - lilo.cpp: fixed reading of gzipped files. Simply the macro is HAVE_LIBZ, not HAVE_ZLIB :-) - gui-sdl/sdlgui.cpp: accept numbers on numpad. This is still not correct code, it should use the unicode field of the keysym struct. * tagged as ARANYM_0_8_8_BETA 2004/07/05 - Petr - gui-sdl/dlgAlert.cpp: an AES like AlertBox created. So far a rough code but does what I needed. - gui-sdl/dlgDisk.cpp: Disk Image generation added. - on behalf of Carlo: UAE FPU is (thanks to Francois' tests) the default for MacOSX target in their project builder. Filename expansion takes a special '*' wildcard that gets expanded to Data folder path (the bundle folder for MACOSX). - parameters.cpp: Carlo corrected a bug in the relative path expansion routine - now if there isn't the trailing slash it's added. - tools/createdisk/*, tools/disk_image.c: removed - Makefile.in, aranym.spec: createdisk & disk_image removed, arabridge added - README, NEWS, TODO, aranym.1, aranym.spec, version.h: standard updates for new release. 2004/07/04 - Petr - input.cpp: iconification of fullscreen window on releasing the grabbed input disabled since Standa added there switching from fullscreen to window. - gui-sdl/file.[cpp,h]: File_Exists() and File_Read() take const char parameter. Disabled the (IMHO) useless feature of File_Read - trying several different file extensions automagically. 2004/07/03 - Petr - uae_cpu/fpu/mathlib.h: fixed tan() error Martin Tarenskeen reported. - uea_cpu/newcpu.cpp, hardware.cpp: if HW_SIGSEGV is used (mainly for JIT compiler) then use sigsetjmp/siglongjmp to restore signal mask when generating BUS ERROR. This fixes the SIGSEGV during TOS 4.04 boot when reading the $ff8e09 register. 2004/07/01 - Petr - BUGS: FPU problems documented. We need fix even for Pentium host based systems! 2004/06/21 - milan - diskimage supports images lager than 2GB (large file support) 2004/06/01 - STanda (actualy done the 2004/05/19) - input.cpp: The capslock keyboard LED and the m68k side OS capslock state synchronization should be better now. - hostfs.cpp: Small broken symlink related bugfix. 2004/05/15 - patrice - Nfpci.prg bugfixes, and also on host side. pci_read_config_* functions work now. We can enumerate the host PCI devices. 2004/05/14 - patrice - Nfpci.prg now finished. Time to implement it on the host side now. 2004/05/13 - patrice - Added resident program NFPCI.PRG, does not work ATM: it thinks there is already a PCIBIOS driver installed. 2004/05/12 - patrice - Primary framework for NatFeats PCI driver 2004/04/24-25 - STanda - parameters.cpp,cfgopts.*: Created a Path_Tag that serves as a String_Tag like entry plus that there is the '~' replaced with $HOME and the relative paths are made absolute (to the configuration file location). - parameters_*.cpp: separated the getDataFolder() and getHomeFolder(). The getHomeFolder() is used for the '~' expansions in parameters.cpp. - hostfs.cpp: * Petr's version of xfs_native_init() fixed, extended and used. * symlinks should work better now: if there is a HOSTFS mapping for the symlink target then it is translated as a symlink to that target else the real hostfs target is shown (the user doesn't notice it is a symlink in fact in that case). - hostfs.dos (atari/hostfs/metados): * Adjusted to the recent FreeMiNT CVS state to compile and also made BetaDOS only. No more MetaDOS compatibility attempts. * Dfree() fix - for Calamus to be able to save its documents. * Some minor bugfix backports from the current FreeMiNTs CVS version. * The mountpoint entries are now shared among several hostfs.dos instances using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). - ethernet.cpp: * Alternative networking setup: aranym doesn't need to use the suid aratapif now. CVSROOT/tools/arabridge script is able (with root permissions) to establish a bridge over the tap0 tunnel and eth0 nif so that aranym would become fully featured LAN machine from ethernet point of view. E.g. you can try DHCP directly from within ARAnyM then. * [ETH0] type = ppp|bridge and tunnel = tap0 config options added * However there are still some problems: the initialization can fail sometimes. I got it working several times, but in some network configurations it simply doesn't work. I don't have a clue why ATM :( (tested on RH9.0). 2004/04/10 - Petr on behalf of Carlo - acsifdc.cpp: local variable masked out class variable of same name. Bug was there since 2004/02/02. Fixed. 2004/04/06 - Petr on behalf of Carlo - MacOSX/: obsolete aranym_for_library and pkg_support were removed. main_OSX.cpp added, with modified memory allocation routines. The installation package is no longer required. Now there is only a folder to drag to the hard-disk. - configure.ac: added MACOSX_support define, corrected bug in vm_allocate test. - uae_cpu/memory.h: scary typo error fixed - main.cpp, parameters.cpp: these patches were not accepted as I don't like unnecessary polluting of main source code with #ifdef MACOSX_support. We need something like Unix/cygwin/cygwin_parameters.cpp for MacOSX to keep the main source clean. 2004/03/29 - milan - Makefile.in: .cvsingnore not in dists - configure.ac: flightrecorder option corrected 2004/03/04 - Carlo & milan (thank you, Carlo, for your great job) - macro do_get_real_address() for OS_darwin corrected 2004/03/03 - Carlo & milan - MacOS X doesn't support fixed allocation in ARAnyM, so special workaround needed 2004/02/28 - milan - sigsegv handler for Linux as computed gotos (partially), disabled, slower 2004/02/22 - Petr on behalf of Carlo - MacOSX/*: I have solved the problem with DIRSEPARATOR and ARANYM_DATADIR defines in my project. I have modified the shell script that call autogen.sh: now calls it only if it exist (on official release autogen.sh is missing), otherwise it calls configure. I have added the directory "pkg_support": in this directory there are instructions and files to build an installer package for aranym. I have removed "aranym_for_library" directory: this is not needed for the new installing method. The directories ".aranym" "usr" "etc"... are all hidden under MacOSX Finder so they are accessible only through the terminal window. I have renamed ".aranym" in "Aranym_files" and moved the data dir in $HOME/Documents/Aranym_files. In this manner they are accessible through the Finder. I have modified paths in configure.ac so they are correctly expanded in configure. 2004/02/19 - Xavier - gui-sdl/sdlgui.cpp : SG_DISABLED state now ready for use. - gui-sdl/dlgDisk.cpp: "Generate" buttons visible (but disabled). 2004/02/16 - Xavier - gui-sdl/sdlgui* : - added SG_RADIO flag. - removed SGRADIOBUT objects. The exact same effect is now obtained with a SGCHECKBOX object with the SG_RADIO flag. - font is now loaded into a 8 biplanes surface. SDL has some strange reactions with 1 bitplane... - removed converted font. We now directly use the 8 bitplane font. This allows to choose text color and correct a bug where the font was not correctly converted (after a screen depth change while GUI is displayed). - removed SDLGui_PrepareFont() and SDLGui_FreeFont(). - added SG_DISABLED state. Not finished yet. - cleaned color handling. - SGTEXT objects drawn differently if SG_SELECTED flag is set. - gui-sdl/dlgMain.cpp: removed calls to SDLGui_PrepareFont() and SDLGui_FreeFont(). - gui-sdl/dlgFileSelect.cpp: files list elements are now SG_SELECTABLE so user can see which one is selected. * tagged as ARANYM_0_8_7_BETA 2004/02/15 - Petr - natfeat/hostfs.cpp: restore 0.8.5's xfs_init to fix the mount root bug. - README, NEWS, TODO, aranym.1, aranym.spec, version.h: standard updates for new release. 2004/02/14 - Petr - all HW chips' classes: made sure they contain function reset() that initializes internal variables of the objects. This will be called when RESET instruction is executed to provide complete hardware reset. - hardware.cpp: added HWReset(), calls reset functions of all HW chips. - most NatFeat classes: added reset() function (same reason as above). - nf_basicset.cpp, debugprintf.cpp: make use of SafeStrncpy - nf_objs.*: added NFReset(), calls reset functions of all NatFeats. - uae_cpu/aranym_glue.cpp: RESET instruction emulation now resets all emulated hardware and native features. 2004/02/13 - Xavier - gui-sdl/sdlgui.*: - introduced new flags : SG_SELECTABLE and SG_BACKGROUND. - boxes and buttons drawing improved thanks to these new flags. - SGTEXT and SGEDITFIELD objects are now drawn with a background. - removed imports from hostscreen.cpp I added when writing SDLGui_Get[First|Next]BackgroundRect(). - gui-sdl/dlg*.cpp: modified to take sdlgui.* improvements into account. - src/Unix/configure.ac: removed an old hack in Cygwin's $LIB. This was not necessary anymore (thanks to build-cygwin.sh) and was preventing configure to successfully compile some tests. Configure tests impacted (which wrongly reported "no" before) : - "whether mmap supports MAP_ANON", - "whether mmap supports MAP_ANONYMOUS", - "whether mprotect works", - "for atanh", - "for isnan", - "for isinf", and - "for finite". 2004/02/09 - Xavier - videl.cpp, uae_cpu/aranym_glue.cpp: connected virtual reset line of our virtual CPU to our virtual videl. ;) Moved code from videl constructor to init() method. ARAnyM video mode/display/main surface is now reseted to its default upon m68k RESET instruction. We won't see screens like http://phoenix.inf.upol.cz/~opichals/aranym/jinneeXaAES.png anymore. (You'll have to take your screenshots before rebooting from now on, Standa. ;) ) This is still minimal, as with real hardware, all videl registers are set to 0 when this event occurs (Display is turned off until TOS initialize videl properly.). But I suspect EmuTOS wouldn't be able to turn it on yet. BTW, other virtual components should be wired there, too... * tagged as ARANYM_0_8_6_BETA 2004/02/08 - Petr - gui-sdl/dlgAbout.cpp: RTFM AUTHORS - gui-sdl/dlgMain.cpp: visually restructured a bit, added three buttons for quick access to most often used functions. - gui-sdl/dlgHelp.cpp, Unix/configure.ac: Help page added - hostscreen.cpp: added a comment that explains why user.code = SDL_USEREVENT - input.cpp: GUI thread talks back to INPUT thread by SDL message as well. Should fix the infamous X async reply I started getting recently. Maybe even the problem on Mac. - natfeat/nf_base.*: SafeStrncpy() added (respects buffer size). - natfeat/hostfs.*: ctor/dtor added, init/exit used for clearing the allocated buffers. Resets the mounted points on ARAnyM Restart now. Also makes use of SafeStrncpy(). Perhaps EasyMiNT installation won't require aranym quit now. - AUTHORS, README, BUGS, NEWS, TODO, aranym.1, aranym.spec, version.h: standard updates for new release. 2004/02/06 - Xavier - gui-sdl/sdlgui.cpp: fix for resolutions smaller than the dialog size. Dialogs dimensions back to 40x25. 2004/02/05 - patrice - New DSP thread killing when shutdown. 2004/02/05 - Petr (on behalf of Carlo) - MacOSX/*: modified the project for version 0.8.6. Also included a shell script for calling the autogen.sh inside the project. - blitter.cpp: updated for getVIDEL(), fixed wrong parameters in the memmove call (BLITTER_MEMMOVE only) 2004/02/04 2:11am - Petr (dedicated to Konrad :) - rtc.cpp: fixed two real scary bugs. How could this code work previously?? Weird that these bugs didn't appear under Linux for so long. Sorry guys :) Now Windows boot in correct resolution and without double bus errors! - include/version.h: version 0.8.6alpha 2004/02/03 - Petr - gui-sdl/*: dimensions made smaller (39x24) to fix the crashes in ST-Low (Xavier increased the dialog dimensions by a few pixels) - rtc.cpp: few more debug messages - main.cpp: DEBUG disabled 2004/02/02 - milan - cdrom.cpp: Solaris support corrected 2004/02/02 - Petr - acsifdc.cpp: when fixing my 0.8.5beta bug that Xavier has found I decided to clean the whole floppy code. FDC routines were included from fdc.cpp. Dropped emulation of second floppy drive. Fixed remounting a floppy with different geometry. The hack for auto remounting a floppy disk is now configurable with #define REMOUNT_FLOPPY_ON_BOOTSECTOR_READING. If it's enabled floppy access is very slow but exchanging real floppies is detected. When it is disabled then floppy access is fast but detecting of media change does not work. - fdc.cpp: removed (its content is included in acsifdc.cpp) - Unix/Makefile.in: fdc.cpp dropped - gui-sdl/dlgDisk.cpp: better calling of the floppy functions - main.cpp: init floppy after reboot 2004/02/01 - Petr - MacOSX/*: some unspecified updates from Carlo, used for building the binary that is on download. 2004/01/30 - milan - configure.ac: support better native debugger with gcc and gdb - Makefile.in: small POSIX update - ata.cpp: small sync with Bochs (set transfer mode and better controller init) - compemu_support.cpp: warning "JIT disabled if you have small cache size" enabled - cdrom.cpp: some corrections in the latest port from Bochs 2004/01/29 - Petr - src/MacOSX/*: suddenly Carlo Baiocco appeared and sent me a complete MacOSX Project builder folder. Give it a try, perhaps it finally builds a binary for MacOSX? Follow the MacOSX/README.rtf for more info. 2004/01/28 - Petr - cdrom.cpp,h: Stefan replaced it with a file from current Bochs and forgot to update the ChangeLog. It might break some other platforms. Beware. - BUGS: two Windows related problems Konrad reported are documented and will hopefully be resolved in next release. 2004/01/26 - Xavier - doc/build-cygwin.sh: preserve timestamps when copying ARAnyM sources. This allows CVS to find which files where modified when commiting from ${ARANYM_BUILD}. 2004/01/25 - Xavier - gui-sdl/sdlgui.*: - aligned SGBUTTONs handling on other objects. They now need to have SG_EXIT or SG_TOUCHEXIT flag set to end dialog processing. Dialog definitions needs to be updated accordingly. This simplify code (and allows to use SGBUTTONs like SGCHECKBOXes). SG_EXIT and SG_TOUCHEXIT buttons are still deselected before dialog exit however. This should be removed and caller code should be responsible of deselecting buttons. - created a secondary loop to hande mouse clicks (SDLGui_MouseClick() function). Now, once an object is clicked, we ignore any keypress until mouse button is released. This fixes some underlying bugs (clicked buttons not deselected when user press RETURN, or when resolution change). - created a new function to handle keypress. First step to the full rewriting of SGEDITFIELD objects handling. - implemented SDLGui_Get[First|Next]BackgroundRect() functions. They allow main thread (hostscreen.cpp) to get a list of rectangles to update the background without erasing the opened dialog. We are ready to implement "flying dialogs". :) This code will need updating if we implement SG_POPUP handled by sdlgui, since popup menu can be higher than root box. - SDLGui_ObjFullCoord() now returns correct coordinates for SGEDITFIELD objects. - factorized some code ; simplified loops. This allows central loops to be far more readable. - commented a bit. - corrected some returns values and tests. Object #0 should be handled the same way as the others. Functions should return -1 when no objects found, and calling functions should test for ">= 0" and not "> 0". - src/hostscreen.cpp: rewritten HostScreen::blendBackgrounds(). It now uses SDLGui_Get[First|Next]BackgroundRect() functions and is a bit shorter than before. - gui-sdl/dlg*.cpp: added SG_EXIT flag on all SGBUTTONs object (unless they were already SG_TOUCHEXIT). - gui-sdl/dlgDisk.cpp: uncommented IDE0_GENERATE and IDE1_GENERATE buttons. Added SG_HIDDEN flag on them for now (until SG_DISABLED flag is implemented or the code behind is written). 2004/01/24 - milan - CPU: small cleanup - JIT: blacklist opcode for debugging - sync with BasiliskII 2004/01/23 - Petr - gui-sdl/dlgDisk.cpp: changed floppy path was not applied to the bx_options - doc/documentation.txt: Bjoern Spruck has contributed a network init script. 2004/01/09 - Xavier - gui-sdl/dlgAbout.cpp: made "OK" button the default one. - gui-sdl/dlgDisk.cpp: - made "Back to main menu" button the default one. - shortened displayed pathes to better suit new button's look. - gui-sdl/dlgFileSelect.cpp: made "Okay" button the default one. - gui-sdl/dlgKeyboard.cpp: made "Back to main menu" button the default one. - gui-sdl/dlgMain.cpp: - made "Close" button the default one. This may not be the better choice. I think we could set "Apply changed settings" button as default once any parameter is modified, and set "Close" back when user changes are applied. This way pressing RETURN 2 times would apply setting, then close GUI. - fixed indentation. - gui-sdl/sdlgui.*: - Made SDLGui_Draw3DBox() more fexible. Allows to choose width of 3D and black border now. It's a shame not to use it more : buttons are very nice with a 10 pixel wide 3D effect. ;) - implemented SG_DEFAULT buttons. - Reviewed TOUCHEXIT objects handling (fixes fileselector arrows bug introduced on 2004/01/06). 2004/01/08 - patrice - dsp_disasm.cpp: many references to old 'dsp.' variable lying around, now replaced by 'GetDSP()->'. - hostscreen.h: forget to include config.h for ENABLE_OPENGL value. 2004/01/07 - Xavier - doc/build-cygwin.sh: Corrected a minor bug in error handling. * tagged as ARANYM_0_8_5_BETA 2004/01/07 - Petr - gui-sdl/dlgMain.cpp: show "unsupported yet" everywhere for the curious. - NEWS, README etc: update for release - doc/build-cygwin.sh: "bash" is in /bin/ (and rpmbuild insists on that) 2004/01/06 - Xavier - gui-sdl/sdlgui.cpp: improved maintainability and "look'n'feel". - Factorized objects coordinate computation. - Factorized objects refreshing code. - Factorized objects drawing code. - Radio button handling simplified. - Dialog centered "on the fly" (root object coordinates not modified anymore). - Dialog centered at the pixel level instead of char level. - Boxes/Buttons borders more GEM-like. - Buttons labels centered at the pixel level instead of char level. - When user click on a button and move the mouse before he release mouse button, the state of the button is dynamicaly updated. - SDLGui_FindObj() takes buttons and boxes border into account. Since ARAnyM GUI does not use radio buttons or popup buttons, these objects have not been tested. Will do it ASAP. Please report any problem with them. - hostscreen.cpp: modified GUI size to keep root box borders on screen. 2004/01/05 - Petr - main_unix.cpp, parameters.cpp: 'program_name' is back (cygwin needs it) - input.cpp: try to iconify fullscreen window when user wants to release mouse and keyboard (Hi Guido :-) - main.cpp: NatFeats initialized at startup, de-initialized at exit and re-initialized at Restart. The re-init code (exit + init) is not optimal. Maybe we should come up with a reinit() function and let NF authors to define what should happen at creation time only and what should be refreshed upon each reboot. - natfeat/nf_base.*: bool init() and void exit() virtual functions defined. - natfeat/nf_objs.*: initNatFeats() calls all NF's init(). Similarly for exitNatFeats(). - natfeat/xhdi.cpp: the init() function is used for remembering the disk settings so that on-the-fly changes in SETUP don't ruin the pending disk operations. This was the main reason for introducing NF init/exit although after reviewing the code it was obvious that such functions were needed for a long time and will be useful for other complex modules (hostfs?) in future. 2003/01/04 - STanda - fvdidrv: * NF API interface polished (made with a use of the enum {} like e.g. hostfs). The old non-NF interface dispatch routine removed. * Color handling rewritten to be able to support virtual workstation local palette. The NF API functions now take HW color values instead of the color index (XaAES RSC palette feature works properly now). * The interface version bumped to 1.100 (nfapi version constant 0x10000960 -> 0x11000960) due to the color handling changes. 2004/01/03 - Petr - videl.cpp, parameters.*, main.cpp, configure.ac, documentation.txt: DIRECT_TRUECOLOR hack removed. I don't think it was ever used. - main_unix.cpp: code rearranged for slightly better readability. - gui-sdl/sdlgui.*: SG_HIDDEN state introduced. Helps for context-sensitive display. - gui-sdl/dlgDisk.cpp: no more confused users as all CD-ROM unrelated settings are hidden now when CD-ROM is selected. An automagic detection of C/H/S geometry for loaded disk images added. - parameters.*, main.cpp: tos and emutos paths moved to bx_options struct. The goal is to keep everything in the struct for easier handling in the SETUP GUI. - main_unix.cpp: 'program_name' is gone. 2004/01/02 - Petr - gui-sdl/dlgDisk.cpp: Disk geometry added (C/H/S). Also, there is Insert/Eject button in each IDE set so it now supports mounting of two IDE CD-ROMs simultaneously :) - gui-sdl/sdlgui.cpp,h: CHECKBOX can be placed on right side of the text. Same thing could/should be done for RADIO button. - gui-sdl/font8.h: font8.bmp included in the code itself to get rid of problems with loading it at runtime - gui-sdl/sdlgui.cpp: Load_XBM() for initializing the font (kindly provided by Martin Doering, thanks). - parameters.cpp,h: recently added guifont_path removed :) It will come back, though, once the TOS font file format loading is implemented (see TODO). - Makefile.in: font8.bmp is not installed - configure.ac, Makefile.in: GUISDLSRCS introduced (contains gui-sdl/ files) - TODO: one thing done (font8), another ideas arrived (floppy bootup insert) 2004/01/01 PM - Petr - fdc.cpp: added is_floppy_inserted() (used in the config GUI). Also changeFloppy() called on insert_floppy() - this fixes the old reported problem with installing NVDI from several diskettes. - hardware.cpp,h: getIDE() added (used in RestartAll for IDE reinit). - ide.cpp,h: init() added - contains the conversion of some bx_options that was previously in parameters:postload_ide(). In init() it's better as we need to convert the options also after config GUI changes (where we don't want to call postload_* stuff). - main.cpp: call IDE::init() in RestartAll() to reinitialize the IDE settings (possibly changed in the config GUI). - parameters.cpp,h: 'floppy.inserted' removed. Instead, we'd need something like 'floppy.present' to indicate whether to mount the floppy on boot or not. Also the bx_options.atadevice parameters conversion moved to ide::init(). - parameters.cpp: loadSettings() now properly pre-/postinitialized by calling preset_cfg() and postload_cfg(). - gui-sdl/dlgDisk.cpp: rewritten, finished, tested, working. - gui-sdl/dlgMain.cpp: load of settings from a config file now properly update GUI settings. Also the "Apply" button is enlarged to emphasize that without applying of the changes the Save Settings or Reboot/Close actions ignore the changes made in config dialogs. - TODO: large update/rewrite. Get involved if you have some spare time. 2004/01/01 AM - Petr - gui-sdl/dlgMain: adding more options - input.cpp, main.cpp,h: RestartAll() now reinitializes the OS (in future it has to reinitialize also the memory and all hardware). Visible result of this change is the possibility of loading another config file from GUI in run-time and reboot with different OS (from TOS to AFROS, for example). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ Happy New Year to all ARAnyM fans ~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2003/12/31 - Petr - main.cpp: startup GUI now uses the same thread schema as the normal GUI. Windows SDL couldn't read mouse events in timer thread :-( - input.cpp: small clean up in the GUI handling 2003/12/28 PM - Petr - hostscreen.cpp: removed the scary IPC hack and switched to user SDL events - input.cpp: same IPC hack fix, SDL keyboard and mouse events mapped to the user event. The event processing (in check_event()) changed from PollEvent to threadsafe PeepEvents(). - gui-sdl/sdlgui.cpp: IPC fix: keyboard and mouse events decoded from user events. - gui-sdl/dlgMain.cpp: missing initialization of reboot/shutdown flags. Loading/saving of config file with editable filename implemented. - parameters.cpp,h: loading and saving of config file from GUI works now. - main.cpp: fixed scary bug - how could this work this morning? Use the GUI timer thread _before_ the actual 200 Hz timer thread is started... 2003/12/28 AM - Petr - sdl-gui.cpp, dlgMain.cpp: font init moved back to the main dialog, freeing of font surface added. - hostscreen.cpp: color palette initialized to 16 default TOS colors - main.cpp: startup GUI with separate timer thread for handling input events before the standard 200 Hz timer starts - parameters.cpp,h: "-G" command line parameter opens the startup GUI. 2003/12/27 - Petr - SDL GUI cleanup: first, all SDL GUI related files are in gui-sdl/ folder now. Then, each dialog is in its own file. At last, SDL GUI now supports EDIT field (have yet to add passing the keyboard info) and the FileSelect now supports editing the filename ("save as..."). We are basically in sync with hatari 0.45 now. - sdl-gui.cpp: dialogs are now centered automagically by DrawDialog(). May seem unnecessary at first but helps when the screen resolution is changed and dialogs need to be redrawn at different positions. - input.cpp: cleaned up the way the GUI is open - main.cpp: prepare for the initial GUI popup - ndebug.cpp: "char" -> "int" to get rid of a compiler warning - sdl-gui.cpp: font init moved from dlgMain to SDLGui_Init(). - include/version.h: we are at 0.8.5alpha now 2003/12/26 - Petr - input.cpp: cleaned up. 2003/12/25 - Petr - hostscreen.cpp: terrific hack that lets the SDL GUI thread know about resolution change. * tagged as ARANYM_0_8_4_ALPHA 2003/12/24 - Petr - hostscreen.cpp: blendBackgrounds() added. This function updates the background of active GUI with the running ARAnyM screen contents. I played with SDL_SRCALPHA etc. to make the background a bit greyed out or something but haven't succeeded. - main.cpp: blendBackgrounds() called with 5 Hz refresh. Also the VIDEL renderScreen is now called even if GUI is active (naturally, otherwise the blendBackground couldn't work). 2003/12/19 - patrice - bad implementation of bcopy() macro for mingw in sysdeps.h. - changed DATADIR to ARANYM_DATADIR to make mingw and cygwin happy (not conflicting with their system headers). 2003/12/17 - Petr - parameters.cpp: "GUIfont" config option added (as promised). Most of the complicated logic for guessing the right path for non-Unix systems can be removed soon. - sdlgui.cpp: removed the cygwin_to_win32 conversion of the GUI font path. Two reasons for that: first, user can specify the path in MS-DOS format in the config file now (if ever needed). Second, the mingw32 compiled SDL does not work properly anyway so we use cygwin compiled SDL now (and that one surely reads unix-like paths). 2003/12/16 - Petr - mfp.cpp: initializing the internal variables suddenly fixed all the weird problems I had with booting the aranym since I converted the HW classes to dynamically created objects. So it's finally solved. 2003/12/16 - Xavier - doc/build-cygwin.sh: added a small shell script to ease compilation on Cygwin systems. This script is needed since SDL does not allow to build Cygwin applications out of the box. Please read comments at the top of build-cygwin.sh for detailed informations. - doc/compiling_for_windows.txt: removed old documentation superseded by build-cygwin.sh. 2003/12/15 - Petr - why to bother with demoing weird problems in extfs.cpp when the file is obsolete and can be removed? Good idea from Standa. ExtFS removed. HostFS is the only right choice now. - emul_op.cpp: bunch of obsolete emul_op instructions was removed. - aradata.cpp: register 0x9000a.L removed (it used to report the ExtFS drives bitmask but I can't recall if it was ever used in the planned application for auto-configuration of the BetaDOS's config file). - hardware.cpp: the ARADATA now handle 18 bytes of HW regs only and I plan to convert the remaining mouse information to NatFeats so that ARADATA could be removed completely. - hostfs.cpp: debugging disabled. Proper GPL header added. - Unix/configure.ac: ZLIB is required only if LILO is enabled so the check for ZLIB is not performed when LILO is not enabled (Patrice's idea but he was too lazy to do it :) 2003/12/09 - Petr - extfs.cpp: rewritten the initialization of rootPath a bit. And added #define DEMO_WEIRD_PROBLEM. That is the "AFROS does not boot" problem that is still there and can be easily exhibited just by allocating the 'A' rootPath earlier in the start process. Note that it somehow affects the MFP interrupts which later causes EmuTOS to hang during boot. Very weird. - extfs.{cpp|h}: proper GPL header (this one should be added to ALL files) 2003/12/09 - STanda the change from (2003/10/02): " Fxattr() now returns the (uint32)MAPVOIDPTO32( fc->index ) instead of the host OS' statBuf.st_ino. This is a problem IMO due to that the fc->index might change on releaseCookie()/dupCookie(). Proposals?" proved wrong. Rolling it back. 2003/11/28 - Petr - extfs.cpp: made sure the drives[].rootPaths are really initialized to a defined value. Also, I don't like functions in header files so moved constructor/destructor to the CPP. And it seems to fix the problem with freezing EmuTOS due to a MFP problem. 2003/11/27 - Petr - forgotten "extern DSP" declarations removed * interesting thing: I figured out that AFROS boots on the 0.8.4+ ARAnyM if the [HOSTFS] H= is at least 12 bytes long. Example: stock AFROS contains just "H=/tmp/". The boot freezes. But if this path is extended to "H=/tmp/6789012" AFROS boots. Sounds like an encouraging thing to debug... Hopefully not a compiler bug! 2003/11/25 - Petr - Patrice convinced me to do a two years pending rewrite of the hardware emulation dispatcher. This is a pretty fundamental change to the deepest internals of ARAnyM so please take it with great care and do backup all your disk drives first! It may easily destroy all your data if I made a mistake somewhere. All HW modules are now true dynamically created instances. This fixes a number of hidden problems including the crash of DSP emulation thread on OS X. It also allowed me to improve and simplify the address dispatcher (as has been written in TODO for a looong time). Almost all files are affected. Definitely all that emulate HW and a couple more. All HW classes are based on BASE_IO now, ICio is gone (why did I introduce it? I can't remember). The speed impact is non-measurable (on my machine, at least) and the source code now looks way better. I am glad I finally rewrote it. I also know AFROS does not boot. I have yet to figure out why. - fdc.cpp: HWget/HWput replaced with much smarter FDC::[sg]etDMAaddr() - aranym_glue.cpp: REBOOT_OR_HALT is set to HALT now. Rebooting was not a good choice (I ended up in an neverending loop of reboots). - main.cpp: fdc_init() moved to ACSIFDC constructor. Also the ROM->RAM first two long words copying moved to InitOS(). HWExit() calling added. - hardware.cpp: the special case in reading/writing words or longs for HW_IDE is finally gone. Now each class can override the handle*** functions if it wants to catch the word and long access. Hopefully nothing breaks after this essential change. - parameters.cpp: added zero parameters to fix compiler warning about missing initializers. - *.cpp: many "unused parameter" warnings resolved by enclosing unused parameters in /* */ * tagged as ARANYM_0_8_3_BETA 2003/11/23 - stefanq - added darwin folder containing all necessary files to make a Mac OS X port of aranym - Makefile.in: added option -r to target APP_LIB, wich is necessary for darwin. - configure.ac: corrected the pathes for frameworks for darwin - input.cpp: added some #ifdef OS_darwin to reflect some differences in the keyboard layout of Apple computers. - parameters.cpp: changed a %d inside an fprintf() call to %lu to prevent a compiler warning. 2003/10/26 - Petr - doc/hguide.txt: written "Threads and Interrupts" chapter. I always wanted to document it since I myself had often hard time recalling how it was actually implemented. 2003/10/25 - Petr - newcpu.cpp, aranym_glue.cpp: bus error handling code rearranged a bit: SDL related code should not pollute the newcpu.cpp. Also tried to fix the indentation (in the BUS ERROR handler of the Exception function at least, since Milan does not want me to reformat the whole file). In case of problems the ARAnyM reaction (reboot or halt) is now common for both EPS (exception per second) and DBF (double bus fault) and is configurable by defining REBOOT_OR_HALT at compile time. If REBOOT_OR_HALT == 1 ARAnyM reboots in case of double bus error or bus error loop. Else it halts CPU and quits. By default it reboots. EPS code now counts both EPS at same PC and also general EPS (regardless of the current PC). Runtime configurable limit is for EPS_PC only, so far. The general EPS' limit is configurable at compile time by defining EPS_LIMIT to a number. Should be made runtime configurable as well. The only missing thing is SDL dialog informing about the situation and offering more options. See the /* remarks */ in code. Bus errors are not printed on console now. The EPS and DBF patches should take care of problems and we are not interested in "normal" bus errors. - TODO: updated (some items removed since they were done already) - AUTHORS: slight update 2003/10/25 - Xavier - newcpu.cpp: better fix for double bus errors - CPU restarts now - main.cpp: display correct EmuTOS build date - configure.ac: caddr_t final solution - vm_alloc.cpp: caddr_t cleans the #ifdefs out 2003/10/17 - Xavier - newcpu.cpp: real trap for double bus errors - configure.ac: allows to "make depend" on Cygwin and correct end message of configure script so that user knows he should "make depend" before "make" - Makefile.in: sed script in "make depend" more readable - vmalloc.cpp: correct a build error on Cygwin (an mmap we forgot...) 2003/10/14 - patrice - newcpu.cpp: added exception per second limiter, configurable in .aranymrc 2003/10/06 - milan - nfcdrom: another cleanup (destructors) 2003/10/06 - milan - newcpu.cpp: Exceptions in JIT handled correctly now, grrr. 2003/10/05 - milan - BasiliskII sync and cleanup, AMD64 as a host (in 32-bit mode) - nfcdrom.h: some methods are abstract now - aranym_glue.cpp: support for compiled mainloop in JIT ** ARAnyM 0.8.2beta released 2003/10/04 - Petr - natfeat/nf_basicset: added OS_TYPE and CPU_TYPE to NF_NAME(1) - minor TODO update - Makefile.in: nfcdrom.bos added to install targets - atari/network/ethernet/README: URL of site about TUN/TAP added - doc/compiling_for_windows.txt added - doc/aranym-lilo.txt added - doc/aranym.1 (man page) - small typo corrected - include/version.h: increased for 0.8.2beta release 2003/10/04 - Milan - Bochs sync and cleanup, mainly around CD-ROM support 2003/10/02 - STanda - Harddisk usage related documentation made up-to-date. - HOSTFS: cleanup + some new features. * Fxattr() now returns the (uint32)MAPVOIDPTO32( fc->index ) instead of the host OS' statBuf.st_ino. This is a problem IMO due to that the fc->index might change on releaseCookie()/dupCookie(). Proposals? * The first fscntl() implementation added. * The convertPathA2F() method was removed. This was a legacy code from the times when the native implementation had the BetaDOS driver API. Now it has the FreeMiNT's XFS API and the BetaDOS' driver API (GEMDOS) emulation was stolen from FreeMiNT. * The ExtDrive * was added to the XfsCookie and is filled within the fetchXFSC() method. This was needed for the cookie2Pathname(). * xfs_symlink() improved - still not perfect * open() modeMint2Host conversion introduced (for the case the stat.h is incompatible - not very likely) 2003/09/30 - patrice - Natfeat CD-ROM driver splitted to ease port to other OS. 2003/09/29 - milan - Makefile.in: APP_LIB added (hmmm, sorry, diploma thesis, thanks Francois and Stefan :-) 2003/09/25 - milan - configure.ac: OS_TYPE and CPU_TYPE for future natfeat exported to sources - hostfs.cpp: debuginfo blocked for CVS 2003/09/23 - patrice - Audio CD players should work now. And data CD-ROMs can be read using any iso9660 dos Atari driver. 2003/09/21 - patrice - Added NF CD-ROM BOS driver. Very simple Atari CD player programs work, but some ioctls are still not implemented correctly, and for the moment not usable for iso9660 fs access, and only for Linux. 2003/09/15 - STanda - --enable-realstop added to the configure options (default=yes and implies the --enable-spcflags-excl option). The STOP condition wait and locking was integrated properly to the uae_cpu core. 2003/09/15 - STanda & !Petr - STOP instruction emulation greatly improved. usleep() was replaced with SDL_CondWait() - better portable and what's more important - fixing jerky mouse movement under new FreeMiNT, fVDI and EmuTOS! 2003/09/10 - Petr (commiting patches submitted by Guy Harrison, thanks!) - Makefile.in: fixes possible conflicts between aranym headers and system ones - autogen.sh: shouldn't 'make depend' unless it configures... 2003/09/05 - Petr - blitter.cpp, mfp.cpp, rtc.cpp: rid of compiler warning "comparing unsigned variable with signed value" - various files: rid of compiler warning "unused parameter" 2003/09/03 - milan - CPU flight recorder from BasiliskII ported and SR support added - ndebug compilation warnings fixed 2003/08/29 - milan - some compiler warnings solved - more warnings support with GCC - inline warnings not showed now - MONITOR0-9 Emulops for JIT modified 2003/08/15 - milan - new CPUDEBUG emulops, switches for new internal variable cpu_debugging, for CPU debugging - make dependencies corrected - gencomp.c: compilation warning cleaned - md5.h -> aramd5.h : thanks, Guy Harrison - vm_alloc.cpp: Cygwin workaround, thanks, Xavier Joubert 2003/08/06 - milan - mingw support cleaned (added to sysdeps.h) 2003/08/05 - milan - autogen.sh, configure.ac: cleaning, free patch from Guy Harrison for MAKE, xeys problem solved - configure.ac, lilo.cpp: zlib & lilo support standardized nightmare -> bobek transfer - Makefile.in: make depend for linux corrected 2003/07/28 - Petr - natfeat/xhdi.cpp: XHInqTarget2 implemented. Also some little cleanup (error codes replaced with symbolic names) - parameters.[cpp,h]: added floppy status ('inserted'). Floppy path correctly initialized - version.h: version increased to 0.8.1 CVS - SDL GUI: MAX_FILENAME_LENGTH defined in file.h - newcpu.cpp: exceptions (bombs) are displayed again (dunno who and why disabled it) - parameters.cpp: printing of version at startup is in main_unix.cpp 2003/07/18 - Petr My little cleanups: - #ifdef OS_mingw cleaned up. Created a new Unix/mingw_include.h file that should be included to a generally available include file (config.h?) if the host OS is mingw. - SDL locks moved from newcpu.cpp to aranym_glue.cpp (let's keep the borrowed modules as clean as possible). - emul_op.cpp: activate_debugger() on 0x71ff disabled as it was crashing whole emulation. 2003/07/17 - Petr - src/natfeat/hostfs.cpp: converPathA2F() tried to strip a drive letter from base path. Xavier debugged this and patched it to not remove the drive letter since it's the HostFS path (and drive letter on Windows is important). 2003/07/16 - Petr - src/natfeat/hostfs: a small workaround for a bug in Cygwin's GCC allows extending the path buffers back to 2048 chars (thanks to Xavier) 2003/07/13 - Petr - configure.ac: ARANYMHOME quotation mark encapsulation fixed for cygwin (thanks to Xavier) - updated TODO 2003/07/11 - milan - nice night - some stupid bugs in JIT compiler corrected: - compiler_dumpstate() with no previous compilation - not ended NEG in sigsegv handler - etc. (sorry, it is too late) - Makefile.in: define -D_REENTRANT -D_THREAD_SAFE - ata.cpp: CD-ROM product ID corrected for little endian 2003/06/26 - ARANYM_0_8_0_BRANCH merged to main and tagged as _ABANDONED. The merge brought just minor JIT and HostFS fixes (see 2003/04/1[25]) 2003/06/12 - milan - configure.ac: ECE support corrected 2003/06/11 - milan - emul_op.cpp: better OP_MONX 2003/06/10 - milan - emul_op: new instruction 0x71ff (OP_DEBUGGER) starts debugger if available new instructions 0x71fX (OP_MONX) display CPU registers 2003/06/01 - milan - configure.ac, Makefile.in: MacOS X support updated (thanks, Stefan Kuhr) - "SDL/" removed from includes, path to SDL headers must be fully defined - sync with BasiliskII 2003/05/27 - milan - configure.ac: MacOS X support rewritten (thanks, Stefan Kuhr) 2003/05/26 - milan - configure.ac, fpu_ieee.cpp: Sparc problem solved, see "2003/04/23 - milan" and GCC bugs #8300 and #9763 2003/05/01 - patrice - minimal ncr5380 scsi emulation to allow Linux boot. Maybe TOS harddisk drivers also do not hang anymore: need testing. - lilo: ramdisk copied to FastRAM, so it is not written over when kernel boots. 2003/04/28 - patrice - midi: Added option to output bytes sent to MIDI interface in a file. - lilo: Bugfix, thanks to midi output. 2003/04/25 - patrice - cfgopts modified so the value given can contain the '=' sign. Added Lilo to Aranym: you can boot a Linux/m68k kernel with it. MMU support required (and debugged!) for this option. 2003/04/23 - milan - configure.ac: on Sparc with GCC 3.x use older FPU (UAE), GCC bug workaround - Makefile.in,configure.ac: small update 2003/04/22 - johan - fvdidrv.cpp: Reverse transparent mode for vrt_cpyfm corrected. 2003/04/16 - patrice - Corrected inclusion of SDL headers. Removed useless glut library linking. 2003/04/15 - STanda - hostfs: * constant usage cleanup. * xfs_creat()/xfs_dev_open() issues fixed (gunzip works properly now) * xfs_native_init() improved to be able to handle both the 1.15.x and 1.16 (new Dcntl() feature) - reacts on the 0-31 devnums when appropriate. 2003/04/12 - Petr - compemu_support.cpp: unnecessary fopen("/dev/zero", O_RDWR) removed. This allows running aranym-jit on ARAnyM Demo CD (Knoppix based). ** ARAnyM 0.8.0beta3 released 2003/04/10 - Petr - parameters.cpp: addFilename() has a different order of arguments and is able to deal with additional path separators - cygwin support hopefully perfect now (uses registry to find out the path to "My Documents" folder which is used instead of the Unix-ish $HOME). - hostfs.cpp: char a[2048] - local arrays for filenames now defined with MAXPATHNAME2LEN (MAXPATHNAMELEN was already used and I wasn't sure if it can be used in the other cases as well). - !IMPORTANT! With MAXPATHNAME2LEN set to 2048 gcc 3.2 created incorrect code on cygwin. Thus both MAXPATHNAME[2]LEN were set to 255 for now. I realize it's dangerously low value but if we are suffering from stack overwrites we need to go low and re-check all issues again. Note that this fixes the wrong mapping of host folders under Cygwin.. 2003/04/09 - Petr - parameters.cpp: do not include emu_bochs.h - this breaks some platforms. - tools_cygwin.cpp: Xavier submits a routine for reading the registry 2003/04/08 - Petr - hostfs.cpp: fixed very annoying bug that was causing bus error when opening root of a host drive. - parameters_cygwin: fixed a bunch of small bugs, now tested and works OK. 2003/04/08 - patrice - Document autozoom in the [VIDEL] section, and [OPENGL] section, in documentation.txt and aranymrc.example ** ARAnyM 0.8.0beta2 released 2003/04/08 - Petr - cfgopts: Thomas correctly suggested to use memmove() for overlapping blocks of memory. - changes made between ARANYM_0_8_0BETA1 and 0_8_0_BETA2 merged to main. 2003/04/07 - patrice - Preliminary support for mingw compilation suite. 2003/04/07 - STanda - hostfs.cpp: General debug messages cleanup. The st2flags() and flags2st() methods fixed (a need for open()). The isPathValid() method removed (was only useful for aranymfs.dos). Dpathconf(8-9) added and 7 fixed (Thing has a bug in 1.27 here IIRC). 2003/04/07 - Petr - configure.ac: parameters.cpp and its children updated. Should be ready for adding more cygwin specific functions. 2003/04/06 - Petr - parameters.cpp: '-S' handling corrected. Small cleanup in getopt().. - natfeat/ethernet.cpp: back to execp(), now starting of 'aratapif' works OK thanks to use of _exit(). - parameters.cpp: cleanup in getConf/DataFilename(). Now uses 'callbacks' for obtaining the folder path. These callbacks are defined for Unix and for Cygwin so far (Cygwin needs a different handling). Hacks with "--datadir=/" removed completely. Thanks to Xavier for the Win32 related information and ideas. - Unix/cygwin: new folder with tools_cygwin.cpp and parameters_cygwin.cpp. The Makefile.in was not updated yet.. Trying to find a more flexible way than copying things from parameters_unix to parameters_linux... 2003/04/03 - STanda - hostfs.*: general clean up - tools.*: The 32bit <-> host mapping for systems with non 32bit void* and int. Several other functions were moved to the tools.h. 2003/04/01 - Petr & Honza/ATACK - main_unix.cpp: segfault on gentoo (where the argv[0] does not contain the path (only filename)). - natfeat/ethernet.cpp: missing ethX definition in DEBUG() statement 2003/03/30 - Petr - cygwin gets its own folder with a tools.cpp file. - sdlgui.cpp really needs the explicit conversion of the path. Xavier was right, after all. 2003/03/29 - milan - Petr's version capabilities implemented - infoprint as cname for panicbug, sorry Petr - man page from debian added 2003/03/28 - STanda & Petr - natfeat/hostfs.cpp: DIRSEPARATOR used wherever possible. Might fix HostFS on Windows. - parameters.cpp: DATADIR can't be relative so now it checks for "//" (configure --datadir="/") and then ARAnyM uses the path to the binary as the DATADIR path (fixed later the same day) 2003/03/27 - Petr - parameters.cpp: correction and clarification of "-d" command line switch - input.cpp: a key for generating screenshots changed to "PrintScreen" (the Alt+PrintScreen collided with Linux kernel hacking SysRq combination) - [ARANYMFS] config file block header changed to [HOSTFS]. The [ARANYMFS] is still read in case [HOSTFS] is not found in the config file. But in near future ARAnyM will stop reading the old [ARANYMFS]. Updating your config file automatically is as easy as starting aranym with -s. After that you may just remove the [ARANYMFS] block from your config file. - user-specific files ("config", "nvram") are stored in subfolder ".aranym" in the $HOME folder. If $HOME is not defined, $USERPROFILE is used instead (Windows 2000). If neither $HOME nor $USERPROFILE is defined then the path to the ARAnyM binary is used. - system-wide data files ("ROM", "etos512k.img", "font8.bmp") are stored in subfolder "aranym" in the "/usr/local/share" folder (by default). This folder can be changed in configure by --datadir=. If this folder is defined as 1 char long path ("." for the actual folder) or is empty then ARAnyM tries to use the path to the ARAnyM binary instead. - DIR_SEPARATOR renamed to DIRSEPARATOR and corrected (it's been already used in several places). 2003/03/27 - milan - configure.ac: DIR_SEPARATOR added. 2003/03/26 - milan - JIT games, sync with BailiskII 2003/03/24 - milan - Solaris support updated - one paranoia "volatile" fix in CPU ** ARAnyM 0.8.0beta1 released 2003/03/24 - Petr - aranym.xfs renamed to hostfs.xfs - new binary drivers (hostfs.dos, hostfs.xfs, aranym.xif, nfeth-config) added to CVS. - Makefile.in: installs new hostfs (instead of old aranymfs) and also new aranym.xif plus utilities. - aranym.spec: updated for new release, install new files. - doc/documentation.txt: slight update (regarding BetaDOS only) 2003/03/23 - Petr - nfeth-config.sh: added, calls araethip and shows how easy is to configure the device automagically. - araether.c: AUTO_IP_CONFIGURE (automatical internal configuration of eth addr and netmask) added but is not working well, thus disabled by default. Also the DEBUG(()) system doesn't seem to work so I wrote mine for the ioctl() - can be enabled by defining MY_DEBUG. - renamed things: "araeth*" -> "ethernet", "araethip" -> "nfeth-config" - atari/hostfs/README, atari/network/ethernet/README: updated - 'aratapif' started by 'execv()' from the same folder where aranym was started from. Also a couple of checks for file owner and setuid bit added so users get warnings if chown/chmod was not applied to aratapif. - version.h updated to 0.8.0beta1 - configure.ac, Makefile.in: renamed "pif" to "ifc" and "arapif" to "tapif" - TODO, BUGS, INSTALL, NEWS, README and other files updated. 2003/03/22 - Petr - [ETH0] settings in the config file - aranym_xfs.c: ifdef'ed one debug print - araethip.c: improved and adapted for possible many eth devices 2003/03/21 - Petr - networking: NF API extended to allow emulating more than 1 network card - aranym.xif: added SIOCGIF modes to autoconfigure the device with its IP and netmask. - natfeat/ethernet.cpp: initialization corrected. The XIF should not install on atari side unless the host initialization was finished OK. 2003/03/20 - STanda - hostfs.cpp: mapping improved. - .DOS/.XFS: .xfs works now just like the MetaDOS's driver it maps all the drives under the same driver letters. It goes through the [aranymfs] for the mapping. After a conversation with Frank Naumann I conclude that the M(B)etaDOS/ExtenDOS would not work with the 1.16 FreeMiNT kernel line. So do not use the .dos driver there as the very same thing is provided by the .xfs there now. The configuration stays the same. - aranym_xfs.c: the source can be swithed to use the Dcntl() to map the drives, but in that case you can't get the single letter mountpoints. 2003/03/19 - STanda - hostfs.cpp: the metados hostfs.dos driver simply sets the mapping the same way as aranymfs.dos. No change for the user. NOTE: Do not use aranymfs.dos driver. It doesn't work under FreeMiNT 1.16 kernel - aranym.xfs: now mounts the [aranymfs] mountpoints to U:/GG (need to develop a hack to map that to U:\G only /single letter mount point) - not via Dcntl() which looks in BIOS in this case) 2003/03/18 - milan - P4 fix for JIT compiler - sync with BasiliskII 2003/03/17 - milan - FPU updated, preparation for K8 2003/03/17 - STanda - hostfs.cpp: the chattr/chmod functions ported from STonX. Not tested. It just compiles ATM. 2003/03/16 - Petr - natfeat/doc/native.txt updated (used Laurent's latest version without the NF_CONTROL stuff and with corrected unsigned long ID). - TODO updated - natfeat/ethernet.cpp, atari/network/araeth/araether.c: subIDs are now defined in a separate header file named araether_nfapi.h. This should make the connection between host side and atari side of the natfeat clearly visible. - natfeat/ethernet.cpp: getting of IP addresses added. Used in a separate program called 'araethip'. Version of the arether_nfapi must have been increased so update your aranym.xif binary. - atari/network/araeth/getparams/araethip.c added. Can be run from MiNT's rc.net to call the ifconfig and route with proper IP addresses. - atari/network/araeth/README: updated with info about 'aratapif' and the tunnel device - simply about getting the whole thing working. 'araethip' is not covered yet in this README. 2003/03/15 - Petr - major rewrite of the aratapif (ARAnyM TAP IFconfig) and related updates in natfeat/ethernet.cpp. Now it actually works! 2003/03/14 - Petr - dsp_cpu.cpp, araifc/inet.c: small fixes to remove GCC warnings 2003/03/13 - milan - IDE: sync with bochs, BeOS, Cygwin, Darwin - araifc integration 2003/03/12 - STanda - hostfs.cpp: fake methods for chattr, chmode, chown and some more. The report the fakeness to the host OS console in debug mode ATM. - araifc (ARAnyM ifconfig implementation for tuntap) 2003/03/12 - milan - list of supported OS updated - Makefile.in: diskimage cleaning 2003/03/11 - STanda - aratapif: made working even in nondebug mode. The exec() arguments needs to be put into the child process adress space to be able to execute any binary. - BetaDOS 3.12: works correctly with the hostfs.dos driver here it seems. Please test the driver throughly. It gives you the long names also under FreeMiNT (unlike the aranymfs.dos which does not work at all in my 1.16 setup - it does in 1.15.12 however) 2003/03/07 - Petr - aranym.spec: paths to share/aranym had to be corrected (though I'd say they were OK previously and that our Makefile install: is wrong) 2003/03/06 - Petr - external configuration tool for the setting up the tap0 device 2003/03/05 - STanda - small fix in hostfs/metados/main.c 2003/03/04 - Petr - ata.[cpp|h], parameters.[cpp|h] cleaned up: obsolete disk_options_t and cdrom_options_t structures removed. Everything is stored in the atadevice_options_t now. Nice bonus is the possibility of naming the IDE device with new config option "ModelName" (string, up to 40 characters). 2003/03/02 - Petr - natfeat/atari_example_gfa.lst: example for GFA Basic programmers - natfeat/atari_example.c: updated for Ssystem() call 2003/03/01 - Petr - parameters.[cpp|h]: single partition devices under the SCSI nickname need the partition ID to be configurable - natfeat/nf_base.cpp: added, contains Atari<->Host memcpy and strcpy functions (taken from hostfs.cpp). - hostfs: major NF API clean up. Versioning added. HOSTFS is Supervisor only now. Also the mount point in MiNT is "U:\hostfs" now. 2003/02/28 - Petr - natfeat/ethernet.cpp: getHWaddr takes exactly 6 bytes and it's not a string so no EOS should be added. Thus strncpy changed to memcpy. 2003/02/27 - Petr - Ethernet: README of aranym.xif made clearer, IP addresses in ece.cpp configurable by #define and the default ATARI IP address changed to 192.168.0.2 (to prevent users from asking a question why it was .5). - natfeat/ece.cpp renamed to ethernet.cpp - NatFeat "ECE" dropped, new NatFeat "ETHERNET" with different API supporting also versioning and allows passing the interrupt level and MAC address from the host side. Also the ETHERNET NF is Supervisor only (naturally). 2003/02/26 - Petr - ETHERNET_OLD (the one from Basilisk) removed completely - Networking now at interrupt level 3 (Audio stays at int level 5) - parameters.cpp: "--swap-ide" command line switch added (exchanges IDE0 and IDE1 drives). I find it useful for preparing new disk images.. - parameters.[cpp|h]: get ready for SCSI disks ([DISK0-7]) (single partition mounting) 2003/02/26 - STanda & Petr - natfeat/ece.cpp: after removing hostScreen.lock and one unfortunate D(bug) it started working. Wonderful. TODO: change interrupt (probably to INT3). Also would be good if root privileges for tuntap weren't necessary. - "araeth" -> "eth" rename 2003/02/20 - Petr - videl.cpp: fixed wrong st_shift reset, removed VIDEL regs initialization (since EmuTOS now initializes VIDEL properly). Startup color depth of host window is 8bit now (should be enough). 2003/02/19 - STanda - fvdidrv.cpp: the expandArea M->M for bitplanes fixed The only TODO for full bitplane support is to support non-word aligned blits and expands. ... next shift (evening) ... the VDI pen -> TOS colors reduced only to proper setting of the palette (see getTosColor() method). 2003/02/18 - STanda - fvdidrv.cpp: the bitplane modes improved. Up to the 4bit mode everything works well. The 8bit mode is on the way. There is still some little imperfection there. 2003/02/18 - Petr - videl.cpp: writing to f_shift resets the st_shift and that fixes the color depth detection routine. 2003/02/17 - STanda - BeOS patches for extfs.cpp and natfeat/hostfs.cpp 2003/02/16 - Petr - cleanup in src/natfeat - fundamental NF functions grouped in 'basicset' - cleanup in emulop.cpp - removed everything that has a NF replacement - cleanup in araobjs.cpp - removed everything that is in src/natfeat as well - NF_SHUTDOWN added 2003/02/12 - STanda - tools/createdisk: rewritten into 'sh' syntax and tested on Solaris/HPUX/FreeBSD (all due to the clarity of the FreeBSD distribution requested) * you can create image of whatever size and pretty fast (we are using lseek() there now and so on ext2 you can create and image file bigger than your available space ;)) * You need not to use the mbrdata file if you don't need it. See the usage notes for more. 2003/02/09 - patrice - ikbd.cpp: corrected SendMouseMotion() which don't modify the buttons variable anymore. - hostscreen.cpp, parameters.cpp: added 'Filtered' property to [OPENGL] section if you want do enable/disable linear filtering for screen rendering. 2003/02/04 - Petr - input.cpp: fixed a long-standing bug with automatic mouse grab upon entering the ARAnyM window. This didn't work correctly when the ARAnyM window didn't have input focus. - ikbd.cpp: there is a bug in the algorithm of compressing the mouse packets. I added a simple workaround but in the future this should be fixed properly. - input.cpp: added a warning when the SDL reports weird mouse relative motion event. Such event is reset otherwise our mouse would get mad. I am wondering why SDL reports such scary values for relative motion.. 2003/01/29 - milan - Makefile.in: corrected, floppy.sh is executable - memory.h: ISO C++ ** ARAnyM 0.7.0 released 2003/01/29 - Petr - xhdi.cpp: used off_t in fseek hoping that this would make it LFS compatible - Makefile.in, aranym.spec: three more contrib files added for installation 2003/01/16 - milan - configure.ac: support for large files (>2GB) corrected support for OpenGL 2003/01/15 - STanda - fVDI: The drawMouse() hot_x/hot_y are stripped to 4 bits. = The m68k driver had a bug in the parameter passing for drawMouse() so DO NOT FORGET to update your disk images. 2003/01/14 - STanda - fVDI: The drawMouse() calling fixed for the natfeat dispatch. The mouse color should be OK again. And... EmuTOS works with fVDI since now. 2003/01/12 - Petr - natfeat/atari_example.c improved (using function pointers now) - include/version.h improved (automatically appends "CVS_date_" to unoficial builds) 2003/01/11 - Petr - "__NF" cookie fixed - now the structure contains pointers to nfID and nfCall. - src/natfeat/atari_example.c updated - it's now based on the __NF cookie only. 2003/01/10 - Petr - tools/diskimage.c: a tool for creating disk images up to 32 GB large. Note that our IDE emulation is limited to 2 GB disks for now. Will be fixed soon, hopefully. 2003/01/09 - Petr - fixed _SND cookie value: now it contains just '4' to indicate that no hardware is available except of XBIOS functions. If DSP emulation is compiled in and active the _SND cookie contains %00001100 (according to recent info in mailing list the 3rd bit means DSP). - improved the patch of TOS 4.04 again - this time added "__NF" cookie (untested yet) and also a nice example of how cool the boot logo may be. - Didier updated audio driver to use NatFeats when available... 2002/12/29 - Petr - videl: Sébastien Briais sent a patch that allows virtual screen on VIDEL by emulating the 'linewidth' and 'lineoffset' VIDEL registers. - videl: the 'od_posledni_zmeny' variable translated to English, at last. 2002/12/19 - STanda - the atari/network/araeth aranym.xif for ECE (ethernet card emulation) added. It doesn't work ... see the README there. nb: The ether_unix.cpp;emul_op.cpp;include/ether*.h may be removed I left them in place until it all actually runs with my implementation - Installation and BUGS section added into the atari/hostfs/README 2002/12/16 - STanda - several cleanups regarding the extfs and hostfs (main.cpp, nf_objs.cpp) - STL bugfix in natfeat/hostfs.h (the std namespace usage) 2002/12/14 - johan - Special handling of 32 bit vro_cpyfm D=S mode (see 2002/09/28). - Mode handling for screen->screen blits. - Updated fvdi.prg, aranym.sys and fvdi.sys. 2002/12/10 - STanda - extfs: interface & debug cleanup - hostfs: completely new NatFeat driven implementation of the host OS filesystem access. The m68k implementation in in atari/hostfs folder. Read the README placed there. 2002/11/30 - patrice - videl: autozoom does not work correctly if target is smaller than source. - hostscreen: added OpenGL rendering for the Atari screen. 2002/11/09 - milan - sync with BasiliskII: some obsolete structures removed, support for Opteron 2002/11/06 - Petr - aranym can be compiled without the DSP emulation again - ulong in nf_stderr fixed to uint32 2002/11/03 - Petr - XHDI - returning values corrected 2002/10/29 - Didier & Petr - found and fixed serious buffer overflow in uae_cpu/readcpu.cpp. EMULOP_RETURN (unused), NATFEAT_ID and NATFEAT_CALL should behave better now. 2002/10/28 - Petr - NF_STDERR added to NatFeats - NF_VERSION corrected (should display version of NatFeat API, not version of aranym) - new cmdline option "-e" (--emutos) enforces EmuTOS boot. 2002/10/22 - johan - fVDI driver NatFeat support added. 2002/10/20 - Petr (version 0.6.8-beta) - NatFeat instruction opcodes changed back to good old $7300/$7301. The LineF interface requires the $fe0x instructions to be long words and I am not ready to accept such change of NatFeat calling convention. 2002/10/19 - Petr (version 0.6.7-beta2 - NatFeat opcode change!) - GFA Basic "fix" - it writes 0x16 to IKBD and then waits for a joystick packet in an endless loop. So we are sending a Petr packet now. - NatFeat instruction codes changed to unused LineF ones: $fe00 and $fe01. Hope that this will make all future ColdFire CPU users happy ;-) - cosmetic changes (aranym prints its version and compile date on startup) - new "readonly" parameter to [IDE] config replaces the "xhdiWrite" but works generally - i.e. allows opening disk images on CD-ROMs (suitable for our aranym CD) - CD-ROM in GUI features [Insert] / [Eject] button now 2002/10/15 - milan - Mac OS X: keyboard scancode workaround - non-cheaders support (for MipsPro C/C++ compiler) - cleanups in classes MFP_timer, ndebug, in macros around ADDRESSING modes etc. - FAQ: changes around disks 2002/10/14 - milan - configure & etc.: generic bool, volatile and inline handling 2002/10/13 - Petr - fixed CDROM mount/unmount support - fixed FastRAM max size check on Linux with real addressing and no JIT - added CD-ROM automount (like on real Atari :-) 2002/10/13 - milan - sync with BasiliskII CVS - JIT compiler: NOP filler based on binutils (default) Gwenole added some checks - Mac OS X: some small corrections - xBSD: sigsegv handler setting for JIT compiler corrected 2002/10/12 - milan - sync with BasiliskII CVS - JIT compiler: tune_alignment as configuration feature (TuneAlignment) new management of blockinfos - cpuotpi "disabled" - not used now, needs reimplementig - IDE: sync with Bochs CVS (only some small corrections in debug messages, result data of the ATAPI command 'inquiry' fixed, added multiple cdrom support for win32 - still not used) - dialog.cpp: enabled Discs, the 1st CDROM driver mount/unmount ** ARAnyM 0.6.6 released 2002/10/10 - patrice (version 0.6.6-beta) - dsp: dsp nothread code removed. - configure: DSP is enabled by default now 2002/10/09 - milan - sigsegv_linux.cpp: x86 F6 instructions was badly decoded. NOT8, NEG8, IDIV8, MUL8, IMUL8 implemented, TEST8 corrected 2002/10/08 - Petr (version 0.6.5-beta) - the major arch change in version 0.6.0 has been reverted. CPU is running in the main thread again. SDL_Timer thread is back on all platforms but it's not doing anything but setting up a CPU flag that is being checked in CPU inner loop, in do_specialties(). Advantages: - all SDL activity is in the main thread automagically - should fix all the troubles with non-Linux host operating systems TODO: - check if the overall performance of ARAnyM is not worse than before - make sure the keyboard is checked under all circumstances (STOP insn, CPU crash, deep JIT loop, ...?) so we won't lose the control over aranym. 2002/10/03 - milan - ndebug supports breakpoints 2002/10/02 - milan - add raw_cmp_b_mi() and raw_call_m_indexed() for generated, not used now, BasiliskII used translated main loop now, ARAnyM not - it's main loop is more complicated - x86 calls in loops removed as in BasiliskII but for another reason, not enough stable for newer versions of compilers, in some cases slower - for OpenBSD dirent.h again in sysdeps.h - preversion of JIT compiler support for OpenBSD/i386, later I will enable it also for NetBSD/i38 and FreeBSD/i386 2002/10/01 - patrice - ikbd: Joystick support bugfixed. 2002/10/01 - milan - use off_t for file offsets in IDE emulation (from Bochs), sync with Bochs - for SGI/Irix SystemV opendir used - for Solaris dirent.h again in sysdeps.h 2002/09/30 - milan - v&V commands added to ndebug, (
) vs. operations - typo fix in configure.ac script 2002/09/28 - Petr (version 0.6.4-beta) - XHDI writing to disk fixed. Previously it was appending the new records at the end of the disk image file so it did not destroy any data but made the disk image larger. Now it's fixed and rewrites real data in the disk image so make sure you have 'XhdiWrite' set to 'No' in your aranym config file if you want to preserve your data intact. 2002/09/28 - Petr (version 0.6.3-beta) - fixed #ifdef NEED_TO_DEBUG_BADLY code - BUS ERROR loops are detected and back trace is displayed (the latter only if fullhistory was enabled at compile time) - display better info when exception occurs (NPC = new PC = the exception handler address, SP = stack pointer) - irritating bus error loops that occur when 68000-only application tries to catch bus error by its own (PureC IDE) should be fixed now. 2002/09/28 - johan (version 0.6.2-beta) - Special handling of vro_cpyfm D=S mode for performance improvement. No loop unrolling yet, and only implemented for 16 bit mode. 2002/09/27 - patrice - acia, ikbd, midi emulation updated. Preliminary joystick support (emulated joystick 0 on IKBD). 2002/09/25 - milan - sync with bochs (4 internal ATA channels) 2002/09/24 - milan - sync with BasiliskII (cleanups, jumps align corrected) 2002/09/24 - patrice (version 0.6.1-beta) - videl: bugfixes, Atari screen centered on host screen, autozoom feature added (with and without integer coefficients). 2002/09/23 - patrice - hostscreen: modified to select the nearest best video mode. - videl: modified to render from any bpp to any bpp, using any screen pitch. 2002/09/20 - patrice - DSP: bit-reversed addressing fixed, host port transfer when threaded fixed use of C++ constructor/destructor for the DSP class. 2002/09/15 - Petr (version 0.6.0-alpha) - major architectural change: SDL_Timer stuff removed, #define USE_TIMERS removed. Now CPU emulation runs in a separate SDL thread and the main thread just loops (waits for 10ms, executes 'invoke200HzInterrupt' and loops back). Advantages: - VIDEL screen redraw runs in the main SDL thread - that should make many host operating systems happier (please report) - immediate reaction to hotkeys (Quit, GUI etc) - same (or even higher) speed as previously (82 kdhrystones on XP 1G7+) TODO: everything that makes use of SDL functions should be moved to the main thread. This includes fVDI (actually hostscreen) and GUI. The GUI could probably simply replace the current main_loop. With fVDI the problem is more complicated. We will probably have to send all fVDI actions from the CPU thread to the main thread using some sort of IPC. 2002/09/12 - Petr (version 0.5.0-beta) - TOS was not ready for large 68040 caches that are provided by JIT compiler. I added a few missing 68040 cache patches that were developed by Douglas originally. - version increased to 0.5.0-beta1 (version 0.4.0 was for working DSP and 0.3.0 for JIT CPU) 2002/09/12 - milan - sigsegv_linux.cpp: set_eflags() - cpuopti.c, compemu_support.cpp: workaround for gcc 3.x - tools/memory.h.patch: for a bit better access to HW space for JIT compiler, unofficial! 2002/09/10 - milan - autoconf 2.53+ needed now - ndebug.cpp, newcpu.cpp: ISO C++ forbids assignment of arrays, so Patrice's patch completed 2002/09/07 - Petr (commiting for milan) - newcpu.cpp - flush_icache(0) is required otherwise JIT does not work 2002/09/05 - milan - DIV8, TEST8 implemented (not tested) - AND8, OR8, ORIMM8 now handle flags 2002/09/01 - milan - some small (not tested) corrections in FPU emulation code (UAE&i386 versions) 2002/08/28 - patrice - DSP: host port read not working with thread, fixed 2002/08/27 - patrice - Thread support for DSP bugfixed. 2002/08/26 - Petr - JIT (actually sigsegv handler) fixed again, better this time. 2002/08/26 - patrice - DSP emulation can be run in its own thread. 2002/08/26 - milan - sigsegv_linux.cpp: CMP8 much better - hardware.cpp: in_handler handled in all HW_SIGSEGV configurations - ata.cpp, ide.cpp: real 32-bit access, word swap added for I/O operations, io write to 0xf00005 handled (error register) - uae_cpu/newcpu.cpp: jump table for distributed dispatcher generated corretcly on little endian platforms now 2002/08/13 - Petr - NF_Name() now returns the number of characters (excluding the trailing '\0') which would have been written to the final string if enough space had been available. 2002/08/12 - Petr - nf_call changed to return a signed 32-bit number (type 'long' in C lang.) - nf_call for invalid NatFeat ID returns an undefined value now. 2002/08/11 - Petr - NatFeats now keep their name and SupervisorRequired flag with them. - NatFeats main dispatcher now checks for user/supervisor mode and throws privilege instruction exception if appropriate. - NatFeats main dispatcher does not copy parameters to local array. NatFeats themselves fetch the parameters with getParameter() call. - final renaming: "natfea" -> "natfeat", "_rcall" -> "_call" - various doc bits found in mailing list stored in src/natfeat/doc folder. It's partially obsolete but I tried to update at least the native.txt. - example of running some basic NatFeats for (not only) PureC stored in src/natfeat/atari_example.c 2002/08/08 - patrice - DSP: CCR-related stuff written, some bugfixes. 2002/08/05 - Petr - NATFEA_ID and NATFEA_RCALL can now be used in User mode as well. Supervisor mode is not required. NatFeats themselves have to throw illegal instruction exception if they require Supervisor mode and are called from User mode. - little clean up in the NatFeats dispatcher. It now detects wrong address and throws proper BUS ERROR. 2002/08/04 - Petr (version 0.3.0b1) - Native Features implemented. The CPU recognizes two new instructions: NATFEA_ID (opcode $7300) and NATFEA_RCALL (opcode $7301). These instructions are privileged (can be executed in supervisor mode only). - Two new basic NatFeats (Native Features) implemented: "NF_NAME" returns the name of "emulator" in a given string buffer. "NF_VERSION" returns the version of "emulator" encoded in long hex number. - XHDI was adapted for NF "XHDI" (still callable also via old EmulOp but that's deprecated and will be removed before release). 2002/08/03 - johan - Native part of fVDI driver updated to work with new API (dependencies on internal fVDI structures removed, parameters passed on the stack). - Some internal fixes and cleanups in the native part of the driver. - New binaries for both the fVDI engine and the m68k part of the driver are needed, and are also checked in. 2002/08/02 - Petr - EmuTOS loading fixed again - it can be any (>0) size now. - EmuTOS loading routine display the date when the EmuTOS was built. - XHDI support moved to separate xhdi.[ch] file and XHDIDriver class. XHReadWrite() implemented. Old DMAread EmulOp is deprecated now. - XHReadWrite() writes to disk only if XdhiWrite switch in config file. - nearly all compile time warnings removed! 2002/08/01 - Petr - EmuTOS image size can be either 256 or 512 kB long - two serious bugs in linux sigsegv handler fixed: OR and MOV. There are more bugs in the ia32 emulated routine, unfortunately. JIT won't work until all of them get fixed. 2002/07/31 - patrice - DSP emulator: Many bugs fixed (end of dsp_*.cpp files for complete changes) 2002/07/31 - Petr - bug in fresh IDE emulation code fixed (thanks Johan and Standa) 2002/07/26 - patrice - dsp_cpu.cpp: lua operation and read_memory fixed - dsp_disasm.cpp: Added missing '\n' in disasm output 2002/07/23 - patrice - ndebug.cpp: Make it gcc-3 friendly. - dsp.cpp: Added mu-law table generator - dsp_disasm.cpp: Changed all output from D(bug()) to fprintf() - yamaha.cpp, dsp_cpu.cpp: Removed useless #include "config.h" 2002/07/23 - milan - support for cdrom under MacOS X ported from Bochs, not tested yet - updated IDE emulation, some error states detected more correctly now ** ARAnyM 0.2.0 released 2002/07/20 - Petr - saving/restoring screen background under SDL GUI fixed - SDL GUI now survives resolution change without a crash but the dialog is not redrawn correctly yet. - hostScreen::update() now always update the mainSurface (the physical one). Updating the logical (when GUI is opened the background) surface is IMHO not required and it also caused problems when updating the screen upon GUI closing. - OS loading changed: first TOS 4.04 is tried and if fails then EmuTOS is tried. If even that fails (which should not since we include EmuTOS in ARAnyM binary distribution now) then a warning and an advice for obtaining the EmuTOS is displayed. - the window mover now displays an advice for pressing the Pause key for opening the GUI. 2002/07/20 - patrice - Dsp: more bugfixes, see end of dsp_[cpu|disasm].cpp file for complete changelog 2002/07/19 - Petr - SDL GUI now stores background to another (cloned) surface. Also fVDI does not draw into the physical video surface when GUI is visible. - GUI Reset option works. - if GUI font8.bmp is not loaded the GUI is not accessible 2002/07/18 - Petr - DSP host code is disabled when DSP_EMULATION is not defined. This was required to get Alt+Ctrl+Del warm boot working again (there must be a bug in current DSP emulation). - trying to enforce releasing the Alt+Ctrl keys after Alt+Ctrl+Esc combo that causes ARAnyM to drop the mouse/keyboard exclusive control. 2002/07/16 - Petr - fixed pretty scary bug in yamaha.cpp. As a direct result PARCP started working reliably. 2002/07/16 - milan - hguide.txt: updated, added section 9 (Checking memory boundary) - hwsp possibility of checking memory boundary corrected - linux_sigsegv.cpp: Added support for MOVSX8, MOVZX8, OR8, MOV8 2002/07/16 - patrice - Host port reworked. More bugfixes and completion of the emulator. DspDebug can be started, it finds the DSP. 2002/07/15 - milan - main.cpp: SDL_Delay on exit increased (for slower machines) - sigsegv_linux.cpp, memory.h, fakeio.cpp: extended sigsegv handler upgraded 2002/07/10 - patrice - I finished nearly all intructions. I also added a disassembler (disabled by default but you can enable it with --enable-dspdisasm) 2002/07/09 - Petr - DSP integrated properly in the autoconfig system. By default it's disabled but you can enable it with --enable-dsp in configure phase. 2002/07/08 - patrice - DSP 56001 emulation started. It is not finished, but I think it has a good shape. I wanted to do this because I would like to be able to run DSP development tools under Aranym, to assemble DSP programs. I used the Motorola DSP56000UM/AD book as documentation. Consider this as v0.000000001 stuff (unstable, bugged, incomplete). 2002/07/03 - milan - JIT compiler: some minor corrections in JIT - sigsegv_linux.cpp, memory.h: new memory access for x86/linux added - without direct check of memory boundary (extended sigsegv handler) 2002/07/01 - STanda - The filename -> 8.3 format transformation adjusted. Now it should handle also the filenames ending with a dot (.). These should be appended with a hash code as an extension. 2002/06/26 - Petr - SDL GUI integrated properly: it is now running in its own SDL thread so it's able to run in parallel with Atari emulation. The input events are still fetched in the Timer thread and are passed to the GUI thread via a couple of global variables (should be reworked to a FIFO buffer). Still needs to fix the screen double buffering... A whole set of dialogs should be designed for ARAnyM now (see dialog.cpp). - TOS loading routine now requires the original TOS 4.04 only - the other patched flavors of TOS 4.04 are not accepted since now on. The prepatched versions made it harder for us to add or remove various patches. Thus we won't support them. - romdiff.cpp does not patch out the RESET instruction anymore. It was patched out on Afterburner040 because that machine didn't really like the RESET. ARAnyM handles reset gracefully so there's no reason to patch it out. - aranym_glue.cpp: added hardware initialization on the RESET instruction. So far only IKBD is initialized (as there were problems with IKBD after reset). 2002/06/24 - Petr - do_get_real_addr() replaced with Atari2HostAddr() in fdc.cpp and audio.cpp - ExitAll()/QuitEmulator() reworked to allow clean exit from debugger even on slow machines (the timer thread must be stopped first before the Atari memory is released). 2002/06/24 - STanda - fvdidrv.*, videl.*, extfs.* cleanup. The memptr usage introduced. There should be no (or at least less) problems with the ia64 compilation. 2002/06/09 - Petr - SDL GUI restores original background (see hostScreen.save_bkg/restore_bkg) - SDL GUI "Quit" works 2002/06/07 - Petr - ScrollLock switches between fullscreen and windowed mode - in window mode you'll get a 'heart beat' - an activity indicator - SDL GUI is enabled by default now (can be disabled with --disable-gui) press Pause key to invoke it. 2002/05/27 - milan - vm_alloc.*: the lastest changes discarded, problems during configure - newcpu.cpp: SDL_mutex for exclusive spcflags handling initialised 2002/05/24 - Petr - as suggested by Heiko I added a complete locking to the virtual IKBD queue. Let's see if it works OK or if the mouse/keyboard is not working properly. 2002/05/22 - STanda - The aranymfs atari sources updated. The MetaDOS part was converted into the gcc compilable code (Makefile created) and the mint .XFS source was added. The binaries (.bz2 packed) was updated with the newly compiled files. You might want to try them to test whether they work as the previous ones. - atari/fvdi/utility/fvdicout: The Ptermres should be now filled with a correct value IMHO. 2002/05/20 - Heiko Achilles - when a mouse movement package is fetched from the ACIA/IKBD buffer this patch puts all movements of the same type, which are currently in the buffer, into one. So the fetching is quicker and there's no noticeable mouse delay anymore. TODO: replace bool inGet with proper semaphores 2002/05/14 - milan - vm_alloc.cpp: better structure, not own OS dependent includes - main.cpp, main_unix.cpp, aranym_glue.cpp, cpu_emulation.h: some debug outputs added for JIT compiler a small reform in memory allocation one stupid bug (of course, I'm the author) found in QuitEmulator (vm_release(nil)) - JIT compiler: one debug output added for segfault handler of JIT compiler 2002/05/12 - milan (record in ChangeLog by Petr) - ata.cpp: updated to bochs' latest source (supported SEEK and something else) 2002/05/10 - milan (record in ChangeLog by Petr) - input.cpp: hack for remounting CD on Ctrl+SysRq, needs to be removed! - gencpu.cpp: lotsa weird changes, probably related to distributed dispatcher - newcpu.cpp: minor distributed dispatcher related changes - JIT compiler: one segfault fixed 2002/04/29 - Petr - ErrorAlert() has been replaced with panicbug() as I needed sprintf like parameter parsing. Now all file errors in main() report also the problematic filename. 2002/04/25 - STanda - The fvdicout.app added to atari/fvdi/utility. This is the Johan'si bconout.gtp replacement. It is built using the FreeMiNT CVS tree and with heavy utilization of the TosWin2 vt52 emulation sources. It needed only a slide changes in TosWin2 sources. This should not be the final solution. The real one would by to implement the vt52 emulation into the fVDI engine itself which is on the TODO list in the fVDI remainings. Using this I don't have problems here with TOS applications here. It needs to be started after the VDI initialization (e.g. from the desktop). There might be some code to initialize the VDI later in it. - AraEther made compilable. nearly no code check or test done. 2002/04/21 - milan - header files reform - distributed dispatcher rewroted - JIT compiler integrated ** Version 0.1.7 2002/04/21 - milan - pre-support of FreeBSD 2002/04/21 - Petr - ExtFs: Dpathconf(DP_XATTR) disabled altogether. It was causing problems in Thing (Thing didn't refresh source window of 'move' operation). - $7135 illegal insn (debug print) was not printing until LF was sent. fflush added. - SDL GUI, taken from hatari. Not working yet, but soon will be. - atari sound driver (from Didier) included in atari/sound CVS folder. - EmuTOS loading: now checked for proper file length. 2002/04/20 - Petr - audio.cpp - wrong memset() addr fixed. No more crashes, sound works like a charm. 2002/04/20 - STanda - PurePascal and its debugger snapshot added. - ExtFs: Small general code cleanup 2002/04/19 - Didier MEQUIGNON & Petr - audio driver: Atari side uses ZMAGXSND.PRG, a slightly modified MagiCMac sound driver. The communication is based on illegal instruction $712c and IRQ 5 used as a callback from host to Atari. Aniplayer is supposed to play sound nicely but so far it's crashing on me (Petr). 2002/04/19 - STanda & Petr - ExtFs: Petr has discovered that ExtFs:Fxattr should probably _not_ take the DTA structure. This bug was originating in the Julian Reschke's cookfs01 driver sources that I started to program from (he uses DTA in the Fxattr signature, although he never uses this argument - most probably cut&paste bug). Now the Fxattr works properly which means: * The Dpathconf() DP_XATTR return value works also good for Thing to refresh the destination window. The access time and originating time was masked out here to let it work for more hostfs filesystem types properly. It is subject to change. The hostfs mounted to the particular hostfs path is to be investigated whether it supports the features and the flags should be set appropriately. * QED save and load problems fixed. Here it seems that the most ExtFs MetaDOS problems on Linux host OS are gone. Please test heavily. Thanks goes to Petr and his hacker's history! ;) - ExtFs namespace method/function recognition doesn't work under FreeMiNT because mintbind.h are only macros..... The names were changed to have the ExtFs suffix. 2002/04/18 - STanda - ExtFs bug in Fsnext fixed. If the path for Fsfirst doesn't contain wildcards then many applications don't call the Fsnext. We need an array of paths for mutiple Fsfirst/Fsnext called with a different DTA buffer pointer. We also need to free the paths if they are not used any more (Fsnext with -49 or Fsfirst without wildcards and 0). If the path was freed from the array then we return -49 from Fsnext now. This fix causes LZHSHELL.APP be able to extract an archive to the MetaDOS driven filesystem. - The Patrice's patch adjusted to be only namespace distiguished calls. No _emu suffix. Needs to be tried to compile under FreeMiNT. 2002/04/13 - Petr - AranymFS: we can't rely on error codes returned by hostfs functions. For example TOS Fcreate() returns -34 if the path to file does not exist. The fix I put there helps ST-Zip to unpack folders onto host fs. - AranymFS: Dpathconf(DP_XATTR) disabled (because I didn't know the correct parameter). Suddenly Thing is able to refresh the destination window correctly. - new experimental spec file for building RPM package. - new TOS patch for redirecting printer Xconout vector to host console - new function "Reboot" that does hard restart of the machine. ** Version 0.1.6 2002/04/12 - Petr - newcpu.cpp: NMI will break out of the STOP jail. From user point of view - if EmuTOS happens to crash you'll be able to quit ARAnyM now. - newcpu.cpp: STOPped CPU did not generate 200 Hz system interrupt when compiled with --disable-sdltimer. Fixed. ** Version 0.1.5 2002/04/10 - Petr - fixed bug in Reset insn emulation that caused EmuTOS crash - uae_cpu/spcflags.h cleaned up. NMI flag introduced. I also added the MFP|VBL|NMI into periodic flags check (wondering how it could work before). - clean Quit implemented. No more killed SDL or X threads. Using NMI like on real machine :-) 2002/04/10 - milan - IDE: synced with Bochs CVS (concat_image_t(), not used in ARAnyM now, but who knows) - CPU: instr. Reset calls now AtariReset() cleaning in JIT integration synced with BasiliskII CVS (DOTRACE x STOP) ** Version 0.1.4 2002/04/09 - Petr - fixed my own stupid bug in acsifdc.cpp that broke floppy support. Thanks Martin for reporting it. 2002/04/04 - STanda - MetaDOS Fopen implementation shoudn't be able to open a directory. Fixed due to the Olivier Landemarre and the CharView author who provided a source of the application that had this problem. The EasyGEM library tries to open directory entries using Fopen. Thanks for EasyGEM beeing open-source. - Newly created files specified with all letters in upper case will be automatically converted to lowercase ones. This follows a small limitation that there is no way to create e.g. PC.PRG on halfsensitive fs (it will be pc.prg... but the Pc.prg and any other combination would work). This can be made optional. - m68k part of the MetaDOS driver was pretty printed and converted to correct (DOS mode newlines). No need to update the binary here. - PureC (PC.PRG) patch to let it working on MetaDOS driven filesystem (src/atari/tools/pcpatch.*). 2002/04/03 - milan - sync with BailiskII-JIT (25.3.2002) 2002/04/02 - Patrice Mandin & milan - pre-patched for Atari MiNT :-) 2002/04/02 - Petr - MFP and ACIA/FDC/ATA updated to be ready for major MFP rewrite. ** Version 0.1.3 - don't forget to update your Atari fVDI driver 2002/03/27 - STanda - extfs.cpp/transformFileName rewritten nearly from scratch. Now it should be more readable source than before. A simple findFirst function fix: no error on the stat() failure. E.g. an invalid symbolic link on the host fs. - fVDI driver: floating Videoram bug fixed. 2002/03/26 - milan - MMU returns logical address during bus error - IEEE FPU is default only for i386 2002/03/26 - Petr - transformFileName in extfs.cpp fixed three times. ARAnyM will not crash when it encounters a long filename. ST-Zip will not crash when browsing MetaDOS drive. Maybe that PureC works now as well? 2002/03/22 - Petr - IEEE FPU emulation fixed: 68040 specific insn (like FSMOVE) don't throw illegal opcode exception anymore. - IEEE FPU is now the default FPU emulation in configure phase. 2002/03/21 - milan & Petr - forgot to set the faulty address when invoking BUS ERROR from hardware registers access. - Exception 2 panicbug displays the faulty address now. - wrong bus error stack frame format 7 fixed. 2002/03/20 - Petr - MFP and RTC tweaking to get Linux-m68k running 2002/03/15 - milan - Exception() is called only from main loop, not from trans. function. 2002/03/14 - Olivier Landemarre & STanda - ExtFs: ugly bug in flags2st fixed. This might affect some problems we had with the MetaDOS driver, but unfortunatelly PureC still refuses to compile a project. Preprocessor flag to use creat() instead of open() in Fcreate implementation... no improvement here though (just suggestion from Olivier). 2002/03/12 - milan - Irix among supported platforms 2002/03/11 - milan - MMU is back, based on Wez Furlong's patch (UAE) 2002/03/06 - STanda - ExtFs: xfs_getname implemented. The Pure C now finds the project file, but it crashes on assembler compilation. The ExtFs::cookie2Pathname() now uses getHostFileName to be able to work case insensitively. 2002/03/05 - milan - memptr for addressing in Atari memory out of uae_cpu - sync with Bochs CVS 2002/03/02 11:31:18 GMT o ReadCDSector() (for win32 ASPI) returns 1 if target status is okay o win32 ASPI version of insert_cdrom() checks media status using ReadCDSector() - gencpu.c patched for MMU (based on Wez Furlong's MMU patch 0.8.20.2 for UAE) 2002/03/03 - Gwenole Beauchesne & milan - fpu_x86 debug mode corrected 2002/02/28 - milan - get_i*_1 moved to newcpu.cpp - probably last sync with aranym2 (unofficial CVS) before MMU and pre-JIT support (new gencpu.c and subdirectory compiler) 2002/02/27 - milan - corrections of types in hostscreen.h and memory.h (using uintptr instead of uae_u32 with Host addressing) 2002/02/26 - milan - Native Feature instruction framework added - address validation in CPU interface - exceptions.h removed, interface moved to CPU interface, include file in sysdeps.h - error handling of CD-ROM eject on Linux 2002/02/25 - milan - fp_extended, fp_single, fp_double -> fpu_extended, fpu_single, fpu_double - spcflags handling rewritten - original PC handling, must be converted to ARAnyM's after stabilisation (slower) - exception stack handling is for 68040 now - table68k based on JIT BasiliskII - EmulOp (0x71XX) is handled as usual instruction 2002/02/25 - Petr - web updated (Ctirad wrote new About) - simplified most of the presentation.xlst but it's still not good enough. - limited the text size to 600 pixels for more pleasant reading on wide screens 2002/02/23 - Petr - separated input related code from main.cpp into input.cpp - all open() functions have "O_BINARY" flag appended so that Cygwin binaries won't mess CRLF in files (cdrom.cpp, extfs.cpp, fdc.cpp) ** Version 0.0.22 so you can see new IDE code is there. 2002/02/21 - milan & Petr - cdrom.cpp sync with Bochs (CD-ROM eject supported) - ata.cpp sync with Bochs (32-bit data access supported) - CD-ROM eject in Linux added - hardware.cpp + ide.cpp updated for 32-bit IDE data access. It did not work so it is disabled in ide.cpp for now. 2002/02/20 - Petr - config file is created with proper default values - IDE devices are disabled by default - CONFGUI obsolete #ifdef stuff removed from parameters.cpp 2002/02/20 - milan - new FPU (based on JIT BasiliskII) 2002/02/19 - milan - src/ <-> CPU interaction cleaned - memory access cleaned 2002/02/18 - milan - floating VideoRAM 2002/02/18 - Olivier Landemarre & STanda - Compilation problem under Cygwin fixed. In extfs.c for Cygwin MFSNAMELEN is undefined should replace by buf.f_namelen. The condition was added due to the BSD systems so I've changed it to if OS_*bsd then... ** ARAnyM 0.0.21 released 2002/02/12 - Petr - IDE emulation adapted for Falcon: $f00039 is recognized but ignored. 2002/02/12 - milan & Thomas Huth - ARAnyM support only 68040 only. Other CPUs aren't generated 2002/02/11 - milan - synced with Bochs IDE - new version of CPU interface 2002/02/01 - Frank Naumann & Petr & milan - PAGE_MASK renamed on ARAM_PAGE_MASK (ARAnym Memory PAGE_MASK), PAGE_MASK is defined in /usr/include/machine/param.h on OpenBSD - PAGE_CHECK renamed on ARAM_PAGE_CHECK - ndebug doesn't use ioctl() now for any switching tty's setting - support for statfs on [Net|Open]BSD 2002/02/01 - Petr - fixed long-standing bug in ATA.cpp that made ARAnyM stuck when no IDE disk drive was found (or defined in config). 2002/02/01 - milan - the 1st step of rewriting CPU/Memory <-> HW interface, look at cpu_emulation.h 2002/02/01 - STanda - MiNT aranym.xfs added. This is the preliminary version working with HostOS root in u:\nativefs just like stonx.xfs does. The mapping to other folders is possible and is going to be done later. There are several unimplemented functions there, but the basic functionality is implemented. The m68k part is available only as a binary in src/atari/aranymfs. The sources were grabbed from the STonX directly and hacked just to work and needs cleaning. The whole ExtFs should be rearchitectured. It was designed for MetaDOS and now it is getting very, very unclean. Better not to look into the code. I will rewrite this nearly from scratch during the planed shift to a portable library. CAUTION: There might be crude bugs in it, so please test it on some not very essential files on the mounted host filesystem. 2002/01/30 - Petr - emul_op.cpp: OP_DEBUGUTIL made more secure (wrong addr will not crash aranym) 2002/01/29 - Petr - two EmuTOS screenshots added - unsupported Windows binary available in download section ** ARAnyM 0.0.20 released 2002/01/28 - Petr - tools/clocky.prg.bz2 updated - the hotkey combo is back at LShift+RShift (the Alt+LShift collided with Thing). - updated aranymrc.example - updated most documentation and web pages 2002/01/27 - Petr - XHDI dispatch added to emul_op - XHGetCapacity() implemented - DMAread() improved 2002/01/26 - STanda - extfs.[ch]* cleanup from non needed arguments 2002/01/24 - Olivier & Petr - on Windows the host operations (fVDI, aranymfs) block the timer thread so we have to call the invoke200HzInterrupt() manually as soon as the host operations finish. - download.html offers nightly snapshots now. 2002/01/18 - milan - FixedSizeFastRAM fixed - no debugger fixed - install part of Makefile fixed 2002/01/17 - milan - cleaning in ./src - memory access etc. 2002/01/15 - Petr - you can undefine USE_GETTICKS in main.cpp to replace SDL_GetTicks() with gettimeofday(). This might help on platforms where SDL_GetTicks() is slowed down by aranymfs or fVDI driver. 2002/01/13 - STanda - fVDI driver patches for expandArea in 24 and 32bit depth. Also the 1, 2, 4 bit depth modes were made available. There are still bugs in the expandArea Mem->Mem. Also blits are word aligned when they shoud not be. 2002/01/13 - Petr - DMAread() added to emul_op interface (used in current EmuTOS) - faq.xml updated by Ctirad - configure.in: SDLTIMER and PAGE_CHECK are enabled by default. 2002/01/11 - Olivier Landemarre & Petr - fixed bug in time sync (signed long is bad for GetTicks()) - fixed bug in TimerC disabling (wrong bit mask for &) 2002/01/10 - Rodolphe Pineau & milan - vm_acquire_fixed corrected, configure script also 2002/01/09 - Rodolphe Pineau & milan - 1st step for SGI/Irix - aranymfs more portable (Solaris supported now also) - corrections in configure script, memory allocation, memory access 2002/01/08 - STanda - The aranymfs config file setting finished (thanks to Petr) - fVDI driver doesn't destroy palette setting on resolution change The SDL_SetVideoMode clears the palette setting -> the palette is stored and restored after change (hostscreen.cpp/setWindowSize()) - the driver has also correct 8bit inverse color handling. - up and running 2002/01/08 - Petr - the config file format and location has changed (now at $HOME/.aranym/config) - most global config variables moved to bx_options struct - NVRAM (formerly CMOS) file is stored in the aranym config folder as well now. - fixed many bugs in the parameters.cpp code. It should be quite usable now. 2002/01/07 - Petr [ ARANYM_0_0_17 tag ] - NVRAM RTC getting current year fixed. 2002/01/07 - Patrice Mandin & STanda - Patrice: I did a simple patch for the vdi color mapping. The following ugly piece of code removed. #ifdef __PUREC__ short vdi2pix[1]; /* Of course really 256... */ #else short vdi2pix[0]; /* Of course really 256... */ #endif 2002/01/05 - Petr - floppy geometry detection fixed. It could never work before! 2002/01/03 - Petr - Blitter now calls Do_Blit() on reading status register only. Doesn't seem to fix the errors during Bconout, though. - Xconout redirected to host console using poor VT52 emulation. 2002/01/03 - STanda - fVDI driver: the resolution is changed during the virtual workstation creation. Copyright notes updated (synchronized with Johan's). 2001/12/30 - Petr - Johan increased PAGE of PAGE_CHECK to 1MB (for nonMMU mode). This greatly improved the performance - 36k5 dhry on my machine now. For the MMU040 the PAGE is 4kB. 2001/12/29 - Petr (tagged as ARANYM_0_0_16) - Johan Klockars' PAGE_CHECK (dividing address space into 4k blocks) added. It produces slightly better dhrystones than 0.0.14 (34k2 vs 33k5) but real-life gcc benchmark didn't show any speed up. Perhaps this is a great idea for the MMU040 implementation but without MMU040 it doesn't help much. - parameters.cpp and main.cpp cleaned up a bit. 2001/12/27 - Petr (tagged as ARANYM_0_0_15) - FastRAM can be fixed size ("./configure --enable-fastram=X") - that makes the check_ram_boundary() even faster (comparing with constant instead of fetching the value of a global variable). 35k2 dhry now (this is probably the fastest possible solution before splitting the RAM into 4k blocks as Johan suggested. - TOS 4.04 patched to enable FastRAM check. - fullmmu is disabled by default now. 2001/12/26 - Petr (tagged as ARANYM_0_0_14) - handling of MFP interrupts moved from CPU to MFP module - checking for VBL and MFP joined in one 'if' - another nice speedup (33k5 now) 2001/12/25 - Petr (tagged as ARANYM_0_0_13) - ACIA IRQs are not buffered (like TimerC IRQs are) - it was causing bad keyboard&mouse lockups. Apparently TOS can read several scancodes from IKBD in one IRQ and our poor implementation fits that feature :-) - TimerC interrupt fired only if enabled in MFP IRQ enable reg. 2001/12/22 - Petr (tagged as ARANYM_0_0_12) - most video related parameters moved to bx_options.video struct - added "--refresh " cmdline option. Default value is 2 = 50/2 Hz screen refresh. Allowed values are 1 - 200 (50Hz - 1/4 Hz) - check_ram_boundary() allows direct access to physical videoram - check_ram_boundary() now makes FastRAM equally fast as ST-RAM (30k5) 2001/12/21 - STanda - RH gcc 2.96.98 preprocessor bug workaround: The remarks in multiline macros are before the linetrailing backslash. 2001/12/20 - Petr - cleaned up newcpu.cpp do_specialties() - STOP instruction handling really works and gives CPU time slices back to host OS! 2001/12/19 - Petr - check_ram_boundary() cleaner now - no default value for 'write' parameter and the 'size' parameter contains the natural value - 1 for byte access, 2 for a word access and 4 for a long (doubleword) access. - you can define NO_MEMORY_CHECK in memory.h to see the original speed of old unsafe, often crashing ARAnyM (Dhry: 27k -> 31k) 2001/12/17 - Petr - SDL Timers are back! --enable-sdltimer - VBL timer runs at precise 50 Hz now - VIDEL screen refresh at fixed 25 Hz now 2001/12/16 - Petr - check_ram_boundary() takes an additional parameter that sets the size of memory access. Now finally all memory accesses are checked and nothing can escape from ARAnyM allocated memory. - acceleration for blitter configurable: --enable-blitmemmove turns the memmove acceleration on and --enable-blitsdlblit allows the SDL_blitsurface to be used. - check memory by array experimental code removed altogether. It was not faster unfortunately and it didn't allow the size check that has just been added to check_ram_boundary. 2001/12/11 - STanda - fVDI driver patch to not disable the DEBUG. There was the debug.h included from another .h file which wasn't correct. Some Johan's methods were moved to the .cpp file. - framebuffer driver detection to force the fullscreen mode and therefore no mouse pointer redraw problems when using Clocky(TM). The mouse cursor was trying to leave the window (actualy the screen surface in fb, which was causing troubles) - The SDL_WarpMouse is now called after the HWInit() (actualy SDL_SetVideoMode) where doesn't cause floating point exceptions and aranym crashes in fbcon. 2001/12/07 - Petr - first two long words (addresses 0..7) are readonly now like on real Atari. Thanks to Patrice for forcing us to fix it :-) ** ARAnyM 0.0.11 released 2001/12/05 - Petr - "-N" or "--nomouse" added to cmdline options. It basically disables the auto mouse grabbing at startup. Suitable especially for debugging. - one more illegal/emul_op instruction enabled: 0x7135 can be used for debug prints - especially for EmuTOS debugging. - CMOS/NVRAM now starts with English/UK/USA keyboard layout. Thus you get the right keys even without Clocky on most regular PC keyboards. 2001/12/05 - milan - "initialization" of 0-7 moved to reset routine, more secure solution - patched ins. BFINS (uae 0.8.19) - sync with my "Pragues versions" - buffer in newm68k_disasm cleared after every ShowEA/fprintf, disasm in ndebug corrected 2001/12/03 - Olivier Landemarre & STanda - ExtFs: Frename fix. 2001/12/02 - Petr - keyboard conversion code rewritten again. As the SDL returns different scancodes for same keys under different OSes I created a heuristic analysis of pressed keys that tries to detect the offset between the SDL scancode and the physical one. Tested under framebuffer and X11 on Linux. 2001/11/30 - Johan Klockars && STanda - fVDI: improved and made fit into fVDI CVS repository directory structure. General speedup of line and polygon drawing. New copy of m68k part sources. Since now you should use the aranym.sys.bz2 m68k binary along with current aranym CVS sources. The old m68k part source will be removed later. 2001/11/28 - Petr - new keyboard conversion code: now based on pure scancodes. Clocky for Aranym now distributed with English PC101 keyboard. With Clocky loaded you have real WYSIWYG. Feel free to submit other .KBD files for Clocky (French, German,..?) 2001/11/25 - Petr - new FastRAM.PRG with automatic size detection and _FRB buffer. 2001/11/21 - milan - cleanning in includes 2001/11/21 - Olivier Landemarre & milan - problems with new Cygwin corrected - FullScreen tag in ARANYMRC 2001/11/20 - milan - small correction in ATCs (MMU), not enough, grr 2001/11/20 - Francois LE COAT & milan - better support for Solaris 2001/11/20 - Olivier Landemarre & milan - the 2nd step for Cygwin 2001/11/19 - Petr - MD5 should be OK on big endian machines (Sparc) - new TOS 4.04 patches - cleaned up a lot thanks to the disassembly made by Patrice. Nemesis init routines removed. Reboot code not moved to $600. Movem patch removed. The whole additional code moved behind the TOS end so French and other RSCs are OK now. You are encouraged to drop the previously patched TOS versions and to use just plain original TOS 4.04. - parallel port emulation added. This is the lowelevel stuff - Yamaha and MFP are mapped to IBM EPP parallel port. Several things are hardcoded and the whole stuff is disabled by default for now. But when I tested it PARCP ran quite well! 2001/11/02 - STanda - fVDI: The driver handles some bitplane functionality. It works somehow, but it still has many bug in this mode. The color palette is correct only if booted in the same color depth. 2001/11/14 - Petr - corrected XML->HTML compilation - made the IDE f00039 alternate status register same as the main IDE status reg. 2001/11/13 - milan - web/Makefile corrected - saxon.jar not in CVS now (downloaded with wget from ftp.sophics.cz/pub/aranym/tools) - gemram removed from Makefile.in 2001/11/13 - Olivier Landemarre & milan - support for Cygwin 2001/11/11 - Petr - during configure you can "--enable-directcolor" which is the infamous TOS and Aranym patch for direct truecolor with VIDEL. I made it configurable in compile time to simplify the memory boundary checks in uae-cpu/memory.h. The default is no direct truecolor (it's a hack, after all). - during configure you can "--enable-boundaryarray" which is a different method for checking the memory boundaries. It's based on an array of bool flags - each bool represents 1 MB of memory. There are separate tables for reading and writting because you can't write to the ROM area. Advantages: o FastRAM is finally no slower than ST-RAM o ST-RAM and FastRAM size can be configured in runtime very easily o you can even simulate memory windows (FastRAM SIMM banks, e.g.) o regular memory access gets a higher priority over HW reg access o the code might be faster than the original 5 comparisons Disadvantages: o the whole megabyte of ROM area is readable (so including 0xe8-0xefffff) o the code might be slower than the original due to indexing in 4 kB array - a change in IKBD emulation that fixes the problem with slow mouse motion in Videlity Config prg. 2001/11/07 - milan - new correction in mmu_decode_addr, I suppose still not enough 2001/11/06 - milan - corrections of PFLUSH, PTEST (I found my old corrections on hd, grr, 2 months old, grr) - MMU address decoding works now (after set_mmu Desktop runs, sometimes), but still MiNT (and not only MiNT) gives Bus error/illegal instruction, I know about one bug, I'll correct it later. - mmusetup.cnf example added to reposity - make install and Debian package corrected - the 1st step for Solaris 2001/11/06 - Petr - TOS was patched with WinX by a mistake. Fixed. GEMRAM 1.0 from Aratools does not work correctly as the ROM area is not writeable. Use real GEMRAM instead. 2001/11/05 - STanda - VIDEL: Since now we are using 8bit SDL surface for all VIDEL depths less than 16. The blitting routines were optimalized (the destBPP checks are done outside the main blit loop). The #define SUPPORT_MULTIPLEDESTBPP enabled to let support VIDEL definitely 8, 16, 24 and 32 bit destination depths. 2001/11/02 - STanda - fVDI: The driver now normally initializes to 16bit when no mode option is provided in the fvdi.sys. The screen size remains the same as before fvdi.prg initialization then. 2001/11/01 - Petr - mouse behaviour much improved. Automatic grab is configurable now. You can ungrab the mouse by Alt+Ctrl+Esc and grab it back by left mouse click. - new command line option "--save" will save the config file with actual values. 2001/11/01 - STanda - fVDI: The 16,24 and 32bit modes works now. 2001/10/31 - STanda - fVDI: The resolution change works now with the current driver. Do not try to compile the m68k part, it's just full of hacks, but it works for me. Just use the binary from CVS. The only useable is the 16bpp in any resolution in X11. I didn't try it in framebuffer or so. 2001/10/30 - STanda - The HostScreen support for 8,16,24 and 32 BPP finished. Many optimalizations done in getting the switches out from loops. There should be some speedup, but this I can't see on my computer and I didn't even try to make any benchmarks. 2001/10/29 - Petr - --floppy added to the command line options - --rom removed - EmuTOS= in the config file. EmuTOS gets a higher priority over the TOS. - updated aranymrc.example 2001/10/29 - milan - ARAnyM can be used now without support of debugger (--enable-debug=no) - ndebug can be activated now also if you send SIGINT to ARAnyM (and that's why it cannot cooperate with cxmon) - ndebug is now default debugger - support for gmake - --config FILE command line option added - the command line options are scanned for version/help/config before parsing of a configuration file 2001/10/26 - milan - support for instruction history now also in ndebug - small change in m68k_run_1 2001/10/25 - Petr - when the aranym catches segmentation fault it releases mouse and keyboard and shows last 20 instructions prior the segfaulting instruction (only if compiled with --enable-fullhistory). - InitROM() asks for 512 kB long file (on the net there are just 256 kB ROM images). - Floppy stuff moved to fdc. Automatic mounting - first read/write with fallback to read only. Media Change trick prepared but disabled for now because the floppy does not read past 499 sector (try e.g. Diskus Read Test). Dunno what's wrong. Wonder if the floppy ever worked correctly? 2001/10/24 - STanda - fVDI: Essential bugfixes added. Now the driver works properly except for the bugs in the fVDI engine. These are discussed with the fVDI author. The lines with a negative y coordinate are drawn properly now. 2001/10/23 - STanda - Screenshot added to the website. - fVDI: Mouse Is not hidden at the right and bottom screen edge. Is colorized properly. The shape's hotspot shift implemented. Shouldn't crash on higher resolutions than 640x400. Put pixel fixed to take the pattern in mind. The lineClipping fixed. The lines that starts and ends out of the screen are not drawn due to the fVDI.PRG beta engine.. the beta crashes sometimes too) The v0.95 works quite well, but with display bugs like no pictures in ST-Guide, wrong colors of Thing's keyboard cursor. - the hardcoded screen resolution changed to the hostScreens one in mouseOut handling. 2001/10/19 - STanda - fVDI: The driver updated to work with FVDI.PRG beta. This beta enables e.g. the monochrome images in ST-Guide and fixes many bugs. There is still a bug in new line clipping, but I just don't have time to fix it now. I know exactly what is the problem. 2001/10/18 - Petr - MD5 class added - InitROM() detects both our ABTOS and the original TOS 4.04. - InitROM() patches TOS 4.04 2001/10/17 - STanda - README The sophics.cz replaced by atari.org for http access. The ftp and email addresses was left. (I don't know wheter aranym@atari.org works and the ftp must stay @sophics, the absolute path problems) - ExtFs: Small bug fix. The Fsfirst&next returns the . and .. dirs too. (according to Julian Reschke's advice) - Tools: The changes that were made and uploaded to Petr's ftp are in CVS now The README was modified a bit. 2001/10/16 - STanda - fVDI: The segfault bug in gfxLineColor removed. - VIDEL: The 16, 24 and 32 destBpp are supported when #define SUPPORT_MULTIPLEDESTBPP in videl.cpp (the SDL surface depth setting is in hostscreen.cpp). 2001/10/16 - milan - support for BasiliskII's monitor cxmon - aranymrc now supports FastRAM's size. 2001/10/16 - STanda - fVDI: The driver should be working now in TC (I finally got the Thing executed and looking correctly) 2001/10/09 - milan - some changes in memory allocation, now support for malloc on dummy platforms 2001/10/08 - STanda - fVDI: the blitting works on destination 16bpp (still no shadow buffer used). 2001/10/08 - STanda - ALT+PrintScreen generates a snapshot file using the SDL_SaveBMP. - Host OS dependent objects moved to the host.cpp(h) and aranym specific objects like ExtFs and FVDIDrv moved to araobjs.cpp(h) - general cleanup of unused variables (fdc.cpp) - the WEB pages updated 2001/10/02 - milan - the first "public" version of "ndebug", some modes still disabled - platform's independent memory allocation, if ARAnyM doesn't know better 2001/10/02 - Petr - ROM file reading back in main.cpp - TTRAM renamed to FastRAM everywhere - --ttram renamed to --fastram, -T renamed to -F - --grab_mouse switch removed - added 'cookie_MCH' config option, it holds hex long value - maxInnerCounter in main.cpp should be tuned to your CPU speed. The lower your CPU is the lower the value should be. 2001/10/02 - STanda - fVDI: blitArea screen2screen & mem2screen (TC) works now. - fVDI, VIDEL: bitplane to chunky conversion is move into the HostScreen inline - should cause no performace penalty 2001/10/01 - STanda - fVDI: drawLine supports the logical operations now. 2001/09/25 - milan - cleaning of memory allocation 2001/09/21 [ARAnyM 0.0.8] - Petr - in a fVDI session (when VIDEL rendering is disabled) if VIDEL VideoRAM address is changed the VIDEL rendering is enabled again. This is essential for example when you reset the Atari machine (you want to see the Fuji logo, don't you? :) - MFP TimerC emulation simplified - no more double TimerC interrupts as we are now calling the invoke200HzInterrupt each 5 milliseconds. - hardware.cpp helper functions removed. Now modules call their public functions directly. It's better readable and faster this way, I think. 2001/09/20 - STanda - fVDI: Off by one bug fixed in fillArea. - fVDI: Separate functions for transparent and opaque background. gfxPrimitives methods moved to the HostScreen. Several methods made inline. fVDI driver Shouldn't cause BUS ERROR now. 2001/09/20 - Petr - fixed very annoying bug in direct_tc mode (no more segfaults at $e08ba8 I hope!) - mouse code for host-client transformation is now conditional (only when not running in fullscreen). 2001/09/20 - STanda - The fVDI driver update: colors work correctly, expandArea implemented to display icons and texts, putPixel speedup. Now it seems pretty fast when DEBUG is 0 ;) - gfxprimitives cleanup 2001/09/19 - Petr - TT-RAM (or FastRAM) size entered on command line (--ttram) is in MB now. - new .aranymrc option named "FastRAM", acts as the --tram switch. - first release of aratools.tgz, available at ftp.sophics.cz/pub/aranym. FastRAM (or TT-RAM?) can be anything from 0 to about 112 MB (then it crashes, I suspect it's due to the weird Milan's virtual memory management). 2001/09/18 - Petr - keys remapped: Atari Help is on the F11 host key, Atari Undo is on F12 key. Keys PageUp/PageDown are mapped to Atari combo Shift+ArrowUp/Down which should work in most GEM programs (handy stuff, you get used to it fairly quickly). - mouse behavior changed: first, it's grabbed automatically and centered on standard screen size (640x480). Second, with special tool support (right now modified Clocky - you find it in ftp.sophics.cz/pub/aranym) you are able to move the mouse out of the Atari aranym window. Works just like in vmware. Pity it has hardcoded GEM screen size right now. Needs to be fixed - made more flexible. - ARADATA I/O registers are ready to support arbitrary FastRAM size and automatic StandaFS config.sys updating, I just need to write the tools for that. 2001/09/11 [ARAnyM 0.0.7] - Petr - real hard fight with Aniplayer. I found that it checks whether there's a $CAFEFADE number at $F4000014. This check was killing aranym since my check_ram_boundary() was broken (due to a number of stupid bugs). Anyway, this CAFEFADE signals that there can be a hardware located at that address already (it is flash ROM of Centurbo2 according to Didier) and that is a bad sign for us since we wanted to have the host videoram there. 2001/09/10 [ARAnyM 0.0.6] - Petr - proper check_ram_boundary in memory.h. Has to be always enabled, otherwise programs like e.g. Aniplayer can kill the whole aranym.. FastRAM works again (still fixed to 32 MB). - SDL_Timer is not used anymore. CPU now checks once in a while (currently each 100 m68k instructions) whether it's time to emulate an interrupt. The original behavior with timers may be enabled with -DUSE_TIMERS. 2001/09/09 - Petr - direct TrueColor works again - clicking in fullscreen X11 works again (generally mouse grabbing works again) - disabled the shit in main_unix.cpp (the memory management) - fixed a few little bugs 2001/09/04 - Petr - milan's port of ata.cpp and cdrom.cpp from Bochs v1.2 now enables direct access to CD-ROM! Use "IsCDROM = Yes" in your [IDE1] section of aranym conf file. 2001/09/01 - milan - switch for enabling full opcode's history for debugger 2001/08/31 - milan - other small corrections for MMU - memory access now a bit quicker 2001/08/29 - milan - stupid buggy preversion of TV conf. GUI aranymrc, needs to rewrite in better form, something as powertweak's text mode conf. Output in aranymtest.rc file. Also needed to find problem with size of strings (buffer overflow). - directive DebugOnStart from ARANYMRC changed to Bool_Tag - patched stupid mistake by entry of debugger (Alt x Alt+Pause) - some small corrections for MMU - newm68k_disasm hasn't any problem with memory addressing now (set/longjmp problem) 2001/08/29 - STanda - VIDEL got the doRender flag with setter setRendering(). The host_colors_uptodate variable name was changed to hostColorsSync. - HostScreen got the doUpdate flag cleared upon initialization if the HWSURFACE was created. - fVDIDriver got first version of drawLine and fillArea (thanks to SDL_gfxPrimitives). 2001/08/20 - milan - support for autodetection of a real disk's geometry in Linux, also for createdisk.sh's disks, but new version of parameters.cpp needs reorganization in IDEx part - patched ins. SBCD, ABCD, NBCD (uae 0.8.17), BDcc, Scc in table68k patched - UAE FPU as default FPU (now better than i386 opt!) - devdist in Makefile 2001/08/16 - Petr - config file taken from PARCP. Feel free to extend the global_conf struct in parameters.cpp with more options. 2001/08/15 - STanda - the videl.cpp ST compatible color palette handling added (thanks to Ctirad) 2001/08/13 - milan - bindist in Makefile - aranymrc example - IDE x's settings from aranymrc file 2001/08/10 - milan - real addressing now working correct - the first step for reintegration of BasiliskII's CPU API - Makefile depends repaired - new sync with BasiliskII (CVS 24.7.2001) - memory allocation back in main_unix.cpp - better for portability of real addressing, also ROM reading back there, not only POSIX, we have also non-POSIX OS's 2001/08/09 - Petr - added ata-new.cpp and cdrom.cpp from Bochs. Compilable but don't work yet (dunno why). 2001/08/08 - STanda - no atexit crash ( atexit(ExitAll) called ) - numblock key mapping fixed. (/,*,-,+ keys fixed) - bitplane to chunky conversion speedup (enrolling the conversion loop etc.) 2001/07/24 - Petr - portable stuff moved from Unix folder up to the main.cpp (should be cleaned up) - bx_options moved from ata.cpp to parameters and should become global structure for aranym options - floppy is not inserted automatically upon start - this is because my machine does not have a floppy connected and it caused aranym to hang. Should be a command line parameter like -floppy or something. 2001/07/20 - milan - signals & pthread removed, now only SDL needs pthread - mmu_op patched, setjmp/longjmp only, no exceptions - some warnings "killed" - "ndebug" integrated (only dbprintf), now D(bug()) without \n 2001/07/13 - STanda - BLITTER function table restored. (the only - bad - thing is that all BLITTER member data must be public to be able to work like this) - direct_truecolor mode made working again (was not probably since the HostScreen creation) - note: the original fVDI driver sources compiled as they are and got corrupted (parachute) one. fVDI author notified and requested the whole source tree again. 2001/07/09 - STanda - SDL comunity solved our mouse problem in Xs! Get the newest SDL cvs, make & install - the grab_mouse is set by default when in fullscreen 2001/07/02 - milan - new UAE CPU port from BasiliskII (CVS 25.6.2001) - more portable 2001/06/18 - STanda - version increased to 0.0.5 - the SDL dependent parts of the code were moved to the HostScreen class. The HostScreen hostScreen; object is created statically in the hardware.cpp. (Most of the methods are inline and thus put into hostscreen.h file) - several methods were renamed again (one example for all: getVideoMode() -> getScreenBpp()). - some copyright (and CVS) comments added. Please - authors - put the CVS comments to the beginning and to the bottom of each source file conforming the template provided in the projects root directory (template.cpp). 2001/06/18 - STanda - videl renderScreen() fix (lock & unlock screen added - again) - the Shift+Pause combination is now used to exit the emulator immediately (this was Petr's code change, but forgotten to tell us ;))... anyway thanks for really good working videl now. I seem not to have any problems with color palette here :). 2001/06/17 - Petr - System Timer (200 Hz Timer C) should be precise even under heavy load now. The MFP stuff needs to be rewritten from scratch. My C++ OOP knowledge sucks. - implemented virtual destructor in ICio class. Thanks to that the desctructor of RTC is called and saves the settings to disk (file "cmos" - actual folder, needs to be fixed - "$HOME/.aranym/cmos" looks like a good idea). - NVRAM is read from disk/stored to disk automatically. You can use your favorite NVRAM editor now. - system date/time is restored from RTC (host local time is used, not GMT). Year needs to be fixed yet. - a lot of work on mouse cursor, still not as good as STonX's one. Mouse is grabbed automatically when you move the cursor over Aranym window. To release it hold Control and right click. Then you can leave the aranym window - when you move the mouse pointer back over the window it's grabbed again. - it seems that Videl uses different color register sets for different color depths (as 4 and 16 color depth's colors are incorrect). Scary. Probably some compatibility nightmare. - fixed too early SDL_Video initialization. Do not init stuff in constructors as they are invoked before main(). Fix the ExtFs stuff (install "A" ???) 2001/06/15 - Petr - VIDEL finished. Hardware color palette registers are used properly now. 2001/06/13 - STanda - some VIDEL public routins adjusted to provide fVDI driver needed methods. (lockScreen(), unlockScreen(), getHostVideoramAddress()) - updateScreen() semantics was updated to SDL_UpdateRect... (only). The original method functionality was captured in new renderScreen() method 2001/06/12 - Petr - VIDEL rewritten using the new BASE_IO class. Got proper getVideoMode() and getWidth/Height (all stolen from Linux-m68k source code). Extended resolutions (using BlowUP030) work now perfectly (e.g. 1024x768). - new DSP module is based on the new BASE_IO - you see, it's easy to write HW emulation stuff now. 2001/06/08 - Petr - highly unfinished, very preliminary, often crashing support for extended VIDEL resolutions. I know how to fix it, just give me some time. 2001/06/06 - Petr - '--grab_mouse' command line switch for X-Windows - floppy can be inserted and removed in run-time. Press F11 to insert a floppy read-only. Hold Shift and press F11 to insert the floppy read-write. Make sure you have rw permissions on /dev/fd0 for this. Press F12 to remove a floppy. It seems to be unnecessary to manually remove the floppy each time since the writting should be synchronized (O_SYNC). This is not a final stage yet - if we stopped supporting disk images we could make the floppy inserting/removing fully automatic. 2001/06/05 - STanda - extfs: the drives are assignable from commandline option -disk (-d) The AUTO/CONFIG.SYS must still contain the conresponding drive-letter assignment with the -d options on the commandline. - the paramenters.cpp contains the drive assignment which is read by ExtFs.init() method (called from main_unix.cpp) - the short -debug option was redesigned to -D 2001/05/29 - Petr - version increased to 0.0.3 - major speed up (22 -> 27 thousand dhrystones) thanks to moving setjmp() out of main CPU loop - excep_no var removed from memory.cpp and newcpu.cpp - fixed VBL invocation (main_unix.cpp) 2001/05/29 - Petr - version increased to 0.0.2 - uae_cpu/memory.h - you can enable or disable CHECK_MEMORY_END. When enabled, direct_truecolor bombs out in early stage of TOS boot (because TOS cannot write to videoram). When disabled, FastRAM works (just run FASTRAM.PRG from the desktop and you'll get 32 MB of additional fast ram). - 'boot_color_depth' switch works now thanks to late initializing of RTC module in HWInit(). - 'monitor' switch allows you to choose between VGA and TV connected on Videl output. - 'direct_truecolor' switch allows you to patch TOS so that Videl VideoRAM is set directly to host's VideoRAM. Thus VIDEL writes directly to host's VGA card video memory (if framebuffer is used as the SDL_VIDEODRIVER). 2001/05/28 - Petr - implemented proper Bus Error (hardware.cpp and others). This helps in a number of places, namely in FPU detection routines. - fixed floppy emulation (fdc.cpp). STonX code contained wrong HW register addresses. I found it when I enabled FastRAM - the FDC was crashing the virtual machine. - added memory bounds checking (memory.h). Ill behaving programs (and bad FDC emulation, as mentioned above :) won't crash the virtual machine anymore! - new memory allocation (main_unix.cpp), enables 32 MB of FastRAM. aranym-0.9.15/FAQ000066400000000000000000000063421213346724500134430ustar00rootroot00000000000000Contents: 1) CVS read only 2) AES Error (WinX) 3) disk from Atari in ARAnyM 4) GEMBench blitter test crashes --- Question: I would like to contribute to the development. I wanted to use CVS but it's read only. What can I do? Answer: Create a diff file using the following command: "cvs diff -u >cvsdiff.txt" Then mail the cvsdiff.txt to pstehlik@sophics.cz. --- Question: I copied my mint setup on ARAnyM. It may works if I can use long file names and access rights. Should I use a new disk image for that ? How would I build one? Answer: if you have a working setup on Atari and want to have the same on ARAnyM, follow these steps: 1) if you want to use the disk directly, simply take it from your Atari machine and put it to your host machine (be it PC, Mac or whatever, we don't care). Set up the drive in .aranym/config, e.g. [IDE0] Present = Yes Path = /dev/hdc Cylinders = 2100 Heads = 16 SectorsPerTrack = 63 ByteSwap = No The "Path" point to the physical device. /dev/hdc is master on secondary IDE channel (ask someone if you don't know what I am talking about). The "Cylinders/Heads/SectorsPerTrack" values maybe either written on the disk label or in your hard drive utility (e.g. HDDRUTIL) - but only if it's an IDE drive. ARAnyM also tries to guess the values, if you set one from these values to -1 (supported only for real devices, only under Linux today). 3) if you want to leave your original disk in your original Atari and use just a copy of that disk then create a disk image: On Atari you can use anything that allows you to store the whole disk drive into one file - e.g. Diskus. Naturally you need a second harddrive with more free space than is the size of your disk you are creating the image of). Then you have to copy the image to the host somehow. On the host (PC, Mac, ...), in Unix like OS you can create the disk image with as simple command as: dd if=/dev/hdc of=/home/aranym/disk_image bs=1M For windows you may want to try out a "WinImage" (use download.com?) For configuring ARAnyM see the 2) above, the Path now points to the /home/aranym/disk_image. The "Cylinders/Heads/SectorsPerTrack" are needed to be set to correct values. In case you are not sure then go to the /proc/ide/hdX/geometry (applies for Linux only) where X depends on what drive you are creating the image from and use the values in the line starting with "physical" word respectively. Beware of the hdparm utility which gives you only the "logical" C/H/S which is not really what you need. Note: if the image has been created on Atari, you have to set the ByteSwap IDE ARAnyM option to "Yes". 4) start ARAnyM and enjoy. Everything should work as expected. However, if you were using some special HW drivers, like e.g. Afterburner, Centurbo or NOVA/Rage gfx card drivers, you want to disable them. So try the first boot with Ctrl held down (AUTO folder programs are not executed then). --- Question: The GEMBench Blitting test crashes/hangs every time I run it using fVDI. Answer: Put the following line into your FVDI.SYS: xbiosfix GEMBench is not really good benchmark program for ARAnyM anyway. aranym-0.9.15/INSTALL000066400000000000000000000065701213346724500141450ustar00rootroot000000000000001) Compilation requirements --------------------------- For compiling ARAnyM you will need libSDL, version at least 1.2.10. You can get it from http://www.libsdl.org/ or from your OS distribution vendor. If you want to compile source fetched from CVS you also need automake, libtool and autoconf (http://www.gnu.org/ or your OS vendor). Supported platforms: All Debian GNU/Linux platforms and x86 BeOS x86 GNU/Linux x86 MS Windows + Cygwin x86 OpenBSD (unmaintained) PPC MacOS X SGI Irix (unmaintained) Sun Sparc Solaris In progress (in alphabetical order): m68k FreeMiNT x86 FreeBSD x86 NetBSD 2) Compilation -------------- 2-1) Unix or Linux ------------------ If you got the source code from CVS then type ./autogen.sh && make If you have a source snapshot or proper ARAnyM source code release then type ./configure && make ./configure --help shows you all the compile time options. If everything went OK you got an executable file named "aranym". 2-2) Microsoft Windows ---------------------- Compilation is accomplished using the Cygwin linux-like environment (http://www.cygwin.com/). Details are available in tools/build-cygwin.sh. 2-3) Apple Mac OS X ------------------- Go to src/Unix/darwin folder first. If you got the source code from CVS then just type make If you want to configure ARAnyM for your personal needs, type ../configure_ppc --help Add preferred options to the CONFIGURE_OPTIONS_ppc and CONFIGURE_OPTIONS_i386 variables at the top of Makefile inside the darwin folder. After that run make again. If everything went OK, you got an executable named "ARAnyM.app" inside the src/Unix/darwin folder. This application expects its default configuration inside the current user's ~/Library/Preferences/org.aranym.amcfg file. Inside that config file a path beginning with */ will be expanded to ~/Library/Application Support/ARAnyM. The ARAnyM.app also supports virtual machine bundles: Put all your disk image files, host-fs destination folders, ROM image etc. and a properly configured org.aranym.amcfg file into a new folder. Give that folder the extension ".ARAnyM" or ".amvm". The Mac OS X Finder will then treat this new Folder as a so called bundle. Just dubble click on it and ARAnyM should start and use it. To modify such a bundles content, in the Finder Control-click or right-click on it and select "Show Package Contents". There are also other methods of building ARAnyM for OS X. Refere also to the documents inside src/Unix/MacOSX. 3) Installation --------------- You may install ARAnyM on Unix/Linux by typing 'make install' (have root privileges as default configuration installs to /usr/local/), or you may run the binary directly by typing ./aranym. Next step is to obtain the operating system (TOS 4.04 or EmuTOS) and install a harddrive. More on this in the README file. Easiest is to download one of the 'afros' disk images (Aranym FRee OS) that contain everything preinstalled. 4) Troubleshooting ------------------ If you compiled libSDL by yourself and installed to /usr/local/ you might experience the following problem when running autogen.sh: aclocal: configure.in: 835: macro `AM_PATH_SDL' not found in library The fix is relatively easy: export ACLOCAL_FLAGS="-I /usr/local/share/aclocal" This helps aclocal to find the .m4 file and everything is fine then. aranym-0.9.15/Makefile.in000066400000000000000000000661621213346724500151640ustar00rootroot00000000000000# Unix makefile for ARAnyM # Inspired in BasiliskII's Makefile #makefile := $(word $(words $(MAKEFILE_LIST)), $(MAKEFILE_LIST)) ## System specific configuration @SET_MAKE@ SHELL = /bin/sh prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ datadir = @datadir@ datarootdir = @datarootdir@ mandir = @mandir@ man1dir = $(mandir)/man1 docdir = $(prefix)/share/doc builddir = @builddir@ top_srcdir = @top_srcdir@ srcdir = $(top_srcdir)/src DESTDIR = ARCH := @CPU_TYPE@ DEPEND := $(builddir)/depend_$(ARCH) makefile := $(builddir)/Makefile CC = @CC@ CXX = @CXX@ CFLAGS1 = @CFLAGS@ CFLAGS = @CFLAGS@ $(SDL_CFLAGS) $(ZLIB_CFLAGS) CXXFLAGS1 = @CXXFLAGS@ CXXFLAGS = @CXXFLAGS@ $(SDL_CFLAGS) $(ZLIB_CFLAGS) CPPFLAGS = -I$(GEN_DIR) -I$(srcdir)/include -I$(srcdir)/Unix -I$(builddir) -I$(srcdir)/natfeat @CPUINCLUDES@ @CPPFLAGS@ ARCHFLAGS = @ARCHFLAGS@ WFLAGS = @WFLAGS@ DEFS = @DEFS@ @DEFINES@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ $(SDL_LIBS) $(ZLIB_LIBS) SDL_LIBS = @SDL_LIBS@ SDL_CONFIG = @SDL_CONFIG@ SDL_CFLAGS = @SDL_CFLAGS@ ZLIB_LIBS = @ZLIB_LIBS@ ZLIB_CFLAGS = @ZLIB_CFLAGS@ SYSSRCS = @SYSSRCS@ CPUSRCS = @CPUSRCS@ GENCPUSRCS = @GENCPUSRCS@ DSPSRCS = @DSPSRCS@ MIDISEQSRCS = @MIDISEQSRCS@ NFCDROMSRCS = @NFCDROMSRCS@ NFPCISRCS = @NFPCISRCS@ NFOSMESASRCS = @NFOSMESASRCS@ NFJPEGSRCS = @NFJPEGSRCS@ NFVDISRCS = @NFVDISRCS@ NFCLIPBOARDSRCS = @NFCLIPBOARDSRCS@ PARALLELX86SRCS = @PARALLELX86SRCS@ PARALLELPARPORTSRCS = @PARALLELPARPORTSRCS@ SERIALSRCS = @SERIALSRCS@ GUISDLSRCS = @GUISDLSRCS@ DYNGLSRCS = @DYNGLSRCS@ DBGSP = @DBGSP@ TAPIF = @TAPIF@ USBHOSTSRCS = @USBHOSTSRCS@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ ACLOCAL = aclocal AUTOCONF = autoconf AUTOHEADER = autoheader INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ host_alias = @host_alias@ host_triplet = @host@ ## Files SRCS = main.cpp \ Unix/main_unix.cpp \ Unix/vm_alloc.cpp \ Unix/host_clock_unix.cpp \ acia.cpp \ acsifdc.cpp \ adler32.c \ aradata.cpp \ aranym_exception.cpp \ ata.cpp \ audio_conv.cpp \ audio_dma.cpp \ audio_crossbar.cpp \ blitter.cpp \ bootos.cpp \ bootos_tos.cpp \ bootos_emutos.cpp \ bootos_linux.cpp \ cdrom.cpp \ cfgopts.cpp \ dirty_rects.cpp \ dsp.cpp \ emul_op.cpp \ natfeats.cpp \ fakeio.cpp \ hardware.cpp \ host.cpp \ host_audio.cpp \ host_clock.cpp \ hostscreen.cpp \ hostscreen_opengl.cpp \ host_surface.cpp \ host_surface_opengl.cpp \ ide.cpp \ identify.cpp \ ikbd.cpp \ input.cpp \ joypads.cpp \ logo.cpp \ md5.cpp \ mfp.cpp \ midi.cpp \ midi_file.cpp \ mmu.cpp \ ndebug.cpp \ ncr5380.cpp \ parallel.cpp \ parallel_file.cpp \ parameters.cpp \ romdiff.cpp \ rtc.cpp \ serial.cpp \ scc.cpp \ tools.cpp \ videl.cpp \ videl_zoom.cpp \ yamaha.cpp \ natfeat/nf_base.cpp \ natfeat/nf_objs.cpp \ natfeat/xhdi.cpp \ natfeat/nfaudio.cpp \ natfeat/nfbootstrap.cpp \ natfeat/nf_basicset.cpp \ natfeat/debugprintf.cpp \ natfeat/nfcdrom.cpp \ $(MIDISEQSRCS) \ $(NFCDROMSRCS) \ $(NFPCISRCS) \ $(USBHOSTSRCS) \ $(NFOSMESASRCS) \ $(NFJPEGSRCS) \ $(NFVDISRCS) \ $(NFCLIPBOARDSRCS) \ $(PARALLELX86SRCS) \ $(PARALLELPARPORTSRCS) \ $(SERIALSRCS) \ $(SYSSRCS) \ $(CPUSRCS) \ $(DSPSRCS) \ $(LILOSRCS) \ $(GUISDLSRCS) \ $(DYNGLSRCS) GENSRCS = \ uae_cpu/build68k.c \ uae_cpu/cpuopti.c \ uae_cpu/gencpu.c \ uae_cpu/readcpu.cpp \ uae_cpu/compiler/gencomp.c BUNDLE_RESOURCES = \ $(srcdir)/Unix/darwin/busybee.icns \ $(top_srcdir)/data/logo.png BUNDLE_LOCALIZATON_FOLDERS = \ $(srcdir)/Unix/darwin/*.lproj BUNDLE_CONTENTS = \ $(srcdir)/Unix/darwin/Info.plist \ $(srcdir)/Unix/darwin/PkgInfo BUNDLE_FRAMEWORKS = /Library/Frameworks/SDL.framework /Library/Frameworks/SDL_image.framework BEOS_RESOURCES = \ $(top_srcdir)/aranym.rdef BEOS_XRES = @BEOS_XRES@ BEOS_RC = @BEOS_RC@ BEOS_SETVERSION = @BEOS_SETVERSION@ APP = aranym APP_ARCH = aranym_$(ARCH) APP_STATIC = aranym_static APP_LIB = libaranym.a APP_BUNDLE = ARAnyM.app APP_IFC = aratapif TARGET = @TARGET@ PACKAGE_VERSION = @PACKAGE_VERSION@ ## Rules AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) am__v_CC_0 = @echo " CC " $@; AM_V_CXX = $(am__v_CXX_$(V)) am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) am__v_CXX_0 = @echo " CXX " $@; AM_V_CXXLD = $(am__v_CXXLD_$(V)) am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) am__v_CXXLD_0 = @echo " CXXLD " $@; .PHONY: install installdirs uninstall mostlyclean clean distclean depend $(APP_BUNDLE) .SUFFIXES: .SUFFIXES: .c .cpp .s .o .h .m .M all: $(builddir)/version_date.h $(TARGET) $(TAPIF) OBJ_DIR = obj_$(ARCH) $(OBJ_DIR):: @[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1 GEN_DIR = gen_$(ARCH) $(GEN_DIR):: @[ -d $(GEN_DIR) ] || mkdir $(GEN_DIR) > /dev/null 2>&1 define SRCS_LIST_TO_OBJS $(patsubst %,$(OBJ_DIR)/%.o, $(basename $(notdir $(GENCPUSRCS) $(SRCS)))) endef $(builddir)/version_date.h: $(top_srcdir)/ChangeLog echo '/* generated from ChangeLog */' > $@ sed -n '/^20[0-9][0-9]\/[0-9]*\/[0-9]/p' < $(top_srcdir)/ChangeLog | sed 's/^\(20[0-9][0-9]\/[0-9]*\/[0-9]*\).*/#define VERSION_DATE "\1"/;q' >> $@ OBJS = $(SRCS_LIST_TO_OBJS) SRC_PATHS += $(sort $(GEN_DIR)/ $(dir $(SRCS))) empty:= space:= $(empty) $(empty) VPATH += $(subst $(space),:,$(strip $(addprefix $(filter-out ./,$(srcdir)/), $(SRC_PATHS)))) $(APP): $(OBJ_DIR) $(GEN_DIR) $(OBJS) $(AM_V_CXXLD)$(CXX) -o $@ $(LDFLAGS) $(ARCHFLAGS) $(OBJS) $(LIBS) ifneq ($(BEOS_XRES),) $(BEOS_RC) -o $(APP).rsrc $(BEOS_RESOURCES) endif ifneq ($(BEOS_XRES),) $(BEOS_XRES) -o $(APP) $(APP).rsrc endif ifneq ($(BEOS_SETVERSION),) $(BEOS_SETVERSION) $(APP) \ -app 0 9 0 d 0 \ -short "$(APP) $(PACKAGE_VERSION)" \ -long "$(APP) $(PACKAGE_VERSION)" endif $(APP_ARCH): $(OBJ_DIR) $(GEN_DIR) $(OBJS) $(AM_V_CXXLD)$(CXX) -o $@ $(LDFLAGS) $(ARCHFLAGS) $(OBJS) $(LIBS) $(APP_STATIC): $(OBJ_DIR) $(GEN_DIR) $(OBJS) $(AM_V_CXXLD)$(CXX) -o $@ -static $(LDFLAGS) $(ARCHFLAGS) $(OBJS) $(LIBS) $(APP_LIB): $(OBJ_DIR) $(GEN_DIR) $(OBJS) $(AM_V_CXXLD)$(LD) -r -o $@ $(LDFLAGS) $(ARCHFLAGS) $(OBJS) $(LIBS) $(APP_BUNDLE): $(APP) rm -rf $(APP_BUNDLE) mkdir -p $(APP_BUNDLE)/Contents cp -r $(BUNDLE_CONTENTS) $(APP_BUNDLE)/Contents mkdir -p $(APP_BUNDLE)/Contents/MacOS cp $(APP) $(APP_BUNDLE)/Contents/MacOS #mkdir -p $(APP_BUNDLE)/Contents/ARAnyM mkdir -p $(APP_BUNDLE)/Contents/Resources mkdir -p $(APP_BUNDLE)/Contents/Frameworks for fwFolder in $(BUNDLE_FRAMEWORKS); do \ if test -d $$fwFolder; then \ cp -rp $$fwFolder $(APP_BUNDLE)/Contents/Frameworks/; \ fi; \ done cp -r $(BUNDLE_RESOURCES) $(APP_BUNDLE)/Contents/Resources for locFolder in $(BUNDLE_LOCALIZATON_FOLDERS); do \ cp -R $$locFolder $(APP_BUNDLE)/Contents/Resources/; \ done find $(APP_BUNDLE)/Contents/Resources -type d -and \( -name CVS -or -name \*~.nib \) -or -name \*~ -or -name \*.bak | xargs rm -rf install: $(APP) $(TAPIF) doc/$(APP).1 doc/$(APP)-jit.1 doc/$(APP)-mmu.1 doc/$(APP_IFC).1 installdirs $(INSTALL_PROGRAM) $(APP) $(DESTDIR)$(bindir)/$(APP) if [ "x$(APP_IFC)" = "x$(TAPIF)" ]; then \ $(INSTALL_PROGRAM) $(APP_IFC) $(DESTDIR)$(bindir)/$(APP_IFC);\ $(INSTALL_DATA) doc/$(APP_IFC).1 $(DESTDIR)$(man1dir)/$(APP_IFC).1 ;\ fi $(INSTALL_DATA) doc/$(APP).1 $(DESTDIR)$(man1dir)/$(APP).1 $(INSTALL_DATA) doc/$(APP)-jit.1 $(DESTDIR)$(man1dir)/$(APP)-jit.1 $(INSTALL_DATA) doc/$(APP)-mmu.1 $(DESTDIR)$(man1dir)/$(APP)-mmu.1 $(INSTALL_DATA) $(srcdir)/../ChangeLog $(DESTDIR)$(docdir)/$(APP)/changelog $(INSTALL_DATA) $(srcdir)/../TODO $(DESTDIR)$(docdir)/$(APP)/TODO $(INSTALL_DATA) $(srcdir)/../AUTHORS $(DESTDIR)$(docdir)/$(APP)/AUTHORS $(INSTALL_DATA) $(srcdir)/../NEWS $(DESTDIR)$(docdir)/$(APP)/NEWS $(INSTALL_DATA) $(srcdir)/../README $(DESTDIR)$(docdir)/$(APP)/README $(INSTALL_DATA) $(srcdir)/../FAQ $(DESTDIR)$(docdir)/$(APP)/FAQ $(INSTALL_DATA) $(srcdir)/../COPYING $(DESTDIR)$(docdir)/$(APP)/COPYING $(INSTALL_DATA) $(srcdir)/../BUGS $(DESTDIR)$(docdir)/$(APP)/BUGS $(INSTALL_DATA) $(srcdir)/../INSTALL $(DESTDIR)$(docdir)/$(APP)/INSTALL $(INSTALL_DATA) $(srcdir)/../doc/config $(DESTDIR)$(docdir)/$(APP)/config $(INSTALL_DATA) $(srcdir)/../atari/newdesk.inf $(DESTDIR)$(datadir)/$(APP)/atari/newdesk.inf $(INSTALL_DATA) $(srcdir)/../atari/mmusetup.cnf $(DESTDIR)$(datadir)/$(APP)/atari/mmusetup.cnf $(INSTALL_DATA) $(srcdir)/../atari/hostfs/bdconfig.sys $(DESTDIR)$(datadir)/$(APP)/atari/hostfs/bdconfig.sys $(INSTALL_DATA) $(srcdir)/../atari/hostfs/README $(DESTDIR)$(datadir)/$(APP)/atari/hostfs/README $(INSTALL_DATA) $(srcdir)/../atari/network/ethernet/nfeth-config/eth0-config.sh $(DESTDIR)$(datadir)/$(APP)/atari/network/eth0-config.sh $(INSTALL_DATA) $(srcdir)/../atari/network/ethernet/README $(DESTDIR)$(datadir)/$(APP)/atari/network/README $(INSTALL) $(srcdir)/../tools/arabridge $(DESTDIR)$(datadir)/$(APP)/arabridge $(INSTALL) $(srcdir)/../tools/floppy.sh $(DESTDIR)$(datadir)/$(APP)/floppy.sh $(INSTALL_DATA) $(srcdir)/../atari/tools/README $(DESTDIR)$(datadir)/$(APP)/atari/tools/README $(INSTALL_DATA) $(srcdir)/../atari/tools/pc101us.kbd.bz2 $(DESTDIR)$(datadir)/$(APP)/atari/tools/pc101us.kbd.bz2 $(INSTALL_DATA) $(srcdir)/../atari/sound/README $(DESTDIR)$(datadir)/$(APP)/atari/sound/README $(INSTALL_DATA) $(srcdir)/../data/wm_icon.bmp $(DESTDIR)$(datadir)/$(APP)/wm_icon.bmp $(INSTALL_DATA) $(srcdir)/../data/logo.png $(DESTDIR)$(datadir)/$(APP)/logo.png installdirs: $(SHELL) $(srcdir)/../mkinstalldirs $(DESTDIR)$(bindir) $(DESTDIR)$(man1dir) $(DESTDIR)$(datadir)/$(APP) $(DESTDIR)$(datadir)/$(APP)/atari $(DESTDIR)$(datadir)/$(APP)/atari/hostfs $(DESTDIR)$(datadir)/$(APP)/atari/nfcdrom $(DESTDIR)$(datadir)/$(APP)/atari/nfjpeg $(DESTDIR)$(datadir)/$(APP)/atari/nfosmesa $(DESTDIR)$(datadir)/$(APP)/atari/network $(DESTDIR)$(datadir)/$(APP)/atari/tools $(DESTDIR)$(datadir)/$(APP)/atari/sound $(DESTDIR)$(docdir)/$(APP) uninstall: rm -f $(DESTDIR)$(bindir)/$(APP) if [ "x$(APP_IFC)" = "x$(TAPIF)" ]; then \ rm -f $(DESTDIR)$(bindir)/$(APP_IFC);\ rm -f $(DESTDIR)$(man1dir)/$(APP_IFC).1 ;\ fi rm -f $(DESTDIR)$(man1dir)/$(APP).1 rm -f $(DESTDIR)$(man1dir)/$(APP)-jit.1 rm -f $(DESTDIR)$(man1dir)/$(APP)-mmu.1 rm -f $(DESTDIR)$(docdir)/$(APP)/changelog rm -f $(DESTDIR)$(docdir)/$(APP)/TODO rm -f $(DESTDIR)$(docdir)/$(APP)/AUTHORS rm -f $(DESTDIR)$(docdir)/$(APP)/NEWS rm -f $(DESTDIR)$(docdir)/$(APP)/README rm -f $(DESTDIR)$(docdir)/$(APP)/FAQ rm -f $(DESTDIR)$(docdir)/$(APP)/COPYING rm -f $(DESTDIR)$(docdir)/$(APP)/BUGS rm -f $(DESTDIR)$(docdir)/$(APP)/INSTALL rm -f $(DESTDIR)$(docdir)/$(APP)/config rm -f $(DESTDIR)$(datadir)/$(APP)/atari/newdesk.inf rm -f $(DESTDIR)$(datadir)/$(APP)/atari/mmusetup.cnf rm -f $(DESTDIR)$(datadir)/$(APP)/atari/hostfs/bdconfig.sys rm -f $(DESTDIR)$(datadir)/$(APP)/atari/hostfs/README rm -f $(DESTDIR)$(datadir)/$(APP)/atari/network/eth0-config.sh rm -f $(DESTDIR)$(datadir)/$(APP)/atari/network/README rm -f $(DESTDIR)$(datadir)/$(APP)/arabridge rm -f $(DESTDIR)$(datadir)/$(APP)/floppy.sh rm -f $(DESTDIR)$(datadir)/$(APP)/atari/tools/README rm -f $(DESTDIR)$(datadir)/$(APP)/atari/tools/pc101us.kbd.bz2 rm -f $(DESTDIR)$(datadir)/$(APP)/atari/sound/README rm -f $(DESTDIR)$(datadir)/$(APP)/wm_icon.bmp rm -f $(DESTDIR)$(datadir)/$(APP)/logo.png rmdir $(DESTDIR)$(datadir)/$(APP)/atari/hostfs rmdir $(DESTDIR)$(datadir)/$(APP)/atari/nfcdrom rmdir $(DESTDIR)$(datadir)/$(APP)/atari/nfjpeg rmdir $(DESTDIR)$(datadir)/$(APP)/atari/nfosmesa rmdir $(DESTDIR)$(datadir)/$(APP)/atari/network rmdir $(DESTDIR)$(datadir)/$(APP)/atari/tools rmdir $(DESTDIR)$(datadir)/$(APP)/atari/sound rmdir $(DESTDIR)$(datadir)/$(APP)/atari rmdir $(DESTDIR)$(datadir)/$(APP) rmdir $(DESTDIR)$(docdir)/$(APP) mostlyclean: rm -r -f $(APP) $(APP_BUNDLE) $(APP_ARCH) $(APP_LIB) $(APP_STATIC) $(TAPIF) $(OBJ_DIR)/* core* *.core *~ *.bak clean: mostlyclean rm -rf $(GEN_DIR) distclean: clean rm -rf $(OBJ_DIR) rm -f $(makefile) rm -f $(builddir)/config.cache $(builddir)/config.log $(builddir)/config.status $(builddir)/config.h rm -f $(DEPEND) rm -rf $(top_srcdir)/autom4te.cache mrproper: distclean rm -f $(top_srcdir)/aclocal.m4 $(builddir)/configure $(top_srcdir)/config.h.in bindistdirs: $(SHELL) $(top_srcdir)/mkinstalldirs tmpdist tmpdist$(bindir) tmpdist$(man1dir) tmpdist$(datadir)/$(APP) tmpdist$(datadir)/$(APP)/atari tmpdist$(datadir)/$(APP)/atari/hostfs tmpdist$(datadir)/$(APP)/atari/nfcdrom tmpdist$(datadir)/$(APP)/atari/nfjpeg tmpdist$(datadir)/$(APP)/atari/nfosmesa tmpdist$(datadir)/$(APP)/atari/network tmpdist$(datadir)/$(APP)/atari/tools tmpdist$(datadir)/$(APP)/atari/sound tmpdist$(docdir)/$(APP) bindist: $(APP) $(TAPIF) $(top_srcdir)/doc/$(APP).1 $(top_srcdir)/doc/$(APP)-jit.1 $(top_srcdir)/doc/$(APP)-mmu.1 $(top_srcdir)/doc/$(APP_IFC).1 bindistdirs $(INSTALL_PROGRAM) $(APP) tmpdist$(bindir)/$(APP) if [ "x$(APP_IFC)" = "x$(TAPIF)" ]; then \ $(INSTALL_PROGRAM) $(APP_IFC) tmpdist$(bindir)/$(APP_IFC);\ $(INSTALL_DATA) $(top_srcdir)/doc/$(APP_IFC).1 tmpdist$(man1dir)/$(APP_IFC).1 ;\ fi $(INSTALL_DATA) $(top_srcdir)/doc/$(APP).1 tmpdist$(man1dir)/$(APP).1 $(INSTALL_DATA) $(top_srcdir)/doc/$(APP)-jit.1 tmpdist$(man1dir)/$(APP)-jit.1 $(INSTALL_DATA) $(top_srcdir)/doc/$(APP)-mmu.1 tmpdist$(man1dir)/$(APP)-mmu.1 $(INSTALL_DATA) $(top_srcdir)/ChangeLog tmpdist$(docdir)/$(APP)/changelog $(INSTALL_DATA) $(top_srcdir)/TODO tmpdist$(docdir)/$(APP)/TODO $(INSTALL_DATA) $(top_srcdir)/AUTHORS tmpdist$(docdir)/$(APP)/AUTHORS $(INSTALL_DATA) $(top_srcdir)/NEWS tmpdist$(docdir)/$(APP)/NEWS $(INSTALL_DATA) $(top_srcdir)/README tmpdist$(docdir)/$(APP)/README $(INSTALL_DATA) $(top_srcdir)/FAQ tmpdist$(docdir)/$(APP)/FAQ $(INSTALL_DATA) $(top_srcdir)/COPYING tmpdist$(docdir)/$(APP)/COPYING $(INSTALL_DATA) $(top_srcdir)/BUGS tmpdist$(docdir)/$(APP)/BUGS $(INSTALL_DATA) $(top_srcdir)/INSTALL tmpdist$(docdir)/$(APP)/INSTALL $(INSTALL_DATA) $(top_srcdir)/doc/config tmpdist$(docdir)/$(APP)/config $(INSTALL_DATA) $(top_srcdir)/atari/newdesk.inf tmpdist$(datadir)/$(APP)/atari/newdesk.inf $(INSTALL_DATA) $(top_srcdir)/atari/mmusetup.cnf tmpdist$(datadir)/$(APP)/atari/mmusetup.cnf $(INSTALL_DATA) $(top_srcdir)/atari/hostfs/bdconfig.sys tmpdist$(datadir)/$(APP)/atari/hostfs/bdconfig.sys $(INSTALL_DATA) $(top_srcdir)/atari/hostfs/README tmpdist$(datadir)/$(APP)/atari/hostfs/README $(INSTALL_DATA) $(top_srcdir)/atari/network/ethernet/nfeth-config/eth0-config.sh tmpdist$(datadir)/$(APP)/atari/network/eth0-config.sh $(INSTALL_DATA) $(top_srcdir)/atari/network/ethernet/README tmpdist$(datadir)/$(APP)/atari/network/README $(INSTALL) $(top_srcdir)/tools/arabridge tmpdist$(datadir)/$(APP)/arabridge $(INSTALL) $(top_srcdir)/tools/floppy.sh tmpdist$(datadir)/$(APP)/floppy.sh $(INSTALL_DATA) $(top_srcdir)/atari/tools/README tmpdist$(datadir)/$(APP)/atari/tools/README $(INSTALL_DATA) $(top_srcdir)/atari/tools/pc101us.kbd.bz2 tmpdist$(datadir)/$(APP)/atari/tools/pc101us.kbd.bz2 $(INSTALL_DATA) $(top_srcdir)/atari/sound/README tmpdist$(datadir)/$(APP)/atari/sound/README $(INSTALL_DATA) $(top_srcdir)/data/wm_icon.bmp tmpdist$(datadir)/$(APP)/wm_icon.bmp $(INSTALL_DATA) $(top_srcdir)/data/logo.png tmpdist$(datadir)/$(APP)/logo.png chmod -R a+r tmpdist cd tmpdist && GZIP=--best tar chozf ../$(APP).tar.gz * rm -rf tmpdist devdist: mrproper cd $(srcdir)/../../ && GZIP=--best tar chozf $(APP).tar.gz aranym dist: distclean cd $(srcdir)/../../ && GZIP=--best tar chozf $(APP).tar.gz --exclude=autogen.sh --exclude=CVS --exclude=.cvsignore aranym depend: $(builddir)/version_date.h $(AM_V_CC)$(CC) -MM $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) $(addprefix $(srcdir)/,$(filter %.c,$(SRCS))) | sed 's,^[^ ],$$(OBJ_DIR)/&,' > $(DEPEND) $(AM_V_CXX)$(CXX) -MM $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) $(addprefix $(srcdir)/,$(filter %.cpp,$(SRCS))) | sed 's,^[^ ],$$(OBJ_DIR)/&,' >> $(DEPEND) $(AM_V_CC)$(CC) -MM $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CFLAGS1) $(addprefix $(srcdir)/,$(filter %.c,$(GENSRCS))) | sed 's,^[^ ],$$(GEN_DIR)/&,' >> $(DEPEND) $(AM_V_CXX)$(CXX) -MM $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS1) $(addprefix $(srcdir)/,$(filter %.cpp,$(GENSRCS))) | sed 's,^[^ ],$$(GEN_DIR)/&,' >> $(DEPEND) $(OBJ_DIR)/%.o : %.c $(AM_V_CC)$(CC) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/%.o : %.m $(AM_V_CC)$(CC) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/%.o : %.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/%.o : %.M $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/%.o : %.s $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(CFLAGS) $(ARCHFLAGS) -c $< -o $@ $(GEN_DIR)/%.o : %.c $(AM_V_CC)$(CC) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CFLAGS1) -c $< -o $@ $(GEN_DIR)/%.o : %.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS1) -c $< -o $@ $(GEN_DIR)/%.o : %.s $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(CFLAGS) -c $< -o $@ $(GEN_DIR)/cpuopti: $(GEN_DIR)/cpuopti.o $(AM_V_CC)$(CC) $(LDFLAGS) -o $(GEN_DIR)/cpuopti $(GEN_DIR)/cpuopti.o $(GEN_DIR)/build68k: $(GEN_DIR)/build68k.o $(AM_V_CC)$(CC) $(LDFLAGS) -o $(GEN_DIR)/build68k $(GEN_DIR)/build68k.o $(GEN_DIR)/gencpu: $(GEN_DIR)/gencpu.o $(GEN_DIR)/readcpu.o $(GEN_DIR)/cpudefs.o $(AM_V_CXX)$(CXX) $(LDFLAGS) -o $(GEN_DIR)/gencpu $(GEN_DIR)/gencpu.o $(GEN_DIR)/readcpu.o $(GEN_DIR)/cpudefs.o $(GEN_DIR)/gencomp: $(GEN_DIR)/gencomp.o $(GEN_DIR)/readcpu.o $(GEN_DIR)/cpudefs.o $(AM_V_CXX)$(CXX) $(LDFLAGS) -o $(GEN_DIR)/gencomp $(GEN_DIR)/gencomp.o $(GEN_DIR)/readcpu.o $(GEN_DIR)/cpudefs.o $(GEN_DIR)/cpudefs.cpp: $(GEN_DIR)/build68k uae_cpu/table68k $(GEN_DIR)/build68k <$(srcdir)/uae_cpu/table68k > $(GEN_DIR)/cpudefs.cpp $(GEN_DIR)/cpuemu.cpp: $(GEN_DIR)/gencpu cd $(GEN_DIR); ./gencpu $(GEN_DIR)/compemu.cpp: $(GEN_DIR)/gencomp cd $(GEN_DIR); ./gencomp $(GEN_DIR)/cpustbl_nf.cpp: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpustbl.cpp: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cputbl.h: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/compstbl.cpp: $(GEN_DIR)/compemu.cpp $(GEN_DIR)/comptbl.h: $(GEN_DIR)/compemu.cpp $(OBJ_DIR)/cpustbl_nf.o: $(GEN_DIR)/cpustbl.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -DNOFLAGS -c $< -o $@ $(OBJ_DIR)/cpustbl.o: $(GEN_DIR)/cpustbl.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpudefs.o: $(GEN_DIR)/cpudefs.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compstbl.o: $(GEN_DIR)/compstbl.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(GEN_DIR)/cpustbl.o: $(GEN_DIR)/cpustbl.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) -c $< -o $@ $(GEN_DIR)/cpudefs.o: $(GEN_DIR)/cpudefs.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) $(DBGSP) $(WFLAGS) $(CXXFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu_support.o: compemu_support.cpp codegen_x86.cpp $(GEN_DIR)/comptbl.h $(OBJ_DIR)/cpuemu1.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu2.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu3.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu4.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu5.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu6.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu7.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu8.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu1_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu2_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu3_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu4_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu5_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu6_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu7_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/cpuemu8_nf.o: $(GEN_DIR)/cpuemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 -DNOFLAGS $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu1.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu2.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu3.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu4.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu5.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu6.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu7.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(OBJ_DIR)/compemu8.o: $(GEN_DIR)/compemu.cpp $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 $(CXXFLAGS) $(ARCHFLAGS) -c $< -o $@ $(GEN_DIR)/cpufast.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp.s >$@ || mv $(GEN_DIR)/cputmp.s $@ rm -f $(GEN_DIR)/cputmp.s $(GEN_DIR)/cpufast1.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp1.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp1.s >$@ || mv $(GEN_DIR)/cputmp1.s $@ rm -f $(GEN_DIR)/cputmp1.s $(GEN_DIR)/cpufast2.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp2.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp2.s >$@ || mv $(GEN_DIR)/cputmp2.s $@ rm -f $(GEN_DIR)/cputmp2.s $(GEN_DIR)/cpufast3.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp3.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp3.s >$@ || mv $(GEN_DIR)/cputmp3.s $@ rm -f $(GEN_DIR)/cputmp3.s $(GEN_DIR)/cpufast4.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp4.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp4.s >$@ || mv $(GEN_DIR)/cputmp4.s $@ rm -f $(GEN_DIR)/cputmp4.s $(GEN_DIR)/cpufast5.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp5.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp5.s >$@ || mv $(GEN_DIR)/cputmp5.s $@ rm -f $(GEN_DIR)/cputmp5.s $(GEN_DIR)/cpufast6.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp6.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp6.s >$@ || mv $(GEN_DIR)/cputmp6.s $@ rm -f $(GEN_DIR)/cputmp6.s $(GEN_DIR)/cpufast7.s: $(GEN_DIR)/cpuemu.cpp $(OBJ_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp7.s $(OBJ_DIR)/cpuopti <$(GEN_DIR)/cputmp7.s >$@ || mv $(GEN_DIR)/cputmp7.s $@ rm -f $(GEN_DIR)/cputmp7.s $(GEN_DIR)/cpufast8.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp8.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp8.s >$@ || mv $(GEN_DIR)/cputmp8.s $@ rm -f $(GEN_DIR)/cputmp8.s $(GEN_DIR)/cpufast_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp.s >$@ || mv $(GEN_DIR)/cputmp.s $@ rm -f $(GEN_DIR)/cputmp.s $(GEN_DIR)/cpufast1_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_1 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp1.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp1.s >$@ || mv $(GEN_DIR)/cputmp1.s $@ rm -f $(GEN_DIR)/cputmp1.s $(GEN_DIR)/cpufast2_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_2 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp2.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp2.s >$@ || mv $(GEN_DIR)/cputmp2.s $@ rm -f $(GEN_DIR)/cputmp2.s $(GEN_DIR)/cpufast3_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_3 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp3.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp3.s >$@ || mv $(GEN_DIR)/cputmp3.s $@ rm -f $(GEN_DIR)/cputmp3.s $(GEN_DIR)/cpufast4_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_4 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp4.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp4.s >$@ || mv $(GEN_DIR)/cputmp4.s $@ rm -f $(GEN_DIR)/cputmp4.s $(GEN_DIR)/cpufast5_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_5 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp5.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp5.s >$@ || mv $(GEN_DIR)/cputmp5.s $@ rm -f $(GEN_DIR)/cputmp5.s $(GEN_DIR)/cpufast6_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_6 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp6.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp6.s >$@ || mv $(GEN_DIR)/cputmp6.s $@ rm -f $(GEN_DIR)/cputmp6.s $(GEN_DIR)/cpufast7_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_7 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp7.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp7.s >$@ || mv $(GEN_DIR)/cputmp7.s $@ rm -f $(GEN_DIR)/cputmp7.s $(GEN_DIR)/cpufast8_nf.s: $(GEN_DIR)/cpuemu.cpp $(GEN_DIR)/cpuopti $(AM_V_CXX)$(CXX) $(CPPFLAGS) $(DEFS) -DPART_8 -DNOFLAGS -S $(CXXFLAGS) $(ARCHFLAGS) $< -o $(GEN_DIR)/cputmp8.s $(GEN_DIR)/cpuopti <$(GEN_DIR)/cputmp8.s >$@ || mv $(GEN_DIR)/cputmp8.s $@ rm -f $(GEN_DIR)/cputmp8.s # For tests $(GEN_DIR)/newcpu.s: newcpu.cpp $(CXX) -fverbose-asm $(CPPFLAGS) $(DEFS) -S $(CXXFLAGS) $< -o $@ $(GEN_DIR)/memory.s: memory.cpp $(CXX) -fverbose-asm $(CPPFLAGS) $(DEFS) -S $(CXXFLAGS) $< -o $@ $(APP_IFC): aratapif.c $(AM_V_CC)$(CC) $(LDFLAGS) $(CPPFLAGS) $(DEFS) $(WFLAGS) $(CFLAGS) $(ARCHFLAGS) -o $(APP_IFC) -DHAVE_AFINET $(srcdir)/Unix/aratapif.c # Include dependencies ifneq ($(wildcard $(DEPEND)),) include $(DEPEND) endif aranym-0.9.15/NEWS000066400000000000000000001270071213346724500136120ustar00rootroot000000000000002013/04/15 - version 0.9.15 released The main new feature of this release is the seamless mouse integration mode: o Mouse input handling is improved a lot. Now ARAnyM has a seamless mouse integration when new Clocky (2013/04/15) is loaded. o There is no need to manually ungrab or grab the mouse. o Also mouse grab on left button click now reacts on the first button click everytime (previously only if you had window focus) and the host and mouse cursor positions are synced. o And if you ungrab the mouse intentionally then it's not automatically grabbed when the host mouse pointer returns to ARAnyM window. o At last, the annoying "resetting weird mouse packet" error is gone, too. Bugs fixed: o Native Features were missing proper memory overflow checks and bugs in NatFeat drivers could kill the ARAnyM. o NFVDI had a bug (a race condition) in resolution switching. o build date of EmuTOS was decoded improperly 2012/09/20 - version 0.9.14 released Mac users: check out the new bridged ethernet (see README_ethernet.rtf). All users: try out the new Single Blit Composing and Single Blit Refresh modes - they might give you a better video performance. There are also many compilation and build fixes for various MacOSX targets and few MPFR FPU fixes. And last but not least, there's a neat user requested feature - mouse ungrab (frees your keyboard and mouse from ARAnyM window so you can work in other applications while ARAnyM is running) simply by clicking the host middle mouse button (well, works only if you don't have the Eiffel mouse wheel emulation enabled in settings). 2012/03/23 - version 0.9.13 released A couple of important bugfixes accumulated in last few days: o USB NatFeat doesn't fail to claim devices in certain cases o MPFR FPU got fix for restarting of instructions after access error o JIT CPU version should work even when compiled with newer compilers o update your mmusetup.cnf in MiNT setup for larger FastRAM (see provided atari/mmusetup.cnf that is set for 512 MB FastRAM now) 2012/03/19 - version 0.9.12 released New features: o MPFR based new precise FPU emulation core. Somewhat slower than the normally used IEEE or UAE FPU emulation cores (about 5 times) but should be totally complete and precise. Enabled in Linux binary MMU builds (aranym-mmu). Hopefully Debian-m68k developers will enjoy it :-) o USB NatFeat fully usable: http://wiki.aranym.org/manual#usb With a FreeMiNT driver you can access your USB flash discs from the Atari side easily. First enter the SETUP GUI and plug in the desired USB device. The USB support is compiled in by default in all linux binary packages. o NF Clipboard implemented newly for BeOS o "aranym --version" will now list the built-in FPU core and also all NatFeats that are compiled in. Bugfixes: o memleaks in various files o blitter memmove fix o MacOSX project fixes o small 64bit fixes in nfcdrom o aliasing issue fixes (in nfosmesa that is not compiled in) o CPU CAS+CAS2 instructions - several very important fixes! o some little fixes for newer GCCs in various files o RPM spec file updated for Fedora, openSUSE and Mandriva. Give rpmbuild -tb aranym_0.9.12.orig.tar.gz a try! 2011/02/06 - version 0.9.11 released New features: SCC serial port emulation and USB NatFeat support. BeOS/Haiku port: fixes and improvements. MMU emulation: fix for initialization and FPU registers. Video: fix (refresh palette when switching from true color to bitplane mode) and an improvement (use current fullscreen size if fixed size is 0x0). 2010/05/27 - version 0.9.10 released New feature: GEM clipboard support that allows you to pass data between GEM clipboard and the host one (MS Windows, Mac OS X and X Window System). It's currently implemented in FreeMiNT only and uses its aranym.xfs virtual filesystem (U:\host\clipbrd). Please see setup instructions in http://wiki.aranym.org/gem_clipbrd Also couple of important bugfixes: o fixed two nasty crashes in HostFS (related to recent symlink fixes) o fixed Xcode building universal binaries on PPC o VIDEL autozoom feature with correct aspect ratio for non-square pixels 2009/09/05 - version 0.9.9 released This time mostly bugfixes: o fixed possible crash in HostFS when quitting ARAnyM (not serious) o fixed possible crash due to bug in libSDL up to v1.2.13 (very serious) o fixed some redrawing problems in 8 and 16 color depths with soft NfVDI o fixed all compile time warnings and Categories entry in aranym.desktop o fixed weirdness when mouse pointer was leaving the window on Win and OSX o fixed problem with invalid HostFS symlink breaking directory list o improvement: HostFS symlinks are now shown as relative if possible o fixed indirect descriptors handling in MMU o fixed HostFS symlinks for certain path configurations o added Mode key in the set of ARAnyM hotkey modifiers o fixed Alt+mouse click problem on Mac OSX o fixed Right Shift detection upon startup If you found ARAnyM crashing previously when moving windows around or doing any other activity where VDI had to blit screen areas then please upgrade to this version ASAP. We've added a workaround for a serious bug in the libSDL that was causing these weird ARAnyM crashes. 2009/04/25 - version 0.9.8beta released o CPU: fixed TRAPcc and FTRAPcc instructions (for Guillaume's mplayer :-) o VIDEL: pixel precise horizontal scrolling implemented o fixed BUSY signal handling on the parallel port o fixed mouse grab/ungrab/autograb (see below) o added new ARAnyM mouse cursor (white arrow) o added middle mouse button handling (in Eiffel mode) o added suport for reversing mouse Y-axis in IKBD (used in Linux-m68k) o fixed many DSP56001 instructions o fixed NFJPEG on 64bit hosts o fixed several NF drivers to work under FreeMiNT (not rely on __NF cookie) o buggy JIT-FPU was disabled. Now FPU is precise though slower in JIT mode Mouse grab/ungrab/autograb has changed: first, ungrabbing when leaving ARAnyM window was fixed (issue with autograb on the window border). Then, ARAnyM got a new mouse cursor (white one) so you can recognize now when the mouse is grabbed (the cursor pointer is black in TOS) and when it's not (the cursor pointer is white now). At last, mouse autograb upon entering ARAnyM window was disabled until we can ensure the Atari mouse cursor is positioned in sync with host mouse cursor (will require Atari OS support, probably in a form of aranym.acc and AES implementing appl_tplay). Also the "AutoGrabMouse" config option has been removed. 2008/11/08 - version 0.9.7beta released Mostly small fixes at various places plus a lot of work went into improving the DSP56001 emulation. Also the sound DMA emulation is improved to a point where GSXB driver should be unnecessary. o improved automatic network setup on Mac o reworked audio DMA emulation. Also added configurable host sound frequency o one MMU bug fixed (regarding TTR) o special support for halting ARAnyM on linux-m68k reboot (--halt) o SDL GUI fixed (missing events after alerts) o EMULOP is now privileged so if some old ARAnyM TSR starts crashing this is why o joypads are now emulated o joysticks and joypads can be configured in the config file o '<>' and 'End' keys' scancodes made Atari compatible Check the doc/config example file for the new [JOYSTICKS] and [AUDIO] sections. 2008/01/29 - version 0.9.6beta2 released Main change: major graphics output overhaul, two video backends - software and OpenGL renderer. Faster graphics output on all platforms. Try enabling the OpenGL output in the [OPENGL] section of the config file (beware, might not work on some platforms, tested on Linux only). Massive Mac OS X port improvements: MacIntel supported, fat binaries available, JIT working (on x86), networking working, and more. o IDE disks now up to 130 GB large (removed 32 GB barrier) o SCSI/partitions no longer limited to 2 GB, and made up to 4x faster o new ARAnyM logo at startup, new window manager, menu and desktop icons o networking fixes: now works after reboot, new Setup config dialog added o HostFS fixes: Dreadlabel() for MAGXDESK o SDL-GUI: 8x16 font, 80 columns, improved old dialogs and added new ones o MinGW compilable (native MS Windows binary, contrary to Cygwin one) o RTC timer on Linux host for more precise MFP timer interrupts (if it errors out try running "sudo sysctl -w dev.rtc.max-user-freq=1024") o new command line option "--locale CC" where CC is ISO country code (example: "--locale DE" will preset NVRAM to german keyboard layout) o one more FPU bug (visible in frexp()) fixed 2007/07/09 - version 0.9.5beta released This version brings major speed up of the MMU version thanks to contribution of Roman Zippel and also many improvements for Mac OS X as well as bunch of smaller fixes at many places by dedicated ARAnyM developers. o OpenGL fixes: mouse cursor, alpha channel on big-endian machines o OpenGL is loaded dynamically now (requires SDL 1.2.10 or newer) o new project file for Xcode 2.x used to build Universal binaries of MacAranym o JITc for Solaris x86 o MMU translation cache for major speed up of the MMU mode (now almost comparable with non-MMU mode - 3 GHz host CPU outperforms 100 MHz 68060!) o HostFS symlink fix o new TOS patches and VIDEO SETUP dialogs. Most of the settings require reboot to take effect. o VIDEL refresh was wrong, now fixed and configurable on-the-fly in SETUP o TV/VGA switch was wrong, now fixed and configurable in the SETUP o small CPU bitfield insn fix, FPU sin/cos fix, VIDEL ST-Shifter fix, nfVDI mfdb.fd_stand fix, TOS bconout redir fix... o many other build system fixes 2006/11/28 - version 0.9.4beta2 released I was so wrong when I wrote "last MMU bugs were fixed" in previous release notes. This second beta release fixes several newly found CPU/FPU bugs that appeared when ARAnyM became actually used by Debian-m68k people. So the linux-m68k kernel as well as other MMU/FPU software should run much better now. Other news and fixes: o optional MIDI output to /dev/sequencer (in [MIDI] try Type=sequencer) o ARAnyM shouldn't hang on quit anymore o protect2k enabled by default (better HW compatibility with Atari) o cxx-exceptions enabled by default (considerably faster in MMU mode) o in Cygwin ARAnyM ignores $HOME and follows Windows practice with $HOME under Document and Settings/ o new config file option "GMTime" (set to No by default). When enabled, ARAnyM uses Greenwich Mean Time (useful when running an OS that knows timezones like something Linux based or maybe even properly configured SpareMiNT) o linux-m68k properly boots now (with HW initialized) o IKBD settings (mouse wheel, AltGr) stored in [IKBD] section of ARAnyM config file o sound: preliminary locking (XBIOS LockSnd/UnlockSnd) implemented o nfVDI: fixed vswr_mode alpha expansions (tested on newsgroup reader Troll) o new option in [ETHx]: MAC = aa:bb:cc:dd:ee:ff for configuring the MAC Address of the network interface. You can run several ARAnyMs in a LAN now :-) For the additions in the ARAnyM config file see the provided commented configuration file. 2006/09/22 - version 0.9.4beta released This release has one major highlight: two last MMU emulation bugs have been fixed and ARAnyM now runs Linux-m68k stable for days without any single issue. I can now fully recommend ARAnyM for Linux-m68k kernel development and also Debian-m68k development. Hoping that it will help the m68k linux platform to survive for a little longer. There is also a great new feature for those who are tired of setting up virtual disk drives for booting to TOS/GEM system: ARAnyM now supports bootstrapping directly from host filesystem! You need new versions of both EmuTOS and FreeMiNT kernel (with built-in HostFS driver) and the following configuration (in the [GLOBAL] section of ARAnyM config file): ------ aranym config -------- Bootstrap = /path/to/mint.prg BootstrapArgs = DEBUG_LEVEL=1 BOOT_DELAY=0 MEM_PROT=NO BootDrive = C ----------------------------- Of course you also need to define the BootDrive (C:) host path in the [HOSTFS] config section. FreeMiNT tries to locate the modules and other files in usual C:\MINT\ path that is redirected to your host filesystem. Other news and fixes: o new command line parameter -P (as in Position) will position the ARAnyM window to your desired location - enter the coordinates of upper left window corner ("-P 50,50") or try to center the window with "-P center". This should help especially on MS-Windows where the ARAnyM window often ended partially off screen. o Host desktop <-> AES clipboard interconnection. Currently for MS-Windows only. You need a special FreeMiNT driver that creates a new filesystem in FreeMiNT where you can point the AES to store the Clipboard. Find more information in documentation at http://wiki.aranym.org/ o various improvements in graphics area - major speed up for bitplane modes, speed up of graphics on Mac OS X, OpenGL alpha mask fix and others. o Mac OS X: Swapped meaning of CTRL and META key for Mac OS X back to "the logical way": The Apple key(s) represent left and right meta key and CTRL key is mapped to Atari CTRL key. A new, more Mac like set of keyboard shortcuts defined: Left Apple + , = Open preferences dialog Left Apple + q = Quit Left Apple + r = Reboot Left Apple + escape = Grab/Ungrab mouse cursor Left Apple + d = Enable debugger (if built-in) Left Apple + s = Save screenshot Left Apple + f = Toggle fullscreen mode o MS-Windows: corrected/improved window/fullscreen toggle. o bug #1521310 fixed: Shifters are now released before the GUI thread is started. o MIDI now outputs raw data which could be used for mapping the MIDI port to host MIDI directly (untested) o new compile-time configuration (--enable-protect2k) improves compatibility with ST/TT/Falcon where hardware protects first 2 kB of RAM against user mode accesses. Enabled by default in MMU build only since it can cause some performance degradation. 2006/02/20 - version 0.9.3beta released Exciting news: ARAnyM now has its own domain (http://aranym.org) and also brand new Wikiwiki for easier cooperation on improving ARAnyM documentation - visit http://wiki.aranym.org and look around... This is not much polished release. I have intended it mainly as a checkpoint for both developers and users, to resync and continue developing further. Eventhough most work went into into NF VDI since last release so ARAnyM can now output via OpenGL and features TrueType fonts (thanks to improved fVDI) there are many other changes in most areas of ARAnyM: o hotkey combination to free keyboard/mouse lock is LeftAlt+Ctrl+Shift (configurable in the SETUP GUI) o improved and bugfixed HostFS o fixed nfjpeg and enabled by default o nfosmesa with driver for FreeMiNT o switch to fullscreen and back works in MS Windows now o OpenGL NF VDI driver (almost?) working o configurable mouse cursor (ikbd or host) o configurable NF CDROM driver (linux or sdl) o configurable NF VDI driver (software or opengl) o joystick hat o DMA audio emulation o RTC timer for precise 200 Hz Timer C emulation o multiple ethernet interfaces (up to four in default build) o AltGr key (right Alt key on PC keyboard) o ethernet and floppy work in linux-m68k kernel o improved Mac OS X port o all binaries removed from source archive, to comply with Debian rules (don't distribute what you can't rebuild from the archive with supplied tools). There is a new AFROS CVS repository for the binary drivers. If upgrading from previous release you have to update the HostFS, NF VDI and also Ethernet drivers. We'll provide a ZIP archive with all necessary drivers. The impatient can get the Atari drivers at http://aranym.org/bin/ 2005/04/14 - version 0.9.0 released We've been providing 68040 PMMU (a memory management unit emulation, required for running FreeMiNT with MMU protection, and Linux/m68k) since version 0.1.5 (almost three years ago) though this is the first version of ARAnyM where the PMMU really works, thanks to awesome debugging and fixing done by Andreas Schwab. So ARAnyM runs Linux/m68k kernel now. Really. This opens up a new area of usage - ARAnyM can help developing Linux/m68k kernel and systems based on it (Debian/m68k, for example). Besides the PMMU there is a whole lot of new features and fixes: o multisession CD in IDE emulation o Win32 networking (TAP based, like in Linux) o NFOSMESA: OpenGL rendering for Atari applications using host CPU o NFJPEG: JPEG decoder (a TSR) using host CPU power via NatFeats, based on Brainstorm's JPEG DSP decoder API o direct disk partitions access o MFP interrupts fixed o LILO fixes, compiles without linux headers now o many 64-bit fixes and cleanups o compiling using the Fink suite on MacOSX o famous fVDI boot bug fixed o fVDI fixes in bitplanes o parallel port mapped to parport (in linux) or to a file o hotkeys configuration: Setup, Quit, Reboot, Ungrab, Debugger, ScreenShot and FullScreen hotkeys can be configured at runtime in the SETUP. o SETUP fileselector improved (folders before files, CWD) o fVDI pixel size bug fixed o documentation.txt updated with several new sections (networking, programming with ARAnyM, single partitions support and more). 2004/11/07 - version 0.8.11beta released We've been slow and quiet lately but nevertheless a progress has been made. Some important changes for users include: o FASTRAM.PRG is no longer needed. Xavier patched TOS 4.04 so it now finds out the correct FastRAM size automagically. o Bridged networking works and is easy to set up thanks to the updated 'arabridge' script and slightly improved documentation.txt. You must update your 'aranym.xif' FreeMiNT driver (now requires FreeMiNT 1.16.0 or newer) and also the nfeth-config tool. o JIT compiler in Windows binary works better than in previous release. o integrated LILO fixed (though ARAnyM does not boot Linux-m68k yet). o various little SETUP GUI improvements (edit fields are much better now, CHS values are updated correctly after creating new empty disk image, repeated saving of config file from the SETUP GUI fixed, new Keyboard and mouse setup dialog - almost empty now, but promising :-). o AutoZoom screen fixed and improved. You can now choose a constant host screen size for whatever the Atari screen size is. Might be very useful for LCD/DFP owners. This improvements required change in the API and so new version of 'aranym.sys' fVDI ARAnyM screen driver must be installed in your setup. o Mac users might enjoy new keyboard translation tables. All keys should be mapped correctly. o new EmuTOS included in this release fixes XaAES/FreeMiNT 1.16.1beta keyboard problems. o host mouse wheel can produce Eiffel 1.08+ compatible scancodes now. Switch this mode in the SETUP GUI. Note that currently neither fVDI nor EmuTOS support this. All beta testers (i.e. YOU :-) are encouraged to report all bugs and problems either into aranym user mailing list or directly into the bug tracker (available on ARAnyM webpages under the 'Contact' link). 2004/08/07 - version 0.8.10beta released Great news for MS Windows users: ARAnyM runs with JIT CPU compiler now thanks to Xavier's work on sigsegv handler. Other than that we have been fixing bugs and cleaning the source code: o Francois fixed sinh and tanh (FPU instructions) o 'aratapif' is found in $PATH again o many more internal bug fixes that are not directly visible to users 2004/07/06 - version 0.8.9beta released Great bug fixes: o JIT CPU is working on Linux 2.6.x o Blitter is finally not crashing anymore o integrated LILO (Linux Loader) reads gzipped files o SDL GUI now accepts numbers typed on numpad Especially the Blitter fix itself justifies a new release since it has always been buggy and it was so annoying. Now we've won. 2004/07/05 - version 0.8.8beta released Main bug fixes: o MC68881 tan() insn fixed on ia-32 host cpu arch o one of JIT SIGSEGV crashes on linux 2.6.x o floppy emulation (corrupted in 0.8.6beta release) o HostFS fixes (symlinks, Dfree) o many MACOSX fixes (FPU works) and improvements o CapsLock under X11 fixed o various SDL GUI bugfixes New features: o new networking based on bridging: tools/arabridge is able to establish a bridge over the tap0 tunnel and eth0 nif so that aranym becomes part of your LAN visible from other machines etc. For example DHCP from ARAnyM works now. [ETH0] type = ppp|bridge and tunnel = tap0 config options added o Patrice's experimental PCI bridge (disabled in default builds), can be used for developing PCI drivers for Milan/Hades on ARAnyM :-) o SETUP GUI visually improved again (3D Look! :) o easy Disk Image generation in the SETUP - just enter your desired disk image path and size in MB and click on Generate. o configuration file parser now recognizes "~" special char that is expanded to $HOME (path to user home dir). 2004/02/15 - version 0.8.7beta released ========== o fixing HostFS bug that was introduced in 0.8.6beta o further visual improvements of SETUP GUI o better handling of Reset/Restart of an operating system 2004/02/08 - version 0.8.6beta released ========== Important bugfixes, further SETUP improvements and new Mac OSX target: o visual improvements in SETUP GUI o new functions available in SETUP GUI (Fullscreen, ScreenShots, Help) o fixed changing path to Floppy in the SETUP o fixed serious bug in Floppy path configuration (crash at startup) o fixed serious bug in NVRAM handling (might caused crashes at early TOS boot) o hopefully fixed problem with HostFS mount points on aranym reboot 2004/01/07 - version 0.8.5beta released ========== Number of important changes: o JIT CPU fixed! (although kernel 2.6 is not supported yet) o double bus errors (infamous error loops) handled now correctly o direct Mac OS X support for ARAnyM (compiles but doesn't run(?)) o HostFS fixed o script for easy building of ARAnyM on Windows/cygwin o SETUP GUI greatly improved - Disks Setup is complete, other will follow o SETUP GUI at startup of ARAnyM (-G command line switch) o floppy insert/eject support at runtime (in the SETUP GUI) o fVDI NatFeat driver with local color palette support (XaAES likes it) You will have to update your fVDI driver. o ARAnyM now defines new value for the _MCH cookie: 0x50000. Update your .aranym/config files with this new value. o Alt+Ctrl+Esc now helps releasing mouse&kbd input even in fullscreen New AFROS is released together with ARAnyM to provide the updated fVDI driver. Generally most work went into the SDL GUI SETUP which is becoming a central place for on-the-fly reconfiguration. Press the "Pause" key to open up the SETUP GUI anytime. Currently only disk configuration is complete but new setup dialogs will follow shortly. 2003/10/04 - version 0.8.2beta released ========== Changes: o Direct Linux-m68k loading with integrated LILO o MIDI output to a file o HostFS cleaned up again (you must upgrade your HOSTFS.DOS driver) o SCSI emulation introduced which simplifies the harddisk driver installation greatly o STOP CPU instruction fixed to work properly (no more shaky mouse under EmuTOS and FreeMiNT) o Native access to host's CD/DVD-ROM using BetaDOS BOS NatFeat CDROM driver o Various little updates in README, FAQ and doc/documentation.txt o Literally tons of bugfixes and improvements (fVDI, JIT, XHDI, portability) 2003/04/11 - version 0.8.0beta3 released ========== Changes: o Windows/Cygwin support greatly improved (see below) o HostFS bugfixed and works equally well on Windows/Cygwin Binaries released for Windows/Cygwin now define clearly where ARAnyM files are stored: User-specific files (configuration, NVRAM) are in subfolder ".aranym" in the My Documents folder (usually available from your desktop directly). System-wide data (TOS, EmuTOS, font8.bmp) are stored in subfolder "aranym" relative to the aranym.exe binary. 2003/04/08 - version 0.8.0beta2 released ========== Changes: o the key for making a screenshot changed to PrintScreen o [ARANYMFS] renamed to [HOSTFS] o aratapif execution fixed o HostFS improved o Cygwin support should be better For updating your ARAnyM config file simply run "aranym -s". 2003/03/23 - version 0.8.0beta1 released ========== New features: o Networking. Yeah! ARAnyM.XIF as the Ethernet driver for MiNT-Net. o VIDEL compatible (bitplane) 1, 2, 4 and 8 bit fVDI modes. o new command line option "--swap-ide" that allows you to boot from [IDE1] o new HostFS drivers (both BetaDOS and MiNT's xfs) are fully working now. o for GFA programmers out there: natfeat/atari_example_gfa.lst o new config option "ModelName" for [IDE0/1]. Name your drives :-) o P4 fix for JIT (thanks to Gwenole of Basilisk II) o CD-ROM now also on Windows/Cygwin Naturally some bugs were fixed - most notably in mouse input. Also we've received some BeOS related patches so ARAnyM might run on BeOS as well now. 2003/01/29 - version 0.7.0 released ========== What is new? NatFeats seem to finally stabilize. "__NF" cookie has been hardwired both to TOS 4.04 and to EmuTOS so it can be used by user applications to test for extended host capabilities. See the example code in src/natfeat/atari_example.c. Improved VIDEL emulation (virtual screens work now). Improved VIDEL rendering including auto zooming and OpenGL render. fVDI fixed. You must update your floppy/disk images with new fVDI driver. New experimental hostfs access drivers - instead of using MetaDOS driver under FreeMiNT Standa created a proper FreeMiNT XFS driver and then wrote a FreeMiNT API emulation layer for singleTOS' MetaDOS! This is untested so beware and backup your data first. Also more work has been done on ECE (Ethernet Card Emulation). It's unfinished, though - currently the MiNT driver throws bombs. We would need some Atari hackers to debug some of the Atari driver peculiarities. Large disks (disk images) supported now. There is also a new tool for creating real large disk images (up to 32 GB!) And as always, many bugfixes. I also put together a first snapshot of the "afros" (ARAnyM FRee OS" :-) Just download it, unpack it and run aranym with the provided config file. 2002/10/20 - version 0.6.8 released ========== Highlights: - aranym on Mac OS X really works - aranym can open read only disk drives or images (designed for aranym on CD) - CD-ROM works like on real Atari (auto mount) - GFA Basic works thanks to IKBD fix Finally an active Mac OS X user cared to send us a few mails so Mac OS X is now fully working and a binary package of aranym for Mac OS X will soon be available. Thanks Wim! The new option for read only disk drives has been extended so it's not XHDI specific anymore but works generally also for emulated IDE interface. Thus change your aranym config file - the XhdiWrite is replaced with ReadOnly flag. [IDE0|1] # XhdiWrite = Yes|No ; default is No, enable for EmuTOS ReadOnly = Yes|No ; default is No, change to Yes if you want ; to open read only disk image (e.g. from a CD) Many various changes to JIT compiler (TuneAlignment, NOP filler and more). Several JIT related statistics are enabled in this build. CD-ROM support was greatly improved. CD Automount works like on real Atari, you just insert a CD and access it. For unmounting a CD you can either use various software utilities (try Ctrl+Shift+J in Thing!) or you can also use the aranym GUI - you'll find there new section "Discs" and in that a CD-ROM button labelled either "Eject" or "Insert" (depends on the current CD-ROM status). Also an interesting fix in IKBD now allows GFA Basic (3.6TT) to run on Aranym (even under EmuTOS :) Some cosmetics changes - documentation updated mildly, aranym now prints its version on startup (include in your debug reports), some clean ups in the source code for better portability (non-c-headers support, generic bool..). 2002/10/12 - version 0.6.6 released ========== This release brings a couple of major changes. Probably the greatest is that the JIT (just-in-time) compiler of m68k code into x86 code works and makes ARAnyM the fastest Atari clone ever made. Now you can do things you never thought that would be possible - like watching fullscreen DivX movies or playing famous games like Quake. It's real fast. Another cool thing is the Native Features interface, designed to allow writing video/sound/disk drivers and other extensions in a portable way. First thing that got ported to NatFeat interface is the XHDI extension that lets EmuTOS access the ARAnyM disk drives directly. Other drivers will be ported to NatFeats soon. Look at src/natfeat/atari_example.c to see how easy is to write a NatFeat compliant driver. Surprising news is the DSP M56001 emulation that was added by Patrice. See what he has to say about it: "I only got one DSP program to work: a very simple rotozoom one I wrote. There are many things missing in the DSP emulation: interrupts, audio. The only programs that could work are those that use the DSP for calculations (and read/write their parameters on the host port). BadMood is in this case. You can also use the Motorola DSP tools to build DSP programs under Aranym, they work." Patrice also rewrote the IKBD/MIDI/ACIA implementation and ARAnyM now supports also joysticks. And improved VIDEL by adding auto center and auto zoom features (small Atari resolution should be zoomed automatically). New config options in aranym config file are as follows: [JIT] JIT = Yes|No JITFPU = Yes|No JITCacheSize = // cache size - bigger = better JITLazyFlush = [IDE0|1] XhdiWrite = Yes|No // default is No, enable for EmuTOS Also, ndebug was improved. Breakpoints were added and also "run until = " was implemented. fVDI blitting is faster now up to 4 times. Also, you have to update both fVDI.PRG and aranym.sys fVDI driver on your disk images. Don't forget that! For other fixes and changes please look into the ChangeLog file. Thanks. This is a list of unreleased versions and major changes in them: 2002/10/08 - version 0.6.5b - CPU back in main thread, SDL issues fixed 2002/09/28 - version 0.6.4b - Xhdi writing fixed. Backup your disk/images! 2002/09/28 - version 0.6.3b - bus error looping could be partially sorted out 2002/09/28 - version 0.6.2b - fVDI blitting accelerated, new IKBD/ACIA/joystick 2002/09/24 - version 0.6.1b - VIDEL zooming on dest screen 2002/09/15 - version 0.6.0b - SDL loop in main thread, CPU in separate thread 2002/09/12 - version 0.5.0b - CPU JIT compiler works thanks to 68040 TOS patch 2002/08/26 - version 0.4.0b - DSP runs in its own thread and is nearly complete 2002/08/04 - version 0.3.0b - Native Features implemented 2002/07/20 - version 0.2.0 released (celebrating the Woody release!) ========== Long time since previous release. I have been waiting for finishing a couple of promising modules but since Debian 3.0 (AKA Woody) has just been released I am releasing ARAnyM as well to celebrate it :-) Seriously, we wanted to give you something to play with and test the number of changes and new features in ARAnyM while we'll be working towards next major release. Major news: - new graphical user interface for runtime configuration of ARAnyM (unfinished yet) - EmuTOS being part of ARAnyM binary distribution (TOS 4.04 is not required to boot ARAnyM anymore) - boot floppy image with essential up-to-date ARAnyM drivers and tools (so you can easily upgrade your harddisk images) And now more detailed news in ARAnyM since last public release: Standa created 'fvdicout.app' which, being based on TosWin II source code should bring a complete VT52 emulation for applications with console output under fVDI. You'll find it in atari/fvdi/utility folder. Heiko Achilles added a 'mouse packet compressor' that is supposed to remove any delay when moving with mouse more quickly (or on more loaded machine). It may either fix problems you could have with your mouse or it can create a new, previously unseen mouse events' bugs. Test and let us know. The aranymfs (the MetaDOS host filesystem driver) has been converted to GCC compilable form. Please beware and test the host filesystem access carefully. Brand new keyboard hotkeys: - Scroll Lock (the mostly unused key on PC keyboards) now switches between windowed and fullscreen mode! - Ctrl+Pause cold reboots the ARAnyM correctly now - Pause key now invokes cool new ARAnyM GUI configuration. Please note that the GUI is far from being finished. The only useful option is the "Reset" and perhaps also the Quit (for those that can't remember the Shift+Pause combo). The GUI will soon be filled with tons of configure options so stay tuned... Another change from previous versions is that we now require original TOS 4.04. Various patched versions we supported before are unsupported now. So please get a clean original TOS 4.04 - or give the EmuTOS a try! All you need is to empty the "TOS=" option in the ARAnyM config file. Long filename->TOS 8.3 format conversion was improved so that it now handles also filenames ending with a dot. A long standing bug in Yamaha emulation was fixed. This helps mainly the lowlevel emulation of parallel port access. The parallel/printer port is emulated so accurately that even PARCP works flawlessly. Note though that this is not enabled automatically as it requires root privileges to run ARAnyM. We are going to add other methods for accessing the host parallel port in a more user/kernel friendly way. I know that after releasing the input focus with Alt+Ctrl+Esc combo sometimes the Alt+Ctrl stay held down. I added a special code for removing the stale Alt+Ctrl state. Please let us know if this helped. Hackers Guide (hguide.txt) was updated. If you want to hack on ARAnyM you should read it first. From the other exciting news: Patrice Mandin has started work on DSP emulation for ARAnyM. He's actually nearly finished it so it may be available in the next version of ARAnyM already! Johan Klockars also started rewriting some pretty core things in the fVDI ARAnyM driver and fVDI itself so expect the next major release to be a real killer (in both good and bad sense ;-) BTW, if there is a developer that would be willing to finish the nearly working ECE (Ethernet Card Emulation) then please join us in ARAnyM development mailing list. Generally, there is a lot of cool things to work on in ARAnyM project so if you want to help out then write to us. 2002/04/22 - version 0.1.7 released ========== Sound is working! Put the atari/sound/zmagxsnd.prg to your AUTO folder and Aniplayer (after switching to XBIOS in its Sound Config dialog) should play all sounds nicely! Several very bad or annoying bugs in aranymfs fixed. Now it should be real usable. It's possible to Reboot the machine by pressing Ctrl+Pause. IKBD problems after reboot will be fixed in next release. Two new config file options: "Redir_Console" and "Redit_Printer". If set to "yes" the BIOS console (2 and 5) or printer (0) output is redirected to the host console. RPM spec file for ARAnyM. If your Linux distro is RPM based you may want to try out the following command: 'rpm -tb aranym-0.1.7.tar.gz' It should build a binary RPM package of aranym which you can then install the usual way (rpm -i aranym*.rpm). 2002/04/12 - version 0.1.6 released ========== Serious problem with NMI not being able to break STOPped CPU fixed. Also when compiled with --disable-timer it now generates system 200 Hz interrupt correctly even when the CPU is STOPped. 2002/04/11 - version 0.1.5 released (please update your fVDI driver!) ========== Since the previous public release we made a lot of changes. Probably the most significant is the large rewrite of CPU. Current ARAnyM can be compiled with full PMMU (Memory Management Unit of Motorola 68040 CPU). This brings the ability to run FreeMiNT with memory protection enabled. It also opens door for running Unix-like operating systems (Linux or NetBSD for m68k) but unfortunately the current level of HW emulation is not sufficient for those yet. But we are working on it (and gladly accept any help from you!) While rewriting the CPU we also updated the FPU. ARAnyM's FPU now fully supports all MC68881/2 as well as MC86040 FPU instructions. There is also a developer version of ARAnyM with JIT (just-in-time compiler) but it is not stable enough yet. SGI/Irix is yet another supported host platform and we have added preliminary support for MiNT as the host platform ;-) On most supported host platforms the memory access was accelerated (thus the overall speed of ARAnyM increased). ARAnyM is the first Atari compatible platform with support for the native instruction interface (Native Features). That will bring new possibilities for next generation Atari software. AranymFS - our system clean MetaDOS driver for accessing host filesystem was greatly bugfixed. During debugging of this some Atari software proven to be ill-designed (such as PureC IDE - it is unable to cope with files on MetaDOS drives due to misusing certain range of GEMDOS handles. We developed a patch for it so now you can enjoy compiling with PureC on host filesystem). Besides that, there is a beta version of AranymFS.XFS driver for MiNT! The other improvements include new IDE emulation (including ATAPI CD-ROM, try e.g. ejecting the CD from within Thing desktop), new config file is created with correct default values, and many other fixes. Note that due to changes in fVDI host driver you need to update your fVDI Atari driver - there is a precompiled fvdi.sys in "atari/fvdi/drivers". Also you might want to update the AranymFS driver for MetaDOS/BetaDOS: it's also available as a precompiled binary in "atari/aranymfs/" folder. Last note: printing to Atari parallel port is now redirected to the console where you started ARAnyM from... This is not the final solution but rather a little hack that can be used for debug prints. 2002/02/12 - version 0.0.21 released ========== ARAnyM has a new version of IDE emulation. It should work on more platforms (*BSD, for example). Generally the portability is better (fixes also in ndebug and aranymfs). There is a new untested alpha version of aranym.xfs for MiNT. And we have a new long detailed users guide in documentation.txt file. 2002/01/28 - version 0.0.20 released ========== ARAnyM is at least +33% faster than the previous release. We greatly optimized the CPU memory access time and also interrupt emulation. ARAnyM runs with the SDL TimerThread by default again. This gives us more flexibility (see the STOP insn below) and is necessary for the upcoming JIT CPU (just-in-time compilation of m68k code). ARAnyM supports STOP instruction that put the CPU to sleep. This works perfectly in latest EmuTOS (CVS version). ARAnyM does not eat CPU cycles when the EmuTOS is idle. ARAnyM configuration file changed its location and got more options: all ARAnyM user files are now located in $HOME/.aranym/ folder. The configuration file is named "config" (thus the complete path is $HOME/.aranym/config). The configuration file is created automatically if it is not found. The old $HOME/.aranymrc is not read, you have to update your new config file by hand. New noteworthy command line options include "--refresh " where you can specify the VIDEL refresh. ARAnyM now contains special support for native harddrive access from EmuTOS. This allows EmuTOS to actually boot from a harddrive attached to ARAnyM machine. Many many fixes - in floppy (formatting works), fVDI driver (colors after resolution change), NVRAM (year 2002 not 2001), MFP (TimerC) and more. Great thing for all Debian users - ARAnyM is now included in Debian Sid distribution. Last but not least - ARAnyM runs under Windows as well. You can compile the released source code with Cygwin to get Windows executable. Look into ChangeLog for more details. 2001/12/06 - version 0.0.11 released ========== The keyboard emulation in aranym has been rewritten and is based on pure scancodes now. Thanks to that the original TOS kbd tables should work on regular PC keyboards (at least English/USA works perfectly). You should be able to use any NVRAM configuration tool to switch your TOS kbd layout nationality from USA (now default) to any other of the six(teen) defined. Don't forget to update the Clocky.prg (current version available in src/atari/tools/ does not alter the original TOS keyboard by default). Previously there were errors when reading floppies with FastRAM enabled. Use the latest FastRAM v2.0 (available in src/atari/tools) and floppies will be OK - well, apart from those large floppies (4 MB and more) from STonX. These are NOT VALID floppies but rather single partitions of a harddrive. ARAnyM will handle them when we implement XHDI emulation. IKBD emulation was fixed so that Videlity config program works now. Videlity is a Falcon screen enhancer (freeware). Get it and enjoy Videl at 1024x768 :) fVDI was greatly improved so you might not need to play with Videlity at all. Use the new aranym.sys driver available in src/atari/fvdi/drivers/ and also the new fVDI.prg itself (src/atari/fvdi/). The patches for TOS 4.04 were cleaned up a lot. If you were using a prepatched TOS version please delete it and get the original TOS 4.04. IDE emulation was fixed so that formatting and partitioning of ext2 by a MiNT installer work now properly. Various bugfixes were done including ndebug, aranymfs, MMU040, command line parameters and more. If you want to debug aranym itself (in gdb) or to debug something inside of aranym using the internal debugger then you might want to disable the mouse grabbing completely: simply run aranym --nomouse (or -N). Last but not least - ARAnyM has been successfully ported to Solaris (with help of Francois LE COAT) and Windows/cygwin (thanks to Olivier Landemarre). 2001/11/06 ========== The TOS patch we used included WinX by a mistake. That's been removed. Now you'll need to install real GEMRAM and also WinX to your auto folder if you wish to use the WinX AES enhancements. Please note that the GEMRAM 1.0 from the Aratools does not work. It actually didn't work for a long time. Use the real GEMRAM (that copies ROM to RAM) instead if you want to use WinX. 2001/11/01 ========== Mouse behavior fixed: 1) you can release mouse grab by pressing Alt+Ctrl+Esc (VMware compatible) 2) you can grab mouse by click the left mouse button (VMware compatible) 3) if the Atari mouse driver is active, you can release mouse by moving the mouse off the window and by moving back you grab it again. This can be disabled by setting "AutoGrabMouse=No" in the config file. You can save the config file by 'aranym -s' (or --save). This is useful if you want to see newly added options. You can also choose a different config file by 'aranym -c /path/to/different/aranymrc'. This even works together: 'aranym -c /tmp/aranymrc.example -s' will create a fresh config file in /tmp with all default values. 2001/10/29 ========== --rom removed --floppy added aranymrc.example updated .aranymrc has a new option "EmuTOS" that holds a path to the EmuTOS. When "EmuTOS=" is defined the "TOS=" is ignored (EmuTOS is the future! :) 2001/10/18 ========== Aranym is now able to work with the original TOS 4.04. 2001/10/02 ========== --ttram renamed to --fastram -T renamed to -F --grab_mouse and -g removed (mouse is always grabbed) .aranymrc has a new option "cookie_MCH" that holds hex value. Example: cookie_MCH = 0x3000 is for standard Falcon _MCH Other details in src/ChangeLog aranym-0.9.15/README000066400000000000000000000106471213346724500137740ustar00rootroot00000000000000 ARAnyM (Atari Running on Any Machine) version 0.9.15 released on 2013/04/15 1) License ---------- ARAnyM 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. ARAnyM 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 ARAnyM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 2) What is this? ---------------- ARAnyM is a multiplatform virtual machine (a software layer, or an emulator) for running Atari ST/TT/Falcon operating systems and applications on almost any hardware with many host operating systems. The reason for writing ARAnyM is to provide Atari power users with faster and better machines. The ultimate goal is to create a new platform where TOS/GEM applications could continue to live forever. Features: --------- o 68040 CPU (including MMU040) o 68040 and 68881/2 FPU o 14 MB ST-RAM and up to 3824 MB (configurable) of FastRAM o VIDEL, Blitter, MFP, SCC, ACIA, IKBD for highest possible compatibility o Sound (compatible with Atari Falcon DMA Sound) o Atari floppy DD/HD for connecting floppy image or real floppy drive o two IDE channels for connecting disk images, harddrives or CD-ROMs o extended keyboard and mouse support (including mouse wheel) o direct access to host file system via BetaDOS and MiNT xfs drivers o networking using ethernet emulation with a driver for MiNT-Net o TOS 4.04, EmuTOS, MagiC or Linux-m68k as the boot operating system o runs with FreeMiNT, MagiC, and any other operating system that runs also on real Atari computer. o Native CD-ROM access (under Linux, other OS: audio CD only), without scsi/ide/whatsoever emulation o USB and PCI NatFeat support for developing Atari drivers on ARAnyM Important: ARAnyM is not finished. Consider this to be a beta version and a work-in-progress. Sorry for incomplete and confusing documentation. Any help with programming/documentation/porting is very welcome! 3) Installing ------------- See INSTALL file and http://wiki.aranym.org/ 4) Configuring and running -------------------------- See http://wiki.aranym.org/ 5) Keyboard shortcuts --------------------- Keys not found on a PC keyboard: -------------------------------- Atari Help key - mapped on the F11 Atari Undo key - mapped on the F12 Keys not found on Atari keyboard: --------------------------------- Page Up key - mapped as Shift+Arrow Up (usual combination in GEM apps) Page Down key - mapped as Shift+Arrow Down (usual combo in GEM apps) Special keys (most can be re-defined in the SETUP): ------------- Pause/Break - invoke SETUP GUI (ARAnyM on-the-fly configuration) Shift+Pause - QUIT ARAnyM Ctrl+Pause - REBOOT ARAnyM Alt+Pause - enter integrated debugger (only if started with "-D") PrintScreen - create a screenshot in actual directory Alt+Ctrl+Shift+Esc - release the keyboard/mouse input focus so you can use your keyboard and mouse in other host applications. Can be changed to other key combo in the Settings. Middle mouse does the same job. Scroll Lock - switch between windowed and fullscreen mode 10) Troubleshooting ------------------ If your Microsoft IntelliMouse doesn't work correctly on Linux framebuffer console you may want to set the SDL_MOUSEDEV_IMPS2 environment variable to 1. Example for bash: export SDL_MOUSEDEV_IMPS2=1; aranym 11) More information -------------------- Read the NEWS file for user visible changes. Read ChangeLog for internal changes. Look at TODO if you want to help us. Join our mailing list for ARAnyM users - the WEB interface for the list is at https://lists.bobek.cz/mailman/listinfo/cz-bobek-lists-aranym-user Visit http://aranym.org/ for latest information and source code. Help us improve the Wiki documentation at http://wiki.aranym.org/ For developers we have a developer mailing list and a CVS server. For details go to http://aranym.org/ The "Power Without The Price" is back! aranym-0.9.15/TODO000066400000000000000000000041121213346724500135720ustar00rootroot00000000000000Things to do eventually ----------------------- Fix bugs: - "-d" cmdline option doesn't work (doesn't win over config file settings) - [HOSTFS] settings into SETUP GUI ASAP - [ETHx] update with DNS IP address (requires FreeMiNT update) - colon as filename case sensitivity flag in HostFS - see Xavier's msg in ML Solution: come up with URL like paths: "file://path?parameter=value" where parameter is e.g. CaseSensitivity. Thanks to file:// scheme this should even be backward compatible. - correct postal address of GPL - don't store empty config entries (ETH2,3,4; DISK2,3,4,5,6,7; HOSFSA-Z, ..) TODO in keyboard support: - loadable keyboard layout (similar to hatari) - editable keyboard layout (need WYSIWYG - impossible in 320x200) TODO in TOS patches and utilities: - automatic updater of BDCONFIG.SYS - separate mouse driver from Clocky and make it NatFeat based - finish and publish TOS XHDI disk driver Some hot ideas (before they get forgotten) ------------------------------------------ Note that the name before a TODO item doesn't mean the item is assigned to that particular programmer but rather who is author of the idea :-) - Petr: make.sh magic: "nfeth-config.c" build by ./make.sh of the xif. - Petr: write some doc about bridging the tuntap - perhaps the following URL could help? http://tldp.org/HOWTO/Ethernet-Bridge-netfilter-HOWTO-3.html#ss3.1 - Petr: extend the config file routines to save also some comments above each head section. Example: # the following section defines hotkeys. Format is # hotkey = keycode : modifiers # where keycode and modifiers are defined in SDL_keysym.h [HOTKEYS] - Milan: SIGINT ndebug problem solution - Milan: --with-opengl-prefix - STanda: hostfs.cpp: enable debug and implement all NOT IMPLEMENTED needed methods. - patrice: rework dsp thread synchronization. It seems it may hang sometimes. - patrice: full automake/autoconf support. - patrice: C++-ize the input layer, get rid of various keytables hacks. - patrice: fvdi aranym.sys driver (m68k side) must follow the host surface R,G,B,A organization. aranym-0.9.15/acinclude.m4000066400000000000000000000174531213346724500153070ustar00rootroot00000000000000dnl Function to check for Mac OS X frameworks (stolen from Basilisk) dnl ARANYM_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES) AC_DEFUN([ARANYM_CHECK_FRAMEWORK], [ AS_VAR_PUSHDEF([ac_Framework], [aranym_cv_have_framework_$1])dnl AC_CACHE_CHECK([whether compiler supports framework $1], ac_Framework, [ saved_LIBS="$LIBS" LIBS="$LIBS -framework $1" AC_TRY_LINK( [$2], [], [AS_VAR_SET(ac_Framework, yes)], [AS_VAR_SET(ac_Framework, no); LIBS="$saved_LIBS"] ) ]) AS_IF([test AS_VAR_GET(ac_Framework) = yes], [AC_DEFINE(AS_TR_CPP(HAVE_FRAMEWORK_$1), 1, [Define if framework $1 is available.])] ) have_framework_$1=AS_VAR_GET(ac_Framework) AS_VAR_POPDEF([ac_Framework])dnl ]) dnl Find location of an existing Mac OS X framework dnl ARANYM_CHECK_FRAMEWORK_LOCATION($1=NAME) AC_DEFUN([ARANYM_CHECK_FRAMEWORK_LOCATION], [ AS_VAR_PUSHDEF([ac_Framework_Location], [aranym_cv_$1_location])dnl AC_CACHE_CHECK([location of $1 framework], ac_Framework_Location, [ AS_VAR_SET(ac_Framework_Location, "") echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework $1 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/$1.framework" if test -d "$framework_loc" ; then AS_VAR_SET(ac_Framework_Location, "$framework_loc") break; fi done ]) if test -z AS_VAR_GET(ac_Framework_Location) ; then AC_MSG_ERROR([$1 framework not found]) fi $1_LOCATION=AS_VAR_GET(ac_Framework_Location) AS_VAR_POPDEF([ac_Framework_Location])dnl ]) dnl Check whether the compiler recognizes bool AC_DEFUN([AC_CXX_BOOL], [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_bool, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[bool b = true; return f(b);], ac_cv_cxx_bool=yes, ac_cv_cxx_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_bool" = yes; then AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type]) fi ]) dnl Define a macro that translates a yesno-variable into a C macro definition dnl to be put into the config.h file dnl $1 -- the macro to define dnl $2 -- the value to translate dnl $3 -- template name AC_DEFUN([AC_TRANSLATE_DEFINE], [ if [[ "x$2" = "xyes" -o "x$2" = "xguessing yes" ]]; then AC_DEFINE([$1], 1, [$3]) fi ]) dnl Written by Laurynas Biveinis dnl GNU Autoconf macro AC_CXX_OPT(option) dnl Checks if C++ compiler supports specified option. dnl If yes - adds that option to CXXFLAGS. AC_DEFUN([AC_CXX_OPT], [ AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AC_LANG_CPLUSPLUS]) AC_MSG_CHECKING([if C++ compiler supports $1 option]) old_cxxflags=$CXXFLAGS CXXFLAGS="$1 $CXXFLAGS" AC_TRY_COMPILE([ ], [ ], test_opt=yes) if test -z test_opt; then CXXFLAGS=$old_cxxflags AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) fi ]) dnl Utility macro used by next two tests. dnl AC_EXAMINE_OBJECT(C source code, dnl commands examining object file, dnl [commands to run if compile failed]): dnl dnl Compile the source code to an object file; then convert it into a dnl printable representation. All unprintable characters and dnl asterisks (*) are replaced by dots (.). All white space is dnl deleted. Newlines (ASCII 0x10) in the input are preserved in the dnl output, but runs of newlines are compressed to a single newline. dnl Finally, line breaks are forcibly inserted so that no line is dnl longer than 80 columns and the file ends with a newline. The dnl result of all this processing is in the file conftest.dmp, which dnl may be examined by the commands in the second argument. dnl AC_DEFUN([gcc_AC_EXAMINE_OBJECT], [AC_LANG_SAVE AC_LANG_C dnl Next bit cribbed from AC_TRY_COMPILE. cat > conftest.$ac_ext < conftest.dmp $2 ifelse($3, , , else $3 )dnl fi rm -rf conftest* AC_LANG_RESTORE]) dnl Floating point format probe. dnl The basic concept is the same as the above: grep the object dnl file for an interesting string. We have to watch out for dnl rounding changing the values in the object, however; this is dnl handled by ignoring the least significant byte of the float. dnl dnl Does not know about VAX G-float or C4x idiosyncratic format. dnl It does know about PDP-10 idiosyncratic format, but this is dnl not presently supported by GCC. S/390 "binary floating point" dnl is in fact IEEE (but maybe we should have that in EBCDIC as well dnl as ASCII?) AC_DEFUN([gcc_AC_C_FLOAT_FORMAT], [AC_CACHE_CHECK(floating point format, ac_cv_c_float_format, [gcc_AC_EXAMINE_OBJECT( [/* This will not work unless sizeof(double) == 8. */ extern char sizeof_double_must_be_8 [sizeof(double) == 8 ? 1 : -1]; /* This structure must have no internal padding. */ struct possibility { char prefix[8]; double candidate; char postfix[8]; }; #define C(cand) { "\nformat:", cand, ":tamrof\n" } struct possibility table [] = { C( 3.25724264705901305206e+01), /* @@IEEEFP - IEEE 754 */ C( 3.53802595280598432000e+18), /* D__float - VAX */ C( 5.32201830133125317057e-19), /* D.PDP-10 - PDP-10 - the dot is 0x13a */ C( 1.77977764695171661377e+10), /* IBMHEXFP - s/390 format, ascii */ C(-5.22995989424860458374e+10) /* IBMHEXFP - s/390 format, EBCDIC */ };], [if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='VAX D-float' elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='PDP-10' elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IBM 370 hex' else AC_MSG_ERROR(Unknown floating point format) fi], [AC_MSG_ERROR(compile failed)]) ]) # IEEE is the default format. If the float endianness isn't the same # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN # (which is a tristate: yes, no, default). This is only an issue with # IEEE; the other formats are only supported by a few machines each, # all with the same endianness. format=IEEE_FLOAT_FORMAT fbigend= case $ac_cv_c_float_format in 'IEEE (big-endian)' ) if test $ac_cv_c_bigendian = no; then fbigend=1 fi if test $ac_cv_c_bigendian = universal; then fbigend=WORDS_BIGENDIAN fi ;; 'IEEE (little-endian)' ) if test $ac_cv_c_bigendian = yes; then fbigend=0 fi if test $ac_cv_c_bigendian = universal; then fbigend='!WORDS_BIGENDIAN' fi ;; 'VAX D-float' ) format=VAX_FLOAT_FORMAT ;; 'PDP-10' ) format=PDP10_FLOAT_FORMAT ;; 'IBM 370 hex' ) format=IBM_FLOAT_FORMAT ;; esac AC_DEFINE_UNQUOTED(HOST_FLOAT_FORMAT, $format, [Define to the floating point format of the host machine.]) if test -n "$fbigend"; then AC_DEFINE_UNQUOTED(HOST_FLOAT_WORDS_BIG_ENDIAN, $fbigend, [Define to 1 if the host machine stores floating point numbers in memory with the word containing the sign bit at the lowest address, or to 0 if it does it the other way around. This macro should not be defined if the ordering is the same as for multi-word integers.]) fi ]) aranym-0.9.15/aclocal.m4000066400000000000000000000307741213346724500147570ustar00rootroot00000000000000# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) # only at the first occurence in configure.ac, so if the first place # it's called might be skipped (such as if it is within an "if", you # have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Configure paths for SDL # Sam Lantinga 9/21/99 # stolen from Manish Singh # stolen back from Frank Belew # stolen from Manish Singh # Shamelessly stolen from Owen Taylor dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS dnl AC_DEFUN([AM_PATH_SDL], [dnl dnl Get the cflags and libraries from the sdl-config script dnl AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], sdl_prefix="$withval", sdl_prefix="") AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], sdl_exec_prefix="$withval", sdl_exec_prefix="") AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], , enable_sdltest=yes) if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi as_save_PATH="$PATH" if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi AC_PATH_PROG(SDL_CONFIG, sdl-config, no, [$PATH]) PATH="$as_save_PATH" min_sdl_version=ifelse([$1], ,0.11.0,$1) AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" dnl dnl Now check if the installed SDL is sufficiently new. (Also sanity dnl checks the results of sdl-config to some extent dnl rm -f conf.sdltest AC_TRY_RUN([ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } ],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then AC_MSG_RESULT(yes) ifelse([$2], , :, [$2]) else AC_MSG_RESULT(no) if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" AC_TRY_LINK([ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main ], [ return 0; ], [ echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], [ echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" ]) CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" ifelse([$3], , :, [$3]) fi AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) rm -f conf.sdltest ]) m4_include([acinclude.m4]) aranym-0.9.15/aranym.rdef000066400000000000000000000077341213346724500152500ustar00rootroot00000000000000/* * Copyright 2010 François Revol * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM 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. * * ARAnyM 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 ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ resource(1, "BEOS:APP_FLAGS") (#'APPF') $"09000000"; resource(101, "BEOS:L:STD_ICON") #'ICON' array { $"FFFFFFFFFFFFFFFFFFFF1D15AF0704020104D50F661C3FFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFF1AAE0227DE2703293D000028DDB31D3F3FFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFF0F26D5B3B427DE2703283D290029038C3F3F3F3FFFFFFFFFFF" $"FFFFFFFFFF1CD5DC168C0BDD00290227DE022702280129671D1F1D1FFFFFFFFF" $"FFFFFFFF1A258E60133D292928DE2802270428DE28290029671EB3191FFFFFFF" $"FFFFFF1C278D3F090029283D27DE28022703283D27292801016687041C1FFFFF" $"FFFFFFD5B41ED5002901B4DADE2928DE022905601A1A1C18002960B4031FFFFF" $"FFFF0FDC60080028DE2908122829290229D5673F131012111103D466000CFFFF" $"FF1C288DAE002828DE292929D508DE28D61A3F12280000293F0E018DD5011CFF" $"FF0CDDAD00283D2729DE29031B3F11261A3F122929DE29281F0D00D58D000AFF" $"1E01DCD500000C1CDD0000291E1F12011B1127022801091DDD012829AE04011D" $"1529DD012802D50E28B5120EAE0D0A123FD50028010E13AE8E072929B4080113" $"0C02273D27DE022701163F1E29000F1F17AE02280718873D1CAE2929DD09000C" $"07290228DE290C1E28113F1929113F18291614281FD6B51E28290327DED500D6" $"04002803283DAE3FDE292903873F1528181D1D19042929D53D2702DE27DD3304" $"020029DE282908AE01D5AF113F12D5AEB519180C0B11D4003D28DE2802D5293D" $"03290128DE28290005601F1A1804AE1F031612DE1E1F19D5290227DE28052903" $"D5000028DE280103603F120129131F1B401C1B1D1B1B1E1C032829DE28D50003" $"D43D0128DE29081A1F10270328010E3F28121F1EDE282903282928DE03D52906" $"8D270129DE01CE1F123D282901B512AE0A1818AE0A0CAE0F15D50228DD09010B" $"1B8C280028010C1C2801283DD56710291E3F0D011C3F1E181C0A2829D4D70113" $"3F1E8D2929000B1CDD2929033F0A2904603F8E29193F1101292929DD0C29001E" $"FF3F3FD43D00AE1F01000B1C28151629DE1C17291C0BD51A1D0A29AEDE020BFF" $"FF3F3F3FDD3305AE1414111010870B2801B50A273FD6D53F1404D5B402001CFF" $"FFFF60403FD50000183FAE011CB50029280229DE18D5081729038D01000DFFFF" $"FFFFFFD48D400A29292928DE2929280327DE2903273D2700DD11042904FFFFFF" $"FFFFFF1D02D46610270029DE29280227DE290327DE2900D48E0201011C1FFFFF" $"FFFFFFFF1B02018E87D403282929DE2828DE29292905ADB40300021AFEFFFFFF" $"FFFFFFFFFF1C070005AE8ED4D5DE02270227DD08B40CD50000061CFFFFFFFFFF" $"FFFFFFFFFFFFFF0F00000308D5B505D504DDD509052900000F1FFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFF1B0D0200000001020101000000010D1BFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFF1E150D0805020204080D151EFFFFFFFFFFFFFFFFFFFF" }; resource(101, "BEOS:M:STD_ICON") #'MICN' array { $"FFFFFFFF19AE073D02D5AD3FFFFFFFFF" $"FFFF1EAEAEB4283D2701298D3FFFFFFF" $"FFFFB4150428032702273D283F8D1DFF" $"FFAE873D281129DE29171515D5AE0DFF" $"1AD4DE022802870567A83D2816D50561" $"0DDD01AE0508160B87020511D401D58F" $"052803B40B1D041A0ED5110F0A27D5DF" $"0102288E03D51B0A1716D50527DE2803" $"0228DE2916120C1A87131E162903DD33" $"D5293D8710280413AE18D6B5D529D503" $"60DE2915290287041ED51E110A29D5AF" $"FF1A29110A870C09B50A871110D5021A" $"FF18863D0FDD0A2902270909DDD60DFF" $"FFFF09AED5DE292802273DD406071FFF" $"FFFFFF0C05D5D5DE04D5D53D0DFFFFFF" $"FFFFFFFF1A0D050302050D1AFFFFFFFF" }; resource(1, "BEOS:APP_SIG") (#'MIMS') "application/x-vnd.ARAnyM"; resource(1, "BEOS:FILE_TYPES") message { "types" = "application/x-atarist-rom", "types" = "application/x-atarist-disk" }; aranym-0.9.15/aranym.spec000066400000000000000000000324571213346724500152620ustar00rootroot00000000000000# generic defines used by all distributions. # %define ver 0.9.15 # # %define myrelease 1 %define mybuild 1 %define _rel %{myrelease}.%{mybuild} # define the package groups. If they all followed the same naming convention, # these would be the same. They don't, and so they aren't :( # %define suse_group System/Emulators/Others %define mandriva_group Console/Emulators %define fedora_group Console/Emulators # defaults # %define group Console/Emulators %define rel %{_rel} %define my_suse 0 %define my_mandriva 0 %define my_fedora 0 %define my_centos 0 %if 0%{?suse_version:1}%{?sles_version:1} %define my_suse 1 %endif # if present, use %distversion to find out which Mandriva version is being built # define %distversion and %_icondir in your .rpmmacros if build fails # %if 0%{?distversion:1} %if 0%{?!mandriva_version:1} %define mandriva_version %(echo $[%{distversion}/10]) %endif %endif %if 0%{?mandriva_version:1} %define my_mandriva 1 %define my_vendor mandriva %endif # if present, decode %dist to find out which OS package is being built on # %if 0%{?dist:1} # Centos or Fedora # %define my_which_os %(i=%{dist} ; if [ "${i::3}" == ".fc" ] ; then echo "1" ; else echo "0" ; fi ) %if %{my_which_os} %if 0%{?!fedora_version:1} %define fedora_version %(i=%{dist} ; echo "${i:3}" ) %endif %else %if 0%{?!centos_version:1} %define centos_version %(i=%{dist} ; echo "${i:3}00" ) %endif %endif %endif %if 0%{?fedora_version:1} %define my_fedora 1 %define my_vendor fedora %endif %if 0%{?centos_version:1} %define my_centos 1 %define my_vendor centos %endif %if %{my_suse} %if %{suse_version} %define rel %{myrelease}.suse%(echo $[%suse_version/10]).%{mybuild} %else %define rel %{myrelease}.sles%{sles_version}.%{mybuild} %endif %define group %{suse_group} %endif # building on a Mandriva/Mandrake Linux system. # # this should create a release that conforms to the Mandriva naming conventions. # %if %{my_mandriva} %define rel %{myrelease}.mdv%{mandriva_version}.%{mybuild} %define group %{mandriva_group} %endif # building on a Fedora Core Linux system. # # this should create a release that conforms to the Fedora naming conventions. # %if %{my_fedora} %if 0%{?!fedora_version:1} %define fedora_version %(i="%dist" ; echo "${i:3}") %endif %if 0%{?!dist:1} %define dist .fc%{fedora_version} %endif %define rel %{myrelease}%{dist}.%{mybuild} %define group %{fedora_group} %endif # building on a Centos Linux system. # # this should create a release that conforms to the Centos naming conventions. # %if %{my_centos} %if 0%{?!centos_version:1} %define centos_version %(i="%dist" ; echo "${i:3}") %endif %if 0%{?!dist:1} %define dist .el%{centos_version} %endif %define rel %{myrelease}%{dist}.%{mybuild} %define group %{fedora_group} %endif # move the icons into a standardised location # %if 0%{?!_icondir:1} %define _icondir %{_datadir}/icons/hicolor/ %endif # ensure where RPM thinks the docs should be matches reality # gets around SUSE using %{_prefix}/share/doc/packages and # fedora using %{_defaultdocdir} # %define _docdir %{_prefix}/share/doc %if %{my_suse} Requires: libSDL-1_2-0 >= 1.2.10 Requires: libSDL_image-1_2-0 >= 1.2.5 Requires: zlib >= 1.2.3 Requires: libmpfr4 >= 3.0.0 Requires: libusb-1_0-0 >= 1.0.0 BuildRequires: libSDL-devel >= 1.2.10 BuildRequires: libSDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: mpfr-devel >= 3.0.0 BuildRequires: libusb-1_0-devel >= 1.0.0 BuildRequires: update-desktop-files BuildRequires: make %endif %if %{my_mandriva} Requires: libSDL1.2_0 >= 1.2.10 Requires: libSDL_image1.2_0 >= 1.2.5 Requires: zlib >= 1.2.3 Requires: libmpfr4 >= 3.0.0 Requires: libusb1.0_0 >= 1.0.0 BuildRequires: libSDL-devel >= 1.2.10 BuildRequires: libSDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: libmpfr-devel >= 3.0.0 BuildRequires: libusb1-devel >= 1.0.0 %endif %if %{my_fedora} Requires: SDL >= 1.2.10 Requires: SDL_image >= 1.2.5 Requires: zlib >= 1.2.3 Requires: mpfr >= 3.0.0 Requires: libusb1 >= 1.0.0 BuildRequires: SDL-devel >= 1.2.10 BuildRequires: SDL_image-devel >= 1.2.5 BuildRequires: zlib-devel >= 1.2.3 BuildRequires: mpfr-devel >= 3.0.0 BuildRequires: libusb1-devel >= 1.0.0 %endif # Now for the meat of the spec file # Name: aranym Version: %{ver} Release: %{rel} License: GPLv2 Summary: 32-bit Atari personal computer (similar to Falcon030 but better) virtual machine URL: http://aranym.org/ Group: %{group} Source0: http://prdownloads.sourceforge.net/aranym/%{name}_%{version}.orig.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot Requires: hicolor-icon-theme BuildRequires: hicolor-icon-theme BuildRequires: desktop-file-utils BuildRequires: gcc-c++ #Patch0: aranym-0.9.7beta-desktop.patch %description ARAnyM is a software only TOS clone - a virtual machine that allows you to run TOS, EmuTOS, FreeMiNT, MagiC and Linux-m68k operating systems and their applications. Authors: Ctirad Fertr, Milan Jurik, Standa Opichal, Petr Stehlik, Johan Klockars, Didier MEQUIGNON, Patrice Mandin and others (see AUTHORS for a full list). %prep %setup -q #%%patch0 %build # JIT only works on i586 # %ifarch %ix86 %configure --enable-jit-compiler --enable-usbhost %{__make} depend %{__make} %{__mv} aranym aranym-jit %{__make} clean %endif %configure --enable-fullmmu --enable-lilo --enable-usbhost %{__make} depend %{__make} %{__mv} aranym aranym-mmu %{__make} clean %configure --enable-usbhost %{__make} depend %{__make} %install mkdir -p %{buildroot}%{_bindir} mkdir -p %{buildroot}/%{_mandir}/man1 mkdir -p %{buildroot}/%{_datadir}/aranym make install DESTDIR=%{buildroot} install -m 755 aranym-mmu %{buildroot}%{_bindir} # should be 4755 but build fails due to SUID bit set # install -m 755 aratapif %{buildroot}%{_bindir} # JIT only works on i586 # %ifarch %ix86 install -m 755 aranym-jit %{buildroot}%{_bindir} %endif # add a desktop menu entry # mkdir -p %{buildroot}/%{_datadir}/applications mkdir -p %{buildroot}/%{_icondir}/32x32/apps mkdir -p %{buildroot}/%{_icondir}/48x48/apps install -m 644 contrib/icon-32.png %{buildroot}/%{_icondir}/32x32/apps/aranym.png install -m 644 contrib/icon-48.png %{buildroot}/%{_icondir}/48x48/apps/aranym.png %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}.desktop %{buildroot}/%{_datadir}/applications/%{name}.desktop %if %{my_suse} %suse_update_desktop_file -i %{name} %endif %if %{my_mandriva} desktop-file-install \ --delete-original \ --dir %{buildroot}%{_datadir}/applications \ --add-category System \ --add-category Emulator \ %{buildroot}/%{_datadir}/applications/%{name}.desktop %endif %endif %if %{my_fedora} install -m 644 contrib/%{name}.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}.desktop desktop-file-install \ --delete-original \ --vendor %{my_vendor} \ --dir %{buildroot}%{_datadir}/applications \ --add-category X-Fedora \ --add-category System \ --add-category Emulator \ %{buildroot}/%{_datadir}/applications/%{my_vendor}-%{name}.desktop %endif %ifarch %ix86 %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}-jit.desktop %{buildroot}/%{_datadir}/applications/%{name}-jit.desktop %endif %if %{my_fedora} install -m 644 contrib/%{name}-jit.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}-jit.desktop %endif %else %{__rm} %{buildroot}/%{_mandir}/man1/%{name}-jit.1* %endif %if %{my_suse}%{my_mandriva} install -m 644 contrib/%{name}-mmu.desktop %{buildroot}/%{_datadir}/applications/%{name}-mmu.desktop %endif %if %{my_fedora} install -m 644 contrib/%{name}-mmu.desktop %{buildroot}%{_datadir}/applications/%{my_vendor}-%{name}-mmu.desktop %endif %if %{my_mandriva} %post %update_menus %endif %if %{my_mandriva} %postun %clean_menus %endif %clean %{__rm} -rf %{buildroot} %{__rm} -rf %{_tmppath}/%{name}-%{version}-%{release}-buildroot %files %defattr(-,root,root) %{_mandir}/man1/%{name}.1* %{_mandir}/man1/aratapif.1* %{_datadir}/%{name} %{_docdir}/%{name} %{_icondir}/32x32/apps/%{name}.png %{_icondir}/48x48/apps/%{name}.png %{_datadir}/applications/*%{name}.desktop %{_bindir}/aratapif %{_bindir}/aranym # JIT only works on i586 # %ifarch %ix86 %{_bindir}/aranym-jit %{_mandir}/man1/%{name}-jit.1* %{_datadir}/applications/*%{name}-jit.desktop %endif %defattr(-,root,root) %{_bindir}/aranym-mmu %{_mandir}/man1/%{name}-mmu.1* %{_datadir}/applications/*%{name}-mmu.desktop %changelog * Mon Apr 15 2013 Petr Stehlik 0.9.15 New ARAnyM release. * Fri Mar 23 2012 Petr Stehlik 0.9.13 New ARAnyM release. Make use of two new desktop files. Mandriva desktop files without the vendor prefix. * Sat Mar 17 2012 Petr Stehlik 0.9.12 New ARAnyM release. New FPU emulation for MMU mode (using MPFR) New Native Features enabled (PCI, USB) New dependencies (zlib, mpfr, libusb) * Wed May 26 2010 Petr Stehlik 0.9.10 New ARAnyM release. Icons moved to icons dir. Source archive filename follows Debian convention. * Sat Sep 05 2009 Petr Stehlik 0.9.9 New ARAnyM release. * Sat Apr 25 2009 Petr Stehlik New ARAnyM release. * Sat Nov 08 2008 Petr Stehlik New ARAnyM release. * Wed Jan 30 2008 Petr Stehlik Added SDL_image to Requires: Bumped the minimal SDL version to 1.2.10 Enabled the Requires: for mandriva (still untested) * Tue Jan 29 2008 Petr Stehlik Desktop file corrected and renamed to lowercase. _icondir defined for Fedora. For other changes see ChangeLog. * Mon Jan 28 2008 Petr Stehlik The right icon added. Desktop file updated. Build system root changed. New release. Version increased. Other changes in NEWS file. * Mon Jul 09 2007 Petr Stehlik New release. Version increased. Other changes in NEWS file. * Tue Oct 11 2006 David Bolt 0.9.4beta Added an aranym.desktop file for inclusion in desktop menus. Temporarily uses emulator.png as the menu icon. Added bits to spec file to try and build packages for (open)SUSE, Mandriva and Fedora Core distributions without any changes. * Fri Sep 22 2006 Petr Stehlik New release. Version increased. Other changes in NEWS file. Thanks to David Bolt this spec file is nicely updated - does not fail on 64bit anymore. Thanks, David! * Mon Feb 20 2006 Petr Stehlik URL changed to aranym.org. Version increased. Other changes in NEWS file. * Sun Apr 17 2005 Petr Stehlik Files list fixed. * Thu Apr 14 2005 Petr Stehlik Version increased. NFJPEG enabled. * Tue Feb 22 2005 Petr Stehlik Version increased. aranymrc.example removed. * Sun Feb 20 2005 Petr Stehlik Version increased. LILO enabled in the MMU version. * Sun Nov 07 2004 Petr Stehlik Version increased. * Tue Jul 06 2004 Petr Stehlik Version increased. * Mon Jul 05 2004 Petr Stehlik Version increased. tools/createdisk/ removed. tools/arabridge added. For other changes see the NEWS file. * Sun Feb 15 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Sun Feb 08 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Wed Jan 07 2004 Petr Stehlik Version increased. For other changes see the NEWS file. * Sat Jan 03 2004 Petr Stehlik font8.bmp removed. * Sat Oct 04 2003 Petr Stehlik Version increased. NFCDROM.BOS added. * Fri Apr 11 2003 Petr Stehlik Man dir fixed. Debug info disabled. * Mon Apr 08 2003 Petr Stehlik Various fixes for the 0.8.0. And full 68040 PMMU build added as aranym-mmu. Also manual page added. * Mon Mar 24 2003 Petr Stehlik HostFS and network drivers added. ARATAPIF installed setuid root. Ethernet enabled. * Sun Mar 23 2003 Petr Stehlik Version increased for the new release. See the NEWS file for details. * Fri Mar 07 2003 Petr Stehlik Fixed paths to share/aranym folder. * Wed Jan 29 2003 Petr Stehlik New release. Updated list of provided files. * Tue Oct 22 2002 Petr Stehlik aranym-jit (JIT compiler for m68k CPU) generated. * Sun Oct 20 2002 Petr Stehlik EmuTOS image file renamed back. * Sat Oct 12 2002 Petr Stehlik EmuTOS image file renamed. Updated for new release. * Sun Jul 21 2002 Petr Stehlik SDL GUI font and EmuTOS image files added. * Sat Jul 20 2002 Petr Stehlik Version increased. * Thu Jun 06 2002 Petr Stehlik Install path changed from /usr/local to /usr * Mon Apr 22 2002 Petr Stehlik Sound driver added * Sun Apr 14 2002 Petr Stehlik First working version aranym-0.9.15/atari/000077500000000000000000000000001213346724500142045ustar00rootroot00000000000000aranym-0.9.15/atari/CONFIGVARS000066400000000000000000000020051213346724500155650ustar00rootroot00000000000000# # cross compiling # ifneq (yes,$(M68K_ATARI_MINT_CROSS)) CROSS = no else CROSS = yes endif # # target and host compiler # ifeq ($(CROSS),yes) CROSSPREFIX=m68k-atari-mint- NATIVECC = gcc NATIVECFLAGS = -O -Wall CRLF = echo crlf -s # e.g. when you don't have the mintlib/gemlib/cflib in # the /usr/m68k-atari/mint GENERAL = $(M68K_ATARI_MINT_CFLAGS) $(M68K_ATARI_MINT_LDFLAGS) else CROSSPREFIX= NATIVECC = gcc NATIVECFLAGS = -O -Wall CRLF = crlf -s endif CC = $(CROSSPREFIX)gcc AS = $(CC) AR = $(CROSSPREFIX)ar RANLIB = $(CROSSPREFIX)ranlib STRIP = $(CROSSPREFIX)strip FLAGS = $(CROSSPREFIX)flags # # some tools # YACC = bison -dk LEX = flex MV = mv CP = cp RM = rm -f TOUCH = touch MKDIR = mkdir SED = sed # # optimizations # OPTS = -O2 -finline-functions -fomit-frame-pointer # # warning options # WARN = \ -Wall \ -Wmissing-prototypes \ -Wshadow \ -Wpointer-arith \ -Wcast-qual \ -Waggregate-return # -Winline \ # # default definitions # DEFINITIONS = # # model type # MODEL = aranym-0.9.15/atari/hostfs/000077500000000000000000000000001213346724500155125ustar00rootroot00000000000000aranym-0.9.15/atari/hostfs/README000066400000000000000000000015531213346724500163760ustar00rootroot00000000000000hostfs.xfs ========== The .xfs driver is now maintained in the FreeMiNT CVS repository. hostfs.dos ========== This is the MetaDOS driver that makes use of the NatFeat .XFS interface. Basicaly it is the FreeMiNT file IO GEMDOS implementation (FreeMiNT_CVS/sys/ dosfile.c dosdir.c) mangled so that it compiles as a standalone binary. Installation ------------ MetaDOS driver: * copy new hostfs.dos to your AUTO folder and add the entries into your bdconfig.sys, as follows: \AUTO\HOSTFS.DOS, E:E \AUTO\HOSTFS.DOS, F:F This example maps drives E: and F:. BUGS ---- hostfs.dos - relocatable programs crash due to a serious bug in MetaDOS. Use BetaDOS instead (version 3.12+ might be available at http://www.ettnet.se/~dlanor/main/html/ra_files.htm). Compilation ----------- * use make.sh to compile * the binary is placed into the bin subfolder aranym-0.9.15/atari/hostfs/bdconfig.sys000066400000000000000000000070351213346724500200320ustar00rootroot00000000000000;---------------------------------------------------------------------------- ;File name: BDCONFIG.SYS Revision date: 1998.08.27 ;Purpose: BetaDos configuration Creation date: 1998.02.27 ;---------------------------------------------------------------------------- ;(C)1998 by Ronald Andersson Email: dlanor@oden.se ;---------------------------------------------------------------------------- ;The first four entries are commented out, partly because you may not have ;a CD-ROM to use them for, and partly because I have no distribution rights ;for the BOS drivers. They are from the SPIN distribution by Julian Reschke ;and from ExtenDOS, and are what I use for CD-ROM access on my Falcon030. ; ;;;*BOS, c:\auto\cd.bos, A:13.0 ;;;*BOS, c:\auto\spin_sd.bos, B:14\0 ;;;*DOS, c:\auto\unidrive.dos, X:A ;;;*DOS, c:\auto\bd_9660f.dos, Y:B ; ;One DOS driver above is my own, and is a slightly improved ISO9660F version. ;This has been completely restructured, so as to simplify adding new abilities ;(when I get time for that) such as support of long filenames and Dopendir etc. ; ;The filesystems below are my own, though 'Cook_FS' was inspired by Julian ;Reschkes 'CookieFS'. His pioneer effort in producing new DOS sources gave ;me the impetus (and needed knowledge) to start the BetaDos project. ; ;Cluster.DOS implements a drive that holds a 'cluster' of other drives, that ;are presented as subfolders, similar to the U: drive of MagiC and MiNT. ;The main difference is that this one works in SingleTOS as well... ;As yet many features of U: are still missing of course (\proc, \dev, etc.), ;but some of these will be added later (especially link stuff). ; ;For SingleTOS users I recommend editing the 'V:0' of Cluster.Dos to 'U:0'... ;Or like me, use both. V: can also be used under MagiC and MiNT, so it has ;proven a useful medium for symbolic links that can be used identically in ;all available TOS systems, with or without multitasking. I use it a lot ! ; ;*DOS, c:\auto\cluster.dos, V:0 ;*DOS, c:\auto\cook_fs.dos, W:1 ; ;Cook_FS is just another cookie filesystem, based on exactly the principles ;and methods in Julian Reschke's CookieFS. It has been completely recoded ;though this did not motivate many changes, except where it concerned the ;new object linking method, which enforced some changes. ; ;As yet these filesystems can be considered FreeWare, but I make no promises ;as to what policy I will apply regarding future versions... ; ;In addition to the 'classic' MetaDOS commands, BetaDOS now also supports a ;new command '*SLB,' Identically to how that has been implemented by Julian Reschke in his MetaDOS enhancements. So BetaDOS remains MetaDOS compatible. ; ;*SLB, c:\auto\slb_load.ovl c:\gemsys\magic\xtension ; ;Only one such command per BDCONFIG.SYS file is meaningful, and the path at ;the end specifies the default path BetaDOS will look for .SLB files in. If ;the SLBPATH environment variable is used, this replaces the default path ;with a proper path list. The *SLB, command is still needed though, because ;if it is not used BetaDOS will ignore the new GEMDOS functions Slbopen and ;Slbclose, so the shared code libraries will not be accessible then. ;Thanks go to Julian Reschke again for providing much info on the SLB stuff. ; ;ARAnyM HOSTFS configuration *DOS, \auto\hostfs.dos, M:M ;ARAnyM HOSTFS configuration end ;---------------------------------------------------------------------------- ;End of file: BDCONFIG.SYS ;---------------------------------------------------------------------------- aranym-0.9.15/atari/hostfs/hostfs_nfapi.h000066400000000000000000000024731213346724500203540ustar00rootroot00000000000000/* * joy 2003 * * trying to clean up the NFAPI mess * * GPL */ #ifndef _HOSTFS_NFAPI_H #define _HOSTFS_NFAPI_H /* * General versioning rules: * The driver version is literaly HOSTFS_XFS_VERSION.HOSTFS_NFAPI_VERSION * * note: therefore you need to be careful and set the NFAPI_VERSION like * 0x or something if needed. */ /* * general XFS driver version */ #define HOSTFS_XFS_VERSION 0 #define BETA /* if you change anything in the enum {} below you have to increase this HOSTFS_NFAPI_VERSION! */ #define HOSTFS_NFAPI_VERSION 04 enum { GET_VERSION = 0, /* subID = 0 */ GET_DRIVE_BITS, /* get mapped drive bits */ /* hostfs_xfs */ XFS_INIT, XFS_ROOT, XFS_LOOKUP, XFS_CREATE, XFS_GETDEV, XFS_GETXATTR, XFS_CHATTR, XFS_CHOWN, XFS_CHMOD, XFS_MKDIR, XFS_RMDIR, XFS_REMOVE, XFS_GETNAME, XFS_RENAME, XFS_OPENDIR, XFS_READDIR, XFS_REWINDDIR, XFS_CLOSEDIR, XFS_PATHCONF, XFS_DFREE, XFS_WRITELABEL, XFS_READLABEL, XFS_SYMLINK, XFS_READLINK, XFS_HARDLINK, XFS_FSCNTL, XFS_DSKCHNG, XFS_RELEASE, XFS_DUPCOOKIE, XFS_SYNC, XFS_MKNOD, XFS_UNMOUNT, /* hostfs_dev */ DEV_OPEN, DEV_WRITE, DEV_READ, DEV_LSEEK, DEV_IOCTL, DEV_DATIME, DEV_CLOSE, DEV_SELECT, DEV_UNSELECT, /* new from 0.04 */ XFS_STAT64 }; extern unsigned long nf_hostfs_id; #define HOSTFS(a) (nf_hostfs_id + a) #endif /* _HOSTFS_NFAPI_H */ aranym-0.9.15/atari/hostfs/make.sh000077500000000000000000000013351213346724500167700ustar00rootroot00000000000000if [ x"$FREEMINT_SRC_HOME" = x ]; then FREEMINT_SRC_HOME=/home/joy/mint/freemint fi if [ ! -e "$FREEMINT_SRC_HOME/COPYING.MiNT" ]; then echo "The $FREEMINT_SRC_HOME seems not to be the FreeMiNT CVS root"; exit 1; fi HOSTFS_BUILD_HOME="$FREEMINT_SRC_HOME/sys/xfs" # copy the sources into the FreeMiNT cvs tree cp -r ../hostfs/metados "$HOSTFS_BUILD_HOME"/hostfs cp -r ../natfeat "$HOSTFS_BUILD_HOME" # build them (all or debug targets are available) (cd "$HOSTFS_BUILD_HOME/hostfs/metados"; make distclean; make $@) # move the binaries into the bin folder mkdir -p bin cp "$HOSTFS_BUILD_HOME"/hostfs/metados/*.dos bin # cleanup the FreeMiNT cvs tree #rm -rf "$HOSTFS_BUILD_HOME/hostfs" #rm -rf "$HOSTFS_BUILD_HOME/natfeat" aranym-0.9.15/atari/hostfs/metados/000077500000000000000000000000001213346724500171465ustar00rootroot00000000000000aranym-0.9.15/atari/hostfs/metados/BINFILES000066400000000000000000000002331213346724500202620ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go only into binary distributions. BINFILES = hostfs.dos aranym-0.9.15/atari/hostfs/metados/EXTRAFILES000066400000000000000000000003011213346724500205310ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go only into source distributions. SRCFILES += BINFILES EXTRAFILES MISCFILES Makefile SRCFILES aranym-0.9.15/atari/hostfs/metados/MISCFILES000066400000000000000000000002351213346724500204070ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go both into source and binary distributions. MISCFILES = aranym-0.9.15/atari/hostfs/metados/Makefile000066400000000000000000000044721213346724500206150ustar00rootroot00000000000000# # Makefile for hostfs.xfs # # If you got these sources as part of STonX note: # - You have to copy all files of this directory into the FreeMiNT source # tree at "sys/xfs/hostfs". Instead of you may change top_srcdir at this # Makefile to "sys" directory of the MiNT source tree. # "make" does only work, if you do so! # # Note: You need a crosscompiler to make hostfs.xfs or a native m68k-atari-mint # gcc, make etc. # To use crosscompiling change the variables at CONFIGVARS. # To crosscompile even FreeMiNT, you may have to change CRLF at # CONFIGVARS (e.g. say "CRLF = echo crlf"). There may be additional # errors, because of using "flags" at some sub-Makefiles. Comment out # "flags"-calls at those Makefiles (resulting programms will only work # if you're running at least version 1.15.10 of FreeMiNT. # TARGET = hostfs.dos GENFILES = $(TARGET) .xfso .natfeat SHELL = /bin/sh SUBDIRS = srcdir = . top_srcdir = ../../.. subdir = metados include $(top_srcdir)/CONFIGVARS include $(top_srcdir)/RULES include $(top_srcdir)/PHONY all-here: $(TARGET) debug: $(MAKE) DEBUG_INFO="-DDEBUG_INFO" # default overwrites INCLUDES = -I$(top_srcdir) -I.natfeat DEFINITIONS = LD = $(CC) -nostdlib -Wl,--entry -Wl,_init LIBS = $(LIBKERN) -lgcc CPU = 000 # ensure that FreeMiNT CVS proc.h is never loaded MDFLAGS = -D_mint_proc_h -D_libkern_kernel_xfs_xdd_h # some little code pieces needs to be metados dependent MDFLAGS += -D__KERNEL_XFS__ MDFLAGS += -DARAnyM_MetaDOS MDFLAGS += $(DEBUG_INFO) CFLAGS += $(MDFLAGS) # default definitions OBJS = $(COBJS:.c=.o) $(SOBJS:%.S=%.o) .xfso: $(srcdir)/../hostfs_xfs.c $(srcdir)/../hostfs_dev.c $(MKDIR) -p $@ $(CP) -r $(srcdir)/../hostfs_xfs.c $(srcdir)/../hostfs_dev.c $@ $(CP) -r $(srcdir)/../hostfs_xfs.h $(srcdir)/../hostfs_dev.h $@ $(CP) -r $(srcdir)/../hostfs_nfapi.h $@ touch $@/BINFILES touch $@/EXTRAFILES touch $@/MISCFILES echo "COBJS = hostfs_xfs.c hostfs_dev.c" >$@/SRCFILES $(CP) Makefile.xfso $@/Makefile cd $@; $(MAKE) CPU=$(CPU) MDFLAGS="$(MDFLAGS)" .natfeat: $(srcdir)/../../natfeat $(MKDIR) -p $@ $(CP) -r $ # include static void VDEBUGOUT (int, const char *, va_list); int debug_level = 10; /* how much debugging info should we print? */ # if 1 int out_device = 2; /* BIOS device to write errors to */ # else int out_device = 6; # endif /* * out_next[i] is the out_device value to use when the current * device is i and the user hits F3. * Cycle is CON -> PRN -> AUX -> MIDI -> 6 -> 7 -> 8 -> 9 -> CON * (Note: BIOS devices 6-8 exist on Mega STe and TT, 9 on TT.) * * out_device and this table are exported to bios.c and used here in HALT(). */ /* 0 1 2 3 4 5 6 7 8 9 */ char out_next[] = { 1, 3, 0, 6, 0, 0, 7, 8, 9, 2 }; /* * debug log modes: * * 0: no logging. * 1: log all messages, dump the log any time something happens at * a level that gets shown. Thus, if you're at debug_level 2, * everything is logged, and if something at levels 1 or 2 happens, * the log is dumped. * * LB_LINE_LEN is 20 greater than SPRINTF_MAX because up to 20 bytes * are prepended to the buffer string passed to ksprintf. */ # ifdef DEBUG_INFO # define LBSIZE 50 /* number of lines */ # else # define LBSIZE 15 # endif # define LB_LINE_LEN (SPRINTF_MAX + 20) /* width of a line */ static char logbuf [LBSIZE][LB_LINE_LEN]; static ushort logtime [LBSIZE]; /* low 16 bits of 200 Hz: timestamp of msg */ int debug_logging; int logptr; /* NatFeat functions defined */ static long _NF_getid = 0x73004e75L; static long _NF_call = 0x73014e75L; #define nfGetID(n) (((long _cdecl (*)(const char *))&_NF_getid)n) #define nfCall(n) (((long _cdecl (*)(long, ...))&_NF_call)n) #define nf_stderr(str) \ (nfCall((nfGetID(("NF_STDERR")),str))) #ifndef ARAnyM_MetaDOS /* * The inner loop does this: at each newline, the keyboard is polled. If * you've hit a key, then it's checked: if it's ctl-alt, do_func_key is * called to do what it says, and that's that. If not, then you pause the * output. If you now hit a ctl-alt key, it gets done and you're still * paused. Only hitting a non-ctl-alt key will get you out of the pause. * (And only a non-ctl-alt key got you into it, too!) * * When out_device isn't the screen, number keys give you the same effects * as function keys. The only way to get into this code, however, is to * have something produce debug output in the first place! This is * awkward: Hit a key on out_device, then hit ctl-alt-F5 on the console so * bios.c will call DUMPPROC, which will call ALERT, which will call this. * It'll see the key you hit on out_device and drop you into this loop. * CTL-ALT keys make BIOS call do_func_key even when out_device isn't the * console. */ void debug_ws (const char *s) { long key; int scan; int stopped; while (*s) { (void) Bconout (out_device, *s); while (*s == '\n' && out_device != 0 && Bconstat (out_device)) { stopped = 0; while (1) { if (out_device == 2) { /* got a key; if ctl-alt then do it */ if ((Kbshift (-1) & 0x0c) == 0x0c) { key = Bconin (out_device); scan = (int) (((key >> 16) & 0xff)); do_func_key (scan); goto ptoggle; } else { goto cont; } } else { key = Bconin (out_device); if (key < '0' || key > '9') { ptoggle: /* not a func key */ if (stopped) break; else stopped = 1; } else { /* digit key from debug device == Fn */ if (key == '0') scan = 0x44; else scan = (int) (key - '0' + 0x3a); do_func_key (scan); } } } } cont: s++; } } #else void debug_ws (const char *s) { nf_stderr(s); } #endif // ARAnyM_MetaDOS /* * _ALERT(s) returns 1 for success and 0 for failure. * It attempts to write the string to "the alert pipe," u:\pipe\alert. * If the write fails because the pipe is full, we "succeed" anyway. * * This is called in vdebugout and also in mprot0x0.c for memory violations. * It's also used by the Salert() system call in dos.c. */ int _ALERT (char *s) { #ifndef ARAnyM_MetaDOS FILEPTR *fp; long ret; /* temporarily reduce the debug level, so errors finding * u:\pipe\alert don't get reported */ int olddebug = debug_level; int oldlogging = debug_logging; debug_level = 0; debug_logging = 0; ret = FP_ALLOC (rootproc, &fp); if (!ret) ret = do_open (&fp, "u:\\pipe\\alert", (O_WRONLY | O_NDELAY), 0, NULL); debug_level = olddebug; debug_logging = oldlogging; if (!ret) { char *alert; /* format the string into an alert box */ if (*s == '[') { /* already an alert */ alert = s; } else { char alertbuf [SPRINTF_MAX + 10]; char *ptr; char *lastspace; int counter; alert = alertbuf; ksprintf (alertbuf, sizeof (alertbuf), "[1][%s", s); /* make sure no lines exceed 30 characters; * also, filter out any reserved characters * like '[' or ']' */ ptr = alertbuf + 4; counter = 0; lastspace = 0; while (*ptr) { if (*ptr == ' ') { lastspace = ptr; } else if (*ptr == '[') { *ptr = '('; } else if (*ptr == ']') { *ptr = ')'; } else if (*ptr == '|') { *ptr = ':'; } if (counter++ >= 29) { if (lastspace) { *lastspace = '|'; counter = (int) (ptr - lastspace); lastspace = 0; } else { *ptr = '|'; counter = 0; } } ptr++; } strcpy (ptr, "][ OK ]"); } (*fp->dev->write)(fp, alert, strlen (alert) + 1); do_close (rootproc, fp); return 1; } #endif // ARAnyM_MetaDOS return 0; } static void VDEBUGOUT (int level, const char *s, va_list args) { char *lp; char *lptemp; long len; logtime [logptr] = (ushort)(*(long *) 0x4baL); lptemp = lp = logbuf [logptr]; len = LB_LINE_LEN; if (++logptr == LBSIZE) logptr = 0; #ifndef ARAnyM_MetaDOS if (curproc) { ksprintf (lp, len, "pid %3d (%s): ", curproc->pid, curproc->name); lptemp += strlen (lp); len -= strlen (lp); } #endif // ARAnyM_MetaDOS kvsprintf (lptemp, len, s, args); /* for alerts, try the alert pipe unconditionally */ if (level == ALERT_LEVEL && _ALERT (lp)) return; if (debug_level >= level) { debug_ws (lp); debug_ws ("\r\n"); } } void _cdecl Tracelow (const char *s, ...) { if (debug_logging || (debug_level >= LOW_LEVEL)) { va_list args; va_start (args, s); VDEBUGOUT (LOW_LEVEL, s, args); va_end (args); } } void _cdecl Trace (const char *s, ...) { if (debug_logging || (debug_level >= TRACE_LEVEL)) { va_list args; va_start (args, s); VDEBUGOUT (TRACE_LEVEL, s, args); va_end (args); } } void _cdecl Debug (const char *s, ...) { if (debug_logging || (debug_level >= DEBUG_LEVEL)) { va_list args; va_start (args, s); VDEBUGOUT (DEBUG_LEVEL, s, args); va_end (args); } if (debug_logging && (debug_level >= DEBUG_LEVEL)) DUMPLOG (); } void _cdecl ALERT (const char *s, ...) { if (debug_logging || debug_level >= ALERT_LEVEL) { va_list args; va_start (args, s); VDEBUGOUT (ALERT_LEVEL, s, args); va_end (args); } if (debug_logging && (debug_level >= ALERT_LEVEL)) DUMPLOG (); } void _cdecl FORCE (const char *s, ...) { va_list args; va_start (args, s); VDEBUGOUT (FORCE_LEVEL, s, args); va_end (args); /* don't dump log here - hardly ever what you mean to do. */ } void DUMPLOG (void) { char *end; char *start; ushort *timeptr; char timebuf[6]; /* logbuf [logptr] is the oldest string here */ end = start = logbuf [logptr]; timeptr = &logtime [logptr]; do { if (*start) { ksprintf (timebuf, sizeof (timebuf), "%04x ", *timeptr); debug_ws (timebuf); debug_ws (start); debug_ws ("\r\n"); *start = '\0'; } start += LB_LINE_LEN; timeptr++; if (start == logbuf[LBSIZE]) { start = logbuf[0]; timeptr = &logtime[0]; } } while (start != end); logptr = 0; } /* wait for a key to be pressed */ void PAUSE (void) { #ifndef ARAnyM_MetaDOS debug_ws (MSG_init_hitanykey); #else debug_ws ("MSG_init_hitanykey"); #endif (void) Bconin (2); } EXITING _cdecl FATAL (const char *s, ...) { va_list args; va_start (args, s); VDEBUGOUT (-1, s, args); va_end (args); if (debug_logging) { DUMPLOG (); } HALT (); } /* uk: a normal halt() function without an error message. This function * may only be called if all processes are shut down and the file * systems are synced. */ EXITING halt (void) { #ifndef ARAnyM_MetaDOS long r; long key; int scan; DEBUG (("halt() called, system halting...\r\n")); debug_ws ("MSG_system_halted"); sys_q[READY_Q] = 0; /* prevent context switches */ restr_intr(); /* restore interrupts to normal */ for(;;) { /* get a key; if ctl-alt then do it, else halt */ key = Bconin (out_device); if ((key & 0x0c000000L) == 0x0c000000L) { scan = (int) ((key >> 16) & 0xff); do_func_key (scan); } else { break; } } for(;;) { debug_ws ("MSG_system_halted"); r = Bconin (2); if ((r & 0x0ff) == 'x') { } } #else for (;;) { debug_ws ("MSG_system_halted"); } #endif // ARAnyM_MetaDOS } EXITING HALT (void) { #ifndef ARAnyM_MetaDOS long r; long key; int scan; DEBUG (("Fatal MiNT error: adjust debug level and hit a key...\r\n")); debug_ws ("MSG_fatal_reboot"); sys_q[READY_Q] = 0; /* prevent context switches */ restr_intr (); /* restore interrupts to normal */ for (;;) { /* get a key; if ctl-alt then do it, else halt */ key = Bconin (2); if ((key & 0x0c000000L) == 0x0c000000L) { scan = (int) ((key >> 16) & 0xff); do_func_key (scan); } else break; } for (;;) { debug_ws ("MSG_fatal_reboot"); r = Bconin (2); if (((r & 0x0ff) == 'x') || ((r & 0xff) == 's')) { close_filesys (); /* if the user pressed 's', try to sync before halting the system */ if ((r & 0xff) == 's') { debug_ws (MSG_debug_syncing); s_ync (); debug_ws (MSG_debug_syncdone); } } } #else for (;;) { debug_ws ("MSG_fatal_reboot"); } #endif // ARAnyM_MetaDOS } void do_func_key (int scan) { #ifndef ARAnyM_MetaDOS switch (scan) { # ifdef DEBUG_INFO /* F1: increase debugging level */ case 0x3b: { debug_level++; break; } /* F2: reduce debugging level */ case 0x3c: { if (debug_level > 0) --debug_level; break; } /* F3: cycle out_device */ case 0x3d: { out_device = out_next [out_device]; break; } /* F4: set out_device to console */ case 0x3e: { out_device = 2; break; } /* F5: dump memory */ case 0x3f: { DUMP_ALL_MEM (); break; } /* shift+F5: dump kernel allocated memory */ case 0x58: { km_config (KM_STAT_DUMP, 0); { static long mode = DISABLE; if (mode == ENABLE) mode = DISABLE; else mode = ENABLE; fatfs_config (0, FATFS_DEBUG, mode); fatfs_config (0, FATFS_DEBUG_T, mode); bio.config (0, BIO_DEBUG_T, mode); } break; } /* F6: dump processes */ case 0x40: { DUMPPROC (); _s_ync (); break; } # ifdef PROFILING /* shift+F6: control profiling */ case 0x59: { write_profiling (); break; } /* shift+F7: toogle profiling */ case 0x5A: { toogle_profiling (); break; } # endif /* F7: toggle debug_logging */ case 0x41: { debug_logging ^= 1; break; } # else /* F6: always print MiNT basepage */ case 0x40: { FORCE ("MiNT base %lx (%lx)", rootproc->base, _base); break; } # endif /* F8: dump log */ case 0x42: { DUMPLOG (); break; } # ifdef DEBUG_INFO /* F9: dump the global memory table */ case 0x43: { QUICKDUMP (); break; } /* shift-F9: dump the mmu tree */ case 0x5c: { BIG_MEM_DUMP (1, curproc); break; } /* F10: do an annotated dump of memory */ case 0x44: { BIG_MEM_DUMP (0, 0); break; } # endif } #endif // ARAnyM_MetaDOS } aranym-0.9.15/atari/hostfs/metados/debug.h000066400000000000000000000032741213346724500204130ustar00rootroot00000000000000/* * $Id: debug.h,v 1.1 2002-12-10 20:47:21 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * debug.h,v 1.2 2001/06/13 20:21:42 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ /* * Copyright 1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. */ # ifndef _mint_debug_h # define _mint_debug_h extern int debug_level; extern int out_device; extern int debug_logging; /* * Extra terse settings - don't even output ALERTs unless asked to. * * Things that happen in on an idle Desktop are at LOW_LEVEL: * Psemaphore, Pmsg, Syield. */ # define FORCE_LEVEL 0 # define ALERT_LEVEL 1 # define DEBUG_LEVEL 2 # define TRACE_LEVEL 3 # define LOW_LEVEL 4 # ifndef DEBUG_INFO # define TRACELOW(x) # define TRACE(x) # define DEBUG(x) # else # define TRACELOW(s) \ do { if ((debug_level >= LOW_LEVEL) || debug_logging) Tracelow s ; } while (0) # define TRACE(s) \ do { if ((debug_level >= TRACE_LEVEL) || debug_logging) Trace s ; } while (0) # define DEBUG(s) \ do { if ((debug_level >= DEBUG_LEVEL) || debug_logging) Debug s ; } while (0) # endif /* DEBUG_INFO */ void debug_ws (const char *s); int _ALERT (char *); void _cdecl Tracelow (const char *s, ...); void _cdecl Trace (const char *s, ...); void _cdecl Debug (const char *s, ...); void _cdecl ALERT (const char *s, ...); void _cdecl FORCE (const char *s, ...); void PAUSE (void); EXITING _cdecl FATAL (const char *s, ...) NORETURN; EXITING halt (void) NORETURN; EXITING HALT (void) NORETURN; void DUMPLOG (void); void do_func_key (int); # endif /* _mint_debug_h */ aranym-0.9.15/atari/hostfs/metados/dosdir.c000066400000000000000000000766011213346724500206100ustar00rootroot00000000000000/* * $Id: dosdir.c,v 1.3 2005-09-26 22:18:05 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.c,v 1.11 2001/10/23 09:09:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS directory functions */ # include "dosdir.h" # include "libkern/libkern.h" # include "mint/filedesc.h" # include "mint/ioctl.h" # include "mint/pathconf.h" # include "mint/stat.h" # include "mint/emu_tos.h" # include "mint/credentials.h" # include "kerinfo.h" # include "filesys.h" # include "k_fds.h" # include "mintproc.h" # include "mintfake.h" long _cdecl sys_d_free (MetaDOSDir long *buf, int d) { PROC *p = curproc; fcookie *dir = 0; #ifdef ARAnyM_MetaDOS d = (int)tolower(pathNameMD[0])-'a'; dir = &p->p_cwd->root[d]; TRACE(("Dfree(%d)", d)); #else FILESYS *fs; fcookie root; long r; TRACE(("Dfree(%d)", d)); assert (p->p_fd && p->p_cwd); /* drive 0 means current drive, otherwise it's d-1 */ if (d) d = d - 1; else d = p->p_cwd->curdrv; /* If it's not a standard drive or an alias of one, get the pointer to * the filesystem structure and use the root directory of the * drive. */ if (d < 0 || d >= NUM_DRIVES) { int i; for (i = 0; i < NUM_DRIVES; i++) { if (aliasdrv[i] == d) { d = i; goto aliased; } } fs = get_filesys (d); if (!fs) return ENXIO; r = xfs_root (fs, d, &root); if (r < E_OK) return r; r = xfs_dfree (fs, &root, buf); release_cookie (&root); return r; } /* check for a media change -- we don't care much either way, but it * does keep the results more accurate */ (void)disk_changed(d); aliased: /* use current directory, not root, since it's more likely that * programs are interested in the latter (this makes U: work much * better) */ dir = &p->p_cwd->curdir[d]; #endif // ARAnyM_MetaDOS if (!dir->fs) { DEBUG(("Dfree: bad drive")); return ENXIO; } return xfs_dfree (dir->fs, dir, buf); } long _cdecl sys_d_create (MetaDOSDir const char *path) { PROC *p = curproc; fcookie dir; long r; char temp1[PATH_MAX]; XATTR xattr; ushort mode; TRACE(("Dcreate(%s)", path)); assert (p->p_fd && p->p_cwd); r = path2cookie(path, temp1, &dir); if (r) { DEBUG(("Dcreate(%s): returning %ld", path, r)); return r; } if (temp1[0] == '\0') { DEBUG(("Dcreate(%s): creating a NULL dir?", path)); release_cookie(&dir); return EBADARG; } /* check for write permission on the directory */ r = dir_access(&dir, S_IWOTH, &mode); if (r) { DEBUG(("Dcreate(%s): write access to directory denied",path)); release_cookie(&dir); return r; } if (mode & S_ISGID) { r = xfs_getxattr (dir.fs, &dir, &xattr); if (r) { DEBUG(("Dcreate(%s): file system returned %ld", path, r)); } else { ushort cur_gid = p->p_cred->rgid; ushort cur_egid = p->p_cred->ucr->egid; p->p_cred->rgid = p->p_cred->ucr->egid = xattr.gid; r = xfs_mkdir (dir.fs, &dir, temp1, (DEFAULT_DIRMODE & ~p->p_cwd->cmask) | S_ISGID); p->p_cred->rgid = cur_gid; p->p_cred->ucr->egid = cur_egid; } } else r = xfs_mkdir (dir.fs, &dir, temp1, DEFAULT_DIRMODE & ~p->p_cwd->cmask); release_cookie(&dir); return r; } long _cdecl sys_d_delete (MetaDOSDir const char *path) { struct ucred *cred = curproc->p_cred->ucr; fcookie parentdir, targdir; long r; XATTR xattr; char temp1[PATH_MAX]; ushort mode; TRACE(("Ddelete(%s)", path)); r = path2cookie (path, temp1, &parentdir); if (r) { DEBUG(("Ddelete(%s): error %lx", path, r)); release_cookie(&parentdir); return r; } /* check for write permission on the directory which the target * is located */ r = dir_access (&parentdir, S_IWOTH, &mode); if (r) { DEBUG(("Ddelete(%s): access to directory denied", path)); release_cookie (&parentdir); return r; } /* now get the info on the file itself */ r = relpath2cookie (&parentdir, temp1, NULL, &targdir, 0); if (r) { bailout: release_cookie (&parentdir); DEBUG(("Ddelete: error %ld on %s", r, path)); return r; } r = xfs_getxattr (targdir.fs, &targdir, &xattr); if (r) { release_cookie (&targdir); goto bailout; } /* check effective uid if sticky bit is set in parent */ if ((mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) { release_cookie (&targdir); release_cookie (&parentdir); DEBUG(("Ddelete: sticky bit set and not owner")); return EACCES; } /* if the "directory" is a symbolic link, really unlink it */ if ((xattr.mode & S_IFMT) == S_IFLNK) { release_cookie (&targdir); r = xfs_remove (parentdir.fs, &parentdir, temp1); } else if ((xattr.mode & S_IFMT) != S_IFDIR) { DEBUG(("Ddelete: %s is not a directory", path)); r = ENOTDIR; } else { #ifndef ARAnyM_MetaDOS PROC *p; int i; /* don't delete anyone else's root or current directory */ for (p = proclist; p; p = p->gl_next) { struct cwd *cwd = p->p_cwd; if (p->wait_q == ZOMBIE_Q || p->wait_q == TSR_Q) continue; assert (cwd); for (i = 0; i < NUM_DRIVES; i++) { if (samefile (&targdir, &cwd->root[i])) { DEBUG(("Ddelete: directory %s is a root directory", path)); release_cookie (&targdir); release_cookie (&parentdir); return EACCES; } else if (i == cwd->curdrv && p != curproc && samefile (&targdir, &cwd->curdir[i])) { DEBUG(("Ddelete: directory %s is in use", path)); release_cookie (&targdir); release_cookie (&parentdir); return EACCES; } } } /* Wait with this until everything has been verified */ for (p = proclist; p; p = p->gl_next) { struct cwd *cwd = p->p_cwd; if (p->wait_q == ZOMBIE_Q || p->wait_q == TSR_Q) continue; assert (cwd); for (i = 0; i < NUM_DRIVES; i++) { if (samefile (&targdir, &cwd->curdir[i])) { release_cookie (&cwd->curdir[i]); dup_cookie (&cwd->curdir[i], &cwd->root[i]); } } } #endif // ARAnyM_MetaDOS release_cookie (&targdir); r = xfs_rmdir (parentdir.fs, &parentdir, temp1); } release_cookie (&parentdir); return r; } /* * Fsfirst/next are actually implemented in terms of opendir/readdir/closedir. */ long _cdecl sys_f_sfirst (MetaDOSDTA const char *path, int attrib) { PROC *p = curproc; char *s, *slash; FILESYS *fs; fcookie dir, newdir; DTABUF *dta; DIR *dirh; XATTR xattr; long r; int i, havelabel; char temp1[PATH_MAX]; ushort mode; TRACE(("Fsfirst(%s, %x)", path, attrib)); r = path2cookie (path, temp1, &dir); if (r) { DEBUG(("Fsfirst(%s): path2cookie returned %ld", path, r)); return r; } /* we need to split the last name (which may be a pattern) off from * the rest of the path, even if FS_KNOPARSE is true */ slash = 0; s = temp1; while (*s) { if (*s == '\\') slash = s; s++; } if (slash) { *slash++ = 0; /* slash now points to a name or pattern */ r = relpath2cookie (&dir, temp1, follow_links, &newdir, 0); release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): lookup returned %ld", path, r)); return r; } dir = newdir; } else slash = temp1; /* BUG? what if there really is an empty file name? */ if (!*slash) { DEBUG(("Fsfirst: empty pattern")); return ENOENT; } fs = dir.fs; #ifndef ARAnyM_MetaDOS dta = p->p_fd->dta; #else dta = dtaMD; #endif /* Now, see if we can find a DIR slot for the search. We use the * following heuristics to try to avoid destroying a slot: * (1) if the search doesn't use wildcards, don't bother with a slot * (2) if an existing slot was for the same DTA address, re-use it * (3) if there's a free slot, re-use it. Slots are freed when the * corresponding search is terminated. */ for (i = 0; i < NUM_SEARCH; i++) { if (p->p_fd->srchdta[i] == dta) { dirh = &p->p_fd->srchdir[i]; if (dirh->fc.fs) { xfs_closedir (dirh->fc.fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; } p->p_fd->srchdta[i] = 0; /* slot is now free */ } } /* copy the pattern over into dta_pat into TOS 8.3 form * remember that "slash" now points at the pattern * (it follows the last, if any) */ copy8_3 (dta->dta_pat, slash); /* if (attrib & FA_LABEL), read the volume label * * BUG: the label date and time are wrong. ISO/IEC 9293 14.3.3 allows this. * The Desktop set also date and time to 0 when formatting a floppy disk. */ havelabel = 0; if (attrib & FA_LABEL) { r = xfs_readlabel (fs, &dir, dta->dta_name, TOS_NAMELEN+1); dta->dta_attrib = FA_LABEL; dta->dta_time = dta->dta_date = 0; dta->dta_size = 0; dta->magic = EVALID; if (r == E_OK && !pat_match (dta->dta_name, dta->dta_pat)) r = ENOENT; if ((attrib & (FA_DIR|FA_LABEL)) == FA_LABEL) return r; else if (r == E_OK) havelabel = 1; } DEBUG(("Fsfirst(): havelabel = %d",havelabel)); if (!havelabel && has_wild (slash) == 0) { /* no wild cards in pattern */ r = relpath2cookie (&dir, slash, follow_links, &newdir, 0); if (r == E_OK) { r = xfs_getxattr (newdir.fs, &newdir, &xattr); release_cookie (&newdir); } release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): couldn't get file attributes",path)); return r; } dta->magic = EVALID; dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; if (fs->fsflags & FS_EXT_3) { /* UTC -> localtime -> DOS style */ *((long *) &(dta->dta_time)) = dostime (*((long *) &(xattr.mtime)) - timezone); } else { dta->dta_time = xattr.mtime; dta->dta_date = xattr.mdate; } strncpy (dta->dta_name, slash, TOS_NAMELEN-1); dta->dta_name[TOS_NAMELEN-1] = 0; if (p->domain == DOM_TOS && !(fs->fsflags & FS_CASESENSITIVE)) strupr (dta->dta_name); return E_OK; } /* There is a wild card. Try to find a slot for an opendir/readdir * search. NOTE: we also come here if we were asked to search for * volume labels and found one. */ for (i = 0; i < NUM_SEARCH; i++) { if (p->p_fd->srchdta[i] == 0) break; } if (i == NUM_SEARCH) { int oldest = 0; long oldtime = curproc->p_fd->srchtim[0]; DEBUG(("Fsfirst(%s): having to re-use a directory slot!", path)); for (i = 1; i < NUM_SEARCH; i++) { if (p->p_fd->srchtim[i] < oldtime) { oldest = i; oldtime = p->p_fd->srchtim[i]; } } /* OK, close this directory for re-use */ i = oldest; dirh = &p->p_fd->srchdir[i]; if (dirh->fc.fs) { xfs_closedir (dirh->fc.fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; } /* invalidate re-used DTA */ p->p_fd->srchdta[i]->magic = EVALID; p->p_fd->srchdta[i] = 0; } /* check to see if we have read permission on the directory (and make * sure that it really is a directory!) */ r = dir_access(&dir, S_IROTH, &mode); if (r) { DEBUG(("Fsfirst(%s): access to directory denied (error code %ld)", path, r)); release_cookie(&dir); return r; } /* set up the directory for a search */ dirh = &p->p_fd->srchdir[i]; dirh->fc = dir; dirh->index = 0; dirh->flags = TOS_SEARCH; r = xfs_opendir (dir.fs, dirh, dirh->flags); if (r != E_OK) { DEBUG(("Fsfirst(%s): couldn't open directory (error %ld)", path, r)); release_cookie(&dir); return r; } /* mark the slot as in-use */ p->p_fd->srchdta[i] = dta; /* set up the DTA for Fsnext */ dta->index = i; dta->magic = SVALID; dta->dta_sattrib = attrib; /* OK, now basically just do Fsnext, except that instead of ENMFILES we * return ENOENT. * NOTE: If we already have found a volume label from the search above, * then we skip the sys_f_snext and just return that. */ if (havelabel) return E_OK; r = sys_f_snext(MetaDOSDTA0pass); if (r == ENMFILES) r = ENOENT; if (r) TRACE(("Fsfirst: returning %ld", r)); /* release_cookie isn't necessary, since &dir is now stored in the * DIRH structure and will be released when the search is completed */ return r; } /* * Counter for Fsfirst/Fsnext, so that we know which search slots are * least recently used. This is updated once per second by the code * in timeout.c. * BUG: 1/second is pretty low granularity */ long searchtime; long _cdecl sys_f_snext (MetaDOSDTA0) { PROC *p = curproc; char buf[TOS_NAMELEN+1]; #ifndef ARAnyM_MetaDOS DTABUF *dta = p->p_fd->dta; #else DTABUF *dta = dtaMD; #endif // ARAnyM_MetaDOS FILESYS *fs; fcookie fc; ushort i; DIR *dirh; long r; XATTR xattr; #if 0 if (1) { char *buf[TOS_NAMELEN+1]; static int count = 0; static char *test = "HOSTFS"; while( count++ < 100 ) { dta->dta_attrib = 0x20; dta->dta_size = 100; dta->dta_time = 0; dta->dta_date = 0; strcpy(dta->dta_name, test); DEBUG (("Fsnext(%s.%ld): ", dta->dta_name, sizeof(struct dtabuf))); return E_OK; } return ENMFILES; } #endif TRACE (("Fsnext")); if (dta->magic == EVALID) { DEBUG (("Fsnext(%lx): DTA marked a failing search", dta)); return ENMFILES; } if (dta->magic != SVALID) { DEBUG (("Fsnext(%lx): dta incorrectly set up", dta)); return ENOSYS; } i = dta->index; if (i >= NUM_SEARCH) { DEBUG (("Fsnext(%lx): DTA has invalid index", dta)); return EBADARG; } dirh = &p->p_fd->srchdir[i]; #ifndef ARAnyM_MetaDOS p->p_fd->srchtim[i] = searchtime; #else p->p_fd->srchtim[i] = searchtime++; #endif // ARAnyM_MetaDOS fs = dirh->fc.fs; if (!fs) { /* oops -- the directory got closed somehow */ DEBUG (("Fsnext(%lx): invalid filesystem", dta)); return EINTERNAL; } /* BUG: sys_f_snext and readdir should check for disk media changes */ for(;;) { r = xfs_readdir (fs, dirh, buf, TOS_NAMELEN+1, &fc); if (r == EBADARG) { DEBUG(("Fsnext: name too long")); continue; /* TOS programs never see these names */ } if (r != E_OK) { baderror: if (dirh->fc.fs) (void) xfs_closedir (fs, dirh); release_cookie(&dirh->fc); dirh->fc.fs = 0; p->p_fd->srchdta[i] = 0; dta->magic = EVALID; if (r != ENMFILES) DEBUG(("Fsnext: returning %ld", r)); return r; } if (!pat_match (buf, dta->dta_pat)) { release_cookie (&fc); continue; /* different patterns */ } /* check for search attributes */ r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("Fsnext: couldn't get file attributes")); release_cookie (&fc); goto baderror; } /* if the file is a symbolic link, try to find what it's linked to */ if ((xattr.mode & S_IFMT) == S_IFLNK) { char linkedto[PATH_MAX]; r = xfs_readlink (fc.fs, &fc, linkedto, PATH_MAX); release_cookie (&fc); if (r == E_OK) { /* the "1" tells relpath2cookie that we read a link */ r = relpath2cookie (&dirh->fc, linkedto, follow_links, &fc, 1); if (r == E_OK) { r = xfs_getxattr (fc.fs, &fc, &xattr); release_cookie (&fc); } } if (r) DEBUG(("Fsnext: couldn't follow link: error %ld", r)); } else release_cookie (&fc); /* silly TOS rules for matching attributes */ if (xattr.attr == 0) break; if (xattr.attr & (FA_CHANGED|FA_RDONLY)) break; if (dta->dta_sattrib & xattr.attr) break; } /* here, we have a match */ if (fs->fsflags & FS_EXT_3) { /* UTC -> localtime -> DOS style */ *((long *) &(dta->dta_time)) = dostime (*((long *) &(xattr.mtime)) - timezone); } else { dta->dta_time = xattr.mtime; dta->dta_date = xattr.mdate; } dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; strcpy (dta->dta_name, buf); if (p->domain == DOM_TOS && !(fs->fsflags & FS_CASESENSITIVE)) strupr (dta->dta_name); return E_OK; } long _cdecl sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr) { PROC *p = curproc; struct ucred *cred = p->p_cred->ucr; fcookie fc; XATTR xattr; long r; DEBUG(("Fattrib(%s, %d)", name, attr)); r = path2cookie (name, follow_links, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("Fattrib(%s): getxattr returned %ld", name, r)); release_cookie (&fc); return r; } if (rwflag) { if (attr & ~(FA_CHANGED|FA_DIR|FA_SYSTEM|FA_HIDDEN|FA_RDONLY) || (attr & FA_DIR) != (xattr.attr & FA_DIR)) { DEBUG(("Fattrib(%s): illegal attributes specified",name)); r = EACCES; } else if (cred->euid && cred->euid != xattr.uid) { DEBUG(("Fattrib(%s): not the file's owner",name)); r = EACCES; } else if (xattr.attr & FA_LABEL) { DEBUG(("Fattrib(%s): file is a volume label", name)); r = EACCES; } else r = xfs_chattr (fc.fs, &fc, attr); release_cookie (&fc); return r; } else { release_cookie (&fc); return xattr.attr; } } long _cdecl sys_f_delete (MetaDOSFile const char *name) { PROC *p = curproc; struct ucred *cred = p->p_cred->ucr; fcookie dir, fc; XATTR xattr; long r; char temp1[PATH_MAX]; ushort mode; TRACE(("Fdelete(%s)", name)); /* get a cookie for the directory the file is in */ r = path2cookie (name, temp1, &dir); if (r) { DEBUG(("Fdelete: couldn't get directory cookie: error %ld", r)); return r; } /* check for write permission on directory */ r = dir_access (&dir, S_IWOTH, &mode); if (r) { DEBUG(("Fdelete(%s): write access to directory denied",name)); release_cookie (&dir); return EACCES; } /* now get the file attributes */ r = xfs_lookup (dir.fs, &dir, temp1, &fc); if (r) { DEBUG(("Fdelete: error %ld while looking for %s", r, temp1)); release_cookie (&dir); return r; } r = xfs_getxattr (fc.fs, &fc, &xattr); if (r < E_OK) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: couldn't get file attributes: error %ld", r)); return r; } /* do not allow directories to be deleted */ if ((xattr.mode & S_IFMT) == S_IFDIR) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: %s is a directory", name)); return EISDIR; } /* check effective uid if directories sticky bit is set */ if ((mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: sticky bit set and not owner")); return EACCES; } /* TOS domain processes can only delete files if they have write permission * for them */ if (p->domain == DOM_TOS) { /* see if we're allowed to kill it */ if (denyaccess (&xattr, S_IWOTH)) { release_cookie (&dir); release_cookie (&fc); DEBUG(("Fdelete: file access denied")); return EACCES; } } release_cookie (&fc); r = xfs_remove (dir.fs, &dir,temp1); release_cookie (&dir); return r; } long _cdecl sys_f_rename (MetaDOSFile int junk, const char *old, const char *new) { PROC *p = curproc; struct ucred *cred = p->p_cred->ucr; fcookie olddir, newdir, oldfil; XATTR xattr; char temp1[PATH_MAX], temp2[PATH_MAX]; long r; ushort mode; /* ignored, for TOS compatibility */ UNUSED(junk); TRACE(("Frename(%s, %s)", old, new)); r = path2cookie (old, temp2, &olddir); if (r) { DEBUG(("Frename(%s,%s): error parsing old name",old,new)); return r; } /* check for permissions on the old file * GEMDOS doesn't allow rename if the file is FA_RDONLY * we enforce this restriction only on regular files; processes, * directories, and character special files can be renamed at will */ r = relpath2cookie (&olddir, temp2, (char *)0, &oldfil, 0); if (r) { DEBUG(("Frename(%s,%s): old file not found",old,new)); release_cookie (&olddir); return r; } r = xfs_getxattr (oldfil.fs, &oldfil, &xattr); release_cookie (&oldfil); if (r || ((xattr.mode & S_IFMT) == S_IFREG && ((xattr.attr & FA_RDONLY) && cred->euid && (cred->euid != xattr.uid)))) { /* Only SuperUser and the owner of the file are allowed to rename * readonly files */ DEBUG(("Frename(%s,%s): access to old file not granted",old,new)); release_cookie (&olddir); return EACCES; } r = path2cookie(new, temp1, &newdir); if (r) { DEBUG(("Frename(%s,%s): error parsing new name",old,new)); release_cookie (&olddir); return r; } if (newdir.fs != olddir.fs) { DEBUG(("Frename(%s,%s): different file systems",old,new)); release_cookie (&olddir); release_cookie (&newdir); /* cross device rename */ return EXDEV; } /* check for write permission on both directories */ r = dir_access (&olddir, S_IWOTH, &mode); if (!r && (mode & S_ISVTX) && cred->euid && cred->euid != xattr.uid) r = EACCES; if (!r) r = dir_access (&newdir, S_IWOTH, &mode); if (r) DEBUG(("Frename(%s,%s): access to a directory denied",old,new)); else r = xfs_rename (newdir.fs, &olddir, temp2, &newdir, temp1); release_cookie (&olddir); release_cookie (&newdir); return r; } /* * GEMDOS extension: Dpathconf(name, which) * * returns information about filesystem-imposed limits; "name" is the name * of a file or directory about which the limit information is requested; * "which" is the limit requested, as follows: * -1 max. value of "which" allowed * 0 internal limit on open files, if any * 1 max. number of links to a file {LINK_MAX} * 2 max. path name length {PATH_MAX} * 3 max. file name length {NAME_MAX} * 4 no. of bytes in atomic write to FIFO {PIPE_BUF} * 5 file name truncation rules * 6 file name case translation rules * * unlimited values are returned as 0x7fffffffL * * see also Sysconf() in dos.c */ long _cdecl sys_d_pathconf (MetaDOSDir const char *name, int which) { fcookie dir; long r; r = path2cookie (name, NULL, &dir); if (r) { DEBUG(("Dpathconf(%s): bad path",name)); return r; } r = xfs_pathconf (dir.fs, &dir, which); if (which == DP_CASE && r == ENOSYS) { /* backward compatibility with old .XFS files */ r = (dir.fs->fsflags & FS_CASESENSITIVE) ? DP_CASESENS : DP_CASEINSENS; } release_cookie (&dir); return r; } /* * GEMDOS extension: Opendir/Readdir/Rewinddir/Closedir * * offer a new, POSIX-like alternative to Fsfirst/Fsnext, * and as a bonus allow for arbitrary length file names */ long _cdecl sys_d_opendir (MetaDOSDir const char *name, int flag) { PROC *p = curproc; #ifndef ARAnyM_MetaDOS DIR *dirh; #else DIR *dirh = dirMD; #endif fcookie dir; long r; ushort mode; r = path2cookie (name, follow_links, &dir); if (r) { DEBUG(("Dopendir(%s): error %ld", name, r)); return r; } r = dir_access (&dir, S_IROTH, &mode); if (r) { DEBUG(("Dopendir(%s): read permission denied", name)); release_cookie (&dir); return r; } #ifndef ARAnyM_MetaDOS dirh = kmalloc (sizeof (*dirh)); if (!dirh) { release_cookie (&dir); return ENOMEM; } #endif dirh->fc = dir; dirh->index = 0; dirh->flags = flag; r = xfs_opendir (dir.fs, dirh, flag); if (r) { DEBUG(("sys_d_opendir(%s): opendir returned %ld", name, r)); release_cookie (&dir); #ifndef ARAnyM_MetaDOS kfree (dirh); #endif return r; } /* we keep a chain of open directories so that if a process * terminates without closing them all, we can clean up */ dirh->next = p->p_fd->searches; p->p_fd->searches = dirh; return (long) dirh; } long _cdecl sys_d_readdir (MetaDOSDir int len, long handle, char *buf) { #ifndef ARAnyM_MetaDOS DIR *dirh = (DIR *) handle; #else DIR *dirh = dirMD; #endif fcookie fc; long r; if (!dirh->fc.fs) return EBADF; r = xfs_readdir (dirh->fc.fs, dirh, buf, len, &fc); if (r == E_OK) release_cookie (&fc); DEBUG(("sys_d_readdir(): returned %ld", r)); return r; } /* jr: just as sys_d_readdir, but also returns XATTR structure (not * following links). Note that the return value reflects the * result of the Dreaddir operation, the result of the Fxattr * operation is stored in long *xret */ long _cdecl sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, XATTR *xattr, long *xret) { #ifndef ARAnyM_MetaDOS DIR *dirh = (DIR *) handle; #else DIR *dirh = dirMD; #endif fcookie fc; long r; if (!dirh->fc.fs) return EBADF; r = xfs_readdir (dirh->fc.fs, dirh, buf, len, &fc); if (r != E_OK) return r; *xret = xfs_getxattr (fc.fs, &fc, xattr); if ((*xret == E_OK) && (fc.fs->fsflags & FS_EXT_3)) { /* UTC -> localtime -> DOS style */ *((long *) &(xattr->mtime)) = dostime (*((long *) &(xattr->mtime)) - timezone); *((long *) &(xattr->atime)) = dostime (*((long *) &(xattr->atime)) - timezone); *((long *) &(xattr->ctime)) = dostime (*((long *) &(xattr->ctime)) - timezone); } release_cookie (&fc); return r; } long _cdecl sys_d_rewind (MetaDOSDir long handle) { #ifndef ARAnyM_MetaDOS DIR *dirh = (DIR *) handle; #else DIR *dirh = dirMD; #endif if (!dirh->fc.fs) return EBADF; return xfs_rewinddir (dirh->fc.fs, dirh); } /* * NOTE: there is also code in terminate() in dosmem.c that * does automatic closes of directory searches. * If you change sys_d_closedir(), you may also need to change * terminate(). */ long _cdecl sys_d_closedir (MetaDOSDir long handle) { PROC *p = curproc; #ifndef ARAnyM_MetaDOS DIR *dirh = (DIR *)handle; #else DIR *dirh = dirMD; #endif DIR **where; long r; where = &p->p_fd->searches; while (*where && *where != dirh) where = &((*where)->next); if (!*where) { DEBUG(("Dclosedir: not an open directory")); return EBADF; } /* unlink the directory from the chain */ *where = dirh->next; if (dirh->fc.fs) { r = xfs_closedir (dirh->fc.fs, dirh); release_cookie (&dirh->fc); } else r = E_OK; if (r) DEBUG(("Dclosedir: error %ld", r)); #ifndef ARAnyM_MetaDOS kfree (dirh); #endif return r; } /* * GEMDOS extension: Fxattr(flag, file, xattr) * * gets extended attributes for a file. * flag is 0 if symbolic links are to be followed (like stat), * flag is 1 if not (like lstat). */ long _cdecl sys_f_xattr (MetaDOSFile int flag, const char *name, XATTR *xattr) { fcookie fc; long r; TRACE (("Fxattr(%d, %s)", flag, name)); r = path2cookie (name, flag ? NULL : follow_links, &fc); if (r) { DEBUG (("Fxattr(%s): path2cookie returned %ld", name, r)); return r; } r = xfs_getxattr (fc.fs, &fc, xattr); if (r) { DEBUG (("Fxattr(%s): returning %ld", name, r)); } else if (fc.fs->fsflags & FS_EXT_3) { /* UTC -> localtime -> DOS style */ *((long *) &(xattr->mtime)) = dostime (*((long *) &(xattr->mtime)) - timezone); *((long *) &(xattr->atime)) = dostime (*((long *) &(xattr->atime)) - timezone); *((long *) &(xattr->ctime)) = dostime (*((long *) &(xattr->ctime)) - timezone); } release_cookie (&fc); return r; } /* * GEMDOS-extension: Dreadlabel(path, buf, buflen) * * original written by jr */ long _cdecl sys_d_readlabel (MetaDOSDir const char *name, char *buf, int buflen) { fcookie dir; long r; r = path2cookie (name, NULL, &dir); if (r) { DEBUG (("Dreadlabel(%s): bad path", name)); return r; } r = xfs_readlabel (dir.fs, &dir, buf, buflen); release_cookie (&dir); return r; } /* * GEMDOS-extension: Dwritelabel(path, newlabel) * * original written by jr */ long _cdecl sys_d_writelabel (MetaDOSDir const char *name, const char *label) { fcookie dir; long r; #ifndef ARAnyM_MetaDOS PROC *p = curproc; struct ucred *cred = p->p_cred->ucr; /* Draco: in secure mode only superuser can write labels */ if (secure_mode && (cred->euid)) { DEBUG (("Dwritelabel(%s): access denied", name)); return EACCES; } #endif // ARAnyM_MetaDOS r = path2cookie (name, NULL, &dir); if (r) { DEBUG (("Dwritelabel(%s): bad path",name)); return r; } r = xfs_writelabel (dir.fs, &dir, label); release_cookie (&dir); return r; } aranym-0.9.15/atari/hostfs/metados/dosdir.h000066400000000000000000000032451213346724500206070ustar00rootroot00000000000000/* * $Id: dosdir.h,v 1.2 2004-04-26 07:14:04 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.h,v 1.2 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosdir_h # define _dosdir_h # include "mint/mint.h" # include "mint/file.h" # include "mintfake.h" /* table of processes holding locks on drives */ extern PROC *dlockproc [NUM_DRIVES]; extern long searchtime; long _cdecl sys_d_free (MetaDOSDir long *buf, int d); long _cdecl sys_d_create (MetaDOSDir const char *path); long _cdecl sys_d_delete (MetaDOSDir const char *path); long _cdecl sys_f_sfirst (MetaDOSDTA const char *path, int attrib); long _cdecl sys_f_snext (MetaDOSDTA0); long _cdecl sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr); long _cdecl sys_f_delete (MetaDOSFile const char *name); long _cdecl sys_f_rename (MetaDOSFile int junk, const char *old, const char *new); long _cdecl sys_d_pathconf (MetaDOSDir const char *name, int which); long _cdecl sys_d_opendir (MetaDOSDir const char *path, int flags); long _cdecl sys_d_readdir (MetaDOSDir int len, long handle, char *buf); long _cdecl sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, XATTR *xattr, long *xret); long _cdecl sys_d_rewind (MetaDOSDir long handle); long _cdecl sys_d_closedir (MetaDOSDir long handle); long _cdecl sys_f_xattr (MetaDOSFile int flag, const char *name, XATTR *xattr); long _cdecl sys_d_readlabel (MetaDOSDir const char *path, char *label, int maxlen); long _cdecl sys_d_writelabel (MetaDOSDir const char *path, const char *label); # endif /* _dosdir_h */ aranym-0.9.15/atari/hostfs/metados/dosfile.c000066400000000000000000000154041213346724500207430ustar00rootroot00000000000000/* * $Id: dosfile.c,v 1.3 2005-09-26 22:18:05 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.c,v 1.20 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS file handling routines */ # include "dosfile.h" # include "libkern/libkern.h" # include "mint/filedesc.h" # include "mint/ioctl.h" # include "mint/iov.h" # include "mint/net.h" # include "mint/fcntl.h" # include "mint/emu_tos.h" # include "mint/time.h" # include "debug.h" # include "filesys.h" # include "k_fds.h" # include "mintproc.h" # include "mintfake.h" /* wait condition for selecting processes which got collisions */ short select_coll; long _cdecl sys_f_open (MetaDOSFile const char *name, short mode) { PROC *p = curproc; FILEPTR *fp = NULL; short fd = MIN_OPEN - 1; # if O_GLOBAL int global = 0; #endif long ret; TRACE (("Fopen(%s, %x)", name, mode)); # if O_GLOBAL if (mode & O_GLOBAL) { if (p->p_cred->ucr->euid) { DEBUG (("Fopen(%s): O_GLOBAL denied for non root")); return EPERM; } /* from now the sockets are clean */ if (!stricmp (name, "u:\\dev\\socket")) { ALERT ("O_GLOBAL for sockets denied; update your network tools"); return EINVAL; } ALERT ("Opening a global handle (%s)", name); p = rootproc; global = 1; } # endif /* make sure the mode is legal */ mode &= O_USER; /* note: file mode 3 is reserved for the kernel; * for users, transmogrify it into O_RDWR (mode 2) */ if ((mode & O_RWMODE) == O_EXEC) mode = (mode & ~O_RWMODE) | O_RDWR; assert (p->p_fd && p->p_cwd); ret = FD_ALLOC (p, &fd, MIN_OPEN); if (ret) goto error; ret = FP_ALLOC (p, &fp); if (ret) goto error; ret = do_open (&fp, name, mode, 0, NULL); if (ret) goto error; /* activate the fp, default is to close non-standard files on exec */ FP_DONE (p, fp, fd, FD_CLOEXEC); # if O_GLOBAL if (global) /* we just opened a global handle */ fd += 100; # endif TRACE (("Fopen: returning %d", fd)); return fd; error: if (fd >= MIN_OPEN) FD_REMOVE (p, fd); if (fp) { fp->links--; FP_FREE (fp); } return ret; } long _cdecl sys_f_create (MetaDOSFile const char *name, short attrib) { PROC *p = curproc; FILEPTR *fp = NULL; short fd = MIN_OPEN - 1; long ret; TRACE (("Fcreate(%s, %x)", name, attrib)); # if O_GLOBAL if (attrib & O_GLOBAL) { DEBUG (("Fcreate(%s): O_GLOBAL denied")); return EPERM; } # endif assert (p->p_fd && p->p_cwd); ret = FD_ALLOC (p, &fd, MIN_OPEN); if (ret) goto error; ret = FP_ALLOC (p, &fp); if (ret) goto error; if (attrib == FA_LABEL) { char temp1[PATH_MAX]; fcookie dir; #ifndef ARAnyM_MetaDOS /* just in case the caller tries to do something with this handle, * make it point to u:\dev\null */ ret = do_open (&fp, "u:\\dev\\null", O_RDWR|O_CREAT|O_TRUNC, 0, NULL); if (ret) goto error; #endif // ARAnyM_MetaDOS ret = path2cookie (name, temp1, &dir); if (ret) goto error; ret = xfs_writelabel (dir.fs, &dir, temp1); release_cookie (&dir); if (ret) goto error; } else if (attrib & (FA_LABEL|FA_DIR)) { DEBUG (("Fcreate(%s,%x): illegal attributes", name, attrib)); ret = EACCES; goto error; } else { ret = do_open (&fp, name, O_RDWR|O_CREAT|O_TRUNC, attrib, NULL); if (ret) { DEBUG (("Fcreate(%s) failed, error %d", name, ret)); goto error; } } /* activate the fp, default is to close non-standard files on exec */ FP_DONE (p, fp, fd, FD_CLOEXEC); TRACE (("Fcreate: returning %d", fd)); return fd; error: if (fd >= MIN_OPEN) FD_REMOVE (p, fd); if (fp) { fp->links--; FP_FREE (fp); } return ret; } long _cdecl sys_f_close (MetaDOSFile short fd) { PROC *p = curproc; FILEPTR *f; long r; TRACE (("Fclose: %d", fd)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; r = do_close (p, f); /* XXX do this before do_close? */ FD_REMOVE (p, fd); # if 0 /* standard handles should be restored to default values * in TOS domain! * * XXX: why? */ if (p->domain == DOM_TOS) { f = NULL; if (fd == 0 || fd == 1) f = p->p_fd->ofiles[-1]; else if (fd == 2 || fd == 3) f = p->p_fd->ofiles[-fd]; if (f) { FP_DONE (p, f, fd, 0); f->links++; } } # endif return r; } long _cdecl sys_f_read (MetaDOSFile short fd, long count, char *buf) { PROC *p = curproc; FILEPTR *f; long r; r = GETFILEPTR (&p, &fd, &f); if (r) return r; if ((f->flags & O_RWMODE) == O_WRONLY) { DEBUG (("Fread: read on a write-only handle")); return EACCES; } if (is_terminal (f)) return tty_read (f, buf, count); TRACELOW (("Fread: %ld bytes from handle %d to %lx", count, fd, buf)); return xdd_read (f, buf, count); } long _cdecl sys_f_write (MetaDOSFile short fd, long count, const char *buf) { PROC *p = curproc; FILEPTR *f; long r; r = GETFILEPTR (&p, &fd, &f); if (r) return r; if ((f->flags & O_RWMODE) == O_RDONLY) { DEBUG (("Fwrite: write on a read-only handle")); return EACCES; } if (is_terminal (f)) return tty_write (f, buf, count); /* Prevent broken device drivers from wiping the disk. * We return a zero rather than a negative error code * to help programs those don't handle GEMDOS errors * returned by Fwrite() */ if (count <= 0) { DEBUG (("Fwrite: invalid count: %d", count)); return 0; } /* it would be faster to do this in the device driver, but this * way the drivers are easier to write */ if (f->flags & O_APPEND) { r = xdd_lseek (f, 0L, SEEK_END); /* ignore errors from unseekable files (e.g. pipes) */ if (r == EACCES) r = 0; } else r = 0; if (r >= 0) { TRACELOW (("Fwrite: %ld bytes to handle %d", count, fd)); r = xdd_write (f, buf, count); } if (r < 0) DEBUG (("Fwrite: error %ld", r)); return r; } long _cdecl sys_f_seek (MetaDOSFile long place, short fd, short how) { PROC *p = curproc; FILEPTR *f; long r; TRACE (("Fseek(%ld, %d) on handle %d", place, how, fd)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; if (is_terminal (f)) return 0; r = xdd_lseek (f, place, how); TRACE (("Fseek: returning %ld", r)); return r; } long _cdecl sys_f_datime (MetaDOSFile ushort *timeptr, short fd, short wflag) { PROC *p = curproc; FILEPTR *f; long r; TRACE (("%s(%i)", __FUNCTION__, fd)); r = GETFILEPTR (&p, &fd, &f); if (r) return r; /* some programs use Fdatime to test for TTY devices */ if (is_terminal (f)) return EACCES; if (f->fc.fs && f->fc.fs->fsflags & FS_EXT_3) { ulong t = 0; /* long r; */ if (wflag) t = unixtime (timeptr [0], timeptr [1]) + timezone; r = xdd_datime (f, (ushort *) &t, wflag); if (!r && !wflag) *(long *) timeptr = dostime (t - timezone); return r; } return xdd_datime (f, timeptr, wflag); } aranym-0.9.15/atari/hostfs/metados/dosfile.h000066400000000000000000000016611213346724500207500ustar00rootroot00000000000000/* * $Id: dosfile.h,v 1.2 2004-04-26 07:14:04 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.h,v 1.7 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosfile_h # define _dosfile_h # include "mint/mint.h" # include "mint/file.h" # include "mintfake.h" extern short select_coll; long _cdecl sys_f_open (MetaDOSFile const char *name, short mode); long _cdecl sys_f_create (MetaDOSFile const char *name, short attrib); long _cdecl sys_f_close (MetaDOSFile short fd); long _cdecl sys_f_read (MetaDOSFile short fd, long count, char *buf); long _cdecl sys_f_write (MetaDOSFile short fd, long count, const char *buf); long _cdecl sys_f_seek (MetaDOSFile long place, short fd, short how); long _cdecl sys_f_datime (MetaDOSFile ushort *timeptr, short fd, short wflag); # endif /* _dosfile_h */ aranym-0.9.15/atari/hostfs/metados/filesys.c000066400000000000000000000542311213346724500207750ustar00rootroot00000000000000/* * $Id: filesys.c,v 1.3 2006-02-04 21:03:03 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * filesys.c,v 1.24 2002/01/25 09:23:52 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corp. * All rights reserved. * */ /* * various file system interface things */ # include "mintproc.h" # include "filesys.h" # include "libkern/libkern.h" # include "mint/stat.h" # include "mint/filedesc.h" # include "mint/emu_tos.h" # include "k_fds.h" # include "mintfake.h" #ifdef ARAnyM_MetaDOS #define changedrv(dev, _fnc_) #define disk_changed(dev) 0 #endif // ARAnyM_MetaDOS #if 1 #define PATH2COOKIE_DB(x) TRACE(x) #else #define PATH2COOKIE_DB(x) DEBUG(x) #endif # ifdef DEBUG_INFO # define DMA_DEBUG(x) FORCE x # else # define DMA_DEBUG(x) # endif long getxattr (FILESYS *fs, fcookie *fc, XATTR *xattr) { STAT stat; long r; assert (fs->fsflags & FS_EXT_3); r = xfs_stat64 (fs, fc, &stat); if (!r) { xattr->mode = stat.mode; xattr->index = stat.ino; xattr->dev = stat.dev; xattr->rdev = stat.rdev; xattr->nlink = stat.nlink; xattr->uid = stat.uid; xattr->gid = stat.gid; xattr->size = stat.size; xattr->blksize = stat.blksize; xattr->nblocks = (stat.blksize < 512) ? stat.blocks : stat.blocks / (stat.blksize >> 9); *((long *) &(xattr->mtime)) = stat.mtime.time; *((long *) &(xattr->atime)) = stat.atime.time; *((long *) &(xattr->ctime)) = stat.ctime.time; xattr->attr = 0; /* fake attr field a little bit */ if (S_ISDIR (stat.mode)) xattr->attr = FA_DIR; else if (!(stat.mode & 0222)) xattr->attr = FA_RDONLY;; xattr->reserved2 = 0; xattr->reserved3[0] = 0; xattr->reserved3[1] = 0; } return r; } long getstat64 (FILESYS *fs, fcookie *fc, STAT *stat) { XATTR xattr; long r; assert (fs->getxattr); r = xfs_getxattr (fs, fc, &xattr); if (!r) { stat->dev = xattr.dev; stat->ino = xattr.index; stat->mode = xattr.mode; stat->nlink = xattr.nlink; stat->uid = xattr.uid; stat->gid = xattr.gid; stat->rdev = xattr.rdev; /* no native UTC extension * -> convert to unix UTC */ stat->atime.high_time = 0; stat->atime.time = unixtime (xattr.atime, xattr.adate) + timezone; stat->atime.nanoseconds = 0; stat->mtime.high_time = 0; stat->mtime.time = unixtime (xattr.mtime, xattr.mdate) + timezone; stat->mtime.nanoseconds = 0; stat->ctime.high_time = 0; stat->ctime.time = unixtime (xattr.ctime, xattr.cdate) + timezone; stat->ctime.nanoseconds = 0; stat->size = xattr.size; stat->blocks = (xattr.blksize < 512) ? xattr.nblocks : xattr.nblocks * (xattr.blksize >> 9); stat->blksize = xattr.blksize; stat->flags = 0; stat->gen = 0; bzero (stat->res, sizeof (stat->res)); } return r; } /* * routines for parsing path names */ /* * relpath2cookie converts a TOS file name into a file cookie representing * the directory the file resides in, and a character string representing * the name of the file in that directory. The character string is * copied into the "lastname" array. If lastname is NULL, then the cookie * returned actually represents the file, instead of just the directory * the file is in. * * note that lastname, if non-null, should be big enough to contain all the * characters in "path", since if the file system doesn't want the kernel * to do path name parsing we may end up just copying path to lastname * and returning the current or root directory, as appropriate * * "relto" is the directory relative to which the search should start. * if you just want the current directory, use path2cookie instead. * */ long relpath2cookie (fcookie *relto, const char *path, char *lastname, fcookie *res, int depth) { static char newpath[16] = "U:\\DEV\\"; struct cwd *cwd = curproc->p_cwd; char temp2[PATH_MAX]; char linkstuff[PATH_MAX]; fcookie dir; int drv; XATTR xattr; long r; /* dolast: 0 == return a cookie for the directory the file is in * 1 == return a cookie for the file itself, don't follow links * 2 == return a cookie for whatever the file points at */ int dolast = 0; int i = 0; if (!path) return ENOTDIR; if (*path == '\0') return ENOENT; if (!lastname) { dolast = 1; lastname = temp2; } else if (lastname == follow_links) { dolast = 2; lastname = temp2; } *lastname = '\0'; PATH2COOKIE_DB (("relpath2cookie(%s, dolast=%d, depth=%d [relto %lx, %i])", path, dolast, depth, relto->fs, relto->dev)); if (depth > MAX_LINKS) { DEBUG (("Too many symbolic links")); return ELOOP; } /* special cases: CON:, AUX:, etc. should be converted to U:\DEV\CON, * U:\DEV\AUX, etc. */ # if 1 if (path[0] && path[1] && path[2] && (path[3] == ':') && !path[4]) # else if (strlen (path) == 4 && path[3] == ':') # endif { strncpy (newpath+7, path, 3); path = newpath; } /* first, check for a drive letter * * BUG: a '\' at the start of a symbolic link is relative to the * current drive of the process, not the drive the link is located on */ /* The check if the process runs chroot used to be inside the * conditional (triggering ENOTDIR for drive specs. IMHO its * cleaner to interpret it as a regular filename instead. * Rationale: The path "c:/auto" is actually the same as * "/c:/auto". If the process' root directory is not "/" but * maybe "/home/ftp" then we should interpret the same filename * now as "/home/ftp/c:/auto". */ if (path[1] == ':' && !cwd->root_dir) { char c = tolower ((int)path[0] & 0xff); if (c >= 'a' && c <= 'z') drv = c - 'a'; else if (c >= '1' && c <= '6') drv = 26 + (c - '1'); else goto nodrive; # if 1 /* if root_dir is set drive references are forbidden */ if (cwd->root_dir) return ENOTDIR; # endif path += 2; /* remember that we saw a drive letter */ i = 1; } else { nodrive: drv = cwd->curdrv; } /* see if the path is rooted from '\\' */ if (DIRSEP (*path)) { while (DIRSEP (*path)) path++; /* if root_dir is set this is our start point */ if (cwd->root_dir) dup_cookie (&dir, &cwd->rootdir); else { dup_cookie (&dir, &cwd->root[drv]); PATH2COOKIE_DB (("relpath2cookie: rooted and !root_dir (drv = %i, %lx, %li, %i) for dir", drv, dir.fs, dir.index, dir.dev)); } } else { if (i) { /* an explicit drive letter was given */ dup_cookie (&dir, &cwd->curdir[drv]); } else { PATH2COOKIE_DB (("relpath2cookie: using relto (%lx, %li, %i) for dir", relto->fs, relto->index, relto->dev)); dup_cookie (&dir, relto); } } if (!dir.fs && !cwd->root_dir) { changedrv (dir.dev, __FUNCTION__); dup_cookie (&dir, &cwd->root[drv]); } if (!dir.fs) { DEBUG (("relpath2cookie: no file system: returning ENXIO")); return ENXIO; } /* here's where we come when we've gone across a mount point */ restart_mount: /* see if there has been a disk change; if so, return ECHMEDIA. * path2cookie will restart the search automatically; other functions * that call relpath2cookie directly will have to fail gracefully. * Note that this check has to be done _before_ testing if the * remaining path is empty, as disk changes may otherwise get lost * when accessing a root directory, depending on the active * filesystem. */ if ((r = disk_changed (dir.dev)) != 0) { release_cookie (&dir); if (r > 0) r = ECHMEDIA; PATH2COOKIE_DB (("relpath2cookie: returning %d", r)); return r; } if (!*path) { /* nothing more to do */ PATH2COOKIE_DB (("relpath2cookie: no more path, returning 0")); *res = dir; return 0; } if (dir.fs->fsflags & FS_KNOPARSE) { if (!dolast) { PATH2COOKIE_DB (("fs is a KNOPARSE, nothing to do")); strncpy (lastname, path, PATH_MAX-1); lastname[PATH_MAX - 1] = '\0'; r = 0; *res = dir; } else { PATH2COOKIE_DB (("fs is a KNOPARSE, calling lookup")); r = xfs_lookup (dir.fs, &dir, path, res); if (r == EMOUNT) { /* hmmm... a ".." at a mount point, maybe */ fcookie mounteddir; r = xfs_root (dir.fs, dir.dev, &mounteddir); if (r == 0 && drv == UNIDRV) { if (dir.fs == mounteddir.fs && dir.index == mounteddir.index && dir.dev == mounteddir.dev) { release_cookie (&dir); release_cookie (&mounteddir); dup_cookie (&dir, &cwd->root[UNIDRV]); TRACE (("path2cookie: restarting from mount point")); goto restart_mount; } } else { if (r == 0) release_cookie (&mounteddir); r = 0; } } release_cookie (&dir); } PATH2COOKIE_DB (("relpath2cookie: returning %ld", r)); return r; } /* parse all but (possibly) the last component of the path name * * rules here: at the top of the loop, &dir is the cookie of * the directory we're in now, xattr is its attributes, and res is * unset at the end of the loop, &dir is unset, and either r is * nonzero (to indicate an error) or res is set to the final result */ r = xfs_getxattr (dir.fs, &dir, &xattr); if (r) { DEBUG (("couldn't get directory attributes")); release_cookie (&dir); return EINTERNAL; } while (*path) { /* now we must have a directory, since there are more things * in the path */ if ((xattr.mode & S_IFMT) != S_IFDIR) { PATH2COOKIE_DB (("relpath2cookie: not a directory, returning ENOTDIR")); release_cookie (&dir); r = ENOTDIR; break; } /* we must also have search permission for the directory */ if (denyaccess (&xattr, S_IXOTH)) { DEBUG (("search permission in directory denied")); release_cookie (&dir); /* r = ENOTDIR; */ r = EACCES; break; } /* skip slashes */ while (DIRSEP (*path)) path++; /* if there's nothing left in the path, we can break here * * fna: I think this is an error, e.g. * looking up: /foo/bar/ should result in an error, or? * at least there is no lastname, so clear it */ if (!*path) { PATH2COOKIE_DB (("relpath2cookie: no more path, breaking (1)")); *lastname = '\0'; /* no lastname */ *res = dir; break; } /* next, peel off the next name in the path */ { register int len; register char c, *s; len = 0; s = lastname; c = *path; while (c && !DIRSEP (c)) { if (len++ < PATH_MAX) *s++ = c; c = *++path; } *s = 0; } /* if there are no more names in the path, and we don't want * to actually look up the last name, then we're done */ if (dolast == 0 && !*path) { PATH2COOKIE_DB (("relpath2cookie: no more path, breaking (2)")); *res = dir; PATH2COOKIE_DB (("relpath2cookie: *res = [%lx, %i]", res->fs, res->dev)); break; } if (cwd->root_dir) { if (samefile (&dir, &cwd->rootdir) && lastname[0] == '.' && lastname[1] == '.' && lastname[2] == '\0') { PATH2COOKIE_DB (("relpath2cookie: can't leave root [%s] -> forward to '.'", cwd->root_dir)); lastname[1] = '\0'; } } PATH2COOKIE_DB (("relpath2cookie: looking up [%s]", lastname)); r = xfs_lookup (dir.fs, &dir, lastname, res); if (r == EMOUNT) { fcookie mounteddir; r = xfs_root (dir.fs, dir.dev, &mounteddir); if (r == 0 && drv == UNIDRV) { if (samefile (&dir, &mounteddir)) { release_cookie (&dir); release_cookie (&mounteddir); dup_cookie (&dir, &cwd->root[UNIDRV]); TRACE(("path2cookie: restarting from mount point")); goto restart_mount; } else if (r == 0) { r = EINTERNAL; release_cookie (&mounteddir); release_cookie (&dir); break; } } else if (r == 0) { release_cookie (&mounteddir); } else { release_cookie (&dir); break; } } else if (r) { if (r == ENOENT && *path) { /* the "file" we didn't find was treated as a * directory */ r = ENOTDIR; } release_cookie (&dir); break; } /* read the file attribute */ r = xfs_getxattr (res->fs, res, &xattr); if (r != 0) { DEBUG (("path2cookie: couldn't get file attributes")); release_cookie (&dir); release_cookie (res); break; } /* check for a symbolic link * - if the file is a link, and we're following links, follow it */ if ((xattr.mode & S_IFMT) == S_IFLNK && (*path || dolast > 1)) { # if WITH_KERNFS /* The symbolic links on the kern filesystem have * their own ideas about following links. */ if (res->fs == &kern_filesys) { release_cookie (&dir); depth++; r = kern_follow_link (res, depth); if (r) { release_cookie (res); break; } } else # endif { r = xfs_readlink (res->fs, res, linkstuff, PATH_MAX); release_cookie (res); if (r) { DEBUG (("error reading symbolic link")); release_cookie (&dir); break; } r = relpath2cookie (&dir, linkstuff, follow_links, res, depth + 1); release_cookie (&dir); if (r) { DEBUG (("error following symbolic link")); break; } } dir = *res; xfs_getxattr (res->fs, res, &xattr); } else { release_cookie (&dir); dir = *res; } } PATH2COOKIE_DB (("relpath2cookie: returning %ld", r)); return r; } long path2cookie (const char *path, char *lastname, fcookie *res) { struct cwd *cwd = curproc->p_cwd; /* AHDI sometimes will keep insisting that a media change occured; * we limit the number of retrys to avoid hanging the system */ # define MAX_TRYS 4 int trycnt = MAX_TRYS - 1; fcookie *dir = &cwd->curdir[cwd->curdrv]; long r; restart: r = relpath2cookie (dir, path, lastname, res, 0); if (r == ECHMEDIA && trycnt--) { DEBUG (("path2cookie: restarting due to media change")); goto restart; } return r; } /* * release_cookie: tell the file system owner that a cookie is no * longer in use by the kernel * * release_cookie doesn't release anymore unless there is no entry in * the cookie cache. Otherwise, we just let the cookie get released * through clobber_cookie when the cache fills or is killed through the * routine above - EKL */ void release_cookie (fcookie *fc) { if (fc) { FILESYS *fs; fs = fc->fs; if (fs && fs->release) xfs_release (fs, fc); } } /* * Make a new cookie (newc) which is a duplicate of the old cookie * (oldc). This may be something the file system is interested in, * so we give it a chance to do the duplication; if it doesn't * want to, we just copy. */ void dup_cookie (fcookie *newc, fcookie *oldc) { FILESYS *fs; fs = oldc->fs; if (fs && fs->dupcookie) xfs_dupcookie (fs, newc, oldc); else *newc = *oldc; } /* * denyaccess(XATTR *xattr, unsigned perm): checks to see if the access * specified by perm (which must be some combination of S_IROTH, S_IWOTH, * and S_IXOTH) should be granted to the current process * on a file with the given extended attributes. Returns 0 if access * by the current process is OK, 1 if not. */ int denyaccess (XATTR *xattr, ushort perm) { #if 0 struct ucred *cred = curproc->p_cred->ucr; ushort mode; /* the super-user can do anything! */ if (cred->euid == 0) return 0; mode = xattr->mode; if (cred->euid == xattr->uid) perm = perm << 6; else if (cred->egid == xattr->gid) perm = perm << 3; else if (groupmember (cred, xattr->gid)) perm = perm << 3; if ((mode & perm) != perm) /* access denied */ return 1; #endif return 0; } /* * check to see that a file is a directory, and that write permission * is granted; return an error code, or 0 if everything is ok. */ long dir_access (fcookie *dir, ushort perm, ushort *mode) { XATTR xattr; long r; r = xfs_getxattr (dir->fs, dir, &xattr); if (r) { DEBUG (("dir_access: file system returned %ld", r)); return r; } if ((xattr.mode & S_IFMT) != S_IFDIR ) { DEBUG (("file is not a directory")); return ENOTDIR; } if (denyaccess (&xattr, perm)) { DEBUG(("no permission for directory")); return EACCES; } *mode = xattr.mode; return 0; } /* * returns 1 if the given name contains a wildcard character */ int has_wild (const char *name) { char c; while ((c = *name++) != 0) if (c == '*' || c == '?') return 1; return 0; } /* * void copy8_3(dest, src): convert a file name (src) into DOS 8.3 format * (in dest). Note the following things: * if a field has less than the required number of characters, it is * padded with blanks * a '*' means to pad the rest of the field with '?' characters * special things to watch for: * "." and ".." are more or less left alone * "*.*" is recognized as a special pattern, for which dest is set * to just "*" * Long names are truncated. Any extensions after the first one are * ignored, i.e. foo.bar.c -> foo.bar, foo.c.bar->foo.c. */ void copy8_3 (char *dest, const char *src) { char fill = ' ', c; int i; if (src[0] == '.') { if (src[1] == 0) { strcpy (dest, ". . "); return; } if (src[1] == '.' && src[2] == 0) { strcpy (dest, ".. . "); return; } } if (src[0] == '*' && src[1] == '.' && src[2] == '*' && src[3] == 0) { dest[0] = '*'; dest[1] = 0; return; } for (i = 0; i < 8; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') fill = c = '?'; *dest++ = toupper((int)c & 0xff); } while (i++ < 8) *dest++ = fill; *dest++ = '.'; i = 0; fill = ' '; while (c && c != '.') c = *src++; if (c) { for( ;i < 3; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') c = fill = '?'; *dest++ = toupper((int)c & 0xff); } } while (i++ < 3) *dest++ = fill; *dest = 0; } /* * int pat_match(name, patrn): returns 1 if "name" matches the template in * "patrn", 0 if not. "patrn" is assumed to have been expanded in 8.3 * format by copy8_3; "name" need not be. Any '?' characters in patrn * will match any character in name. Note that if "patrn" has a '*' as * the first character, it will always match; this will happen only if * the original pattern (before copy8_3 was applied) was "*.*". * * BUGS: acts a lot like the silly TOS pattern matcher. */ int pat_match (const char *name, const char *template) { char expname [TOS_NAMELEN+1]; register char *s; register char c; if (*template == '*') return 1; copy8_3 (expname, name); s = expname; while ((c = *template++) != 0) { if (c != *s && c != '?') return 0; s++; } return 1; } /* * int samefile(fcookie *a, fcookie *b): returns 1 if the two cookies * refer to the same file or directory, 0 otherwise */ int samefile (fcookie *a, fcookie *b) { if (a->fs == b->fs && a->dev == b->dev && a->index == b->index) return 1; return 0; } aranym-0.9.15/atari/hostfs/metados/filesys.h000066400000000000000000000271101213346724500207760ustar00rootroot00000000000000/* * $Id: filesys.h,v 1.2 2006-02-04 21:03:03 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * filesys.h,v 1.8 2001/06/13 20:21:15 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _filesys_h # define _filesys_h # include "mint/mint.h" # include "mint/file.h" # define DIRSEP(p) (((p) == '\\') || ((p) == '/')) # define MAX_LINKS 4 # define follow_links ((char *) -1L) /* external variables */ extern FILESYS *active_fs; extern FILESYS *drives[NUM_DRIVES]; extern int aliasdrv[NUM_DRIVES]; extern long dosdrvs; /* exported functions */ void xfs_block (FILESYS *fs, ushort dev, const char *func); void xfs_deblock (FILESYS *fs, ushort dev, const char *func); long getxattr (FILESYS *fs, fcookie *fc, XATTR *xattr); long getstat64 (FILESYS *fs, fcookie *fc, STAT *ptr); void kill_cache (fcookie *dir, char *name); long cache_lookup (fcookie *dir, char *name, fcookie *res); void cache_init (void); void clobber_cookie (fcookie *fc); void init_filesys (void); char *xfs_name (fcookie *fc); void xfs_add (FILESYS *fs); void close_filesys (void); long _s_ync (void); long _cdecl s_ync (void); long _cdecl sys_fsync (short fh); void changedrv (ushort drv, const char *function); long disk_changed (ushort drv); long relpath2cookie (fcookie *dir, const char *path, char *lastnm, fcookie *res, int depth); long path2cookie (const char *path, char *lastname, fcookie *res); void release_cookie (fcookie *fc); void dup_cookie (fcookie *new, fcookie *old); int _cdecl denyshare (FILEPTR *list, FILEPTR *newfileptr); int denyaccess (XATTR *, ushort); LOCK * _cdecl denylock (LOCK *list, LOCK *newlock); long dir_access (fcookie *, ushort, ushort *); int has_wild (const char *name); void copy8_3 (char *dest, const char *src); int pat_match (const char *name, const char *template); int samefile (fcookie *, fcookie *); # ifndef NONBLOCKING_DMA # define xfs_lock(fs, dev, func) # define xfs_unlock(fs, dev, func) # else # ifdef DEBUG_INFO # define xfs_lock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_block (fs, dev, func); \ }) # define xfs_unlock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_deblock (fs, dev, func); \ }) # else # define xfs_lock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_block (fs, dev, NULL); \ }) # define xfs_unlock(fs, dev, func) \ ({ \ if (!(fs->fsflags & FS_REENTRANT_L2)) \ xfs_deblock (fs, dev, NULL); \ }) # endif /* DEBUG_INFO */ # endif INLINE long xfs_root (FILESYS *fs, int drv, fcookie *fc) { register long r; xfs_lock (fs, drv, "xfs_root"); r = (*fs->root)(drv, fc); xfs_unlock (fs, drv, "xfs_root"); return r; } INLINE long xfs_lookup (FILESYS *fs, fcookie *dir, const char *name, fcookie *fc) { register long r; xfs_lock (fs, dir->dev, "xfs_lookup"); r = (*fs->lookup)(dir, name, fc); xfs_unlock (fs, dir->dev, "xfs_lokup"); return r; } INLINE DEVDRV * xfs_getdev (FILESYS *fs, fcookie *fc, long *devsp) { return (*fs->getdev)(fc, devsp); } INLINE long xfs_getxattr (FILESYS *fs, fcookie *fc, XATTR *xattr) { if (fs->getxattr) { register long r; xfs_lock (fs, fc->dev, "xfs_getxattr"); r = (*fs->getxattr)(fc, xattr); xfs_unlock (fs, fc->dev, "xfs_getxattr"); return r; } return getxattr (fs, fc, xattr); } INLINE long xfs_chattr (FILESYS *fs, fcookie *fc, int attr) { register long r; xfs_lock (fs, fc->dev, "xfs_chattr"); r = (*fs->chattr)(fc, attr); xfs_unlock (fs, fc->dev, "xfs_chatr"); return r; } INLINE long xfs_chown (FILESYS *fs, fcookie *fc, int uid, int gid) { register long r; xfs_lock (fs, fc->dev, "xfs_chown"); r = (*fs->chown)(fc, uid, gid); xfs_unlock (fs, fc->dev, "xfs_chown"); return r; } INLINE long xfs_chmode (FILESYS *fs, fcookie *fc, unsigned mode) { register long r; xfs_lock (fs, fc->dev, "xfs_chmod"); r = (*fs->chmode)(fc, mode); xfs_unlock (fs, fc->dev, "xfs_chmod"); return r; } INLINE long xfs_mkdir (FILESYS *fs, fcookie *dir, const char *name, unsigned mode) { register long r; xfs_lock (fs, dir->dev, "xfs_mkdir"); r = (*fs->mkdir)(dir, name, mode); xfs_unlock (fs, dir->dev, "xfs_mkdir"); return r; } INLINE long xfs_rmdir (FILESYS *fs, fcookie *dir, const char *name) { register long r; xfs_lock (fs, dir->dev, "xfs_rmdir"); r = (*fs->rmdir)(dir, name); xfs_unlock (fs, dir->dev, "xfs_rmdir"); return r; } INLINE long xfs_creat (FILESYS *fs, fcookie *dir, const char *name, unsigned mode, int attr, fcookie *fc) { register long r; xfs_lock (fs, dir->dev, "xfs_creat"); r = (*fs->creat)(dir, name, mode, attr, fc); xfs_unlock (fs, dir->dev, "xfs_creat"); return r; } INLINE long xfs_remove (FILESYS *fs, fcookie *dir, const char *name) { register long r; xfs_lock (fs, dir->dev, "xfs_remove"); r = (*fs->remove)(dir, name); xfs_unlock (fs, dir->dev, "xfs_remove"); return r; } INLINE long xfs_getname (FILESYS *fs, fcookie *root, fcookie *dir, char *buf, int len) { register long r; xfs_lock (fs, root->dev, "xfs_getname"); r = (*fs->getname)(root, dir, buf, len); xfs_unlock (fs, root->dev, "xfs_getname"); return r; } INLINE long xfs_rename (FILESYS *fs, fcookie *olddir, char *oldname, fcookie *newdir, const char *newname) { register long r; xfs_lock (fs, olddir->dev, "xfs_rename"); r = (*fs->rename)(olddir, oldname, newdir, newname); xfs_unlock (fs, olddir->dev, "xfs_rename"); return r; } INLINE long xfs_opendir (FILESYS *fs, DIR *dirh, int flags) { register long r; xfs_lock (fs, dirh->fc.dev, "xfs_opendir"); r = (*fs->opendir)(dirh, flags); xfs_unlock (fs, dirh->fc.dev, "xfs_opendir"); return r; } INLINE long xfs_readdir (FILESYS *fs, DIR *dirh, char *nm, int nmlen, fcookie *fc) { register long r; xfs_lock (fs, dirh->fc.dev, "xfs_readdir"); r = (*fs->readdir)(dirh, nm, nmlen, fc); xfs_unlock (fs, dirh->fc.dev, "xfs_readdir"); return r; } INLINE long xfs_rewinddir (FILESYS *fs, DIR *dirh) { register long r; xfs_lock (fs, dirh->fc.dev, "xfs_rewinddir"); r = (*fs->rewinddir)(dirh); xfs_unlock (fs, dirh->fc.dev, "xfs_rwinddir"); return r; } INLINE long xfs_closedir (FILESYS *fs, DIR *dirh) { register long r; xfs_lock (fs, dirh->fc.dev, "xfs_closedir"); r = (*fs->closedir)(dirh); xfs_unlock (fs, dirh->fc.dev, "xfs_closedir"); return r; } INLINE long xfs_pathconf (FILESYS *fs, fcookie *dir, int which) { return (*fs->pathconf)(dir, which); } INLINE long xfs_dfree (FILESYS *fs, fcookie *dir, long *buf) { register long r; xfs_lock (fs, dir->dev, "xfs_dfree"); r = (*fs->dfree)(dir, buf); xfs_unlock (fs, dir->dev, "xfs_dfree"); return r; } INLINE long xfs_writelabel (FILESYS *fs, fcookie *dir, const char *name) { register long r; xfs_lock (fs, dir->dev, "xfs_writelabel"); r = (*fs->writelabel)(dir, name); xfs_unlock (fs, dir->dev, "xfs_writelabel"); return r; } INLINE long xfs_readlabel (FILESYS *fs, fcookie *dir, char *name, int namelen) { register long r; xfs_lock (fs, dir->dev, "xfs_readlabel"); r = (*fs->readlabel)(dir, name, namelen); xfs_unlock (fs, dir->dev, "xfs_readlabel"); return r; } INLINE long xfs_symlink (FILESYS *fs, fcookie *dir, const char *name, const char *to) { register long r; xfs_lock (fs, dir->dev, "xfs_symlink"); r = (*fs->symlink)(dir, name , to); xfs_unlock (fs, dir->dev, "xfs_symlink"); return r; } INLINE long xfs_readlink (FILESYS *fs, fcookie *fc, char *buf, int len) { register long r; xfs_lock (fs, fc->dev, "xfs_readlink"); r = (*fs->readlink)(fc, buf, len); xfs_unlock (fs, fc->dev, "xfs_readlink"); return r; } INLINE long xfs_hardlink (FILESYS *fs, fcookie *fromdir, const char *fromname, fcookie *todir, const char *toname) { register long r; xfs_lock (fs, fromdir->dev, "xfs_hardlink"); r = (*fs->hardlink)(fromdir, fromname, todir, toname); xfs_unlock (fs, fromdir->dev, "xfs_hardlink"); return r; } INLINE long xfs_fscntl (FILESYS *fs, fcookie *dir, const char *name, int cmd, long arg) { register long r; xfs_lock (fs, dir->dev, "xfs_fscntl"); r = (*fs->fscntl)(dir, name, cmd, arg); xfs_unlock (fs, dir->dev, "xfs_fscntl"); return r; } INLINE long xfs_dskchng (FILESYS *fs, int drv, int mode) { register long r; xfs_lock (fs, drv, "xfs_dskchng"); r = (*fs->dskchng)(drv, mode); xfs_unlock (fs, drv, "xfs_dskchng"); return r; } INLINE long xfs_release (FILESYS *fs, fcookie *fc) { return (*fs->release)(fc); } INLINE long xfs_dupcookie (FILESYS *fs, fcookie *dst, fcookie *src) { return (*fs->dupcookie)(dst, src); } INLINE long xfs_mknod (FILESYS *fs, fcookie *dir, const char *name, ulong mode) { register long r; xfs_lock (fs, dir->dev, "xfs_mknod"); r = (*fs->mknod)(dir, name, mode); xfs_unlock (fs, dir->dev, "xfs_mknod"); return r; } INLINE long xfs_unmount (FILESYS *fs, int drv) { register long r; xfs_lock (fs, drv, "xfs_unmount"); r = (*fs->unmount)(drv); xfs_unlock (fs, drv, "xfs_unmount"); return r; } INLINE long xfs_stat64 (FILESYS *fs, fcookie *fc, STAT *stat) { if (fs->fsflags & FS_EXT_3) { register long r; xfs_lock (fs, fc->dev, "xfs_stat64"); r = (*fs->stat64)(fc, stat); xfs_unlock (fs, fc->dev, "xfs_stat64"); return r; } return getstat64 (fs, fc, stat); } INLINE long xdd_open (FILEPTR *f) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_open"); r = (f->dev->open)(f); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_open"); return r; } INLINE long xdd_write (FILEPTR *f, const char *buf, long bytes) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_write"); r = (f->dev->write)(f, buf, bytes); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_write"); return r; } INLINE long xdd_read (FILEPTR *f, char *buf, long bytes) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_read"); r = (f->dev->read)(f, buf, bytes); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_read"); return r; } INLINE long xdd_lseek (FILEPTR *f, long where, int whence) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_lseek"); r = (f->dev->lseek)(f, where, whence); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_lseek"); return r; } INLINE long xdd_ioctl (FILEPTR *f, int mode, void *buf) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_ioctl"); r = (f->dev->ioctl)(f, mode, buf); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_ioctl"); return r; } INLINE long xdd_datime (FILEPTR *f, ushort *timeptr, int rwflag) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_datime"); r = (f->dev->datime)(f, timeptr, rwflag); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_datime"); return r; } INLINE long xdd_close (FILEPTR *f, int pid) { register long r; xfs_lock (f->fc.fs, f->fc.dev, "xdd_close"); r = (f->dev->close)(f, pid); xfs_unlock (f->fc.fs, f->fc.dev, "xdd_close"); return r; } # endif /* _filesys_h */ aranym-0.9.15/atari/hostfs/metados/global.h000077500000000000000000000044311213346724500205640ustar00rootroot00000000000000/* * $Header: /var/repos/aranym/atari/hostfs/metados/global.h,v 1.3 2006-02-09 04:22:58 standa Exp $ * * 2001-2003 STanda * * This is a part of the ARAnyM project sources. * * Originally taken from the STonX CVS repository. * */ /* * Copyright 1998, 1999, 2001 by Markus Kohm . * * See COPYING for details of legal notes. * * Modified by Chris Felsch . * * Global definitions and variables */ #ifndef _global_h_ #define _global_h_ #ifdef ARAnyM_MetaDOS #include "filesys.h" #include "mint/stat.h" #include "mint/kerinfo.h" extern struct kerinfo *KERNEL; /* console output via Cconws */ #include "mint/osbind.h" #define c_conws Cconws #define MSG_PFAILURE(p,s) \ "\7Sorry, hostfs.dos NOT installed: " s "!\r\n" #endif /* ARAnyM_MetaDOS */ #endif /* _global_h_ */ /* * $Log: global.h,v $ * Revision 1.3 2006-02-09 04:22:58 standa * Sync with the FreeMiNT CVS. Now using the right integration point with * the kernel (the KERNEL macro). * * Revision 1.2 2006/02/06 20:58:17 standa * Sync with the FreeMiNT CVS. The make.sh now only builds the BetaDOS * hostfs.dos. * * Revision 1.1 2006/02/04 21:03:03 standa * Complete isolation of the metados fake mint VFS implemenation in the * metados folder. No #ifdef ARAnyM_MetaDOS in the hostfs folder files * themselves. * * Revision 1.5 2004/04/26 07:14:04 standa * Adjusted to the recent FreeMiNT CVS state to compile and also made * BetaDOS only. No more MetaDOS compatibility attempts. * * Dfree() fix - for Calamus to be able to save its documents. * * Some minor bugfix backports from the current FreeMiNTs CVS version. * * The mountpoint entries are now shared among several hostfs.dos instances * using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). * * Revision 1.4 2003/10/02 18:13:41 standa * Large HOSTFS cleanup (see the ChangeLog for more) * * Revision 1.3 2003/03/24 08:58:53 joy * aranymfs.xfs renamed to hostfs.xfs * * Revision 1.2 2003/03/01 11:57:37 joy * major HOSTFS NF API cleanup * * Revision 1.1 2002/12/10 20:47:21 standa * The HostFS (the host OS filesystem access via NatFeats) implementation. * * Revision 1.1 2002/05/22 07:53:22 standa * The PureC -> gcc conversion (see the CONFIGVARS). * MiNT .XFS sources added. * * */ aranym-0.9.15/atari/hostfs/metados/k_fds.c000066400000000000000000000252701213346724500204060ustar00rootroot00000000000000/* * $Id: k_fds.c,v 1.1 2002-12-10 20:47:21 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * k_fds.c,v 1.10 2001/06/13 20:21:20 fna Exp * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-01-12 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # include "k_fds.h" # include "mint/filedesc.h" # include "mint/stat.h" # include "mint/emu_tos.h" # include "filesys.h" # include "mintproc.h" # include "mintfake.h" /* do_open(f, name, rwmode, attr, x) * * f - pointer to FIELPTR * * name - file name * rwmode - file access mode * attr - TOS attributes for created files (if applicable) * x - filled in with attributes of opened file (can be NULL) */ long do_open (FILEPTR **f, const char *name, int rwmode, int attr, XATTR *x) { PROC *p = curproc; fcookie dir, fc; long devsp; DEVDRV *dev; long r; XATTR xattr; unsigned perm; int creating, exec_check; char temp1[PATH_MAX]; short cur_gid, cur_egid; TRACE (("do_open(%s)", name)); /* * first step: get a cookie for the directory */ r = path2cookie (name, temp1, &dir); if (r) { DEBUG (("do_open(%s): error %ld", name, r)); return r; } /* * second step: try to locate the file itself */ r = relpath2cookie (&dir, temp1, follow_links, &fc, 0); # ifdef CREATE_PIPES /* * file found: this is an error if (O_CREAT|O_EXCL) are set * ...or if this is Fcreate with nonzero attr on the pipe filesystem */ if ((r == 0) && ((rwmode & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL) || (attr && fc.fs == &pipe_filesys && (rwmode & (O_CREAT|O_TRUNC)) == (O_CREAT|O_TRUNC)))) # else /* * file found: this is an error if (O_CREAT|O_EXCL) are set */ if ((r == 0) && ((rwmode & (O_CREAT|O_EXCL)) == (O_CREAT|O_EXCL))) # endif { DEBUG (("do_open(%s): file already exists", name)); release_cookie (&fc); release_cookie (&dir); return EACCES; } /* file not found: maybe we should create it * note that if r != 0, the fc cookie is invalid (so we don't need to * release it) */ if (r == ENOENT && (rwmode & O_CREAT)) { /* check first for write permission in the directory */ r = xfs_getxattr (dir.fs, &dir, &xattr); if (r == 0) { if (denyaccess (&xattr, S_IWOTH)) r = EACCES; } if (r) { DEBUG(("do_open(%s): couldn't get " "write permission on directory", name)); release_cookie (&dir); return r; } assert (p->p_cred); /* fake gid if directories setgid bit set */ cur_gid = p->p_cred->rgid; cur_egid = p->p_cred->ucr->egid; if (xattr.mode & S_ISGID) { p->p_cred->rgid = xattr.gid; p->p_cred->ucr = copy_cred (p->p_cred->ucr); p->p_cred->ucr->egid = xattr.gid; } assert (p->p_cwd); r = xfs_creat (dir.fs, &dir, temp1, (S_IFREG|DEFAULT_MODE) & (~p->p_cwd->cmask), attr, &fc); p->p_cred->rgid = cur_gid; p->p_cred->ucr->egid = cur_egid; if (r) { DEBUG(("do_open(%s): error %ld while creating file", name, r)); release_cookie (&dir); return r; } creating = 1; } else if (r) { DEBUG(("do_open(%s): error %ld while searching for file", name, r)); release_cookie (&dir); return r; } else { creating = 0; } /* check now for permission to actually access the file */ r = xfs_getxattr (fc.fs, &fc, &xattr); if (r) { DEBUG(("do_open(%s): couldn't get file attributes",name)); release_cookie (&dir); release_cookie (&fc); return r; } /* we don't do directories */ if ((xattr.mode & S_IFMT) == S_IFDIR) { DEBUG(("do_open(%s): file is a directory",name)); release_cookie (&dir); release_cookie (&fc); return ENOENT; } exec_check = 0; switch (rwmode & O_RWMODE) { case O_WRONLY: perm = S_IWOTH; break; case O_RDWR: perm = S_IROTH|S_IWOTH; break; case O_EXEC: if (fc.fs->fsflags & FS_NOXBIT) perm = S_IROTH; else { perm = S_IXOTH; assert (p->p_cred); if (p->p_cred->ucr->euid == 0) exec_check = 1; /* superuser needs 1 x bit */ } break; case O_RDONLY: perm = S_IROTH; break; default: perm = 0; ALERT ("do_open: bad file access mode: %x", rwmode); } /* access checking; additionally, the superuser needs at least one * execute right to execute a file */ if ((exec_check && ((xattr.mode & (S_IXUSR|S_IXGRP|S_IXOTH)) == 0)) || (!creating && denyaccess (&xattr, perm))) { DEBUG(("do_open(%s): access to file denied", name)); release_cookie (&dir); release_cookie (&fc); return EACCES; } /* an extra check for write access -- even the superuser shouldn't * write to files with the FA_RDONLY attribute bit set (unless, * we just created the file, or unless the file is on the proc * file system and hence FA_RDONLY has a different meaning) */ if (!creating && (xattr.attr & FA_RDONLY) && fc.fs != &proc_filesys) { if ((rwmode & O_RWMODE) == O_RDWR || (rwmode & O_RWMODE) == O_WRONLY) { DEBUG(("do_open(%s): can't write a read-only file", name)); release_cookie (&dir); release_cookie (&fc); return EACCES; } } /* if writing to a setuid or setgid file, clear those bits */ if ((perm & S_IWOTH) && (xattr.mode & (S_ISUID|S_ISGID))) { xattr.mode &= ~(S_ISUID|S_ISGID); xfs_chmode (fc.fs, &fc, (xattr.mode & ~S_IFMT)); } /* If the caller asked for the attributes of the opened file, copy them over. */ if (x) *x = xattr; /* So far, so good. Let's get the device driver now, and try to * actually open the file. */ dev = xfs_getdev (fc.fs, &fc, &devsp); if (!dev) { DEBUG (("do_open(%s): device driver not found (%li)", name, devsp)); release_cookie (&dir); release_cookie (&fc); return devsp ? devsp : EINTERNAL; } assert (f && *f); if (dev == &fakedev) { /* fake BIOS devices */ FILEPTR *fp; assert (p->p_fd); fp = p->p_fd->ofiles[devsp]; if (!fp || fp == (FILEPTR *) 1) return EBADF; (*f)->links--; FP_FREE (*f); *f = fp; fp->links++; release_cookie (&dir); release_cookie (&fc); return 0; } (*f)->links = 1; (*f)->flags = rwmode; (*f)->pos = 0; (*f)->devinfo = devsp; (*f)->fc = fc; (*f)->dev = dev; release_cookie (&dir); r = xdd_open (*f); if (r < E_OK) { DEBUG(("do_open(%s): device open failed with error %ld", name, r)); release_cookie (&fc); return r; } #ifndef ARAnyM_MetaDOS /* special code for opening a tty */ if (is_terminal (*f)) { struct tty *tty; tty = (struct tty *) ((*f)->devinfo); /* in the middle of a hangup */ while (tty->hup_ospeed && !creating) sleep (IO_Q, (long) &tty->state); tty->use_cnt++; /* first open for this device (not counting set_auxhandle)? */ if ((!tty->pgrp && tty->use_cnt-tty->aux_cnt <= 1) || tty->use_cnt <= 1) { short s = tty->state & (TS_BLIND|TS_HOLD|TS_HPCL); short u = tty->use_cnt; short a = tty->aux_cnt; long r = tty->rsel; long w = tty->wsel; *tty = default_tty; if (!creating) tty->state = s; if ((tty->use_cnt = u) > 1 || !creating) { tty->aux_cnt = a; tty->rsel = r; tty->wsel = w; } if (!((*f)->flags & O_HEAD)) tty_ioctl (*f, TIOCSTART, 0); } # if 0 /* XXX fn: wait until line is online */ if (!((*f)->flags & O_NDELAY) && (tty->state & TS_BLIND)) (*f->dev->ioctl)((*f), TIOCWONLINE, 0); # endif } #endif // ARAnyM_MetaDOS return 0; } /* * helper function for do_close: this closes the indicated file pointer which * is assumed to be associated with process p. The extra parameter is necessary * because f_midipipe mucks with file pointers of other processes, so * sometimes p != curproc. * * Note that the function changedrv() in filesys.c can call this routine. * in that case, f->dev will be 0 to represent an invalid device, and * we cannot call the device close routine. */ long do_close (struct proc *p, FILEPTR *f) { long r = E_OK; if (!f) return EBADF; if (f == (FILEPTR *) 1) return E_OK; /* if this file is "select'd" by this process, unselect it * (this is just in case we were killed by a signal) */ #ifndef ARAnyM_MetaDOS /* BUG? Feature? If media change is detected while we're doing the select, * we'll never unselect (since f->dev is set to NULL by changedrv()) */ if (f->dev) { (*f->dev->unselect)(f, (long) p, O_RDONLY); (*f->dev->unselect)(f, (long) p, O_WRONLY); (*f->dev->unselect)(f, (long) p, O_RDWR); wake (SELECT_Q, (long) &select_coll); } #endif // ARAnyM_MetaDOS f->links--; if (f->links < 0) { ALERT ("do_close on invalid file struct! (links = %i)", f->links); // return 0; } #ifndef ARAnyM_MetaDOS /* TTY manipulation must be done *before* calling the device close routine, * since afterwards the TTY structure may no longer exist */ if (is_terminal (f) && f->links <= 0) { struct tty *tty = (struct tty *) f->devinfo; TIMEOUT *t; long ospeed = -1L, z = 0; /* for HPCL ignore ttys open as /dev/aux, else they would never hang up */ if (tty->use_cnt-tty->aux_cnt <= 1) { if ((tty->state & TS_HPCL) && !tty->hup_ospeed && !(f->flags & O_HEAD) && (*f->dev->ioctl)(f, TIOCOBAUD, &ospeed) >= 0 && NULL != (t = addroottimeout(500L, (to_func *)hangup_b1, 0))) { /* keep device open until hangup complete */ f->links = 1; ++tty->use_cnt; /* pass f to timeout function */ t->arg = (long)f; (*f->dev->ioctl)(f, TIOCCBRK, 0); /* flag: hanging up */ tty->hup_ospeed = -1; /* stop output, flush buffers, drop DTR... */ tty_ioctl(f, TIOCSTOP, 0); tty_ioctl(f, TIOCFLUSH, 0); if (ospeed > 0) { tty->hup_ospeed = ospeed; (*f->dev->ioctl)(f, TIOCOBAUD, &z); } } else tty->pgrp = 0; } tty->use_cnt--; if (tty->use_cnt <= 0 && tty->xkey) { kfree (tty->xkey); tty->xkey = 0; } } #endif // ARAnyM_MetaDOS if (f->dev) { r = xdd_close (f, p->pid); if (r) DEBUG (("close: device close failed")); } if (f->links <= 0) { release_cookie (&f->fc); FP_FREE (f); } return r; } aranym-0.9.15/atari/hostfs/metados/k_fds.h000066400000000000000000000057531213346724500204170ustar00rootroot00000000000000/* * $Id: k_fds.h,v 1.2 2005-09-26 22:18:05 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * k_fds.h,v 1.4 2001/06/13 20:21:20 fna Exp * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-01-13 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _k_fds_h # define _k_fds_h # include "mint/mint.h" # include "mint/file.h" #ifndef ARAnyM_MetaDOS long fd_alloc (struct proc *p, short *fd, short min, const char *func); void fd_remove (struct proc *p, short fd, const char *func); # define FD_ALLOC(p, fd, min) fd_alloc (p, fd, min, __FUNCTION__) # define FD_REMOVE(p, fd) fd_remove (p, fd, __FUNCTION__) long fp_alloc (struct proc *p, FILEPTR **resultfp, const char *func); void fp_done (struct proc *p, FILEPTR *fp, short fd, char fdflags, const char *func); void fp_free (FILEPTR *fp, const char *func); # define FP_ALLOC(p, result) fp_alloc (p, result, __FUNCTION__) # define FP_DONE(p, fp, fd, flags) fp_done (p, fp, fd, flags, __FUNCTION__) # define FP_FREE(fp) fp_free (fp, __FUNCTION__) long fp_get (struct proc **p, short *fd, FILEPTR **fp, const char *func); long fp_get1 (struct proc *p, short fd, FILEPTR **fp, const char *func); # define FP_GET(p, fd, fp) fp_get (p, fd, fp, __FUNCTION__) # define FP_GET1(p, fd, fp) fp_get1 (p, fd, fp, __FUNCTION__) # define GETFILEPTR(p, fd, fp) fp_get (p, fd, fp, __FUNCTION__) long do_dup (short fd, short min); #else # define FD_ALLOC(p, fd, min) 0 # define FD_REMOVE(p, fd) # define FP_ALLOC(p, result) 0; *(result) = fpMD # define FP_DONE(p, fp, fd, flags) # define FP_FREE(fp) # define FP_GET(p, fd, fp) *(fp) = fpMD # define FP_GET1(p, fd, fp) *(fp) = fpMD # define GETFILEPTR(p, fd, fp) 0; (void)p; *(fp) = fpMD /** from k_prot.h **/ # define groupmember( cred, gid ) 1 #endif // ARAnyM_MetaDOS long do_open (FILEPTR **f, const char *name, int rwmode, int attr, XATTR *x); long do_close (struct proc *p, FILEPTR *f); # endif /* _k_fds_h */ aranym-0.9.15/atari/hostfs/metados/kerinfo.h000066400000000000000000000030161213346724500207540ustar00rootroot00000000000000/* * $Id: kerinfo.h,v 1.1 2002-12-10 20:47:21 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * kerinfo.h,v 1.2 2001/06/13 20:21:22 fna Exp * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2001 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2001-04-24 * * please send suggestions, patches or bug reports to me or * the MiNT mailing list * */ # ifndef _kerinfo_h # define _kerinfo_h # include "mint/mint.h" # include "mint/kerinfo.h" # define DEFAULT_DIRMODE (0777) # if 0 # define DEFAULT_MODE (0666) # else # define DEFAULT_MODE (kernelinfo.default_perm) # endif extern struct kerinfo kernelinfo; # endif /* _global_h */ aranym-0.9.15/atari/hostfs/metados/main.c000066400000000000000000000120611213346724500202360ustar00rootroot00000000000000/* * $Id: main.c,v 1.13 2006-02-09 04:22:58 standa Exp $ * * The ARAnyM BetaDOS driver. * * 2001/2002 STan * * Based on: * @(#)cookiefs/dosmain.c * * Copyright (c) Julian F. Reschke, 28. November 1995 * All rights reserved. * **/ #include #include #include #include #include "mint/mint.h" #include "mint/filedesc.h" #include "mint/kerinfo.h" #include "../hostfs_xfs.h" #include "../hostfs_dev.h" #include "mintproc.h" #include "mintfake.h" #include "nf_ops.h" #define DEVNAME "ARAnyM Host Filesystem" #define VERSION "0.60" char DriverName[] = DEVNAME" "VERSION; long ldp; void _cdecl ShowBanner( void ); void* _cdecl InitDevice( long bosDevID, long dosDevID ); long set_cookie (ulong tag, ulong val); ulong get_cookie (ulong tag); /* Diverse Utility-Funktionen */ void _cdecl ShowBanner( void ) { Cconws ( "\r\n\033p "DEVNAME" "VERSION" \033q " "\r\nCopyright (c) ARAnyM Development Team, "__DATE__"\r\n" ); } struct cookie { long tag; long value; }; ulong get_cookie (ulong tag) { struct cookie *cookie = *(struct cookie **)0x5a0; if (!cookie) return 0; while (cookie->tag) { if (cookie->tag == tag) return cookie->value; cookie++; } return 0; } long set_cookie (ulong tag, ulong val) { struct cookie *cookie = *(struct cookie **)0x5a0; if (!cookie) return 0; while (cookie->tag) cookie++; cookie->tag = tag; cookie->value = val; return 1; } /* * global kerinfo structure */ struct kerinfo *KERNEL; void* _cdecl InitDevice( long bosDevID, long dosDevID ) { char mountPoint[] = "A:"; mountPoint[0] += (dosDevID = (dosDevID&0x1f)); // mask out bad values of the dosDevID /* * Hack to get the drive table the same for all hostfs.dos * instances loaded by BetaDOS into memory. * * Note: This is definitely not MP friendly, but FreeMiNT * doesn't support B(M)etaDOS anyway, so: Do not do * this when using 'MiNT' or 'MagX' it crashes then. */ if (!get_cookie(0x4D694E54L /*'MiNT'*/) && !get_cookie(0x4D616758L /*'MagX'*/)) { /* BetaDOS Host Filesystem cookie */ ulong p = get_cookie(0x42446866L /*'BDfh'*/); if ( p ) curproc = (void*)p; else set_cookie(0x42446866L /*'BDfh'*/, (ulong)curproc); } /* * We _must_ use the bosDevID to define the drive letter here * because MetaDOS (in contrary to BetaDOS) does not provide * the dosDevID */ DEBUG(("InitDevice: %s [dosDev=%ld, bosDev=%ld] addr: %lx", mountPoint, dosDevID, bosDevID, &hostfs_filesys )); /* initialize Native Features */ kernelinfo.nf_ops = nf_init(); KERNEL = &kernelinfo; /* check the NF HOSTFS avialability */ if ( ! hostfs_init() ) { return (void*)-1; } /* map the BetaDOS drive to some bosDrive | 0x6000 so that the mapping would not colide with the MiNT one */ fs_native_init( dosDevID | 0x6000, mountPoint, "/tmp", 1, &hostfs_filesys, &hostfs_fs_devdrv ); hostfs_filesys.root( dosDevID | 0x6000, &curproc->p_cwd->root[dosDevID] ); #ifdef DEBUG_INFO { fcookie *relto = &curproc->p_cwd->root[dosDevID]; DEBUG (("InitDevice: root (%08lx, %08lx, %04x)", relto->fs, relto->index, relto->dev)); } #endif return &ldp; } /** * $Log: main.c,v $ * Revision 1.13 2006-02-09 04:22:58 standa * Sync with the FreeMiNT CVS. Now using the right integration point with * the kernel (the KERNEL macro). * * Revision 1.12 2006/02/06 20:58:17 standa * Sync with the FreeMiNT CVS. The make.sh now only builds the BetaDOS * hostfs.dos. * * Revision 1.11 2006/02/04 21:03:03 standa * Complete isolation of the metados fake mint VFS implemenation in the * metados folder. No #ifdef ARAnyM_MetaDOS in the hostfs folder files * themselves. * * Revision 1.10 2006/01/31 15:57:39 standa * More of the initialization reworked to work with the new nf_ops. This time * I have tested it. * * Revision 1.9 2005/09/26 22:18:05 standa * Build warnings removal. * * Revision 1.8 2004/05/07 11:31:07 standa * The BDhf cookie is not used in MagiC or MiNT because it was causing * ARAnyM to crash. * * Revision 1.7 2004/04/26 07:14:04 standa * Adjusted to the recent FreeMiNT CVS state to compile and also made * BetaDOS only. No more MetaDOS compatibility attempts. * * Dfree() fix - for Calamus to be able to save its documents. * * Some minor bugfix backports from the current FreeMiNTs CVS version. * * The mountpoint entries are now shared among several hostfs.dos instances * using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). * * Revision 1.6 2003/03/24 08:58:53 joy * aranymfs.xfs renamed to hostfs.xfs * * Revision 1.5 2003/03/20 21:27:22 standa * The .xfs mapping to the U:\G mountpouints (single letter) implemented. * * Revision 1.4 2003/03/05 09:30:45 standa * mountPath declaration fixed. * * Revision 1.3 2003/03/03 20:39:44 standa * Parameter passing fixed. * * Revision 1.2 2002/12/11 08:05:54 standa * The /tmp/calam host fs mount point changed to /tmp one. * * Revision 1.1 2002/12/10 20:47:21 standa * The HostFS (the host OS filesystem access via NatFeats) implementation. * * **/ aranym-0.9.15/atari/hostfs/metados/mdglue.S000066400000000000000000000237641213346724500205630ustar00rootroot00000000000000// // $Header: /var/repos/aranym/atari/hostfs/metados/mdglue.S,v 1.4 2006-05-22 13:57:18 standa Exp $ // // 2001 STanda // // The basic file layout was taken from Julian Reschke's Cookies // .globl _init .globl _sys_d_free, _sys_f_sfirst, _sys_f_snext, _sys_f_open .globl _sys_f_close, _sys_d_atime, _sys_f_write, _sys_f_read .globl _sys_f_attrib, _sys_f_create, _sys_f_seek, _sys_f_cntl .globl _sys_d_create, _sys_d_delete, _sys_f_rename .globl _sys_d_getpath, _sys_d_dsetpath .globl _sys_d_pathconf, _sys_f_xattr, _sys_d_opendir, _sys_d_readdir .globl _sys_d_closedir, _sys_d_xreaddir, _sys_d_rewinddir .globl _sys_d_readlabel, _sys_d_delete .globl _DriverName, _ShowBanner, _InitDevice .macro PRINT value // nf_call( nf_get_id(NF_STDERR), value); #if 0 move.l #s_stderr,-(sp) move.l #0,-(sp) // fake return address dc.w 0x7300 lea 8(sp),sp move.l \value,-(sp) move.l #s_frm,-(sp) move.l d0,-(sp) move.l #0,-(sp) // fake return address dc.w 0x7301 lea 16(sp),sp #endif .endm PRINT #if 1 #define SREGS movem.l a0-a6/d1-d7,-(sp) #define RREGS movem.l (sp)+,a0-a6/d1-d7 #else #define SREGS #define RREGS #endif .macro SSTCK framereg PRINT sp move.l sp,temp // store the old stack to the new one (do not touch regs) move.l #stack,sp move.l temp,-(sp) SREGS move.l temp,\framereg .endm SSTCK .macro RSTCK RREGS move.l (sp),sp PRINT sp .endm RSTCK // // Call to the MetaDOS C function implementation macro // .macro MDBSR framereg,label move.w 4(\framereg),-(sp) move.l (\framereg),-(sp) move.l a5,-(sp) move.l a4,-(sp) move.l a3,-(sp) bsr \label lea 18(sp),sp .endm MDBSR .text _init: bsr _ShowBanner move.l #functionTable+12,d0 move.l #_DriverName,d1 rts initfun: movem.l a0-a6/d1-d7,-(sp) move.l d1,-(sp) // BetaDOS's dosDevID + some wird word / MetaDOS pure crap move.w d0,-(sp) // bosDevID 16bit move.w #0,-(sp) // pad for gcc (long) bsr _InitDevice addq #8,sp movem.l (sp)+,a0-a6/d1-d7 // d1: filename conversion // Bit 0: 0 = force upper case // Bit 1: 0 = fully expand // Bit 2: 0 = critical error handler reports EWRPRO moveq #5,d1 rts functionTable: dc.l 0x4d414749 // 'MAGI' dc.l 0x434d4554 // 'CMET' dc.l 349 dc.l initfun dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 // 49 dc.l -1, -1, -1, -1 dc.l wrap_dfree // 54 dc.l -1 dc.l -1 dc.l wrap_dcreate // 57 dc.l wrap_ddelete // 58 dc.l -1 // FIXME? wrap_dsetpath // 59 dc.l wrap_fcreate // 60 dc.l wrap_fopen // 61 dc.l wrap_fclose // 62 dc.l wrap_fread // 63 dc.l wrap_fwrite // 64 dc.l wrap_fdelete // 65 dc.l wrap_fseek // 66 dc.l wrap_fattrib // 67 dc.l -1 dc.l -1 // 69 dc.l -1 dc.l -1 // 71 // Dgetpath dc.l -1, -1, -1 // 74 dc.l -1, -1, -1 dc.l wrap_fsfirst // 78 dc.l wrap_fsnext // 79 dc.l -1, -1, -1, -1, -1 // 84 dc.l -1 dc.l wrap_frename // 86 dc.l wrap_fdatime // 87 dc.l -1, -1 // 89 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 99 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 109 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 119 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 129 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 139 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 149 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 159 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 169 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 179 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 189 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 199 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 209 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 219 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 229 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 239 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 249 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 259 dc.l -1 // FIXME: wrap_fcntl // 260 dc.l -1, -1, -1, -1 // 264 dc.l -1, -1, -1, -1, -1 // 269 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 279 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 289 dc.l -1, -1 dc.l wrap_dpathconf // 292 dc.l -1, -1 // 294 dc.l -1 dc.l wrap_dopendir // 296 dc.l wrap_dreaddir // 297 dc.l wrap_drewinddir // 298 dc.l wrap_dclosedir // 299 dc.l wrap_fxattr // 300 dc.l -1, -1, -1, -1 // 304 dc.l -1, -1, -1, -1, -1 // 309 dc.l -1, -1, -1, -1, -1 // 314 dc.l -1, -1, -1, -1, -1 // 319 dc.l -1, -1 dc.l wrap_dxreaddir // 322 dc.l -1, -1 dc.l -1, -1, -1, -1, -1 // 329 dc.l -1, -1, -1, -1, -1 // 334 dc.l -1, -1, -1 dc.l wrap_dreadlabel // 338 dc.l -1 // 339 dc.l -1, -1, -1, -1, -1 // 344 dc.l -1, -1, -1, -1, -1 // 349 wrap_dfree: PRINT #54 SSTCK a0 move.w 10(a0),-(sp) // drive # move.l 6(a0),-(sp) // diskinfo * MDBSR a0,_sys_d_free lea 6(sp),sp RSTCK rts wrap_dcreate: PRINT #57 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_create lea 4(sp),sp RSTCK rts wrap_ddelete: PRINT #58 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_delete lea 4(sp),sp RSTCK rts wrap_dsetpath: PRINT #59 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD // MDBSR a0,_sys_d_dsetpath lea 4(sp),sp RSTCK rts wrap_fcreate: PRINT #60 SSTCK a0 move.w 10(a0),-(sp) // attr move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_create lea 6(sp),sp RSTCK rts wrap_fopen: PRINT #61 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_open lea 6(sp),sp RSTCK cmp.l #0,d0 bmi fopen_error move.l #0,d0 // reset the fs to 0 (MetaDOS requires this) fopen_error: rts wrap_fclose: PRINT #62 SSTCK a0 move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_close lea 2(sp),sp RSTCK rts wrap_fread: PRINT #63 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_read lea 10(sp),sp RSTCK rts wrap_fwrite: PRINT #64 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_write lea 10(sp),sp RSTCK rts wrap_fdelete: PRINT #65 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_delete lea 4(sp),sp RSTCK rts wrap_fseek: PRINT #66 #if 1 SSTCK a0 move.w 12(a0),-(sp) // mode move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // count MDBSR a0,_sys_f_seek lea 8(sp),sp RSTCK #else move.l a5,-(sp) move.l a4,-(sp) move.l a3,-(sp) bsr _sys_f_seek lea 12(sp),sp #endif PRINT d0 rts wrap_fattrib: PRINT #67 SSTCK a0 move.w 12(a0),-(sp) // attrib move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_attrib lea 8(sp),sp RSTCK rts wrap_fsfirst: PRINT #78 SSTCK a0 move.w 10(a0),-(sp) // flags move.l a4,-(sp) // name/mask - 6(a0) or a4 MD MDBSR a0,_sys_f_sfirst lea 6(sp),sp RSTCK rts wrap_fsnext: PRINT #79 SSTCK a0 MDBSR a0,_sys_f_snext RSTCK rts wrap_frename: PRINT #86 SSTCK a0 move.l 12(a0),-(sp) // newname move.l a4,-(sp) // oldname - 8(a0) or a4 MD (yes 8(a0)!!!) move.w 6(a0),-(sp) // reserved MDBSR a0,_sys_f_rename lea 10(sp),sp RSTCK rts wrap_fdatime: PRINT #87 SSTCK a0 move.w 12(a0),-(sp) // flag move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // timeptr MDBSR a0,_sys_f_datime MDBSR a0,_sys_f_datime lea 8(sp),sp RSTCK rts wrap_fcntl: PRINT #260 SSTCK a0 move.w 12(a0),-(sp) // cmd move.l 8(a0),-(sp) // argument move.w 6(a0),-(sp) // handle // MDBSR a0,_sys_f_cntl lea 8(sp),sp RSTCK rts wrap_dpathconf: PRINT #292 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_pathconf lea 6(sp),sp RSTCK rts wrap_dopendir: PRINT #296 SSTCK a0 move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name 6(a0) or a4 MD MDBSR a0,_sys_d_opendir lea 6(sp),sp RSTCK rts wrap_dreaddir: PRINT #297 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_readdir lea 10(sp),sp RSTCK rts wrap_drewinddir: PRINT #298 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_rewind lea 4(sp),sp RSTCK rts wrap_dclosedir: PRINT #299 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_closedir lea 4(sp),sp RSTCK rts wrap_fxattr: PRINT #300 SSTCK a0 move.l 12(a0),-(sp) // xattr* move.l a4,-(sp) // name 8(a0) or a4 MD move.w 6(a0),-(sp) // flag MDBSR a0,_sys_f_xattr lea 10(sp),sp RSTCK rts wrap_dxreaddir: PRINT #322 SSTCK a0 move.l 20(a0),-(sp) // xret* move.l 16(a0),-(sp) // xattr* move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_xreaddir lea 18(sp),sp RSTCK rts wrap_dreadlabel: PRINT #338 SSTCK a0 move.w 14(a0),-(sp) // len move.l 10(a0),-(sp) // buffer move.l a4,-(sp) // pathname 6(a0) or a4 MD MDBSR a0,_sys_d_readlabel lea 10(sp),sp RSTCK rts s_frm: .ascii "DEV: %ld\n\0" s_stderr: .ascii "DEBUGPRINTF\0" .bss temp: ds.l 1 ds.b 8192 stack: // // $Log: mdglue.S,v $ // Revision 1.4 2006-05-22 13:57:18 standa // Debugging updated to use DEBUGPRINTF NF. // // Revision 1.3 2004/04/26 07:14:04 standa // Adjusted to the recent FreeMiNT CVS state to compile and also made // BetaDOS only. No more MetaDOS compatibility attempts. // // Dfree() fix - for Calamus to be able to save its documents. // // Some minor bugfix backports from the current FreeMiNTs CVS version. // // The mountpoint entries are now shared among several hostfs.dos instances // using a 'BDhf' cookie entry (atari/hostfs/metados/main.c). // // Revision 1.2 2003/03/03 20:39:44 standa // Parameter passing fixed. // // Revision 1.1 2002/12/10 20:47:21 standa // The HostFS (the host OS filesystem access via NatFeats) implementation. // // Revision 1.1 2002/05/22 07:53:22 standa // The PureC -> gcc conversion (see the CONFIGVARS). // MiNT .XFS sources added. // // Revision 1.4 2001/10/17 18:03:47 standa // typo fix // // Revision 1.3 2001/10/17 17:59:44 standa // The fandafs to aranymfs name change and code cleanup. // // aranym-0.9.15/atari/hostfs/metados/mintfake.h000066400000000000000000000031371213346724500211210ustar00rootroot00000000000000/* * $Id: mintfake.h,v 1.2 2004-04-26 07:14:04 standa Exp $ * * The ARAnyM MetaDOS driver. * * This is the FreeMiNT configuration file modified for * the ARAnyM HOSTFS.DOS MetaDOS driver * * 2002 STan */ #ifndef _mintfake_h_ #define _mintfake_h_ # include "debug.h" # ifndef ARAnyM_MetaDOS # define ARAnyM_MetaDOS # endif /* MetaDOS function header macros to let the functions create also metados independent */ # define MetaDOSFile void *devMD, char *pathNameMD, FILEPTR *fpMD, long retMD, int opcodeMD, # define MetaDOSDir void *devMD, char *pathNameMD, DIR *dirMD, long retMD, int opcodeMD, # define MetaDOSDTA0 void *devMD, char *pathNameMD, DTABUF *dtaMD, long retMD, int opcodeMD # define MetaDOSDTA0pass devMD, pathNameMD, dtaMD, retMD, opcodeMD # define MetaDOSDTA MetaDOSDTA0, /* disable some defines from the sys/mint/ *.h */ #ifdef O_GLOBAL # undef O_GLOBAL #endif #ifdef is_terminal # undef is_terminal #endif # define is_terminal(f) (0) /* disable all tty functions */ # define tty_read(f, buf, count) (0) # define tty_write(f, buf, count) (0) # define tty_ioctl(f, cmd, arg) (0) /* rollback the settings from the FreeMiNT CVS's sys/mint/config.h) */ #ifdef CREATE_PIPES # undef CREATE_PIPES #endif #ifdef SYSUPDATE_DAEMON # undef SYSUPDATE_DAEMON #endif #ifdef OLDSOCKDEVEMU # undef OLDSOCKDEVEMU #endif #ifdef WITH_KERNFS # undef WITH_KERNFS #endif # define WITH_KERNFS 0 #ifdef DEV_RANDOM # undef DEV_RANDOM #endif #ifdef PATH_MAX # undef PATH_MAX #endif # define PATH_MAX 1024 #ifdef SPRINTF_MAX # undef SPRINTF_MAX #endif # define SPRINTF_MAX 128 #endif /* _mintfake_h_ */ aranym-0.9.15/atari/hostfs/metados/mintproc.c000066400000000000000000000134551213346724500211550ustar00rootroot00000000000000/* * $Id: mintproc.c,v 1.2 2006-02-04 21:03:03 standa Exp $ * * The ARAnyM MetaDOS driver. * * This file is a fake PROC *curproc and some other * structures needed by the FreeMiNT GEMDOS file IO * implementation and not real for singleTOS * * 2002 STan */ #include "mintproc.h" #include "mint/filedesc.h" #include "mint/kerinfo.h" #include "filesys.h" #include "mintfake.h" /** proc.c **/ struct ucred ucred0 = { 100, /* euid */ 100, /* egid */ { 100 }, /* groups */ 1, /* ngroups */ 1 /* links */ }; struct pcred pcred0 = { &ucred0, 100, /* ruid */ 100, /* rgid */ 100, /* suid */ 100, /* sgid */ 1, /* links */ 1 /* pad */ }; struct filedesc filedesc0 = { NULL, /* struct file **ofiles; *//* file structures for open files */ NULL, /* char *ofileflags; *//* per-process open file flags */ 0, /* short nfiles; *//* number of open files allocated */ 0, /* short pad2; */ 1, /* long links; *//* reference count */ NULL, /* DIR *searches; *//* open directory searches */ /* TOS emulation */ NULL, /* DTABUF *dta; *//* current DTA */ # define NUM_SEARCH 10 /* max. number of searches */ /* DTABUF *srchdta[NUM_SEARCH]; */ /* for Fsfirst/next */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }, /* DIR srchdir[NUM_SEARCH]; */ /* for Fsfirst/next */ { { /* fcookie fc */ { NULL, 0, 0, 0 }, /* index */ 0, /* flags */ 0, /* fsstuf */ "", /* next */ NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, { { NULL, 0, 0, 0 }, 0, 0, "", NULL }, }, /* long srchtim[NUM_SEARCH]; *//* for Fsfirst/next */ { 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, }, /* XXX total crap * there are something like this "ofiles[-3]" over the src * before we dynamically alloc the ofiles we have * to fix all the places */ 0, /* short pad1; */ 0, /* short bconmap; *//* Bconmap mapping */ NULL, /* struct file *midiout; *//* MIDI output */ NULL, /* struct file *midiin; *//* MIDI input */ NULL, /* struct file *prn; *//* printer */ NULL, /* struct file *aux; *//* auxiliary tty */ NULL, /* struct file *control; *//* control tty */ /* struct file *dfiles [NDFILE]; */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, /* uchar dfileflags [NDFILE]; */ { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' } }; struct cwd cwd0 = { 1, /* links *//* reference count */ ~0777, /* cmask *//* mask for file creation */ 0, /* pad */ { NULL, 0, 0, 0 }, /* fcookie currdir; */ /* current directory */ { NULL, 0, 0, 0 }, /* fcookie rootdir; */ /* root directory */ NULL, /* root_dir *//* XXX chroot emulation */ /* DOS emulation */ 'A'-'B', /* curdrv *//* current drive */ 0, /* pad2 */ /* fcookie root[NDRIVES]; *//* root directories */ { { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 } }, /* fcookie curdir[NDRIVES];*//* current directory */ { { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 }, { NULL, 0, 0, 0 } } }; PROC proc0 = { &pcred0, &filedesc0, &cwd0, 1, 1, 1, DOM_TOS, 10 /* debug_level */ }; PROC *proclist = NULL; /* list of all active processes */ PROC *curproc = &proc0; /* current process */ PROC *rootproc = &proc0; /* pid 0 -- MiNT itself */ /** procfs.c **/ FILESYS proc_filesys; DEVDRV fakedev; /** time.c **/ long timezone = 0; /** kerinfo.c **/ /* * kernel info that is passed to loaded file systems and device drivers */ struct kerinfo kernelinfo = { 0, /* MINT_MAJ_VERSION */ 16, /* MINT_MIN_VERSION */ DEFAULT_MODE, 2, /* kerinfo version */ }; aranym-0.9.15/atari/hostfs/metados/mintproc.h000066400000000000000000000025471213346724500211620ustar00rootroot00000000000000/* * $Id: mintproc.h,v 1.2 2006-02-04 21:03:03 standa Exp $ * * The ARAnyM MetaDOS driver. * * This file is a fake header created from several * FreeMiNT CVS headers (mainly sys/mint/proc.h) * * 2002 STan */ #ifndef _mintproc_h_ #define _mintproc_h_ #include "mint/kernel.h" #include "mint/credentials.h" #include "mint/ktypes.h" /** from kerinfo.h **/ # undef DEFAULT_DIRMODE # define DEFAULT_DIRMODE (0777) # undef DEFAULT_MODE # define DEFAULT_MODE (0666) extern struct kerinfo kernelinfo; /** from proc.h **/ # define MIN_OPEN 6 /* 0..MIN_OPEN-1 are reserved for system */ # define DOM_TOS 0 /* TOS process domain */ # define DOM_MINT 1 /* MiNT process domain */ struct filedesc; struct cwd; struct proc { struct pcred *p_cred; /* owner identity */ struct filedesc *p_fd; /* open files */ struct cwd *p_cwd; /* path stuff */ short pid, ppid, pgrp; short domain; /* process domain (TOS or UNIX) */ ushort debug_level; /* debug-level of the process */ }; extern PROC *proclist; /* list of all active processes */ extern PROC *curproc; /* current process */ extern PROC *rootproc; /* pid 0 -- MiNT itself */ /** from time.h **/ extern long timezone; /** from procfs.h **/ extern FILESYS proc_filesys; extern DEVDRV fakedev; #define copy_cred(ucr) ucr #define free_cred(ucr) #endif /* _mintproc_h_ */ aranym-0.9.15/atari/mmusetup.cnf000066400000000000000000000104711213346724500165560ustar00rootroot00000000000000# This is the configuration file for SET_MMU.PRG, and must be located in either # the root directory of the boot drive or in the autofolder. # Split RAM into ST and TT RAM split_ram=yes # "pagesize" can be either 4k for 4k pages or 8k for ..eh.. 8k pages. pagesize=4k # With the "cacr" variable you set the cacr cpu register. # The following are the following flags you can use... # # edc - Enable Data Cache # nad - No Allocate Mode (data cache) # esb - Enable Store Buffer # dpi - Disable CPUSH Invalidation # foc - 1/2 cache operation mode enable (data cache) # ebc - Enable Branch Cache # cabc - Clear all entries in the branch cache # cubc - Clear all user entries in the branch cache # eic - Enable Instruction cache # nai - No Allocation Mode (instruction cache) # fic - 1/2 cache operation mode enable (instruction cache) cacr=edc,esb,ebc,cabc,eic # itt0, dtt0, itt1 and dtt1 sets the cpu registers with the same name to the # value give here. These are the "Transparent Translation Registers". # Since we are covering everything in the tree, we turn Trasparent Translation off. # This also fixes (I hope) the problems that Mach64 users have had. itt0=$0 dtt0=$0 itt1=$0 dtt1=$0 # To define a block of logical addressing area, used to build the translation # tree, the following variables are used for each block you wich to define. # logical - The logical start address of the block to define # physical - The physical start address of the block. The logical and physical # addresses are set equal in most cases. The CPU always uses logical # addresses to access memory, and then uses to tranlation tree to # obtain the actual physical address of that memory. # size - The size of the block. # pd_flags - This is used to set initial flags in the page descriptors, as the # tree is built. For example the caching mode is set using this flag. # These are the following flags you can use with pd_flags. It is highly # recommended you only use this to set the cache-mode, unless you know what you # do! # # - The following flags are understood, but not used! pdt_r1 is always forced # - into the pdt field of page descriptors. Also, SET_MMU can not create # - indirect page descriptors at this time! # # pdt_iv - Page Descriptor Type = invalid ( %00 ) # pdt_r1 - ------- "" -------- = Resident ( %01 ) This is the pdt value set # by SET_MMU. # pdt_r2 - ------- "" -------- = Resident ( %11 ) # pdt_id - ------- "" -------- = Indirect ( %10 ) # # - The following flags can all be set at will, but dont do that unless you know # - why you do it ;-) # # wp - Write Protect, the Page is write protected # used - Used. # modified - Modified. # super - Page is supervisor accessible only. # upa_0 - upa_3 - Sets the user page attribute field to 0,1,2 or 3 # global - Global. # ur1/ur2 - Sets the User reserved bit 11 (ur1) and 12 (ur2). # # The we have the caching modes.. # # c_wt - Cachable, Writetrought. Sets Writetrought caching. # c_cb - Cachable, CopyBack. Sets Copyback caching. # c_p - Cache inhibit, Precise exception model. # c_ip - Cache inhibit, ImPrecise exception model. # # All logical address spaces not defined by these blocks are marked INVALID in # the translation tree. # # IMPORTANT: There *MUST* be an empty line between translation definition blocks!! # # ST RAM. logical=$0 physical=$0 size=14*1024*1024 pd_flags=c_wt # TOS ROM logical=$00e00000 physical=$00e00000 size=1024*1024 pd_flags=c_p # I/O space logical=$00f00000 physical=$00f00000 size=1024*1024 pd_flags=c_p # Then we set up the block that define the FastRAM # Currently it's set to 512 MB (see the size=512*... below) logical=$01000000 physical=$01000000 size=512*1024*1024 pd_flags=c_wt # mirror of 24-bit address space with upper 8 bits set # mirror of ST-RAM (I doub't it's needed) logical=$ff000000 physical=$ff000000 size=14*1024*1024 pd_flags=c_wt # mirror of TOS ROM (I doub't it's needed) logical=$ffe00000 physical=$ffe00000 size=1024*1024 pd_flags=c_p # mirror of I/O space (the only required thing for backward/ST compatibility) logical=$fff00000 physical=$fff00000 size=1024*1024 pd_flags=c_p aranym-0.9.15/atari/natfeat/000077500000000000000000000000001213346724500156265ustar00rootroot00000000000000aranym-0.9.15/atari/natfeat/BINFILES000066400000000000000000000002211213346724500167370ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go only into binary distributions. BINFILES = aranym-0.9.15/atari/natfeat/EXTRAFILES000066400000000000000000000003011213346724500172110ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go only into source distributions. SRCFILES += BINFILES EXTRAFILES MISCFILES Makefile SRCFILES aranym-0.9.15/atari/natfeat/MISCFILES000066400000000000000000000002351213346724500170670ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go both into source and binary distributions. MISCFILES = aranym-0.9.15/atari/natfeat/Makefile000066400000000000000000000007731213346724500172750ustar00rootroot00000000000000# # Makefile for the embeded natfeat files. # currently used in hostfs and hostfs/metados Makefiles # # usage: copy this dir into a local folder and do # make parentdir=.. (adjust the .. ?) # SHELL = /bin/sh SUBDIRS = srcdir = . top_srcdir = $(parentdir)/../.. subdir = .natfeat default: all all-here: objs include $(top_srcdir)/CONFIGVARS include $(top_srcdir)/RULES include $(top_srcdir)/PHONY # default definitions OBJS = $(COBJS:.c=.o) objs: $(OBJS) include $(top_srcdir)/DEPENDENCIES aranym-0.9.15/atari/natfeat/SRCFILES000066400000000000000000000003631213346724500167650ustar00rootroot00000000000000# This file gets included by the Makefile in this directory to determine # the files that should go only into source distributions. HEADER = \ nf_ops.h COBJS = \ natfeat.c SOBJS = \ natfeat_asm.S SRCFILES = $(HEADER) $(COBJS) $(SOBJS) aranym-0.9.15/atari/natfeat/natfeat.c000066400000000000000000000044201213346724500174140ustar00rootroot00000000000000/* * ARAnyM native features interface. * (c) 2005-2008 ARAnyM development team * * In 2006 updated with FreeMiNT headers and code. * In 2008 converted from "__NF" cookie to direct usage of NF instructions * **/ /* * Copied from FreeMiNT source tree where Native Features were added recently * * Copyright 2003 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-13 * */ # include # include # include "nf_ops.h" #define ARANYM 1 # ifdef ARANYM static unsigned long nf_get_id_instr = 0x73004e75UL; static unsigned long nf_call_instr = 0x73014e75UL; static struct nf_ops _nf_ops = { (void*)&nf_get_id_instr, (void*)&nf_call_instr }; static struct nf_ops *nf_ops = 0UL; extern int detect_native_features(void); struct nf_ops * nf_init(void) { if (Supexec(detect_native_features)) { nf_ops = &_nf_ops; return nf_ops; } return 0UL; } const char * nf_name(void) { static char buf[64] = "Unknown emulator"; if (nf_ops) { static int done = 0; if (!done) { long nfid_name = nf_ops->get_id("NF_NAME"); if (nfid_name) nf_ops->call(nfid_name, buf, sizeof(buf)); done = 1; } } return buf; } int nf_debug(const char *msg) { if (nf_ops) { long nfid_stderr = nf_ops->get_id("NF_STDERR"); if (nfid_stderr) { nf_ops->call(nfid_stderr, msg); return 1; } } return 0; } void nf_shutdown(void) { if (nf_ops) { long shutdown_id = nf_ops->get_id("NF_SHUTDOWN"); if (shutdown_id) nf_ops->call(shutdown_id); } } # endif aranym-0.9.15/atari/natfeat/natfeat_asm.S000066400000000000000000000035601213346724500202400ustar00rootroot00000000000000/* * ARAnyM native features interface. * (c) 2005-2008 ARAnyM development team * * In 2006 updated with FreeMiNT headers and code. * In 2008 converted from "__NF" cookie to direct usage of NF instructions * **/ /* * Copied from FreeMiNT source tree where Native Features were added recently * * Copyright 2003 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-13 * * please send suggestions, patches or bug reports to me or * the MiNT mailing list * */ #define ARANYM 1 # ifdef ARANYM .text .globl _detect_native_features /* * NatFeats test (routine retuns TRUE/FALSE (1/0) in D0) */ _detect_native_features: clr.l d0 // assume no NatFeats available move.l sp,a1 // save the ssp move.l (0x0010).w,a0 // illegal instruction vector move.l #fail_natfeat,(0x0010).w nop // flush pipelines (for 68040+) pea (nf_version_name).w(pc) subq.l #4,sp dc.w 0x7300 // Jump to NATFEAT_ID tst.l d0 beq.s fail_natfeat moveq #1,d0 // NatFeats detected fail_natfeat: move.l a1,sp move.l a0,(0x0010).w nop // flush pipelines (for 68040+) rts nf_version_name: .ascii "NF_VERSION\0" # endif aranym-0.9.15/atari/natfeat/nf_ops.h000077500000000000000000000031151213346724500172660ustar00rootroot00000000000000/* * $Id: nf_ops.h,v 1.2 2006-01-31 16:21:22 standa Exp $ * * ARAnyM Native Features suite. * * This file was taken from FreeMiNT. * * Copyright 2003 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * Author: Frank Naumann * Started: 2003-12-14 * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * */ # ifndef _m68k_nf_ops_h # define _m68k_nf_ops_h #include /* for __CDECL */ struct nf_ops { long __CDECL (*get_id)(const char *); long __CDECL (*call)(long id, ...); long res[3]; }; /** * Use this function to intialize Native Features. * * @return the pointer to 'struct nf_ops' or NULL when * not available. **/ struct nf_ops *nf_init(void); /* basic set native feature functions */ const char *nf_name(void); int nf_debug(const char *msg); void nf_shutdown(void); # endif /* _m68k_nf_ops_h */ aranym-0.9.15/atari/network/000077500000000000000000000000001213346724500156755ustar00rootroot00000000000000aranym-0.9.15/atari/network/ethernet/000077500000000000000000000000001213346724500175135ustar00rootroot00000000000000aranym-0.9.15/atari/network/ethernet/README000066400000000000000000000042361213346724500204000ustar00rootroot00000000000000aranym.xif ========== The MiNT-Net xif driver for the ARAnyM ethernet interface. Installation and usage ---------------------- On host side (linux): --------------------- Make sure the 'aratapif' (ARAnyM TAP IFconfig) binary is installed somewhere in your $PATH (/usr/bin or /usr/local/bin) and that it is installed setuid root. If it's not use the following commands (run them as root): linux:~# chown root /usr/bin/aratapif linux:~# chmod u+s /usr/bin/aratapif Another important thing is to load the tuntap device driver (if it isn't compiled in the host kernel). I load it with the following command: linux:~# modprobe tun And before loading this driver please check (and possibly fix) the read/write permissions of the "/dev/net/tun" device: linux:~# chmod a+rw /net/dev/tun Otherwise ARAnyM started by regular user could not access this device. More information about TUN/TAP you'll find at http://vtun.sourceforge.net/tun/ On Atari side: -------------- Install MiNT-Net and copy the aranym.xif into your mint folder. Then configure the eth0 interface, best by calling the 'eth0-config.sh' script. If you wanted to configure the IP addresses or netmask, you could do that in the ARAnyM config file. Then in MiNT-Net you can e.g. ping to 192.168.0.1 (which is the default IP of the TAP tunnel's host side). How it works ------------ The ARAnyM establishes the TAP interface (using tuntap driver). tuntap linux driver: /usr/src/linux/Documentation/networking/tuntap.txt Some related info can be found at the following URLs: VTUN (virtual tunnel) http://vtun.sourceforge.net/tun Hercules (s390 emulator) http://www.conmicro.cx/hercules/ Compilation ----------- aranym.xif: * you need the source tree of FreeMiNT 1.16 (use CVS head branch) and if compiling on host, don't forget to edit freemint's CONFIGVARS and enable the CROSS=yes there. Point the FREEMINT_SRC_HOME environment variable to its home (the COPYING.MiNT file is there). * use make.sh to compile * the binaries are placed into the bin subfolder nfeth-config: * regular MiNT setup is able to compile it with simple 'make nfeth-config' ARAnyM itself: * run configure with --enable-ethernet aranym-0.9.15/atari/network/ethernet/ethernet_nfapi.h000066400000000000000000000043661213346724500226700ustar00rootroot00000000000000/* * ARAnyM ethernet driver - header file. * * Copyright (c) 2002-2004 Standa and Petr of ARAnyM dev team (see AUTHORS) * * This file is part of the ARAnyM project which builds a new and powerful * TOS/FreeMiNT compatible virtual machine running on almost any hardware. * * ARAnyM 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. * * ARAnyM 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 ARAnyM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _ARAETHER_NFAPI_H #define _ARAETHER_NFAPI_H /* The code for the FreeMiNT driver was moved to the FreeMiNT CVS: freemint/sys/sockets/xif/nfeth. If you edit this file then you would need to synchronize it with the driver in the freemint CVS (nfeth_nfapi.h). if you change anything in the enum {} below you have to increase this ARAETHER_NFAPI_VERSION! */ #define ARAETHER_NFAPI_VERSION 0x00000005 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ XIF_INTLEVEL, /* no parameters, return Interrupt Level in d0 */ XIF_IRQ, /* acknowledge interrupt from host */ XIF_START, /* (ethX), called on 'ifup', start receiver thread */ XIF_STOP, /* (ethX), called on 'ifdown', stop the thread */ XIF_READLENGTH, /* (ethX), return size of network data block to read */ XIF_READBLOCK, /* (ethX, buffer, size), read block of network data */ XIF_WRITEBLOCK, /* (ethX, buffer, size), write block of network data */ XIF_GET_MAC, /* (ethX, buffer, size), return MAC HW addr in buffer */ XIF_GET_IPHOST, /* (ethX, buffer, size), return IP address of host */ XIF_GET_IPATARI, /* (ethX, buffer, size), return IP address of atari */ XIF_GET_NETMASK /* (ethX, buffer, size), return IP netmask */ }; #define ETH(a) (nfEtherID + a) #endif /* _ARAETHER_NFAPI_H */ aranym-0.9.15/atari/network/ethernet/nfeth-config/000077500000000000000000000000001213346724500220625ustar00rootroot00000000000000aranym-0.9.15/atari/network/ethernet/nfeth-config/Makefile000066400000000000000000000002131213346724500235160ustar00rootroot00000000000000nfeth-config: nfeth-config.c m68k-atari-mint-gcc -Wall nfeth-config.c -o nfeth-config -lsocket clean: rm -f nfeth-config.o nfeth-config aranym-0.9.15/atari/network/ethernet/nfeth-config/eth0-config.sh000077500000000000000000000002451213346724500245250ustar00rootroot00000000000000ifconfig eth0 addr `./nfeth-config --get-atari-ip eth0` netmask `./nfeth-config --get-netmask eth0` up route add default eth0 gw `./nfeth-config --get-host-ip eth0` aranym-0.9.15/atari/network/ethernet/nfeth-config/nfeth-config.c000066400000000000000000000033121213346724500245740ustar00rootroot00000000000000/* * Get IP addresses of the networking tunnel * * Written by Petr Stehlik (c) 2003,2004 * * GPL */ #include /* for printf */ #include /* for atoi */ #include /* for strcmp */ #include /* for ioctl */ #include /* for ifreq */ #include /* for SIOCGLNKSTATS */ int main(int argc, char **argv) { int usage = 0; enum { NONE = -1, ADDR, DSTADDR, NETMASK } which = NONE; char *nif = "eth0"; int sockfd; struct ifreq ifr; long addr[10]; /* indexed by the enum 'which' */ if (argc <= 1) { usage = 1; } else { int i; for(i=1; i> 24) & 0xff, (addr[which] >> 16) & 0xff, (addr[which] >> 8) & 0xff, addr[which] & 0xff); return 0; } aranym-0.9.15/atari/network/linux-m68k/000077500000000000000000000000001213346724500176175ustar00rootroot00000000000000aranym-0.9.15/atari/network/linux-m68k/README000066400000000000000000000021621213346724500205000ustar00rootroot00000000000000How to enhance Linux-m68k kernel with NatFeats: 1) get Debian linux-2.4.27 kernel source code # apt-get install kernel-source-2.4.27 # cd /usr/src # tar xjf kernel-source-2.4.27.tar.bz2 2) patch with Debian m68k 2.4.27 kernel patch # apt-get install kernel-patch-2.4.27-m68k # cd /usr/src/kernel-source-2.4.27 # /usr/src/kernel-patches/m68k/2.4.27/apply/apply # cp /usr/src/kernel-patches/m68k/2.4.27/config.atari .config 3) copy files to appropriate locations: # cd /usr/src/kernel-source-2.4.27 # export ARAL68K_PATH=/path/to/aranym/atari/network/linux-m68k # cp $ARAL68K_PATH/natfeat.[ch] arch/m68k/atari/ # cp $ARAL68K_PATH/atari_nfeth.c drivers/net/ # cp $ARAL68K_PATH/../ethernet/ethernet_nfapi.h arch/m68k/atari/natfeat_ethernet_nfapi.h 4) patch kernel with NatFeat patch # cd /usr/src/kernel-source-2.4.27 # patch -p1 < $ARAL68K_PATH/linux-2.4.27-atari-natfeats.diff 5) rebuild # make oldconfig # make dep # make 6) enjoy the final kernel (vmlinux) Written in October 2005 by Petr Stehlik of ARAnyM team More info at http://aranym.atari.org/ http://www.debian.org/ aranym-0.9.15/atari/network/linux-m68k/atari_nfeth.c000066400000000000000000000161721213346724500222560ustar00rootroot00000000000000/* * atari_nfeth.c - ARAnyM ethernet card driver for GNU/Linux * * Copyright (c) 2005 Milan Jurik, Petr Stehlik of ARAnyM dev team * * Based on ARAnyM driver for FreeMiNT written by Standa Opichal * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #include #include #include #include #include "../../arch/m68k/atari/natfeat.h" #define DRV_NAME "atari_nfeth" #define DRV_VERSION "0.3" #define DRV_RELDATE "10/12/2005" /* These identify the driver base version and may not be removed. */ static char version[] __devinitdata = KERN_INFO DRV_NAME ".c:v" DRV_VERSION " " DRV_RELDATE " S.Opichal, M.Jurik, P.Stehlik\n" KERN_INFO " http://aranym.atari.org/\n"; MODULE_AUTHOR("Milan Jurik"); MODULE_DESCRIPTION("Atari NFeth driver"); MODULE_LICENSE("GPL"); /* MODULE_PARM(atari_nfeth_debug, "i"); MODULE_PARM_DESC(atari_nfeth_debug, "atari_nfeth_debug level (1-2)"); */ #undef DEBUG struct atari_nfeth_private { int ethX; struct net_device_stats stats; spinlock_t lock; }; static inline int getEthX(struct net_device *dev) { return ((struct atari_nfeth_private *)netdev_priv(dev))->ethX; } int atari_nfeth_open(struct net_device *dev); int atari_nfeth_stop(struct net_device *dev); irqreturn_t atari_nfeth_interrupt(int irq, void *dev_id, struct pt_regs *fp); int atari_nfeth_xmit(struct sk_buff *skb, struct net_device *dev); int atari_nfeth_open(struct net_device *dev) { nf_ethernet_xif_start(getEthX(dev)); /* Set IRQ */ dev->irq = nf_ethernet_get_irq(); if (request_irq(dev->irq, atari_nfeth_interrupt, IRQ_TYPE_PRIO, dev->name, dev)) { printk( DRV_NAME ": request for irq %d failed\n", dev->irq); return( 0 ); } /* Clean statistics */ memset(&(((struct atari_nfeth_private *)netdev_priv(dev))->stats), 0, sizeof(((struct atari_nfeth_private *)(dev->priv))->stats)); spin_lock_init(&(((struct atari_nfeth_private *)netdev_priv(dev))->lock)); #ifdef DEBUG printk( DRV_NAME ": open"); #endif /* Ready for data */ netif_start_queue(dev); return 0; } int atari_nfeth_stop(struct net_device *dev) { /* No more data */ netif_stop_queue(dev); /* Release IRQ */ free_irq(dev->irq, dev); nf_ethernet_xif_stop(getEthX(dev)); return 0; } /* * Read a packet out of the adapter and pass it to the upper layers */ static irqreturn_t inline recv_packet (struct net_device *dev) { int handled = 0; unsigned short pktlen; struct sk_buff *skb; struct atari_nfeth_private *anp = (struct atari_nfeth_private *)netdev_priv(dev); if (dev == NULL) { printk(DRV_NAME " recv_packet(): interrupt for unknown device.\n"); return IRQ_NONE; } /* read packet length (excluding 32 bit crc) */ pktlen = nf_ethernet_read_packet_len(getEthX(dev)); #ifdef DEBUG printk(DRV_NAME ": recv_packet: %i", pktlen); #endif //if (pktlen < 32) if (!pktlen) { #ifdef DEBUG printk(DRV_NAME ": recv_packet: pktlen == 0"); #endif anp->stats.rx_errors++; return IRQ_RETVAL(handled); } skb = dev_alloc_skb(pktlen + 2); if (skb == NULL) { #ifdef DEBUG printk(DRV_NAME ": recv_packet: out of mem (buf_alloc failed)"); #endif anp->stats.rx_dropped++; return IRQ_RETVAL(handled); } skb->dev = dev; skb_reserve( skb, 2 ); /* 16 Byte align */ skb_put( skb, pktlen ); /* make room */ nf_ethernet_read_block(getEthX(dev), skb->data, pktlen); skb->protocol = eth_type_trans(skb, dev); netif_rx(skb); dev->last_rx = jiffies; anp->stats.rx_packets++; anp->stats.rx_bytes += pktlen; /* and enqueue packet */ handled = 1; return IRQ_RETVAL(handled); } irqreturn_t atari_nfeth_interrupt(int irq, void *dev_id, struct pt_regs *fp) { struct net_device *dev = dev_id; struct atari_nfeth_private *anp = (struct atari_nfeth_private *)netdev_priv(dev); int this_dev_irq_bit; int irq_for_eth_bitmask; if (dev == NULL) { #ifdef DEBUG printk(DRV_NAME " atari_nfeth_interrupt(): interrupt for unknown device.\n"); #endif return IRQ_NONE; } spin_lock(&anp->lock); irq_for_eth_bitmask = nf_ethernet_interrupt(0); this_dev_irq_bit = 1 << (anp->ethX); if (this_dev_irq_bit & irq_for_eth_bitmask) { recv_packet(dev); nf_ethernet_interrupt(this_dev_irq_bit); } #ifdef DEBUG else { printk(DRV_NAME " atari_nfeth_interrupt(%d): not for me\n", anp->ethX); } #endif spin_unlock(&anp->lock); } int atari_nfeth_xmit(struct sk_buff *skb, struct net_device *dev) { int len; char *data, shortpkt[ETH_ZLEN]; struct atari_nfeth_private *anp = netdev_priv(dev); data = skb->data; len = skb->len; if (len < ETH_ZLEN) { memset(shortpkt, 0, ETH_ZLEN); memcpy(shortpkt, data, len); data = shortpkt; len = ETH_ZLEN; } dev->trans_start = jiffies; #ifdef DEBUG printk( DRV_NAME ": send %d bytes", len); #endif nf_ethernet_write_block(getEthX(dev), data, len); anp->stats.tx_packets++; anp->stats.tx_bytes += len; dev_kfree_skb(skb); return 0; } static void atari_nfeth_tx_timeout(struct net_device *dev) { struct atari_nfeth_private *anp = netdev_priv(dev); anp->stats.tx_errors++; netif_wake_queue(dev); } static struct net_device_stats *atari_nfeth_get_stats(struct net_device *dev) { struct atari_nfeth_private *anp = netdev_priv(dev); return &(anp->stats); } // probe1() - HW detection // probe() - set module owner, found == 1, probe1() // init() - probe() static int __init atari_nfeth_probe1(struct net_device *dev, int ethX) { static int did_version = 0; static int did_notinstall = 0; char errmsg[60]; if ( ! nf_ethernet_check_version(errmsg, sizeof(errmsg)-1) ) { if (did_notinstall++ == 0) printk (DRV_NAME " not installed - %s\n", errmsg); return -ENODEV; } /* Get MAC address */ if (! nf_ethernet_get_hw_addr(ethX, (unsigned char *)&(dev->dev_addr), ETH_ALEN)) { #ifdef DEBUG printk(DRV_NAME " eth%d not installed - not defined\n", ethX); #endif return -ENODEV; } ether_setup(dev); dev->open = &atari_nfeth_open; dev->stop = &atari_nfeth_stop; dev->hard_start_xmit = &atari_nfeth_xmit; dev->tx_timeout = &atari_nfeth_tx_timeout; dev->get_stats = &atari_nfeth_get_stats; dev->flags |= NETIF_F_NO_CSUM; if ((dev->priv = kmalloc(sizeof(struct atari_nfeth_private), GFP_KERNEL)) == NULL) return -ENOMEM; ((struct atari_nfeth_private *)(dev->priv))->ethX = ethX; /* index of NF NIC */ if (did_version++ == 0) printk(version); return 0; } int __init atari_nfeth_probe(struct net_device *dev) { static int found = 0; SET_MODULE_OWNER(dev); if (!atari_nfeth_probe1(dev, found++)) { return 0; } return -ENODEV; } #ifdef MODULE static struct net_device atari_nfeth_dev; int atari_nfeth_init(void) { int err; if (err = atari_nfeth_probe(&atari_nfeth_dev)) { return err; } // ? atari_nfeth_dev.init = atari_nfeth_probe; if ((err = register_netdev(&atari_nfeth_dev))) { if (err == -EIO) { printk(DRV_NAME ": NatFeat Ethernet not found. Module not loaded.\n"); } return err; } return 0; } void atari_nfeth_cleanup(void) { unregister_netdev(&atari_nfeth_dev); free_netdev(atari_nfeth_dev); // ? } module_init(atari_nfeth_init); module_exit(atari_nfeth_cleanup); #endif /* MODULE */ /* vim:ts=4:sw=4: */ aranym-0.9.15/atari/network/linux-m68k/linux-2.4.27-atari-natfeats.diff000066400000000000000000000134131213346724500252430ustar00rootroot00000000000000--- /tmp/kernel-source-2.4.27-atari/arch/m68k/atari/config.c 2002-11-29 00:53:09.000000000 +0100 +++ kernel-source-2.4.27-atari/arch/m68k/atari/config.c 2005-08-24 23:28:27.000000000 +0200 @@ -32,6 +32,9 @@ #include #include #include +#ifdef CONFIG_NATFEAT +#include "natfeat.h" +#endif #include #include @@ -237,6 +240,12 @@ } } +void atari_poweroff(void) +{ +#ifdef CONFIG_NATFEAT + nf_shutdown(); +#endif +} /* * Setup the Atari configuration info @@ -248,6 +257,10 @@ memset(&atari_hw_present, 0, sizeof(atari_hw_present)); +#ifdef CONFIG_NATFEAT + nf_init(); +#endif + atari_debug_init(); ioport_resource.end = 0xFFFFFFFF; /* Change size of I/O space from 64KB @@ -271,6 +284,8 @@ mach_get_irq_list = atari_get_irq_list; mach_gettimeoffset = atari_gettimeoffset; mach_reset = atari_reset; + mach_halt = atari_poweroff; + mach_power_off = atari_poweroff; #ifdef CONFIG_ATARI_FLOPPY mach_floppy_setup = atari_floppy_setup; #endif @@ -669,6 +684,11 @@ static void atari_get_model(char *model) { +#ifdef CONFIG_NATFEAT + if (nf_name1(model, 80)) { // char model[80] defined in kernel/setup.c + return; + } +#endif strcpy(model, "Atari "); switch (atari_mch_cookie >> 16) { case ATARI_MCH_ST: --- /tmp/kernel-source-2.4.27-atari/arch/m68k/atari/Makefile 2002-11-29 00:53:09.000000000 +0100 +++ kernel-source-2.4.27-atari/arch/m68k/atari/Makefile 2005-08-24 02:44:28.000000000 +0200 @@ -20,4 +20,6 @@ obj-$(CONFIG_HADES) += hades-pci.o endif +obj-$(CONFIG_NATFEAT) += natfeat.o + include $(TOPDIR)/Rules.make --- /tmp/kernel-source-2.4.27-atari/drivers/net/Makefile 2004-08-08 01:26:04.000000000 +0200 +++ kernel-source-2.4.27-atari/drivers/net/Makefile 2005-10-25 09:36:20.000000000 +0200 @@ -227,6 +227,7 @@ obj-$(CONFIG_ATARILANCE) += atarilance.o obj-$(CONFIG_ATARI_BIONET) += atari_bionet.o obj-$(CONFIG_ATARI_PAMSNET) += atari_pamsnet.o +obj-$(CONFIG_ATARI_NFETH) += atari_nfeth.o obj-$(CONFIG_A2065) += a2065.o obj-$(CONFIG_HYDRA) += hydra.o 8390.o obj-$(CONFIG_ARIADNE) += ariadne.o --- /tmp/kernel-source-2.4.27-atari/.config 2005-08-03 21:38:35.000000000 +0200 +++ kernel-source-2.4.27-atari/.config 2005-08-25 00:27:49.000000000 +0200 @@ -27,6 +27,8 @@ CONFIG_ATARI=y # CONFIG_HADES is not set # CONFIG_PCI is not set +CONFIG_ARANYM=y +CONFIG_NATFEAT=y # CONFIG_MAC is not set # CONFIG_APOLLO is not set # CONFIG_VME is not set @@ -371,6 +373,7 @@ CONFIG_ATARILANCE=m # CONFIG_ATARI_BIONET is not set # CONFIG_ATARI_PAMSNET is not set +CONFIG_ATARI_NFETH=y # # Character devices --- /tmp/kernel-source-2.4.27-atari/arch/m68k/config.in 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/arch/m68k/config.in 2005-08-24 23:31:08.000000000 +0200 @@ -38,6 +38,12 @@ else define_bool CONFIG_PCI n fi +dep_bool ' ARAnyM support' CONFIG_ARANYM $CONFIG_ATARI +if [ "$CONFIG_ARANYM" = "y" ]; then + define_bool CONFIG_NATFEAT y +else + define_bool CONFIG_NATFEAT n +fi bool 'Macintosh support' CONFIG_MAC if [ "$CONFIG_MAC" = "y" ]; then define_bool CONFIG_NUBUS y @@ -356,6 +362,9 @@ tristate ' BioNet-100 support' CONFIG_ATARI_BIONET tristate ' PAMsNet support' CONFIG_ATARI_PAMSNET fi + if [ "$CONFIG_NATFEAT" = "y" ]; then + tristate ' NatFeat Ethernet support' CONFIG_ATARI_NFETH + fi fi if [ "$CONFIG_SUN3" = "y" -o "$CONFIG_SUN3X" = "y" ]; then tristate ' Sun3/Sun3x on-board LANCE support' CONFIG_SUN3LANCE --- /tmp/kernel-source-2.4.27-atari/Documentation/Configure.help 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/Documentation/Configure.help 2005-08-24 23:47:00.000000000 +0200 @@ -23555,6 +23555,13 @@ This option enables support for the Hades Atari clone. If you plan to use this kernel on a Hades, say Y here; otherwise say N. +ARAnyM support +CONFIG_ARANYM + This option enables support for the ARAnyM virtual machine. If you plan + to use this kernel on ARAnyM, say Y here; otherwise say N. + Currently it just enables support for Native Features - a common + API for accessing host hardware from within the virtual machine. + Macintosh support CONFIG_MAC This option enables support for the Apple Macintosh series of @@ -24012,6 +24019,16 @@ ACSI port ("ACSI node"). The driver works (has to work...) with a polled I/O scheme, so it's rather slow :-( +ARAnyM networking support +CONFIG_ATARI_NFETH + Say Y to include support for the NatFeat based Ethernet driver + currently available in ARAnyM virtual machine. + + This driver is also available as a module ( = code which can be + inserted in and removed from the running kernel whenever you + want). The module is called atari_nfeth.o. If you want to compile it as a + module, say M here and read . + Amiga mouse support CONFIG_AMIGAMOUSE If you want to be able to use an Amiga mouse in Linux, say Y. --- /tmp/kernel-source-2.4.27-atari/drivers/net/Space.c 2005-08-03 21:38:18.000000000 +0200 +++ kernel-source-2.4.27-atari/drivers/net/Space.c 2005-08-19 23:02:49.000000000 +0200 @@ -84,6 +84,7 @@ extern int seeq8005_probe(struct net_device *); extern int smc_init( struct net_device * ); extern int atarilance_probe(struct net_device *); +extern int atari_nfeth_probe(struct net_device *); extern int sun3lance_probe(struct net_device *); extern int sun3_82586_probe(struct net_device *); extern int apne_probe(struct net_device *); @@ -333,6 +334,9 @@ #ifdef CONFIG_ATARILANCE /* Lance-based Atari ethernet boards */ {atarilance_probe, 0}, #endif +#ifdef CONFIG_ATARI_NFETH + {atari_nfeth_probe, 0}, +#endif #ifdef CONFIG_SUN3LANCE /* sun3 onboard Lance chip */ {sun3lance_probe, 0}, #endif aranym-0.9.15/atari/network/linux-m68k/natfeat.c000066400000000000000000000120111213346724500214000ustar00rootroot00000000000000/* * natfeat.c - ARAnyM hardware support via Native Features (natfeats) * * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #include #include #include // strncpy() #include // snprintf() #include // virt_to_phys() #include "natfeat.h" #ifdef CONFIG_ATARI_NFETH #include "natfeat_ethernet_nfapi.h" #endif #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif static unsigned long nf_get_id_instr = 0x73004e75UL; static unsigned long nf_call_instr = 0x73014e75UL; static struct nf_ops _nf_ops = { &nf_get_id_instr, &nf_call_instr }; static struct nf_ops *nf_ops = NULL; #define NF_GETID(a) nf_ops->get_id(virt_to_phys(a)) int detect_native_features(void) { int ret; long save_sp, save_vbr; static long tmp_vectors[5]; static char *nf_version = "NF_VERSION"; __asm__ __volatile__ ( "movec %/vbr,%2\n\t" /* save vbr value */ "movel #Liierr,%3@(0x10)\n\t" /* set Illegal Insn vec */ "movec %3,%/vbr\n\t" /* set up temporary vectors */ "movel %/sp,%1\n\t" /* save sp */ "moveq #0,%0\n\t" /* assume no NatFeats */ "clrl %/d0\n\t" /* clear ID value register */ "movel %4,%/sp@\n\t" "subql #4,%/sp\n\t" "dc 0x7300\n\t" /* call NatFeat GetID */ "tstl %/d0\n\t" /* check ID value register */ "sne %0\n\t" /* if non-zero NatFeats work */ "Liierr:\n\t" "movel %1,%/sp\n\t" /* restore sp */ "movec %2,%/vbr" /* restore vbr */ : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr) : "a" (tmp_vectors), "a" (virt_to_phys(nf_version)) : "d0" /* reg d0 used by NatFeats */ ); return( ret ); } struct nf_ops * nf_init(void) { if (detect_native_features()) { nf_ops = &_nf_ops; nf_debug("NatFeats found\n"); return nf_ops; } return NULL; } /****************/ /* NF Basic Set */ int nf_name1(char *buf, int bufsize) { if (nf_ops) { static long nfid_name = 0; if (nfid_name == 0) { nfid_name = NF_GETID("NF_NAME"); } if (nfid_name) { nf_ops->call(nfid_name+1, virt_to_phys(buf), bufsize); // TODO: lock buf to prevent swap out return TRUE; } } return FALSE; } int nf_debug(const char *msg) { if (nf_ops) { static long nfid_stderr = 0; if (nfid_stderr == 0) { nfid_stderr = NF_GETID("NF_STDERR"); } if (nfid_stderr) { nf_ops->call(nfid_stderr, virt_to_phys(msg)); // TODO: lock msg to prevent swap out return TRUE; } } return FALSE; } int nf_shutdown(void) { if (nf_ops) { long shutdown_id = NF_GETID("NF_SHUTDOWN"); if (shutdown_id) { nf_ops->call(shutdown_id); return TRUE; /* never returns actually */ } } return FALSE; } #ifdef CONFIG_ATARI_NFETH /****************************/ /* NatFeat Ethernet support */ static long nfEtherID = 0; static int is_nf_eth(void) { if (nf_ops) { if (nfEtherID == 0) { nfEtherID = NF_GETID("ETHERNET"); } } return (nfEtherID != 0); } int nf_ethernet_check_version(char *errmsg, int errmsglen) { if (is_nf_eth()) { static unsigned long host_ver = 0; if (host_ver == 0) { host_ver = nf_ops->call(ETH(GET_VERSION)); } if (host_ver == ARAETHER_NFAPI_VERSION) { return TRUE; } else { // API version mismatch if (errmsg != NULL) { snprintf(errmsg, errmsglen, "NatFeat Ethernet API: expected %d, got %ld", ARAETHER_NFAPI_VERSION, host_ver); } return FALSE; } } if (errmsg != NULL) { strncpy(errmsg, "NatFeat Ethernet support not found", errmsglen); } return FALSE; } int nf_ethernet_get_irq(void) { return is_nf_eth() ? nf_ops->call(ETH(XIF_INTLEVEL)) : 0; } int nf_ethernet_get_hw_addr(int ethX, char *buffer, int bufsize) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_GET_MAC), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)bufsize); // TODO: lock buffer to prevent swap out } return FALSE; } int nf_ethernet_interrupt(int bit) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_IRQ), (unsigned long)bit); } return 0; } int nf_ethernet_read_packet_len(int ethX) { if (is_nf_eth()) { return nf_ops->call(ETH(XIF_READLENGTH), (unsigned long)ethX); } return 0; } void nf_ethernet_read_block(int ethX, char *buffer, int len) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_READBLOCK), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)len); // TODO: lock buffer to prevent swap out } } void nf_ethernet_write_block(int ethX, char *buffer, int len) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_WRITEBLOCK), (unsigned long)ethX, virt_to_phys(buffer), (unsigned long)len); // TODO: lock buffer to prevent swap out } } void nf_ethernet_xif_start(int ethX) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_START), (unsigned long)ethX); } } void nf_ethernet_xif_stop(int ethX) { if (is_nf_eth()) { nf_ops->call(ETH(XIF_STOP), (unsigned long)ethX); } } #endif // CONFIG_ATARI_NFETH /* vim:ts=4:sw=4: */ aranym-0.9.15/atari/network/linux-m68k/natfeat.h000066400000000000000000000017351213346724500214200ustar00rootroot00000000000000/* * ARAnyM hardware support via Native Features (natfeats) * * Copyright (c) 2005 Petr Stehlik of ARAnyM dev team * * This software may be used and distributed according to the terms of * the GNU General Public License (GPL), incorporated herein by reference. */ #ifndef _natfeat_h #define _natfeat_h struct nf_ops { long (*get_id)(const char *); long (*call)(long id, ...); long res[3]; }; struct nf_ops *nf_init(void); int nf_name(char *buf, int bufsize); int nf_debug(const char *msg); int nf_shutdown(void); int nf_ethernet_check_version(char *errmsg, int errmsglen); int nf_ethernet_get_irq(void); int nf_ethernet_get_hw_addr(int ethX, char *buffer, int bufsize); int nf_ethernet_interrupt(int bit); int nf_ethernet_read_packet_len(int ethX); void nf_ethernet_read_block(int ethX, char *buffer, int len); void nf_ethernet_write_block(int ethX, char *buffer, int len); void nf_ethernet_xif_start(int ethX); void nf_ethernet_xif_stop(int ethX); # endif /* _natfeat_h */ aranym-0.9.15/atari/newdesk.inf000066400000000000000000000014151213346724500163430ustar00rootroot00000000000000#a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #K 4F 53 4C 00 46 42 43 57 45 58 00 00 00 00 00 00 00 00 00 00 00 00 00 52 00 00 4D 56 00 00 00 @ #E 18 05 00 06 00 3C 00 00 00 00 #Q 41 70 73 70 7D 70 #W 00 00 00 07 4C 0C 00 @ #W 00 00 02 0B 4C 09 00 @ #W 00 00 0A 0F 34 09 00 @ #W 00 00 0E 01 34 09 00 @ #W 00 00 04 07 4C 0C 00 @ #W 00 00 0C 0B 4C 09 00 @ #W 00 00 08 0F 34 09 00 @ #W 00 00 06 01 34 09 00 @ #N FF 04 000 @ *.*@ @ #D FF 01 000 @ *.*@ @ #G 03 FF 000 *.APP@ @ @ #G 03 FF 000 *.PRG@ @ @ #Y 03 FF 000 *.GTP@ @ @ #P 03 FF 000 *.TTP@ @ @ #F 03 04 000 *.TOS@ @ @ #M 00 01 00 FF C HARD DISK@ @ #M 00 00 00 FF A FLOPPY DISK@ @ #M 01 00 00 FF B FLOPPY DISK@ @ #T 00 07 02 FF TRASH@ @ aranym-0.9.15/atari/nfcdrom/000077500000000000000000000000001213346724500156345ustar00rootroot00000000000000aranym-0.9.15/atari/nfcdrom/Makefile000066400000000000000000000006761213346724500173050ustar00rootroot00000000000000 TARGET = nfcdrom.bos COBJS = nfcdrom.c ../natfeat/natfeat.c SOBJS = entry.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-0.9.15/atari/nfcdrom/entry.S000066400000000000000000000126721213346724500171310ustar00rootroot00000000000000/* NatFeat host CD-ROM access, MetaDOS BOS driver entry points ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .text .globl _asm_init_devices, _init_devices .globl _asm_cd_open, _cd_open .globl _asm_cd_close, _cd_close .globl _asm_cd_read, _cd_read .globl _asm_cd_write, _cd_write .globl _asm_cd_seek, _cd_seek .globl _asm_cd_status, _cd_status .globl _asm_cd_ioctl, _cd_ioctl .globl _asm_cd_startaudio, _cd_startaudio .globl _asm_cd_stopaudio, _cd_stopaudio .globl _asm_cd_setsongtime, _cd_setsongtime .globl _asm_cd_gettoc, _cd_gettoc .globl _asm_cd_discinfo, _cd_discinfo /*--- Function to create a bos header ---*/ _asm_init_devices: /* Input: d0.w physical drive letter d1.w dma channel Forward: 0(sp) physical drive letter 4(sp) dma channel */ andl #0xffff,d1 movl d1,sp@- andl #0xffff,d0 movl d0,sp@- bsr _init_devices addql #8,sp rts /*--- MetaDOS BOS functions frontends ---*/ _asm_cd_open: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metaopen_t *metaopen Forward: 0(sp) metados_bosheader_t *device 4(sp) metaopen_t *metaopen */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_open addql #8,sp rts _asm_cd_close: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _cd_close addql #4,sp rts _asm_cd_read: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_read lea sp@(16),sp rts _asm_cd_write: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_write lea sp@(16),sp rts _asm_cd_seek: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long offset Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long offset */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_seek addql #8,sp rts _asm_cd_status: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosstatus_t *extended_status; Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosstatus_t *extended_status; */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_status addql #8,sp rts _asm_cd_ioctl: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long magic 8(sp) unsigned short opcode 10(sp) void *buffer; Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long magic 8(sp) unsigned long opcode 12(sp) void *buffer; */ movl sp,a1 movl 10(a1),sp@- clrl d0 movw 8(a1),d0 movl d0,sp@- movl 4(a1),sp@- movl a0,sp@- bsr _cd_ioctl lea sp@(16),sp rts _asm_cd_startaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) unsigned char *tracks Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) unsigned char *tracks */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_startaudio lea sp@(12),sp rts _asm_cd_stopaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _cd_stopaudio addql #4,sp rts _asm_cd_setsongtime: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) start_msf 10(sp) end_msf Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) start_msf 12(sp) end_msf */ movl sp,a1 movl 10(a1),sp@- movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_setsongtime lea sp@(16),sp rts _asm_cd_gettoc: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) dummy 6(sp) toc_header_t *toc_header Forward: 0(sp) metados_bosheader_t *device 4(sp) dummy 8(sp) toc_header_t *toc_header */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _cd_gettoc lea sp@(12),sp rts _asm_cd_discinfo: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosdiscinfo_t *discinfo Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosdiscinfo_t *discinfo */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _cd_discinfo addql #8,sp rts aranym-0.9.15/atari/nfcdrom/metados.h000066400000000000000000000100151213346724500174360ustar00rootroot00000000000000/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (('F'<<24)|('C'<<16)|('T'<<8)|'L') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } metainit_t; typedef struct { char *name; unsigned long reserved[3]; } metaopen_t; typedef struct { char ext_status[32]; } metastatus_t; typedef struct { unsigned char count; unsigned char first; } metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } metadiscinfo_t; #endif /* _METADOS_H */ aranym-0.9.15/atari/nfcdrom/metados_bos.h000066400000000000000000000037551213346724500203160ustar00rootroot00000000000000/* MetaDOS BOS driver definitions ARAnyM (C) 2003 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_BOS_H #define _METADOS_BOS_H #include "metados.h" #define METADOS_BOSDEVICE_NAMELEN 32 typedef struct { long (*init)(metainit_t *metainit); long (*open)(metaopen_t *metaopen); long (*close)(void); long (*read)(void *buffer, unsigned long first, unsigned short length); long (*write)(void *buffer, unsigned long first, unsigned short length); long (*seek)(unsigned long offset); long (*status)(metastatus_t *extended_status); long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer); long (*function08)(void); long (*function09)(void); long (*function0a)(void); long (*startaudio)(unsigned short dummy, metatracks_t *tracks); long (*stopaudio)(void); long (*setsongtime)(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long (*gettoc)(unsigned short dummy, metatocentry_t *tocheader); long (*discinfo)(metadiscinfo_t *discinfo); } metados_bosfunctions_t; typedef struct { void *next; unsigned long attrib; unsigned short phys_letter; unsigned short dma_channel; unsigned short sub_device; metados_bosfunctions_t *functions; unsigned short status; unsigned long reserved[2]; char name[METADOS_BOSDEVICE_NAMELEN]; } metados_bosheader_t; #endif /* _METADOS_BOS_H */ aranym-0.9.15/atari/nfcdrom/nfcdrom.c000066400000000000000000000177131213346724500174410ustar00rootroot00000000000000/* NatFeat host CD-ROM access, MetaDOS BOS driver ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "metados_bos.h" #include "nfcdrom_nfapi.h" /*--- Defines ---*/ #ifndef EINVFN #define EINVFN -32 #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM host CD-ROM driver" #define VERSION "v0.2" static const char device_name[METADOS_BOSDEVICE_NAMELEN]={ "ARAnyM CD-ROM driver" }; /*--- Functions prototypes ---*/ metados_bosheader_t *asm_init_devices(void); long asm_cd_open(metaopen_t *metaopen); long asm_cd_close(void); long asm_cd_read(void *buffer, unsigned long first, unsigned short length); long asm_cd_write(void *buffer, unsigned long first, unsigned short length); long asm_cd_seek(unsigned long offset); long asm_cd_status(metastatus_t *ext_status); long asm_cd_ioctl(unsigned long magic, unsigned short opcode, void *buffer); long asm_cd_startaudio(unsigned short dummy, metatracks_t *tracks); long asm_cd_stopaudio(void); long asm_cd_setsongtime(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long asm_cd_gettoc(unsigned short dummy, metatocentry_t *toc_header); long asm_cd_discinfo(metadiscinfo_t *discinfo); long cd_open(metados_bosheader_t *device, metaopen_t *metaopen); long cd_close(metados_bosheader_t *device); long cd_read(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long cd_write(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long cd_seek(metados_bosheader_t *device, unsigned long offset); long cd_status(metados_bosheader_t *device, metastatus_t *ext_status); long cd_ioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer); long cd_startaudio(metados_bosheader_t *device, unsigned long dummy, metatracks_t *tracks); long cd_stopaudio(metados_bosheader_t *device); long cd_setsongtime(metados_bosheader_t *device, unsigned long dummy, unsigned long start_msf, unsigned long end_msf); long cd_gettoc(metados_bosheader_t *device, unsigned long dummy, metatocentry_t *toc_header); long cd_discinfo(metados_bosheader_t *device, metadiscinfo_t *discinfo); metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel); static void press_any_key(void); /*--- Local variables ---*/ static struct nf_ops *nfOps; static unsigned long nfCdRomId; static unsigned long drives_mask; static metados_bosheader_t * (*device_init_f)(void)=asm_init_devices; /*--- Functions prototypes ---*/ void *init_driver(void); /*--- Functions ---*/ void *init_driver(void) { int i; char letter[2]={0,0}; Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); drives_mask=0; nfOps = nf_init(); if (!nfOps) { Cconws("__NF cookie not present on this system\r\n"); press_any_key(); return &device_init_f; } /* List present drives */ nfCdRomId=nfOps->get_id("CDROM"); if (nfCdRomId == 0) { Cconws("NF CD-ROM functions not present on this system\r\n"); press_any_key(); return &device_init_f; } drives_mask=nfOps->call(NFCDROM(NFCD_DRIVESMASK)); Cconws(" Host drives present: "); for (i='A'; i<='Z'; i++) { if (drives_mask & (1<<(i-'A'))) { letter[0]=i; Cconws(letter); } } Cconws("\r\n"); return &device_init_f; } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); while (Bconstat(DEV_CONSOLE)==0); } metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel) { unsigned char *newcdrom; metados_bosheader_t *DefaultCdrom; metados_bosfunctions_t *DefaultFunctions; if (nfCdRomId == 0) { Cconws(" ARAnyM host CD-ROM driver unavailable\r\n"); return (metados_bosheader_t *)-39; } newcdrom = (unsigned char *)Malloc(sizeof(metados_bosheader_t)+sizeof(metados_bosfunctions_t)); if (newcdrom == NULL) { return (metados_bosheader_t *)-39; } DefaultCdrom = (metados_bosheader_t *) newcdrom; DefaultFunctions = (metados_bosfunctions_t *) (newcdrom + sizeof(metados_bosheader_t)); DefaultCdrom->next=NULL; DefaultCdrom->attrib=0; DefaultCdrom->phys_letter=phys_letter; DefaultCdrom->dma_channel=phys_channel; DefaultCdrom->functions=DefaultFunctions; DefaultCdrom->functions->init=(long (*)(metainit_t *metainit)) 0xffffffffUL; DefaultCdrom->functions->open=asm_cd_open; DefaultCdrom->functions->close=asm_cd_close; DefaultCdrom->functions->read=asm_cd_read; DefaultCdrom->functions->write=asm_cd_write; DefaultCdrom->functions->seek=asm_cd_seek; DefaultCdrom->functions->status=asm_cd_status; DefaultCdrom->functions->ioctl=asm_cd_ioctl; DefaultCdrom->functions->function08=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->function09=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->function0a=(long (*)(void)) 0xffffffffUL; DefaultCdrom->functions->startaudio=asm_cd_startaudio; DefaultCdrom->functions->stopaudio=asm_cd_stopaudio; DefaultCdrom->functions->setsongtime=asm_cd_setsongtime; DefaultCdrom->functions->gettoc=asm_cd_gettoc; DefaultCdrom->functions->discinfo=asm_cd_discinfo; DefaultCdrom->status=0; strncpy(DefaultCdrom->name, device_name, METADOS_BOSDEVICE_NAMELEN); return DefaultCdrom; } long cd_open(metados_bosheader_t *device, metaopen_t *metaopen) { metaopen->name = device->name; metaopen->reserved[0] = metaopen->reserved[1] = metaopen->reserved[2] = 0; return nfOps->call(NFCDROM(NFCD_OPEN), device, metaopen); } long cd_close(metados_bosheader_t *device) { return nfOps->call(NFCDROM(NFCD_CLOSE), device); } long cd_read(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return nfOps->call(NFCDROM(NFCD_READ), device, buffer, first, length); } long cd_write(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return nfOps->call(NFCDROM(NFCD_WRITE), device, buffer, first, length); } long cd_seek(metados_bosheader_t *device, unsigned long offset) { return nfOps->call(NFCDROM(NFCD_SEEK), device, offset); } long cd_status(metados_bosheader_t *device, metastatus_t *extended_status) { if (extended_status != NULL) { memset(extended_status, 0, sizeof(metastatus_t)); } return nfOps->call(NFCDROM(NFCD_STATUS), device, extended_status); } long cd_ioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer) { if (magic != METADOS_IOCTL_MAGIC) { return EINVFN; } return nfOps->call(NFCDROM(NFCD_IOCTL), device, opcode, buffer); } long cd_startaudio(metados_bosheader_t *device, unsigned long dummy, metatracks_t *tracks) { return nfOps->call(NFCDROM(NFCD_STARTAUDIO), device, dummy, tracks); } long cd_stopaudio(metados_bosheader_t *device) { return nfOps->call(NFCDROM(NFCD_STOPAUDIO), device); } long cd_setsongtime(metados_bosheader_t *device, unsigned long dummy, unsigned long start_msf, unsigned long end_msf) { return nfOps->call(NFCDROM(NFCD_SETSONGTIME), device, dummy, start_msf, end_msf); } long cd_gettoc(metados_bosheader_t *device, unsigned long dummy, metatocentry_t *toc_header) { return nfOps->call(NFCDROM(NFCD_GETTOC), device, dummy, toc_header); } long cd_discinfo(metados_bosheader_t *device, metadiscinfo_t *discinfo) { return nfOps->call(NFCDROM(NFCD_DISCINFO), device, discinfo); } aranym-0.9.15/atari/nfcdrom/nfcdrom_nfapi.h000066400000000000000000000026171213346724500206200ustar00rootroot00000000000000/* * NatFeat host CD-ROM access: MetaDOS BOS driver, NatFeat functions * * ARAnyM (C) 2003 Patrice Mandin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NFCDROM_NFAPI_H #define _NFCDROM_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFCDROM_NFAPI_VERSION! */ #define ARANFCDROM_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFCD_OPEN, NFCD_CLOSE, NFCD_READ, NFCD_WRITE, NFCD_SEEK, NFCD_STATUS, NFCD_IOCTL, NFCD_UNDEF8, NFCD_UNDEF9, NFCD_UNDEF10, NFCD_STARTAUDIO, NFCD_STOPAUDIO, NFCD_SETSONGTIME, NFCD_GETTOC, NFCD_DISCINFO, NFCD_DRIVESMASK }; #define NFCDROM(a) (nfCdRomId + a) #endif /* _NFCDROM_NFAPI_H */ aranym-0.9.15/atari/nfjpeg/000077500000000000000000000000001213346724500154555ustar00rootroot00000000000000aranym-0.9.15/atari/nfjpeg/Makefile000066400000000000000000000007531213346724500171220ustar00rootroot00000000000000 TARGET = nfjpeg.prg COBJS = nfjpeg.c ../natfeat/natfeat.c ../nfpci/nfpci_cookie.c SOBJS = entry.S nfjpeg_functions.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-0.9.15/atari/nfjpeg/entry.S000066400000000000000000000022101213346724500167350ustar00rootroot00000000000000/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _init_driver, _install_driver .text /* Calculate length to keep resident */ _init_driver: movl sp@(4),a0 /* Read basepage pointer */ movl #0x100.w,d0 /* Length of basepage */ addl a0@(12),d0 /* Add TEXT length */ addl a0@(20),d0 /* Add DATA length */ addl a0@(28),d0 /* Add BSS length */ movl d0,sp@- bsr _install_driver addql #4,sp clrw sp@- /* If any error, quit program */ trap #1 aranym-0.9.15/atari/nfjpeg/jpgdh.h000066400000000000000000000133471213346724500167320ustar00rootroot00000000000000/* JPEGD header file (C) 1992-93 Brainstorm & Atari Corporation. to be included after vdi.h Last modification on 8-apr-1993. Modified for ARAnyM by Patrice Mandin */ #ifndef JPGDH_H #define JPGDH_H #ifdef ARANYM_NFJPEG #define VOID_PTR uint32 #define UCHAR_PTR uint32 #define FUNC_PTR(x,y) uint32 x #define LONG int32 #define ULONG uint32 #else #define VOID_PTR void * #define UCHAR_PTR unsigned char * #define FUNC_PTR(x,y) short (*x)(y) #define LONG long #define ULONG unsigned long #endif typedef struct _JPGD_STRUCT { VOID_PTR InPointer; /* JPEG Image Pointer */ VOID_PTR OutPointer; /* Output Buffer/Filename Pointer (see OutFlag) */ LONG InSize; /* JPEG Image Size (Bytes) */ LONG OutSize; /* Output Image Size (Bytes) */ short InComponents; /* JPEG Image Components Number (1->4) */ short OutComponents; /* Output Components Number (1->4) */ short OutPixelSize; /* Output Pixel Size (1->4) */ short OutFlag; /* 0 (RAM Output) / -1 (Disk Output) */ short XLoopCounter; /* Number of MCUs per Row */ short YLoopCounter; /* Number of MCUs per Column */ FUNC_PTR(Create,struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(Write,struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(Close,struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */ FUNC_PTR(SigTerm,struct _JPGD_STRUCT *); /* Pointer to User Routine / NULL */ UCHAR_PTR Comp1GammaPtr; /* Component 1 Gamma Table / NULL */ UCHAR_PTR Comp2GammaPtr; /* Component 2 Gamma Table / NULL */ UCHAR_PTR Comp3GammaPtr; /* Component 3 Gamma Table / NULL */ UCHAR_PTR Comp4GammaPtr; /* Component 4 Gamma Table / NULL */ FUNC_PTR(UserRoutine,struct _JPGD_STRUCT *); /* Pointer to User Routine (Called during Decompression) / NULL */ VOID_PTR OutTmpPointer; /* Current OutPointer / Temporary Disk Buffer Pointer (see OutFlag) */ short MCUsCounter; /* Number of MCUs not Decoded */ short OutTmpHeight; /* Number of Lines in OutTmpPointer */ LONG User[2]; /* Free, Available for User */ short OutHandle; /* 0 / Output File Handle (see OutFlag) */ /* Output image MFDB */ VOID_PTR MFDBAddress; short MFDBPixelWidth; short MFDBPixelHeight; short MFDBWordSize; short MFDBFormatFlag; short MFDBBitPlanes; short MFDBReserved1; short MFDBReserved2; short MFDBReserved3; /* Official structure stop here, what follows is decoder-dependant */ ULONG handle; /* ARAnyM image handle */ } __attribute__((packed)) JPGD_STRUCT; typedef JPGD_STRUCT *JPGD_PTR; #define JPGD_MAGIC '_JPD' #define JPGD_VERSION 1 enum JPGD_ENUM { NOERROR=0, /* File correctly uncompressed */ UNKNOWNFORMAT, /* File is not JFIF (Error) */ INVALIDMARKER, /* Reserved CCITT Marker Found (Error) */ SOF1MARKER, /* Mode not handled by the decoder (Error) */ SOF2MARKER, /* Mode not handled by the decoder (Error) */ SOF3MARKER, /* Mode not handled by the decoder (Error) */ SOF5MARKER, /* Mode not handled by the decoder (Error) */ SOF6MARKER, /* Mode not handled by the decoder (Error) */ SOF7MARKER, /* Mode not handled by the decoder (Error) */ SOF9MARKER, /* Mode not handled by the decoder (Error) */ SOF10MARKER, /* Mode not handled by the decoder (Error) */ SOF11MARKER, /* Mode not handled by the decoder (Error) */ SOF13MARKER, /* Mode not handled by the decoder (Error) */ SOF14MARKER, /* Mode not handled by the decoder (Error) */ SOF15MARKER, /* Mode not handled by the decoder (Error) */ RSTmMARKER, /* Unexpected RSTm found (Error) */ BADDHTMARKER, /* Buggy DHT Marker (Error) */ DACMARKER, /* Marker not handled by the decoder (Error) */ BADDQTMARKER, /* Buggy DQT Marker (Error) */ BADDNLMARKER, /* Invalid/Unexpected DNL Marker (Error) */ BADDRIMARKER, /* Invalid DRI Header Size (Error) */ DHPMARKER, /* Marker not handled by the decoder (Error) */ EXPMARKER, /* Marker not handled by the decoder (Error) */ BADSUBSAMPLING, /* Invalid components subsampling (Error) */ NOTENOUGHMEMORY, /* Not enough memory... (Error) */ DECODERBUSY, /* Decoder is busy (Error) */ DSPBUSY, /* Can't lock the DSP (Error) */ BADSOFnMARKER, /* Buggy SOFn marker (Error) */ BADSOSMARKER, /* Buggy SOS marker (Error) */ HUFFMANERROR, /* Buggy Huffman Stream (Error) */ BADPIXELFORMAT, /* Invalid Output Pixel Format (Error) */ DISKFULL, /* Hard/Floppy Disk Full (Error) */ MISSINGMARKER, /* Marker expected but not found (Error) */ IMAGETRUNCATED, /* More bytes Needed (Error) */ EXTRABYTES, /* Dummy Bytes after EOI Marker (Warning) */ USERABORT, /* User Routine signaled 'Abort' */ DSPMEMORYERROR, /* Not Enough DSP RAM (Error) */ NORSTmMARKER, /* RSTm Marker expected but not found */ BADRSTmMARKER, /* Invalid RSTm Marker Number */ DRIVERCLOSED, /* Driver is Already Closed. */ ENDOFIMAGE /* Stop Decoding (Internal Message, Should Never Appear) */ }; #ifndef ARANYM_NFJPEG typedef long JPGD_ENUM; #endif typedef struct { long JPGDVersion; JPGD_ENUM (*JPGDOpenDriver)(JPGD_PTR); JPGD_ENUM (*JPGDCloseDriver)(JPGD_PTR); long (*JPGDGetStructSize)(void); JPGD_ENUM (*JPGDGetImageInfo)(JPGD_PTR); JPGD_ENUM (*JPGDGetImageSize)(JPGD_PTR); JPGD_ENUM (*JPGDDecodeImage)(JPGD_PTR); } __attribute__((packed)) JPGDDRV_STRUCT; typedef JPGDDRV_STRUCT *JPGDDRV_PTR; #define JPGDOpenDriver(x,y) (x->JPGDOpenDriver)(y) #define JPGDCloseDriver(x,y) (x->JPGDCloseDriver)(y) #define JPGDGetStructSize(x) (x->JPGDGetStructSize)() #define JPGDGetImageInfo(x,y) (x->JPGDGetImageInfo)(y) #define JPGDGetImageSize(x,y) (x->JPGDGetImageSize)(y) #define JPGDDecodeImage(x,y) (x->JPGDDecodeImage)(y) #endif /* JPGDH_H */ aranym-0.9.15/atari/nfjpeg/nfjpeg.c000066400000000000000000000147041213346724500171000ustar00rootroot00000000000000/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "../nfpci/nfpci_cookie.h" #include "nfjpeg_nfapi.h" #include "jpgdh.h" /*--- Defines ---*/ #ifndef EINVFN #define EINVFN -32 #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #ifndef S_WRITE #define S_WRITE 1 #endif #ifndef MX_PREFTTRAM #define MX_PREFTTRAM 3 #endif #define DRIVER_NAME "ARAnyM host JPEG driver" #define VERSION "v0.4" #define CALLJPEGROUTINE(jpgd_ptr,func_ptr) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ \ __asm__ volatile ( \ "movl %1,a0\n\t" \ "jbsr %2@" \ : "=r"(retvalue) \ : "a"(jpgd_ptr), "a"(func_ptr) \ : "a0", "memory" \ ); \ retvalue; \ }) /*--- Functions prototypes ---*/ JPGD_ENUM JpegDecOpenDriver(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecCloseDriver(struct _JPGD_STRUCT *jpgd_ptr); long JpegDecGetStructSize(void); JPGD_ENUM JpegDecGetImageInfo(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecGetImageSize(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM JpegDecDecodeImage(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM OpenDriver(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM CloseDriver(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM GetImageInfo(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM GetImageSize(struct _JPGD_STRUCT *jpgd_ptr); JPGD_ENUM DecodeImage(struct _JPGD_STRUCT *jpgd_ptr); static void install_jpeg(void); static void press_any_key(void); static void *Atari_MxAlloc(unsigned long size); /*--- Local variables ---*/ static struct nf_ops *nfOps; static unsigned long nfJpegId; static JPGDDRV_STRUCT nfjpeg_cookie = { 0x00000001, OpenDriver, CloseDriver, JpegDecGetStructSize, GetImageInfo, GetImageSize, DecodeImage }; /*--- Functions ---*/ void install_driver(unsigned long resident_length) { Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Check if _JPD already installed */ if (cookie_present(C__JPD, NULL)) { Cconws("A JPEG driver is already installed on this system\r\n"); press_any_key(); return; } /* Check if NF is present for NFJPEG */ nfOps = nf_init(); if (!nfOps) { Cconws("Native Features not present on this system\r\n"); press_any_key(); return; } nfJpegId = nfOps->get_id("JPEG"); if (nfJpegId==0) { Cconws("NF JPEG functions not present on this system\r\n"); press_any_key(); return; } install_jpeg(); Ptermres(resident_length, 0); for(;;); /* Never ending loop, should not go there */ } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); while (Bconstat(DEV_CONSOLE)==0); } static void install_jpeg(void) { /* Add our cookie */ cookie_add(C__JPD, (unsigned long)&nfjpeg_cookie); } JPGD_ENUM JpegDecOpenDriver(struct _JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_OPENDRIVER), jpgd_ptr); } JPGD_ENUM JpegDecCloseDriver(struct _JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_CLOSEDRIVER), jpgd_ptr); } long JpegDecGetStructSize(void) { return sizeof(struct _JPGD_STRUCT); } JPGD_ENUM JpegDecGetImageInfo(struct _JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_GETIMAGEINFO), jpgd_ptr); } JPGD_ENUM JpegDecGetImageSize(struct _JPGD_STRUCT *jpgd_ptr) { return nfOps->call(NFJPEG(NFJPEG_GETIMAGESIZE), jpgd_ptr); } JPGD_ENUM JpegDecDecodeImage(struct _JPGD_STRUCT *jpgd_ptr) { int row_length, y; row_length = jpgd_ptr->XLoopCounter * 16 * 16 * jpgd_ptr->OutComponents; jpgd_ptr->OutTmpHeight = 0; jpgd_ptr->MCUsCounter = jpgd_ptr->XLoopCounter * jpgd_ptr->YLoopCounter; if (jpgd_ptr->OutFlag==0) { /* Allocate memory to hold complete image */ if (jpgd_ptr->OutPointer==NULL) { return NOTENOUGHMEMORY; } jpgd_ptr->OutTmpPointer = jpgd_ptr->OutPointer; for (y=0;yYLoopCounter;y++) { /* Decode Y row in OutTmpPointer */ nfOps->call(NFJPEG(NFJPEG_DECODEIMAGE), jpgd_ptr, y); if (jpgd_ptr->UserRoutine) { CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->UserRoutine); } jpgd_ptr->OutTmpPointer += row_length; jpgd_ptr->OutTmpHeight += 16; jpgd_ptr->MCUsCounter -= jpgd_ptr->XLoopCounter; } jpgd_ptr->MFDBAddress = jpgd_ptr->OutPointer; } else { unsigned char *filename="output.tga"; long handle; jpgd_ptr->OutTmpPointer = Atari_MxAlloc(jpgd_ptr->XLoopCounter * 16 * 16 * 4); if (jpgd_ptr->OutTmpPointer==NULL) { return NOTENOUGHMEMORY; } /* Open file */ if (jpgd_ptr->Create) { handle = CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Create); } else { if (jpgd_ptr->OutPointer) { filename = jpgd_ptr->OutPointer; } handle = Fopen(filename, S_WRITE); } if (handle<0) { Mfree(jpgd_ptr->OutTmpPointer); return (JPGD_ENUM) handle; } jpgd_ptr->OutHandle = handle & 0xffff; /* Write part of image to file */ for (y=0;yYLoopCounter;y++) { /* Decode Y row in OutTmpPointer */ nfOps->call(NFJPEG(NFJPEG_DECODEIMAGE), jpgd_ptr, y); jpgd_ptr->OutTmpHeight = jpgd_ptr->MFDBPixelHeight - y*16; if (jpgd_ptr->OutTmpHeight > 16) { jpgd_ptr->OutTmpHeight = 16; } if (jpgd_ptr->UserRoutine) { CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->UserRoutine); } if (jpgd_ptr->Write) { if (CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Write)<0) { break; } } else { Fwrite(jpgd_ptr->OutHandle, row_length, jpgd_ptr->OutTmpPointer); } jpgd_ptr->MCUsCounter -= jpgd_ptr->XLoopCounter; } /* Close file */ if (jpgd_ptr->Close) { CALLJPEGROUTINE(jpgd_ptr, jpgd_ptr->Close); } else { Fclose(jpgd_ptr->OutHandle); } Mfree(jpgd_ptr->OutTmpPointer); } return 0; } static void *Atari_MxAlloc(unsigned long size) { if (((Sversion()&0xFF)>=0x01) | (Sversion()>=0x1900)) { return (void *)Mxalloc(size, MX_PREFTTRAM); } return (void *)Malloc(size); } aranym-0.9.15/atari/nfjpeg/nfjpeg_functions.S000066400000000000000000000031001213346724500211340ustar00rootroot00000000000000/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _OpenDriver .globl _CloseDriver .globl _GetImageInfo .globl _GetImageSize .globl _DecodeImage .globl _JpegDecOpenDriver .globl _JpegDecCloseDriver .globl _JpegDecGetImageInfo .globl _JpegDecGetImageSize .globl _JpegDecDecodeImage .text _OpenDriver: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecOpenDriver addql #4,sp moveml sp@+,d1/a0-a1 rts _CloseDriver: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecCloseDriver addql #4,sp moveml sp@+,d1/a0-a1 rts _GetImageInfo: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecGetImageInfo addql #4,sp moveml sp@+,d1/a0-a1 rts _GetImageSize: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecGetImageSize addql #4,sp moveml sp@+,d1/a0-a1 rts _DecodeImage: moveml d1/a0-a1,sp@- movel a0,sp@- bsr _JpegDecDecodeImage addql #4,sp moveml sp@+,d1/a0-a1 rts aranym-0.9.15/atari/nfjpeg/nfjpeg_nfapi.h000066400000000000000000000022751213346724500202620ustar00rootroot00000000000000/* NatFeat JPEG decoder ARAnyM (C) 2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFJPEG_NFAPI_H #define NFJPEG_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFJPEG_NFAPI_VERSION! */ #define ARANFJPEG_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFJPEG_OPENDRIVER, NFJPEG_CLOSEDRIVER, NFJPEG_GETSTRUCTSIZE, NFJPEG_GETIMAGEINFO, NFJPEG_GETIMAGESIZE, NFJPEG_DECODEIMAGE }; #define NFJPEG(a) (nfJpegId + a) #endif /* NFJPEG_NFAPI_H */ aranym-0.9.15/atari/nfosmesa.xdd/000077500000000000000000000000001213346724500165755ustar00rootroot00000000000000aranym-0.9.15/atari/nfosmesa.xdd/Makefile000066400000000000000000000010371213346724500202360ustar00rootroot00000000000000# # Makefile for a xdd skeleton # FREEMINT_ROOT_DIR = /home/patrice/src/atari/freemint TARGET = nfosmesa.xdd include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall -mshort # default overwrites INCLUDES = -I$(FREEMINT_ROOT_DIR)/sys DEFINITIONS = -D__KERNEL_XDD__ COBJS = nfosmesa.c ../natfeat/natfeat.c LD = $(CC) -nostdlib -Wl,--entry -Wl,_init LIBS = $(LIBKERN) -lgcc OBJS = $(COBJS:.c=.o) all: $(TARGET) .c.o: $(CC) -o $@ -c $< $(CFLAGS) $(INCLUDES) $(DEFINITIONS) $(TARGET): $(OBJS) $(LD) $(CFLAGS) -o $@ $(OBJS) $(LIBS) aranym-0.9.15/atari/nfosmesa.xdd/nfosmesa.c000066400000000000000000000145361213346724500205650ustar00rootroot00000000000000/* NF OSMesa MiNT device driver ARAnyM (C) 2004,2005 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ # include "mint/mint.h" # include "mint/asm.h" # include "mint/dcntl.h" # include "mint/file.h" # include "mint/fcntl.h" # include "mint/ioctl.h" # include "mint/proc.h" # include "mint/signal.h" # include "mint/ssystem.h" # include "mint/stat.h" # include "cookie.h" # include "libkern/libkern.h" #include "../natfeat/nf_ops.h" #include "../nfosmesa/nfosmesa_nfapi.h" /* * version */ # define VER_MAJOR 0 # define VER_MINOR 3 # define VER_STATUS /* * messages */ # define MSG_VERSION str (VER_MAJOR) "." str (VER_MINOR) str (VER_STATUS) # define MSG_BUILDDATE __DATE__ # define MSG_BOOT \ "\033p NFOSMesa device driver version " MSG_VERSION " \033q\r\n" # define MSG_GREET \ " " MSG_BUILDDATE " ARAnyM Development Team.\r\n\r\n" /****************************************************************************/ /* BEGIN kernel interface */ struct kerinfo *kernel; /* END kernel interface */ /****************************************************************************/ /****************************************************************************/ /* BEGIN definition part */ /* Install time */ static ushort install_date; static ushort install_time; /* * device driver routines - top half */ static long _cdecl nfosmesa_open (FILEPTR *f); static long _cdecl nfosmesa_write (FILEPTR *f, const char *buf, long bytes); static long _cdecl nfosmesa_read (FILEPTR *f, char *buf, long bytes); static long _cdecl nfosmesa_lseek (FILEPTR *f, long where, int whence); static long _cdecl nfosmesa_ioctl (FILEPTR *f, int mode, void *buf); static long _cdecl nfosmesa_datime (FILEPTR *f, ushort *timeptr, int rwflag); static long _cdecl nfosmesa_close (FILEPTR *f, int pid); static long _cdecl nfosmesa_select (FILEPTR *f, long proc, int mode); static void _cdecl nfosmesa_unselect (FILEPTR *f, long proc, int mode); /* * device driver map */ static DEVDRV raw_devtab = { nfosmesa_open, nfosmesa_write, nfosmesa_read, nfosmesa_lseek, nfosmesa_ioctl, nfosmesa_datime, nfosmesa_close, nfosmesa_select, nfosmesa_unselect, NULL, NULL }; /* * debugging stuff */ # ifdef DEV_DEBUG # define DEBUG(x) KERNEL_DEBUG x # define TRACE(x) KERNEL_TRACE x # define ALERT(x) KERNEL_ALERT x # else # define DEBUG(x) # define TRACE(x) # define ALERT(x) KERNEL_ALERT x # endif # ifdef INT_DEBUG # define DEBUG_I(x) KERNEL_DEBUG x # define TRACE_I(x) KERNEL_TRACE x # define ALERT_I(x) KERNEL_ALERT x # else # define DEBUG_I(x) # define TRACE_I(x) # define ALERT_I(x) KERNEL_ALERT x # endif /* END definition part */ /****************************************************************************/ /****************************************************************************/ /* BEGIN global data definition & access implementation */ /* * global data structures */ static struct dev_descr raw_dev_descriptor = { &raw_devtab, 0, /* dinfo -> fc.aux */ 0, /* flags */ NULL, /* struct tty * */ 0, /* drvsize */ S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, NULL, /* bdevmap */ 0, /* bdev */ 0 /* reserved */ }; static struct nf_ops *nfOps; static unsigned long nfOSMesaId=0; /* END global data & access implementation */ /****************************************************************************/ /****************************************************************************/ /* BEGIN initialization - top half */ DEVDRV * _cdecl init (struct kerinfo *k) { kernel = k; c_conws (MSG_BOOT); c_conws (MSG_GREET); DEBUG (("%s: enter init", __FILE__)); /* Check NF presence */ nfOps = kernel->nf_ops; if (!nfOps) { c_conws("__NF cookie not present on this system\r\n"); return NULL; } /* Check NFOSMesa presence */ nfOSMesaId=nfOps->get_id("OSMESA"); if (nfOSMesaId==0) { c_conws("NF OSMesa functions not present on this system\r\n"); return NULL; } /* Check API version */ if (nfOps->call(nfOSMesaId+GET_VERSION, 0, 0)!=ARANFOSMESA_NFAPI_VERSION) { c_conws("NF OSMesa functions use an incompatible API\r\n"); return NULL; } /* Install device */ if (d_cntl (DEV_INSTALL, "u:\\dev\\nfosmesa", (long) &raw_dev_descriptor)<=0) { ALERT (("[NFOSMESA] init: Unable to install device")); return NULL; } install_time = timestamp; install_date = datestamp; return (DEVDRV *) 1L; } /* END initialization - top half */ /****************************************************************************/ /****************************************************************************/ /* BEGIN device driver routines - top half */ static long _cdecl nfosmesa_open (FILEPTR *f) { return E_OK; } static long _cdecl nfosmesa_close (FILEPTR *f, int pid) { return E_OK; } /* raw write/read routines */ static long _cdecl nfosmesa_write (FILEPTR *f, const char *buf, long bytes) { return ENOSYS; } static long _cdecl nfosmesa_read (FILEPTR *f, char *buf, long bytes) { return ENOSYS; } static long _cdecl nfosmesa_lseek (FILEPTR *f, long where, int whence) { return ENOSYS; } static long _cdecl nfosmesa_ioctl (FILEPTR *f, int mode, void *buf) { unsigned long *tmp =(unsigned long *)buf; if (mode!=NFOSMESA_IOCTL) { return ENOSYS; } /* Execute command */ return nfOps->call(nfOSMesaId+tmp[0],tmp[1],tmp[2]); } static long _cdecl nfosmesa_datime (FILEPTR *f, ushort *timeptr, int rwflag) { if (rwflag) return EACCES; *timeptr++ = install_time; *timeptr = install_date; return E_OK; } static long _cdecl nfosmesa_select (FILEPTR *f, long proc, int mode) { /* we're always ready for I/O */ return 1; } static void _cdecl nfosmesa_unselect (FILEPTR *f, long proc, int mode) { } /* END device driver routines - top half */ /****************************************************************************/ aranym-0.9.15/atari/nfosmesa/000077500000000000000000000000001213346724500160175ustar00rootroot00000000000000aranym-0.9.15/atari/nfosmesa/Makefile000066400000000000000000000006741213346724500174660ustar00rootroot00000000000000 TARGET = osmesa.ldg COBJS = nfosmesa.c lib-osmesa.c lib-oldmesa.c lib-misc.c lib-gl.c lib-glext.c \ ../natfeat/natfeat.c SOBJS = ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall ASFLAGS = -m68020 LDFLAGS = -lldg -lgem COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $? ${LDFLAGS} ${STRIP} $@ clean: rm -f $(COBJECTS) $(TARGET) aranym-0.9.15/atari/nfosmesa/enum-gen.pl000077500000000000000000000017631213346724500201010ustar00rootroot00000000000000#!/usr/bin/perl # Read original include file, and generate enumeration # Input: $file = @ARGV[0]; #$start = @ARGV[1]; $prefix = "NFOSMESA_"; if ( ! defined(open(FILE, $file)) ) { warn "Couldn't open $file: $!\n"; exit; } print "/* Generated by enum-gen.pl from $file */\n\n"; $linecount=0; while ($ligne = ) { if ($ligne =~ /^GLAPI/ ) { while (! ($ligne =~ /\);/)) { chomp($ligne); $ligne .= " " . ; } $ligne =~ s/\t//g; $ligne =~ s/ \(/\(/; if ($ligne =~ /^GLAPI *(\w+).* G?L?APIENTRY *(\w+) *\(.*/) { $return_type = $1 ; $function_name = $2 ; } else { $return_type = "" ; $function_name = "" ; } $ligne =~ s/GLAPI *// ; $ligne =~ s/ *GLAPIENTRY// ; $ligne =~ s/ *APIENTRY// ; $ligne =~ s/;$// ; $function_name =~ tr/a-z/A-Z/; chomp($ligne); # print "#define\t$prefix$function_name\t$start\n"; print "\t$prefix$function_name,\n"; $linecount++; # $start++; } } close(FILE); print "\n/* Functions generated: $linecount */\n"; aranym-0.9.15/atari/nfosmesa/enum-gl.h000066400000000000000000000275251213346724500175470ustar00rootroot00000000000000/* Generated by enum-gen.pl from /usr/local/include/GL/gl.h */ NFOSMESA_GLCLEARINDEX, NFOSMESA_GLCLEARCOLOR, NFOSMESA_GLCLEAR, NFOSMESA_GLINDEXMASK, NFOSMESA_GLCOLORMASK, NFOSMESA_GLALPHAFUNC, NFOSMESA_GLBLENDFUNC, NFOSMESA_GLLOGICOP, NFOSMESA_GLCULLFACE, NFOSMESA_GLFRONTFACE, NFOSMESA_GLPOINTSIZE, NFOSMESA_GLLINEWIDTH, NFOSMESA_GLLINESTIPPLE, NFOSMESA_GLPOLYGONMODE, NFOSMESA_GLPOLYGONOFFSET, NFOSMESA_GLPOLYGONSTIPPLE, NFOSMESA_GLGETPOLYGONSTIPPLE, NFOSMESA_GLEDGEFLAG, NFOSMESA_GLEDGEFLAGV, NFOSMESA_GLSCISSOR, NFOSMESA_GLCLIPPLANE, NFOSMESA_GLGETCLIPPLANE, NFOSMESA_GLDRAWBUFFER, NFOSMESA_GLREADBUFFER, NFOSMESA_GLENABLE, NFOSMESA_GLDISABLE, NFOSMESA_GLISENABLED, NFOSMESA_GLENABLECLIENTSTATE, NFOSMESA_GLDISABLECLIENTSTATE, NFOSMESA_GLGETBOOLEANV, NFOSMESA_GLGETDOUBLEV, NFOSMESA_GLGETFLOATV, NFOSMESA_GLGETINTEGERV, NFOSMESA_GLPUSHATTRIB, NFOSMESA_GLPOPATTRIB, NFOSMESA_GLPUSHCLIENTATTRIB, NFOSMESA_GLPOPCLIENTATTRIB, NFOSMESA_GLRENDERMODE, NFOSMESA_GLGETERROR, /* NFOSMESA_GLGETSTRING, */ NFOSMESA_GLFINISH, NFOSMESA_GLFLUSH, NFOSMESA_GLHINT, NFOSMESA_GLCLEARDEPTH, NFOSMESA_GLDEPTHFUNC, NFOSMESA_GLDEPTHMASK, NFOSMESA_GLDEPTHRANGE, NFOSMESA_GLCLEARACCUM, NFOSMESA_GLACCUM, NFOSMESA_GLMATRIXMODE, NFOSMESA_GLORTHO, NFOSMESA_GLFRUSTUM, NFOSMESA_GLVIEWPORT, NFOSMESA_GLPUSHMATRIX, NFOSMESA_GLPOPMATRIX, NFOSMESA_GLLOADIDENTITY, NFOSMESA_GLLOADMATRIXD, NFOSMESA_GLLOADMATRIXF, NFOSMESA_GLMULTMATRIXD, NFOSMESA_GLMULTMATRIXF, NFOSMESA_GLROTATED, NFOSMESA_GLROTATEF, NFOSMESA_GLSCALED, NFOSMESA_GLSCALEF, NFOSMESA_GLTRANSLATED, NFOSMESA_GLTRANSLATEF, NFOSMESA_GLISLIST, NFOSMESA_GLDELETELISTS, NFOSMESA_GLGENLISTS, NFOSMESA_GLNEWLIST, NFOSMESA_GLENDLIST, NFOSMESA_GLCALLLIST, NFOSMESA_GLCALLLISTS, NFOSMESA_GLLISTBASE, NFOSMESA_GLBEGIN, NFOSMESA_GLEND, NFOSMESA_GLVERTEX2D, NFOSMESA_GLVERTEX2F, NFOSMESA_GLVERTEX2I, NFOSMESA_GLVERTEX2S, NFOSMESA_GLVERTEX3D, NFOSMESA_GLVERTEX3F, NFOSMESA_GLVERTEX3I, NFOSMESA_GLVERTEX3S, NFOSMESA_GLVERTEX4D, NFOSMESA_GLVERTEX4F, NFOSMESA_GLVERTEX4I, NFOSMESA_GLVERTEX4S, NFOSMESA_GLVERTEX2DV, NFOSMESA_GLVERTEX2FV, NFOSMESA_GLVERTEX2IV, NFOSMESA_GLVERTEX2SV, NFOSMESA_GLVERTEX3DV, NFOSMESA_GLVERTEX3FV, NFOSMESA_GLVERTEX3IV, NFOSMESA_GLVERTEX3SV, NFOSMESA_GLVERTEX4DV, NFOSMESA_GLVERTEX4FV, NFOSMESA_GLVERTEX4IV, NFOSMESA_GLVERTEX4SV, NFOSMESA_GLNORMAL3B, NFOSMESA_GLNORMAL3D, NFOSMESA_GLNORMAL3F, NFOSMESA_GLNORMAL3I, NFOSMESA_GLNORMAL3S, NFOSMESA_GLNORMAL3BV, NFOSMESA_GLNORMAL3DV, NFOSMESA_GLNORMAL3FV, NFOSMESA_GLNORMAL3IV, NFOSMESA_GLNORMAL3SV, NFOSMESA_GLINDEXD, NFOSMESA_GLINDEXF, NFOSMESA_GLINDEXI, NFOSMESA_GLINDEXS, NFOSMESA_GLINDEXUB, NFOSMESA_GLINDEXDV, NFOSMESA_GLINDEXFV, NFOSMESA_GLINDEXIV, NFOSMESA_GLINDEXSV, NFOSMESA_GLINDEXUBV, NFOSMESA_GLCOLOR3B, NFOSMESA_GLCOLOR3D, NFOSMESA_GLCOLOR3F, NFOSMESA_GLCOLOR3I, NFOSMESA_GLCOLOR3S, NFOSMESA_GLCOLOR3UB, NFOSMESA_GLCOLOR3UI, NFOSMESA_GLCOLOR3US, NFOSMESA_GLCOLOR4B, NFOSMESA_GLCOLOR4D, NFOSMESA_GLCOLOR4F, NFOSMESA_GLCOLOR4I, NFOSMESA_GLCOLOR4S, NFOSMESA_GLCOLOR4UB, NFOSMESA_GLCOLOR4UI, NFOSMESA_GLCOLOR4US, NFOSMESA_GLCOLOR3BV, NFOSMESA_GLCOLOR3DV, NFOSMESA_GLCOLOR3FV, NFOSMESA_GLCOLOR3IV, NFOSMESA_GLCOLOR3SV, NFOSMESA_GLCOLOR3UBV, NFOSMESA_GLCOLOR3UIV, NFOSMESA_GLCOLOR3USV, NFOSMESA_GLCOLOR4BV, NFOSMESA_GLCOLOR4DV, NFOSMESA_GLCOLOR4FV, NFOSMESA_GLCOLOR4IV, NFOSMESA_GLCOLOR4SV, NFOSMESA_GLCOLOR4UBV, NFOSMESA_GLCOLOR4UIV, NFOSMESA_GLCOLOR4USV, NFOSMESA_GLTEXCOORD1D, NFOSMESA_GLTEXCOORD1F, NFOSMESA_GLTEXCOORD1I, NFOSMESA_GLTEXCOORD1S, NFOSMESA_GLTEXCOORD2D, NFOSMESA_GLTEXCOORD2F, NFOSMESA_GLTEXCOORD2I, NFOSMESA_GLTEXCOORD2S, NFOSMESA_GLTEXCOORD3D, NFOSMESA_GLTEXCOORD3F, NFOSMESA_GLTEXCOORD3I, NFOSMESA_GLTEXCOORD3S, NFOSMESA_GLTEXCOORD4D, NFOSMESA_GLTEXCOORD4F, NFOSMESA_GLTEXCOORD4I, NFOSMESA_GLTEXCOORD4S, NFOSMESA_GLTEXCOORD1DV, NFOSMESA_GLTEXCOORD1FV, NFOSMESA_GLTEXCOORD1IV, NFOSMESA_GLTEXCOORD1SV, NFOSMESA_GLTEXCOORD2DV, NFOSMESA_GLTEXCOORD2FV, NFOSMESA_GLTEXCOORD2IV, NFOSMESA_GLTEXCOORD2SV, NFOSMESA_GLTEXCOORD3DV, NFOSMESA_GLTEXCOORD3FV, NFOSMESA_GLTEXCOORD3IV, NFOSMESA_GLTEXCOORD3SV, NFOSMESA_GLTEXCOORD4DV, NFOSMESA_GLTEXCOORD4FV, NFOSMESA_GLTEXCOORD4IV, NFOSMESA_GLTEXCOORD4SV, NFOSMESA_GLRASTERPOS2D, NFOSMESA_GLRASTERPOS2F, NFOSMESA_GLRASTERPOS2I, NFOSMESA_GLRASTERPOS2S, NFOSMESA_GLRASTERPOS3D, NFOSMESA_GLRASTERPOS3F, NFOSMESA_GLRASTERPOS3I, NFOSMESA_GLRASTERPOS3S, NFOSMESA_GLRASTERPOS4D, NFOSMESA_GLRASTERPOS4F, NFOSMESA_GLRASTERPOS4I, NFOSMESA_GLRASTERPOS4S, NFOSMESA_GLRASTERPOS2DV, NFOSMESA_GLRASTERPOS2FV, NFOSMESA_GLRASTERPOS2IV, NFOSMESA_GLRASTERPOS2SV, NFOSMESA_GLRASTERPOS3DV, NFOSMESA_GLRASTERPOS3FV, NFOSMESA_GLRASTERPOS3IV, NFOSMESA_GLRASTERPOS3SV, NFOSMESA_GLRASTERPOS4DV, NFOSMESA_GLRASTERPOS4FV, NFOSMESA_GLRASTERPOS4IV, NFOSMESA_GLRASTERPOS4SV, NFOSMESA_GLRECTD, NFOSMESA_GLRECTF, NFOSMESA_GLRECTI, NFOSMESA_GLRECTS, NFOSMESA_GLRECTDV, NFOSMESA_GLRECTFV, NFOSMESA_GLRECTIV, NFOSMESA_GLRECTSV, NFOSMESA_GLVERTEXPOINTER, NFOSMESA_GLNORMALPOINTER, NFOSMESA_GLCOLORPOINTER, NFOSMESA_GLINDEXPOINTER, NFOSMESA_GLTEXCOORDPOINTER, NFOSMESA_GLEDGEFLAGPOINTER, NFOSMESA_GLGETPOINTERV, NFOSMESA_GLARRAYELEMENT, NFOSMESA_GLDRAWARRAYS, NFOSMESA_GLDRAWELEMENTS, NFOSMESA_GLINTERLEAVEDARRAYS, NFOSMESA_GLSHADEMODEL, NFOSMESA_GLLIGHTF, NFOSMESA_GLLIGHTI, NFOSMESA_GLLIGHTFV, NFOSMESA_GLLIGHTIV, NFOSMESA_GLGETLIGHTFV, NFOSMESA_GLGETLIGHTIV, NFOSMESA_GLLIGHTMODELF, NFOSMESA_GLLIGHTMODELI, NFOSMESA_GLLIGHTMODELFV, NFOSMESA_GLLIGHTMODELIV, NFOSMESA_GLMATERIALF, NFOSMESA_GLMATERIALI, NFOSMESA_GLMATERIALFV, NFOSMESA_GLMATERIALIV, NFOSMESA_GLGETMATERIALFV, NFOSMESA_GLGETMATERIALIV, NFOSMESA_GLCOLORMATERIAL, NFOSMESA_GLPIXELZOOM, NFOSMESA_GLPIXELSTOREF, NFOSMESA_GLPIXELSTOREI, NFOSMESA_GLPIXELTRANSFERF, NFOSMESA_GLPIXELTRANSFERI, NFOSMESA_GLPIXELMAPFV, NFOSMESA_GLPIXELMAPUIV, NFOSMESA_GLPIXELMAPUSV, NFOSMESA_GLGETPIXELMAPFV, NFOSMESA_GLGETPIXELMAPUIV, NFOSMESA_GLGETPIXELMAPUSV, NFOSMESA_GLBITMAP, NFOSMESA_GLREADPIXELS, NFOSMESA_GLDRAWPIXELS, NFOSMESA_GLCOPYPIXELS, NFOSMESA_GLSTENCILFUNC, NFOSMESA_GLSTENCILMASK, NFOSMESA_GLSTENCILOP, NFOSMESA_GLCLEARSTENCIL, NFOSMESA_GLTEXGEND, NFOSMESA_GLTEXGENF, NFOSMESA_GLTEXGENI, NFOSMESA_GLTEXGENDV, NFOSMESA_GLTEXGENFV, NFOSMESA_GLTEXGENIV, NFOSMESA_GLGETTEXGENDV, NFOSMESA_GLGETTEXGENFV, NFOSMESA_GLGETTEXGENIV, NFOSMESA_GLTEXENVF, NFOSMESA_GLTEXENVI, NFOSMESA_GLTEXENVFV, NFOSMESA_GLTEXENVIV, NFOSMESA_GLGETTEXENVFV, NFOSMESA_GLGETTEXENVIV, NFOSMESA_GLTEXPARAMETERF, NFOSMESA_GLTEXPARAMETERI, NFOSMESA_GLTEXPARAMETERFV, NFOSMESA_GLTEXPARAMETERIV, NFOSMESA_GLGETTEXPARAMETERFV, NFOSMESA_GLGETTEXPARAMETERIV, NFOSMESA_GLGETTEXLEVELPARAMETERFV, NFOSMESA_GLGETTEXLEVELPARAMETERIV, NFOSMESA_GLTEXIMAGE1D, NFOSMESA_GLTEXIMAGE2D, NFOSMESA_GLGETTEXIMAGE, NFOSMESA_GLGENTEXTURES, NFOSMESA_GLDELETETEXTURES, NFOSMESA_GLBINDTEXTURE, NFOSMESA_GLPRIORITIZETEXTURES, NFOSMESA_GLARETEXTURESRESIDENT, NFOSMESA_GLISTEXTURE, NFOSMESA_GLTEXSUBIMAGE1D, NFOSMESA_GLTEXSUBIMAGE2D, NFOSMESA_GLCOPYTEXIMAGE1D, NFOSMESA_GLCOPYTEXIMAGE2D, NFOSMESA_GLCOPYTEXSUBIMAGE1D, NFOSMESA_GLCOPYTEXSUBIMAGE2D, NFOSMESA_GLMAP1D, NFOSMESA_GLMAP1F, NFOSMESA_GLMAP2D, NFOSMESA_GLMAP2F, NFOSMESA_GLGETMAPDV, NFOSMESA_GLGETMAPFV, NFOSMESA_GLGETMAPIV, NFOSMESA_GLEVALCOORD1D, NFOSMESA_GLEVALCOORD1F, NFOSMESA_GLEVALCOORD1DV, NFOSMESA_GLEVALCOORD1FV, NFOSMESA_GLEVALCOORD2D, NFOSMESA_GLEVALCOORD2F, NFOSMESA_GLEVALCOORD2DV, NFOSMESA_GLEVALCOORD2FV, NFOSMESA_GLMAPGRID1D, NFOSMESA_GLMAPGRID1F, NFOSMESA_GLMAPGRID2D, NFOSMESA_GLMAPGRID2F, NFOSMESA_GLEVALPOINT1, NFOSMESA_GLEVALPOINT2, NFOSMESA_GLEVALMESH1, NFOSMESA_GLEVALMESH2, NFOSMESA_GLFOGF, NFOSMESA_GLFOGI, NFOSMESA_GLFOGFV, NFOSMESA_GLFOGIV, NFOSMESA_GLFEEDBACKBUFFER, NFOSMESA_GLPASSTHROUGH, NFOSMESA_GLSELECTBUFFER, NFOSMESA_GLINITNAMES, NFOSMESA_GLLOADNAME, NFOSMESA_GLPUSHNAME, NFOSMESA_GLPOPNAME, /* NFOSMESA_GLDRAWRANGEELEMENTS, NFOSMESA_GLTEXIMAGE3D, NFOSMESA_GLTEXSUBIMAGE3D, NFOSMESA_GLCOPYTEXSUBIMAGE3D, NFOSMESA_GLCOLORTABLE, NFOSMESA_GLCOLORSUBTABLE, NFOSMESA_GLCOLORTABLEPARAMETERIV, NFOSMESA_GLCOLORTABLEPARAMETERFV, NFOSMESA_GLCOPYCOLORSUBTABLE, NFOSMESA_GLCOPYCOLORTABLE, NFOSMESA_GLGETCOLORTABLE, NFOSMESA_GLGETCOLORTABLEPARAMETERFV, NFOSMESA_GLGETCOLORTABLEPARAMETERIV, NFOSMESA_GLBLENDEQUATION, NFOSMESA_GLBLENDCOLOR, NFOSMESA_GLHISTOGRAM, NFOSMESA_GLRESETHISTOGRAM, NFOSMESA_GLGETHISTOGRAM, NFOSMESA_GLGETHISTOGRAMPARAMETERFV, NFOSMESA_GLGETHISTOGRAMPARAMETERIV, NFOSMESA_GLMINMAX, NFOSMESA_GLRESETMINMAX, NFOSMESA_GLGETMINMAX, NFOSMESA_GLGETMINMAXPARAMETERFV, NFOSMESA_GLGETMINMAXPARAMETERIV, NFOSMESA_GLCONVOLUTIONFILTER1D, NFOSMESA_GLCONVOLUTIONFILTER2D, NFOSMESA_GLCONVOLUTIONPARAMETERF, NFOSMESA_GLCONVOLUTIONPARAMETERFV, NFOSMESA_GLCONVOLUTIONPARAMETERI, NFOSMESA_GLCONVOLUTIONPARAMETERIV, NFOSMESA_GLCOPYCONVOLUTIONFILTER1D, NFOSMESA_GLCOPYCONVOLUTIONFILTER2D, NFOSMESA_GLGETCONVOLUTIONFILTER, NFOSMESA_GLGETCONVOLUTIONPARAMETERFV, NFOSMESA_GLGETCONVOLUTIONPARAMETERIV, NFOSMESA_GLSEPARABLEFILTER2D, NFOSMESA_GLGETSEPARABLEFILTER, NFOSMESA_GLACTIVETEXTURE, NFOSMESA_GLCLIENTACTIVETEXTURE, NFOSMESA_GLCOMPRESSEDTEXIMAGE1D, NFOSMESA_GLCOMPRESSEDTEXIMAGE2D, NFOSMESA_GLCOMPRESSEDTEXIMAGE3D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D, NFOSMESA_GLGETCOMPRESSEDTEXIMAGE, NFOSMESA_GLMULTITEXCOORD1D, NFOSMESA_GLMULTITEXCOORD1DV, NFOSMESA_GLMULTITEXCOORD1F, NFOSMESA_GLMULTITEXCOORD1FV, NFOSMESA_GLMULTITEXCOORD1I, NFOSMESA_GLMULTITEXCOORD1IV, NFOSMESA_GLMULTITEXCOORD1S, NFOSMESA_GLMULTITEXCOORD1SV, NFOSMESA_GLMULTITEXCOORD2D, NFOSMESA_GLMULTITEXCOORD2DV, NFOSMESA_GLMULTITEXCOORD2F, NFOSMESA_GLMULTITEXCOORD2FV, NFOSMESA_GLMULTITEXCOORD2I, NFOSMESA_GLMULTITEXCOORD2IV, NFOSMESA_GLMULTITEXCOORD2S, NFOSMESA_GLMULTITEXCOORD2SV, NFOSMESA_GLMULTITEXCOORD3D, NFOSMESA_GLMULTITEXCOORD3DV, NFOSMESA_GLMULTITEXCOORD3F, NFOSMESA_GLMULTITEXCOORD3FV, NFOSMESA_GLMULTITEXCOORD3I, NFOSMESA_GLMULTITEXCOORD3IV, NFOSMESA_GLMULTITEXCOORD3S, NFOSMESA_GLMULTITEXCOORD3SV, NFOSMESA_GLMULTITEXCOORD4D, NFOSMESA_GLMULTITEXCOORD4DV, NFOSMESA_GLMULTITEXCOORD4F, NFOSMESA_GLMULTITEXCOORD4FV, NFOSMESA_GLMULTITEXCOORD4I, NFOSMESA_GLMULTITEXCOORD4IV, NFOSMESA_GLMULTITEXCOORD4S, NFOSMESA_GLMULTITEXCOORD4SV, NFOSMESA_GLLOADTRANSPOSEMATRIXD, NFOSMESA_GLLOADTRANSPOSEMATRIXF, NFOSMESA_GLMULTTRANSPOSEMATRIXD, NFOSMESA_GLMULTTRANSPOSEMATRIXF, NFOSMESA_GLSAMPLECOVERAGE, NFOSMESA_GLACTIVETEXTUREARB, NFOSMESA_GLCLIENTACTIVETEXTUREARB, NFOSMESA_GLMULTITEXCOORD1DARB, NFOSMESA_GLMULTITEXCOORD1DVARB, NFOSMESA_GLMULTITEXCOORD1FARB, NFOSMESA_GLMULTITEXCOORD1FVARB, NFOSMESA_GLMULTITEXCOORD1IARB, NFOSMESA_GLMULTITEXCOORD1IVARB, NFOSMESA_GLMULTITEXCOORD1SARB, NFOSMESA_GLMULTITEXCOORD1SVARB, NFOSMESA_GLMULTITEXCOORD2DARB, NFOSMESA_GLMULTITEXCOORD2DVARB, NFOSMESA_GLMULTITEXCOORD2FARB, NFOSMESA_GLMULTITEXCOORD2FVARB, NFOSMESA_GLMULTITEXCOORD2IARB, NFOSMESA_GLMULTITEXCOORD2IVARB, NFOSMESA_GLMULTITEXCOORD2SARB, NFOSMESA_GLMULTITEXCOORD2SVARB, NFOSMESA_GLMULTITEXCOORD3DARB, NFOSMESA_GLMULTITEXCOORD3DVARB, NFOSMESA_GLMULTITEXCOORD3FARB, NFOSMESA_GLMULTITEXCOORD3FVARB, NFOSMESA_GLMULTITEXCOORD3IARB, NFOSMESA_GLMULTITEXCOORD3IVARB, NFOSMESA_GLMULTITEXCOORD3SARB, NFOSMESA_GLMULTITEXCOORD3SVARB, NFOSMESA_GLMULTITEXCOORD4DARB, NFOSMESA_GLMULTITEXCOORD4DVARB, NFOSMESA_GLMULTITEXCOORD4FARB, NFOSMESA_GLMULTITEXCOORD4FVARB, NFOSMESA_GLMULTITEXCOORD4IARB, NFOSMESA_GLMULTITEXCOORD4IVARB, NFOSMESA_GLMULTITEXCOORD4SARB, NFOSMESA_GLMULTITEXCOORD4SVARB, */ NFOSMESA_GLENABLETRACEMESA, NFOSMESA_GLDISABLETRACEMESA, NFOSMESA_GLNEWTRACEMESA, NFOSMESA_GLENDTRACEMESA, NFOSMESA_GLTRACEASSERTATTRIBMESA, NFOSMESA_GLTRACECOMMENTMESA, NFOSMESA_GLTRACETEXTUREMESA, NFOSMESA_GLTRACELISTMESA, NFOSMESA_GLTRACEPOINTERMESA, NFOSMESA_GLTRACEPOINTERRANGEMESA, NFOSMESA_GLBLENDEQUATIONSEPARATEATI, /* Functions generated: 465 */ aranym-0.9.15/atari/nfosmesa/enum-glext.h000066400000000000000000000756521213346724500202740ustar00rootroot00000000000000/* Generated by enum-gen.pl from /usr/local/include/GL/glext.h */ NFOSMESA_GLBLENDCOLOR, NFOSMESA_GLBLENDEQUATION, NFOSMESA_GLDRAWRANGEELEMENTS, NFOSMESA_GLCOLORTABLE, NFOSMESA_GLCOLORTABLEPARAMETERFV, NFOSMESA_GLCOLORTABLEPARAMETERIV, NFOSMESA_GLCOPYCOLORTABLE, NFOSMESA_GLGETCOLORTABLE, NFOSMESA_GLGETCOLORTABLEPARAMETERFV, NFOSMESA_GLGETCOLORTABLEPARAMETERIV, NFOSMESA_GLCOLORSUBTABLE, NFOSMESA_GLCOPYCOLORSUBTABLE, NFOSMESA_GLCONVOLUTIONFILTER1D, NFOSMESA_GLCONVOLUTIONFILTER2D, NFOSMESA_GLCONVOLUTIONPARAMETERF, NFOSMESA_GLCONVOLUTIONPARAMETERFV, NFOSMESA_GLCONVOLUTIONPARAMETERI, NFOSMESA_GLCONVOLUTIONPARAMETERIV, NFOSMESA_GLCOPYCONVOLUTIONFILTER1D, NFOSMESA_GLCOPYCONVOLUTIONFILTER2D, NFOSMESA_GLGETCONVOLUTIONFILTER, NFOSMESA_GLGETCONVOLUTIONPARAMETERFV, NFOSMESA_GLGETCONVOLUTIONPARAMETERIV, NFOSMESA_GLGETSEPARABLEFILTER, NFOSMESA_GLSEPARABLEFILTER2D, NFOSMESA_GLGETHISTOGRAM, NFOSMESA_GLGETHISTOGRAMPARAMETERFV, NFOSMESA_GLGETHISTOGRAMPARAMETERIV, NFOSMESA_GLGETMINMAX, NFOSMESA_GLGETMINMAXPARAMETERFV, NFOSMESA_GLGETMINMAXPARAMETERIV, NFOSMESA_GLHISTOGRAM, NFOSMESA_GLMINMAX, NFOSMESA_GLRESETHISTOGRAM, NFOSMESA_GLRESETMINMAX, NFOSMESA_GLTEXIMAGE3D, NFOSMESA_GLTEXSUBIMAGE3D, NFOSMESA_GLCOPYTEXSUBIMAGE3D, NFOSMESA_GLACTIVETEXTURE, NFOSMESA_GLCLIENTACTIVETEXTURE, NFOSMESA_GLMULTITEXCOORD1D, NFOSMESA_GLMULTITEXCOORD1DV, NFOSMESA_GLMULTITEXCOORD1F, NFOSMESA_GLMULTITEXCOORD1FV, NFOSMESA_GLMULTITEXCOORD1I, NFOSMESA_GLMULTITEXCOORD1IV, NFOSMESA_GLMULTITEXCOORD1S, NFOSMESA_GLMULTITEXCOORD1SV, NFOSMESA_GLMULTITEXCOORD2D, NFOSMESA_GLMULTITEXCOORD2DV, NFOSMESA_GLMULTITEXCOORD2F, NFOSMESA_GLMULTITEXCOORD2FV, NFOSMESA_GLMULTITEXCOORD2I, NFOSMESA_GLMULTITEXCOORD2IV, NFOSMESA_GLMULTITEXCOORD2S, NFOSMESA_GLMULTITEXCOORD2SV, NFOSMESA_GLMULTITEXCOORD3D, NFOSMESA_GLMULTITEXCOORD3DV, NFOSMESA_GLMULTITEXCOORD3F, NFOSMESA_GLMULTITEXCOORD3FV, NFOSMESA_GLMULTITEXCOORD3I, NFOSMESA_GLMULTITEXCOORD3IV, NFOSMESA_GLMULTITEXCOORD3S, NFOSMESA_GLMULTITEXCOORD3SV, NFOSMESA_GLMULTITEXCOORD4D, NFOSMESA_GLMULTITEXCOORD4DV, NFOSMESA_GLMULTITEXCOORD4F, NFOSMESA_GLMULTITEXCOORD4FV, NFOSMESA_GLMULTITEXCOORD4I, NFOSMESA_GLMULTITEXCOORD4IV, NFOSMESA_GLMULTITEXCOORD4S, NFOSMESA_GLMULTITEXCOORD4SV, NFOSMESA_GLLOADTRANSPOSEMATRIXF, NFOSMESA_GLLOADTRANSPOSEMATRIXD, NFOSMESA_GLMULTTRANSPOSEMATRIXF, NFOSMESA_GLMULTTRANSPOSEMATRIXD, NFOSMESA_GLSAMPLECOVERAGE, NFOSMESA_GLCOMPRESSEDTEXIMAGE3D, NFOSMESA_GLCOMPRESSEDTEXIMAGE2D, NFOSMESA_GLCOMPRESSEDTEXIMAGE1D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D, NFOSMESA_GLGETCOMPRESSEDTEXIMAGE, NFOSMESA_GLBLENDFUNCSEPARATE, NFOSMESA_GLFOGCOORDF, NFOSMESA_GLFOGCOORDFV, NFOSMESA_GLFOGCOORDD, NFOSMESA_GLFOGCOORDDV, NFOSMESA_GLFOGCOORDPOINTER, NFOSMESA_GLMULTIDRAWARRAYS, NFOSMESA_GLMULTIDRAWELEMENTS, NFOSMESA_GLPOINTPARAMETERF, NFOSMESA_GLPOINTPARAMETERFV, NFOSMESA_GLPOINTPARAMETERI, NFOSMESA_GLPOINTPARAMETERIV, NFOSMESA_GLSECONDARYCOLOR3B, NFOSMESA_GLSECONDARYCOLOR3BV, NFOSMESA_GLSECONDARYCOLOR3D, NFOSMESA_GLSECONDARYCOLOR3DV, NFOSMESA_GLSECONDARYCOLOR3F, NFOSMESA_GLSECONDARYCOLOR3FV, NFOSMESA_GLSECONDARYCOLOR3I, NFOSMESA_GLSECONDARYCOLOR3IV, NFOSMESA_GLSECONDARYCOLOR3S, NFOSMESA_GLSECONDARYCOLOR3SV, NFOSMESA_GLSECONDARYCOLOR3UB, NFOSMESA_GLSECONDARYCOLOR3UBV, NFOSMESA_GLSECONDARYCOLOR3UI, NFOSMESA_GLSECONDARYCOLOR3UIV, NFOSMESA_GLSECONDARYCOLOR3US, NFOSMESA_GLSECONDARYCOLOR3USV, NFOSMESA_GLSECONDARYCOLORPOINTER, NFOSMESA_GLWINDOWPOS2D, NFOSMESA_GLWINDOWPOS2DV, NFOSMESA_GLWINDOWPOS2F, NFOSMESA_GLWINDOWPOS2FV, NFOSMESA_GLWINDOWPOS2I, NFOSMESA_GLWINDOWPOS2IV, NFOSMESA_GLWINDOWPOS2S, NFOSMESA_GLWINDOWPOS2SV, NFOSMESA_GLWINDOWPOS3D, NFOSMESA_GLWINDOWPOS3DV, NFOSMESA_GLWINDOWPOS3F, NFOSMESA_GLWINDOWPOS3FV, NFOSMESA_GLWINDOWPOS3I, NFOSMESA_GLWINDOWPOS3IV, NFOSMESA_GLWINDOWPOS3S, NFOSMESA_GLWINDOWPOS3SV, NFOSMESA_GLGENQUERIES, NFOSMESA_GLDELETEQUERIES, NFOSMESA_GLISQUERY, NFOSMESA_GLBEGINQUERY, NFOSMESA_GLENDQUERY, NFOSMESA_GLGETQUERYIV, NFOSMESA_GLGETQUERYOBJECTIV, NFOSMESA_GLGETQUERYOBJECTUIV, NFOSMESA_GLBINDBUFFER, NFOSMESA_GLDELETEBUFFERS, NFOSMESA_GLGENBUFFERS, NFOSMESA_GLISBUFFER, NFOSMESA_GLBUFFERDATA, NFOSMESA_GLBUFFERSUBDATA, NFOSMESA_GLGETBUFFERSUBDATA, NFOSMESA_GLMAPBUFFER, NFOSMESA_GLUNMAPBUFFER, NFOSMESA_GLGETBUFFERPARAMETERIV, NFOSMESA_GLGETBUFFERPOINTERV, NFOSMESA_GLACTIVETEXTUREARB, NFOSMESA_GLCLIENTACTIVETEXTUREARB, NFOSMESA_GLMULTITEXCOORD1DARB, NFOSMESA_GLMULTITEXCOORD1DVARB, NFOSMESA_GLMULTITEXCOORD1FARB, NFOSMESA_GLMULTITEXCOORD1FVARB, NFOSMESA_GLMULTITEXCOORD1IARB, NFOSMESA_GLMULTITEXCOORD1IVARB, NFOSMESA_GLMULTITEXCOORD1SARB, NFOSMESA_GLMULTITEXCOORD1SVARB, NFOSMESA_GLMULTITEXCOORD2DARB, NFOSMESA_GLMULTITEXCOORD2DVARB, NFOSMESA_GLMULTITEXCOORD2FARB, NFOSMESA_GLMULTITEXCOORD2FVARB, NFOSMESA_GLMULTITEXCOORD2IARB, NFOSMESA_GLMULTITEXCOORD2IVARB, NFOSMESA_GLMULTITEXCOORD2SARB, NFOSMESA_GLMULTITEXCOORD2SVARB, NFOSMESA_GLMULTITEXCOORD3DARB, NFOSMESA_GLMULTITEXCOORD3DVARB, NFOSMESA_GLMULTITEXCOORD3FARB, NFOSMESA_GLMULTITEXCOORD3FVARB, NFOSMESA_GLMULTITEXCOORD3IARB, NFOSMESA_GLMULTITEXCOORD3IVARB, NFOSMESA_GLMULTITEXCOORD3SARB, NFOSMESA_GLMULTITEXCOORD3SVARB, NFOSMESA_GLMULTITEXCOORD4DARB, NFOSMESA_GLMULTITEXCOORD4DVARB, NFOSMESA_GLMULTITEXCOORD4FARB, NFOSMESA_GLMULTITEXCOORD4FVARB, NFOSMESA_GLMULTITEXCOORD4IARB, NFOSMESA_GLMULTITEXCOORD4IVARB, NFOSMESA_GLMULTITEXCOORD4SARB, NFOSMESA_GLMULTITEXCOORD4SVARB, NFOSMESA_GLLOADTRANSPOSEMATRIXFARB, NFOSMESA_GLLOADTRANSPOSEMATRIXDARB, NFOSMESA_GLMULTTRANSPOSEMATRIXFARB, NFOSMESA_GLMULTTRANSPOSEMATRIXDARB, NFOSMESA_GLSAMPLECOVERAGEARB, NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB, NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB, NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB, NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB, NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB, NFOSMESA_GLPOINTPARAMETERFARB, NFOSMESA_GLPOINTPARAMETERFVARB, NFOSMESA_GLWEIGHTBVARB, NFOSMESA_GLWEIGHTSVARB, NFOSMESA_GLWEIGHTIVARB, NFOSMESA_GLWEIGHTFVARB, NFOSMESA_GLWEIGHTDVARB, NFOSMESA_GLWEIGHTUBVARB, NFOSMESA_GLWEIGHTUSVARB, NFOSMESA_GLWEIGHTUIVARB, NFOSMESA_GLWEIGHTPOINTERARB, NFOSMESA_GLVERTEXBLENDARB, NFOSMESA_GLCURRENTPALETTEMATRIXARB, NFOSMESA_GLMATRIXINDEXUBVARB, NFOSMESA_GLMATRIXINDEXUSVARB, NFOSMESA_GLMATRIXINDEXUIVARB, NFOSMESA_GLMATRIXINDEXPOINTERARB, NFOSMESA_GLWINDOWPOS2DARB, NFOSMESA_GLWINDOWPOS2DVARB, NFOSMESA_GLWINDOWPOS2FARB, NFOSMESA_GLWINDOWPOS2FVARB, NFOSMESA_GLWINDOWPOS2IARB, NFOSMESA_GLWINDOWPOS2IVARB, NFOSMESA_GLWINDOWPOS2SARB, NFOSMESA_GLWINDOWPOS2SVARB, NFOSMESA_GLWINDOWPOS3DARB, NFOSMESA_GLWINDOWPOS3DVARB, NFOSMESA_GLWINDOWPOS3FARB, NFOSMESA_GLWINDOWPOS3FVARB, NFOSMESA_GLWINDOWPOS3IARB, NFOSMESA_GLWINDOWPOS3IVARB, NFOSMESA_GLWINDOWPOS3SARB, NFOSMESA_GLWINDOWPOS3SVARB, NFOSMESA_GLVERTEXATTRIB1DARB, NFOSMESA_GLVERTEXATTRIB1DVARB, NFOSMESA_GLVERTEXATTRIB1FARB, NFOSMESA_GLVERTEXATTRIB1FVARB, NFOSMESA_GLVERTEXATTRIB1SARB, NFOSMESA_GLVERTEXATTRIB1SVARB, NFOSMESA_GLVERTEXATTRIB2DARB, NFOSMESA_GLVERTEXATTRIB2DVARB, NFOSMESA_GLVERTEXATTRIB2FARB, NFOSMESA_GLVERTEXATTRIB2FVARB, NFOSMESA_GLVERTEXATTRIB2SARB, NFOSMESA_GLVERTEXATTRIB2SVARB, NFOSMESA_GLVERTEXATTRIB3DARB, NFOSMESA_GLVERTEXATTRIB3DVARB, NFOSMESA_GLVERTEXATTRIB3FARB, NFOSMESA_GLVERTEXATTRIB3FVARB, NFOSMESA_GLVERTEXATTRIB3SARB, NFOSMESA_GLVERTEXATTRIB3SVARB, NFOSMESA_GLVERTEXATTRIB4NBVARB, NFOSMESA_GLVERTEXATTRIB4NIVARB, NFOSMESA_GLVERTEXATTRIB4NSVARB, NFOSMESA_GLVERTEXATTRIB4NUBARB, NFOSMESA_GLVERTEXATTRIB4NUBVARB, NFOSMESA_GLVERTEXATTRIB4NUIVARB, NFOSMESA_GLVERTEXATTRIB4NUSVARB, NFOSMESA_GLVERTEXATTRIB4BVARB, NFOSMESA_GLVERTEXATTRIB4DARB, NFOSMESA_GLVERTEXATTRIB4DVARB, NFOSMESA_GLVERTEXATTRIB4FARB, NFOSMESA_GLVERTEXATTRIB4FVARB, NFOSMESA_GLVERTEXATTRIB4IVARB, NFOSMESA_GLVERTEXATTRIB4SARB, NFOSMESA_GLVERTEXATTRIB4SVARB, NFOSMESA_GLVERTEXATTRIB4UBVARB, NFOSMESA_GLVERTEXATTRIB4UIVARB, NFOSMESA_GLVERTEXATTRIB4USVARB, NFOSMESA_GLVERTEXATTRIBPOINTERARB, NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB, NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB, NFOSMESA_GLPROGRAMSTRINGARB, NFOSMESA_GLBINDPROGRAMARB, NFOSMESA_GLDELETEPROGRAMSARB, NFOSMESA_GLGENPROGRAMSARB, NFOSMESA_GLPROGRAMENVPARAMETER4DARB, NFOSMESA_GLPROGRAMENVPARAMETER4DVARB, NFOSMESA_GLPROGRAMENVPARAMETER4FARB, NFOSMESA_GLPROGRAMENVPARAMETER4FVARB, NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB, NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB, NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB, NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB, NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB, NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB, NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB, NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB, NFOSMESA_GLGETPROGRAMIVARB, NFOSMESA_GLGETPROGRAMSTRINGARB, NFOSMESA_GLGETVERTEXATTRIBDVARB, NFOSMESA_GLGETVERTEXATTRIBFVARB, NFOSMESA_GLGETVERTEXATTRIBIVARB, NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB, NFOSMESA_GLISPROGRAMARB, NFOSMESA_GLBINDBUFFERARB, NFOSMESA_GLDELETEBUFFERSARB, NFOSMESA_GLGENBUFFERSARB, NFOSMESA_GLISBUFFERARB, NFOSMESA_GLBUFFERDATAARB, NFOSMESA_GLBUFFERSUBDATAARB, NFOSMESA_GLGETBUFFERSUBDATAARB, NFOSMESA_GLMAPBUFFERARB, NFOSMESA_GLUNMAPBUFFERARB, NFOSMESA_GLGETBUFFERPARAMETERIVARB, NFOSMESA_GLGETBUFFERPOINTERVARB, NFOSMESA_GLGENQUERIESARB, NFOSMESA_GLDELETEQUERIESARB, NFOSMESA_GLISQUERYARB, NFOSMESA_GLBEGINQUERYARB, NFOSMESA_GLENDQUERYARB, NFOSMESA_GLGETQUERYIVARB, NFOSMESA_GLGETQUERYOBJECTIVARB, NFOSMESA_GLGETQUERYOBJECTUIVARB, NFOSMESA_GLDELETEOBJECTARB, NFOSMESA_GLGETHANDLEARB, NFOSMESA_GLDETACHOBJECTARB, NFOSMESA_GLCREATESHADEROBJECTARB, NFOSMESA_GLSHADERSOURCEARB, NFOSMESA_GLCOMPILESHADERARB, NFOSMESA_GLCREATEPROGRAMOBJECTARB, NFOSMESA_GLATTACHOBJECTARB, NFOSMESA_GLLINKPROGRAMARB, NFOSMESA_GLUSEPROGRAMOBJECTARB, NFOSMESA_GLVALIDATEPROGRAMARB, NFOSMESA_GLUNIFORM1FARB, NFOSMESA_GLUNIFORM2FARB, NFOSMESA_GLUNIFORM3FARB, NFOSMESA_GLUNIFORM4FARB, NFOSMESA_GLUNIFORM1IARB, NFOSMESA_GLUNIFORM2IARB, NFOSMESA_GLUNIFORM3IARB, NFOSMESA_GLUNIFORM4IARB, NFOSMESA_GLUNIFORM1FVARB, NFOSMESA_GLUNIFORM2FVARB, NFOSMESA_GLUNIFORM3FVARB, NFOSMESA_GLUNIFORM4FVARB, NFOSMESA_GLUNIFORM1IVARB, NFOSMESA_GLUNIFORM2IVARB, NFOSMESA_GLUNIFORM3IVARB, NFOSMESA_GLUNIFORM4IVARB, NFOSMESA_GLUNIFORMMATRIX2FVARB, NFOSMESA_GLUNIFORMMATRIX3FVARB, NFOSMESA_GLUNIFORMMATRIX4FVARB, NFOSMESA_GLGETOBJECTPARAMETERFVARB, NFOSMESA_GLGETOBJECTPARAMETERIVARB, NFOSMESA_GLGETINFOLOGARB, NFOSMESA_GLGETATTACHEDOBJECTSARB, NFOSMESA_GLGETUNIFORMLOCATIONARB, NFOSMESA_GLGETACTIVEUNIFORMARB, NFOSMESA_GLGETUNIFORMFVARB, NFOSMESA_GLGETUNIFORMIVARB, NFOSMESA_GLGETSHADERSOURCEARB, NFOSMESA_GLBINDATTRIBLOCATIONARB, NFOSMESA_GLGETACTIVEATTRIBARB, NFOSMESA_GLGETATTRIBLOCATIONARB, NFOSMESA_GLDRAWBUFFERSARB, NFOSMESA_GLBLENDCOLOREXT, NFOSMESA_GLPOLYGONOFFSETEXT, NFOSMESA_GLTEXIMAGE3DEXT, NFOSMESA_GLTEXSUBIMAGE3DEXT, NFOSMESA_GLGETTEXFILTERFUNCSGIS, NFOSMESA_GLTEXFILTERFUNCSGIS, NFOSMESA_GLTEXSUBIMAGE1DEXT, NFOSMESA_GLTEXSUBIMAGE2DEXT, NFOSMESA_GLCOPYTEXIMAGE1DEXT, NFOSMESA_GLCOPYTEXIMAGE2DEXT, NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT, NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT, NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT, NFOSMESA_GLGETHISTOGRAMEXT, NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT, NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT, NFOSMESA_GLGETMINMAXEXT, NFOSMESA_GLGETMINMAXPARAMETERFVEXT, NFOSMESA_GLGETMINMAXPARAMETERIVEXT, NFOSMESA_GLHISTOGRAMEXT, NFOSMESA_GLMINMAXEXT, NFOSMESA_GLRESETHISTOGRAMEXT, NFOSMESA_GLRESETMINMAXEXT, NFOSMESA_GLCONVOLUTIONFILTER1DEXT, NFOSMESA_GLCONVOLUTIONFILTER2DEXT, NFOSMESA_GLCONVOLUTIONPARAMETERFEXT, NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT, NFOSMESA_GLCONVOLUTIONPARAMETERIEXT, NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT, NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT, NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT, NFOSMESA_GLGETCONVOLUTIONFILTEREXT, NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT, NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT, NFOSMESA_GLGETSEPARABLEFILTEREXT, NFOSMESA_GLSEPARABLEFILTER2DEXT, NFOSMESA_GLCOLORTABLESGI, NFOSMESA_GLCOLORTABLEPARAMETERFVSGI, NFOSMESA_GLCOLORTABLEPARAMETERIVSGI, NFOSMESA_GLCOPYCOLORTABLESGI, NFOSMESA_GLGETCOLORTABLESGI, NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI, NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI, NFOSMESA_GLPIXELTEXGENSGIX, NFOSMESA_GLPIXELTEXGENPARAMETERISGIS, NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS, NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS, NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS, NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS, NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS, NFOSMESA_GLTEXIMAGE4DSGIS, NFOSMESA_GLTEXSUBIMAGE4DSGIS, NFOSMESA_GLARETEXTURESRESIDENTEXT, NFOSMESA_GLBINDTEXTUREEXT, NFOSMESA_GLDELETETEXTURESEXT, NFOSMESA_GLGENTEXTURESEXT, NFOSMESA_GLISTEXTUREEXT, NFOSMESA_GLPRIORITIZETEXTURESEXT, NFOSMESA_GLDETAILTEXFUNCSGIS, NFOSMESA_GLGETDETAILTEXFUNCSGIS, NFOSMESA_GLSHARPENTEXFUNCSGIS, NFOSMESA_GLGETSHARPENTEXFUNCSGIS, NFOSMESA_GLSAMPLEMASKSGIS, NFOSMESA_GLSAMPLEPATTERNSGIS, NFOSMESA_GLARRAYELEMENTEXT, NFOSMESA_GLCOLORPOINTEREXT, NFOSMESA_GLDRAWARRAYSEXT, NFOSMESA_GLEDGEFLAGPOINTEREXT, NFOSMESA_GLGETPOINTERVEXT, NFOSMESA_GLINDEXPOINTEREXT, NFOSMESA_GLNORMALPOINTEREXT, NFOSMESA_GLTEXCOORDPOINTEREXT, NFOSMESA_GLVERTEXPOINTEREXT, NFOSMESA_GLBLENDEQUATIONEXT, NFOSMESA_GLSPRITEPARAMETERFSGIX, NFOSMESA_GLSPRITEPARAMETERFVSGIX, NFOSMESA_GLSPRITEPARAMETERISGIX, NFOSMESA_GLSPRITEPARAMETERIVSGIX, NFOSMESA_GLPOINTPARAMETERFEXT, NFOSMESA_GLPOINTPARAMETERFVEXT, NFOSMESA_GLPOINTPARAMETERFSGIS, NFOSMESA_GLPOINTPARAMETERFVSGIS, NFOSMESA_GLGETINSTRUMENTSSGIX, NFOSMESA_GLINSTRUMENTSBUFFERSGIX, NFOSMESA_GLPOLLINSTRUMENTSSGIX, NFOSMESA_GLREADINSTRUMENTSSGIX, NFOSMESA_GLSTARTINSTRUMENTSSGIX, NFOSMESA_GLSTOPINSTRUMENTSSGIX, NFOSMESA_GLFRAMEZOOMSGIX, NFOSMESA_GLTAGSAMPLEBUFFERSGIX, NFOSMESA_GLDEFORMATIONMAP3DSGIX, NFOSMESA_GLDEFORMATIONMAP3FSGIX, NFOSMESA_GLDEFORMSGIX, NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX, NFOSMESA_GLREFERENCEPLANESGIX, NFOSMESA_GLFLUSHRASTERSGIX, NFOSMESA_GLFOGFUNCSGIS, NFOSMESA_GLGETFOGFUNCSGIS, NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP, NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP, NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP, NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP, NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP, NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP, NFOSMESA_GLCOLORSUBTABLEEXT, NFOSMESA_GLCOPYCOLORSUBTABLEEXT, NFOSMESA_GLHINTPGI, NFOSMESA_GLCOLORTABLEEXT, NFOSMESA_GLGETCOLORTABLEEXT, NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT, NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT, NFOSMESA_GLGETLISTPARAMETERFVSGIX, NFOSMESA_GLGETLISTPARAMETERIVSGIX, NFOSMESA_GLLISTPARAMETERFSGIX, NFOSMESA_GLLISTPARAMETERFVSGIX, NFOSMESA_GLLISTPARAMETERISGIX, NFOSMESA_GLLISTPARAMETERIVSGIX, NFOSMESA_GLINDEXMATERIALEXT, NFOSMESA_GLINDEXFUNCEXT, NFOSMESA_GLLOCKARRAYSEXT, NFOSMESA_GLUNLOCKARRAYSEXT, NFOSMESA_GLCULLPARAMETERDVEXT, NFOSMESA_GLCULLPARAMETERFVEXT, NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX, NFOSMESA_GLFRAGMENTLIGHTFSGIX, NFOSMESA_GLFRAGMENTLIGHTFVSGIX, NFOSMESA_GLFRAGMENTLIGHTISGIX, NFOSMESA_GLFRAGMENTLIGHTIVSGIX, NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX, NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX, NFOSMESA_GLFRAGMENTLIGHTMODELISGIX, NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX, NFOSMESA_GLFRAGMENTMATERIALFSGIX, NFOSMESA_GLFRAGMENTMATERIALFVSGIX, NFOSMESA_GLFRAGMENTMATERIALISGIX, NFOSMESA_GLFRAGMENTMATERIALIVSGIX, NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX, NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX, NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX, NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX, NFOSMESA_GLLIGHTENVISGIX, NFOSMESA_GLDRAWRANGEELEMENTSEXT, NFOSMESA_GLAPPLYTEXTUREEXT, NFOSMESA_GLTEXTURELIGHTEXT, NFOSMESA_GLTEXTUREMATERIALEXT, NFOSMESA_GLASYNCMARKERSGIX, NFOSMESA_GLFINISHASYNCSGIX, NFOSMESA_GLPOLLASYNCSGIX, NFOSMESA_GLGENASYNCMARKERSSGIX, NFOSMESA_GLDELETEASYNCMARKERSSGIX, NFOSMESA_GLISASYNCMARKERSGIX, NFOSMESA_GLVERTEXPOINTERVINTEL, NFOSMESA_GLNORMALPOINTERVINTEL, NFOSMESA_GLCOLORPOINTERVINTEL, NFOSMESA_GLTEXCOORDPOINTERVINTEL, NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT, NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT, NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT, NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT, NFOSMESA_GLSECONDARYCOLOR3BEXT, NFOSMESA_GLSECONDARYCOLOR3BVEXT, NFOSMESA_GLSECONDARYCOLOR3DEXT, NFOSMESA_GLSECONDARYCOLOR3DVEXT, NFOSMESA_GLSECONDARYCOLOR3FEXT, NFOSMESA_GLSECONDARYCOLOR3FVEXT, NFOSMESA_GLSECONDARYCOLOR3IEXT, NFOSMESA_GLSECONDARYCOLOR3IVEXT, NFOSMESA_GLSECONDARYCOLOR3SEXT, NFOSMESA_GLSECONDARYCOLOR3SVEXT, NFOSMESA_GLSECONDARYCOLOR3UBEXT, NFOSMESA_GLSECONDARYCOLOR3UBVEXT, NFOSMESA_GLSECONDARYCOLOR3UIEXT, NFOSMESA_GLSECONDARYCOLOR3UIVEXT, NFOSMESA_GLSECONDARYCOLOR3USEXT, NFOSMESA_GLSECONDARYCOLOR3USVEXT, NFOSMESA_GLSECONDARYCOLORPOINTEREXT, NFOSMESA_GLTEXTURENORMALEXT, NFOSMESA_GLMULTIDRAWARRAYSEXT, NFOSMESA_GLMULTIDRAWELEMENTSEXT, NFOSMESA_GLFOGCOORDFEXT, NFOSMESA_GLFOGCOORDFVEXT, NFOSMESA_GLFOGCOORDDEXT, NFOSMESA_GLFOGCOORDDVEXT, NFOSMESA_GLFOGCOORDPOINTEREXT, NFOSMESA_GLTANGENT3BEXT, NFOSMESA_GLTANGENT3BVEXT, NFOSMESA_GLTANGENT3DEXT, NFOSMESA_GLTANGENT3DVEXT, NFOSMESA_GLTANGENT3FEXT, NFOSMESA_GLTANGENT3FVEXT, NFOSMESA_GLTANGENT3IEXT, NFOSMESA_GLTANGENT3IVEXT, NFOSMESA_GLTANGENT3SEXT, NFOSMESA_GLTANGENT3SVEXT, NFOSMESA_GLBINORMAL3BEXT, NFOSMESA_GLBINORMAL3BVEXT, NFOSMESA_GLBINORMAL3DEXT, NFOSMESA_GLBINORMAL3DVEXT, NFOSMESA_GLBINORMAL3FEXT, NFOSMESA_GLBINORMAL3FVEXT, NFOSMESA_GLBINORMAL3IEXT, NFOSMESA_GLBINORMAL3IVEXT, NFOSMESA_GLBINORMAL3SEXT, NFOSMESA_GLBINORMAL3SVEXT, NFOSMESA_GLTANGENTPOINTEREXT, NFOSMESA_GLBINORMALPOINTEREXT, NFOSMESA_GLFINISHTEXTURESUNX, NFOSMESA_GLGLOBALALPHAFACTORBSUN, NFOSMESA_GLGLOBALALPHAFACTORSSUN, NFOSMESA_GLGLOBALALPHAFACTORISUN, NFOSMESA_GLGLOBALALPHAFACTORFSUN, NFOSMESA_GLGLOBALALPHAFACTORDSUN, NFOSMESA_GLGLOBALALPHAFACTORUBSUN, NFOSMESA_GLGLOBALALPHAFACTORUSSUN, NFOSMESA_GLGLOBALALPHAFACTORUISUN, NFOSMESA_GLREPLACEMENTCODEUISUN, NFOSMESA_GLREPLACEMENTCODEUSSUN, NFOSMESA_GLREPLACEMENTCODEUBSUN, NFOSMESA_GLREPLACEMENTCODEUIVSUN, NFOSMESA_GLREPLACEMENTCODEUSVSUN, NFOSMESA_GLREPLACEMENTCODEUBVSUN, NFOSMESA_GLREPLACEMENTCODEPOINTERSUN, NFOSMESA_GLCOLOR4UBVERTEX2FSUN, NFOSMESA_GLCOLOR4UBVERTEX2FVSUN, NFOSMESA_GLCOLOR4UBVERTEX3FSUN, NFOSMESA_GLCOLOR4UBVERTEX3FVSUN, NFOSMESA_GLCOLOR3FVERTEX3FSUN, NFOSMESA_GLCOLOR3FVERTEX3FVSUN, NFOSMESA_GLNORMAL3FVERTEX3FSUN, NFOSMESA_GLNORMAL3FVERTEX3FVSUN, NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN, NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLTEXCOORD2FVERTEX3FSUN, NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN, NFOSMESA_GLTEXCOORD4FVERTEX4FSUN, NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN, NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN, NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN, NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN, NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN, NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN, NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN, NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN, NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN, NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN, NFOSMESA_GLBLENDFUNCSEPARATEEXT, NFOSMESA_GLBLENDFUNCSEPARATEINGR, NFOSMESA_GLVERTEXWEIGHTFEXT, NFOSMESA_GLVERTEXWEIGHTFVEXT, NFOSMESA_GLVERTEXWEIGHTPOINTEREXT, NFOSMESA_GLFLUSHVERTEXARRAYRANGENV, NFOSMESA_GLVERTEXARRAYRANGENV, NFOSMESA_GLCOMBINERPARAMETERFVNV, NFOSMESA_GLCOMBINERPARAMETERFNV, NFOSMESA_GLCOMBINERPARAMETERIVNV, NFOSMESA_GLCOMBINERPARAMETERINV, NFOSMESA_GLCOMBINERINPUTNV, NFOSMESA_GLCOMBINEROUTPUTNV, NFOSMESA_GLFINALCOMBINERINPUTNV, NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV, NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV, NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV, NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV, NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV, NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV, NFOSMESA_GLRESIZEBUFFERSMESA, NFOSMESA_GLWINDOWPOS2DMESA, NFOSMESA_GLWINDOWPOS2DVMESA, NFOSMESA_GLWINDOWPOS2FMESA, NFOSMESA_GLWINDOWPOS2FVMESA, NFOSMESA_GLWINDOWPOS2IMESA, NFOSMESA_GLWINDOWPOS2IVMESA, NFOSMESA_GLWINDOWPOS2SMESA, NFOSMESA_GLWINDOWPOS2SVMESA, NFOSMESA_GLWINDOWPOS3DMESA, NFOSMESA_GLWINDOWPOS3DVMESA, NFOSMESA_GLWINDOWPOS3FMESA, NFOSMESA_GLWINDOWPOS3FVMESA, NFOSMESA_GLWINDOWPOS3IMESA, NFOSMESA_GLWINDOWPOS3IVMESA, NFOSMESA_GLWINDOWPOS3SMESA, NFOSMESA_GLWINDOWPOS3SVMESA, NFOSMESA_GLWINDOWPOS4DMESA, NFOSMESA_GLWINDOWPOS4DVMESA, NFOSMESA_GLWINDOWPOS4FMESA, NFOSMESA_GLWINDOWPOS4FVMESA, NFOSMESA_GLWINDOWPOS4IMESA, NFOSMESA_GLWINDOWPOS4IVMESA, NFOSMESA_GLWINDOWPOS4SMESA, NFOSMESA_GLWINDOWPOS4SVMESA, NFOSMESA_GLMULTIMODEDRAWARRAYSIBM, NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM, NFOSMESA_GLCOLORPOINTERLISTIBM, NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM, NFOSMESA_GLEDGEFLAGPOINTERLISTIBM, NFOSMESA_GLFOGCOORDPOINTERLISTIBM, NFOSMESA_GLINDEXPOINTERLISTIBM, NFOSMESA_GLNORMALPOINTERLISTIBM, NFOSMESA_GLTEXCOORDPOINTERLISTIBM, NFOSMESA_GLVERTEXPOINTERLISTIBM, NFOSMESA_GLTBUFFERMASK3DFX, NFOSMESA_GLSAMPLEMASKEXT, NFOSMESA_GLSAMPLEPATTERNEXT, NFOSMESA_GLTEXTURECOLORMASKSGIS, NFOSMESA_GLIGLOOINTERFACESGIX, NFOSMESA_GLDELETEFENCESNV, NFOSMESA_GLGENFENCESNV, NFOSMESA_GLISFENCENV, NFOSMESA_GLTESTFENCENV, NFOSMESA_GLGETFENCEIVNV, NFOSMESA_GLFINISHFENCENV, NFOSMESA_GLSETFENCENV, NFOSMESA_GLMAPCONTROLPOINTSNV, NFOSMESA_GLMAPPARAMETERIVNV, NFOSMESA_GLMAPPARAMETERFVNV, NFOSMESA_GLGETMAPCONTROLPOINTSNV, NFOSMESA_GLGETMAPPARAMETERIVNV, NFOSMESA_GLGETMAPPARAMETERFVNV, NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV, NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV, NFOSMESA_GLEVALMAPSNV, NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV, NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV, NFOSMESA_GLAREPROGRAMSRESIDENTNV, NFOSMESA_GLBINDPROGRAMNV, NFOSMESA_GLDELETEPROGRAMSNV, NFOSMESA_GLEXECUTEPROGRAMNV, NFOSMESA_GLGENPROGRAMSNV, NFOSMESA_GLGETPROGRAMPARAMETERDVNV, NFOSMESA_GLGETPROGRAMPARAMETERFVNV, NFOSMESA_GLGETPROGRAMIVNV, NFOSMESA_GLGETPROGRAMSTRINGNV, NFOSMESA_GLGETTRACKMATRIXIVNV, NFOSMESA_GLGETVERTEXATTRIBDVNV, NFOSMESA_GLGETVERTEXATTRIBFVNV, NFOSMESA_GLGETVERTEXATTRIBIVNV, NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV, NFOSMESA_GLISPROGRAMNV, NFOSMESA_GLLOADPROGRAMNV, NFOSMESA_GLPROGRAMPARAMETER4DNV, NFOSMESA_GLPROGRAMPARAMETER4DVNV, NFOSMESA_GLPROGRAMPARAMETER4FNV, NFOSMESA_GLPROGRAMPARAMETER4FVNV, NFOSMESA_GLPROGRAMPARAMETERS4DVNV, NFOSMESA_GLPROGRAMPARAMETERS4FVNV, NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV, NFOSMESA_GLTRACKMATRIXNV, NFOSMESA_GLVERTEXATTRIBPOINTERNV, NFOSMESA_GLVERTEXATTRIB1DNV, NFOSMESA_GLVERTEXATTRIB1DVNV, NFOSMESA_GLVERTEXATTRIB1FNV, NFOSMESA_GLVERTEXATTRIB1FVNV, NFOSMESA_GLVERTEXATTRIB1SNV, NFOSMESA_GLVERTEXATTRIB1SVNV, NFOSMESA_GLVERTEXATTRIB2DNV, NFOSMESA_GLVERTEXATTRIB2DVNV, NFOSMESA_GLVERTEXATTRIB2FNV, NFOSMESA_GLVERTEXATTRIB2FVNV, NFOSMESA_GLVERTEXATTRIB2SNV, NFOSMESA_GLVERTEXATTRIB2SVNV, NFOSMESA_GLVERTEXATTRIB3DNV, NFOSMESA_GLVERTEXATTRIB3DVNV, NFOSMESA_GLVERTEXATTRIB3FNV, NFOSMESA_GLVERTEXATTRIB3FVNV, NFOSMESA_GLVERTEXATTRIB3SNV, NFOSMESA_GLVERTEXATTRIB3SVNV, NFOSMESA_GLVERTEXATTRIB4DNV, NFOSMESA_GLVERTEXATTRIB4DVNV, NFOSMESA_GLVERTEXATTRIB4FNV, NFOSMESA_GLVERTEXATTRIB4FVNV, NFOSMESA_GLVERTEXATTRIB4SNV, NFOSMESA_GLVERTEXATTRIB4SVNV, NFOSMESA_GLVERTEXATTRIB4UBNV, NFOSMESA_GLVERTEXATTRIB4UBVNV, NFOSMESA_GLVERTEXATTRIBS1DVNV, NFOSMESA_GLVERTEXATTRIBS1FVNV, NFOSMESA_GLVERTEXATTRIBS1SVNV, NFOSMESA_GLVERTEXATTRIBS2DVNV, NFOSMESA_GLVERTEXATTRIBS2FVNV, NFOSMESA_GLVERTEXATTRIBS2SVNV, NFOSMESA_GLVERTEXATTRIBS3DVNV, NFOSMESA_GLVERTEXATTRIBS3FVNV, NFOSMESA_GLVERTEXATTRIBS3SVNV, NFOSMESA_GLVERTEXATTRIBS4DVNV, NFOSMESA_GLVERTEXATTRIBS4FVNV, NFOSMESA_GLVERTEXATTRIBS4SVNV, NFOSMESA_GLVERTEXATTRIBS4UBVNV, NFOSMESA_GLTEXBUMPPARAMETERIVATI, NFOSMESA_GLTEXBUMPPARAMETERFVATI, NFOSMESA_GLGETTEXBUMPPARAMETERIVATI, NFOSMESA_GLGETTEXBUMPPARAMETERFVATI, NFOSMESA_GLGENFRAGMENTSHADERSATI, NFOSMESA_GLBINDFRAGMENTSHADERATI, NFOSMESA_GLDELETEFRAGMENTSHADERATI, NFOSMESA_GLBEGINFRAGMENTSHADERATI, NFOSMESA_GLENDFRAGMENTSHADERATI, NFOSMESA_GLPASSTEXCOORDATI, NFOSMESA_GLSAMPLEMAPATI, NFOSMESA_GLCOLORFRAGMENTOP1ATI, NFOSMESA_GLCOLORFRAGMENTOP2ATI, NFOSMESA_GLCOLORFRAGMENTOP3ATI, NFOSMESA_GLALPHAFRAGMENTOP1ATI, NFOSMESA_GLALPHAFRAGMENTOP2ATI, NFOSMESA_GLALPHAFRAGMENTOP3ATI, NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI, NFOSMESA_GLPNTRIANGLESIATI, NFOSMESA_GLPNTRIANGLESFATI, NFOSMESA_GLNEWOBJECTBUFFERATI, NFOSMESA_GLISOBJECTBUFFERATI, NFOSMESA_GLUPDATEOBJECTBUFFERATI, NFOSMESA_GLGETOBJECTBUFFERFVATI, NFOSMESA_GLGETOBJECTBUFFERIVATI, NFOSMESA_GLFREEOBJECTBUFFERATI, NFOSMESA_GLARRAYOBJECTATI, NFOSMESA_GLGETARRAYOBJECTFVATI, NFOSMESA_GLGETARRAYOBJECTIVATI, NFOSMESA_GLVARIANTARRAYOBJECTATI, NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI, NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI, NFOSMESA_GLBEGINVERTEXSHADEREXT, NFOSMESA_GLENDVERTEXSHADEREXT, NFOSMESA_GLBINDVERTEXSHADEREXT, NFOSMESA_GLGENVERTEXSHADERSEXT, NFOSMESA_GLDELETEVERTEXSHADEREXT, NFOSMESA_GLSHADEROP1EXT, NFOSMESA_GLSHADEROP2EXT, NFOSMESA_GLSHADEROP3EXT, NFOSMESA_GLSWIZZLEEXT, NFOSMESA_GLWRITEMASKEXT, NFOSMESA_GLINSERTCOMPONENTEXT, NFOSMESA_GLEXTRACTCOMPONENTEXT, NFOSMESA_GLGENSYMBOLSEXT, NFOSMESA_GLSETINVARIANTEXT, NFOSMESA_GLSETLOCALCONSTANTEXT, NFOSMESA_GLVARIANTBVEXT, NFOSMESA_GLVARIANTSVEXT, NFOSMESA_GLVARIANTIVEXT, NFOSMESA_GLVARIANTFVEXT, NFOSMESA_GLVARIANTDVEXT, NFOSMESA_GLVARIANTUBVEXT, NFOSMESA_GLVARIANTUSVEXT, NFOSMESA_GLVARIANTUIVEXT, NFOSMESA_GLVARIANTPOINTEREXT, NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT, NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT, NFOSMESA_GLBINDLIGHTPARAMETEREXT, NFOSMESA_GLBINDMATERIALPARAMETEREXT, NFOSMESA_GLBINDTEXGENPARAMETEREXT, NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT, NFOSMESA_GLBINDPARAMETEREXT, NFOSMESA_GLISVARIANTENABLEDEXT, NFOSMESA_GLGETVARIANTBOOLEANVEXT, NFOSMESA_GLGETVARIANTINTEGERVEXT, NFOSMESA_GLGETVARIANTFLOATVEXT, NFOSMESA_GLGETVARIANTPOINTERVEXT, NFOSMESA_GLGETINVARIANTBOOLEANVEXT, NFOSMESA_GLGETINVARIANTINTEGERVEXT, NFOSMESA_GLGETINVARIANTFLOATVEXT, NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT, NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT, NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT, NFOSMESA_GLVERTEXSTREAM1SATI, NFOSMESA_GLVERTEXSTREAM1SVATI, NFOSMESA_GLVERTEXSTREAM1IATI, NFOSMESA_GLVERTEXSTREAM1IVATI, NFOSMESA_GLVERTEXSTREAM1FATI, NFOSMESA_GLVERTEXSTREAM1FVATI, NFOSMESA_GLVERTEXSTREAM1DATI, NFOSMESA_GLVERTEXSTREAM1DVATI, NFOSMESA_GLVERTEXSTREAM2SATI, NFOSMESA_GLVERTEXSTREAM2SVATI, NFOSMESA_GLVERTEXSTREAM2IATI, NFOSMESA_GLVERTEXSTREAM2IVATI, NFOSMESA_GLVERTEXSTREAM2FATI, NFOSMESA_GLVERTEXSTREAM2FVATI, NFOSMESA_GLVERTEXSTREAM2DATI, NFOSMESA_GLVERTEXSTREAM2DVATI, NFOSMESA_GLVERTEXSTREAM3SATI, NFOSMESA_GLVERTEXSTREAM3SVATI, NFOSMESA_GLVERTEXSTREAM3IATI, NFOSMESA_GLVERTEXSTREAM3IVATI, NFOSMESA_GLVERTEXSTREAM3FATI, NFOSMESA_GLVERTEXSTREAM3FVATI, NFOSMESA_GLVERTEXSTREAM3DATI, NFOSMESA_GLVERTEXSTREAM3DVATI, NFOSMESA_GLVERTEXSTREAM4SATI, NFOSMESA_GLVERTEXSTREAM4SVATI, NFOSMESA_GLVERTEXSTREAM4IATI, NFOSMESA_GLVERTEXSTREAM4IVATI, NFOSMESA_GLVERTEXSTREAM4FATI, NFOSMESA_GLVERTEXSTREAM4FVATI, NFOSMESA_GLVERTEXSTREAM4DATI, NFOSMESA_GLVERTEXSTREAM4DVATI, NFOSMESA_GLNORMALSTREAM3BATI, NFOSMESA_GLNORMALSTREAM3BVATI, NFOSMESA_GLNORMALSTREAM3SATI, NFOSMESA_GLNORMALSTREAM3SVATI, NFOSMESA_GLNORMALSTREAM3IATI, NFOSMESA_GLNORMALSTREAM3IVATI, NFOSMESA_GLNORMALSTREAM3FATI, NFOSMESA_GLNORMALSTREAM3FVATI, NFOSMESA_GLNORMALSTREAM3DATI, NFOSMESA_GLNORMALSTREAM3DVATI, NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI, NFOSMESA_GLVERTEXBLENDENVIATI, NFOSMESA_GLVERTEXBLENDENVFATI, NFOSMESA_GLELEMENTPOINTERATI, NFOSMESA_GLDRAWELEMENTARRAYATI, NFOSMESA_GLDRAWRANGEELEMENTARRAYATI, NFOSMESA_GLDRAWMESHARRAYSSUN, NFOSMESA_GLGENOCCLUSIONQUERIESNV, NFOSMESA_GLDELETEOCCLUSIONQUERIESNV, NFOSMESA_GLISOCCLUSIONQUERYNV, NFOSMESA_GLBEGINOCCLUSIONQUERYNV, NFOSMESA_GLENDOCCLUSIONQUERYNV, NFOSMESA_GLGETOCCLUSIONQUERYIVNV, NFOSMESA_GLGETOCCLUSIONQUERYUIVNV, NFOSMESA_GLPOINTPARAMETERINV, NFOSMESA_GLPOINTPARAMETERIVNV, NFOSMESA_GLACTIVESTENCILFACEEXT, NFOSMESA_GLELEMENTPOINTERAPPLE, NFOSMESA_GLDRAWELEMENTARRAYAPPLE, NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE, NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE, NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE, NFOSMESA_GLGENFENCESAPPLE, NFOSMESA_GLDELETEFENCESAPPLE, NFOSMESA_GLSETFENCEAPPLE, NFOSMESA_GLISFENCEAPPLE, NFOSMESA_GLTESTFENCEAPPLE, NFOSMESA_GLFINISHFENCEAPPLE, NFOSMESA_GLTESTOBJECTAPPLE, NFOSMESA_GLFINISHOBJECTAPPLE, NFOSMESA_GLBINDVERTEXARRAYAPPLE, NFOSMESA_GLDELETEVERTEXARRAYSAPPLE, NFOSMESA_GLGENVERTEXARRAYSAPPLE, NFOSMESA_GLISVERTEXARRAYAPPLE, NFOSMESA_GLVERTEXARRAYRANGEAPPLE, NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE, NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE, NFOSMESA_GLDRAWBUFFERSATI, NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV, NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV, NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV, NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV, NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV, NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV, NFOSMESA_GLVERTEX2HNV, NFOSMESA_GLVERTEX2HVNV, NFOSMESA_GLVERTEX3HNV, NFOSMESA_GLVERTEX3HVNV, NFOSMESA_GLVERTEX4HNV, NFOSMESA_GLVERTEX4HVNV, NFOSMESA_GLNORMAL3HNV, NFOSMESA_GLNORMAL3HVNV, NFOSMESA_GLCOLOR3HNV, NFOSMESA_GLCOLOR3HVNV, NFOSMESA_GLCOLOR4HNV, NFOSMESA_GLCOLOR4HVNV, NFOSMESA_GLTEXCOORD1HNV, NFOSMESA_GLTEXCOORD1HVNV, NFOSMESA_GLTEXCOORD2HNV, NFOSMESA_GLTEXCOORD2HVNV, NFOSMESA_GLTEXCOORD3HNV, NFOSMESA_GLTEXCOORD3HVNV, NFOSMESA_GLTEXCOORD4HNV, NFOSMESA_GLTEXCOORD4HVNV, NFOSMESA_GLMULTITEXCOORD1HNV, NFOSMESA_GLMULTITEXCOORD1HVNV, NFOSMESA_GLMULTITEXCOORD2HNV, NFOSMESA_GLMULTITEXCOORD2HVNV, NFOSMESA_GLMULTITEXCOORD3HNV, NFOSMESA_GLMULTITEXCOORD3HVNV, NFOSMESA_GLMULTITEXCOORD4HNV, NFOSMESA_GLMULTITEXCOORD4HVNV, NFOSMESA_GLFOGCOORDHNV, NFOSMESA_GLFOGCOORDHVNV, NFOSMESA_GLSECONDARYCOLOR3HNV, NFOSMESA_GLSECONDARYCOLOR3HVNV, NFOSMESA_GLVERTEXWEIGHTHNV, NFOSMESA_GLVERTEXWEIGHTHVNV, NFOSMESA_GLVERTEXATTRIB1HNV, NFOSMESA_GLVERTEXATTRIB1HVNV, NFOSMESA_GLVERTEXATTRIB2HNV, NFOSMESA_GLVERTEXATTRIB2HVNV, NFOSMESA_GLVERTEXATTRIB3HNV, NFOSMESA_GLVERTEXATTRIB3HVNV, NFOSMESA_GLVERTEXATTRIB4HNV, NFOSMESA_GLVERTEXATTRIB4HVNV, NFOSMESA_GLVERTEXATTRIBS1HVNV, NFOSMESA_GLVERTEXATTRIBS2HVNV, NFOSMESA_GLVERTEXATTRIBS3HVNV, NFOSMESA_GLVERTEXATTRIBS4HVNV, NFOSMESA_GLPIXELDATARANGENV, NFOSMESA_GLFLUSHPIXELDATARANGENV, NFOSMESA_GLPRIMITIVERESTARTNV, NFOSMESA_GLPRIMITIVERESTARTINDEXNV, NFOSMESA_GLMAPOBJECTBUFFERATI, NFOSMESA_GLUNMAPOBJECTBUFFERATI, NFOSMESA_GLSTENCILOPSEPARATEATI, NFOSMESA_GLSTENCILFUNCSEPARATEATI, NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI, NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI, NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI, NFOSMESA_GLDEPTHBOUNDSEXT, NFOSMESA_GLBLENDEQUATIONSEPARATEEXT, /* Functions generated: 974 */ aranym-0.9.15/atari/nfosmesa/enum-misc.h000066400000000000000000000000651213346724500200660ustar00rootroot00000000000000 NFOSMESA_LENGLGETSTRING, NFOSMESA_PUTGLGETSTRING, aranym-0.9.15/atari/nfosmesa/enum-osmesa.h000066400000000000000000000006351213346724500204250ustar00rootroot00000000000000/* Generated by enum-gen.pl from /usr/local/include/GL/osmesa.h */ NFOSMESA_OSMESACREATECONTEXT, NFOSMESA_OSMESACREATECONTEXTEXT, NFOSMESA_OSMESADESTROYCONTEXT, NFOSMESA_OSMESAMAKECURRENT, NFOSMESA_OSMESAGETCURRENTCONTEXT, NFOSMESA_OSMESAPIXELSTORE, NFOSMESA_OSMESAGETINTEGERV, NFOSMESA_OSMESAGETDEPTHBUFFER, NFOSMESA_OSMESAGETCOLORBUFFER, NFOSMESA_OSMESAGETPROCADDRESS, /* Functions generated: 10 */ aranym-0.9.15/atari/nfosmesa/lib-gen.pl000077500000000000000000000051751213346724500177040ustar00rootroot00000000000000#!/usr/bin/perl # Read include file, and generate NF function calls $file = @ARGV[0]; if ( ! defined(open(FILE, $file)) ) { warn "Couldn't open $file: $!\n"; exit; } print "/* Generated by lib-gen.pl from $file */\n\n"; #print "\t.text\n"; #print "\t.even\n"; $linecount=0; while ($ligne = ) { if ($ligne =~ /^GLAPI/ ) { while (! ($ligne =~ /\);/)) { chomp($ligne); $ligne .= " " . ; } $ligne =~ s/\t//g; $ligne =~ s/\n//g; $ligne =~ s/ +/ /g; # Add missing parameters (for glext.h) $lettre = 'a'; while ($ligne =~ /[,\( ] *GL\w+\** *\**,/ ) { $ligne =~ s/([,\( ] *GL\w+\** *\**),/$1 $lettre,/; $lettre++; } while ($ligne =~ /[,\( ] *GL\w+\** *\**\)/ ) { $ligne =~ s/([,\( ] *GL\w+\** *\**)\)/$1 $lettre\)/; $lettre++; } while ($ligne =~ /[,\( ] *GL\w+\** *const *\*,/ ) { $ligne =~ s/([,\( ] *GL\w+\** *const *\*),/$1 $lettre,/; $lettre++; } if ($ligne =~ /^GLAPI *(\w+).* (GL)*APIENTRY *(\w+) *\(.*/) { $return_type = $1 ; $function_name = "NFOSMESA_" . $3 ; $copy_function_name = $3; } else { $return_type = "" ; $function_name = "" ; $copy_function_name = ""; } $prototype = $ligne; $prototype =~ s/GLAPI +//; $prototype =~ s/(GL)APIENTRY +//; $prototype =~ s/\;.*//; # Remove start of line $ligne =~ s/^GLAPI.*(GL)*APIENTRY +// ; $ligne =~ s/\;.*// ; $ligne =~ s/.*(\(.*\))/$1/ ; # Remove parameter types if ( $ligne =~ /\( *(void) *\)/ ) { # Remove void list of parameters $ligne =~ s/\(.*\)/NULL/; } else { # Remove parameters type while ( $ligne =~ /[,\(] *((const)* *(\w)+ *\**) +\**((\w)+) *[,\)]/ ) { $ligne =~ s/$1/$2/; } $ligne =~ s/\*//g; $ligne =~ s/ +//g; $ligne =~ s/\((.*)\)/$1/; $ligne = "," . $ligne; } chomp($ligne); $function_name =~ tr/a-z/A-Z/; # Keep first parameter while ( $ligne =~ /,.*,(\w+)/) { $ligne =~ s/,$1$//; } $ligne =~ s/,/&/; if ($prototype !~ /^void \w/) { $return_type = "(" . $return_type . ")"; } else { $return_type = ""; } $ligne = $return_type . "(*HostCall_p)(" . $function_name .",cur_context," . $ligne .");"; if ( $prototype !~ /^void \w/ ) { $ligne = "return " . $ligne; } print "$prototype\n"; print "{\n"; print "\t$ligne\n"; print "}\n\n"; # print "\t.globl\t_$copy_function_name\n"; # print "_$copy_function_name:\n"; # print "\tpea\tsp@(4)\n"; # print "\tmovel\t_cur_context,sp@-\n"; # print "\tpea\t$function_name:w\n"; # print "\tmovel\t_HostCall_p,a0\n"; # print "\tjbsr\ta0@\n"; # print "\tlea\tsp@(12),sp\n"; # print "\trts\n"; $linecount++; } } close(FILE); print "/* Functions generated: $linecount */\n"; aranym-0.9.15/atari/nfosmesa/lib-gl.c000066400000000000000000001623341213346724500173420ustar00rootroot00000000000000/* OSMesa LDG loader Copyright (C) 2004 Patrice Mandin This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /*--- Includes ---*/ #include #include "lib-osmesa.h" #include "nfosmesa_nfapi.h" /* Generated by lib-gen.pl from /usr/local/include/GL/gl.h */ void glClearIndex( GLfloat c ) { (*HostCall_p)(NFOSMESA_GLCLEARINDEX,cur_context,&c); } void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { (*HostCall_p)(NFOSMESA_GLCLEARCOLOR,cur_context,&red); } void glClear( GLbitfield mask ) { (*HostCall_p)(NFOSMESA_GLCLEAR,cur_context,&mask); } void glIndexMask( GLuint mask ) { (*HostCall_p)(NFOSMESA_GLINDEXMASK,cur_context,&mask); } void glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha ) { (*HostCall_p)(NFOSMESA_GLCOLORMASK,cur_context,&red); } void glAlphaFunc( GLenum func, GLclampf ref ) { (*HostCall_p)(NFOSMESA_GLALPHAFUNC,cur_context,&func); } void glBlendFunc( GLenum sfactor, GLenum dfactor ) { (*HostCall_p)(NFOSMESA_GLBLENDFUNC,cur_context,&sfactor); } void glLogicOp( GLenum opcode ) { (*HostCall_p)(NFOSMESA_GLLOGICOP,cur_context,&opcode); } void glCullFace( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLCULLFACE,cur_context,&mode); } void glFrontFace( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLFRONTFACE,cur_context,&mode); } void glPointSize( GLfloat size ) { (*HostCall_p)(NFOSMESA_GLPOINTSIZE,cur_context,&size); } void glLineWidth( GLfloat width ) { (*HostCall_p)(NFOSMESA_GLLINEWIDTH,cur_context,&width); } void glLineStipple( GLint factor, GLushort pattern ) { (*HostCall_p)(NFOSMESA_GLLINESTIPPLE,cur_context,&factor); } void glPolygonMode( GLenum face, GLenum mode ) { (*HostCall_p)(NFOSMESA_GLPOLYGONMODE,cur_context,&face); } void glPolygonOffset( GLfloat factor, GLfloat units ) { (*HostCall_p)(NFOSMESA_GLPOLYGONOFFSET,cur_context,&factor); } void glPolygonStipple( const GLubyte *mask ) { (*HostCall_p)(NFOSMESA_GLPOLYGONSTIPPLE,cur_context,&mask); } void glGetPolygonStipple( GLubyte *mask ) { (*HostCall_p)(NFOSMESA_GLGETPOLYGONSTIPPLE,cur_context,&mask); } void glEdgeFlag( GLboolean flag ) { (*HostCall_p)(NFOSMESA_GLEDGEFLAG,cur_context,&flag); } void glEdgeFlagv( const GLboolean *flag ) { (*HostCall_p)(NFOSMESA_GLEDGEFLAGV,cur_context,&flag); } void glScissor( GLint x, GLint y, GLsizei width, GLsizei height) { (*HostCall_p)(NFOSMESA_GLSCISSOR,cur_context,&x); } void glClipPlane( GLenum plane, const GLdouble *equation ) { (*HostCall_p)(NFOSMESA_GLCLIPPLANE,cur_context,&plane); } void glGetClipPlane( GLenum plane, GLdouble *equation ) { (*HostCall_p)(NFOSMESA_GLGETCLIPPLANE,cur_context,&plane); } void glDrawBuffer( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLDRAWBUFFER,cur_context,&mode); } void glReadBuffer( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLREADBUFFER,cur_context,&mode); } void glEnable( GLenum cap ) { (*HostCall_p)(NFOSMESA_GLENABLE,cur_context,&cap); } void glDisable( GLenum cap ) { (*HostCall_p)(NFOSMESA_GLDISABLE,cur_context,&cap); } GLboolean glIsEnabled( GLenum cap ) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISENABLED,cur_context,&cap); } void glEnableClientState( GLenum cap ) { (*HostCall_p)(NFOSMESA_GLENABLECLIENTSTATE,cur_context,&cap); } void glDisableClientState( GLenum cap ) { (*HostCall_p)(NFOSMESA_GLDISABLECLIENTSTATE,cur_context,&cap); } void glGetBooleanv( GLenum pname, GLboolean *params ) { (*HostCall_p)(NFOSMESA_GLGETBOOLEANV,cur_context,&pname); } void glGetDoublev( GLenum pname, GLdouble *params ) { (*HostCall_p)(NFOSMESA_GLGETDOUBLEV,cur_context,&pname); } void glGetFloatv( GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETFLOATV,cur_context,&pname); } void glGetIntegerv( GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETINTEGERV,cur_context,&pname); } void glPushAttrib( GLbitfield mask ) { (*HostCall_p)(NFOSMESA_GLPUSHATTRIB,cur_context,&mask); } void glPopAttrib( void ) { (*HostCall_p)(NFOSMESA_GLPOPATTRIB,cur_context,NULL); } void glPushClientAttrib( GLbitfield mask ) { (*HostCall_p)(NFOSMESA_GLPUSHCLIENTATTRIB,cur_context,&mask); } void glPopClientAttrib( void ) { (*HostCall_p)(NFOSMESA_GLPOPCLIENTATTRIB,cur_context,NULL); } GLint glRenderMode( GLenum mode ) { return (GLint)(*HostCall_p)(NFOSMESA_GLRENDERMODE,cur_context,&mode); } GLenum glGetError( void ) { return (GLenum)(*HostCall_p)(NFOSMESA_GLGETERROR,cur_context,NULL); } /* const GLubyte* glGetString( GLenum name ) { return (const GLubyte*)(*HostCall_p)(NFOSMESA_GLGETSTRING,cur_context,&name); } */ void glFinish( void ) { (*HostCall_p)(NFOSMESA_GLFINISH,cur_context,NULL); } void glFlush( void ) { (*HostCall_p)(NFOSMESA_GLFLUSH,cur_context,NULL); } void glHint( GLenum target, GLenum mode ) { (*HostCall_p)(NFOSMESA_GLHINT,cur_context,&target); } void glClearDepth( GLclampd depth ) { (*HostCall_p)(NFOSMESA_GLCLEARDEPTH,cur_context,&depth); } void glDepthFunc( GLenum func ) { (*HostCall_p)(NFOSMESA_GLDEPTHFUNC,cur_context,&func); } void glDepthMask( GLboolean flag ) { (*HostCall_p)(NFOSMESA_GLDEPTHMASK,cur_context,&flag); } void glDepthRange( GLclampd near_val, GLclampd far_val ) { (*HostCall_p)(NFOSMESA_GLDEPTHRANGE,cur_context,&near_val); } void glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) { (*HostCall_p)(NFOSMESA_GLCLEARACCUM,cur_context,&red); } void glAccum( GLenum op, GLfloat value ) { (*HostCall_p)(NFOSMESA_GLACCUM,cur_context,&op); } void glMatrixMode( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLMATRIXMODE,cur_context,&mode); } void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) { (*HostCall_p)(NFOSMESA_GLORTHO,cur_context,&left); } void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val ) { (*HostCall_p)(NFOSMESA_GLFRUSTUM,cur_context,&left); } void glViewport( GLint x, GLint y, GLsizei width, GLsizei height ) { (*HostCall_p)(NFOSMESA_GLVIEWPORT,cur_context,&x); } void glPushMatrix( void ) { (*HostCall_p)(NFOSMESA_GLPUSHMATRIX,cur_context,NULL); } void glPopMatrix( void ) { (*HostCall_p)(NFOSMESA_GLPOPMATRIX,cur_context,NULL); } void glLoadIdentity( void ) { (*HostCall_p)(NFOSMESA_GLLOADIDENTITY,cur_context,NULL); } void glLoadMatrixd( const GLdouble *m ) { (*HostCall_p)(NFOSMESA_GLLOADMATRIXD,cur_context,&m); } void glLoadMatrixf( const GLfloat *m ) { (*HostCall_p)(NFOSMESA_GLLOADMATRIXF,cur_context,&m); } void glMultMatrixd( const GLdouble *m ) { (*HostCall_p)(NFOSMESA_GLMULTMATRIXD,cur_context,&m); } void glMultMatrixf( const GLfloat *m ) { (*HostCall_p)(NFOSMESA_GLMULTMATRIXF,cur_context,&m); } void glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z ) { (*HostCall_p)(NFOSMESA_GLROTATED,cur_context,&angle); } void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z ) { (*HostCall_p)(NFOSMESA_GLROTATEF,cur_context,&angle); } void glScaled( GLdouble x, GLdouble y, GLdouble z ) { (*HostCall_p)(NFOSMESA_GLSCALED,cur_context,&x); } void glScalef( GLfloat x, GLfloat y, GLfloat z ) { (*HostCall_p)(NFOSMESA_GLSCALEF,cur_context,&x); } void glTranslated( GLdouble x, GLdouble y, GLdouble z ) { (*HostCall_p)(NFOSMESA_GLTRANSLATED,cur_context,&x); } void glTranslatef( GLfloat x, GLfloat y, GLfloat z ) { (*HostCall_p)(NFOSMESA_GLTRANSLATEF,cur_context,&x); } GLboolean glIsList( GLuint list ) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISLIST,cur_context,&list); } void glDeleteLists( GLuint list, GLsizei range ) { (*HostCall_p)(NFOSMESA_GLDELETELISTS,cur_context,&list); } GLuint glGenLists( GLsizei range ) { return (GLuint)(*HostCall_p)(NFOSMESA_GLGENLISTS,cur_context,&range); } void glNewList( GLuint list, GLenum mode ) { (*HostCall_p)(NFOSMESA_GLNEWLIST,cur_context,&list); } void glEndList( void ) { (*HostCall_p)(NFOSMESA_GLENDLIST,cur_context,NULL); } void glCallList( GLuint list ) { (*HostCall_p)(NFOSMESA_GLCALLLIST,cur_context,&list); } void glCallLists( GLsizei n, GLenum type, const GLvoid *lists ) { (*HostCall_p)(NFOSMESA_GLCALLLISTS,cur_context,&n); } void glListBase( GLuint base ) { (*HostCall_p)(NFOSMESA_GLLISTBASE,cur_context,&base); } void glBegin( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLBEGIN,cur_context,&mode); } void glEnd( void ) { (*HostCall_p)(NFOSMESA_GLEND,cur_context,NULL); } void glVertex2d( GLdouble x, GLdouble y ) { (*HostCall_p)(NFOSMESA_GLVERTEX2D,cur_context,&x); } void glVertex2f( GLfloat x, GLfloat y ) { (*HostCall_p)(NFOSMESA_GLVERTEX2F,cur_context,&x); } void glVertex2i( GLint x, GLint y ) { (*HostCall_p)(NFOSMESA_GLVERTEX2I,cur_context,&x); } void glVertex2s( GLshort x, GLshort y ) { (*HostCall_p)(NFOSMESA_GLVERTEX2S,cur_context,&x); } void glVertex3d( GLdouble x, GLdouble y, GLdouble z ) { (*HostCall_p)(NFOSMESA_GLVERTEX3D,cur_context,&x); } void glVertex3f( GLfloat x, GLfloat y, GLfloat z ) { (*HostCall_p)(NFOSMESA_GLVERTEX3F,cur_context,&x); } void glVertex3i( GLint x, GLint y, GLint z ) { (*HostCall_p)(NFOSMESA_GLVERTEX3I,cur_context,&x); } void glVertex3s( GLshort x, GLshort y, GLshort z ) { (*HostCall_p)(NFOSMESA_GLVERTEX3S,cur_context,&x); } void glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) { (*HostCall_p)(NFOSMESA_GLVERTEX4D,cur_context,&x); } void glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { (*HostCall_p)(NFOSMESA_GLVERTEX4F,cur_context,&x); } void glVertex4i( GLint x, GLint y, GLint z, GLint w ) { (*HostCall_p)(NFOSMESA_GLVERTEX4I,cur_context,&x); } void glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w ) { (*HostCall_p)(NFOSMESA_GLVERTEX4S,cur_context,&x); } void glVertex2dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX2DV,cur_context,&v); } void glVertex2fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX2FV,cur_context,&v); } void glVertex2iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX2IV,cur_context,&v); } void glVertex2sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX2SV,cur_context,&v); } void glVertex3dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX3DV,cur_context,&v); } void glVertex3fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX3FV,cur_context,&v); } void glVertex3iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX3IV,cur_context,&v); } void glVertex3sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX3SV,cur_context,&v); } void glVertex4dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX4DV,cur_context,&v); } void glVertex4fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX4FV,cur_context,&v); } void glVertex4iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX4IV,cur_context,&v); } void glVertex4sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLVERTEX4SV,cur_context,&v); } void glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz ) { (*HostCall_p)(NFOSMESA_GLNORMAL3B,cur_context,&nx); } void glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz ) { (*HostCall_p)(NFOSMESA_GLNORMAL3D,cur_context,&nx); } void glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz ) { (*HostCall_p)(NFOSMESA_GLNORMAL3F,cur_context,&nx); } void glNormal3i( GLint nx, GLint ny, GLint nz ) { (*HostCall_p)(NFOSMESA_GLNORMAL3I,cur_context,&nx); } void glNormal3s( GLshort nx, GLshort ny, GLshort nz ) { (*HostCall_p)(NFOSMESA_GLNORMAL3S,cur_context,&nx); } void glNormal3bv( const GLbyte *v ) { (*HostCall_p)(NFOSMESA_GLNORMAL3BV,cur_context,&v); } void glNormal3dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLNORMAL3DV,cur_context,&v); } void glNormal3fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLNORMAL3FV,cur_context,&v); } void glNormal3iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLNORMAL3IV,cur_context,&v); } void glNormal3sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLNORMAL3SV,cur_context,&v); } void glIndexd( GLdouble c ) { (*HostCall_p)(NFOSMESA_GLINDEXD,cur_context,&c); } void glIndexf( GLfloat c ) { (*HostCall_p)(NFOSMESA_GLINDEXF,cur_context,&c); } void glIndexi( GLint c ) { (*HostCall_p)(NFOSMESA_GLINDEXI,cur_context,&c); } void glIndexs( GLshort c ) { (*HostCall_p)(NFOSMESA_GLINDEXS,cur_context,&c); } void glIndexub( GLubyte c ) { (*HostCall_p)(NFOSMESA_GLINDEXUB,cur_context,&c); } void glIndexdv( const GLdouble *c ) { (*HostCall_p)(NFOSMESA_GLINDEXDV,cur_context,&c); } void glIndexfv( const GLfloat *c ) { (*HostCall_p)(NFOSMESA_GLINDEXFV,cur_context,&c); } void glIndexiv( const GLint *c ) { (*HostCall_p)(NFOSMESA_GLINDEXIV,cur_context,&c); } void glIndexsv( const GLshort *c ) { (*HostCall_p)(NFOSMESA_GLINDEXSV,cur_context,&c); } void glIndexubv( const GLubyte *c ) { (*HostCall_p)(NFOSMESA_GLINDEXUBV,cur_context,&c); } void glColor3b( GLbyte red, GLbyte green, GLbyte blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3B,cur_context,&red); } void glColor3d( GLdouble red, GLdouble green, GLdouble blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3D,cur_context,&red); } void glColor3f( GLfloat red, GLfloat green, GLfloat blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3F,cur_context,&red); } void glColor3i( GLint red, GLint green, GLint blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3I,cur_context,&red); } void glColor3s( GLshort red, GLshort green, GLshort blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3S,cur_context,&red); } void glColor3ub( GLubyte red, GLubyte green, GLubyte blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3UB,cur_context,&red); } void glColor3ui( GLuint red, GLuint green, GLuint blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3UI,cur_context,&red); } void glColor3us( GLushort red, GLushort green, GLushort blue ) { (*HostCall_p)(NFOSMESA_GLCOLOR3US,cur_context,&red); } void glColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4B,cur_context,&red); } void glColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4D,cur_context,&red); } void glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4F,cur_context,&red); } void glColor4i( GLint red, GLint green, GLint blue, GLint alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4I,cur_context,&red); } void glColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4S,cur_context,&red); } void glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4UB,cur_context,&red); } void glColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4UI,cur_context,&red); } void glColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha ) { (*HostCall_p)(NFOSMESA_GLCOLOR4US,cur_context,&red); } void glColor3bv( const GLbyte *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3BV,cur_context,&v); } void glColor3dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3DV,cur_context,&v); } void glColor3fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3FV,cur_context,&v); } void glColor3iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3IV,cur_context,&v); } void glColor3sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3SV,cur_context,&v); } void glColor3ubv( const GLubyte *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3UBV,cur_context,&v); } void glColor3uiv( const GLuint *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3UIV,cur_context,&v); } void glColor3usv( const GLushort *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR3USV,cur_context,&v); } void glColor4bv( const GLbyte *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4BV,cur_context,&v); } void glColor4dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4DV,cur_context,&v); } void glColor4fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4FV,cur_context,&v); } void glColor4iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4IV,cur_context,&v); } void glColor4sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4SV,cur_context,&v); } void glColor4ubv( const GLubyte *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4UBV,cur_context,&v); } void glColor4uiv( const GLuint *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4UIV,cur_context,&v); } void glColor4usv( const GLushort *v ) { (*HostCall_p)(NFOSMESA_GLCOLOR4USV,cur_context,&v); } void glTexCoord1d( GLdouble s ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1D,cur_context,&s); } void glTexCoord1f( GLfloat s ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1F,cur_context,&s); } void glTexCoord1i( GLint s ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1I,cur_context,&s); } void glTexCoord1s( GLshort s ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1S,cur_context,&s); } void glTexCoord2d( GLdouble s, GLdouble t ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2D,cur_context,&s); } void glTexCoord2f( GLfloat s, GLfloat t ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2F,cur_context,&s); } void glTexCoord2i( GLint s, GLint t ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2I,cur_context,&s); } void glTexCoord2s( GLshort s, GLshort t ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2S,cur_context,&s); } void glTexCoord3d( GLdouble s, GLdouble t, GLdouble r ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3D,cur_context,&s); } void glTexCoord3f( GLfloat s, GLfloat t, GLfloat r ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3F,cur_context,&s); } void glTexCoord3i( GLint s, GLint t, GLint r ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3I,cur_context,&s); } void glTexCoord3s( GLshort s, GLshort t, GLshort r ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3S,cur_context,&s); } void glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4D,cur_context,&s); } void glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4F,cur_context,&s); } void glTexCoord4i( GLint s, GLint t, GLint r, GLint q ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4I,cur_context,&s); } void glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4S,cur_context,&s); } void glTexCoord1dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1DV,cur_context,&v); } void glTexCoord1fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1FV,cur_context,&v); } void glTexCoord1iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1IV,cur_context,&v); } void glTexCoord1sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1SV,cur_context,&v); } void glTexCoord2dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2DV,cur_context,&v); } void glTexCoord2fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FV,cur_context,&v); } void glTexCoord2iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2IV,cur_context,&v); } void glTexCoord2sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2SV,cur_context,&v); } void glTexCoord3dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3DV,cur_context,&v); } void glTexCoord3fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3FV,cur_context,&v); } void glTexCoord3iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3IV,cur_context,&v); } void glTexCoord3sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3SV,cur_context,&v); } void glTexCoord4dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4DV,cur_context,&v); } void glTexCoord4fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4FV,cur_context,&v); } void glTexCoord4iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4IV,cur_context,&v); } void glTexCoord4sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4SV,cur_context,&v); } void glRasterPos2d( GLdouble x, GLdouble y ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2D,cur_context,&x); } void glRasterPos2f( GLfloat x, GLfloat y ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2F,cur_context,&x); } void glRasterPos2i( GLint x, GLint y ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2I,cur_context,&x); } void glRasterPos2s( GLshort x, GLshort y ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2S,cur_context,&x); } void glRasterPos3d( GLdouble x, GLdouble y, GLdouble z ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3D,cur_context,&x); } void glRasterPos3f( GLfloat x, GLfloat y, GLfloat z ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3F,cur_context,&x); } void glRasterPos3i( GLint x, GLint y, GLint z ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3I,cur_context,&x); } void glRasterPos3s( GLshort x, GLshort y, GLshort z ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3S,cur_context,&x); } void glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4D,cur_context,&x); } void glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4F,cur_context,&x); } void glRasterPos4i( GLint x, GLint y, GLint z, GLint w ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4I,cur_context,&x); } void glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4S,cur_context,&x); } void glRasterPos2dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2DV,cur_context,&v); } void glRasterPos2fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2FV,cur_context,&v); } void glRasterPos2iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2IV,cur_context,&v); } void glRasterPos2sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS2SV,cur_context,&v); } void glRasterPos3dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3DV,cur_context,&v); } void glRasterPos3fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3FV,cur_context,&v); } void glRasterPos3iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3IV,cur_context,&v); } void glRasterPos3sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS3SV,cur_context,&v); } void glRasterPos4dv( const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4DV,cur_context,&v); } void glRasterPos4fv( const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4FV,cur_context,&v); } void glRasterPos4iv( const GLint *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4IV,cur_context,&v); } void glRasterPos4sv( const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLRASTERPOS4SV,cur_context,&v); } void glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 ) { (*HostCall_p)(NFOSMESA_GLRECTD,cur_context,&x1); } void glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 ) { (*HostCall_p)(NFOSMESA_GLRECTF,cur_context,&x1); } void glRecti( GLint x1, GLint y1, GLint x2, GLint y2 ) { (*HostCall_p)(NFOSMESA_GLRECTI,cur_context,&x1); } void glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 ) { (*HostCall_p)(NFOSMESA_GLRECTS,cur_context,&x1); } void glRectdv( const GLdouble *v1, const GLdouble *v2 ) { (*HostCall_p)(NFOSMESA_GLRECTDV,cur_context,&v1); } void glRectfv( const GLfloat *v1, const GLfloat *v2 ) { (*HostCall_p)(NFOSMESA_GLRECTFV,cur_context,&v1); } void glRectiv( const GLint *v1, const GLint *v2 ) { (*HostCall_p)(NFOSMESA_GLRECTIV,cur_context,&v1); } void glRectsv( const GLshort *v1, const GLshort *v2 ) { (*HostCall_p)(NFOSMESA_GLRECTSV,cur_context,&v1); } void glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLVERTEXPOINTER,cur_context,&size); } void glNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLNORMALPOINTER,cur_context,&type); } void glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLCOLORPOINTER,cur_context,&size); } void glIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLINDEXPOINTER,cur_context,&type); } void glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLTEXCOORDPOINTER,cur_context,&size); } void glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr ) { (*HostCall_p)(NFOSMESA_GLEDGEFLAGPOINTER,cur_context,&stride); } void glGetPointerv( GLenum pname, GLvoid **params ) { (*HostCall_p)(NFOSMESA_GLGETPOINTERV,cur_context,&pname); } void glArrayElement( GLint i ) { (*HostCall_p)(NFOSMESA_GLARRAYELEMENT,cur_context,&i); } void glDrawArrays( GLenum mode, GLint first, GLsizei count ) { (*HostCall_p)(NFOSMESA_GLDRAWARRAYS,cur_context,&mode); } void glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices ) { (*HostCall_p)(NFOSMESA_GLDRAWELEMENTS,cur_context,&mode); } void glInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer ) { (*HostCall_p)(NFOSMESA_GLINTERLEAVEDARRAYS,cur_context,&format); } void glShadeModel( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLSHADEMODEL,cur_context,&mode); } void glLightf( GLenum light, GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLLIGHTF,cur_context,&light); } void glLighti( GLenum light, GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLLIGHTI,cur_context,&light); } void glLightfv( GLenum light, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLLIGHTFV,cur_context,&light); } void glLightiv( GLenum light, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLLIGHTIV,cur_context,&light); } void glGetLightfv( GLenum light, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETLIGHTFV,cur_context,&light); } void glGetLightiv( GLenum light, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETLIGHTIV,cur_context,&light); } void glLightModelf( GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLLIGHTMODELF,cur_context,&pname); } void glLightModeli( GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLLIGHTMODELI,cur_context,&pname); } void glLightModelfv( GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLLIGHTMODELFV,cur_context,&pname); } void glLightModeliv( GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLLIGHTMODELIV,cur_context,&pname); } void glMaterialf( GLenum face, GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLMATERIALF,cur_context,&face); } void glMateriali( GLenum face, GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLMATERIALI,cur_context,&face); } void glMaterialfv( GLenum face, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLMATERIALFV,cur_context,&face); } void glMaterialiv( GLenum face, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLMATERIALIV,cur_context,&face); } void glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETMATERIALFV,cur_context,&face); } void glGetMaterialiv( GLenum face, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETMATERIALIV,cur_context,&face); } void glColorMaterial( GLenum face, GLenum mode ) { (*HostCall_p)(NFOSMESA_GLCOLORMATERIAL,cur_context,&face); } void glPixelZoom( GLfloat xfactor, GLfloat yfactor ) { (*HostCall_p)(NFOSMESA_GLPIXELZOOM,cur_context,&xfactor); } void glPixelStoref( GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLPIXELSTOREF,cur_context,&pname); } void glPixelStorei( GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLPIXELSTOREI,cur_context,&pname); } void glPixelTransferf( GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFERF,cur_context,&pname); } void glPixelTransferi( GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFERI,cur_context,&pname); } void glPixelMapfv( GLenum map, GLsizei mapsize, const GLfloat *values ) { (*HostCall_p)(NFOSMESA_GLPIXELMAPFV,cur_context,&map); } void glPixelMapuiv( GLenum map, GLsizei mapsize, const GLuint *values ) { (*HostCall_p)(NFOSMESA_GLPIXELMAPUIV,cur_context,&map); } void glPixelMapusv( GLenum map, GLsizei mapsize, const GLushort *values ) { (*HostCall_p)(NFOSMESA_GLPIXELMAPUSV,cur_context,&map); } void glGetPixelMapfv( GLenum map, GLfloat *values ) { (*HostCall_p)(NFOSMESA_GLGETPIXELMAPFV,cur_context,&map); } void glGetPixelMapuiv( GLenum map, GLuint *values ) { (*HostCall_p)(NFOSMESA_GLGETPIXELMAPUIV,cur_context,&map); } void glGetPixelMapusv( GLenum map, GLushort *values ) { (*HostCall_p)(NFOSMESA_GLGETPIXELMAPUSV,cur_context,&map); } void glBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap ) { (*HostCall_p)(NFOSMESA_GLBITMAP,cur_context,&width); } void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLREADPIXELS,cur_context,&x); } void glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLDRAWPIXELS,cur_context,&width); } void glCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type ) { (*HostCall_p)(NFOSMESA_GLCOPYPIXELS,cur_context,&x); } void glStencilFunc( GLenum func, GLint ref, GLuint mask ) { (*HostCall_p)(NFOSMESA_GLSTENCILFUNC,cur_context,&func); } void glStencilMask( GLuint mask ) { (*HostCall_p)(NFOSMESA_GLSTENCILMASK,cur_context,&mask); } void glStencilOp( GLenum fail, GLenum zfail, GLenum zpass ) { (*HostCall_p)(NFOSMESA_GLSTENCILOP,cur_context,&fail); } void glClearStencil( GLint s ) { (*HostCall_p)(NFOSMESA_GLCLEARSTENCIL,cur_context,&s); } void glTexGend( GLenum coord, GLenum pname, GLdouble param ) { (*HostCall_p)(NFOSMESA_GLTEXGEND,cur_context,&coord); } void glTexGenf( GLenum coord, GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLTEXGENF,cur_context,&coord); } void glTexGeni( GLenum coord, GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLTEXGENI,cur_context,&coord); } void glTexGendv( GLenum coord, GLenum pname, const GLdouble *params ) { (*HostCall_p)(NFOSMESA_GLTEXGENDV,cur_context,&coord); } void glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLTEXGENFV,cur_context,&coord); } void glTexGeniv( GLenum coord, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLTEXGENIV,cur_context,&coord); } void glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXGENDV,cur_context,&coord); } void glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXGENFV,cur_context,&coord); } void glGetTexGeniv( GLenum coord, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXGENIV,cur_context,&coord); } void glTexEnvf( GLenum target, GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLTEXENVF,cur_context,&target); } void glTexEnvi( GLenum target, GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLTEXENVI,cur_context,&target); } void glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLTEXENVFV,cur_context,&target); } void glTexEnviv( GLenum target, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLTEXENVIV,cur_context,&target); } void glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXENVFV,cur_context,&target); } void glGetTexEnviv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXENVIV,cur_context,&target); } void glTexParameterf( GLenum target, GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLTEXPARAMETERF,cur_context,&target); } void glTexParameteri( GLenum target, GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLTEXPARAMETERI,cur_context,&target); } void glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLTEXPARAMETERFV,cur_context,&target); } void glTexParameteriv( GLenum target, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLTEXPARAMETERIV,cur_context,&target); } void glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params) { (*HostCall_p)(NFOSMESA_GLGETTEXPARAMETERFV,cur_context,&target); } void glGetTexParameteriv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXPARAMETERIV,cur_context,&target); } void glGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXLEVELPARAMETERFV,cur_context,&target); } void glGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETTEXLEVELPARAMETERIV,cur_context,&target); } void glTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE1D,cur_context,&target); } void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE2D,cur_context,&target); } void glGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLGETTEXIMAGE,cur_context,&target); } void glGenTextures( GLsizei n, GLuint *textures ) { (*HostCall_p)(NFOSMESA_GLGENTEXTURES,cur_context,&n); } void glDeleteTextures( GLsizei n, const GLuint *textures) { (*HostCall_p)(NFOSMESA_GLDELETETEXTURES,cur_context,&n); } void glBindTexture( GLenum target, GLuint texture ) { (*HostCall_p)(NFOSMESA_GLBINDTEXTURE,cur_context,&target); } void glPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities ) { (*HostCall_p)(NFOSMESA_GLPRIORITIZETEXTURES,cur_context,&n); } GLboolean glAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences ) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLARETEXTURESRESIDENT,cur_context,&n); } GLboolean glIsTexture( GLuint texture ) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISTEXTURE,cur_context,&texture); } void glTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE1D,cur_context,&target); } void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE2D,cur_context,&target); } void glCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border ) { (*HostCall_p)(NFOSMESA_GLCOPYTEXIMAGE1D,cur_context,&target); } void glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) { (*HostCall_p)(NFOSMESA_GLCOPYTEXIMAGE2D,cur_context,&target); } void glCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width ) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE1D,cur_context,&target); } void glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE2D,cur_context,&target); } void glMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points ) { (*HostCall_p)(NFOSMESA_GLMAP1D,cur_context,&target); } void glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points ) { (*HostCall_p)(NFOSMESA_GLMAP1F,cur_context,&target); } void glMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points ) { (*HostCall_p)(NFOSMESA_GLMAP2D,cur_context,&target); } void glMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points ) { (*HostCall_p)(NFOSMESA_GLMAP2F,cur_context,&target); } void glGetMapdv( GLenum target, GLenum query, GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLGETMAPDV,cur_context,&target); } void glGetMapfv( GLenum target, GLenum query, GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLGETMAPFV,cur_context,&target); } void glGetMapiv( GLenum target, GLenum query, GLint *v ) { (*HostCall_p)(NFOSMESA_GLGETMAPIV,cur_context,&target); } void glEvalCoord1d( GLdouble u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD1D,cur_context,&u); } void glEvalCoord1f( GLfloat u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD1F,cur_context,&u); } void glEvalCoord1dv( const GLdouble *u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD1DV,cur_context,&u); } void glEvalCoord1fv( const GLfloat *u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD1FV,cur_context,&u); } void glEvalCoord2d( GLdouble u, GLdouble v ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD2D,cur_context,&u); } void glEvalCoord2f( GLfloat u, GLfloat v ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD2F,cur_context,&u); } void glEvalCoord2dv( const GLdouble *u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD2DV,cur_context,&u); } void glEvalCoord2fv( const GLfloat *u ) { (*HostCall_p)(NFOSMESA_GLEVALCOORD2FV,cur_context,&u); } void glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 ) { (*HostCall_p)(NFOSMESA_GLMAPGRID1D,cur_context,&un); } void glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 ) { (*HostCall_p)(NFOSMESA_GLMAPGRID1F,cur_context,&un); } void glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 ) { (*HostCall_p)(NFOSMESA_GLMAPGRID2D,cur_context,&un); } void glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 ) { (*HostCall_p)(NFOSMESA_GLMAPGRID2F,cur_context,&un); } void glEvalPoint1( GLint i ) { (*HostCall_p)(NFOSMESA_GLEVALPOINT1,cur_context,&i); } void glEvalPoint2( GLint i, GLint j ) { (*HostCall_p)(NFOSMESA_GLEVALPOINT2,cur_context,&i); } void glEvalMesh1( GLenum mode, GLint i1, GLint i2 ) { (*HostCall_p)(NFOSMESA_GLEVALMESH1,cur_context,&mode); } void glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 ) { (*HostCall_p)(NFOSMESA_GLEVALMESH2,cur_context,&mode); } void glFogf( GLenum pname, GLfloat param ) { (*HostCall_p)(NFOSMESA_GLFOGF,cur_context,&pname); } void glFogi( GLenum pname, GLint param ) { (*HostCall_p)(NFOSMESA_GLFOGI,cur_context,&pname); } void glFogfv( GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLFOGFV,cur_context,&pname); } void glFogiv( GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLFOGIV,cur_context,&pname); } void glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer ) { (*HostCall_p)(NFOSMESA_GLFEEDBACKBUFFER,cur_context,&size); } void glPassThrough( GLfloat token ) { (*HostCall_p)(NFOSMESA_GLPASSTHROUGH,cur_context,&token); } void glSelectBuffer( GLsizei size, GLuint *buffer ) { (*HostCall_p)(NFOSMESA_GLSELECTBUFFER,cur_context,&size); } void glInitNames( void ) { (*HostCall_p)(NFOSMESA_GLINITNAMES,cur_context,NULL); } void glLoadName( GLuint name ) { (*HostCall_p)(NFOSMESA_GLLOADNAME,cur_context,&name); } void glPushName( GLuint name ) { (*HostCall_p)(NFOSMESA_GLPUSHNAME,cur_context,&name); } void glPopName( void ) { (*HostCall_p)(NFOSMESA_GLPOPNAME,cur_context,NULL); } /* void glDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices ) { (*HostCall_p)(NFOSMESA_GLDRAWRANGEELEMENTS,cur_context,&mode); } void glTexImage3D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels ) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE3D,cur_context,&target); } void glTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE3D,cur_context,&target); } void glCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE3D,cur_context,&target); } void glColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) { (*HostCall_p)(NFOSMESA_GLCOLORTABLE,cur_context,&target); } void glColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOLORSUBTABLE,cur_context,&target); } void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERIV,cur_context,&target); } void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERFV,cur_context,&target); } void glCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width ) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORSUBTABLE,cur_context,&target); } void glCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORTABLE,cur_context,&target); } void glGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table ) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLE,cur_context,&target); } void glGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERFV,cur_context,&target); } void glGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERIV,cur_context,&target); } void glBlendEquation( GLenum mode ) { (*HostCall_p)(NFOSMESA_GLBLENDEQUATION,cur_context,&mode); } void glBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) { (*HostCall_p)(NFOSMESA_GLBLENDCOLOR,cur_context,&red); } void glHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink ) { (*HostCall_p)(NFOSMESA_GLHISTOGRAM,cur_context,&target); } void glResetHistogram( GLenum target ) { (*HostCall_p)(NFOSMESA_GLRESETHISTOGRAM,cur_context,&target); } void glGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values ) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAM,cur_context,&target); } void glGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERFV,cur_context,&target); } void glGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERIV,cur_context,&target); } void glMinmax( GLenum target, GLenum internalformat, GLboolean sink ) { (*HostCall_p)(NFOSMESA_GLMINMAX,cur_context,&target); } void glResetMinmax( GLenum target ) { (*HostCall_p)(NFOSMESA_GLRESETMINMAX,cur_context,&target); } void glGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values ) { (*HostCall_p)(NFOSMESA_GLGETMINMAX,cur_context,&target); } void glGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERFV,cur_context,&target); } void glGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERIV,cur_context,&target); } void glConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER1D,cur_context,&target); } void glConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER2D,cur_context,&target); } void glConvolutionParameterf( GLenum target, GLenum pname, GLfloat params ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERF,cur_context,&target); } void glConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERFV,cur_context,&target); } void glConvolutionParameteri( GLenum target, GLenum pname, GLint params ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERI,cur_context,&target); } void glConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params ) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERIV,cur_context,&target); } void glCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width ) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER1D,cur_context,&target); } void glCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER2D,cur_context,&target); } void glGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image ) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONFILTER,cur_context,&target); } void glGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params ) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERFV,cur_context,&target); } void glGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params ) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERIV,cur_context,&target); } void glSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column ) { (*HostCall_p)(NFOSMESA_GLSEPARABLEFILTER2D,cur_context,&target); } void glGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span ) { (*HostCall_p)(NFOSMESA_GLGETSEPARABLEFILTER,cur_context,&target); } void glActiveTexture( GLenum texture ) { (*HostCall_p)(NFOSMESA_GLACTIVETEXTURE,cur_context,&texture); } void glClientActiveTexture( GLenum texture ) { (*HostCall_p)(NFOSMESA_GLCLIENTACTIVETEXTURE,cur_context,&texture); } void glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE1D,cur_context,&target); } void glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE2D,cur_context,&target); } void glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE3D,cur_context,&target); } void glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D,cur_context,&target); } void glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D,cur_context,&target); } void glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data ) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D,cur_context,&target); } void glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img ) { (*HostCall_p)(NFOSMESA_GLGETCOMPRESSEDTEXIMAGE,cur_context,&target); } void glMultiTexCoord1d( GLenum target, GLdouble s ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1D,cur_context,&target); } void glMultiTexCoord1dv( GLenum target, const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DV,cur_context,&target); } void glMultiTexCoord1f( GLenum target, GLfloat s ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1F,cur_context,&target); } void glMultiTexCoord1fv( GLenum target, const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FV,cur_context,&target); } void glMultiTexCoord1i( GLenum target, GLint s ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1I,cur_context,&target); } void glMultiTexCoord1iv( GLenum target, const GLint *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IV,cur_context,&target); } void glMultiTexCoord1s( GLenum target, GLshort s ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1S,cur_context,&target); } void glMultiTexCoord1sv( GLenum target, const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SV,cur_context,&target); } void glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2D,cur_context,&target); } void glMultiTexCoord2dv( GLenum target, const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DV,cur_context,&target); } void glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2F,cur_context,&target); } void glMultiTexCoord2fv( GLenum target, const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FV,cur_context,&target); } void glMultiTexCoord2i( GLenum target, GLint s, GLint t ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2I,cur_context,&target); } void glMultiTexCoord2iv( GLenum target, const GLint *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IV,cur_context,&target); } void glMultiTexCoord2s( GLenum target, GLshort s, GLshort t ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2S,cur_context,&target); } void glMultiTexCoord2sv( GLenum target, const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SV,cur_context,&target); } void glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3D,cur_context,&target); } void glMultiTexCoord3dv( GLenum target, const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DV,cur_context,&target); } void glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3F,cur_context,&target); } void glMultiTexCoord3fv( GLenum target, const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FV,cur_context,&target); } void glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3I,cur_context,&target); } void glMultiTexCoord3iv( GLenum target, const GLint *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IV,cur_context,&target); } void glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3S,cur_context,&target); } void glMultiTexCoord3sv( GLenum target, const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SV,cur_context,&target); } void glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4D,cur_context,&target); } void glMultiTexCoord4dv( GLenum target, const GLdouble *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DV,cur_context,&target); } void glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4F,cur_context,&target); } void glMultiTexCoord4fv( GLenum target, const GLfloat *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FV,cur_context,&target); } void glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4I,cur_context,&target); } void glMultiTexCoord4iv( GLenum target, const GLint *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IV,cur_context,&target); } void glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4S,cur_context,&target); } void glMultiTexCoord4sv( GLenum target, const GLshort *v ) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SV,cur_context,&target); } void glLoadTransposeMatrixd( const GLdouble m[16] ) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXD,cur_context,&constGLdoublem[16]); } void glLoadTransposeMatrixf( const GLfloat m[16] ) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXF,cur_context,&constGLfloatm[16]); } void glMultTransposeMatrixd( const GLdouble m[16] ) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXD,cur_context,&constGLdoublem[16]); } void glMultTransposeMatrixf( const GLfloat m[16] ) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXF,cur_context,&constGLfloatm[16]); } void glSampleCoverage( GLclampf value, GLboolean invert ) { (*HostCall_p)(NFOSMESA_GLSAMPLECOVERAGE,cur_context,&value); } void glActiveTextureARB(GLenum texture) { (*HostCall_p)(NFOSMESA_GLACTIVETEXTUREARB,cur_context,&texture); } void glClientActiveTextureARB(GLenum texture) { (*HostCall_p)(NFOSMESA_GLCLIENTACTIVETEXTUREARB,cur_context,&texture); } void glMultiTexCoord1dARB(GLenum target, GLdouble s) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DARB,cur_context,&target); } void glMultiTexCoord1dvARB(GLenum target, const GLdouble *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DVARB,cur_context,&target); } void glMultiTexCoord1fARB(GLenum target, GLfloat s) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FARB,cur_context,&target); } void glMultiTexCoord1fvARB(GLenum target, const GLfloat *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FVARB,cur_context,&target); } void glMultiTexCoord1iARB(GLenum target, GLint s) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IARB,cur_context,&target); } void glMultiTexCoord1ivARB(GLenum target, const GLint *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IVARB,cur_context,&target); } void glMultiTexCoord1sARB(GLenum target, GLshort s) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SARB,cur_context,&target); } void glMultiTexCoord1svARB(GLenum target, const GLshort *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SVARB,cur_context,&target); } void glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DARB,cur_context,&target); } void glMultiTexCoord2dvARB(GLenum target, const GLdouble *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DVARB,cur_context,&target); } void glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FARB,cur_context,&target); } void glMultiTexCoord2fvARB(GLenum target, const GLfloat *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FVARB,cur_context,&target); } void glMultiTexCoord2iARB(GLenum target, GLint s, GLint t) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IARB,cur_context,&target); } void glMultiTexCoord2ivARB(GLenum target, const GLint *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IVARB,cur_context,&target); } void glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SARB,cur_context,&target); } void glMultiTexCoord2svARB(GLenum target, const GLshort *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SVARB,cur_context,&target); } void glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DARB,cur_context,&target); } void glMultiTexCoord3dvARB(GLenum target, const GLdouble *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DVARB,cur_context,&target); } void glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FARB,cur_context,&target); } void glMultiTexCoord3fvARB(GLenum target, const GLfloat *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FVARB,cur_context,&target); } void glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IARB,cur_context,&target); } void glMultiTexCoord3ivARB(GLenum target, const GLint *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IVARB,cur_context,&target); } void glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SARB,cur_context,&target); } void glMultiTexCoord3svARB(GLenum target, const GLshort *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SVARB,cur_context,&target); } void glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DARB,cur_context,&target); } void glMultiTexCoord4dvARB(GLenum target, const GLdouble *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DVARB,cur_context,&target); } void glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FARB,cur_context,&target); } void glMultiTexCoord4fvARB(GLenum target, const GLfloat *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FVARB,cur_context,&target); } void glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IARB,cur_context,&target); } void glMultiTexCoord4ivARB(GLenum target, const GLint *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IVARB,cur_context,&target); } void glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SARB,cur_context,&target); } void glMultiTexCoord4svARB(GLenum target, const GLshort *v) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SVARB,cur_context,&target); } */ void glEnableTraceMESA( GLbitfield mask ) { (*HostCall_p)(NFOSMESA_GLENABLETRACEMESA,cur_context,&mask); } void glDisableTraceMESA( GLbitfield mask ) { (*HostCall_p)(NFOSMESA_GLDISABLETRACEMESA,cur_context,&mask); } void glNewTraceMESA( GLbitfield mask, const GLubyte * traceName ) { (*HostCall_p)(NFOSMESA_GLNEWTRACEMESA,cur_context,&mask); } void glEndTraceMESA( void ) { (*HostCall_p)(NFOSMESA_GLENDTRACEMESA,cur_context,NULL); } void glTraceAssertAttribMESA( GLbitfield attribMask ) { (*HostCall_p)(NFOSMESA_GLTRACEASSERTATTRIBMESA,cur_context,&attribMask); } void glTraceCommentMESA( const GLubyte * comment ) { (*HostCall_p)(NFOSMESA_GLTRACECOMMENTMESA,cur_context,&comment); } void glTraceTextureMESA( GLuint name, const GLubyte* comment ) { (*HostCall_p)(NFOSMESA_GLTRACETEXTUREMESA,cur_context,&name); } void glTraceListMESA( GLuint name, const GLubyte* comment ) { (*HostCall_p)(NFOSMESA_GLTRACELISTMESA,cur_context,&name); } void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment ) { (*HostCall_p)(NFOSMESA_GLTRACEPOINTERMESA,cur_context,&pointer); } void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment ) { (*HostCall_p)(NFOSMESA_GLTRACEPOINTERRANGEMESA,cur_context,&first); } void glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA ) { (*HostCall_p)(NFOSMESA_GLBLENDEQUATIONSEPARATEATI,cur_context,&modeRGB); } /* Functions generated: 465 */ aranym-0.9.15/atari/nfosmesa/lib-glext.c000066400000000000000000004145241213346724500200640ustar00rootroot00000000000000/* OSMesa LDG loader Copyright (C) 2004 Patrice Mandin This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /*--- Includes ---*/ #include #include "lib-osmesa.h" #include "nfosmesa_nfapi.h" /* Generated by lib-gen.pl from /usr/local/include/GL/glext.h */ void APIENTRY glBlendColor (GLclampf a, GLclampf b, GLclampf c, GLclampf d) { (*HostCall_p)(NFOSMESA_GLBLENDCOLOR,cur_context,&a); } void APIENTRY glBlendEquation (GLenum a) { (*HostCall_p)(NFOSMESA_GLBLENDEQUATION,cur_context,&a); } void APIENTRY glDrawRangeElements (GLenum a, GLuint b, GLuint c, GLsizei d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLDRAWRANGEELEMENTS,cur_context,&a); } void APIENTRY glColorTable (GLenum a, GLenum b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCOLORTABLE,cur_context,&a); } void APIENTRY glColorTableParameterfv (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERFV,cur_context,&a); } void APIENTRY glColorTableParameteriv (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERIV,cur_context,&a); } void APIENTRY glCopyColorTable (GLenum a, GLenum b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORTABLE,cur_context,&a); } void APIENTRY glGetColorTable (GLenum a, GLenum b, GLenum c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLE,cur_context,&a); } void APIENTRY glGetColorTableParameterfv (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERFV,cur_context,&a); } void APIENTRY glGetColorTableParameteriv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERIV,cur_context,&a); } void APIENTRY glColorSubTable (GLenum a, GLsizei b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCOLORSUBTABLE,cur_context,&a); } void APIENTRY glCopyColorSubTable (GLenum a, GLsizei b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORSUBTABLE,cur_context,&a); } void APIENTRY glConvolutionFilter1D (GLenum a, GLenum b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER1D,cur_context,&a); } void APIENTRY glConvolutionFilter2D (GLenum a, GLenum b, GLsizei c, GLsizei d, GLenum e, GLenum f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER2D,cur_context,&a); } void APIENTRY glConvolutionParameterf (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERF,cur_context,&a); } void APIENTRY glConvolutionParameterfv (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERFV,cur_context,&a); } void APIENTRY glConvolutionParameteri (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERI,cur_context,&a); } void APIENTRY glConvolutionParameteriv (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERIV,cur_context,&a); } void APIENTRY glCopyConvolutionFilter1D (GLenum a, GLenum b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER1D,cur_context,&a); } void APIENTRY glCopyConvolutionFilter2D (GLenum a, GLenum b, GLint c, GLint d, GLsizei e, GLsizei f) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER2D,cur_context,&a); } void APIENTRY glGetConvolutionFilter (GLenum a, GLenum b, GLenum c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONFILTER,cur_context,&a); } void APIENTRY glGetConvolutionParameterfv (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERFV,cur_context,&a); } void APIENTRY glGetConvolutionParameteriv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERIV,cur_context,&a); } void APIENTRY glGetSeparableFilter (GLenum a, GLenum b, GLenum c, GLvoid * d, GLvoid * e, GLvoid * f) { (*HostCall_p)(NFOSMESA_GLGETSEPARABLEFILTER,cur_context,&a); } void APIENTRY glSeparableFilter2D (GLenum a, GLenum b, GLsizei c, GLsizei d, GLenum e, GLenum f, const GLvoid * g, const GLvoid * h) { (*HostCall_p)(NFOSMESA_GLSEPARABLEFILTER2D,cur_context,&a); } void APIENTRY glGetHistogram (GLenum a, GLboolean b, GLenum c, GLenum d, GLvoid * e) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAM,cur_context,&a); } void APIENTRY glGetHistogramParameterfv (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERFV,cur_context,&a); } void APIENTRY glGetHistogramParameteriv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERIV,cur_context,&a); } void APIENTRY glGetMinmax (GLenum a, GLboolean b, GLenum c, GLenum d, GLvoid * e) { (*HostCall_p)(NFOSMESA_GLGETMINMAX,cur_context,&a); } void APIENTRY glGetMinmaxParameterfv (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERFV,cur_context,&a); } void APIENTRY glGetMinmaxParameteriv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERIV,cur_context,&a); } void APIENTRY glHistogram (GLenum a, GLsizei b, GLenum c, GLboolean d) { (*HostCall_p)(NFOSMESA_GLHISTOGRAM,cur_context,&a); } void APIENTRY glMinmax (GLenum a, GLenum b, GLboolean c) { (*HostCall_p)(NFOSMESA_GLMINMAX,cur_context,&a); } void APIENTRY glResetHistogram (GLenum a) { (*HostCall_p)(NFOSMESA_GLRESETHISTOGRAM,cur_context,&a); } void APIENTRY glResetMinmax (GLenum a) { (*HostCall_p)(NFOSMESA_GLRESETMINMAX,cur_context,&a); } void APIENTRY glTexImage3D (GLenum a, GLint b, GLint c, GLsizei d, GLsizei e, GLsizei f, GLint g, GLenum h, GLenum i, const GLvoid * j) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE3D,cur_context,&a); } void APIENTRY glTexSubImage3D (GLenum a, GLint b, GLint c, GLint d, GLint e, GLsizei f, GLsizei g, GLsizei h, GLenum i, GLenum j, const GLvoid * k) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE3D,cur_context,&a); } void APIENTRY glCopyTexSubImage3D (GLenum a, GLint b, GLint c, GLint d, GLint e, GLint f, GLint g, GLsizei h, GLsizei i) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE3D,cur_context,&a); } void APIENTRY glActiveTexture (GLenum a) { (*HostCall_p)(NFOSMESA_GLACTIVETEXTURE,cur_context,&a); } void APIENTRY glClientActiveTexture (GLenum a) { (*HostCall_p)(NFOSMESA_GLCLIENTACTIVETEXTURE,cur_context,&a); } void APIENTRY glMultiTexCoord1d (GLenum a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1D,cur_context,&a); } void APIENTRY glMultiTexCoord1dv (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DV,cur_context,&a); } void APIENTRY glMultiTexCoord1f (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1F,cur_context,&a); } void APIENTRY glMultiTexCoord1fv (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FV,cur_context,&a); } void APIENTRY glMultiTexCoord1i (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1I,cur_context,&a); } void APIENTRY glMultiTexCoord1iv (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IV,cur_context,&a); } void APIENTRY glMultiTexCoord1s (GLenum a, GLshort b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1S,cur_context,&a); } void APIENTRY glMultiTexCoord1sv (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SV,cur_context,&a); } void APIENTRY glMultiTexCoord2d (GLenum a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2D,cur_context,&a); } void APIENTRY glMultiTexCoord2dv (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DV,cur_context,&a); } void APIENTRY glMultiTexCoord2f (GLenum a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2F,cur_context,&a); } void APIENTRY glMultiTexCoord2fv (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FV,cur_context,&a); } void APIENTRY glMultiTexCoord2i (GLenum a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2I,cur_context,&a); } void APIENTRY glMultiTexCoord2iv (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IV,cur_context,&a); } void APIENTRY glMultiTexCoord2s (GLenum a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2S,cur_context,&a); } void APIENTRY glMultiTexCoord2sv (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SV,cur_context,&a); } void APIENTRY glMultiTexCoord3d (GLenum a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3D,cur_context,&a); } void APIENTRY glMultiTexCoord3dv (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DV,cur_context,&a); } void APIENTRY glMultiTexCoord3f (GLenum a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3F,cur_context,&a); } void APIENTRY glMultiTexCoord3fv (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FV,cur_context,&a); } void APIENTRY glMultiTexCoord3i (GLenum a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3I,cur_context,&a); } void APIENTRY glMultiTexCoord3iv (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IV,cur_context,&a); } void APIENTRY glMultiTexCoord3s (GLenum a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3S,cur_context,&a); } void APIENTRY glMultiTexCoord3sv (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SV,cur_context,&a); } void APIENTRY glMultiTexCoord4d (GLenum a, GLdouble b, GLdouble c, GLdouble d, GLdouble e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4D,cur_context,&a); } void APIENTRY glMultiTexCoord4dv (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DV,cur_context,&a); } void APIENTRY glMultiTexCoord4f (GLenum a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4F,cur_context,&a); } void APIENTRY glMultiTexCoord4fv (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FV,cur_context,&a); } void APIENTRY glMultiTexCoord4i (GLenum a, GLint b, GLint c, GLint d, GLint e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4I,cur_context,&a); } void APIENTRY glMultiTexCoord4iv (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IV,cur_context,&a); } void APIENTRY glMultiTexCoord4s (GLenum a, GLshort b, GLshort c, GLshort d, GLshort e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4S,cur_context,&a); } void APIENTRY glMultiTexCoord4sv (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SV,cur_context,&a); } void APIENTRY glLoadTransposeMatrixf (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXF,cur_context,&a); } void APIENTRY glLoadTransposeMatrixd (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXD,cur_context,&a); } void APIENTRY glMultTransposeMatrixf (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXF,cur_context,&a); } void APIENTRY glMultTransposeMatrixd (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXD,cur_context,&a); } void APIENTRY glSampleCoverage (GLclampf a, GLboolean b) { (*HostCall_p)(NFOSMESA_GLSAMPLECOVERAGE,cur_context,&a); } void APIENTRY glCompressedTexImage3D (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLsizei f, GLint g, GLsizei h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE3D,cur_context,&a); } void APIENTRY glCompressedTexImage2D (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLint f, GLsizei g, const GLvoid * h) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE2D,cur_context,&a); } void APIENTRY glCompressedTexImage1D (GLenum a, GLint b, GLenum c, GLsizei d, GLint e, GLsizei f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE1D,cur_context,&a); } void APIENTRY glCompressedTexSubImage3D (GLenum a, GLint b, GLint c, GLint d, GLint e, GLsizei f, GLsizei g, GLsizei h, GLenum i, GLsizei j, const GLvoid * k) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3D,cur_context,&a); } void APIENTRY glCompressedTexSubImage2D (GLenum a, GLint b, GLint c, GLint d, GLsizei e, GLsizei f, GLenum g, GLsizei h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2D,cur_context,&a); } void APIENTRY glCompressedTexSubImage1D (GLenum a, GLint b, GLint c, GLsizei d, GLenum e, GLsizei f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1D,cur_context,&a); } void APIENTRY glGetCompressedTexImage (GLenum a, GLint b, GLvoid * c) { (*HostCall_p)(NFOSMESA_GLGETCOMPRESSEDTEXIMAGE,cur_context,&a); } void APIENTRY glBlendFuncSeparate (GLenum a, GLenum b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLBLENDFUNCSEPARATE,cur_context,&a); } void APIENTRY glFogCoordf (GLfloat a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDF,cur_context,&a); } void APIENTRY glFogCoordfv (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDFV,cur_context,&a); } void APIENTRY glFogCoordd (GLdouble a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDD,cur_context,&a); } void APIENTRY glFogCoorddv (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDDV,cur_context,&a); } void APIENTRY glFogCoordPointer (GLenum a, GLsizei b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLFOGCOORDPOINTER,cur_context,&a); } void APIENTRY glMultiDrawArrays (GLenum a, GLint * b, GLsizei * c, GLsizei d) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWARRAYS,cur_context,&a); } void APIENTRY glMultiDrawElements (GLenum a, const GLsizei * b, GLenum c, const GLvoid* * d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWELEMENTS,cur_context,&a); } void APIENTRY glPointParameterf (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERF,cur_context,&a); } void APIENTRY glPointParameterfv (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFV,cur_context,&a); } void APIENTRY glPointParameteri (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERI,cur_context,&a); } void APIENTRY glPointParameteriv (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERIV,cur_context,&a); } void APIENTRY glSecondaryColor3b (GLbyte a, GLbyte b, GLbyte c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3B,cur_context,&a); } void APIENTRY glSecondaryColor3bv (const GLbyte * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3BV,cur_context,&a); } void APIENTRY glSecondaryColor3d (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3D,cur_context,&a); } void APIENTRY glSecondaryColor3dv (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3DV,cur_context,&a); } void APIENTRY glSecondaryColor3f (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3F,cur_context,&a); } void APIENTRY glSecondaryColor3fv (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3FV,cur_context,&a); } void APIENTRY glSecondaryColor3i (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3I,cur_context,&a); } void APIENTRY glSecondaryColor3iv (const GLint * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3IV,cur_context,&a); } void APIENTRY glSecondaryColor3s (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3S,cur_context,&a); } void APIENTRY glSecondaryColor3sv (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3SV,cur_context,&a); } void APIENTRY glSecondaryColor3ub (GLubyte a, GLubyte b, GLubyte c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UB,cur_context,&a); } void APIENTRY glSecondaryColor3ubv (const GLubyte * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UBV,cur_context,&a); } void APIENTRY glSecondaryColor3ui (GLuint a, GLuint b, GLuint c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UI,cur_context,&a); } void APIENTRY glSecondaryColor3uiv (const GLuint * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UIV,cur_context,&a); } void APIENTRY glSecondaryColor3us (GLushort a, GLushort b, GLushort c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3US,cur_context,&a); } void APIENTRY glSecondaryColor3usv (const GLushort * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3USV,cur_context,&a); } void APIENTRY glSecondaryColorPointer (GLint a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLORPOINTER,cur_context,&a); } void APIENTRY glWindowPos2d (GLdouble a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2D,cur_context,&a); } void APIENTRY glWindowPos2dv (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2DV,cur_context,&a); } void APIENTRY glWindowPos2f (GLfloat a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2F,cur_context,&a); } void APIENTRY glWindowPos2fv (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2FV,cur_context,&a); } void APIENTRY glWindowPos2i (GLint a, GLint b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2I,cur_context,&a); } void APIENTRY glWindowPos2iv (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2IV,cur_context,&a); } void APIENTRY glWindowPos2s (GLshort a, GLshort b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2S,cur_context,&a); } void APIENTRY glWindowPos2sv (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2SV,cur_context,&a); } void APIENTRY glWindowPos3d (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3D,cur_context,&a); } void APIENTRY glWindowPos3dv (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3DV,cur_context,&a); } void APIENTRY glWindowPos3f (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3F,cur_context,&a); } void APIENTRY glWindowPos3fv (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3FV,cur_context,&a); } void APIENTRY glWindowPos3i (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3I,cur_context,&a); } void APIENTRY glWindowPos3iv (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3IV,cur_context,&a); } void APIENTRY glWindowPos3s (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3S,cur_context,&a); } void APIENTRY glWindowPos3sv (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3SV,cur_context,&a); } void APIENTRY glGenQueries (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENQUERIES,cur_context,&a); } void APIENTRY glDeleteQueries (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEQUERIES,cur_context,&a); } GLboolean APIENTRY glIsQuery (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISQUERY,cur_context,&a); } void APIENTRY glBeginQuery (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBEGINQUERY,cur_context,&a); } void APIENTRY glEndQuery (GLenum a) { (*HostCall_p)(NFOSMESA_GLENDQUERY,cur_context,&a); } void APIENTRY glGetQueryiv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYIV,cur_context,&a); } void APIENTRY glGetQueryObjectiv (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYOBJECTIV,cur_context,&a); } void APIENTRY glGetQueryObjectuiv (GLuint a, GLenum b, GLuint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYOBJECTUIV,cur_context,&a); } void APIENTRY glBindBuffer (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBINDBUFFER,cur_context,&a); } void APIENTRY glDeleteBuffers (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEBUFFERS,cur_context,&a); } void APIENTRY glGenBuffers (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENBUFFERS,cur_context,&a); } GLboolean APIENTRY glIsBuffer (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISBUFFER,cur_context,&a); } void APIENTRY glBufferData (GLenum a, GLsizeiptr b, const GLvoid * c, GLenum d) { (*HostCall_p)(NFOSMESA_GLBUFFERDATA,cur_context,&a); } void APIENTRY glBufferSubData (GLenum a, GLintptr b, GLsizeiptr c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLBUFFERSUBDATA,cur_context,&a); } void APIENTRY glGetBufferSubData (GLenum a, GLintptr b, GLsizeiptr c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETBUFFERSUBDATA,cur_context,&a); } GLvoid* APIENTRY glMapBuffer (GLenum a, GLenum b) { return (GLvoid *)(*HostCall_p)(NFOSMESA_GLMAPBUFFER,cur_context,&a); } GLboolean APIENTRY glUnmapBuffer (GLenum a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLUNMAPBUFFER,cur_context,&a); } void APIENTRY glGetBufferParameteriv (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETBUFFERPARAMETERIV,cur_context,&a); } void APIENTRY glGetBufferPointerv (GLenum a, GLenum b, GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLGETBUFFERPOINTERV,cur_context,&a); } void APIENTRY glActiveTextureARB (GLenum a) { (*HostCall_p)(NFOSMESA_GLACTIVETEXTUREARB,cur_context,&a); } void APIENTRY glClientActiveTextureARB (GLenum a) { (*HostCall_p)(NFOSMESA_GLCLIENTACTIVETEXTUREARB,cur_context,&a); } void APIENTRY glMultiTexCoord1dARB (GLenum a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DARB,cur_context,&a); } void APIENTRY glMultiTexCoord1dvARB (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1DVARB,cur_context,&a); } void APIENTRY glMultiTexCoord1fARB (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FARB,cur_context,&a); } void APIENTRY glMultiTexCoord1fvARB (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1FVARB,cur_context,&a); } void APIENTRY glMultiTexCoord1iARB (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IARB,cur_context,&a); } void APIENTRY glMultiTexCoord1ivARB (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1IVARB,cur_context,&a); } void APIENTRY glMultiTexCoord1sARB (GLenum a, GLshort b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SARB,cur_context,&a); } void APIENTRY glMultiTexCoord1svARB (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1SVARB,cur_context,&a); } void APIENTRY glMultiTexCoord2dARB (GLenum a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DARB,cur_context,&a); } void APIENTRY glMultiTexCoord2dvARB (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2DVARB,cur_context,&a); } void APIENTRY glMultiTexCoord2fARB (GLenum a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FARB,cur_context,&a); } void APIENTRY glMultiTexCoord2fvARB (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2FVARB,cur_context,&a); } void APIENTRY glMultiTexCoord2iARB (GLenum a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IARB,cur_context,&a); } void APIENTRY glMultiTexCoord2ivARB (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2IVARB,cur_context,&a); } void APIENTRY glMultiTexCoord2sARB (GLenum a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SARB,cur_context,&a); } void APIENTRY glMultiTexCoord2svARB (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2SVARB,cur_context,&a); } void APIENTRY glMultiTexCoord3dARB (GLenum a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DARB,cur_context,&a); } void APIENTRY glMultiTexCoord3dvARB (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3DVARB,cur_context,&a); } void APIENTRY glMultiTexCoord3fARB (GLenum a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FARB,cur_context,&a); } void APIENTRY glMultiTexCoord3fvARB (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3FVARB,cur_context,&a); } void APIENTRY glMultiTexCoord3iARB (GLenum a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IARB,cur_context,&a); } void APIENTRY glMultiTexCoord3ivARB (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3IVARB,cur_context,&a); } void APIENTRY glMultiTexCoord3sARB (GLenum a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SARB,cur_context,&a); } void APIENTRY glMultiTexCoord3svARB (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3SVARB,cur_context,&a); } void APIENTRY glMultiTexCoord4dARB (GLenum a, GLdouble b, GLdouble c, GLdouble d, GLdouble e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DARB,cur_context,&a); } void APIENTRY glMultiTexCoord4dvARB (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4DVARB,cur_context,&a); } void APIENTRY glMultiTexCoord4fARB (GLenum a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FARB,cur_context,&a); } void APIENTRY glMultiTexCoord4fvARB (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4FVARB,cur_context,&a); } void APIENTRY glMultiTexCoord4iARB (GLenum a, GLint b, GLint c, GLint d, GLint e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IARB,cur_context,&a); } void APIENTRY glMultiTexCoord4ivARB (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4IVARB,cur_context,&a); } void APIENTRY glMultiTexCoord4sARB (GLenum a, GLshort b, GLshort c, GLshort d, GLshort e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SARB,cur_context,&a); } void APIENTRY glMultiTexCoord4svARB (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4SVARB,cur_context,&a); } void APIENTRY glLoadTransposeMatrixfARB (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXFARB,cur_context,&a); } void APIENTRY glLoadTransposeMatrixdARB (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLLOADTRANSPOSEMATRIXDARB,cur_context,&a); } void APIENTRY glMultTransposeMatrixfARB (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXFARB,cur_context,&a); } void APIENTRY glMultTransposeMatrixdARB (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLMULTTRANSPOSEMATRIXDARB,cur_context,&a); } void APIENTRY glSampleCoverageARB (GLclampf a, GLboolean b) { (*HostCall_p)(NFOSMESA_GLSAMPLECOVERAGEARB,cur_context,&a); } void APIENTRY glCompressedTexImage3DARB (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLsizei f, GLint g, GLsizei h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE3DARB,cur_context,&a); } void APIENTRY glCompressedTexImage2DARB (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLint f, GLsizei g, const GLvoid * h) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE2DARB,cur_context,&a); } void APIENTRY glCompressedTexImage1DARB (GLenum a, GLint b, GLenum c, GLsizei d, GLint e, GLsizei f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXIMAGE1DARB,cur_context,&a); } void APIENTRY glCompressedTexSubImage3DARB (GLenum a, GLint b, GLint c, GLint d, GLint e, GLsizei f, GLsizei g, GLsizei h, GLenum i, GLsizei j, const GLvoid * k) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE3DARB,cur_context,&a); } void APIENTRY glCompressedTexSubImage2DARB (GLenum a, GLint b, GLint c, GLint d, GLsizei e, GLsizei f, GLenum g, GLsizei h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE2DARB,cur_context,&a); } void APIENTRY glCompressedTexSubImage1DARB (GLenum a, GLint b, GLint c, GLsizei d, GLenum e, GLsizei f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCOMPRESSEDTEXSUBIMAGE1DARB,cur_context,&a); } void APIENTRY glGetCompressedTexImageARB (GLenum a, GLint b, GLvoid * c) { (*HostCall_p)(NFOSMESA_GLGETCOMPRESSEDTEXIMAGEARB,cur_context,&a); } void APIENTRY glPointParameterfARB (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFARB,cur_context,&a); } void APIENTRY glPointParameterfvARB (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFVARB,cur_context,&a); } void APIENTRY glWeightbvARB (GLint a, const GLbyte * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTBVARB,cur_context,&a); } void APIENTRY glWeightsvARB (GLint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTSVARB,cur_context,&a); } void APIENTRY glWeightivARB (GLint a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTIVARB,cur_context,&a); } void APIENTRY glWeightfvARB (GLint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTFVARB,cur_context,&a); } void APIENTRY glWeightdvARB (GLint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTDVARB,cur_context,&a); } void APIENTRY glWeightubvARB (GLint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTUBVARB,cur_context,&a); } void APIENTRY glWeightusvARB (GLint a, const GLushort * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTUSVARB,cur_context,&a); } void APIENTRY glWeightuivARB (GLint a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLWEIGHTUIVARB,cur_context,&a); } void APIENTRY glWeightPointerARB (GLint a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLWEIGHTPOINTERARB,cur_context,&a); } void APIENTRY glVertexBlendARB (GLint a) { (*HostCall_p)(NFOSMESA_GLVERTEXBLENDARB,cur_context,&a); } void APIENTRY glCurrentPaletteMatrixARB (GLint a) { (*HostCall_p)(NFOSMESA_GLCURRENTPALETTEMATRIXARB,cur_context,&a); } void APIENTRY glMatrixIndexubvARB (GLint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLMATRIXINDEXUBVARB,cur_context,&a); } void APIENTRY glMatrixIndexusvARB (GLint a, const GLushort * b) { (*HostCall_p)(NFOSMESA_GLMATRIXINDEXUSVARB,cur_context,&a); } void APIENTRY glMatrixIndexuivARB (GLint a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLMATRIXINDEXUIVARB,cur_context,&a); } void APIENTRY glMatrixIndexPointerARB (GLint a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLMATRIXINDEXPOINTERARB,cur_context,&a); } void APIENTRY glWindowPos2dARB (GLdouble a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2DARB,cur_context,&a); } void APIENTRY glWindowPos2dvARB (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2DVARB,cur_context,&a); } void APIENTRY glWindowPos2fARB (GLfloat a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2FARB,cur_context,&a); } void APIENTRY glWindowPos2fvARB (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2FVARB,cur_context,&a); } void APIENTRY glWindowPos2iARB (GLint a, GLint b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2IARB,cur_context,&a); } void APIENTRY glWindowPos2ivARB (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2IVARB,cur_context,&a); } void APIENTRY glWindowPos2sARB (GLshort a, GLshort b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2SARB,cur_context,&a); } void APIENTRY glWindowPos2svARB (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2SVARB,cur_context,&a); } void APIENTRY glWindowPos3dARB (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3DARB,cur_context,&a); } void APIENTRY glWindowPos3dvARB (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3DVARB,cur_context,&a); } void APIENTRY glWindowPos3fARB (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3FARB,cur_context,&a); } void APIENTRY glWindowPos3fvARB (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3FVARB,cur_context,&a); } void APIENTRY glWindowPos3iARB (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3IARB,cur_context,&a); } void APIENTRY glWindowPos3ivARB (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3IVARB,cur_context,&a); } void APIENTRY glWindowPos3sARB (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3SARB,cur_context,&a); } void APIENTRY glWindowPos3svARB (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3SVARB,cur_context,&a); } void APIENTRY glVertexAttrib1dARB (GLuint a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1DARB,cur_context,&a); } void APIENTRY glVertexAttrib1dvARB (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1DVARB,cur_context,&a); } void APIENTRY glVertexAttrib1fARB (GLuint a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1FARB,cur_context,&a); } void APIENTRY glVertexAttrib1fvARB (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1FVARB,cur_context,&a); } void APIENTRY glVertexAttrib1sARB (GLuint a, GLshort b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1SARB,cur_context,&a); } void APIENTRY glVertexAttrib1svARB (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1SVARB,cur_context,&a); } void APIENTRY glVertexAttrib2dARB (GLuint a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2DARB,cur_context,&a); } void APIENTRY glVertexAttrib2dvARB (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2DVARB,cur_context,&a); } void APIENTRY glVertexAttrib2fARB (GLuint a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2FARB,cur_context,&a); } void APIENTRY glVertexAttrib2fvARB (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2FVARB,cur_context,&a); } void APIENTRY glVertexAttrib2sARB (GLuint a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2SARB,cur_context,&a); } void APIENTRY glVertexAttrib2svARB (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2SVARB,cur_context,&a); } void APIENTRY glVertexAttrib3dARB (GLuint a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3DARB,cur_context,&a); } void APIENTRY glVertexAttrib3dvARB (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3DVARB,cur_context,&a); } void APIENTRY glVertexAttrib3fARB (GLuint a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3FARB,cur_context,&a); } void APIENTRY glVertexAttrib3fvARB (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3FVARB,cur_context,&a); } void APIENTRY glVertexAttrib3sARB (GLuint a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3SARB,cur_context,&a); } void APIENTRY glVertexAttrib3svARB (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3SVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NbvARB (GLuint a, const GLbyte * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NBVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NivARB (GLuint a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NIVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NsvARB (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NSVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NubARB (GLuint a, GLubyte b, GLubyte c, GLubyte d, GLubyte e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NUBARB,cur_context,&a); } void APIENTRY glVertexAttrib4NubvARB (GLuint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NUBVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NuivARB (GLuint a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NUIVARB,cur_context,&a); } void APIENTRY glVertexAttrib4NusvARB (GLuint a, const GLushort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4NUSVARB,cur_context,&a); } void APIENTRY glVertexAttrib4bvARB (GLuint a, const GLbyte * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4BVARB,cur_context,&a); } void APIENTRY glVertexAttrib4dARB (GLuint a, GLdouble b, GLdouble c, GLdouble d, GLdouble e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4DARB,cur_context,&a); } void APIENTRY glVertexAttrib4dvARB (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4DVARB,cur_context,&a); } void APIENTRY glVertexAttrib4fARB (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4FARB,cur_context,&a); } void APIENTRY glVertexAttrib4fvARB (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4FVARB,cur_context,&a); } void APIENTRY glVertexAttrib4ivARB (GLuint a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4IVARB,cur_context,&a); } void APIENTRY glVertexAttrib4sARB (GLuint a, GLshort b, GLshort c, GLshort d, GLshort e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4SARB,cur_context,&a); } void APIENTRY glVertexAttrib4svARB (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4SVARB,cur_context,&a); } void APIENTRY glVertexAttrib4ubvARB (GLuint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4UBVARB,cur_context,&a); } void APIENTRY glVertexAttrib4uivARB (GLuint a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4UIVARB,cur_context,&a); } void APIENTRY glVertexAttrib4usvARB (GLuint a, const GLushort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4USVARB,cur_context,&a); } void APIENTRY glVertexAttribPointerARB (GLuint a, GLint b, GLenum c, GLboolean d, GLsizei e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBPOINTERARB,cur_context,&a); } void APIENTRY glEnableVertexAttribArrayARB (GLuint a) { (*HostCall_p)(NFOSMESA_GLENABLEVERTEXATTRIBARRAYARB,cur_context,&a); } void APIENTRY glDisableVertexAttribArrayARB (GLuint a) { (*HostCall_p)(NFOSMESA_GLDISABLEVERTEXATTRIBARRAYARB,cur_context,&a); } void APIENTRY glProgramStringARB (GLenum a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLPROGRAMSTRINGARB,cur_context,&a); } void APIENTRY glBindProgramARB (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBINDPROGRAMARB,cur_context,&a); } void APIENTRY glDeleteProgramsARB (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEPROGRAMSARB,cur_context,&a); } void APIENTRY glGenProgramsARB (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENPROGRAMSARB,cur_context,&a); } void APIENTRY glProgramEnvParameter4dARB (GLenum a, GLuint b, GLdouble c, GLdouble d, GLdouble e, GLdouble f) { (*HostCall_p)(NFOSMESA_GLPROGRAMENVPARAMETER4DARB,cur_context,&a); } void APIENTRY glProgramEnvParameter4dvARB (GLenum a, GLuint b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMENVPARAMETER4DVARB,cur_context,&a); } void APIENTRY glProgramEnvParameter4fARB (GLenum a, GLuint b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLPROGRAMENVPARAMETER4FARB,cur_context,&a); } void APIENTRY glProgramEnvParameter4fvARB (GLenum a, GLuint b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMENVPARAMETER4FVARB,cur_context,&a); } void APIENTRY glProgramLocalParameter4dARB (GLenum a, GLuint b, GLdouble c, GLdouble d, GLdouble e, GLdouble f) { (*HostCall_p)(NFOSMESA_GLPROGRAMLOCALPARAMETER4DARB,cur_context,&a); } void APIENTRY glProgramLocalParameter4dvARB (GLenum a, GLuint b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMLOCALPARAMETER4DVARB,cur_context,&a); } void APIENTRY glProgramLocalParameter4fARB (GLenum a, GLuint b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLPROGRAMLOCALPARAMETER4FARB,cur_context,&a); } void APIENTRY glProgramLocalParameter4fvARB (GLenum a, GLuint b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMLOCALPARAMETER4FVARB,cur_context,&a); } void APIENTRY glGetProgramEnvParameterdvARB (GLenum a, GLuint b, GLdouble * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMENVPARAMETERDVARB,cur_context,&a); } void APIENTRY glGetProgramEnvParameterfvARB (GLenum a, GLuint b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMENVPARAMETERFVARB,cur_context,&a); } void APIENTRY glGetProgramLocalParameterdvARB (GLenum a, GLuint b, GLdouble * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMLOCALPARAMETERDVARB,cur_context,&a); } void APIENTRY glGetProgramLocalParameterfvARB (GLenum a, GLuint b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMLOCALPARAMETERFVARB,cur_context,&a); } void APIENTRY glGetProgramivARB (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMIVARB,cur_context,&a); } void APIENTRY glGetProgramStringARB (GLenum a, GLenum b, GLvoid * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMSTRINGARB,cur_context,&a); } void APIENTRY glGetVertexAttribdvARB (GLuint a, GLenum b, GLdouble * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBDVARB,cur_context,&a); } void APIENTRY glGetVertexAttribfvARB (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBFVARB,cur_context,&a); } void APIENTRY glGetVertexAttribivARB (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBIVARB,cur_context,&a); } void APIENTRY glGetVertexAttribPointervARB (GLuint a, GLenum b, GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBPOINTERVARB,cur_context,&a); } GLboolean APIENTRY glIsProgramARB (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISPROGRAMARB,cur_context,&a); } void APIENTRY glBindBufferARB (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBINDBUFFERARB,cur_context,&a); } void APIENTRY glDeleteBuffersARB (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEBUFFERSARB,cur_context,&a); } void APIENTRY glGenBuffersARB (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENBUFFERSARB,cur_context,&a); } GLboolean APIENTRY glIsBufferARB (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISBUFFERARB,cur_context,&a); } void APIENTRY glBufferDataARB (GLenum a, GLsizeiptrARB b, const GLvoid * c, GLenum d) { (*HostCall_p)(NFOSMESA_GLBUFFERDATAARB,cur_context,&a); } void APIENTRY glBufferSubDataARB (GLenum a, GLintptrARB b, GLsizeiptrARB c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLBUFFERSUBDATAARB,cur_context,&a); } void APIENTRY glGetBufferSubDataARB (GLenum a, GLintptrARB b, GLsizeiptrARB c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETBUFFERSUBDATAARB,cur_context,&a); } GLvoid* APIENTRY glMapBufferARB (GLenum a, GLenum b) { return (GLvoid *)(*HostCall_p)(NFOSMESA_GLMAPBUFFERARB,cur_context,&a); } GLboolean APIENTRY glUnmapBufferARB (GLenum a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLUNMAPBUFFERARB,cur_context,&a); } void APIENTRY glGetBufferParameterivARB (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETBUFFERPARAMETERIVARB,cur_context,&a); } void APIENTRY glGetBufferPointervARB (GLenum a, GLenum b, GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLGETBUFFERPOINTERVARB,cur_context,&a); } void APIENTRY glGenQueriesARB (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENQUERIESARB,cur_context,&a); } void APIENTRY glDeleteQueriesARB (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEQUERIESARB,cur_context,&a); } GLboolean APIENTRY glIsQueryARB (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISQUERYARB,cur_context,&a); } void APIENTRY glBeginQueryARB (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBEGINQUERYARB,cur_context,&a); } void APIENTRY glEndQueryARB (GLenum a) { (*HostCall_p)(NFOSMESA_GLENDQUERYARB,cur_context,&a); } void APIENTRY glGetQueryivARB (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYIVARB,cur_context,&a); } void APIENTRY glGetQueryObjectivARB (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYOBJECTIVARB,cur_context,&a); } void APIENTRY glGetQueryObjectuivARB (GLuint a, GLenum b, GLuint * c) { (*HostCall_p)(NFOSMESA_GLGETQUERYOBJECTUIVARB,cur_context,&a); } void APIENTRY glDeleteObjectARB (GLhandleARB a) { (*HostCall_p)(NFOSMESA_GLDELETEOBJECTARB,cur_context,&a); } GLhandleARB APIENTRY glGetHandleARB (GLenum a) { return (GLhandleARB)(*HostCall_p)(NFOSMESA_GLGETHANDLEARB,cur_context,&a); } void APIENTRY glDetachObjectARB (GLhandleARB a, GLhandleARB b) { (*HostCall_p)(NFOSMESA_GLDETACHOBJECTARB,cur_context,&a); } GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum a) { return (GLhandleARB)(*HostCall_p)(NFOSMESA_GLCREATESHADEROBJECTARB,cur_context,&a); } void APIENTRY glShaderSourceARB (GLhandleARB a, GLsizei b, const GLcharARB* * c, const GLint * d) { (*HostCall_p)(NFOSMESA_GLSHADERSOURCEARB,cur_context,&a); } void APIENTRY glCompileShaderARB (GLhandleARB a) { (*HostCall_p)(NFOSMESA_GLCOMPILESHADERARB,cur_context,&a); } GLhandleARB APIENTRY glCreateProgramObjectARB (void) { return (GLhandleARB)(*HostCall_p)(NFOSMESA_GLCREATEPROGRAMOBJECTARB,cur_context,NULL); } void APIENTRY glAttachObjectARB (GLhandleARB a, GLhandleARB b) { (*HostCall_p)(NFOSMESA_GLATTACHOBJECTARB,cur_context,&a); } void APIENTRY glLinkProgramARB (GLhandleARB a) { (*HostCall_p)(NFOSMESA_GLLINKPROGRAMARB,cur_context,&a); } void APIENTRY glUseProgramObjectARB (GLhandleARB a) { (*HostCall_p)(NFOSMESA_GLUSEPROGRAMOBJECTARB,cur_context,&a); } void APIENTRY glValidateProgramARB (GLhandleARB a) { (*HostCall_p)(NFOSMESA_GLVALIDATEPROGRAMARB,cur_context,&a); } void APIENTRY glUniform1fARB (GLint a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLUNIFORM1FARB,cur_context,&a); } void APIENTRY glUniform2fARB (GLint a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLUNIFORM2FARB,cur_context,&a); } void APIENTRY glUniform3fARB (GLint a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLUNIFORM3FARB,cur_context,&a); } void APIENTRY glUniform4fARB (GLint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLUNIFORM4FARB,cur_context,&a); } void APIENTRY glUniform1iARB (GLint a, GLint b) { (*HostCall_p)(NFOSMESA_GLUNIFORM1IARB,cur_context,&a); } void APIENTRY glUniform2iARB (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLUNIFORM2IARB,cur_context,&a); } void APIENTRY glUniform3iARB (GLint a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLUNIFORM3IARB,cur_context,&a); } void APIENTRY glUniform4iARB (GLint a, GLint b, GLint c, GLint d, GLint e) { (*HostCall_p)(NFOSMESA_GLUNIFORM4IARB,cur_context,&a); } void APIENTRY glUniform1fvARB (GLint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM1FVARB,cur_context,&a); } void APIENTRY glUniform2fvARB (GLint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM2FVARB,cur_context,&a); } void APIENTRY glUniform3fvARB (GLint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM3FVARB,cur_context,&a); } void APIENTRY glUniform4fvARB (GLint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM4FVARB,cur_context,&a); } void APIENTRY glUniform1ivARB (GLint a, GLsizei b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM1IVARB,cur_context,&a); } void APIENTRY glUniform2ivARB (GLint a, GLsizei b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM2IVARB,cur_context,&a); } void APIENTRY glUniform3ivARB (GLint a, GLsizei b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM3IVARB,cur_context,&a); } void APIENTRY glUniform4ivARB (GLint a, GLsizei b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLUNIFORM4IVARB,cur_context,&a); } void APIENTRY glUniformMatrix2fvARB (GLint a, GLsizei b, GLboolean c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLUNIFORMMATRIX2FVARB,cur_context,&a); } void APIENTRY glUniformMatrix3fvARB (GLint a, GLsizei b, GLboolean c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLUNIFORMMATRIX3FVARB,cur_context,&a); } void APIENTRY glUniformMatrix4fvARB (GLint a, GLsizei b, GLboolean c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLUNIFORMMATRIX4FVARB,cur_context,&a); } void APIENTRY glGetObjectParameterfvARB (GLhandleARB a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETOBJECTPARAMETERFVARB,cur_context,&a); } void APIENTRY glGetObjectParameterivARB (GLhandleARB a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETOBJECTPARAMETERIVARB,cur_context,&a); } void APIENTRY glGetInfoLogARB (GLhandleARB a, GLsizei b, GLsizei * c, GLcharARB * d) { (*HostCall_p)(NFOSMESA_GLGETINFOLOGARB,cur_context,&a); } void APIENTRY glGetAttachedObjectsARB (GLhandleARB a, GLsizei b, GLsizei * c, GLhandleARB * d) { (*HostCall_p)(NFOSMESA_GLGETATTACHEDOBJECTSARB,cur_context,&a); } GLint APIENTRY glGetUniformLocationARB (GLhandleARB a, const GLcharARB * b) { return (GLint)(*HostCall_p)(NFOSMESA_GLGETUNIFORMLOCATIONARB,cur_context,&a); } void APIENTRY glGetActiveUniformARB (GLhandleARB a, GLuint b, GLsizei c, GLsizei * d, GLint * e, GLenum * f, GLcharARB * g) { (*HostCall_p)(NFOSMESA_GLGETACTIVEUNIFORMARB,cur_context,&a); } void APIENTRY glGetUniformfvARB (GLhandleARB a, GLint b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETUNIFORMFVARB,cur_context,&a); } void APIENTRY glGetUniformivARB (GLhandleARB a, GLint b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETUNIFORMIVARB,cur_context,&a); } void APIENTRY glGetShaderSourceARB (GLhandleARB a, GLsizei b, GLsizei * c, GLcharARB * d) { (*HostCall_p)(NFOSMESA_GLGETSHADERSOURCEARB,cur_context,&a); } void APIENTRY glBindAttribLocationARB (GLhandleARB a, GLuint b, const GLcharARB * c) { (*HostCall_p)(NFOSMESA_GLBINDATTRIBLOCATIONARB,cur_context,&a); } void APIENTRY glGetActiveAttribARB (GLhandleARB a, GLuint b, GLsizei c, GLsizei * d, GLint * e, GLenum * f, GLcharARB * g) { (*HostCall_p)(NFOSMESA_GLGETACTIVEATTRIBARB,cur_context,&a); } GLint APIENTRY glGetAttribLocationARB (GLhandleARB a, const GLcharARB * b) { return (GLint)(*HostCall_p)(NFOSMESA_GLGETATTRIBLOCATIONARB,cur_context,&a); } void APIENTRY glDrawBuffersARB (GLsizei a, const GLenum * b) { (*HostCall_p)(NFOSMESA_GLDRAWBUFFERSARB,cur_context,&a); } void APIENTRY glBlendColorEXT (GLclampf a, GLclampf b, GLclampf c, GLclampf d) { (*HostCall_p)(NFOSMESA_GLBLENDCOLOREXT,cur_context,&a); } void APIENTRY glPolygonOffsetEXT (GLfloat a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPOLYGONOFFSETEXT,cur_context,&a); } void APIENTRY glTexImage3DEXT (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLsizei f, GLint g, GLenum h, GLenum i, const GLvoid * j) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE3DEXT,cur_context,&a); } void APIENTRY glTexSubImage3DEXT (GLenum a, GLint b, GLint c, GLint d, GLint e, GLsizei f, GLsizei g, GLsizei h, GLenum i, GLenum j, const GLvoid * k) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE3DEXT,cur_context,&a); } void APIENTRY glGetTexFilterFuncSGIS (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETTEXFILTERFUNCSGIS,cur_context,&a); } void APIENTRY glTexFilterFuncSGIS (GLenum a, GLenum b, GLsizei c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLTEXFILTERFUNCSGIS,cur_context,&a); } void APIENTRY glTexSubImage1DEXT (GLenum a, GLint b, GLint c, GLsizei d, GLenum e, GLenum f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE1DEXT,cur_context,&a); } void APIENTRY glTexSubImage2DEXT (GLenum a, GLint b, GLint c, GLint d, GLsizei e, GLsizei f, GLenum g, GLenum h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE2DEXT,cur_context,&a); } void APIENTRY glCopyTexImage1DEXT (GLenum a, GLint b, GLenum c, GLint d, GLint e, GLsizei f, GLint g) { (*HostCall_p)(NFOSMESA_GLCOPYTEXIMAGE1DEXT,cur_context,&a); } void APIENTRY glCopyTexImage2DEXT (GLenum a, GLint b, GLenum c, GLint d, GLint e, GLsizei f, GLsizei g, GLint h) { (*HostCall_p)(NFOSMESA_GLCOPYTEXIMAGE2DEXT,cur_context,&a); } void APIENTRY glCopyTexSubImage1DEXT (GLenum a, GLint b, GLint c, GLint d, GLint e, GLsizei f) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE1DEXT,cur_context,&a); } void APIENTRY glCopyTexSubImage2DEXT (GLenum a, GLint b, GLint c, GLint d, GLint e, GLint f, GLsizei g, GLsizei h) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE2DEXT,cur_context,&a); } void APIENTRY glCopyTexSubImage3DEXT (GLenum a, GLint b, GLint c, GLint d, GLint e, GLint f, GLint g, GLsizei h, GLsizei i) { (*HostCall_p)(NFOSMESA_GLCOPYTEXSUBIMAGE3DEXT,cur_context,&a); } void APIENTRY glGetHistogramEXT (GLenum a, GLboolean b, GLenum c, GLenum d, GLvoid * e) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMEXT,cur_context,&a); } void APIENTRY glGetHistogramParameterfvEXT (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERFVEXT,cur_context,&a); } void APIENTRY glGetHistogramParameterivEXT (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETHISTOGRAMPARAMETERIVEXT,cur_context,&a); } void APIENTRY glGetMinmaxEXT (GLenum a, GLboolean b, GLenum c, GLenum d, GLvoid * e) { (*HostCall_p)(NFOSMESA_GLGETMINMAXEXT,cur_context,&a); } void APIENTRY glGetMinmaxParameterfvEXT (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERFVEXT,cur_context,&a); } void APIENTRY glGetMinmaxParameterivEXT (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETMINMAXPARAMETERIVEXT,cur_context,&a); } void APIENTRY glHistogramEXT (GLenum a, GLsizei b, GLenum c, GLboolean d) { (*HostCall_p)(NFOSMESA_GLHISTOGRAMEXT,cur_context,&a); } void APIENTRY glMinmaxEXT (GLenum a, GLenum b, GLboolean c) { (*HostCall_p)(NFOSMESA_GLMINMAXEXT,cur_context,&a); } void APIENTRY glResetHistogramEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLRESETHISTOGRAMEXT,cur_context,&a); } void APIENTRY glResetMinmaxEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLRESETMINMAXEXT,cur_context,&a); } void APIENTRY glConvolutionFilter1DEXT (GLenum a, GLenum b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER1DEXT,cur_context,&a); } void APIENTRY glConvolutionFilter2DEXT (GLenum a, GLenum b, GLsizei c, GLsizei d, GLenum e, GLenum f, const GLvoid * g) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONFILTER2DEXT,cur_context,&a); } void APIENTRY glConvolutionParameterfEXT (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERFEXT,cur_context,&a); } void APIENTRY glConvolutionParameterfvEXT (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERFVEXT,cur_context,&a); } void APIENTRY glConvolutionParameteriEXT (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERIEXT,cur_context,&a); } void APIENTRY glConvolutionParameterivEXT (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLCONVOLUTIONPARAMETERIVEXT,cur_context,&a); } void APIENTRY glCopyConvolutionFilter1DEXT (GLenum a, GLenum b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER1DEXT,cur_context,&a); } void APIENTRY glCopyConvolutionFilter2DEXT (GLenum a, GLenum b, GLint c, GLint d, GLsizei e, GLsizei f) { (*HostCall_p)(NFOSMESA_GLCOPYCONVOLUTIONFILTER2DEXT,cur_context,&a); } void APIENTRY glGetConvolutionFilterEXT (GLenum a, GLenum b, GLenum c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONFILTEREXT,cur_context,&a); } void APIENTRY glGetConvolutionParameterfvEXT (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERFVEXT,cur_context,&a); } void APIENTRY glGetConvolutionParameterivEXT (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETCONVOLUTIONPARAMETERIVEXT,cur_context,&a); } void APIENTRY glGetSeparableFilterEXT (GLenum a, GLenum b, GLenum c, GLvoid * d, GLvoid * e, GLvoid * f) { (*HostCall_p)(NFOSMESA_GLGETSEPARABLEFILTEREXT,cur_context,&a); } void APIENTRY glSeparableFilter2DEXT (GLenum a, GLenum b, GLsizei c, GLsizei d, GLenum e, GLenum f, const GLvoid * g, const GLvoid * h) { (*HostCall_p)(NFOSMESA_GLSEPARABLEFILTER2DEXT,cur_context,&a); } void APIENTRY glColorTableSGI (GLenum a, GLenum b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCOLORTABLESGI,cur_context,&a); } void APIENTRY glColorTableParameterfvSGI (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERFVSGI,cur_context,&a); } void APIENTRY glColorTableParameterivSGI (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEPARAMETERIVSGI,cur_context,&a); } void APIENTRY glCopyColorTableSGI (GLenum a, GLenum b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORTABLESGI,cur_context,&a); } void APIENTRY glGetColorTableSGI (GLenum a, GLenum b, GLenum c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLESGI,cur_context,&a); } void APIENTRY glGetColorTableParameterfvSGI (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERFVSGI,cur_context,&a); } void APIENTRY glGetColorTableParameterivSGI (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERIVSGI,cur_context,&a); } void APIENTRY glPixelTexGenSGIX (GLenum a) { (*HostCall_p)(NFOSMESA_GLPIXELTEXGENSGIX,cur_context,&a); } void APIENTRY glPixelTexGenParameteriSGIS (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLPIXELTEXGENPARAMETERISGIS,cur_context,&a); } void APIENTRY glPixelTexGenParameterivSGIS (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLPIXELTEXGENPARAMETERIVSGIS,cur_context,&a); } void APIENTRY glPixelTexGenParameterfSGIS (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPIXELTEXGENPARAMETERFSGIS,cur_context,&a); } void APIENTRY glPixelTexGenParameterfvSGIS (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLPIXELTEXGENPARAMETERFVSGIS,cur_context,&a); } void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum a, GLint * b) { (*HostCall_p)(NFOSMESA_GLGETPIXELTEXGENPARAMETERIVSGIS,cur_context,&a); } void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum a, GLfloat * b) { (*HostCall_p)(NFOSMESA_GLGETPIXELTEXGENPARAMETERFVSGIS,cur_context,&a); } void APIENTRY glTexImage4DSGIS (GLenum a, GLint b, GLenum c, GLsizei d, GLsizei e, GLsizei f, GLsizei g, GLint h, GLenum i, GLenum j, const GLvoid * k) { (*HostCall_p)(NFOSMESA_GLTEXIMAGE4DSGIS,cur_context,&a); } void APIENTRY glTexSubImage4DSGIS (GLenum a, GLint b, GLint c, GLint d, GLint e, GLint f, GLsizei g, GLsizei h, GLsizei i, GLsizei j, GLenum k, GLenum l, const GLvoid * m) { (*HostCall_p)(NFOSMESA_GLTEXSUBIMAGE4DSGIS,cur_context,&a); } GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei a, const GLuint * b, GLboolean * c) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLARETEXTURESRESIDENTEXT,cur_context,&a); } void APIENTRY glBindTextureEXT (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBINDTEXTUREEXT,cur_context,&a); } void APIENTRY glDeleteTexturesEXT (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETETEXTURESEXT,cur_context,&a); } void APIENTRY glGenTexturesEXT (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENTEXTURESEXT,cur_context,&a); } GLboolean APIENTRY glIsTextureEXT (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISTEXTUREEXT,cur_context,&a); } void APIENTRY glPrioritizeTexturesEXT (GLsizei a, const GLuint * b, const GLclampf * c) { (*HostCall_p)(NFOSMESA_GLPRIORITIZETEXTURESEXT,cur_context,&a); } void APIENTRY glDetailTexFuncSGIS (GLenum a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLDETAILTEXFUNCSGIS,cur_context,&a); } void APIENTRY glGetDetailTexFuncSGIS (GLenum a, GLfloat * b) { (*HostCall_p)(NFOSMESA_GLGETDETAILTEXFUNCSGIS,cur_context,&a); } void APIENTRY glSharpenTexFuncSGIS (GLenum a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLSHARPENTEXFUNCSGIS,cur_context,&a); } void APIENTRY glGetSharpenTexFuncSGIS (GLenum a, GLfloat * b) { (*HostCall_p)(NFOSMESA_GLGETSHARPENTEXFUNCSGIS,cur_context,&a); } void APIENTRY glSampleMaskSGIS (GLclampf a, GLboolean b) { (*HostCall_p)(NFOSMESA_GLSAMPLEMASKSGIS,cur_context,&a); } void APIENTRY glSamplePatternSGIS (GLenum a) { (*HostCall_p)(NFOSMESA_GLSAMPLEPATTERNSGIS,cur_context,&a); } void APIENTRY glArrayElementEXT (GLint a) { (*HostCall_p)(NFOSMESA_GLARRAYELEMENTEXT,cur_context,&a); } void APIENTRY glColorPointerEXT (GLint a, GLenum b, GLsizei c, GLsizei d, const GLvoid * e) { (*HostCall_p)(NFOSMESA_GLCOLORPOINTEREXT,cur_context,&a); } void APIENTRY glDrawArraysEXT (GLenum a, GLint b, GLsizei c) { (*HostCall_p)(NFOSMESA_GLDRAWARRAYSEXT,cur_context,&a); } void APIENTRY glEdgeFlagPointerEXT (GLsizei a, GLsizei b, const GLboolean * c) { (*HostCall_p)(NFOSMESA_GLEDGEFLAGPOINTEREXT,cur_context,&a); } void APIENTRY glGetPointervEXT (GLenum a, GLvoid* * b) { (*HostCall_p)(NFOSMESA_GLGETPOINTERVEXT,cur_context,&a); } void APIENTRY glIndexPointerEXT (GLenum a, GLsizei b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLINDEXPOINTEREXT,cur_context,&a); } void APIENTRY glNormalPointerEXT (GLenum a, GLsizei b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLNORMALPOINTEREXT,cur_context,&a); } void APIENTRY glTexCoordPointerEXT (GLint a, GLenum b, GLsizei c, GLsizei d, const GLvoid * e) { (*HostCall_p)(NFOSMESA_GLTEXCOORDPOINTEREXT,cur_context,&a); } void APIENTRY glVertexPointerEXT (GLint a, GLenum b, GLsizei c, GLsizei d, const GLvoid * e) { (*HostCall_p)(NFOSMESA_GLVERTEXPOINTEREXT,cur_context,&a); } void APIENTRY glBlendEquationEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLBLENDEQUATIONEXT,cur_context,&a); } void APIENTRY glSpriteParameterfSGIX (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLSPRITEPARAMETERFSGIX,cur_context,&a); } void APIENTRY glSpriteParameterfvSGIX (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLSPRITEPARAMETERFVSGIX,cur_context,&a); } void APIENTRY glSpriteParameteriSGIX (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLSPRITEPARAMETERISGIX,cur_context,&a); } void APIENTRY glSpriteParameterivSGIX (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLSPRITEPARAMETERIVSGIX,cur_context,&a); } void APIENTRY glPointParameterfEXT (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFEXT,cur_context,&a); } void APIENTRY glPointParameterfvEXT (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFVEXT,cur_context,&a); } void APIENTRY glPointParameterfSGIS (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFSGIS,cur_context,&a); } void APIENTRY glPointParameterfvSGIS (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERFVSGIS,cur_context,&a); } GLint APIENTRY glGetInstrumentsSGIX (void) { return (GLint)(*HostCall_p)(NFOSMESA_GLGETINSTRUMENTSSGIX,cur_context,NULL); } void APIENTRY glInstrumentsBufferSGIX (GLsizei a, GLint * b) { (*HostCall_p)(NFOSMESA_GLINSTRUMENTSBUFFERSGIX,cur_context,&a); } GLint APIENTRY glPollInstrumentsSGIX (GLint * a) { return (GLint)(*HostCall_p)(NFOSMESA_GLPOLLINSTRUMENTSSGIX,cur_context,&a); } void APIENTRY glReadInstrumentsSGIX (GLint a) { (*HostCall_p)(NFOSMESA_GLREADINSTRUMENTSSGIX,cur_context,&a); } void APIENTRY glStartInstrumentsSGIX (void) { (*HostCall_p)(NFOSMESA_GLSTARTINSTRUMENTSSGIX,cur_context,NULL); } void APIENTRY glStopInstrumentsSGIX (GLint a) { (*HostCall_p)(NFOSMESA_GLSTOPINSTRUMENTSSGIX,cur_context,&a); } void APIENTRY glFrameZoomSGIX (GLint a) { (*HostCall_p)(NFOSMESA_GLFRAMEZOOMSGIX,cur_context,&a); } void APIENTRY glTagSampleBufferSGIX (void) { (*HostCall_p)(NFOSMESA_GLTAGSAMPLEBUFFERSGIX,cur_context,NULL); } void APIENTRY glDeformationMap3dSGIX (GLenum a, GLdouble b, GLdouble c, GLint d, GLint e, GLdouble f, GLdouble g, GLint h, GLint i, GLdouble j, GLdouble k, GLint l, GLint m, const GLdouble * n) { (*HostCall_p)(NFOSMESA_GLDEFORMATIONMAP3DSGIX,cur_context,&a); } void APIENTRY glDeformationMap3fSGIX (GLenum a, GLfloat b, GLfloat c, GLint d, GLint e, GLfloat f, GLfloat g, GLint h, GLint i, GLfloat j, GLfloat k, GLint l, GLint m, const GLfloat * n) { (*HostCall_p)(NFOSMESA_GLDEFORMATIONMAP3FSGIX,cur_context,&a); } void APIENTRY glDeformSGIX (GLbitfield a) { (*HostCall_p)(NFOSMESA_GLDEFORMSGIX,cur_context,&a); } void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield a) { (*HostCall_p)(NFOSMESA_GLLOADIDENTITYDEFORMATIONMAPSGIX,cur_context,&a); } void APIENTRY glReferencePlaneSGIX (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLREFERENCEPLANESGIX,cur_context,&a); } void APIENTRY glFlushRasterSGIX (void) { (*HostCall_p)(NFOSMESA_GLFLUSHRASTERSGIX,cur_context,NULL); } void APIENTRY glFogFuncSGIS (GLsizei a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLFOGFUNCSGIS,cur_context,&a); } void APIENTRY glGetFogFuncSGIS (GLfloat * a) { (*HostCall_p)(NFOSMESA_GLGETFOGFUNCSGIS,cur_context,&a); } void APIENTRY glImageTransformParameteriHP (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLIMAGETRANSFORMPARAMETERIHP,cur_context,&a); } void APIENTRY glImageTransformParameterfHP (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLIMAGETRANSFORMPARAMETERFHP,cur_context,&a); } void APIENTRY glImageTransformParameterivHP (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLIMAGETRANSFORMPARAMETERIVHP,cur_context,&a); } void APIENTRY glImageTransformParameterfvHP (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLIMAGETRANSFORMPARAMETERFVHP,cur_context,&a); } void APIENTRY glGetImageTransformParameterivHP (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETIMAGETRANSFORMPARAMETERIVHP,cur_context,&a); } void APIENTRY glGetImageTransformParameterfvHP (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETIMAGETRANSFORMPARAMETERFVHP,cur_context,&a); } void APIENTRY glColorSubTableEXT (GLenum a, GLsizei b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCOLORSUBTABLEEXT,cur_context,&a); } void APIENTRY glCopyColorSubTableEXT (GLenum a, GLsizei b, GLint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLCOPYCOLORSUBTABLEEXT,cur_context,&a); } void APIENTRY glHintPGI (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLHINTPGI,cur_context,&a); } void APIENTRY glColorTableEXT (GLenum a, GLenum b, GLsizei c, GLenum d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLCOLORTABLEEXT,cur_context,&a); } void APIENTRY glGetColorTableEXT (GLenum a, GLenum b, GLenum c, GLvoid * d) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEEXT,cur_context,&a); } void APIENTRY glGetColorTableParameterivEXT (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERIVEXT,cur_context,&a); } void APIENTRY glGetColorTableParameterfvEXT (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCOLORTABLEPARAMETERFVEXT,cur_context,&a); } void APIENTRY glGetListParameterfvSGIX (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETLISTPARAMETERFVSGIX,cur_context,&a); } void APIENTRY glGetListParameterivSGIX (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETLISTPARAMETERIVSGIX,cur_context,&a); } void APIENTRY glListParameterfSGIX (GLuint a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLLISTPARAMETERFSGIX,cur_context,&a); } void APIENTRY glListParameterfvSGIX (GLuint a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLLISTPARAMETERFVSGIX,cur_context,&a); } void APIENTRY glListParameteriSGIX (GLuint a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLLISTPARAMETERISGIX,cur_context,&a); } void APIENTRY glListParameterivSGIX (GLuint a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLLISTPARAMETERIVSGIX,cur_context,&a); } void APIENTRY glIndexMaterialEXT (GLenum a, GLenum b) { (*HostCall_p)(NFOSMESA_GLINDEXMATERIALEXT,cur_context,&a); } void APIENTRY glIndexFuncEXT (GLenum a, GLclampf b) { (*HostCall_p)(NFOSMESA_GLINDEXFUNCEXT,cur_context,&a); } void APIENTRY glLockArraysEXT (GLint a, GLsizei b) { (*HostCall_p)(NFOSMESA_GLLOCKARRAYSEXT,cur_context,&a); } void APIENTRY glUnlockArraysEXT (void) { (*HostCall_p)(NFOSMESA_GLUNLOCKARRAYSEXT,cur_context,NULL); } void APIENTRY glCullParameterdvEXT (GLenum a, GLdouble * b) { (*HostCall_p)(NFOSMESA_GLCULLPARAMETERDVEXT,cur_context,&a); } void APIENTRY glCullParameterfvEXT (GLenum a, GLfloat * b) { (*HostCall_p)(NFOSMESA_GLCULLPARAMETERFVEXT,cur_context,&a); } void APIENTRY glFragmentColorMaterialSGIX (GLenum a, GLenum b) { (*HostCall_p)(NFOSMESA_GLFRAGMENTCOLORMATERIALSGIX,cur_context,&a); } void APIENTRY glFragmentLightfSGIX (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTFSGIX,cur_context,&a); } void APIENTRY glFragmentLightfvSGIX (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTFVSGIX,cur_context,&a); } void APIENTRY glFragmentLightiSGIX (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTISGIX,cur_context,&a); } void APIENTRY glFragmentLightivSGIX (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTIVSGIX,cur_context,&a); } void APIENTRY glFragmentLightModelfSGIX (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTMODELFSGIX,cur_context,&a); } void APIENTRY glFragmentLightModelfvSGIX (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTMODELFVSGIX,cur_context,&a); } void APIENTRY glFragmentLightModeliSGIX (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTMODELISGIX,cur_context,&a); } void APIENTRY glFragmentLightModelivSGIX (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLFRAGMENTLIGHTMODELIVSGIX,cur_context,&a); } void APIENTRY glFragmentMaterialfSGIX (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTMATERIALFSGIX,cur_context,&a); } void APIENTRY glFragmentMaterialfvSGIX (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTMATERIALFVSGIX,cur_context,&a); } void APIENTRY glFragmentMaterialiSGIX (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTMATERIALISGIX,cur_context,&a); } void APIENTRY glFragmentMaterialivSGIX (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLFRAGMENTMATERIALIVSGIX,cur_context,&a); } void APIENTRY glGetFragmentLightfvSGIX (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETFRAGMENTLIGHTFVSGIX,cur_context,&a); } void APIENTRY glGetFragmentLightivSGIX (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETFRAGMENTLIGHTIVSGIX,cur_context,&a); } void APIENTRY glGetFragmentMaterialfvSGIX (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETFRAGMENTMATERIALFVSGIX,cur_context,&a); } void APIENTRY glGetFragmentMaterialivSGIX (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETFRAGMENTMATERIALIVSGIX,cur_context,&a); } void APIENTRY glLightEnviSGIX (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLLIGHTENVISGIX,cur_context,&a); } void APIENTRY glDrawRangeElementsEXT (GLenum a, GLuint b, GLuint c, GLsizei d, GLenum e, const GLvoid * f) { (*HostCall_p)(NFOSMESA_GLDRAWRANGEELEMENTSEXT,cur_context,&a); } void APIENTRY glApplyTextureEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLAPPLYTEXTUREEXT,cur_context,&a); } void APIENTRY glTextureLightEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLTEXTURELIGHTEXT,cur_context,&a); } void APIENTRY glTextureMaterialEXT (GLenum a, GLenum b) { (*HostCall_p)(NFOSMESA_GLTEXTUREMATERIALEXT,cur_context,&a); } void APIENTRY glAsyncMarkerSGIX (GLuint a) { (*HostCall_p)(NFOSMESA_GLASYNCMARKERSGIX,cur_context,&a); } GLint APIENTRY glFinishAsyncSGIX (GLuint * a) { return (GLint)(*HostCall_p)(NFOSMESA_GLFINISHASYNCSGIX,cur_context,&a); } GLint APIENTRY glPollAsyncSGIX (GLuint * a) { return (GLint)(*HostCall_p)(NFOSMESA_GLPOLLASYNCSGIX,cur_context,&a); } GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei a) { return (GLuint)(*HostCall_p)(NFOSMESA_GLGENASYNCMARKERSSGIX,cur_context,&a); } void APIENTRY glDeleteAsyncMarkersSGIX (GLuint a, GLsizei b) { (*HostCall_p)(NFOSMESA_GLDELETEASYNCMARKERSSGIX,cur_context,&a); } GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISASYNCMARKERSGIX,cur_context,&a); } void APIENTRY glVertexPointervINTEL (GLint a, GLenum b, const GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLVERTEXPOINTERVINTEL,cur_context,&a); } void APIENTRY glNormalPointervINTEL (GLenum a, const GLvoid* * b) { (*HostCall_p)(NFOSMESA_GLNORMALPOINTERVINTEL,cur_context,&a); } void APIENTRY glColorPointervINTEL (GLint a, GLenum b, const GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLCOLORPOINTERVINTEL,cur_context,&a); } void APIENTRY glTexCoordPointervINTEL (GLint a, GLenum b, const GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLTEXCOORDPOINTERVINTEL,cur_context,&a); } void APIENTRY glPixelTransformParameteriEXT (GLenum a, GLenum b, GLint c) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFORMPARAMETERIEXT,cur_context,&a); } void APIENTRY glPixelTransformParameterfEXT (GLenum a, GLenum b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFORMPARAMETERFEXT,cur_context,&a); } void APIENTRY glPixelTransformParameterivEXT (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFORMPARAMETERIVEXT,cur_context,&a); } void APIENTRY glPixelTransformParameterfvEXT (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLPIXELTRANSFORMPARAMETERFVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3bEXT (GLbyte a, GLbyte b, GLbyte c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3BEXT,cur_context,&a); } void APIENTRY glSecondaryColor3bvEXT (const GLbyte * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3BVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3dEXT (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3DEXT,cur_context,&a); } void APIENTRY glSecondaryColor3dvEXT (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3DVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3fEXT (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3FEXT,cur_context,&a); } void APIENTRY glSecondaryColor3fvEXT (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3FVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3iEXT (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3IEXT,cur_context,&a); } void APIENTRY glSecondaryColor3ivEXT (const GLint * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3IVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3sEXT (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3SEXT,cur_context,&a); } void APIENTRY glSecondaryColor3svEXT (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3SVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3ubEXT (GLubyte a, GLubyte b, GLubyte c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UBEXT,cur_context,&a); } void APIENTRY glSecondaryColor3ubvEXT (const GLubyte * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UBVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3uiEXT (GLuint a, GLuint b, GLuint c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UIEXT,cur_context,&a); } void APIENTRY glSecondaryColor3uivEXT (const GLuint * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3UIVEXT,cur_context,&a); } void APIENTRY glSecondaryColor3usEXT (GLushort a, GLushort b, GLushort c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3USEXT,cur_context,&a); } void APIENTRY glSecondaryColor3usvEXT (const GLushort * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3USVEXT,cur_context,&a); } void APIENTRY glSecondaryColorPointerEXT (GLint a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLORPOINTEREXT,cur_context,&a); } void APIENTRY glTextureNormalEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLTEXTURENORMALEXT,cur_context,&a); } void APIENTRY glMultiDrawArraysEXT (GLenum a, GLint * b, GLsizei * c, GLsizei d) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWARRAYSEXT,cur_context,&a); } void APIENTRY glMultiDrawElementsEXT (GLenum a, const GLsizei * b, GLenum c, const GLvoid* * d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWELEMENTSEXT,cur_context,&a); } void APIENTRY glFogCoordfEXT (GLfloat a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDFEXT,cur_context,&a); } void APIENTRY glFogCoordfvEXT (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDFVEXT,cur_context,&a); } void APIENTRY glFogCoorddEXT (GLdouble a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDDEXT,cur_context,&a); } void APIENTRY glFogCoorddvEXT (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDDVEXT,cur_context,&a); } void APIENTRY glFogCoordPointerEXT (GLenum a, GLsizei b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLFOGCOORDPOINTEREXT,cur_context,&a); } void APIENTRY glTangent3bEXT (GLbyte a, GLbyte b, GLbyte c) { (*HostCall_p)(NFOSMESA_GLTANGENT3BEXT,cur_context,&a); } void APIENTRY glTangent3bvEXT (const GLbyte * a) { (*HostCall_p)(NFOSMESA_GLTANGENT3BVEXT,cur_context,&a); } void APIENTRY glTangent3dEXT (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLTANGENT3DEXT,cur_context,&a); } void APIENTRY glTangent3dvEXT (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLTANGENT3DVEXT,cur_context,&a); } void APIENTRY glTangent3fEXT (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLTANGENT3FEXT,cur_context,&a); } void APIENTRY glTangent3fvEXT (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLTANGENT3FVEXT,cur_context,&a); } void APIENTRY glTangent3iEXT (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLTANGENT3IEXT,cur_context,&a); } void APIENTRY glTangent3ivEXT (const GLint * a) { (*HostCall_p)(NFOSMESA_GLTANGENT3IVEXT,cur_context,&a); } void APIENTRY glTangent3sEXT (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLTANGENT3SEXT,cur_context,&a); } void APIENTRY glTangent3svEXT (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLTANGENT3SVEXT,cur_context,&a); } void APIENTRY glBinormal3bEXT (GLbyte a, GLbyte b, GLbyte c) { (*HostCall_p)(NFOSMESA_GLBINORMAL3BEXT,cur_context,&a); } void APIENTRY glBinormal3bvEXT (const GLbyte * a) { (*HostCall_p)(NFOSMESA_GLBINORMAL3BVEXT,cur_context,&a); } void APIENTRY glBinormal3dEXT (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLBINORMAL3DEXT,cur_context,&a); } void APIENTRY glBinormal3dvEXT (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLBINORMAL3DVEXT,cur_context,&a); } void APIENTRY glBinormal3fEXT (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLBINORMAL3FEXT,cur_context,&a); } void APIENTRY glBinormal3fvEXT (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLBINORMAL3FVEXT,cur_context,&a); } void APIENTRY glBinormal3iEXT (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLBINORMAL3IEXT,cur_context,&a); } void APIENTRY glBinormal3ivEXT (const GLint * a) { (*HostCall_p)(NFOSMESA_GLBINORMAL3IVEXT,cur_context,&a); } void APIENTRY glBinormal3sEXT (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLBINORMAL3SEXT,cur_context,&a); } void APIENTRY glBinormal3svEXT (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLBINORMAL3SVEXT,cur_context,&a); } void APIENTRY glTangentPointerEXT (GLenum a, GLsizei b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLTANGENTPOINTEREXT,cur_context,&a); } void APIENTRY glBinormalPointerEXT (GLenum a, GLsizei b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLBINORMALPOINTEREXT,cur_context,&a); } void APIENTRY glFinishTextureSUNX (void) { (*HostCall_p)(NFOSMESA_GLFINISHTEXTURESUNX,cur_context,NULL); } void APIENTRY glGlobalAlphaFactorbSUN (GLbyte a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORBSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactorsSUN (GLshort a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORSSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactoriSUN (GLint a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORISUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactorfSUN (GLfloat a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORFSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactordSUN (GLdouble a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORDSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactorubSUN (GLubyte a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORUBSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactorusSUN (GLushort a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORUSSUN,cur_context,&a); } void APIENTRY glGlobalAlphaFactoruiSUN (GLuint a) { (*HostCall_p)(NFOSMESA_GLGLOBALALPHAFACTORUISUN,cur_context,&a); } void APIENTRY glReplacementCodeuiSUN (GLuint a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUISUN,cur_context,&a); } void APIENTRY glReplacementCodeusSUN (GLushort a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUSSUN,cur_context,&a); } void APIENTRY glReplacementCodeubSUN (GLubyte a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUBSUN,cur_context,&a); } void APIENTRY glReplacementCodeuivSUN (const GLuint * a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUIVSUN,cur_context,&a); } void APIENTRY glReplacementCodeusvSUN (const GLushort * a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUSVSUN,cur_context,&a); } void APIENTRY glReplacementCodeubvSUN (const GLubyte * a) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUBVSUN,cur_context,&a); } void APIENTRY glReplacementCodePointerSUN (GLenum a, GLsizei b, const GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEPOINTERSUN,cur_context,&a); } void APIENTRY glColor4ubVertex2fSUN (GLubyte a, GLubyte b, GLubyte c, GLubyte d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLCOLOR4UBVERTEX2FSUN,cur_context,&a); } void APIENTRY glColor4ubVertex2fvSUN (const GLubyte * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLCOLOR4UBVERTEX2FVSUN,cur_context,&a); } void APIENTRY glColor4ubVertex3fSUN (GLubyte a, GLubyte b, GLubyte c, GLubyte d, GLfloat e, GLfloat f, GLfloat g) { (*HostCall_p)(NFOSMESA_GLCOLOR4UBVERTEX3FSUN,cur_context,&a); } void APIENTRY glColor4ubVertex3fvSUN (const GLubyte * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLCOLOR4UBVERTEX3FVSUN,cur_context,&a); } void APIENTRY glColor3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLCOLOR3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glColor3fVertex3fvSUN (const GLfloat * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLCOLOR3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glNormal3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glNormal3fVertex3fvSUN (const GLfloat * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i, GLfloat j) { (*HostCall_p)(NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCOLOR4FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord2fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FVERTEX3FSUN,cur_context,&a); } void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord4fVertex4fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4FVERTEX4FSUN,cur_context,&a); } void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4FVERTEX4FVSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat a, GLfloat b, GLubyte c, GLubyte d, GLubyte e, GLubyte f, GLfloat g, GLfloat h, GLfloat i) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat * a, const GLubyte * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR4UBVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i, GLfloat j, GLfloat k, GLfloat l) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat * a, const GLfloat * b, const GLfloat * c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i, GLfloat j, GLfloat k, GLfloat l, GLfloat m, GLfloat n, GLfloat o) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FSUN,cur_context,&a); } void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat * a, const GLfloat * b, const GLfloat * c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4FCOLOR4FNORMAL3FVERTEX4FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint * a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUIVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint a, GLubyte b, GLubyte c, GLubyte d, GLubyte e, GLfloat f, GLfloat g, GLfloat h) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint * a, const GLubyte * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR4UBVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUINORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i, GLfloat j, GLfloat k) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUICOLOR4FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e, GLfloat f, GLfloat g, GLfloat h, GLfloat i, GLfloat j, GLfloat k, GLfloat l, GLfloat m) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FSUN,cur_context,&a); } void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint * a, const GLfloat * b, const GLfloat * c, const GLfloat * d, const GLfloat * e) { (*HostCall_p)(NFOSMESA_GLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FVSUN,cur_context,&a); } void APIENTRY glBlendFuncSeparateEXT (GLenum a, GLenum b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLBLENDFUNCSEPARATEEXT,cur_context,&a); } void APIENTRY glBlendFuncSeparateINGR (GLenum a, GLenum b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLBLENDFUNCSEPARATEINGR,cur_context,&a); } void APIENTRY glVertexWeightfEXT (GLfloat a) { (*HostCall_p)(NFOSMESA_GLVERTEXWEIGHTFEXT,cur_context,&a); } void APIENTRY glVertexWeightfvEXT (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLVERTEXWEIGHTFVEXT,cur_context,&a); } void APIENTRY glVertexWeightPointerEXT (GLsizei a, GLenum b, GLsizei c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLVERTEXWEIGHTPOINTEREXT,cur_context,&a); } void APIENTRY glFlushVertexArrayRangeNV (void) { (*HostCall_p)(NFOSMESA_GLFLUSHVERTEXARRAYRANGENV,cur_context,NULL); } void APIENTRY glVertexArrayRangeNV (GLsizei a, const GLvoid * b) { (*HostCall_p)(NFOSMESA_GLVERTEXARRAYRANGENV,cur_context,&a); } void APIENTRY glCombinerParameterfvNV (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLCOMBINERPARAMETERFVNV,cur_context,&a); } void APIENTRY glCombinerParameterfNV (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLCOMBINERPARAMETERFNV,cur_context,&a); } void APIENTRY glCombinerParameterivNV (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLCOMBINERPARAMETERIVNV,cur_context,&a); } void APIENTRY glCombinerParameteriNV (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLCOMBINERPARAMETERINV,cur_context,&a); } void APIENTRY glCombinerInputNV (GLenum a, GLenum b, GLenum c, GLenum d, GLenum e, GLenum f) { (*HostCall_p)(NFOSMESA_GLCOMBINERINPUTNV,cur_context,&a); } void APIENTRY glCombinerOutputNV (GLenum a, GLenum b, GLenum c, GLenum d, GLenum e, GLenum f, GLenum g, GLboolean h, GLboolean i, GLboolean j) { (*HostCall_p)(NFOSMESA_GLCOMBINEROUTPUTNV,cur_context,&a); } void APIENTRY glFinalCombinerInputNV (GLenum a, GLenum b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLFINALCOMBINERINPUTNV,cur_context,&a); } void APIENTRY glGetCombinerInputParameterfvNV (GLenum a, GLenum b, GLenum c, GLenum d, GLfloat * e) { (*HostCall_p)(NFOSMESA_GLGETCOMBINERINPUTPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetCombinerInputParameterivNV (GLenum a, GLenum b, GLenum c, GLenum d, GLint * e) { (*HostCall_p)(NFOSMESA_GLGETCOMBINERINPUTPARAMETERIVNV,cur_context,&a); } void APIENTRY glGetCombinerOutputParameterfvNV (GLenum a, GLenum b, GLenum c, GLfloat * d) { (*HostCall_p)(NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetCombinerOutputParameterivNV (GLenum a, GLenum b, GLenum c, GLint * d) { (*HostCall_p)(NFOSMESA_GLGETCOMBINEROUTPUTPARAMETERIVNV,cur_context,&a); } void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETFINALCOMBINERINPUTPARAMETERIVNV,cur_context,&a); } void APIENTRY glResizeBuffersMESA (void) { (*HostCall_p)(NFOSMESA_GLRESIZEBUFFERSMESA,cur_context,NULL); } void APIENTRY glWindowPos2dMESA (GLdouble a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2DMESA,cur_context,&a); } void APIENTRY glWindowPos2dvMESA (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2DVMESA,cur_context,&a); } void APIENTRY glWindowPos2fMESA (GLfloat a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2FMESA,cur_context,&a); } void APIENTRY glWindowPos2fvMESA (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2FVMESA,cur_context,&a); } void APIENTRY glWindowPos2iMESA (GLint a, GLint b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2IMESA,cur_context,&a); } void APIENTRY glWindowPos2ivMESA (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2IVMESA,cur_context,&a); } void APIENTRY glWindowPos2sMESA (GLshort a, GLshort b) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2SMESA,cur_context,&a); } void APIENTRY glWindowPos2svMESA (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS2SVMESA,cur_context,&a); } void APIENTRY glWindowPos3dMESA (GLdouble a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3DMESA,cur_context,&a); } void APIENTRY glWindowPos3dvMESA (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3DVMESA,cur_context,&a); } void APIENTRY glWindowPos3fMESA (GLfloat a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3FMESA,cur_context,&a); } void APIENTRY glWindowPos3fvMESA (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3FVMESA,cur_context,&a); } void APIENTRY glWindowPos3iMESA (GLint a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3IMESA,cur_context,&a); } void APIENTRY glWindowPos3ivMESA (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3IVMESA,cur_context,&a); } void APIENTRY glWindowPos3sMESA (GLshort a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3SMESA,cur_context,&a); } void APIENTRY glWindowPos3svMESA (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS3SVMESA,cur_context,&a); } void APIENTRY glWindowPos4dMESA (GLdouble a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4DMESA,cur_context,&a); } void APIENTRY glWindowPos4dvMESA (const GLdouble * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4DVMESA,cur_context,&a); } void APIENTRY glWindowPos4fMESA (GLfloat a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4FMESA,cur_context,&a); } void APIENTRY glWindowPos4fvMESA (const GLfloat * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4FVMESA,cur_context,&a); } void APIENTRY glWindowPos4iMESA (GLint a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4IMESA,cur_context,&a); } void APIENTRY glWindowPos4ivMESA (const GLint * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4IVMESA,cur_context,&a); } void APIENTRY glWindowPos4sMESA (GLshort a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4SMESA,cur_context,&a); } void APIENTRY glWindowPos4svMESA (const GLshort * a) { (*HostCall_p)(NFOSMESA_GLWINDOWPOS4SVMESA,cur_context,&a); } void APIENTRY glMultiModeDrawArraysIBM (const GLenum * a, const GLint * b, const GLsizei * c, GLsizei d, GLint e) { (*HostCall_p)(NFOSMESA_GLMULTIMODEDRAWARRAYSIBM,cur_context,&a); } void APIENTRY glMultiModeDrawElementsIBM (const GLenum * a, const GLsizei * b, GLenum c, const GLvoid* const * f, GLsizei d, GLint e) { (*HostCall_p)(NFOSMESA_GLMULTIMODEDRAWELEMENTSIBM,cur_context,&a); } void APIENTRY glColorPointerListIBM (GLint a, GLenum b, GLint c, const GLvoid* * d, GLint e) { (*HostCall_p)(NFOSMESA_GLCOLORPOINTERLISTIBM,cur_context,&a); } void APIENTRY glSecondaryColorPointerListIBM (GLint a, GLenum b, GLint c, const GLvoid* * d, GLint e) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLORPOINTERLISTIBM,cur_context,&a); } void APIENTRY glEdgeFlagPointerListIBM (GLint a, const GLboolean* * b, GLint c) { (*HostCall_p)(NFOSMESA_GLEDGEFLAGPOINTERLISTIBM,cur_context,&a); } void APIENTRY glFogCoordPointerListIBM (GLenum a, GLint b, const GLvoid* * c, GLint d) { (*HostCall_p)(NFOSMESA_GLFOGCOORDPOINTERLISTIBM,cur_context,&a); } void APIENTRY glIndexPointerListIBM (GLenum a, GLint b, const GLvoid* * c, GLint d) { (*HostCall_p)(NFOSMESA_GLINDEXPOINTERLISTIBM,cur_context,&a); } void APIENTRY glNormalPointerListIBM (GLenum a, GLint b, const GLvoid* * c, GLint d) { (*HostCall_p)(NFOSMESA_GLNORMALPOINTERLISTIBM,cur_context,&a); } void APIENTRY glTexCoordPointerListIBM (GLint a, GLenum b, GLint c, const GLvoid* * d, GLint e) { (*HostCall_p)(NFOSMESA_GLTEXCOORDPOINTERLISTIBM,cur_context,&a); } void APIENTRY glVertexPointerListIBM (GLint a, GLenum b, GLint c, const GLvoid* * d, GLint e) { (*HostCall_p)(NFOSMESA_GLVERTEXPOINTERLISTIBM,cur_context,&a); } void APIENTRY glTbufferMask3DFX (GLuint a) { (*HostCall_p)(NFOSMESA_GLTBUFFERMASK3DFX,cur_context,&a); } void APIENTRY glSampleMaskEXT (GLclampf a, GLboolean b) { (*HostCall_p)(NFOSMESA_GLSAMPLEMASKEXT,cur_context,&a); } void APIENTRY glSamplePatternEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLSAMPLEPATTERNEXT,cur_context,&a); } void APIENTRY glTextureColorMaskSGIS (GLboolean a, GLboolean b, GLboolean c, GLboolean d) { (*HostCall_p)(NFOSMESA_GLTEXTURECOLORMASKSGIS,cur_context,&a); } void APIENTRY glIglooInterfaceSGIX (GLenum a, const GLvoid * b) { (*HostCall_p)(NFOSMESA_GLIGLOOINTERFACESGIX,cur_context,&a); } void APIENTRY glDeleteFencesNV (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEFENCESNV,cur_context,&a); } void APIENTRY glGenFencesNV (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENFENCESNV,cur_context,&a); } GLboolean APIENTRY glIsFenceNV (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISFENCENV,cur_context,&a); } GLboolean APIENTRY glTestFenceNV (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLTESTFENCENV,cur_context,&a); } void APIENTRY glGetFenceivNV (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETFENCEIVNV,cur_context,&a); } void APIENTRY glFinishFenceNV (GLuint a) { (*HostCall_p)(NFOSMESA_GLFINISHFENCENV,cur_context,&a); } void APIENTRY glSetFenceNV (GLuint a, GLenum b) { (*HostCall_p)(NFOSMESA_GLSETFENCENV,cur_context,&a); } void APIENTRY glMapControlPointsNV (GLenum a, GLuint b, GLenum c, GLsizei d, GLsizei e, GLint f, GLint g, GLboolean h, const GLvoid * i) { (*HostCall_p)(NFOSMESA_GLMAPCONTROLPOINTSNV,cur_context,&a); } void APIENTRY glMapParameterivNV (GLenum a, GLenum b, const GLint * c) { (*HostCall_p)(NFOSMESA_GLMAPPARAMETERIVNV,cur_context,&a); } void APIENTRY glMapParameterfvNV (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLMAPPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetMapControlPointsNV (GLenum a, GLuint b, GLenum c, GLsizei d, GLsizei e, GLboolean f, GLvoid * g) { (*HostCall_p)(NFOSMESA_GLGETMAPCONTROLPOINTSNV,cur_context,&a); } void APIENTRY glGetMapParameterivNV (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETMAPPARAMETERIVNV,cur_context,&a); } void APIENTRY glGetMapParameterfvNV (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETMAPPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetMapAttribParameterivNV (GLenum a, GLuint b, GLenum c, GLint * d) { (*HostCall_p)(NFOSMESA_GLGETMAPATTRIBPARAMETERIVNV,cur_context,&a); } void APIENTRY glGetMapAttribParameterfvNV (GLenum a, GLuint b, GLenum c, GLfloat * d) { (*HostCall_p)(NFOSMESA_GLGETMAPATTRIBPARAMETERFVNV,cur_context,&a); } void APIENTRY glEvalMapsNV (GLenum a, GLenum b) { (*HostCall_p)(NFOSMESA_GLEVALMAPSNV,cur_context,&a); } void APIENTRY glCombinerStageParameterfvNV (GLenum a, GLenum b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLCOMBINERSTAGEPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetCombinerStageParameterfvNV (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETCOMBINERSTAGEPARAMETERFVNV,cur_context,&a); } GLboolean APIENTRY glAreProgramsResidentNV (GLsizei a, const GLuint * b, GLboolean * c) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLAREPROGRAMSRESIDENTNV,cur_context,&a); } void APIENTRY glBindProgramNV (GLenum a, GLuint b) { (*HostCall_p)(NFOSMESA_GLBINDPROGRAMNV,cur_context,&a); } void APIENTRY glDeleteProgramsNV (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEPROGRAMSNV,cur_context,&a); } void APIENTRY glExecuteProgramNV (GLenum a, GLuint b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLEXECUTEPROGRAMNV,cur_context,&a); } void APIENTRY glGenProgramsNV (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENPROGRAMSNV,cur_context,&a); } void APIENTRY glGetProgramParameterdvNV (GLenum a, GLuint b, GLenum c, GLdouble * d) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMPARAMETERDVNV,cur_context,&a); } void APIENTRY glGetProgramParameterfvNV (GLenum a, GLuint b, GLenum c, GLfloat * d) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetProgramivNV (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMIVNV,cur_context,&a); } void APIENTRY glGetProgramStringNV (GLuint a, GLenum b, GLubyte * c) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMSTRINGNV,cur_context,&a); } void APIENTRY glGetTrackMatrixivNV (GLenum a, GLuint b, GLenum c, GLint * d) { (*HostCall_p)(NFOSMESA_GLGETTRACKMATRIXIVNV,cur_context,&a); } void APIENTRY glGetVertexAttribdvNV (GLuint a, GLenum b, GLdouble * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBDVNV,cur_context,&a); } void APIENTRY glGetVertexAttribfvNV (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBFVNV,cur_context,&a); } void APIENTRY glGetVertexAttribivNV (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBIVNV,cur_context,&a); } void APIENTRY glGetVertexAttribPointervNV (GLuint a, GLenum b, GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBPOINTERVNV,cur_context,&a); } GLboolean APIENTRY glIsProgramNV (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISPROGRAMNV,cur_context,&a); } void APIENTRY glLoadProgramNV (GLenum a, GLuint b, GLsizei c, const GLubyte * d) { (*HostCall_p)(NFOSMESA_GLLOADPROGRAMNV,cur_context,&a); } void APIENTRY glProgramParameter4dNV (GLenum a, GLuint b, GLdouble c, GLdouble d, GLdouble e, GLdouble f) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETER4DNV,cur_context,&a); } void APIENTRY glProgramParameter4dvNV (GLenum a, GLuint b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETER4DVNV,cur_context,&a); } void APIENTRY glProgramParameter4fNV (GLenum a, GLuint b, GLfloat c, GLfloat d, GLfloat e, GLfloat f) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETER4FNV,cur_context,&a); } void APIENTRY glProgramParameter4fvNV (GLenum a, GLuint b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETER4FVNV,cur_context,&a); } void APIENTRY glProgramParameters4dvNV (GLenum a, GLuint b, GLuint c, const GLdouble * d) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETERS4DVNV,cur_context,&a); } void APIENTRY glProgramParameters4fvNV (GLenum a, GLuint b, GLuint c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLPROGRAMPARAMETERS4FVNV,cur_context,&a); } void APIENTRY glRequestResidentProgramsNV (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLREQUESTRESIDENTPROGRAMSNV,cur_context,&a); } void APIENTRY glTrackMatrixNV (GLenum a, GLuint b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLTRACKMATRIXNV,cur_context,&a); } void APIENTRY glVertexAttribPointerNV (GLuint a, GLint b, GLenum c, GLsizei d, const GLvoid * e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBPOINTERNV,cur_context,&a); } void APIENTRY glVertexAttrib1dNV (GLuint a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1DNV,cur_context,&a); } void APIENTRY glVertexAttrib1dvNV (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1DVNV,cur_context,&a); } void APIENTRY glVertexAttrib1fNV (GLuint a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1FNV,cur_context,&a); } void APIENTRY glVertexAttrib1fvNV (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1FVNV,cur_context,&a); } void APIENTRY glVertexAttrib1sNV (GLuint a, GLshort b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1SNV,cur_context,&a); } void APIENTRY glVertexAttrib1svNV (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1SVNV,cur_context,&a); } void APIENTRY glVertexAttrib2dNV (GLuint a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2DNV,cur_context,&a); } void APIENTRY glVertexAttrib2dvNV (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2DVNV,cur_context,&a); } void APIENTRY glVertexAttrib2fNV (GLuint a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2FNV,cur_context,&a); } void APIENTRY glVertexAttrib2fvNV (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2FVNV,cur_context,&a); } void APIENTRY glVertexAttrib2sNV (GLuint a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2SNV,cur_context,&a); } void APIENTRY glVertexAttrib2svNV (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2SVNV,cur_context,&a); } void APIENTRY glVertexAttrib3dNV (GLuint a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3DNV,cur_context,&a); } void APIENTRY glVertexAttrib3dvNV (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3DVNV,cur_context,&a); } void APIENTRY glVertexAttrib3fNV (GLuint a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3FNV,cur_context,&a); } void APIENTRY glVertexAttrib3fvNV (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3FVNV,cur_context,&a); } void APIENTRY glVertexAttrib3sNV (GLuint a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3SNV,cur_context,&a); } void APIENTRY glVertexAttrib3svNV (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3SVNV,cur_context,&a); } void APIENTRY glVertexAttrib4dNV (GLuint a, GLdouble b, GLdouble c, GLdouble d, GLdouble e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4DNV,cur_context,&a); } void APIENTRY glVertexAttrib4dvNV (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4DVNV,cur_context,&a); } void APIENTRY glVertexAttrib4fNV (GLuint a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4FNV,cur_context,&a); } void APIENTRY glVertexAttrib4fvNV (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4FVNV,cur_context,&a); } void APIENTRY glVertexAttrib4sNV (GLuint a, GLshort b, GLshort c, GLshort d, GLshort e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4SNV,cur_context,&a); } void APIENTRY glVertexAttrib4svNV (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4SVNV,cur_context,&a); } void APIENTRY glVertexAttrib4ubNV (GLuint a, GLubyte b, GLubyte c, GLubyte d, GLubyte e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4UBNV,cur_context,&a); } void APIENTRY glVertexAttrib4ubvNV (GLuint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4UBVNV,cur_context,&a); } void APIENTRY glVertexAttribs1dvNV (GLuint a, GLsizei b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS1DVNV,cur_context,&a); } void APIENTRY glVertexAttribs1fvNV (GLuint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS1FVNV,cur_context,&a); } void APIENTRY glVertexAttribs1svNV (GLuint a, GLsizei b, const GLshort * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS1SVNV,cur_context,&a); } void APIENTRY glVertexAttribs2dvNV (GLuint a, GLsizei b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS2DVNV,cur_context,&a); } void APIENTRY glVertexAttribs2fvNV (GLuint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS2FVNV,cur_context,&a); } void APIENTRY glVertexAttribs2svNV (GLuint a, GLsizei b, const GLshort * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS2SVNV,cur_context,&a); } void APIENTRY glVertexAttribs3dvNV (GLuint a, GLsizei b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS3DVNV,cur_context,&a); } void APIENTRY glVertexAttribs3fvNV (GLuint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS3FVNV,cur_context,&a); } void APIENTRY glVertexAttribs3svNV (GLuint a, GLsizei b, const GLshort * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS3SVNV,cur_context,&a); } void APIENTRY glVertexAttribs4dvNV (GLuint a, GLsizei b, const GLdouble * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS4DVNV,cur_context,&a); } void APIENTRY glVertexAttribs4fvNV (GLuint a, GLsizei b, const GLfloat * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS4FVNV,cur_context,&a); } void APIENTRY glVertexAttribs4svNV (GLuint a, GLsizei b, const GLshort * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS4SVNV,cur_context,&a); } void APIENTRY glVertexAttribs4ubvNV (GLuint a, GLsizei b, const GLubyte * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS4UBVNV,cur_context,&a); } void APIENTRY glTexBumpParameterivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLTEXBUMPPARAMETERIVATI,cur_context,&a); } void APIENTRY glTexBumpParameterfvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLTEXBUMPPARAMETERFVATI,cur_context,&a); } void APIENTRY glGetTexBumpParameterivATI (GLenum a, GLint * b) { (*HostCall_p)(NFOSMESA_GLGETTEXBUMPPARAMETERIVATI,cur_context,&a); } void APIENTRY glGetTexBumpParameterfvATI (GLenum a, GLfloat * b) { (*HostCall_p)(NFOSMESA_GLGETTEXBUMPPARAMETERFVATI,cur_context,&a); } GLuint APIENTRY glGenFragmentShadersATI (GLuint a) { return (GLuint)(*HostCall_p)(NFOSMESA_GLGENFRAGMENTSHADERSATI,cur_context,&a); } void APIENTRY glBindFragmentShaderATI (GLuint a) { (*HostCall_p)(NFOSMESA_GLBINDFRAGMENTSHADERATI,cur_context,&a); } void APIENTRY glDeleteFragmentShaderATI (GLuint a) { (*HostCall_p)(NFOSMESA_GLDELETEFRAGMENTSHADERATI,cur_context,&a); } void APIENTRY glBeginFragmentShaderATI (void) { (*HostCall_p)(NFOSMESA_GLBEGINFRAGMENTSHADERATI,cur_context,NULL); } void APIENTRY glEndFragmentShaderATI (void) { (*HostCall_p)(NFOSMESA_GLENDFRAGMENTSHADERATI,cur_context,NULL); } void APIENTRY glPassTexCoordATI (GLuint a, GLuint b, GLenum c) { (*HostCall_p)(NFOSMESA_GLPASSTEXCOORDATI,cur_context,&a); } void APIENTRY glSampleMapATI (GLuint a, GLuint b, GLenum c) { (*HostCall_p)(NFOSMESA_GLSAMPLEMAPATI,cur_context,&a); } void APIENTRY glColorFragmentOp1ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f, GLuint g) { (*HostCall_p)(NFOSMESA_GLCOLORFRAGMENTOP1ATI,cur_context,&a); } void APIENTRY glColorFragmentOp2ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f, GLuint g, GLuint h, GLuint i, GLuint j) { (*HostCall_p)(NFOSMESA_GLCOLORFRAGMENTOP2ATI,cur_context,&a); } void APIENTRY glColorFragmentOp3ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f, GLuint g, GLuint h, GLuint i, GLuint j, GLuint k, GLuint l, GLuint m) { (*HostCall_p)(NFOSMESA_GLCOLORFRAGMENTOP3ATI,cur_context,&a); } void APIENTRY glAlphaFragmentOp1ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f) { (*HostCall_p)(NFOSMESA_GLALPHAFRAGMENTOP1ATI,cur_context,&a); } void APIENTRY glAlphaFragmentOp2ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f, GLuint g, GLuint h, GLuint i) { (*HostCall_p)(NFOSMESA_GLALPHAFRAGMENTOP2ATI,cur_context,&a); } void APIENTRY glAlphaFragmentOp3ATI (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e, GLuint f, GLuint g, GLuint h, GLuint i, GLuint j, GLuint k, GLuint l) { (*HostCall_p)(NFOSMESA_GLALPHAFRAGMENTOP3ATI,cur_context,&a); } void APIENTRY glSetFragmentShaderConstantATI (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLSETFRAGMENTSHADERCONSTANTATI,cur_context,&a); } void APIENTRY glPNTrianglesiATI (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLPNTRIANGLESIATI,cur_context,&a); } void APIENTRY glPNTrianglesfATI (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLPNTRIANGLESFATI,cur_context,&a); } GLuint APIENTRY glNewObjectBufferATI (GLsizei a, const GLvoid * b, GLenum c) { return (GLuint)(*HostCall_p)(NFOSMESA_GLNEWOBJECTBUFFERATI,cur_context,&a); } GLboolean APIENTRY glIsObjectBufferATI (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISOBJECTBUFFERATI,cur_context,&a); } void APIENTRY glUpdateObjectBufferATI (GLuint a, GLuint b, GLsizei c, const GLvoid * d, GLenum e) { (*HostCall_p)(NFOSMESA_GLUPDATEOBJECTBUFFERATI,cur_context,&a); } void APIENTRY glGetObjectBufferfvATI (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETOBJECTBUFFERFVATI,cur_context,&a); } void APIENTRY glGetObjectBufferivATI (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETOBJECTBUFFERIVATI,cur_context,&a); } void APIENTRY glFreeObjectBufferATI (GLuint a) { (*HostCall_p)(NFOSMESA_GLFREEOBJECTBUFFERATI,cur_context,&a); } void APIENTRY glArrayObjectATI (GLenum a, GLint b, GLenum c, GLsizei d, GLuint e, GLuint f) { (*HostCall_p)(NFOSMESA_GLARRAYOBJECTATI,cur_context,&a); } void APIENTRY glGetArrayObjectfvATI (GLenum a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETARRAYOBJECTFVATI,cur_context,&a); } void APIENTRY glGetArrayObjectivATI (GLenum a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETARRAYOBJECTIVATI,cur_context,&a); } void APIENTRY glVariantArrayObjectATI (GLuint a, GLenum b, GLsizei c, GLuint d, GLuint e) { (*HostCall_p)(NFOSMESA_GLVARIANTARRAYOBJECTATI,cur_context,&a); } void APIENTRY glGetVariantArrayObjectfvATI (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTARRAYOBJECTFVATI,cur_context,&a); } void APIENTRY glGetVariantArrayObjectivATI (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTARRAYOBJECTIVATI,cur_context,&a); } void APIENTRY glBeginVertexShaderEXT (void) { (*HostCall_p)(NFOSMESA_GLBEGINVERTEXSHADEREXT,cur_context,NULL); } void APIENTRY glEndVertexShaderEXT (void) { (*HostCall_p)(NFOSMESA_GLENDVERTEXSHADEREXT,cur_context,NULL); } void APIENTRY glBindVertexShaderEXT (GLuint a) { (*HostCall_p)(NFOSMESA_GLBINDVERTEXSHADEREXT,cur_context,&a); } GLuint APIENTRY glGenVertexShadersEXT (GLuint a) { return (GLuint)(*HostCall_p)(NFOSMESA_GLGENVERTEXSHADERSEXT,cur_context,&a); } void APIENTRY glDeleteVertexShaderEXT (GLuint a) { (*HostCall_p)(NFOSMESA_GLDELETEVERTEXSHADEREXT,cur_context,&a); } void APIENTRY glShaderOp1EXT (GLenum a, GLuint b, GLuint c) { (*HostCall_p)(NFOSMESA_GLSHADEROP1EXT,cur_context,&a); } void APIENTRY glShaderOp2EXT (GLenum a, GLuint b, GLuint c, GLuint d) { (*HostCall_p)(NFOSMESA_GLSHADEROP2EXT,cur_context,&a); } void APIENTRY glShaderOp3EXT (GLenum a, GLuint b, GLuint c, GLuint d, GLuint e) { (*HostCall_p)(NFOSMESA_GLSHADEROP3EXT,cur_context,&a); } void APIENTRY glSwizzleEXT (GLuint a, GLuint b, GLenum c, GLenum d, GLenum e, GLenum f) { (*HostCall_p)(NFOSMESA_GLSWIZZLEEXT,cur_context,&a); } void APIENTRY glWriteMaskEXT (GLuint a, GLuint b, GLenum c, GLenum d, GLenum e, GLenum f) { (*HostCall_p)(NFOSMESA_GLWRITEMASKEXT,cur_context,&a); } void APIENTRY glInsertComponentEXT (GLuint a, GLuint b, GLuint c) { (*HostCall_p)(NFOSMESA_GLINSERTCOMPONENTEXT,cur_context,&a); } void APIENTRY glExtractComponentEXT (GLuint a, GLuint b, GLuint c) { (*HostCall_p)(NFOSMESA_GLEXTRACTCOMPONENTEXT,cur_context,&a); } GLuint APIENTRY glGenSymbolsEXT (GLenum a, GLenum b, GLenum c, GLuint d) { return (GLuint)(*HostCall_p)(NFOSMESA_GLGENSYMBOLSEXT,cur_context,&a); } void APIENTRY glSetInvariantEXT (GLuint a, GLenum b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLSETINVARIANTEXT,cur_context,&a); } void APIENTRY glSetLocalConstantEXT (GLuint a, GLenum b, const GLvoid * c) { (*HostCall_p)(NFOSMESA_GLSETLOCALCONSTANTEXT,cur_context,&a); } void APIENTRY glVariantbvEXT (GLuint a, const GLbyte * b) { (*HostCall_p)(NFOSMESA_GLVARIANTBVEXT,cur_context,&a); } void APIENTRY glVariantsvEXT (GLuint a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVARIANTSVEXT,cur_context,&a); } void APIENTRY glVariantivEXT (GLuint a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVARIANTIVEXT,cur_context,&a); } void APIENTRY glVariantfvEXT (GLuint a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVARIANTFVEXT,cur_context,&a); } void APIENTRY glVariantdvEXT (GLuint a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVARIANTDVEXT,cur_context,&a); } void APIENTRY glVariantubvEXT (GLuint a, const GLubyte * b) { (*HostCall_p)(NFOSMESA_GLVARIANTUBVEXT,cur_context,&a); } void APIENTRY glVariantusvEXT (GLuint a, const GLushort * b) { (*HostCall_p)(NFOSMESA_GLVARIANTUSVEXT,cur_context,&a); } void APIENTRY glVariantuivEXT (GLuint a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLVARIANTUIVEXT,cur_context,&a); } void APIENTRY glVariantPointerEXT (GLuint a, GLenum b, GLuint c, const GLvoid * d) { (*HostCall_p)(NFOSMESA_GLVARIANTPOINTEREXT,cur_context,&a); } void APIENTRY glEnableVariantClientStateEXT (GLuint a) { (*HostCall_p)(NFOSMESA_GLENABLEVARIANTCLIENTSTATEEXT,cur_context,&a); } void APIENTRY glDisableVariantClientStateEXT (GLuint a) { (*HostCall_p)(NFOSMESA_GLDISABLEVARIANTCLIENTSTATEEXT,cur_context,&a); } GLuint APIENTRY glBindLightParameterEXT (GLenum a, GLenum b) { return (GLuint)(*HostCall_p)(NFOSMESA_GLBINDLIGHTPARAMETEREXT,cur_context,&a); } GLuint APIENTRY glBindMaterialParameterEXT (GLenum a, GLenum b) { return (GLuint)(*HostCall_p)(NFOSMESA_GLBINDMATERIALPARAMETEREXT,cur_context,&a); } GLuint APIENTRY glBindTexGenParameterEXT (GLenum a, GLenum b, GLenum c) { return (GLuint)(*HostCall_p)(NFOSMESA_GLBINDTEXGENPARAMETEREXT,cur_context,&a); } GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum a, GLenum b) { return (GLuint)(*HostCall_p)(NFOSMESA_GLBINDTEXTUREUNITPARAMETEREXT,cur_context,&a); } GLuint APIENTRY glBindParameterEXT (GLenum a) { return (GLuint)(*HostCall_p)(NFOSMESA_GLBINDPARAMETEREXT,cur_context,&a); } GLboolean APIENTRY glIsVariantEnabledEXT (GLuint a, GLenum b) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISVARIANTENABLEDEXT,cur_context,&a); } void APIENTRY glGetVariantBooleanvEXT (GLuint a, GLenum b, GLboolean * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTBOOLEANVEXT,cur_context,&a); } void APIENTRY glGetVariantIntegervEXT (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTINTEGERVEXT,cur_context,&a); } void APIENTRY glGetVariantFloatvEXT (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTFLOATVEXT,cur_context,&a); } void APIENTRY glGetVariantPointervEXT (GLuint a, GLenum b, GLvoid* * c) { (*HostCall_p)(NFOSMESA_GLGETVARIANTPOINTERVEXT,cur_context,&a); } void APIENTRY glGetInvariantBooleanvEXT (GLuint a, GLenum b, GLboolean * c) { (*HostCall_p)(NFOSMESA_GLGETINVARIANTBOOLEANVEXT,cur_context,&a); } void APIENTRY glGetInvariantIntegervEXT (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETINVARIANTINTEGERVEXT,cur_context,&a); } void APIENTRY glGetInvariantFloatvEXT (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETINVARIANTFLOATVEXT,cur_context,&a); } void APIENTRY glGetLocalConstantBooleanvEXT (GLuint a, GLenum b, GLboolean * c) { (*HostCall_p)(NFOSMESA_GLGETLOCALCONSTANTBOOLEANVEXT,cur_context,&a); } void APIENTRY glGetLocalConstantIntegervEXT (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETLOCALCONSTANTINTEGERVEXT,cur_context,&a); } void APIENTRY glGetLocalConstantFloatvEXT (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETLOCALCONSTANTFLOATVEXT,cur_context,&a); } void APIENTRY glVertexStream1sATI (GLenum a, GLshort b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1SATI,cur_context,&a); } void APIENTRY glVertexStream1svATI (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1SVATI,cur_context,&a); } void APIENTRY glVertexStream1iATI (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1IATI,cur_context,&a); } void APIENTRY glVertexStream1ivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1IVATI,cur_context,&a); } void APIENTRY glVertexStream1fATI (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1FATI,cur_context,&a); } void APIENTRY glVertexStream1fvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1FVATI,cur_context,&a); } void APIENTRY glVertexStream1dATI (GLenum a, GLdouble b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1DATI,cur_context,&a); } void APIENTRY glVertexStream1dvATI (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM1DVATI,cur_context,&a); } void APIENTRY glVertexStream2sATI (GLenum a, GLshort b, GLshort c) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2SATI,cur_context,&a); } void APIENTRY glVertexStream2svATI (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2SVATI,cur_context,&a); } void APIENTRY glVertexStream2iATI (GLenum a, GLint b, GLint c) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2IATI,cur_context,&a); } void APIENTRY glVertexStream2ivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2IVATI,cur_context,&a); } void APIENTRY glVertexStream2fATI (GLenum a, GLfloat b, GLfloat c) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2FATI,cur_context,&a); } void APIENTRY glVertexStream2fvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2FVATI,cur_context,&a); } void APIENTRY glVertexStream2dATI (GLenum a, GLdouble b, GLdouble c) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2DATI,cur_context,&a); } void APIENTRY glVertexStream2dvATI (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM2DVATI,cur_context,&a); } void APIENTRY glVertexStream3sATI (GLenum a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3SATI,cur_context,&a); } void APIENTRY glVertexStream3svATI (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3SVATI,cur_context,&a); } void APIENTRY glVertexStream3iATI (GLenum a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3IATI,cur_context,&a); } void APIENTRY glVertexStream3ivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3IVATI,cur_context,&a); } void APIENTRY glVertexStream3fATI (GLenum a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3FATI,cur_context,&a); } void APIENTRY glVertexStream3fvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3FVATI,cur_context,&a); } void APIENTRY glVertexStream3dATI (GLenum a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3DATI,cur_context,&a); } void APIENTRY glVertexStream3dvATI (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM3DVATI,cur_context,&a); } void APIENTRY glVertexStream4sATI (GLenum a, GLshort b, GLshort c, GLshort d, GLshort e) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4SATI,cur_context,&a); } void APIENTRY glVertexStream4svATI (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4SVATI,cur_context,&a); } void APIENTRY glVertexStream4iATI (GLenum a, GLint b, GLint c, GLint d, GLint e) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4IATI,cur_context,&a); } void APIENTRY glVertexStream4ivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4IVATI,cur_context,&a); } void APIENTRY glVertexStream4fATI (GLenum a, GLfloat b, GLfloat c, GLfloat d, GLfloat e) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4FATI,cur_context,&a); } void APIENTRY glVertexStream4fvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4FVATI,cur_context,&a); } void APIENTRY glVertexStream4dATI (GLenum a, GLdouble b, GLdouble c, GLdouble d, GLdouble e) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4DATI,cur_context,&a); } void APIENTRY glVertexStream4dvATI (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLVERTEXSTREAM4DVATI,cur_context,&a); } void APIENTRY glNormalStream3bATI (GLenum a, GLbyte b, GLbyte c, GLbyte d) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3BATI,cur_context,&a); } void APIENTRY glNormalStream3bvATI (GLenum a, const GLbyte * b) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3BVATI,cur_context,&a); } void APIENTRY glNormalStream3sATI (GLenum a, GLshort b, GLshort c, GLshort d) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3SATI,cur_context,&a); } void APIENTRY glNormalStream3svATI (GLenum a, const GLshort * b) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3SVATI,cur_context,&a); } void APIENTRY glNormalStream3iATI (GLenum a, GLint b, GLint c, GLint d) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3IATI,cur_context,&a); } void APIENTRY glNormalStream3ivATI (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3IVATI,cur_context,&a); } void APIENTRY glNormalStream3fATI (GLenum a, GLfloat b, GLfloat c, GLfloat d) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3FATI,cur_context,&a); } void APIENTRY glNormalStream3fvATI (GLenum a, const GLfloat * b) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3FVATI,cur_context,&a); } void APIENTRY glNormalStream3dATI (GLenum a, GLdouble b, GLdouble c, GLdouble d) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3DATI,cur_context,&a); } void APIENTRY glNormalStream3dvATI (GLenum a, const GLdouble * b) { (*HostCall_p)(NFOSMESA_GLNORMALSTREAM3DVATI,cur_context,&a); } void APIENTRY glClientActiveVertexStreamATI (GLenum a) { (*HostCall_p)(NFOSMESA_GLCLIENTACTIVEVERTEXSTREAMATI,cur_context,&a); } void APIENTRY glVertexBlendEnviATI (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLVERTEXBLENDENVIATI,cur_context,&a); } void APIENTRY glVertexBlendEnvfATI (GLenum a, GLfloat b) { (*HostCall_p)(NFOSMESA_GLVERTEXBLENDENVFATI,cur_context,&a); } void APIENTRY glElementPointerATI (GLenum a, const GLvoid * b) { (*HostCall_p)(NFOSMESA_GLELEMENTPOINTERATI,cur_context,&a); } void APIENTRY glDrawElementArrayATI (GLenum a, GLsizei b) { (*HostCall_p)(NFOSMESA_GLDRAWELEMENTARRAYATI,cur_context,&a); } void APIENTRY glDrawRangeElementArrayATI (GLenum a, GLuint b, GLuint c, GLsizei d) { (*HostCall_p)(NFOSMESA_GLDRAWRANGEELEMENTARRAYATI,cur_context,&a); } void APIENTRY glDrawMeshArraysSUN (GLenum a, GLint b, GLsizei c, GLsizei d) { (*HostCall_p)(NFOSMESA_GLDRAWMESHARRAYSSUN,cur_context,&a); } void APIENTRY glGenOcclusionQueriesNV (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENOCCLUSIONQUERIESNV,cur_context,&a); } void APIENTRY glDeleteOcclusionQueriesNV (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEOCCLUSIONQUERIESNV,cur_context,&a); } GLboolean APIENTRY glIsOcclusionQueryNV (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISOCCLUSIONQUERYNV,cur_context,&a); } void APIENTRY glBeginOcclusionQueryNV (GLuint a) { (*HostCall_p)(NFOSMESA_GLBEGINOCCLUSIONQUERYNV,cur_context,&a); } void APIENTRY glEndOcclusionQueryNV (void) { (*HostCall_p)(NFOSMESA_GLENDOCCLUSIONQUERYNV,cur_context,NULL); } void APIENTRY glGetOcclusionQueryivNV (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETOCCLUSIONQUERYIVNV,cur_context,&a); } void APIENTRY glGetOcclusionQueryuivNV (GLuint a, GLenum b, GLuint * c) { (*HostCall_p)(NFOSMESA_GLGETOCCLUSIONQUERYUIVNV,cur_context,&a); } void APIENTRY glPointParameteriNV (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERINV,cur_context,&a); } void APIENTRY glPointParameterivNV (GLenum a, const GLint * b) { (*HostCall_p)(NFOSMESA_GLPOINTPARAMETERIVNV,cur_context,&a); } void APIENTRY glActiveStencilFaceEXT (GLenum a) { (*HostCall_p)(NFOSMESA_GLACTIVESTENCILFACEEXT,cur_context,&a); } void APIENTRY glElementPointerAPPLE (GLenum a, const GLvoid * b) { (*HostCall_p)(NFOSMESA_GLELEMENTPOINTERAPPLE,cur_context,&a); } void APIENTRY glDrawElementArrayAPPLE (GLenum a, GLint b, GLsizei c) { (*HostCall_p)(NFOSMESA_GLDRAWELEMENTARRAYAPPLE,cur_context,&a); } void APIENTRY glDrawRangeElementArrayAPPLE (GLenum a, GLuint b, GLuint c, GLint d, GLsizei e) { (*HostCall_p)(NFOSMESA_GLDRAWRANGEELEMENTARRAYAPPLE,cur_context,&a); } void APIENTRY glMultiDrawElementArrayAPPLE (GLenum a, const GLint * b, const GLsizei * c, GLsizei d) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWELEMENTARRAYAPPLE,cur_context,&a); } void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum a, GLuint b, GLuint c, const GLint * d, const GLsizei * e, GLsizei f) { (*HostCall_p)(NFOSMESA_GLMULTIDRAWRANGEELEMENTARRAYAPPLE,cur_context,&a); } void APIENTRY glGenFencesAPPLE (GLsizei a, GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENFENCESAPPLE,cur_context,&a); } void APIENTRY glDeleteFencesAPPLE (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEFENCESAPPLE,cur_context,&a); } void APIENTRY glSetFenceAPPLE (GLuint a) { (*HostCall_p)(NFOSMESA_GLSETFENCEAPPLE,cur_context,&a); } GLboolean APIENTRY glIsFenceAPPLE (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISFENCEAPPLE,cur_context,&a); } GLboolean APIENTRY glTestFenceAPPLE (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLTESTFENCEAPPLE,cur_context,&a); } void APIENTRY glFinishFenceAPPLE (GLuint a) { (*HostCall_p)(NFOSMESA_GLFINISHFENCEAPPLE,cur_context,&a); } GLboolean APIENTRY glTestObjectAPPLE (GLenum a, GLuint b) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLTESTOBJECTAPPLE,cur_context,&a); } void APIENTRY glFinishObjectAPPLE (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLFINISHOBJECTAPPLE,cur_context,&a); } void APIENTRY glBindVertexArrayAPPLE (GLuint a) { (*HostCall_p)(NFOSMESA_GLBINDVERTEXARRAYAPPLE,cur_context,&a); } void APIENTRY glDeleteVertexArraysAPPLE (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLDELETEVERTEXARRAYSAPPLE,cur_context,&a); } void APIENTRY glGenVertexArraysAPPLE (GLsizei a, const GLuint * b) { (*HostCall_p)(NFOSMESA_GLGENVERTEXARRAYSAPPLE,cur_context,&a); } GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint a) { return (GLboolean)(*HostCall_p)(NFOSMESA_GLISVERTEXARRAYAPPLE,cur_context,&a); } void APIENTRY glVertexArrayRangeAPPLE (GLsizei a, GLvoid * b) { (*HostCall_p)(NFOSMESA_GLVERTEXARRAYRANGEAPPLE,cur_context,&a); } void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei a, GLvoid * b) { (*HostCall_p)(NFOSMESA_GLFLUSHVERTEXARRAYRANGEAPPLE,cur_context,&a); } void APIENTRY glVertexArrayParameteriAPPLE (GLenum a, GLint b) { (*HostCall_p)(NFOSMESA_GLVERTEXARRAYPARAMETERIAPPLE,cur_context,&a); } void APIENTRY glDrawBuffersATI (GLsizei a, const GLenum * b) { (*HostCall_p)(NFOSMESA_GLDRAWBUFFERSATI,cur_context,&a); } void APIENTRY glProgramNamedParameter4fNV (GLuint a, GLsizei b, const GLubyte * c, GLfloat d, GLfloat e, GLfloat f, GLfloat g) { (*HostCall_p)(NFOSMESA_GLPROGRAMNAMEDPARAMETER4FNV,cur_context,&a); } void APIENTRY glProgramNamedParameter4dNV (GLuint a, GLsizei b, const GLubyte * c, GLdouble d, GLdouble e, GLdouble f, GLdouble g) { (*HostCall_p)(NFOSMESA_GLPROGRAMNAMEDPARAMETER4DNV,cur_context,&a); } void APIENTRY glProgramNamedParameter4fvNV (GLuint a, GLsizei b, const GLubyte * c, const GLfloat * d) { (*HostCall_p)(NFOSMESA_GLPROGRAMNAMEDPARAMETER4FVNV,cur_context,&a); } void APIENTRY glProgramNamedParameter4dvNV (GLuint a, GLsizei b, const GLubyte * c, const GLdouble * d) { (*HostCall_p)(NFOSMESA_GLPROGRAMNAMEDPARAMETER4DVNV,cur_context,&a); } void APIENTRY glGetProgramNamedParameterfvNV (GLuint a, GLsizei b, const GLubyte * c, GLfloat * d) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMNAMEDPARAMETERFVNV,cur_context,&a); } void APIENTRY glGetProgramNamedParameterdvNV (GLuint a, GLsizei b, const GLubyte * c, GLdouble * d) { (*HostCall_p)(NFOSMESA_GLGETPROGRAMNAMEDPARAMETERDVNV,cur_context,&a); } void APIENTRY glVertex2hNV (GLhalfNV a, GLhalfNV b) { (*HostCall_p)(NFOSMESA_GLVERTEX2HNV,cur_context,&a); } void APIENTRY glVertex2hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLVERTEX2HVNV,cur_context,&a); } void APIENTRY glVertex3hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLVERTEX3HNV,cur_context,&a); } void APIENTRY glVertex3hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLVERTEX3HVNV,cur_context,&a); } void APIENTRY glVertex4hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c, GLhalfNV d) { (*HostCall_p)(NFOSMESA_GLVERTEX4HNV,cur_context,&a); } void APIENTRY glVertex4hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLVERTEX4HVNV,cur_context,&a); } void APIENTRY glNormal3hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLNORMAL3HNV,cur_context,&a); } void APIENTRY glNormal3hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLNORMAL3HVNV,cur_context,&a); } void APIENTRY glColor3hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLCOLOR3HNV,cur_context,&a); } void APIENTRY glColor3hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLCOLOR3HVNV,cur_context,&a); } void APIENTRY glColor4hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c, GLhalfNV d) { (*HostCall_p)(NFOSMESA_GLCOLOR4HNV,cur_context,&a); } void APIENTRY glColor4hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLCOLOR4HVNV,cur_context,&a); } void APIENTRY glTexCoord1hNV (GLhalfNV a) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1HNV,cur_context,&a); } void APIENTRY glTexCoord1hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLTEXCOORD1HVNV,cur_context,&a); } void APIENTRY glTexCoord2hNV (GLhalfNV a, GLhalfNV b) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2HNV,cur_context,&a); } void APIENTRY glTexCoord2hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLTEXCOORD2HVNV,cur_context,&a); } void APIENTRY glTexCoord3hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3HNV,cur_context,&a); } void APIENTRY glTexCoord3hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLTEXCOORD3HVNV,cur_context,&a); } void APIENTRY glTexCoord4hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c, GLhalfNV d) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4HNV,cur_context,&a); } void APIENTRY glTexCoord4hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLTEXCOORD4HVNV,cur_context,&a); } void APIENTRY glMultiTexCoord1hNV (GLenum a, GLhalfNV b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1HNV,cur_context,&a); } void APIENTRY glMultiTexCoord1hvNV (GLenum a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD1HVNV,cur_context,&a); } void APIENTRY glMultiTexCoord2hNV (GLenum a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2HNV,cur_context,&a); } void APIENTRY glMultiTexCoord2hvNV (GLenum a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD2HVNV,cur_context,&a); } void APIENTRY glMultiTexCoord3hNV (GLenum a, GLhalfNV b, GLhalfNV c, GLhalfNV d) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3HNV,cur_context,&a); } void APIENTRY glMultiTexCoord3hvNV (GLenum a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD3HVNV,cur_context,&a); } void APIENTRY glMultiTexCoord4hNV (GLenum a, GLhalfNV b, GLhalfNV c, GLhalfNV d, GLhalfNV e) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4HNV,cur_context,&a); } void APIENTRY glMultiTexCoord4hvNV (GLenum a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLMULTITEXCOORD4HVNV,cur_context,&a); } void APIENTRY glFogCoordhNV (GLhalfNV a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDHNV,cur_context,&a); } void APIENTRY glFogCoordhvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLFOGCOORDHVNV,cur_context,&a); } void APIENTRY glSecondaryColor3hNV (GLhalfNV a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3HNV,cur_context,&a); } void APIENTRY glSecondaryColor3hvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLSECONDARYCOLOR3HVNV,cur_context,&a); } void APIENTRY glVertexWeighthNV (GLhalfNV a) { (*HostCall_p)(NFOSMESA_GLVERTEXWEIGHTHNV,cur_context,&a); } void APIENTRY glVertexWeighthvNV (const GLhalfNV * a) { (*HostCall_p)(NFOSMESA_GLVERTEXWEIGHTHVNV,cur_context,&a); } void APIENTRY glVertexAttrib1hNV (GLuint a, GLhalfNV b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1HNV,cur_context,&a); } void APIENTRY glVertexAttrib1hvNV (GLuint a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB1HVNV,cur_context,&a); } void APIENTRY glVertexAttrib2hNV (GLuint a, GLhalfNV b, GLhalfNV c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2HNV,cur_context,&a); } void APIENTRY glVertexAttrib2hvNV (GLuint a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB2HVNV,cur_context,&a); } void APIENTRY glVertexAttrib3hNV (GLuint a, GLhalfNV b, GLhalfNV c, GLhalfNV d) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3HNV,cur_context,&a); } void APIENTRY glVertexAttrib3hvNV (GLuint a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB3HVNV,cur_context,&a); } void APIENTRY glVertexAttrib4hNV (GLuint a, GLhalfNV b, GLhalfNV c, GLhalfNV d, GLhalfNV e) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4HNV,cur_context,&a); } void APIENTRY glVertexAttrib4hvNV (GLuint a, const GLhalfNV * b) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIB4HVNV,cur_context,&a); } void APIENTRY glVertexAttribs1hvNV (GLuint a, GLsizei b, const GLhalfNV * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS1HVNV,cur_context,&a); } void APIENTRY glVertexAttribs2hvNV (GLuint a, GLsizei b, const GLhalfNV * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS2HVNV,cur_context,&a); } void APIENTRY glVertexAttribs3hvNV (GLuint a, GLsizei b, const GLhalfNV * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS3HVNV,cur_context,&a); } void APIENTRY glVertexAttribs4hvNV (GLuint a, GLsizei b, const GLhalfNV * c) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBS4HVNV,cur_context,&a); } void APIENTRY glPixelDataRangeNV (GLenum a, GLsizei b, GLvoid * c) { (*HostCall_p)(NFOSMESA_GLPIXELDATARANGENV,cur_context,&a); } void APIENTRY glFlushPixelDataRangeNV (GLenum a) { (*HostCall_p)(NFOSMESA_GLFLUSHPIXELDATARANGENV,cur_context,&a); } void APIENTRY glPrimitiveRestartNV (void) { (*HostCall_p)(NFOSMESA_GLPRIMITIVERESTARTNV,cur_context,NULL); } void APIENTRY glPrimitiveRestartIndexNV (GLuint a) { (*HostCall_p)(NFOSMESA_GLPRIMITIVERESTARTINDEXNV,cur_context,&a); } GLvoid* APIENTRY glMapObjectBufferATI (GLuint a) { return (GLvoid *)(*HostCall_p)(NFOSMESA_GLMAPOBJECTBUFFERATI,cur_context,&a); } void APIENTRY glUnmapObjectBufferATI (GLuint a) { (*HostCall_p)(NFOSMESA_GLUNMAPOBJECTBUFFERATI,cur_context,&a); } void APIENTRY glStencilOpSeparateATI (GLenum a, GLenum b, GLenum c, GLenum d) { (*HostCall_p)(NFOSMESA_GLSTENCILOPSEPARATEATI,cur_context,&a); } void APIENTRY glStencilFuncSeparateATI (GLenum a, GLenum b, GLint c, GLuint d) { (*HostCall_p)(NFOSMESA_GLSTENCILFUNCSEPARATEATI,cur_context,&a); } void APIENTRY glVertexAttribArrayObjectATI (GLuint a, GLint b, GLenum c, GLboolean d, GLsizei e, GLuint f, GLuint g) { (*HostCall_p)(NFOSMESA_GLVERTEXATTRIBARRAYOBJECTATI,cur_context,&a); } void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint a, GLenum b, GLfloat * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTFVATI,cur_context,&a); } void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint a, GLenum b, GLint * c) { (*HostCall_p)(NFOSMESA_GLGETVERTEXATTRIBARRAYOBJECTIVATI,cur_context,&a); } void APIENTRY glDepthBoundsEXT (GLclampd a, GLclampd b) { (*HostCall_p)(NFOSMESA_GLDEPTHBOUNDSEXT,cur_context,&a); } void APIENTRY glBlendEquationSeparateEXT (GLenum a, GLenum b) { (*HostCall_p)(NFOSMESA_GLBLENDEQUATIONSEPARATEEXT,cur_context,&a); } /* Functions generated: 974 */ aranym-0.9.15/atari/nfosmesa/lib-misc.c000066400000000000000000000040001213346724500176540ustar00rootroot00000000000000/* OSMesa LDG linker, misc functions Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "nfosmesa_nfapi.h" /*--- Defines ---*/ /*--- Variables ---*/ static GLubyte *gl_strings[5]={NULL,NULL,NULL,NULL,""}; /*--- Functions ---*/ const GLubyte* glGetString( GLenum name ) { int i, len; switch(name) { case GL_VERSION: i=0; break; case GL_RENDERER: i=1; break; case GL_VENDOR: i=2; break; case GL_EXTENSIONS: i=3; break; default: i=4; break; } if (i!=4) { if (gl_strings[i]==NULL) { unsigned long params[3]; params[0] = (unsigned long) cur_context; params[1] = (unsigned long) name; len=(int)(*HostCall_p)(NFOSMESA_LENGLGETSTRING,0,params); gl_strings[i]=(GLubyte *)Atari_MxAlloc(len+1); if (gl_strings[i]) { params[0] = (unsigned long) cur_context; params[1] = (unsigned long) name; params[2] = (unsigned long) gl_strings[i]; (*HostCall_p)(NFOSMESA_PUTGLGETSTRING,0,params); } else { return gl_strings[4]; } } } return gl_strings[i]; } void freeglGetString(void) { int i; for (i=0;i<4;i++) { if (gl_strings[i]) { Mfree(gl_strings[i]); gl_strings[i]=NULL; } } } aranym-0.9.15/atari/nfosmesa/lib-misc.h000066400000000000000000000017131213346724500176710ustar00rootroot00000000000000/* OSMesa LDG linker, misc functions Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_MISC_H #define LIB_MISC_H /*--- Includes ---*/ #include /*--- Functions ---*/ const GLubyte* glGetString( GLenum name ); void freeglGetString(void); #endif aranym-0.9.15/atari/nfosmesa/lib-oldmesa.c000066400000000000000000000052601213346724500203560ustar00rootroot00000000000000/* OSMesa LDG linker, compatibility functions with old mesa_gl.ldg/tiny_gl.ldg Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include #include "lib-oldmesa.h" /*--- Defines ---*/ #define VDI_ARGB 0x8 #define VDI_RGB 0xf #define DIRECT_VDI_ARGB 0x10 /*--- Functions ---*/ static OSMesaContext oldmesa_ctx=NULL; void *OSMesaCreateLDG( long format, long type, long width, long height ) { unsigned long buffer_size; void *buffer = NULL; GLenum osmesa_format; switch(format) { case VDI_ARGB: case DIRECT_VDI_ARGB: osmesa_format = OSMESA_ARGB; break; case VDI_RGB: osmesa_format = OSMESA_RGB; break; default: osmesa_format = format; break; } oldmesa_ctx = OSMesaCreateContext(osmesa_format, NULL); if (!oldmesa_ctx) { return NULL; } buffer_size = width * height; if (osmesa_format != OSMESA_COLOR_INDEX) { buffer_size <<= 2; } buffer = Atari_MxAlloc(buffer_size); if (buffer == NULL) { OSMesaDestroyContext(oldmesa_ctx); return NULL; } if (!OSMesaMakeCurrent(oldmesa_ctx, buffer, type, width, height)) { Mfree(buffer); OSMesaDestroyContext(oldmesa_ctx); return NULL; } /* OSMesa draws upside down */ OSMesaPixelStore(OSMESA_Y_UP, 0); memset(buffer, 0, buffer_size); return (buffer); } void OSMesaDestroyLDG(void) { if (oldmesa_ctx) { OSMesaDestroyContext(oldmesa_ctx); oldmesa_ctx=NULL; } } long max_width(void) { GLint value; OSMesaGetIntegerv(OSMESA_MAX_WIDTH, &value); return value; } long max_height(void) { GLint value; OSMesaGetIntegerv(OSMESA_MAX_HEIGHT, &value); return value; } void glOrtho6f( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val ) { glOrtho(left,right, bottom,top, near_val, far_val); } void *Atari_MxAlloc(unsigned long size) { if (((Sversion()&0xFF)>=0x01) | (Sversion()>=0x1900)) { return (void *)Mxalloc(size, MX_PREFTTRAM); } return (void *)Malloc(size); } aranym-0.9.15/atari/nfosmesa/lib-oldmesa.h000066400000000000000000000024651213346724500203670ustar00rootroot00000000000000/* OSMesa LDG linker, old functions prototypes Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_OLDMESA_H #define LIB_OLDMESA_H /*--- Defines ---*/ /* Mxalloc parameters */ #define MX_STRAM 0 #define MX_TTRAM 1 #define MX_PREFSTRAM 2 #define MX_PREFTTRAM 3 /*--- Functions prototypes ---*/ void *Atari_MxAlloc(unsigned long size); void *OSMesaCreateLDG( long format, long type, long width, long height ); void OSMesaDestroyLDG(void); long max_width(void); long max_height(void); void glOrtho6f( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val ); #endif /* OLDMESA_H */ aranym-0.9.15/atari/nfosmesa/lib-osmesa.c000066400000000000000000000111661213346724500202230ustar00rootroot00000000000000/* OSMesa LDG loader Copyright (C) 2004 Patrice Mandin This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /*--- Includes ---*/ #include #include #include #include #include #include #include "lib-osmesa.h" #include "lib-misc.h" #include "../natfeat/nf_ops.h" #include "nfosmesa_nfapi.h" /*--- Defines ---*/ #define NFOSMESA_DEVICE "u:\\dev\\nfosmesa" /*--- Global variables ---*/ OSMesaContext cur_context=0; /*--- Local variables ---*/ static struct nf_ops *nfOps; static unsigned long nfOSMesaId=0; static int dev_handle=-1; int (*HostCall_p)(int function_number, OSMesaContext ctx, void *first_param); /*--- Local functions ---*/ static int HostCall_natfeats(int function_number, OSMesaContext ctx, void *first_param); /*--- OSMesa functions redirectors ---*/ static void InitNatfeat(void) { nfOps = nf_init(); if (!nfOps) { Cconws("__NF cookie not present on this system\r\n"); return; } nfOSMesaId=nfOps->get_id("OSMESA"); if (nfOSMesaId==0) { Cconws("NF OSMesa functions not present on this system\r\n"); } } static int HostCall_natfeats(int function_number, OSMesaContext ctx, void *first_param) { return nfOps->call(nfOSMesaId+function_number,ctx,first_param); } static int HostCall_device(int function_number, OSMesaContext ctx, void *first_param) { unsigned long params[3]; params[0] = (unsigned long) function_number; params[1] = (unsigned long) ctx; params[2] = (unsigned long) first_param; return Fcntl(dev_handle, params, NFOSMESA_IOCTL); } static int InstallHostCall(void) { /* Try the MiNT device */ if (dev_handle<0) { dev_handle = Fopen(NFOSMESA_DEVICE, 0); if (dev_handle>0) { HostCall_p = HostCall_device; return 1; } } /* TOS maybe, try the cookie */ if (nfOSMesaId==0) { InitNatfeat(); if (nfOSMesaId!=0) { HostCall_p = HostCall_natfeats; return 1; } } return 0; } OSMesaContext OSMesaCreateContext( GLenum format, OSMesaContext sharelist ) { if (HostCall_p==NULL) { if (!InstallHostCall()) { return NULL; } } cur_context=(OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESACREATECONTEXT, 0, &format); return cur_context; } OSMesaContext OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist) { if (HostCall_p==NULL) { if (!InstallHostCall()) { return NULL; } } cur_context=(OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESACREATECONTEXTEXT, 0, &format); return cur_context; } void OSMesaDestroyContext( OSMesaContext ctx ) { (*HostCall_p)(NFOSMESA_OSMESADESTROYCONTEXT, 0, &ctx); freeglGetString(); if (dev_handle>0) { Fclose(dev_handle); dev_handle=-1; } } GLboolean OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ) { return (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAMAKECURRENT,0, &ctx); } OSMesaContext OSMesaGetCurrentContext( void ) { return (OSMesaContext)(*HostCall_p)(NFOSMESA_OSMESAGETCURRENTCONTEXT, 0, NULL); } void OSMesaPixelStore( GLint pname, GLint value ) { (*HostCall_p)(NFOSMESA_OSMESAPIXELSTORE,0, &pname); } void OSMesaGetIntegerv( GLint pname, GLint *value ) { (*HostCall_p)(NFOSMESA_OSMESAGETINTEGERV,0, &pname); } GLboolean OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ) { return (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAGETDEPTHBUFFER,0, &c); } GLboolean OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ) { return (GLboolean)(*HostCall_p)(NFOSMESA_OSMESAGETCOLORBUFFER,0, &c); } void *OSMesaGetProcAddress( const char *funcName ) { return (void *)(*HostCall_p)(NFOSMESA_OSMESAGETPROCADDRESS,0, &funcName); } aranym-0.9.15/atari/nfosmesa/lib-osmesa.h000066400000000000000000000035521213346724500202300ustar00rootroot00000000000000/* OSMesa LDG linker, OSMesa*() functions using Natfeats Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef LIB_OSMESA_H #define LIB_OSMESA_H /*--- Types ---*/ typedef struct osmesa_context *OSMesaContext; /*--- Variables ---*/ extern OSMesaContext cur_context; extern int (*HostCall_p)(int function_number, OSMesaContext ctx, void *first_param); /*--- Functions prototypes ---*/ OSMesaContext OSMesaCreateContext( GLenum format, OSMesaContext sharelist ); OSMesaContext OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist); void OSMesaDestroyContext( OSMesaContext ctx ); GLboolean OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height ); OSMesaContext OSMesaGetCurrentContext( void ); void OSMesaPixelStore( GLint pname, GLint value ); void OSMesaGetIntegerv( GLint pname, GLint *value ); GLboolean OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer ); GLboolean OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer ); void *OSMesaGetProcAddress( const char *funcName ); #endif aranym-0.9.15/atari/nfosmesa/link-gl.h000066400000000000000000001355311213346724500175350ustar00rootroot00000000000000 {"glClearIndex", "void glClearIndex( GLfloat c )", glClearIndex}, {"glClearColor", "void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )", glClearColor}, {"glClear", "void glClear( GLbitfield mask )", glClear}, {"glIndexMask", "void glIndexMask( GLuint mask )", glIndexMask}, {"glColorMask", "void glColorMask( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha )", glColorMask}, {"glAlphaFunc", "void glAlphaFunc( GLenum func, GLclampf ref )", glAlphaFunc}, {"glBlendFunc", "void glBlendFunc( GLenum sfactor, GLenum dfactor )", glBlendFunc}, {"glLogicOp", "void glLogicOp( GLenum opcode )", glLogicOp}, {"glCullFace", "void glCullFace( GLenum mode )", glCullFace}, {"glFrontFace", "void glFrontFace( GLenum mode )", glFrontFace}, {"glPointSize", "void glPointSize( GLfloat size )", glPointSize}, {"glLineWidth", "void glLineWidth( GLfloat width )", glLineWidth}, {"glLineStipple", "void glLineStipple( GLint factor, GLushort pattern )", glLineStipple}, {"glPolygonMode", "void glPolygonMode( GLenum face, GLenum mode )", glPolygonMode}, {"glPolygonOffset", "void glPolygonOffset( GLfloat factor, GLfloat units )", glPolygonOffset}, {"glPolygonStipple", "void glPolygonStipple( const GLubyte *mask )", glPolygonStipple}, {"glGetPolygonStipple", "void glGetPolygonStipple( GLubyte *mask )", glGetPolygonStipple}, {"glEdgeFlag", "void glEdgeFlag( GLboolean flag )", glEdgeFlag}, {"glEdgeFlagv", "void glEdgeFlagv( const GLboolean *flag )", glEdgeFlagv}, {"glScissor", "void glScissor( GLint x, GLint y, GLsizei width, GLsizei height)", glScissor}, {"glClipPlane", "void glClipPlane( GLenum plane, const GLdouble *equation )", glClipPlane}, {"glGetClipPlane", "void glGetClipPlane( GLenum plane, GLdouble *equation )", glGetClipPlane}, {"glDrawBuffer", "void glDrawBuffer( GLenum mode )", glDrawBuffer}, {"glReadBuffer", "void glReadBuffer( GLenum mode )", glReadBuffer}, {"glEnable", "void glEnable( GLenum cap )", glEnable}, {"glDisable", "void glDisable( GLenum cap )", glDisable}, {"glIsEnabled", "GLboolean glIsEnabled( GLenum cap )", glIsEnabled}, {"glEnableClientState", "void glEnableClientState( GLenum cap )", glEnableClientState}, {"glDisableClientState", "void glDisableClientState( GLenum cap )", glDisableClientState}, {"glGetBooleanv", "void glGetBooleanv( GLenum pname, GLboolean *params )", glGetBooleanv}, {"glGetDoublev", "void glGetDoublev( GLenum pname, GLdouble *params )", glGetDoublev}, {"glGetFloatv", "void glGetFloatv( GLenum pname, GLfloat *params )", glGetFloatv}, {"glGetIntegerv", "void glGetIntegerv( GLenum pname, GLint *params )", glGetIntegerv}, {"glPushAttrib", "void glPushAttrib( GLbitfield mask )", glPushAttrib}, {"glPopAttrib", "void glPopAttrib( void )", glPopAttrib}, {"glPushClientAttrib", "void glPushClientAttrib( GLbitfield mask )", glPushClientAttrib}, {"glPopClientAttrib", "void glPopClientAttrib( void )", glPopClientAttrib}, {"glRenderMode", "GLint glRenderMode( GLenum mode )", glRenderMode}, {"glGetError", "GLenum glGetError( void )", glGetError}, {"glGetString", "const GLubyte* glGetString( GLenum name )", glGetString}, {"glFinish", "void glFinish( void )", glFinish}, {"glFlush", "void glFlush( void )", glFlush}, {"glHint", "void glHint( GLenum target, GLenum mode )", glHint}, {"glClearDepth", "void glClearDepth( GLclampd depth )", glClearDepth}, {"glDepthFunc", "void glDepthFunc( GLenum func )", glDepthFunc}, {"glDepthMask", "void glDepthMask( GLboolean flag )", glDepthMask}, {"glDepthRange", "void glDepthRange( GLclampd near_val, GLclampd far_val )", glDepthRange}, {"glClearAccum", "void glClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )", glClearAccum}, {"glAccum", "void glAccum( GLenum op, GLfloat value )", glAccum}, {"glMatrixMode", "void glMatrixMode( GLenum mode )", glMatrixMode}, {"glOrtho6d", "void glOrtho( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val )", glOrtho}, {"glFrustum", "void glFrustum( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val )", glFrustum}, {"glViewport", "void glViewport( GLint x, GLint y, GLsizei width, GLsizei height )", glViewport}, {"glPushMatrix", "void glPushMatrix( void )", glPushMatrix}, {"glPopMatrix", "void glPopMatrix( void )", glPopMatrix}, {"glLoadIdentity", "void glLoadIdentity( void )", glLoadIdentity}, {"glLoadMatrixd", "void glLoadMatrixd( const GLdouble *m )", glLoadMatrixd}, {"glLoadMatrixf", "void glLoadMatrixf( const GLfloat *m )", glLoadMatrixf}, {"glMultMatrixd", "void glMultMatrixd( const GLdouble *m )", glMultMatrixd}, {"glMultMatrixf", "void glMultMatrixf( const GLfloat *m )", glMultMatrixf}, {"glRotated", "void glRotated( GLdouble angle, GLdouble x, GLdouble y, GLdouble z )", glRotated}, {"glRotatef", "void glRotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )", glRotatef}, {"glScaled", "void glScaled( GLdouble x, GLdouble y, GLdouble z )", glScaled}, {"glScalef", "void glScalef( GLfloat x, GLfloat y, GLfloat z )", glScalef}, {"glTranslated", "void glTranslated( GLdouble x, GLdouble y, GLdouble z )", glTranslated}, {"glTranslatef", "void glTranslatef( GLfloat x, GLfloat y, GLfloat z )", glTranslatef}, {"glIsList", "GLboolean glIsList( GLuint list )", glIsList}, {"glDeleteLists", "void glDeleteLists( GLuint list, GLsizei range )", glDeleteLists}, {"glGenLists", "GLuint glGenLists( GLsizei range )", glGenLists}, {"glNewList", "void glNewList( GLuint list, GLenum mode )", glNewList}, {"glEndList", "void glEndList( void )", glEndList}, {"glCallList", "void glCallList( GLuint list )", glCallList}, {"glCallLists", "void glCallLists( GLsizei n, GLenum type, const GLvoid *lists )", glCallLists}, {"glListBase", "void glListBase( GLuint base )", glListBase}, {"glBegin", "void glBegin( GLenum mode )", glBegin}, {"glEnd", "void glEnd( void )", glEnd}, {"glVertex2d", "void glVertex2d( GLdouble x, GLdouble y )", glVertex2d}, {"glVertex2f", "void glVertex2f( GLfloat x, GLfloat y )", glVertex2f}, {"glVertex2i", "void glVertex2i( GLint x, GLint y )", glVertex2i}, {"glVertex2s", "void glVertex2s( GLshort x, GLshort y )", glVertex2s}, {"glVertex3d", "void glVertex3d( GLdouble x, GLdouble y, GLdouble z )", glVertex3d}, {"glVertex3f", "void glVertex3f( GLfloat x, GLfloat y, GLfloat z )", glVertex3f}, {"glVertex3i", "void glVertex3i( GLint x, GLint y, GLint z )", glVertex3i}, {"glVertex3s", "void glVertex3s( GLshort x, GLshort y, GLshort z )", glVertex3s}, {"glVertex4d", "void glVertex4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )", glVertex4d}, {"glVertex4f", "void glVertex4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )", glVertex4f}, {"glVertex4i", "void glVertex4i( GLint x, GLint y, GLint z, GLint w )", glVertex4i}, {"glVertex4s", "void glVertex4s( GLshort x, GLshort y, GLshort z, GLshort w )", glVertex4s}, {"glVertex2dv", "void glVertex2dv( const GLdouble *v )", glVertex2dv}, {"glVertex2fv", "void glVertex2fv( const GLfloat *v )", glVertex2fv}, {"glVertex2iv", "void glVertex2iv( const GLint *v )", glVertex2iv}, {"glVertex2sv", "void glVertex2sv( const GLshort *v )", glVertex2sv}, {"glVertex3dv", "void glVertex3dv( const GLdouble *v )", glVertex3dv}, {"glVertex3fv", "void glVertex3fv( const GLfloat *v )", glVertex3fv}, {"glVertex3iv", "void glVertex3iv( const GLint *v )", glVertex3iv}, {"glVertex3sv", "void glVertex3sv( const GLshort *v )", glVertex3sv}, {"glVertex4dv", "void glVertex4dv( const GLdouble *v )", glVertex4dv}, {"glVertex4fv", "void glVertex4fv( const GLfloat *v )", glVertex4fv}, {"glVertex4iv", "void glVertex4iv( const GLint *v )", glVertex4iv}, {"glVertex4sv", "void glVertex4sv( const GLshort *v )", glVertex4sv}, {"glNormal3b", "void glNormal3b( GLbyte nx, GLbyte ny, GLbyte nz )", glNormal3b}, {"glNormal3d", "void glNormal3d( GLdouble nx, GLdouble ny, GLdouble nz )", glNormal3d}, {"glNormal3f", "void glNormal3f( GLfloat nx, GLfloat ny, GLfloat nz )", glNormal3f}, {"glNormal3i", "void glNormal3i( GLint nx, GLint ny, GLint nz )", glNormal3i}, {"glNormal3s", "void glNormal3s( GLshort nx, GLshort ny, GLshort nz )", glNormal3s}, {"glNormal3bv", "void glNormal3bv( const GLbyte *v )", glNormal3bv}, {"glNormal3dv", "void glNormal3dv( const GLdouble *v )", glNormal3dv}, {"glNormal3fv", "void glNormal3fv( const GLfloat *v )", glNormal3fv}, {"glNormal3iv", "void glNormal3iv( const GLint *v )", glNormal3iv}, {"glNormal3sv", "void glNormal3sv( const GLshort *v )", glNormal3sv}, {"glIndexd", "void glIndexd( GLdouble c )", glIndexd}, {"glIndexf", "void glIndexf( GLfloat c )", glIndexf}, {"glIndexi", "void glIndexi( GLint c )", glIndexi}, {"glIndexs", "void glIndexs( GLshort c )", glIndexs}, {"glIndexub", "void glIndexub( GLubyte c )", glIndexub}, {"glIndexdv", "void glIndexdv( const GLdouble *c )", glIndexdv}, {"glIndexfv", "void glIndexfv( const GLfloat *c )", glIndexfv}, {"glIndexiv", "void glIndexiv( const GLint *c )", glIndexiv}, {"glIndexsv", "void glIndexsv( const GLshort *c )", glIndexsv}, {"glIndexubv", "void glIndexubv( const GLubyte *c )", glIndexubv}, {"glColor3b", "void glColor3b( GLbyte red, GLbyte green, GLbyte blue )", glColor3b}, {"glColor3d", "void glColor3d( GLdouble red, GLdouble green, GLdouble blue )", glColor3d}, {"glColor3f", "void glColor3f( GLfloat red, GLfloat green, GLfloat blue )", glColor3f}, {"glColor3i", "void glColor3i( GLint red, GLint green, GLint blue )", glColor3i}, {"glColor3s", "void glColor3s( GLshort red, GLshort green, GLshort blue )", glColor3s}, {"glColor3ub", "void glColor3ub( GLubyte red, GLubyte green, GLubyte blue )", glColor3ub}, {"glColor3ui", "void glColor3ui( GLuint red, GLuint green, GLuint blue )", glColor3ui}, {"glColor3us", "void glColor3us( GLushort red, GLushort green, GLushort blue )", glColor3us}, {"glColor4b", "void glColor4b( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha )", glColor4b}, {"glColor4d", "void glColor4d( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha )", glColor4d}, {"glColor4f", "void glColor4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )", glColor4f}, {"glColor4i", "void glColor4i( GLint red, GLint green, GLint blue, GLint alpha )", glColor4i}, {"glColor4s", "void glColor4s( GLshort red, GLshort green, GLshort blue, GLshort alpha )", glColor4s}, {"glColor4ub", "void glColor4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )", glColor4ub}, {"glColor4ui", "void glColor4ui( GLuint red, GLuint green, GLuint blue, GLuint alpha )", glColor4ui}, {"glColor4us", "void glColor4us( GLushort red, GLushort green, GLushort blue, GLushort alpha )", glColor4us}, {"glColor3bv", "void glColor3bv( const GLbyte *v )", glColor3bv}, {"glColor3dv", "void glColor3dv( const GLdouble *v )", glColor3dv}, {"glColor3fv", "void glColor3fv( const GLfloat *v )", glColor3fv}, {"glColor3iv", "void glColor3iv( const GLint *v )", glColor3iv}, {"glColor3sv", "void glColor3sv( const GLshort *v )", glColor3sv}, {"glColor3ubv", "void glColor3ubv( const GLubyte *v )", glColor3ubv}, {"glColor3uiv", "void glColor3uiv( const GLuint *v )", glColor3uiv}, {"glColor3usv", "void glColor3usv( const GLushort *v )", glColor3usv}, {"glColor4bv", "void glColor4bv( const GLbyte *v )", glColor4bv}, {"glColor4dv", "void glColor4dv( const GLdouble *v )", glColor4dv}, {"glColor4fv", "void glColor4fv( const GLfloat *v )", glColor4fv}, {"glColor4iv", "void glColor4iv( const GLint *v )", glColor4iv}, {"glColor4sv", "void glColor4sv( const GLshort *v )", glColor4sv}, {"glColor4ubv", "void glColor4ubv( const GLubyte *v )", glColor4ubv}, {"glColor4uiv", "void glColor4uiv( const GLuint *v )", glColor4uiv}, {"glColor4usv", "void glColor4usv( const GLushort *v )", glColor4usv}, {"glTexCoord1d", "void glTexCoord1d( GLdouble s )", glTexCoord1d}, {"glTexCoord1f", "void glTexCoord1f( GLfloat s )", glTexCoord1f}, {"glTexCoord1i", "void glTexCoord1i( GLint s )", glTexCoord1i}, {"glTexCoord1s", "void glTexCoord1s( GLshort s )", glTexCoord1s}, {"glTexCoord2d", "void glTexCoord2d( GLdouble s, GLdouble t )", glTexCoord2d}, {"glTexCoord2f", "void glTexCoord2f( GLfloat s, GLfloat t )", glTexCoord2f}, {"glTexCoord2i", "void glTexCoord2i( GLint s, GLint t )", glTexCoord2i}, {"glTexCoord2s", "void glTexCoord2s( GLshort s, GLshort t )", glTexCoord2s}, {"glTexCoord3d", "void glTexCoord3d( GLdouble s, GLdouble t, GLdouble r )", glTexCoord3d}, {"glTexCoord3f", "void glTexCoord3f( GLfloat s, GLfloat t, GLfloat r )", glTexCoord3f}, {"glTexCoord3i", "void glTexCoord3i( GLint s, GLint t, GLint r )", glTexCoord3i}, {"glTexCoord3s", "void glTexCoord3s( GLshort s, GLshort t, GLshort r )", glTexCoord3s}, {"glTexCoord4d", "void glTexCoord4d( GLdouble s, GLdouble t, GLdouble r, GLdouble q )", glTexCoord4d}, {"glTexCoord4f", "void glTexCoord4f( GLfloat s, GLfloat t, GLfloat r, GLfloat q )", glTexCoord4f}, {"glTexCoord4i", "void glTexCoord4i( GLint s, GLint t, GLint r, GLint q )", glTexCoord4i}, {"glTexCoord4s", "void glTexCoord4s( GLshort s, GLshort t, GLshort r, GLshort q )", glTexCoord4s}, {"glTexCoord1dv", "void glTexCoord1dv( const GLdouble *v )", glTexCoord1dv}, {"glTexCoord1fv", "void glTexCoord1fv( const GLfloat *v )", glTexCoord1fv}, {"glTexCoord1iv", "void glTexCoord1iv( const GLint *v )", glTexCoord1iv}, {"glTexCoord1sv", "void glTexCoord1sv( const GLshort *v )", glTexCoord1sv}, {"glTexCoord2dv", "void glTexCoord2dv( const GLdouble *v )", glTexCoord2dv}, {"glTexCoord2fv", "void glTexCoord2fv( const GLfloat *v )", glTexCoord2fv}, {"glTexCoord2iv", "void glTexCoord2iv( const GLint *v )", glTexCoord2iv}, {"glTexCoord2sv", "void glTexCoord2sv( const GLshort *v )", glTexCoord2sv}, {"glTexCoord3dv", "void glTexCoord3dv( const GLdouble *v )", glTexCoord3dv}, {"glTexCoord3fv", "void glTexCoord3fv( const GLfloat *v )", glTexCoord3fv}, {"glTexCoord3iv", "void glTexCoord3iv( const GLint *v )", glTexCoord3iv}, {"glTexCoord3sv", "void glTexCoord3sv( const GLshort *v )", glTexCoord3sv}, {"glTexCoord4dv", "void glTexCoord4dv( const GLdouble *v )", glTexCoord4dv}, {"glTexCoord4fv", "void glTexCoord4fv( const GLfloat *v )", glTexCoord4fv}, {"glTexCoord4iv", "void glTexCoord4iv( const GLint *v )", glTexCoord4iv}, {"glTexCoord4sv", "void glTexCoord4sv( const GLshort *v )", glTexCoord4sv}, {"glRasterPos2d", "void glRasterPos2d( GLdouble x, GLdouble y )", glRasterPos2d}, {"glRasterPos2f", "void glRasterPos2f( GLfloat x, GLfloat y )", glRasterPos2f}, {"glRasterPos2i", "void glRasterPos2i( GLint x, GLint y )", glRasterPos2i}, {"glRasterPos2s", "void glRasterPos2s( GLshort x, GLshort y )", glRasterPos2s}, {"glRasterPos3d", "void glRasterPos3d( GLdouble x, GLdouble y, GLdouble z )", glRasterPos3d}, {"glRasterPos3f", "void glRasterPos3f( GLfloat x, GLfloat y, GLfloat z )", glRasterPos3f}, {"glRasterPos3i", "void glRasterPos3i( GLint x, GLint y, GLint z )", glRasterPos3i}, {"glRasterPos3s", "void glRasterPos3s( GLshort x, GLshort y, GLshort z )", glRasterPos3s}, {"glRasterPos4d", "void glRasterPos4d( GLdouble x, GLdouble y, GLdouble z, GLdouble w )", glRasterPos4d}, {"glRasterPos4f", "void glRasterPos4f( GLfloat x, GLfloat y, GLfloat z, GLfloat w )", glRasterPos4f}, {"glRasterPos4i", "void glRasterPos4i( GLint x, GLint y, GLint z, GLint w )", glRasterPos4i}, {"glRasterPos4s", "void glRasterPos4s( GLshort x, GLshort y, GLshort z, GLshort w )", glRasterPos4s}, {"glRasterPos2dv", "void glRasterPos2dv( const GLdouble *v )", glRasterPos2dv}, {"glRasterPos2fv", "void glRasterPos2fv( const GLfloat *v )", glRasterPos2fv}, {"glRasterPos2iv", "void glRasterPos2iv( const GLint *v )", glRasterPos2iv}, {"glRasterPos2sv", "void glRasterPos2sv( const GLshort *v )", glRasterPos2sv}, {"glRasterPos3dv", "void glRasterPos3dv( const GLdouble *v )", glRasterPos3dv}, {"glRasterPos3fv", "void glRasterPos3fv( const GLfloat *v )", glRasterPos3fv}, {"glRasterPos3iv", "void glRasterPos3iv( const GLint *v )", glRasterPos3iv}, {"glRasterPos3sv", "void glRasterPos3sv( const GLshort *v )", glRasterPos3sv}, {"glRasterPos4dv", "void glRasterPos4dv( const GLdouble *v )", glRasterPos4dv}, {"glRasterPos4fv", "void glRasterPos4fv( const GLfloat *v )", glRasterPos4fv}, {"glRasterPos4iv", "void glRasterPos4iv( const GLint *v )", glRasterPos4iv}, {"glRasterPos4sv", "void glRasterPos4sv( const GLshort *v )", glRasterPos4sv}, {"glRectd", "void glRectd( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 )", glRectd}, {"glRectf", "void glRectf( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 )", glRectf}, {"glRecti", "void glRecti( GLint x1, GLint y1, GLint x2, GLint y2 )", glRecti}, {"glRects", "void glRects( GLshort x1, GLshort y1, GLshort x2, GLshort y2 )", glRects}, {"glRectdv", "void glRectdv( const GLdouble *v1, const GLdouble *v2 )", glRectdv}, {"glRectfv", "void glRectfv( const GLfloat *v1, const GLfloat *v2 )", glRectfv}, {"glRectiv", "void glRectiv( const GLint *v1, const GLint *v2 )", glRectiv}, {"glRectsv", "void glRectsv( const GLshort *v1, const GLshort *v2 )", glRectsv}, {"glVertexPointer", "void glVertexPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr )", glVertexPointer}, {"glNormalPointer", "void glNormalPointer( GLenum type, GLsizei stride, const GLvoid *ptr )", glNormalPointer}, {"glColorPointer", "void glColorPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr )", glColorPointer}, {"glIndexPointer", "void glIndexPointer( GLenum type, GLsizei stride, const GLvoid *ptr )", glIndexPointer}, {"glTexCoordPointer", "void glTexCoordPointer( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr )", glTexCoordPointer}, {"glEdgeFlagPointer", "void glEdgeFlagPointer( GLsizei stride, const GLvoid *ptr )", glEdgeFlagPointer}, {"glGetPointerv", "void glGetPointerv( GLenum pname, GLvoid **params )", glGetPointerv}, {"glArrayElement", "void glArrayElement( GLint i )", glArrayElement}, {"glDrawArrays", "void glDrawArrays( GLenum mode, GLint first, GLsizei count )", glDrawArrays}, {"glDrawElements", "void glDrawElements( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices )", glDrawElements}, {"glInterleavedArrays", "void glInterleavedArrays( GLenum format, GLsizei stride, const GLvoid *pointer )", glInterleavedArrays}, {"glShadeModel", "void glShadeModel( GLenum mode )", glShadeModel}, {"glLightf", "void glLightf( GLenum light, GLenum pname, GLfloat param )", glLightf}, {"glLighti", "void glLighti( GLenum light, GLenum pname, GLint param )", glLighti}, {"glLightfv", "void glLightfv( GLenum light, GLenum pname, const GLfloat *params )", glLightfv}, {"glLightiv", "void glLightiv( GLenum light, GLenum pname, const GLint *params )", glLightiv}, {"glGetLightfv", "void glGetLightfv( GLenum light, GLenum pname, GLfloat *params )", glGetLightfv}, {"glGetLightiv", "void glGetLightiv( GLenum light, GLenum pname, GLint *params )", glGetLightiv}, {"glLightModelf", "void glLightModelf( GLenum pname, GLfloat param )", glLightModelf}, {"glLightModeli", "void glLightModeli( GLenum pname, GLint param )", glLightModeli}, {"glLightModelfv", "void glLightModelfv( GLenum pname, const GLfloat *params )", glLightModelfv}, {"glLightModeliv", "void glLightModeliv( GLenum pname, const GLint *params )", glLightModeliv}, {"glMaterialf", "void glMaterialf( GLenum face, GLenum pname, GLfloat param )", glMaterialf}, {"glMateriali", "void glMateriali( GLenum face, GLenum pname, GLint param )", glMateriali}, {"glMaterialfv", "void glMaterialfv( GLenum face, GLenum pname, const GLfloat *params )", glMaterialfv}, {"glMaterialiv", "void glMaterialiv( GLenum face, GLenum pname, const GLint *params )", glMaterialiv}, {"glGetMaterialfv", "void glGetMaterialfv( GLenum face, GLenum pname, GLfloat *params )", glGetMaterialfv}, {"glGetMaterialiv", "void glGetMaterialiv( GLenum face, GLenum pname, GLint *params )", glGetMaterialiv}, {"glColorMaterial", "void glColorMaterial( GLenum face, GLenum mode )", glColorMaterial}, {"glPixelZoom", "void glPixelZoom( GLfloat xfactor, GLfloat yfactor )", glPixelZoom}, {"glPixelStoref", "void glPixelStoref( GLenum pname, GLfloat param )", glPixelStoref}, {"glPixelStorei", "void glPixelStorei( GLenum pname, GLint param )", glPixelStorei}, {"glPixelTransferf", "void glPixelTransferf( GLenum pname, GLfloat param )", glPixelTransferf}, {"glPixelTransferi", "void glPixelTransferi( GLenum pname, GLint param )", glPixelTransferi}, {"glPixelMapfv", "void glPixelMapfv( GLenum map, GLsizei mapsize, const GLfloat *values )", glPixelMapfv}, {"glPixelMapuiv", "void glPixelMapuiv( GLenum map, GLsizei mapsize, const GLuint *values )", glPixelMapuiv}, {"glPixelMapusv", "void glPixelMapusv( GLenum map, GLsizei mapsize, const GLushort *values )", glPixelMapusv}, {"glGetPixelMapfv", "void glGetPixelMapfv( GLenum map, GLfloat *values )", glGetPixelMapfv}, {"glGetPixelMapuiv", "void glGetPixelMapuiv( GLenum map, GLuint *values )", glGetPixelMapuiv}, {"glGetPixelMapusv", "void glGetPixelMapusv( GLenum map, GLushort *values )", glGetPixelMapusv}, {"glBitmap", "void glBitmap( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap )", glBitmap}, {"glReadPixels", "void glReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels )", glReadPixels}, {"glDrawPixels", "void glDrawPixels( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )", glDrawPixels}, {"glCopyPixels", "void glCopyPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type )", glCopyPixels}, {"glStencilFunc", "void glStencilFunc( GLenum func, GLint ref, GLuint mask )", glStencilFunc}, {"glStencilMask", "void glStencilMask( GLuint mask )", glStencilMask}, {"glStencilOp", "void glStencilOp( GLenum fail, GLenum zfail, GLenum zpass )", glStencilOp}, {"glClearStencil", "void glClearStencil( GLint s )", glClearStencil}, {"glTexGend", "void glTexGend( GLenum coord, GLenum pname, GLdouble param )", glTexGend}, {"glTexGenf", "void glTexGenf( GLenum coord, GLenum pname, GLfloat param )", glTexGenf}, {"glTexGeni", "void glTexGeni( GLenum coord, GLenum pname, GLint param )", glTexGeni}, {"glTexGendv", "void glTexGendv( GLenum coord, GLenum pname, const GLdouble *params )", glTexGendv}, {"glTexGenfv", "void glTexGenfv( GLenum coord, GLenum pname, const GLfloat *params )", glTexGenfv}, {"glTexGeniv", "void glTexGeniv( GLenum coord, GLenum pname, const GLint *params )", glTexGeniv}, {"glGetTexGendv", "void glGetTexGendv( GLenum coord, GLenum pname, GLdouble *params )", glGetTexGendv}, {"glGetTexGenfv", "void glGetTexGenfv( GLenum coord, GLenum pname, GLfloat *params )", glGetTexGenfv}, {"glGetTexGeniv", "void glGetTexGeniv( GLenum coord, GLenum pname, GLint *params )", glGetTexGeniv}, {"glTexEnvf", "void glTexEnvf( GLenum target, GLenum pname, GLfloat param )", glTexEnvf}, {"glTexEnvi", "void glTexEnvi( GLenum target, GLenum pname, GLint param )", glTexEnvi}, {"glTexEnvfv", "void glTexEnvfv( GLenum target, GLenum pname, const GLfloat *params )", glTexEnvfv}, {"glTexEnviv", "void glTexEnviv( GLenum target, GLenum pname, const GLint *params )", glTexEnviv}, {"glGetTexEnvfv", "void glGetTexEnvfv( GLenum target, GLenum pname, GLfloat *params )", glGetTexEnvfv}, {"glGetTexEnviv", "void glGetTexEnviv( GLenum target, GLenum pname, GLint *params )", glGetTexEnviv}, {"glTexParameterf", "void glTexParameterf( GLenum target, GLenum pname, GLfloat param )", glTexParameterf}, {"glTexParameteri", "void glTexParameteri( GLenum target, GLenum pname, GLint param )", glTexParameteri}, {"glTexParameterfv", "void glTexParameterfv( GLenum target, GLenum pname, const GLfloat *params )", glTexParameterfv}, {"glTexParameteriv", "void glTexParameteriv( GLenum target, GLenum pname, const GLint *params )", glTexParameteriv}, {"glGetTexParameterfv", "void glGetTexParameterfv( GLenum target, GLenum pname, GLfloat *params)", glGetTexParameterfv}, {"glGetTexParameteriv", "void glGetTexParameteriv( GLenum target, GLenum pname, GLint *params )", glGetTexParameteriv}, {"glGetTexLevelParameterfv", "void glGetTexLevelParameterfv( GLenum target, GLint level, GLenum pname, GLfloat *params )", glGetTexLevelParameterfv}, {"glGetTexLevelParameteriv", "void glGetTexLevelParameteriv( GLenum target, GLint level, GLenum pname, GLint *params )", glGetTexLevelParameteriv}, {"glTexImage1D", "void glTexImage1D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels )", glTexImage1D}, {"glTexImage2D", "void glTexImage2D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels )", glTexImage2D}, {"glGetTexImage", "void glGetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels )", glGetTexImage}, {"glGenTextures", "void glGenTextures( GLsizei n, GLuint *textures )", glGenTextures}, {"glDeleteTextures", "void glDeleteTextures( GLsizei n, const GLuint *textures)", glDeleteTextures}, {"glBindTexture", "void glBindTexture( GLenum target, GLuint texture )", glBindTexture}, {"glPrioritizeTextures", "void glPrioritizeTextures( GLsizei n, const GLuint *textures, const GLclampf *priorities )", glPrioritizeTextures}, {"glAreTexturesResident", "GLboolean glAreTexturesResident( GLsizei n, const GLuint *textures, GLboolean *residences )", glAreTexturesResident}, {"glIsTexture", "GLboolean glIsTexture( GLuint texture )", glIsTexture}, {"glTexSubImage1D", "void glTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels )", glTexSubImage1D}, {"glTexSubImage2D", "void glTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels )", glTexSubImage2D}, {"glCopyTexImage1D", "void glCopyTexImage1D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border )", glCopyTexImage1D}, {"glCopyTexImage2D", "void glCopyTexImage2D( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border )", glCopyTexImage2D}, {"glCopyTexSubImage1D", "void glCopyTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width )", glCopyTexSubImage1D}, {"glCopyTexSubImage2D", "void glCopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height )", glCopyTexSubImage2D}, {"glMap1d", "void glMap1d( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points )", glMap1d}, {"glMap1f", "void glMap1f( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points )", glMap1f}, {"glMap2d", "void glMap2d( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points )", glMap2d}, {"glMap2f", "void glMap2f( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points )", glMap2f}, {"glGetMapdv", "void glGetMapdv( GLenum target, GLenum query, GLdouble *v )", glGetMapdv}, {"glGetMapfv", "void glGetMapfv( GLenum target, GLenum query, GLfloat *v )", glGetMapfv}, {"glGetMapiv", "void glGetMapiv( GLenum target, GLenum query, GLint *v )", glGetMapiv}, {"glEvalCoord1d", "void glEvalCoord1d( GLdouble u )", glEvalCoord1d}, {"glEvalCoord1f", "void glEvalCoord1f( GLfloat u )", glEvalCoord1f}, {"glEvalCoord1dv", "void glEvalCoord1dv( const GLdouble *u )", glEvalCoord1dv}, {"glEvalCoord1fv", "void glEvalCoord1fv( const GLfloat *u )", glEvalCoord1fv}, {"glEvalCoord2d", "void glEvalCoord2d( GLdouble u, GLdouble v )", glEvalCoord2d}, {"glEvalCoord2f", "void glEvalCoord2f( GLfloat u, GLfloat v )", glEvalCoord2f}, {"glEvalCoord2dv", "void glEvalCoord2dv( const GLdouble *u )", glEvalCoord2dv}, {"glEvalCoord2fv", "void glEvalCoord2fv( const GLfloat *u )", glEvalCoord2fv}, {"glMapGrid1d", "void glMapGrid1d( GLint un, GLdouble u1, GLdouble u2 )", glMapGrid1d}, {"glMapGrid1f", "void glMapGrid1f( GLint un, GLfloat u1, GLfloat u2 )", glMapGrid1f}, {"glMapGrid2d", "void glMapGrid2d( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 )", glMapGrid2d}, {"glMapGrid2f", "void glMapGrid2f( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 )", glMapGrid2f}, {"glEvalPoint1", "void glEvalPoint1( GLint i )", glEvalPoint1}, {"glEvalPoint2", "void glEvalPoint2( GLint i, GLint j )", glEvalPoint2}, {"glEvalMesh1", "void glEvalMesh1( GLenum mode, GLint i1, GLint i2 )", glEvalMesh1}, {"glEvalMesh2", "void glEvalMesh2( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 )", glEvalMesh2}, {"glFogf", "void glFogf( GLenum pname, GLfloat param )", glFogf}, {"glFogi", "void glFogi( GLenum pname, GLint param )", glFogi}, {"glFogfv", "void glFogfv( GLenum pname, const GLfloat *params )", glFogfv}, {"glFogiv", "void glFogiv( GLenum pname, const GLint *params )", glFogiv}, {"glFeedbackBuffer", "void glFeedbackBuffer( GLsizei size, GLenum type, GLfloat *buffer )", glFeedbackBuffer}, {"glPassThrough", "void glPassThrough( GLfloat token )", glPassThrough}, {"glSelectBuffer", "void glSelectBuffer( GLsizei size, GLuint *buffer )", glSelectBuffer}, {"glInitNames", "void glInitNames( void )", glInitNames}, {"glLoadName", "void glLoadName( GLuint name )", glLoadName}, {"glPushName", "void glPushName( GLuint name )", glPushName}, {"glPopName", "void glPopName( void )", glPopName}, /* {"glDrawRangeElements", "void glDrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices )", glDrawRangeElements}, {"glTexImage3D", "void glTexImage3D( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels )", glTexImage3D}, {"glTexSubImage3D", "void glTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)", glTexSubImage3D}, {"glCopyTexSubImage3D", "void glCopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height )", glCopyTexSubImage3D}, {"glColorTable", "void glColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table )", glColorTable}, {"glColorSubTable", "void glColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data )", glColorSubTable}, {"glColorTableParameteriv", "void glColorTableParameteriv(GLenum target, GLenum pname, const GLint *params)", glColorTableParameteriv}, {"glColorTableParameterfv", "void glColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params)", glColorTableParameterfv}, {"glCopyColorSubTable", "void glCopyColorSubTable( GLenum target, GLsizei start, GLint x, GLint y, GLsizei width )", glCopyColorSubTable}, {"glCopyColorTable", "void glCopyColorTable( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width )", glCopyColorTable}, {"glGetColorTable", "void glGetColorTable( GLenum target, GLenum format, GLenum type, GLvoid *table )", glGetColorTable}, {"glGetColorTableParameterfv", "void glGetColorTableParameterfv( GLenum target, GLenum pname, GLfloat *params )", glGetColorTableParameterfv}, {"glGetColorTableParameteriv", "void glGetColorTableParameteriv( GLenum target, GLenum pname, GLint *params )", glGetColorTableParameteriv}, {"glBlendEquation", "void glBlendEquation( GLenum mode )", glBlendEquation}, {"glBlendColor", "void glBlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )", glBlendColor}, {"glHistogram", "void glHistogram( GLenum target, GLsizei width, GLenum internalformat, GLboolean sink )", glHistogram}, {"glResetHistogram", "void glResetHistogram( GLenum target )", glResetHistogram}, {"glGetHistogram", "void glGetHistogram( GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values )", glGetHistogram}, {"glGetHistogramParameterfv", "void glGetHistogramParameterfv( GLenum target, GLenum pname, GLfloat *params )", glGetHistogramParameterfv}, {"glGetHistogramParameteriv", "void glGetHistogramParameteriv( GLenum target, GLenum pname, GLint *params )", glGetHistogramParameteriv}, {"glMinmax", "void glMinmax( GLenum target, GLenum internalformat, GLboolean sink )", glMinmax}, {"glResetMinmax", "void glResetMinmax( GLenum target )", glResetMinmax}, {"glGetMinmax", "void glGetMinmax( GLenum target, GLboolean reset, GLenum format, GLenum types, GLvoid *values )", glGetMinmax}, {"glGetMinmaxParameterfv", "void glGetMinmaxParameterfv( GLenum target, GLenum pname, GLfloat *params )", glGetMinmaxParameterfv}, {"glGetMinmaxParameteriv", "void glGetMinmaxParameteriv( GLenum target, GLenum pname, GLint *params )", glGetMinmaxParameteriv}, {"glConvolutionFilter1D", "void glConvolutionFilter1D( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image )", glConvolutionFilter1D}, {"glConvolutionFilter2D", "void glConvolutionFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image )", glConvolutionFilter2D}, {"glConvolutionParameterf", "void glConvolutionParameterf( GLenum target, GLenum pname, GLfloat params )", glConvolutionParameterf}, {"glConvolutionParameterfv", "void glConvolutionParameterfv( GLenum target, GLenum pname, const GLfloat *params )", glConvolutionParameterfv}, {"glConvolutionParameteri", "void glConvolutionParameteri( GLenum target, GLenum pname, GLint params )", glConvolutionParameteri}, {"glConvolutionParameteriv", "void glConvolutionParameteriv( GLenum target, GLenum pname, const GLint *params )", glConvolutionParameteriv}, {"glCopyConvolutionFilter1D", "void glCopyConvolutionFilter1D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width )", glCopyConvolutionFilter1D}, {"glCopyConvolutionFilter2D", "void glCopyConvolutionFilter2D( GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)", glCopyConvolutionFilter2D}, {"glGetConvolutionFilter", "void glGetConvolutionFilter( GLenum target, GLenum format, GLenum type, GLvoid *image )", glGetConvolutionFilter}, {"glGetConvolutionParameterfv", "void glGetConvolutionParameterfv( GLenum target, GLenum pname, GLfloat *params )", glGetConvolutionParameterfv}, {"glGetConvolutionParameteriv", "void glGetConvolutionParameteriv( GLenum target, GLenum pname, GLint *params )", glGetConvolutionParameteriv}, {"glSeparableFilter2D", "void glSeparableFilter2D( GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column )", glSeparableFilter2D}, {"glGetSeparableFilter", "void glGetSeparableFilter( GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span )", glGetSeparableFilter}, {"glActiveTexture", "void glActiveTexture( GLenum texture )", glActiveTexture}, {"glClientActiveTexture", "void glClientActiveTexture( GLenum texture )", glClientActiveTexture}, {"glCompressedTexImage1D", "void glCompressedTexImage1D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data )", glCompressedTexImage1D}, {"glCompressedTexImage2D", "void glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data )", glCompressedTexImage2D}, {"glCompressedTexImage3D", "void glCompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data )", glCompressedTexImage3D}, {"glCompressedTexSubImage1D", "void glCompressedTexSubImage1D( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data )", glCompressedTexSubImage1D}, {"glCompressedTexSubImage2D", "void glCompressedTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data )", glCompressedTexSubImage2D}, {"glCompressedTexSubImage3D", "void glCompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data )", glCompressedTexSubImage3D}, {"glGetCompressedTexImage", "void glGetCompressedTexImage( GLenum target, GLint lod, GLvoid *img )", glGetCompressedTexImage}, {"glMultiTexCoord1d", "void glMultiTexCoord1d( GLenum target, GLdouble s )", glMultiTexCoord1d}, {"glMultiTexCoord1dv", "void glMultiTexCoord1dv( GLenum target, const GLdouble *v )", glMultiTexCoord1dv}, {"glMultiTexCoord1f", "void glMultiTexCoord1f( GLenum target, GLfloat s )", glMultiTexCoord1f}, {"glMultiTexCoord1fv", "void glMultiTexCoord1fv( GLenum target, const GLfloat *v )", glMultiTexCoord1fv}, {"glMultiTexCoord1i", "void glMultiTexCoord1i( GLenum target, GLint s )", glMultiTexCoord1i}, {"glMultiTexCoord1iv", "void glMultiTexCoord1iv( GLenum target, const GLint *v )", glMultiTexCoord1iv}, {"glMultiTexCoord1s", "void glMultiTexCoord1s( GLenum target, GLshort s )", glMultiTexCoord1s}, {"glMultiTexCoord1sv", "void glMultiTexCoord1sv( GLenum target, const GLshort *v )", glMultiTexCoord1sv}, {"glMultiTexCoord2d", "void glMultiTexCoord2d( GLenum target, GLdouble s, GLdouble t )", glMultiTexCoord2d}, {"glMultiTexCoord2dv", "void glMultiTexCoord2dv( GLenum target, const GLdouble *v )", glMultiTexCoord2dv}, {"glMultiTexCoord2f", "void glMultiTexCoord2f( GLenum target, GLfloat s, GLfloat t )", glMultiTexCoord2f}, {"glMultiTexCoord2fv", "void glMultiTexCoord2fv( GLenum target, const GLfloat *v )", glMultiTexCoord2fv}, {"glMultiTexCoord2i", "void glMultiTexCoord2i( GLenum target, GLint s, GLint t )", glMultiTexCoord2i}, {"glMultiTexCoord2iv", "void glMultiTexCoord2iv( GLenum target, const GLint *v )", glMultiTexCoord2iv}, {"glMultiTexCoord2s", "void glMultiTexCoord2s( GLenum target, GLshort s, GLshort t )", glMultiTexCoord2s}, {"glMultiTexCoord2sv", "void glMultiTexCoord2sv( GLenum target, const GLshort *v )", glMultiTexCoord2sv}, {"glMultiTexCoord3d", "void glMultiTexCoord3d( GLenum target, GLdouble s, GLdouble t, GLdouble r )", glMultiTexCoord3d}, {"glMultiTexCoord3dv", "void glMultiTexCoord3dv( GLenum target, const GLdouble *v )", glMultiTexCoord3dv}, {"glMultiTexCoord3f", "void glMultiTexCoord3f( GLenum target, GLfloat s, GLfloat t, GLfloat r )", glMultiTexCoord3f}, {"glMultiTexCoord3fv", "void glMultiTexCoord3fv( GLenum target, const GLfloat *v )", glMultiTexCoord3fv}, {"glMultiTexCoord3i", "void glMultiTexCoord3i( GLenum target, GLint s, GLint t, GLint r )", glMultiTexCoord3i}, {"glMultiTexCoord3iv", "void glMultiTexCoord3iv( GLenum target, const GLint *v )", glMultiTexCoord3iv}, {"glMultiTexCoord3s", "void glMultiTexCoord3s( GLenum target, GLshort s, GLshort t, GLshort r )", glMultiTexCoord3s}, {"glMultiTexCoord3sv", "void glMultiTexCoord3sv( GLenum target, const GLshort *v )", glMultiTexCoord3sv}, {"glMultiTexCoord4d", "void glMultiTexCoord4d( GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q )", glMultiTexCoord4d}, {"glMultiTexCoord4dv", "void glMultiTexCoord4dv( GLenum target, const GLdouble *v )", glMultiTexCoord4dv}, {"glMultiTexCoord4f", "void glMultiTexCoord4f( GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q )", glMultiTexCoord4f}, {"glMultiTexCoord4fv", "void glMultiTexCoord4fv( GLenum target, const GLfloat *v )", glMultiTexCoord4fv}, {"glMultiTexCoord4i", "void glMultiTexCoord4i( GLenum target, GLint s, GLint t, GLint r, GLint q )", glMultiTexCoord4i}, {"glMultiTexCoord4iv", "void glMultiTexCoord4iv( GLenum target, const GLint *v )", glMultiTexCoord4iv}, {"glMultiTexCoord4s", "void glMultiTexCoord4s( GLenum target, GLshort s, GLshort t, GLshort r, GLshort q )", glMultiTexCoord4s}, {"glMultiTexCoord4sv", "void glMultiTexCoord4sv( GLenum target, const GLshort *v )", glMultiTexCoord4sv}, {"glLoadTransposeMatrixd", "void glLoadTransposeMatrixd( const GLdouble m[16] )", glLoadTransposeMatrixd}, {"glLoadTransposeMatrixf", "void glLoadTransposeMatrixf( const GLfloat m[16] )", glLoadTransposeMatrixf}, {"glMultTransposeMatrixd", "void glMultTransposeMatrixd( const GLdouble m[16] )", glMultTransposeMatrixd}, {"glMultTransposeMatrixf", "void glMultTransposeMatrixf( const GLfloat m[16] )", glMultTransposeMatrixf}, {"glSampleCoverage", "void glSampleCoverage( GLclampf value, GLboolean invert )", glSampleCoverage}, {"glActiveTextureARB", "void glActiveTextureARB(GLenum texture)", glActiveTextureARB}, {"glClientActiveTextureARB", "void glClientActiveTextureARB(GLenum texture)", glClientActiveTextureARB}, {"glMultiTexCoord1dARB", "void glMultiTexCoord1dARB(GLenum target, GLdouble s)", glMultiTexCoord1dARB}, {"glMultiTexCoord1dvARB", "void glMultiTexCoord1dvARB(GLenum target, const GLdouble *v)", glMultiTexCoord1dvARB}, {"glMultiTexCoord1fARB", "void glMultiTexCoord1fARB(GLenum target, GLfloat s)", glMultiTexCoord1fARB}, {"glMultiTexCoord1fvARB", "void glMultiTexCoord1fvARB(GLenum target, const GLfloat *v)", glMultiTexCoord1fvARB}, {"glMultiTexCoord1iARB", "void glMultiTexCoord1iARB(GLenum target, GLint s)", glMultiTexCoord1iARB}, {"glMultiTexCoord1ivARB", "void glMultiTexCoord1ivARB(GLenum target, const GLint *v)", glMultiTexCoord1ivARB}, {"glMultiTexCoord1sARB", "void glMultiTexCoord1sARB(GLenum target, GLshort s)", glMultiTexCoord1sARB}, {"glMultiTexCoord1svARB", "void glMultiTexCoord1svARB(GLenum target, const GLshort *v)", glMultiTexCoord1svARB}, {"glMultiTexCoord2dARB", "void glMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)", glMultiTexCoord2dARB}, {"glMultiTexCoord2dvARB", "void glMultiTexCoord2dvARB(GLenum target, const GLdouble *v)", glMultiTexCoord2dvARB}, {"glMultiTexCoord2fARB", "void glMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)", glMultiTexCoord2fARB}, {"glMultiTexCoord2fvARB", "void glMultiTexCoord2fvARB(GLenum target, const GLfloat *v)", glMultiTexCoord2fvARB}, {"glMultiTexCoord2iARB", "void glMultiTexCoord2iARB(GLenum target, GLint s, GLint t)", glMultiTexCoord2iARB}, {"glMultiTexCoord2ivARB", "void glMultiTexCoord2ivARB(GLenum target, const GLint *v)", glMultiTexCoord2ivARB}, {"glMultiTexCoord2sARB", "void glMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)", glMultiTexCoord2sARB}, {"glMultiTexCoord2svARB", "void glMultiTexCoord2svARB(GLenum target, const GLshort *v)", glMultiTexCoord2svARB}, {"glMultiTexCoord3dARB", "void glMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)", glMultiTexCoord3dARB}, {"glMultiTexCoord3dvARB", "void glMultiTexCoord3dvARB(GLenum target, const GLdouble *v)", glMultiTexCoord3dvARB}, {"glMultiTexCoord3fARB", "void glMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r)", glMultiTexCoord3fARB}, {"glMultiTexCoord3fvARB", "void glMultiTexCoord3fvARB(GLenum target, const GLfloat *v)", glMultiTexCoord3fvARB}, {"glMultiTexCoord3iARB", "void glMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)", glMultiTexCoord3iARB}, {"glMultiTexCoord3ivARB", "void glMultiTexCoord3ivARB(GLenum target, const GLint *v)", glMultiTexCoord3ivARB}, {"glMultiTexCoord3sARB", "void glMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)", glMultiTexCoord3sARB}, {"glMultiTexCoord3svARB", "void glMultiTexCoord3svARB(GLenum target, const GLshort *v)", glMultiTexCoord3svARB}, {"glMultiTexCoord4dARB", "void glMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)", glMultiTexCoord4dARB}, {"glMultiTexCoord4dvARB", "void glMultiTexCoord4dvARB(GLenum target, const GLdouble *v)", glMultiTexCoord4dvARB}, {"glMultiTexCoord4fARB", "void glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)", glMultiTexCoord4fARB}, {"glMultiTexCoord4fvARB", "void glMultiTexCoord4fvARB(GLenum target, const GLfloat *v)", glMultiTexCoord4fvARB}, {"glMultiTexCoord4iARB", "void glMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)", glMultiTexCoord4iARB}, {"glMultiTexCoord4ivARB", "void glMultiTexCoord4ivARB(GLenum target, const GLint *v)", glMultiTexCoord4ivARB}, {"glMultiTexCoord4sARB", "void glMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)", glMultiTexCoord4sARB}, {"glMultiTexCoord4svARB", "void glMultiTexCoord4svARB(GLenum target, const GLshort *v)", glMultiTexCoord4svARB}, */ {"glEnableTraceMESA", "void glEnableTraceMESA( GLbitfield mask )", glEnableTraceMESA}, {"glDisableTraceMESA", "void glDisableTraceMESA( GLbitfield mask )", glDisableTraceMESA}, {"glNewTraceMESA", "void glNewTraceMESA( GLbitfield mask, const GLubyte * traceName )", glNewTraceMESA}, {"glEndTraceMESA", "void glEndTraceMESA( void )", glEndTraceMESA}, {"glTraceAssertAttribMESA", "void glTraceAssertAttribMESA( GLbitfield attribMask )", glTraceAssertAttribMESA}, {"glTraceCommentMESA", "void glTraceCommentMESA( const GLubyte * comment )", glTraceCommentMESA}, {"glTraceTextureMESA", "void glTraceTextureMESA( GLuint name, const GLubyte* comment )", glTraceTextureMESA}, {"glTraceListMESA", "void glTraceListMESA( GLuint name, const GLubyte* comment )", glTraceListMESA}, {"glTracePointerMESA", "void glTracePointerMESA( GLvoid* pointer, const GLubyte* comment )", glTracePointerMESA}, {"glTracePointerRangeMESA", "void glTracePointerRangeMESA( const GLvoid* first, const GLvoid* last, const GLubyte* comment )", glTracePointerRangeMESA}, {"glBlendEquationSeparateATI", "void glBlendEquationSeparateATI( GLenum modeRGB, GLenum modeA )", glBlendEquationSeparateATI}, aranym-0.9.15/atari/nfosmesa/link-glext.h000066400000000000000000003245331213346724500202600ustar00rootroot00000000000000 {"glBlendColor", "void glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf)", glBlendColor}, {"glBlendEquation", "void glBlendEquation (GLenum)", glBlendEquation}, {"glDrawRangeElements", "void glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *)", glDrawRangeElements}, {"glColorTable", "void glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)", glColorTable}, {"glColorTableParameterfv", "void glColorTableParameterfv (GLenum, GLenum, const GLfloat *)", glColorTableParameterfv}, {"glColorTableParameteriv", "void glColorTableParameteriv (GLenum, GLenum, const GLint *)", glColorTableParameteriv}, {"glCopyColorTable", "void glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei)", glCopyColorTable}, {"glGetColorTable", "void glGetColorTable (GLenum, GLenum, GLenum, GLvoid *)", glGetColorTable}, {"glGetColorTableParameterfv", "void glGetColorTableParameterfv (GLenum, GLenum, GLfloat *)", glGetColorTableParameterfv}, {"glGetColorTableParameteriv", "void glGetColorTableParameteriv (GLenum, GLenum, GLint *)", glGetColorTableParameteriv}, {"glColorSubTable", "void glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glColorSubTable}, {"glCopyColorSubTable", "void glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei)", glCopyColorSubTable}, {"glConvolutionFilter1D", "void glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)", glConvolutionFilter1D}, {"glConvolutionFilter2D", "void glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glConvolutionFilter2D}, {"glConvolutionParameterf", "void glConvolutionParameterf (GLenum, GLenum, GLfloat)", glConvolutionParameterf}, {"glConvolutionParameterfv", "void glConvolutionParameterfv (GLenum, GLenum, const GLfloat *)", glConvolutionParameterfv}, {"glConvolutionParameteri", "void glConvolutionParameteri (GLenum, GLenum, GLint)", glConvolutionParameteri}, {"glConvolutionParameteriv", "void glConvolutionParameteriv (GLenum, GLenum, const GLint *)", glConvolutionParameteriv}, {"glCopyConvolutionFilter1D", "void glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei)", glCopyConvolutionFilter1D}, {"glCopyConvolutionFilter2D", "void glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei)", glCopyConvolutionFilter2D}, {"glGetConvolutionFilter", "void glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *)", glGetConvolutionFilter}, {"glGetConvolutionParameterfv", "void glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *)", glGetConvolutionParameterfv}, {"glGetConvolutionParameteriv", "void glGetConvolutionParameteriv (GLenum, GLenum, GLint *)", glGetConvolutionParameteriv}, {"glGetSeparableFilter", "void glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *)", glGetSeparableFilter}, {"glSeparableFilter2D", "void glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *)", glSeparableFilter2D}, {"glGetHistogram", "void glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *)", glGetHistogram}, {"glGetHistogramParameterfv", "void glGetHistogramParameterfv (GLenum, GLenum, GLfloat *)", glGetHistogramParameterfv}, {"glGetHistogramParameteriv", "void glGetHistogramParameteriv (GLenum, GLenum, GLint *)", glGetHistogramParameteriv}, {"glGetMinmax", "void glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *)", glGetMinmax}, {"glGetMinmaxParameterfv", "void glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *)", glGetMinmaxParameterfv}, {"glGetMinmaxParameteriv", "void glGetMinmaxParameteriv (GLenum, GLenum, GLint *)", glGetMinmaxParameteriv}, {"glHistogram", "void glHistogram (GLenum, GLsizei, GLenum, GLboolean)", glHistogram}, {"glMinmax", "void glMinmax (GLenum, GLenum, GLboolean)", glMinmax}, {"glResetHistogram", "void glResetHistogram (GLenum)", glResetHistogram}, {"glResetMinmax", "void glResetMinmax (GLenum)", glResetMinmax}, {"glTexImage3D", "void glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)", glTexImage3D}, {"glTexSubImage3D", "void glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glTexSubImage3D}, {"glCopyTexSubImage3D", "void glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)", glCopyTexSubImage3D}, {"glActiveTexture", "void glActiveTexture (GLenum)", glActiveTexture}, {"glClientActiveTexture", "void glClientActiveTexture (GLenum)", glClientActiveTexture}, {"glMultiTexCoord1d", "void glMultiTexCoord1d (GLenum, GLdouble)", glMultiTexCoord1d}, {"glMultiTexCoord1dv", "void glMultiTexCoord1dv (GLenum, const GLdouble *)", glMultiTexCoord1dv}, {"glMultiTexCoord1f", "void glMultiTexCoord1f (GLenum, GLfloat)", glMultiTexCoord1f}, {"glMultiTexCoord1fv", "void glMultiTexCoord1fv (GLenum, const GLfloat *)", glMultiTexCoord1fv}, {"glMultiTexCoord1i", "void glMultiTexCoord1i (GLenum, GLint)", glMultiTexCoord1i}, {"glMultiTexCoord1iv", "void glMultiTexCoord1iv (GLenum, const GLint *)", glMultiTexCoord1iv}, {"glMultiTexCoord1s", "void glMultiTexCoord1s (GLenum, GLshort)", glMultiTexCoord1s}, {"glMultiTexCoord1sv", "void glMultiTexCoord1sv (GLenum, const GLshort *)", glMultiTexCoord1sv}, {"glMultiTexCoord2d", "void glMultiTexCoord2d (GLenum, GLdouble, GLdouble)", glMultiTexCoord2d}, {"glMultiTexCoord2dv", "void glMultiTexCoord2dv (GLenum, const GLdouble *)", glMultiTexCoord2dv}, {"glMultiTexCoord2f", "void glMultiTexCoord2f (GLenum, GLfloat, GLfloat)", glMultiTexCoord2f}, {"glMultiTexCoord2fv", "void glMultiTexCoord2fv (GLenum, const GLfloat *)", glMultiTexCoord2fv}, {"glMultiTexCoord2i", "void glMultiTexCoord2i (GLenum, GLint, GLint)", glMultiTexCoord2i}, {"glMultiTexCoord2iv", "void glMultiTexCoord2iv (GLenum, const GLint *)", glMultiTexCoord2iv}, {"glMultiTexCoord2s", "void glMultiTexCoord2s (GLenum, GLshort, GLshort)", glMultiTexCoord2s}, {"glMultiTexCoord2sv", "void glMultiTexCoord2sv (GLenum, const GLshort *)", glMultiTexCoord2sv}, {"glMultiTexCoord3d", "void glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble)", glMultiTexCoord3d}, {"glMultiTexCoord3dv", "void glMultiTexCoord3dv (GLenum, const GLdouble *)", glMultiTexCoord3dv}, {"glMultiTexCoord3f", "void glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat)", glMultiTexCoord3f}, {"glMultiTexCoord3fv", "void glMultiTexCoord3fv (GLenum, const GLfloat *)", glMultiTexCoord3fv}, {"glMultiTexCoord3i", "void glMultiTexCoord3i (GLenum, GLint, GLint, GLint)", glMultiTexCoord3i}, {"glMultiTexCoord3iv", "void glMultiTexCoord3iv (GLenum, const GLint *)", glMultiTexCoord3iv}, {"glMultiTexCoord3s", "void glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort)", glMultiTexCoord3s}, {"glMultiTexCoord3sv", "void glMultiTexCoord3sv (GLenum, const GLshort *)", glMultiTexCoord3sv}, {"glMultiTexCoord4d", "void glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble)", glMultiTexCoord4d}, {"glMultiTexCoord4dv", "void glMultiTexCoord4dv (GLenum, const GLdouble *)", glMultiTexCoord4dv}, {"glMultiTexCoord4f", "void glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat)", glMultiTexCoord4f}, {"glMultiTexCoord4fv", "void glMultiTexCoord4fv (GLenum, const GLfloat *)", glMultiTexCoord4fv}, {"glMultiTexCoord4i", "void glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint)", glMultiTexCoord4i}, {"glMultiTexCoord4iv", "void glMultiTexCoord4iv (GLenum, const GLint *)", glMultiTexCoord4iv}, {"glMultiTexCoord4s", "void glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort)", glMultiTexCoord4s}, {"glMultiTexCoord4sv", "void glMultiTexCoord4sv (GLenum, const GLshort *)", glMultiTexCoord4sv}, {"glLoadTransposeMatrixf", "void glLoadTransposeMatrixf (const GLfloat *)", glLoadTransposeMatrixf}, {"glLoadTransposeMatrixd", "void glLoadTransposeMatrixd (const GLdouble *)", glLoadTransposeMatrixd}, {"glMultTransposeMatrixf", "void glMultTransposeMatrixf (const GLfloat *)", glMultTransposeMatrixf}, {"glMultTransposeMatrixd", "void glMultTransposeMatrixd (const GLdouble *)", glMultTransposeMatrixd}, {"glSampleCoverage", "void glSampleCoverage (GLclampf, GLboolean)", glSampleCoverage}, {"glCompressedTexImage3D", "void glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage3D}, {"glCompressedTexImage2D", "void glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage2D}, {"glCompressedTexImage1D", "void glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage1D}, {"glCompressedTexSubImage3D", "void glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage3D}, {"glCompressedTexSubImage2D", "void glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage2D}, {"glCompressedTexSubImage1D", "void glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage1D}, {"glGetCompressedTexImage", "void glGetCompressedTexImage (GLenum, GLint, GLvoid *)", glGetCompressedTexImage}, {"glBlendFuncSeparate", "void glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum)", glBlendFuncSeparate}, {"glFogCoordf", "void glFogCoordf (GLfloat)", glFogCoordf}, {"glFogCoordfv", "void glFogCoordfv (const GLfloat *)", glFogCoordfv}, {"glFogCoordd", "void glFogCoordd (GLdouble)", glFogCoordd}, {"glFogCoorddv", "void glFogCoorddv (const GLdouble *)", glFogCoorddv}, {"glFogCoordPointer", "void glFogCoordPointer (GLenum, GLsizei, const GLvoid *)", glFogCoordPointer}, {"glMultiDrawArrays", "void glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei)", glMultiDrawArrays}, {"glMultiDrawElements", "void glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei)", glMultiDrawElements}, {"glPointParameterf", "void glPointParameterf (GLenum, GLfloat)", glPointParameterf}, {"glPointParameterfv", "void glPointParameterfv (GLenum, const GLfloat *)", glPointParameterfv}, {"glPointParameteri", "void glPointParameteri (GLenum, GLint)", glPointParameteri}, {"glPointParameteriv", "void glPointParameteriv (GLenum, const GLint *)", glPointParameteriv}, {"glSecondaryColor3b", "void glSecondaryColor3b (GLbyte, GLbyte, GLbyte)", glSecondaryColor3b}, {"glSecondaryColor3bv", "void glSecondaryColor3bv (const GLbyte *)", glSecondaryColor3bv}, {"glSecondaryColor3d", "void glSecondaryColor3d (GLdouble, GLdouble, GLdouble)", glSecondaryColor3d}, {"glSecondaryColor3dv", "void glSecondaryColor3dv (const GLdouble *)", glSecondaryColor3dv}, {"glSecondaryColor3f", "void glSecondaryColor3f (GLfloat, GLfloat, GLfloat)", glSecondaryColor3f}, {"glSecondaryColor3fv", "void glSecondaryColor3fv (const GLfloat *)", glSecondaryColor3fv}, {"glSecondaryColor3i", "void glSecondaryColor3i (GLint, GLint, GLint)", glSecondaryColor3i}, {"glSecondaryColor3iv", "void glSecondaryColor3iv (const GLint *)", glSecondaryColor3iv}, {"glSecondaryColor3s", "void glSecondaryColor3s (GLshort, GLshort, GLshort)", glSecondaryColor3s}, {"glSecondaryColor3sv", "void glSecondaryColor3sv (const GLshort *)", glSecondaryColor3sv}, {"glSecondaryColor3ub", "void glSecondaryColor3ub (GLubyte, GLubyte, GLubyte)", glSecondaryColor3ub}, {"glSecondaryColor3ubv", "void glSecondaryColor3ubv (const GLubyte *)", glSecondaryColor3ubv}, {"glSecondaryColor3ui", "void glSecondaryColor3ui (GLuint, GLuint, GLuint)", glSecondaryColor3ui}, {"glSecondaryColor3uiv", "void glSecondaryColor3uiv (const GLuint *)", glSecondaryColor3uiv}, {"glSecondaryColor3us", "void glSecondaryColor3us (GLushort, GLushort, GLushort)", glSecondaryColor3us}, {"glSecondaryColor3usv", "void glSecondaryColor3usv (const GLushort *)", glSecondaryColor3usv}, {"glSecondaryColorPointer", "void glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *)", glSecondaryColorPointer}, {"glWindowPos2d", "void glWindowPos2d (GLdouble, GLdouble)", glWindowPos2d}, {"glWindowPos2dv", "void glWindowPos2dv (const GLdouble *)", glWindowPos2dv}, {"glWindowPos2f", "void glWindowPos2f (GLfloat, GLfloat)", glWindowPos2f}, {"glWindowPos2fv", "void glWindowPos2fv (const GLfloat *)", glWindowPos2fv}, {"glWindowPos2i", "void glWindowPos2i (GLint, GLint)", glWindowPos2i}, {"glWindowPos2iv", "void glWindowPos2iv (const GLint *)", glWindowPos2iv}, {"glWindowPos2s", "void glWindowPos2s (GLshort, GLshort)", glWindowPos2s}, {"glWindowPos2sv", "void glWindowPos2sv (const GLshort *)", glWindowPos2sv}, {"glWindowPos3d", "void glWindowPos3d (GLdouble, GLdouble, GLdouble)", glWindowPos3d}, {"glWindowPos3dv", "void glWindowPos3dv (const GLdouble *)", glWindowPos3dv}, {"glWindowPos3f", "void glWindowPos3f (GLfloat, GLfloat, GLfloat)", glWindowPos3f}, {"glWindowPos3fv", "void glWindowPos3fv (const GLfloat *)", glWindowPos3fv}, {"glWindowPos3i", "void glWindowPos3i (GLint, GLint, GLint)", glWindowPos3i}, {"glWindowPos3iv", "void glWindowPos3iv (const GLint *)", glWindowPos3iv}, {"glWindowPos3s", "void glWindowPos3s (GLshort, GLshort, GLshort)", glWindowPos3s}, {"glWindowPos3sv", "void glWindowPos3sv (const GLshort *)", glWindowPos3sv}, {"glGenQueries", "void glGenQueries (GLsizei, GLuint *)", glGenQueries}, {"glDeleteQueries", "void glDeleteQueries (GLsizei, const GLuint *)", glDeleteQueries}, {"glIsQuery", "GLboolean glIsQuery (GLuint)", glIsQuery}, {"glBeginQuery", "void glBeginQuery (GLenum, GLuint)", glBeginQuery}, {"glEndQuery", "void glEndQuery (GLenum)", glEndQuery}, {"glGetQueryiv", "void glGetQueryiv (GLenum, GLenum, GLint *)", glGetQueryiv}, {"glGetQueryObjectiv", "void glGetQueryObjectiv (GLuint, GLenum, GLint *)", glGetQueryObjectiv}, {"glGetQueryObjectuiv", "void glGetQueryObjectuiv (GLuint, GLenum, GLuint *)", glGetQueryObjectuiv}, {"glBindBuffer", "void glBindBuffer (GLenum, GLuint)", glBindBuffer}, {"glDeleteBuffers", "void glDeleteBuffers (GLsizei, const GLuint *)", glDeleteBuffers}, {"glGenBuffers", "void glGenBuffers (GLsizei, GLuint *)", glGenBuffers}, {"glIsBuffer", "GLboolean glIsBuffer (GLuint)", glIsBuffer}, {"glBufferData", "void glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum)", glBufferData}, {"glBufferSubData", "void glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *)", glBufferSubData}, {"glGetBufferSubData", "void glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *)", glGetBufferSubData}, {"glMapBuffer", "GLvoid* glMapBuffer (GLenum, GLenum)", glMapBuffer}, {"glUnmapBuffer", "GLboolean glUnmapBuffer (GLenum)", glUnmapBuffer}, {"glGetBufferParameteriv", "void glGetBufferParameteriv (GLenum, GLenum, GLint *)", glGetBufferParameteriv}, {"glGetBufferPointerv", "void glGetBufferPointerv (GLenum, GLenum, GLvoid* *)", glGetBufferPointerv}, {"glActiveTextureARB", "void glActiveTextureARB (GLenum)", glActiveTextureARB}, {"glClientActiveTextureARB", "void glClientActiveTextureARB (GLenum)", glClientActiveTextureARB}, {"glMultiTexCoord1dARB", "void glMultiTexCoord1dARB (GLenum, GLdouble)", glMultiTexCoord1dARB}, {"glMultiTexCoord1dvARB", "void glMultiTexCoord1dvARB (GLenum, const GLdouble *)", glMultiTexCoord1dvARB}, {"glMultiTexCoord1fARB", "void glMultiTexCoord1fARB (GLenum, GLfloat)", glMultiTexCoord1fARB}, {"glMultiTexCoord1fvARB", "void glMultiTexCoord1fvARB (GLenum, const GLfloat *)", glMultiTexCoord1fvARB}, {"glMultiTexCoord1iARB", "void glMultiTexCoord1iARB (GLenum, GLint)", glMultiTexCoord1iARB}, {"glMultiTexCoord1ivARB", "void glMultiTexCoord1ivARB (GLenum, const GLint *)", glMultiTexCoord1ivARB}, {"glMultiTexCoord1sARB", "void glMultiTexCoord1sARB (GLenum, GLshort)", glMultiTexCoord1sARB}, {"glMultiTexCoord1svARB", "void glMultiTexCoord1svARB (GLenum, const GLshort *)", glMultiTexCoord1svARB}, {"glMultiTexCoord2dARB", "void glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble)", glMultiTexCoord2dARB}, {"glMultiTexCoord2dvARB", "void glMultiTexCoord2dvARB (GLenum, const GLdouble *)", glMultiTexCoord2dvARB}, {"glMultiTexCoord2fARB", "void glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat)", glMultiTexCoord2fARB}, {"glMultiTexCoord2fvARB", "void glMultiTexCoord2fvARB (GLenum, const GLfloat *)", glMultiTexCoord2fvARB}, {"glMultiTexCoord2iARB", "void glMultiTexCoord2iARB (GLenum, GLint, GLint)", glMultiTexCoord2iARB}, {"glMultiTexCoord2ivARB", "void glMultiTexCoord2ivARB (GLenum, const GLint *)", glMultiTexCoord2ivARB}, {"glMultiTexCoord2sARB", "void glMultiTexCoord2sARB (GLenum, GLshort, GLshort)", glMultiTexCoord2sARB}, {"glMultiTexCoord2svARB", "void glMultiTexCoord2svARB (GLenum, const GLshort *)", glMultiTexCoord2svARB}, {"glMultiTexCoord3dARB", "void glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble)", glMultiTexCoord3dARB}, {"glMultiTexCoord3dvARB", "void glMultiTexCoord3dvARB (GLenum, const GLdouble *)", glMultiTexCoord3dvARB}, {"glMultiTexCoord3fARB", "void glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat)", glMultiTexCoord3fARB}, {"glMultiTexCoord3fvARB", "void glMultiTexCoord3fvARB (GLenum, const GLfloat *)", glMultiTexCoord3fvARB}, {"glMultiTexCoord3iARB", "void glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint)", glMultiTexCoord3iARB}, {"glMultiTexCoord3ivARB", "void glMultiTexCoord3ivARB (GLenum, const GLint *)", glMultiTexCoord3ivARB}, {"glMultiTexCoord3sARB", "void glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort)", glMultiTexCoord3sARB}, {"glMultiTexCoord3svARB", "void glMultiTexCoord3svARB (GLenum, const GLshort *)", glMultiTexCoord3svARB}, {"glMultiTexCoord4dARB", "void glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble)", glMultiTexCoord4dARB}, {"glMultiTexCoord4dvARB", "void glMultiTexCoord4dvARB (GLenum, const GLdouble *)", glMultiTexCoord4dvARB}, {"glMultiTexCoord4fARB", "void glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat)", glMultiTexCoord4fARB}, {"glMultiTexCoord4fvARB", "void glMultiTexCoord4fvARB (GLenum, const GLfloat *)", glMultiTexCoord4fvARB}, {"glMultiTexCoord4iARB", "void glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint)", glMultiTexCoord4iARB}, {"glMultiTexCoord4ivARB", "void glMultiTexCoord4ivARB (GLenum, const GLint *)", glMultiTexCoord4ivARB}, {"glMultiTexCoord4sARB", "void glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort)", glMultiTexCoord4sARB}, {"glMultiTexCoord4svARB", "void glMultiTexCoord4svARB (GLenum, const GLshort *)", glMultiTexCoord4svARB}, {"glLoadTransposeMatrixfARB", "void glLoadTransposeMatrixfARB (const GLfloat *)", glLoadTransposeMatrixfARB}, {"glLoadTransposeMatrixdARB", "void glLoadTransposeMatrixdARB (const GLdouble *)", glLoadTransposeMatrixdARB}, {"glMultTransposeMatrixfARB", "void glMultTransposeMatrixfARB (const GLfloat *)", glMultTransposeMatrixfARB}, {"glMultTransposeMatrixdARB", "void glMultTransposeMatrixdARB (const GLdouble *)", glMultTransposeMatrixdARB}, {"glSampleCoverageARB", "void glSampleCoverageARB (GLclampf, GLboolean)", glSampleCoverageARB}, {"glCompressedTexImage3DARB", "void glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage3DARB}, {"glCompressedTexImage2DARB", "void glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage2DARB}, {"glCompressedTexImage1DARB", "void glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)", glCompressedTexImage1DARB}, {"glCompressedTexSubImage3DARB", "void glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage3DARB}, {"glCompressedTexSubImage2DARB", "void glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage2DARB}, {"glCompressedTexSubImage1DARB", "void glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)", glCompressedTexSubImage1DARB}, {"glGetCompressedTexImageARB", "void glGetCompressedTexImageARB (GLenum, GLint, GLvoid *)", glGetCompressedTexImageARB}, {"glPointParameterfARB", "void glPointParameterfARB (GLenum, GLfloat)", glPointParameterfARB}, {"glPointParameterfvARB", "void glPointParameterfvARB (GLenum, const GLfloat *)", glPointParameterfvARB}, {"glWeightbvARB", "void glWeightbvARB (GLint, const GLbyte *)", glWeightbvARB}, {"glWeightsvARB", "void glWeightsvARB (GLint, const GLshort *)", glWeightsvARB}, {"glWeightivARB", "void glWeightivARB (GLint, const GLint *)", glWeightivARB}, {"glWeightfvARB", "void glWeightfvARB (GLint, const GLfloat *)", glWeightfvARB}, {"glWeightdvARB", "void glWeightdvARB (GLint, const GLdouble *)", glWeightdvARB}, {"glWeightubvARB", "void glWeightubvARB (GLint, const GLubyte *)", glWeightubvARB}, {"glWeightusvARB", "void glWeightusvARB (GLint, const GLushort *)", glWeightusvARB}, {"glWeightuivARB", "void glWeightuivARB (GLint, const GLuint *)", glWeightuivARB}, {"glWeightPointerARB", "void glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *)", glWeightPointerARB}, {"glVertexBlendARB", "void glVertexBlendARB (GLint)", glVertexBlendARB}, {"glCurrentPaletteMatrixARB", "void glCurrentPaletteMatrixARB (GLint)", glCurrentPaletteMatrixARB}, {"glMatrixIndexubvARB", "void glMatrixIndexubvARB (GLint, const GLubyte *)", glMatrixIndexubvARB}, {"glMatrixIndexusvARB", "void glMatrixIndexusvARB (GLint, const GLushort *)", glMatrixIndexusvARB}, {"glMatrixIndexuivARB", "void glMatrixIndexuivARB (GLint, const GLuint *)", glMatrixIndexuivARB}, {"glMatrixIndexPointerARB", "void glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *)", glMatrixIndexPointerARB}, {"glWindowPos2dARB", "void glWindowPos2dARB (GLdouble, GLdouble)", glWindowPos2dARB}, {"glWindowPos2dvARB", "void glWindowPos2dvARB (const GLdouble *)", glWindowPos2dvARB}, {"glWindowPos2fARB", "void glWindowPos2fARB (GLfloat, GLfloat)", glWindowPos2fARB}, {"glWindowPos2fvARB", "void glWindowPos2fvARB (const GLfloat *)", glWindowPos2fvARB}, {"glWindowPos2iARB", "void glWindowPos2iARB (GLint, GLint)", glWindowPos2iARB}, {"glWindowPos2ivARB", "void glWindowPos2ivARB (const GLint *)", glWindowPos2ivARB}, {"glWindowPos2sARB", "void glWindowPos2sARB (GLshort, GLshort)", glWindowPos2sARB}, {"glWindowPos2svARB", "void glWindowPos2svARB (const GLshort *)", glWindowPos2svARB}, {"glWindowPos3dARB", "void glWindowPos3dARB (GLdouble, GLdouble, GLdouble)", glWindowPos3dARB}, {"glWindowPos3dvARB", "void glWindowPos3dvARB (const GLdouble *)", glWindowPos3dvARB}, {"glWindowPos3fARB", "void glWindowPos3fARB (GLfloat, GLfloat, GLfloat)", glWindowPos3fARB}, {"glWindowPos3fvARB", "void glWindowPos3fvARB (const GLfloat *)", glWindowPos3fvARB}, {"glWindowPos3iARB", "void glWindowPos3iARB (GLint, GLint, GLint)", glWindowPos3iARB}, {"glWindowPos3ivARB", "void glWindowPos3ivARB (const GLint *)", glWindowPos3ivARB}, {"glWindowPos3sARB", "void glWindowPos3sARB (GLshort, GLshort, GLshort)", glWindowPos3sARB}, {"glWindowPos3svARB", "void glWindowPos3svARB (const GLshort *)", glWindowPos3svARB}, {"glVertexAttrib1dARB", "void glVertexAttrib1dARB (GLuint, GLdouble)", glVertexAttrib1dARB}, {"glVertexAttrib1dvARB", "void glVertexAttrib1dvARB (GLuint, const GLdouble *)", glVertexAttrib1dvARB}, {"glVertexAttrib1fARB", "void glVertexAttrib1fARB (GLuint, GLfloat)", glVertexAttrib1fARB}, {"glVertexAttrib1fvARB", "void glVertexAttrib1fvARB (GLuint, const GLfloat *)", glVertexAttrib1fvARB}, {"glVertexAttrib1sARB", "void glVertexAttrib1sARB (GLuint, GLshort)", glVertexAttrib1sARB}, {"glVertexAttrib1svARB", "void glVertexAttrib1svARB (GLuint, const GLshort *)", glVertexAttrib1svARB}, {"glVertexAttrib2dARB", "void glVertexAttrib2dARB (GLuint, GLdouble, GLdouble)", glVertexAttrib2dARB}, {"glVertexAttrib2dvARB", "void glVertexAttrib2dvARB (GLuint, const GLdouble *)", glVertexAttrib2dvARB}, {"glVertexAttrib2fARB", "void glVertexAttrib2fARB (GLuint, GLfloat, GLfloat)", glVertexAttrib2fARB}, {"glVertexAttrib2fvARB", "void glVertexAttrib2fvARB (GLuint, const GLfloat *)", glVertexAttrib2fvARB}, {"glVertexAttrib2sARB", "void glVertexAttrib2sARB (GLuint, GLshort, GLshort)", glVertexAttrib2sARB}, {"glVertexAttrib2svARB", "void glVertexAttrib2svARB (GLuint, const GLshort *)", glVertexAttrib2svARB}, {"glVertexAttrib3dARB", "void glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble)", glVertexAttrib3dARB}, {"glVertexAttrib3dvARB", "void glVertexAttrib3dvARB (GLuint, const GLdouble *)", glVertexAttrib3dvARB}, {"glVertexAttrib3fARB", "void glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat)", glVertexAttrib3fARB}, {"glVertexAttrib3fvARB", "void glVertexAttrib3fvARB (GLuint, const GLfloat *)", glVertexAttrib3fvARB}, {"glVertexAttrib3sARB", "void glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort)", glVertexAttrib3sARB}, {"glVertexAttrib3svARB", "void glVertexAttrib3svARB (GLuint, const GLshort *)", glVertexAttrib3svARB}, {"glVertexAttrib4NbvARB", "void glVertexAttrib4NbvARB (GLuint, const GLbyte *)", glVertexAttrib4NbvARB}, {"glVertexAttrib4NivARB", "void glVertexAttrib4NivARB (GLuint, const GLint *)", glVertexAttrib4NivARB}, {"glVertexAttrib4NsvARB", "void glVertexAttrib4NsvARB (GLuint, const GLshort *)", glVertexAttrib4NsvARB}, {"glVertexAttrib4NubARB", "void glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte)", glVertexAttrib4NubARB}, {"glVertexAttrib4NubvARB", "void glVertexAttrib4NubvARB (GLuint, const GLubyte *)", glVertexAttrib4NubvARB}, {"glVertexAttrib4NuivARB", "void glVertexAttrib4NuivARB (GLuint, const GLuint *)", glVertexAttrib4NuivARB}, {"glVertexAttrib4NusvARB", "void glVertexAttrib4NusvARB (GLuint, const GLushort *)", glVertexAttrib4NusvARB}, {"glVertexAttrib4bvARB", "void glVertexAttrib4bvARB (GLuint, const GLbyte *)", glVertexAttrib4bvARB}, {"glVertexAttrib4dARB", "void glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble)", glVertexAttrib4dARB}, {"glVertexAttrib4dvARB", "void glVertexAttrib4dvARB (GLuint, const GLdouble *)", glVertexAttrib4dvARB}, {"glVertexAttrib4fARB", "void glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat)", glVertexAttrib4fARB}, {"glVertexAttrib4fvARB", "void glVertexAttrib4fvARB (GLuint, const GLfloat *)", glVertexAttrib4fvARB}, {"glVertexAttrib4ivARB", "void glVertexAttrib4ivARB (GLuint, const GLint *)", glVertexAttrib4ivARB}, {"glVertexAttrib4sARB", "void glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort)", glVertexAttrib4sARB}, {"glVertexAttrib4svARB", "void glVertexAttrib4svARB (GLuint, const GLshort *)", glVertexAttrib4svARB}, {"glVertexAttrib4ubvARB", "void glVertexAttrib4ubvARB (GLuint, const GLubyte *)", glVertexAttrib4ubvARB}, {"glVertexAttrib4uivARB", "void glVertexAttrib4uivARB (GLuint, const GLuint *)", glVertexAttrib4uivARB}, {"glVertexAttrib4usvARB", "void glVertexAttrib4usvARB (GLuint, const GLushort *)", glVertexAttrib4usvARB}, {"glVertexAttribPointerARB", "void glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)", glVertexAttribPointerARB}, {"glEnableVertexAttribArrayARB", "void glEnableVertexAttribArrayARB (GLuint)", glEnableVertexAttribArrayARB}, {"glDisableVertexAttribArrayARB", "void glDisableVertexAttribArrayARB (GLuint)", glDisableVertexAttribArrayARB}, {"glProgramStringARB", "void glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *)", glProgramStringARB}, {"glBindProgramARB", "void glBindProgramARB (GLenum, GLuint)", glBindProgramARB}, {"glDeleteProgramsARB", "void glDeleteProgramsARB (GLsizei, const GLuint *)", glDeleteProgramsARB}, {"glGenProgramsARB", "void glGenProgramsARB (GLsizei, GLuint *)", glGenProgramsARB}, {"glProgramEnvParameter4dARB", "void glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)", glProgramEnvParameter4dARB}, {"glProgramEnvParameter4dvARB", "void glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *)", glProgramEnvParameter4dvARB}, {"glProgramEnvParameter4fARB", "void glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)", glProgramEnvParameter4fARB}, {"glProgramEnvParameter4fvARB", "void glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *)", glProgramEnvParameter4fvARB}, {"glProgramLocalParameter4dARB", "void glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)", glProgramLocalParameter4dARB}, {"glProgramLocalParameter4dvARB", "void glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *)", glProgramLocalParameter4dvARB}, {"glProgramLocalParameter4fARB", "void glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)", glProgramLocalParameter4fARB}, {"glProgramLocalParameter4fvARB", "void glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *)", glProgramLocalParameter4fvARB}, {"glGetProgramEnvParameterdvARB", "void glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *)", glGetProgramEnvParameterdvARB}, {"glGetProgramEnvParameterfvARB", "void glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *)", glGetProgramEnvParameterfvARB}, {"glGetProgramLocalParameterdvARB", "void glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *)", glGetProgramLocalParameterdvARB}, {"glGetProgramLocalParameterfvARB", "void glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *)", glGetProgramLocalParameterfvARB}, {"glGetProgramivARB", "void glGetProgramivARB (GLenum, GLenum, GLint *)", glGetProgramivARB}, {"glGetProgramStringARB", "void glGetProgramStringARB (GLenum, GLenum, GLvoid *)", glGetProgramStringARB}, {"glGetVertexAttribdvARB", "void glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *)", glGetVertexAttribdvARB}, {"glGetVertexAttribfvARB", "void glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *)", glGetVertexAttribfvARB}, {"glGetVertexAttribivARB", "void glGetVertexAttribivARB (GLuint, GLenum, GLint *)", glGetVertexAttribivARB}, {"glGetVertexAttribPointervARB", "void glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *)", glGetVertexAttribPointervARB}, {"glIsProgramARB", "GLboolean glIsProgramARB (GLuint)", glIsProgramARB}, {"glBindBufferARB", "void glBindBufferARB (GLenum, GLuint)", glBindBufferARB}, {"glDeleteBuffersARB", "void glDeleteBuffersARB (GLsizei, const GLuint *)", glDeleteBuffersARB}, {"glGenBuffersARB", "void glGenBuffersARB (GLsizei, GLuint *)", glGenBuffersARB}, {"glIsBufferARB", "GLboolean glIsBufferARB (GLuint)", glIsBufferARB}, {"glBufferDataARB", "void glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum)", glBufferDataARB}, {"glBufferSubDataARB", "void glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)", glBufferSubDataARB}, {"glGetBufferSubDataARB", "void glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)", glGetBufferSubDataARB}, {"glMapBufferARB", "GLvoid* glMapBufferARB (GLenum, GLenum)", glMapBufferARB}, {"glUnmapBufferARB", "GLboolean glUnmapBufferARB (GLenum)", glUnmapBufferARB}, {"glGetBufferParameterivARB", "void glGetBufferParameterivARB (GLenum, GLenum, GLint *)", glGetBufferParameterivARB}, {"glGetBufferPointervARB", "void glGetBufferPointervARB (GLenum, GLenum, GLvoid* *)", glGetBufferPointervARB}, {"glGenQueriesARB", "void glGenQueriesARB (GLsizei, GLuint *)", glGenQueriesARB}, {"glDeleteQueriesARB", "void glDeleteQueriesARB (GLsizei, const GLuint *)", glDeleteQueriesARB}, {"glIsQueryARB", "GLboolean glIsQueryARB (GLuint)", glIsQueryARB}, {"glBeginQueryARB", "void glBeginQueryARB (GLenum, GLuint)", glBeginQueryARB}, {"glEndQueryARB", "void glEndQueryARB (GLenum)", glEndQueryARB}, {"glGetQueryivARB", "void glGetQueryivARB (GLenum, GLenum, GLint *)", glGetQueryivARB}, {"glGetQueryObjectivARB", "void glGetQueryObjectivARB (GLuint, GLenum, GLint *)", glGetQueryObjectivARB}, {"glGetQueryObjectuivARB", "void glGetQueryObjectuivARB (GLuint, GLenum, GLuint *)", glGetQueryObjectuivARB}, {"glDeleteObjectARB", "void glDeleteObjectARB (GLhandleARB)", glDeleteObjectARB}, {"glGetHandleARB", "GLhandleARB glGetHandleARB (GLenum)", glGetHandleARB}, {"glDetachObjectARB", "void glDetachObjectARB (GLhandleARB, GLhandleARB)", glDetachObjectARB}, {"glCreateShaderObjectARB", "GLhandleARB glCreateShaderObjectARB (GLenum)", glCreateShaderObjectARB}, {"glShaderSourceARB", "void glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *)", glShaderSourceARB}, {"glCompileShaderARB", "void glCompileShaderARB (GLhandleARB)", glCompileShaderARB}, {"glCreateProgramObjectARB", "GLhandleARB glCreateProgramObjectARB (void)", glCreateProgramObjectARB}, {"glAttachObjectARB", "void glAttachObjectARB (GLhandleARB, GLhandleARB)", glAttachObjectARB}, {"glLinkProgramARB", "void glLinkProgramARB (GLhandleARB)", glLinkProgramARB}, {"glUseProgramObjectARB", "void glUseProgramObjectARB (GLhandleARB)", glUseProgramObjectARB}, {"glValidateProgramARB", "void glValidateProgramARB (GLhandleARB)", glValidateProgramARB}, {"glUniform1fARB", "void glUniform1fARB (GLint, GLfloat)", glUniform1fARB}, {"glUniform2fARB", "void glUniform2fARB (GLint, GLfloat, GLfloat)", glUniform2fARB}, {"glUniform3fARB", "void glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat)", glUniform3fARB}, {"glUniform4fARB", "void glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat)", glUniform4fARB}, {"glUniform1iARB", "void glUniform1iARB (GLint, GLint)", glUniform1iARB}, {"glUniform2iARB", "void glUniform2iARB (GLint, GLint, GLint)", glUniform2iARB}, {"glUniform3iARB", "void glUniform3iARB (GLint, GLint, GLint, GLint)", glUniform3iARB}, {"glUniform4iARB", "void glUniform4iARB (GLint, GLint, GLint, GLint, GLint)", glUniform4iARB}, {"glUniform1fvARB", "void glUniform1fvARB (GLint, GLsizei, const GLfloat *)", glUniform1fvARB}, {"glUniform2fvARB", "void glUniform2fvARB (GLint, GLsizei, const GLfloat *)", glUniform2fvARB}, {"glUniform3fvARB", "void glUniform3fvARB (GLint, GLsizei, const GLfloat *)", glUniform3fvARB}, {"glUniform4fvARB", "void glUniform4fvARB (GLint, GLsizei, const GLfloat *)", glUniform4fvARB}, {"glUniform1ivARB", "void glUniform1ivARB (GLint, GLsizei, const GLint *)", glUniform1ivARB}, {"glUniform2ivARB", "void glUniform2ivARB (GLint, GLsizei, const GLint *)", glUniform2ivARB}, {"glUniform3ivARB", "void glUniform3ivARB (GLint, GLsizei, const GLint *)", glUniform3ivARB}, {"glUniform4ivARB", "void glUniform4ivARB (GLint, GLsizei, const GLint *)", glUniform4ivARB}, {"glUniformMatrix2fvARB", "void glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *)", glUniformMatrix2fvARB}, {"glUniformMatrix3fvARB", "void glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *)", glUniformMatrix3fvARB}, {"glUniformMatrix4fvARB", "void glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *)", glUniformMatrix4fvARB}, {"glGetObjectParameterfvARB", "void glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *)", glGetObjectParameterfvARB}, {"glGetObjectParameterivARB", "void glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *)", glGetObjectParameterivARB}, {"glGetInfoLogARB", "void glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *)", glGetInfoLogARB}, {"glGetAttachedObjectsARB", "void glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)", glGetAttachedObjectsARB}, {"glGetUniformLocationARB", "GLint glGetUniformLocationARB (GLhandleARB, const GLcharARB *)", glGetUniformLocationARB}, {"glGetActiveUniformARB", "void glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)", glGetActiveUniformARB}, {"glGetUniformfvARB", "void glGetUniformfvARB (GLhandleARB, GLint, GLfloat *)", glGetUniformfvARB}, {"glGetUniformivARB", "void glGetUniformivARB (GLhandleARB, GLint, GLint *)", glGetUniformivARB}, {"glGetShaderSourceARB", "void glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *)", glGetShaderSourceARB}, {"glBindAttribLocationARB", "void glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *)", glBindAttribLocationARB}, {"glGetActiveAttribARB", "void glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)", glGetActiveAttribARB}, {"glGetAttribLocationARB", "GLint glGetAttribLocationARB (GLhandleARB, const GLcharARB *)", glGetAttribLocationARB}, {"glDrawBuffersARB", "void glDrawBuffersARB (GLsizei, const GLenum *)", glDrawBuffersARB}, {"glBlendColorEXT", "void glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf)", glBlendColorEXT}, {"glPolygonOffsetEXT", "void glPolygonOffsetEXT (GLfloat, GLfloat)", glPolygonOffsetEXT}, {"glTexImage3DEXT", "void glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)", glTexImage3DEXT}, {"glTexSubImage3DEXT", "void glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glTexSubImage3DEXT}, {"glGetTexFilterFuncSGIS", "void glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *)", glGetTexFilterFuncSGIS}, {"glTexFilterFuncSGIS", "void glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *)", glTexFilterFuncSGIS}, {"glTexSubImage1DEXT", "void glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *)", glTexSubImage1DEXT}, {"glTexSubImage2DEXT", "void glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glTexSubImage2DEXT}, {"glCopyTexImage1DEXT", "void glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint)", glCopyTexImage1DEXT}, {"glCopyTexImage2DEXT", "void glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint)", glCopyTexImage2DEXT}, {"glCopyTexSubImage1DEXT", "void glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei)", glCopyTexSubImage1DEXT}, {"glCopyTexSubImage2DEXT", "void glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)", glCopyTexSubImage2DEXT}, {"glCopyTexSubImage3DEXT", "void glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei)", glCopyTexSubImage3DEXT}, {"glGetHistogramEXT", "void glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *)", glGetHistogramEXT}, {"glGetHistogramParameterfvEXT", "void glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *)", glGetHistogramParameterfvEXT}, {"glGetHistogramParameterivEXT", "void glGetHistogramParameterivEXT (GLenum, GLenum, GLint *)", glGetHistogramParameterivEXT}, {"glGetMinmaxEXT", "void glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *)", glGetMinmaxEXT}, {"glGetMinmaxParameterfvEXT", "void glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *)", glGetMinmaxParameterfvEXT}, {"glGetMinmaxParameterivEXT", "void glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *)", glGetMinmaxParameterivEXT}, {"glHistogramEXT", "void glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean)", glHistogramEXT}, {"glMinmaxEXT", "void glMinmaxEXT (GLenum, GLenum, GLboolean)", glMinmaxEXT}, {"glResetHistogramEXT", "void glResetHistogramEXT (GLenum)", glResetHistogramEXT}, {"glResetMinmaxEXT", "void glResetMinmaxEXT (GLenum)", glResetMinmaxEXT}, {"glConvolutionFilter1DEXT", "void glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)", glConvolutionFilter1DEXT}, {"glConvolutionFilter2DEXT", "void glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glConvolutionFilter2DEXT}, {"glConvolutionParameterfEXT", "void glConvolutionParameterfEXT (GLenum, GLenum, GLfloat)", glConvolutionParameterfEXT}, {"glConvolutionParameterfvEXT", "void glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *)", glConvolutionParameterfvEXT}, {"glConvolutionParameteriEXT", "void glConvolutionParameteriEXT (GLenum, GLenum, GLint)", glConvolutionParameteriEXT}, {"glConvolutionParameterivEXT", "void glConvolutionParameterivEXT (GLenum, GLenum, const GLint *)", glConvolutionParameterivEXT}, {"glCopyConvolutionFilter1DEXT", "void glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei)", glCopyConvolutionFilter1DEXT}, {"glCopyConvolutionFilter2DEXT", "void glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei)", glCopyConvolutionFilter2DEXT}, {"glGetConvolutionFilterEXT", "void glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *)", glGetConvolutionFilterEXT}, {"glGetConvolutionParameterfvEXT", "void glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *)", glGetConvolutionParameterfvEXT}, {"glGetConvolutionParameterivEXT", "void glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *)", glGetConvolutionParameterivEXT}, {"glGetSeparableFilterEXT", "void glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *)", glGetSeparableFilterEXT}, {"glSeparableFilter2DEXT", "void glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *)", glSeparableFilter2DEXT}, {"glColorTableSGI", "void glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)", glColorTableSGI}, {"glColorTableParameterfvSGI", "void glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *)", glColorTableParameterfvSGI}, {"glColorTableParameterivSGI", "void glColorTableParameterivSGI (GLenum, GLenum, const GLint *)", glColorTableParameterivSGI}, {"glCopyColorTableSGI", "void glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei)", glCopyColorTableSGI}, {"glGetColorTableSGI", "void glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *)", glGetColorTableSGI}, {"glGetColorTableParameterfvSGI", "void glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *)", glGetColorTableParameterfvSGI}, {"glGetColorTableParameterivSGI", "void glGetColorTableParameterivSGI (GLenum, GLenum, GLint *)", glGetColorTableParameterivSGI}, {"glPixelTexGenSGIX", "void glPixelTexGenSGIX (GLenum)", glPixelTexGenSGIX}, {"glPixelTexGenParameteriSGIS", "void glPixelTexGenParameteriSGIS (GLenum, GLint)", glPixelTexGenParameteriSGIS}, {"glPixelTexGenParameterivSGIS", "void glPixelTexGenParameterivSGIS (GLenum, const GLint *)", glPixelTexGenParameterivSGIS}, {"glPixelTexGenParameterfSGIS", "void glPixelTexGenParameterfSGIS (GLenum, GLfloat)", glPixelTexGenParameterfSGIS}, {"glPixelTexGenParameterfvSGIS", "void glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *)", glPixelTexGenParameterfvSGIS}, {"glGetPixelTexGenParameterivSGIS", "void glGetPixelTexGenParameterivSGIS (GLenum, GLint *)", glGetPixelTexGenParameterivSGIS}, {"glGetPixelTexGenParameterfvSGIS", "void glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *)", glGetPixelTexGenParameterfvSGIS}, {"glTexImage4DSGIS", "void glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *)", glTexImage4DSGIS}, {"glTexSubImage4DSGIS", "void glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glTexSubImage4DSGIS}, {"glAreTexturesResidentEXT", "GLboolean glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *)", glAreTexturesResidentEXT}, {"glBindTextureEXT", "void glBindTextureEXT (GLenum, GLuint)", glBindTextureEXT}, {"glDeleteTexturesEXT", "void glDeleteTexturesEXT (GLsizei, const GLuint *)", glDeleteTexturesEXT}, {"glGenTexturesEXT", "void glGenTexturesEXT (GLsizei, GLuint *)", glGenTexturesEXT}, {"glIsTextureEXT", "GLboolean glIsTextureEXT (GLuint)", glIsTextureEXT}, {"glPrioritizeTexturesEXT", "void glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *)", glPrioritizeTexturesEXT}, {"glDetailTexFuncSGIS", "void glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *)", glDetailTexFuncSGIS}, {"glGetDetailTexFuncSGIS", "void glGetDetailTexFuncSGIS (GLenum, GLfloat *)", glGetDetailTexFuncSGIS}, {"glSharpenTexFuncSGIS", "void glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *)", glSharpenTexFuncSGIS}, {"glGetSharpenTexFuncSGIS", "void glGetSharpenTexFuncSGIS (GLenum, GLfloat *)", glGetSharpenTexFuncSGIS}, {"glSampleMaskSGIS", "void glSampleMaskSGIS (GLclampf, GLboolean)", glSampleMaskSGIS}, {"glSamplePatternSGIS", "void glSamplePatternSGIS (GLenum)", glSamplePatternSGIS}, {"glArrayElementEXT", "void glArrayElementEXT (GLint)", glArrayElementEXT}, {"glColorPointerEXT", "void glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *)", glColorPointerEXT}, {"glDrawArraysEXT", "void glDrawArraysEXT (GLenum, GLint, GLsizei)", glDrawArraysEXT}, {"glEdgeFlagPointerEXT", "void glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *)", glEdgeFlagPointerEXT}, {"glGetPointervEXT", "void glGetPointervEXT (GLenum, GLvoid* *)", glGetPointervEXT}, {"glIndexPointerEXT", "void glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *)", glIndexPointerEXT}, {"glNormalPointerEXT", "void glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *)", glNormalPointerEXT}, {"glTexCoordPointerEXT", "void glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *)", glTexCoordPointerEXT}, {"glVertexPointerEXT", "void glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *)", glVertexPointerEXT}, {"glBlendEquationEXT", "void glBlendEquationEXT (GLenum)", glBlendEquationEXT}, {"glSpriteParameterfSGIX", "void glSpriteParameterfSGIX (GLenum, GLfloat)", glSpriteParameterfSGIX}, {"glSpriteParameterfvSGIX", "void glSpriteParameterfvSGIX (GLenum, const GLfloat *)", glSpriteParameterfvSGIX}, {"glSpriteParameteriSGIX", "void glSpriteParameteriSGIX (GLenum, GLint)", glSpriteParameteriSGIX}, {"glSpriteParameterivSGIX", "void glSpriteParameterivSGIX (GLenum, const GLint *)", glSpriteParameterivSGIX}, {"glPointParameterfEXT", "void glPointParameterfEXT (GLenum, GLfloat)", glPointParameterfEXT}, {"glPointParameterfvEXT", "void glPointParameterfvEXT (GLenum, const GLfloat *)", glPointParameterfvEXT}, {"glPointParameterfSGIS", "void glPointParameterfSGIS (GLenum, GLfloat)", glPointParameterfSGIS}, {"glPointParameterfvSGIS", "void glPointParameterfvSGIS (GLenum, const GLfloat *)", glPointParameterfvSGIS}, {"glGetInstrumentsSGIX", "GLint glGetInstrumentsSGIX (void)", glGetInstrumentsSGIX}, {"glInstrumentsBufferSGIX", "void glInstrumentsBufferSGIX (GLsizei, GLint *)", glInstrumentsBufferSGIX}, {"glPollInstrumentsSGIX", "GLint glPollInstrumentsSGIX (GLint *)", glPollInstrumentsSGIX}, {"glReadInstrumentsSGIX", "void glReadInstrumentsSGIX (GLint)", glReadInstrumentsSGIX}, {"glStartInstrumentsSGIX", "void glStartInstrumentsSGIX (void)", glStartInstrumentsSGIX}, {"glStopInstrumentsSGIX", "void glStopInstrumentsSGIX (GLint)", glStopInstrumentsSGIX}, {"glFrameZoomSGIX", "void glFrameZoomSGIX (GLint)", glFrameZoomSGIX}, {"glTagSampleBufferSGIX", "void glTagSampleBufferSGIX (void)", glTagSampleBufferSGIX}, {"glDeformationMap3dSGIX", "void glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *)", glDeformationMap3dSGIX}, {"glDeformationMap3fSGIX", "void glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *)", glDeformationMap3fSGIX}, {"glDeformSGIX", "void glDeformSGIX (GLbitfield)", glDeformSGIX}, {"glLoadIdentityDeformationMapSGIX", "void glLoadIdentityDeformationMapSGIX (GLbitfield)", glLoadIdentityDeformationMapSGIX}, {"glReferencePlaneSGIX", "void glReferencePlaneSGIX (const GLdouble *)", glReferencePlaneSGIX}, {"glFlushRasterSGIX", "void glFlushRasterSGIX (void)", glFlushRasterSGIX}, {"glFogFuncSGIS", "void glFogFuncSGIS (GLsizei, const GLfloat *)", glFogFuncSGIS}, {"glGetFogFuncSGIS", "void glGetFogFuncSGIS (GLfloat *)", glGetFogFuncSGIS}, {"glImageTransformParameteriHP", "void glImageTransformParameteriHP (GLenum, GLenum, GLint)", glImageTransformParameteriHP}, {"glImageTransformParameterfHP", "void glImageTransformParameterfHP (GLenum, GLenum, GLfloat)", glImageTransformParameterfHP}, {"glImageTransformParameterivHP", "void glImageTransformParameterivHP (GLenum, GLenum, const GLint *)", glImageTransformParameterivHP}, {"glImageTransformParameterfvHP", "void glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *)", glImageTransformParameterfvHP}, {"glGetImageTransformParameterivHP", "void glGetImageTransformParameterivHP (GLenum, GLenum, GLint *)", glGetImageTransformParameterivHP}, {"glGetImageTransformParameterfvHP", "void glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *)", glGetImageTransformParameterfvHP}, {"glColorSubTableEXT", "void glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *)", glColorSubTableEXT}, {"glCopyColorSubTableEXT", "void glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei)", glCopyColorSubTableEXT}, {"glHintPGI", "void glHintPGI (GLenum, GLint)", glHintPGI}, {"glColorTableEXT", "void glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *)", glColorTableEXT}, {"glGetColorTableEXT", "void glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *)", glGetColorTableEXT}, {"glGetColorTableParameterivEXT", "void glGetColorTableParameterivEXT (GLenum, GLenum, GLint *)", glGetColorTableParameterivEXT}, {"glGetColorTableParameterfvEXT", "void glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *)", glGetColorTableParameterfvEXT}, {"glGetListParameterfvSGIX", "void glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *)", glGetListParameterfvSGIX}, {"glGetListParameterivSGIX", "void glGetListParameterivSGIX (GLuint, GLenum, GLint *)", glGetListParameterivSGIX}, {"glListParameterfSGIX", "void glListParameterfSGIX (GLuint, GLenum, GLfloat)", glListParameterfSGIX}, {"glListParameterfvSGIX", "void glListParameterfvSGIX (GLuint, GLenum, const GLfloat *)", glListParameterfvSGIX}, {"glListParameteriSGIX", "void glListParameteriSGIX (GLuint, GLenum, GLint)", glListParameteriSGIX}, {"glListParameterivSGIX", "void glListParameterivSGIX (GLuint, GLenum, const GLint *)", glListParameterivSGIX}, {"glIndexMaterialEXT", "void glIndexMaterialEXT (GLenum, GLenum)", glIndexMaterialEXT}, {"glIndexFuncEXT", "void glIndexFuncEXT (GLenum, GLclampf)", glIndexFuncEXT}, {"glLockArraysEXT", "void glLockArraysEXT (GLint, GLsizei)", glLockArraysEXT}, {"glUnlockArraysEXT", "void glUnlockArraysEXT (void)", glUnlockArraysEXT}, {"glCullParameterdvEXT", "void glCullParameterdvEXT (GLenum, GLdouble *)", glCullParameterdvEXT}, {"glCullParameterfvEXT", "void glCullParameterfvEXT (GLenum, GLfloat *)", glCullParameterfvEXT}, {"glFragmentColorMaterialSGIX", "void glFragmentColorMaterialSGIX (GLenum, GLenum)", glFragmentColorMaterialSGIX}, {"glFragmentLightfSGIX", "void glFragmentLightfSGIX (GLenum, GLenum, GLfloat)", glFragmentLightfSGIX}, {"glFragmentLightfvSGIX", "void glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *)", glFragmentLightfvSGIX}, {"glFragmentLightiSGIX", "void glFragmentLightiSGIX (GLenum, GLenum, GLint)", glFragmentLightiSGIX}, {"glFragmentLightivSGIX", "void glFragmentLightivSGIX (GLenum, GLenum, const GLint *)", glFragmentLightivSGIX}, {"glFragmentLightModelfSGIX", "void glFragmentLightModelfSGIX (GLenum, GLfloat)", glFragmentLightModelfSGIX}, {"glFragmentLightModelfvSGIX", "void glFragmentLightModelfvSGIX (GLenum, const GLfloat *)", glFragmentLightModelfvSGIX}, {"glFragmentLightModeliSGIX", "void glFragmentLightModeliSGIX (GLenum, GLint)", glFragmentLightModeliSGIX}, {"glFragmentLightModelivSGIX", "void glFragmentLightModelivSGIX (GLenum, const GLint *)", glFragmentLightModelivSGIX}, {"glFragmentMaterialfSGIX", "void glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat)", glFragmentMaterialfSGIX}, {"glFragmentMaterialfvSGIX", "void glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *)", glFragmentMaterialfvSGIX}, {"glFragmentMaterialiSGIX", "void glFragmentMaterialiSGIX (GLenum, GLenum, GLint)", glFragmentMaterialiSGIX}, {"glFragmentMaterialivSGIX", "void glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *)", glFragmentMaterialivSGIX}, {"glGetFragmentLightfvSGIX", "void glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *)", glGetFragmentLightfvSGIX}, {"glGetFragmentLightivSGIX", "void glGetFragmentLightivSGIX (GLenum, GLenum, GLint *)", glGetFragmentLightivSGIX}, {"glGetFragmentMaterialfvSGIX", "void glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *)", glGetFragmentMaterialfvSGIX}, {"glGetFragmentMaterialivSGIX", "void glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *)", glGetFragmentMaterialivSGIX}, {"glLightEnviSGIX", "void glLightEnviSGIX (GLenum, GLint)", glLightEnviSGIX}, {"glDrawRangeElementsEXT", "void glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *)", glDrawRangeElementsEXT}, {"glApplyTextureEXT", "void glApplyTextureEXT (GLenum)", glApplyTextureEXT}, {"glTextureLightEXT", "void glTextureLightEXT (GLenum)", glTextureLightEXT}, {"glTextureMaterialEXT", "void glTextureMaterialEXT (GLenum, GLenum)", glTextureMaterialEXT}, {"glAsyncMarkerSGIX", "void glAsyncMarkerSGIX (GLuint)", glAsyncMarkerSGIX}, {"glFinishAsyncSGIX", "GLint glFinishAsyncSGIX (GLuint *)", glFinishAsyncSGIX}, {"glPollAsyncSGIX", "GLint glPollAsyncSGIX (GLuint *)", glPollAsyncSGIX}, {"glGenAsyncMarkersSGIX", "GLuint glGenAsyncMarkersSGIX (GLsizei)", glGenAsyncMarkersSGIX}, {"glDeleteAsyncMarkersSGIX", "void glDeleteAsyncMarkersSGIX (GLuint, GLsizei)", glDeleteAsyncMarkersSGIX}, {"glIsAsyncMarkerSGIX", "GLboolean glIsAsyncMarkerSGIX (GLuint)", glIsAsyncMarkerSGIX}, {"glVertexPointervINTEL", "void glVertexPointervINTEL (GLint, GLenum, const GLvoid* *)", glVertexPointervINTEL}, {"glNormalPointervINTEL", "void glNormalPointervINTEL (GLenum, const GLvoid* *)", glNormalPointervINTEL}, {"glColorPointervINTEL", "void glColorPointervINTEL (GLint, GLenum, const GLvoid* *)", glColorPointervINTEL}, {"glTexCoordPointervINTEL", "void glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *)", glTexCoordPointervINTEL}, {"glPixelTransformParameteriEXT", "void glPixelTransformParameteriEXT (GLenum, GLenum, GLint)", glPixelTransformParameteriEXT}, {"glPixelTransformParameterfEXT", "void glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat)", glPixelTransformParameterfEXT}, {"glPixelTransformParameterivEXT", "void glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *)", glPixelTransformParameterivEXT}, {"glPixelTransformParameterfvEXT", "void glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *)", glPixelTransformParameterfvEXT}, {"glSecondaryColor3bEXT", "void glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte)", glSecondaryColor3bEXT}, {"glSecondaryColor3bvEXT", "void glSecondaryColor3bvEXT (const GLbyte *)", glSecondaryColor3bvEXT}, {"glSecondaryColor3dEXT", "void glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble)", glSecondaryColor3dEXT}, {"glSecondaryColor3dvEXT", "void glSecondaryColor3dvEXT (const GLdouble *)", glSecondaryColor3dvEXT}, {"glSecondaryColor3fEXT", "void glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat)", glSecondaryColor3fEXT}, {"glSecondaryColor3fvEXT", "void glSecondaryColor3fvEXT (const GLfloat *)", glSecondaryColor3fvEXT}, {"glSecondaryColor3iEXT", "void glSecondaryColor3iEXT (GLint, GLint, GLint)", glSecondaryColor3iEXT}, {"glSecondaryColor3ivEXT", "void glSecondaryColor3ivEXT (const GLint *)", glSecondaryColor3ivEXT}, {"glSecondaryColor3sEXT", "void glSecondaryColor3sEXT (GLshort, GLshort, GLshort)", glSecondaryColor3sEXT}, {"glSecondaryColor3svEXT", "void glSecondaryColor3svEXT (const GLshort *)", glSecondaryColor3svEXT}, {"glSecondaryColor3ubEXT", "void glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte)", glSecondaryColor3ubEXT}, {"glSecondaryColor3ubvEXT", "void glSecondaryColor3ubvEXT (const GLubyte *)", glSecondaryColor3ubvEXT}, {"glSecondaryColor3uiEXT", "void glSecondaryColor3uiEXT (GLuint, GLuint, GLuint)", glSecondaryColor3uiEXT}, {"glSecondaryColor3uivEXT", "void glSecondaryColor3uivEXT (const GLuint *)", glSecondaryColor3uivEXT}, {"glSecondaryColor3usEXT", "void glSecondaryColor3usEXT (GLushort, GLushort, GLushort)", glSecondaryColor3usEXT}, {"glSecondaryColor3usvEXT", "void glSecondaryColor3usvEXT (const GLushort *)", glSecondaryColor3usvEXT}, {"glSecondaryColorPointerEXT", "void glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *)", glSecondaryColorPointerEXT}, {"glTextureNormalEXT", "void glTextureNormalEXT (GLenum)", glTextureNormalEXT}, {"glMultiDrawArraysEXT", "void glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei)", glMultiDrawArraysEXT}, {"glMultiDrawElementsEXT", "void glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei)", glMultiDrawElementsEXT}, {"glFogCoordfEXT", "void glFogCoordfEXT (GLfloat)", glFogCoordfEXT}, {"glFogCoordfvEXT", "void glFogCoordfvEXT (const GLfloat *)", glFogCoordfvEXT}, {"glFogCoorddEXT", "void glFogCoorddEXT (GLdouble)", glFogCoorddEXT}, {"glFogCoorddvEXT", "void glFogCoorddvEXT (const GLdouble *)", glFogCoorddvEXT}, {"glFogCoordPointerEXT", "void glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *)", glFogCoordPointerEXT}, {"glTangent3bEXT", "void glTangent3bEXT (GLbyte, GLbyte, GLbyte)", glTangent3bEXT}, {"glTangent3bvEXT", "void glTangent3bvEXT (const GLbyte *)", glTangent3bvEXT}, {"glTangent3dEXT", "void glTangent3dEXT (GLdouble, GLdouble, GLdouble)", glTangent3dEXT}, {"glTangent3dvEXT", "void glTangent3dvEXT (const GLdouble *)", glTangent3dvEXT}, {"glTangent3fEXT", "void glTangent3fEXT (GLfloat, GLfloat, GLfloat)", glTangent3fEXT}, {"glTangent3fvEXT", "void glTangent3fvEXT (const GLfloat *)", glTangent3fvEXT}, {"glTangent3iEXT", "void glTangent3iEXT (GLint, GLint, GLint)", glTangent3iEXT}, {"glTangent3ivEXT", "void glTangent3ivEXT (const GLint *)", glTangent3ivEXT}, {"glTangent3sEXT", "void glTangent3sEXT (GLshort, GLshort, GLshort)", glTangent3sEXT}, {"glTangent3svEXT", "void glTangent3svEXT (const GLshort *)", glTangent3svEXT}, {"glBinormal3bEXT", "void glBinormal3bEXT (GLbyte, GLbyte, GLbyte)", glBinormal3bEXT}, {"glBinormal3bvEXT", "void glBinormal3bvEXT (const GLbyte *)", glBinormal3bvEXT}, {"glBinormal3dEXT", "void glBinormal3dEXT (GLdouble, GLdouble, GLdouble)", glBinormal3dEXT}, {"glBinormal3dvEXT", "void glBinormal3dvEXT (const GLdouble *)", glBinormal3dvEXT}, {"glBinormal3fEXT", "void glBinormal3fEXT (GLfloat, GLfloat, GLfloat)", glBinormal3fEXT}, {"glBinormal3fvEXT", "void glBinormal3fvEXT (const GLfloat *)", glBinormal3fvEXT}, {"glBinormal3iEXT", "void glBinormal3iEXT (GLint, GLint, GLint)", glBinormal3iEXT}, {"glBinormal3ivEXT", "void glBinormal3ivEXT (const GLint *)", glBinormal3ivEXT}, {"glBinormal3sEXT", "void glBinormal3sEXT (GLshort, GLshort, GLshort)", glBinormal3sEXT}, {"glBinormal3svEXT", "void glBinormal3svEXT (const GLshort *)", glBinormal3svEXT}, {"glTangentPointerEXT", "void glTangentPointerEXT (GLenum, GLsizei, const GLvoid *)", glTangentPointerEXT}, {"glBinormalPointerEXT", "void glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *)", glBinormalPointerEXT}, {"glFinishTextureSUNX", "void glFinishTextureSUNX (void)", glFinishTextureSUNX}, {"glGlobalAlphaFactorbSUN", "void glGlobalAlphaFactorbSUN (GLbyte)", glGlobalAlphaFactorbSUN}, {"glGlobalAlphaFactorsSUN", "void glGlobalAlphaFactorsSUN (GLshort)", glGlobalAlphaFactorsSUN}, {"glGlobalAlphaFactoriSUN", "void glGlobalAlphaFactoriSUN (GLint)", glGlobalAlphaFactoriSUN}, {"glGlobalAlphaFactorfSUN", "void glGlobalAlphaFactorfSUN (GLfloat)", glGlobalAlphaFactorfSUN}, {"glGlobalAlphaFactordSUN", "void glGlobalAlphaFactordSUN (GLdouble)", glGlobalAlphaFactordSUN}, {"glGlobalAlphaFactorubSUN", "void glGlobalAlphaFactorubSUN (GLubyte)", glGlobalAlphaFactorubSUN}, {"glGlobalAlphaFactorusSUN", "void glGlobalAlphaFactorusSUN (GLushort)", glGlobalAlphaFactorusSUN}, {"glGlobalAlphaFactoruiSUN", "void glGlobalAlphaFactoruiSUN (GLuint)", glGlobalAlphaFactoruiSUN}, {"glReplacementCodeuiSUN", "void glReplacementCodeuiSUN (GLuint)", glReplacementCodeuiSUN}, {"glReplacementCodeusSUN", "void glReplacementCodeusSUN (GLushort)", glReplacementCodeusSUN}, {"glReplacementCodeubSUN", "void glReplacementCodeubSUN (GLubyte)", glReplacementCodeubSUN}, {"glReplacementCodeuivSUN", "void glReplacementCodeuivSUN (const GLuint *)", glReplacementCodeuivSUN}, {"glReplacementCodeusvSUN", "void glReplacementCodeusvSUN (const GLushort *)", glReplacementCodeusvSUN}, {"glReplacementCodeubvSUN", "void glReplacementCodeubvSUN (const GLubyte *)", glReplacementCodeubvSUN}, {"glReplacementCodePointerSUN", "void glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *)", glReplacementCodePointerSUN}, {"glColor4ubVertex2fSUN", "void glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat)", glColor4ubVertex2fSUN}, {"glColor4ubVertex2fvSUN", "void glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *)", glColor4ubVertex2fvSUN}, {"glColor4ubVertex3fSUN", "void glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat)", glColor4ubVertex3fSUN}, {"glColor4ubVertex3fvSUN", "void glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *)", glColor4ubVertex3fvSUN}, {"glColor3fVertex3fSUN", "void glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glColor3fVertex3fSUN}, {"glColor3fVertex3fvSUN", "void glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *)", glColor3fVertex3fvSUN}, {"glNormal3fVertex3fSUN", "void glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glNormal3fVertex3fSUN}, {"glNormal3fVertex3fvSUN", "void glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *)", glNormal3fVertex3fvSUN}, {"glColor4fNormal3fVertex3fSUN", "void glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glColor4fNormal3fVertex3fSUN}, {"glColor4fNormal3fVertex3fvSUN", "void glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *)", glColor4fNormal3fVertex3fvSUN}, {"glTexCoord2fVertex3fSUN", "void glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord2fVertex3fSUN}, {"glTexCoord2fVertex3fvSUN", "void glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *)", glTexCoord2fVertex3fvSUN}, {"glTexCoord4fVertex4fSUN", "void glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord4fVertex4fSUN}, {"glTexCoord4fVertex4fvSUN", "void glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *)", glTexCoord4fVertex4fvSUN}, {"glTexCoord2fColor4ubVertex3fSUN", "void glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat)", glTexCoord2fColor4ubVertex3fSUN}, {"glTexCoord2fColor4ubVertex3fvSUN", "void glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *)", glTexCoord2fColor4ubVertex3fvSUN}, {"glTexCoord2fColor3fVertex3fSUN", "void glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord2fColor3fVertex3fSUN}, {"glTexCoord2fColor3fVertex3fvSUN", "void glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *)", glTexCoord2fColor3fVertex3fvSUN}, {"glTexCoord2fNormal3fVertex3fSUN", "void glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord2fNormal3fVertex3fSUN}, {"glTexCoord2fNormal3fVertex3fvSUN", "void glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *)", glTexCoord2fNormal3fVertex3fvSUN}, {"glTexCoord2fColor4fNormal3fVertex3fSUN", "void glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord2fColor4fNormal3fVertex3fSUN}, {"glTexCoord2fColor4fNormal3fVertex3fvSUN", "void glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)", glTexCoord2fColor4fNormal3fVertex3fvSUN}, {"glTexCoord4fColor4fNormal3fVertex4fSUN", "void glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glTexCoord4fColor4fNormal3fVertex4fSUN}, {"glTexCoord4fColor4fNormal3fVertex4fvSUN", "void glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)", glTexCoord4fColor4fNormal3fVertex4fvSUN}, {"glReplacementCodeuiVertex3fSUN", "void glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiVertex3fSUN}, {"glReplacementCodeuiVertex3fvSUN", "void glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *)", glReplacementCodeuiVertex3fvSUN}, {"glReplacementCodeuiColor4ubVertex3fSUN", "void glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiColor4ubVertex3fSUN}, {"glReplacementCodeuiColor4ubVertex3fvSUN", "void glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *)", glReplacementCodeuiColor4ubVertex3fvSUN}, {"glReplacementCodeuiColor3fVertex3fSUN", "void glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiColor3fVertex3fSUN}, {"glReplacementCodeuiColor3fVertex3fvSUN", "void glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *)", glReplacementCodeuiColor3fVertex3fvSUN}, {"glReplacementCodeuiNormal3fVertex3fSUN", "void glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiNormal3fVertex3fSUN}, {"glReplacementCodeuiNormal3fVertex3fvSUN", "void glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *)", glReplacementCodeuiNormal3fVertex3fvSUN}, {"glReplacementCodeuiColor4fNormal3fVertex3fSUN", "void glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiColor4fNormal3fVertex3fSUN}, {"glReplacementCodeuiColor4fNormal3fVertex3fvSUN", "void glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *)", glReplacementCodeuiColor4fNormal3fVertex3fvSUN}, {"glReplacementCodeuiTexCoord2fVertex3fSUN", "void glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiTexCoord2fVertex3fSUN}, {"glReplacementCodeuiTexCoord2fVertex3fvSUN", "void glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *)", glReplacementCodeuiTexCoord2fVertex3fvSUN}, {"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN", "void glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN}, {"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN", "void glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *)", glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN}, {"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN", "void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat)", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN}, {"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN", "void glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *)", glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN}, {"glBlendFuncSeparateEXT", "void glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum)", glBlendFuncSeparateEXT}, {"glBlendFuncSeparateINGR", "void glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum)", glBlendFuncSeparateINGR}, {"glVertexWeightfEXT", "void glVertexWeightfEXT (GLfloat)", glVertexWeightfEXT}, {"glVertexWeightfvEXT", "void glVertexWeightfvEXT (const GLfloat *)", glVertexWeightfvEXT}, {"glVertexWeightPointerEXT", "void glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *)", glVertexWeightPointerEXT}, {"glFlushVertexArrayRangeNV", "void glFlushVertexArrayRangeNV (void)", glFlushVertexArrayRangeNV}, {"glVertexArrayRangeNV", "void glVertexArrayRangeNV (GLsizei, const GLvoid *)", glVertexArrayRangeNV}, {"glCombinerParameterfvNV", "void glCombinerParameterfvNV (GLenum, const GLfloat *)", glCombinerParameterfvNV}, {"glCombinerParameterfNV", "void glCombinerParameterfNV (GLenum, GLfloat)", glCombinerParameterfNV}, {"glCombinerParameterivNV", "void glCombinerParameterivNV (GLenum, const GLint *)", glCombinerParameterivNV}, {"glCombinerParameteriNV", "void glCombinerParameteriNV (GLenum, GLint)", glCombinerParameteriNV}, {"glCombinerInputNV", "void glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)", glCombinerInputNV}, {"glCombinerOutputNV", "void glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)", glCombinerOutputNV}, {"glFinalCombinerInputNV", "void glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum)", glFinalCombinerInputNV}, {"glGetCombinerInputParameterfvNV", "void glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *)", glGetCombinerInputParameterfvNV}, {"glGetCombinerInputParameterivNV", "void glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *)", glGetCombinerInputParameterivNV}, {"glGetCombinerOutputParameterfvNV", "void glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *)", glGetCombinerOutputParameterfvNV}, {"glGetCombinerOutputParameterivNV", "void glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *)", glGetCombinerOutputParameterivNV}, {"glGetFinalCombinerInputParameterfvNV", "void glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *)", glGetFinalCombinerInputParameterfvNV}, {"glGetFinalCombinerInputParameterivNV", "void glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *)", glGetFinalCombinerInputParameterivNV}, {"glResizeBuffersMESA", "void glResizeBuffersMESA (void)", glResizeBuffersMESA}, {"glWindowPos2dMESA", "void glWindowPos2dMESA (GLdouble, GLdouble)", glWindowPos2dMESA}, {"glWindowPos2dvMESA", "void glWindowPos2dvMESA (const GLdouble *)", glWindowPos2dvMESA}, {"glWindowPos2fMESA", "void glWindowPos2fMESA (GLfloat, GLfloat)", glWindowPos2fMESA}, {"glWindowPos2fvMESA", "void glWindowPos2fvMESA (const GLfloat *)", glWindowPos2fvMESA}, {"glWindowPos2iMESA", "void glWindowPos2iMESA (GLint, GLint)", glWindowPos2iMESA}, {"glWindowPos2ivMESA", "void glWindowPos2ivMESA (const GLint *)", glWindowPos2ivMESA}, {"glWindowPos2sMESA", "void glWindowPos2sMESA (GLshort, GLshort)", glWindowPos2sMESA}, {"glWindowPos2svMESA", "void glWindowPos2svMESA (const GLshort *)", glWindowPos2svMESA}, {"glWindowPos3dMESA", "void glWindowPos3dMESA (GLdouble, GLdouble, GLdouble)", glWindowPos3dMESA}, {"glWindowPos3dvMESA", "void glWindowPos3dvMESA (const GLdouble *)", glWindowPos3dvMESA}, {"glWindowPos3fMESA", "void glWindowPos3fMESA (GLfloat, GLfloat, GLfloat)", glWindowPos3fMESA}, {"glWindowPos3fvMESA", "void glWindowPos3fvMESA (const GLfloat *)", glWindowPos3fvMESA}, {"glWindowPos3iMESA", "void glWindowPos3iMESA (GLint, GLint, GLint)", glWindowPos3iMESA}, {"glWindowPos3ivMESA", "void glWindowPos3ivMESA (const GLint *)", glWindowPos3ivMESA}, {"glWindowPos3sMESA", "void glWindowPos3sMESA (GLshort, GLshort, GLshort)", glWindowPos3sMESA}, {"glWindowPos3svMESA", "void glWindowPos3svMESA (const GLshort *)", glWindowPos3svMESA}, {"glWindowPos4dMESA", "void glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble)", glWindowPos4dMESA}, {"glWindowPos4dvMESA", "void glWindowPos4dvMESA (const GLdouble *)", glWindowPos4dvMESA}, {"glWindowPos4fMESA", "void glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat)", glWindowPos4fMESA}, {"glWindowPos4fvMESA", "void glWindowPos4fvMESA (const GLfloat *)", glWindowPos4fvMESA}, {"glWindowPos4iMESA", "void glWindowPos4iMESA (GLint, GLint, GLint, GLint)", glWindowPos4iMESA}, {"glWindowPos4ivMESA", "void glWindowPos4ivMESA (const GLint *)", glWindowPos4ivMESA}, {"glWindowPos4sMESA", "void glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort)", glWindowPos4sMESA}, {"glWindowPos4svMESA", "void glWindowPos4svMESA (const GLshort *)", glWindowPos4svMESA}, {"glMultiModeDrawArraysIBM", "void glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)", glMultiModeDrawArraysIBM}, {"glMultiModeDrawElementsIBM", "void glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint)", glMultiModeDrawElementsIBM}, {"glColorPointerListIBM", "void glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint)", glColorPointerListIBM}, {"glSecondaryColorPointerListIBM", "void glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint)", glSecondaryColorPointerListIBM}, {"glEdgeFlagPointerListIBM", "void glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint)", glEdgeFlagPointerListIBM}, {"glFogCoordPointerListIBM", "void glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint)", glFogCoordPointerListIBM}, {"glIndexPointerListIBM", "void glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint)", glIndexPointerListIBM}, {"glNormalPointerListIBM", "void glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint)", glNormalPointerListIBM}, {"glTexCoordPointerListIBM", "void glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint)", glTexCoordPointerListIBM}, {"glVertexPointerListIBM", "void glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint)", glVertexPointerListIBM}, {"glTbufferMask3DFX", "void glTbufferMask3DFX (GLuint)", glTbufferMask3DFX}, {"glSampleMaskEXT", "void glSampleMaskEXT (GLclampf, GLboolean)", glSampleMaskEXT}, {"glSamplePatternEXT", "void glSamplePatternEXT (GLenum)", glSamplePatternEXT}, {"glTextureColorMaskSGIS", "void glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean)", glTextureColorMaskSGIS}, {"glIglooInterfaceSGIX", "void glIglooInterfaceSGIX (GLenum, const GLvoid *)", glIglooInterfaceSGIX}, {"glDeleteFencesNV", "void glDeleteFencesNV (GLsizei, const GLuint *)", glDeleteFencesNV}, {"glGenFencesNV", "void glGenFencesNV (GLsizei, GLuint *)", glGenFencesNV}, {"glIsFenceNV", "GLboolean glIsFenceNV (GLuint)", glIsFenceNV}, {"glTestFenceNV", "GLboolean glTestFenceNV (GLuint)", glTestFenceNV}, {"glGetFenceivNV", "void glGetFenceivNV (GLuint, GLenum, GLint *)", glGetFenceivNV}, {"glFinishFenceNV", "void glFinishFenceNV (GLuint)", glFinishFenceNV}, {"glSetFenceNV", "void glSetFenceNV (GLuint, GLenum)", glSetFenceNV}, {"glMapControlPointsNV", "void glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *)", glMapControlPointsNV}, {"glMapParameterivNV", "void glMapParameterivNV (GLenum, GLenum, const GLint *)", glMapParameterivNV}, {"glMapParameterfvNV", "void glMapParameterfvNV (GLenum, GLenum, const GLfloat *)", glMapParameterfvNV}, {"glGetMapControlPointsNV", "void glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *)", glGetMapControlPointsNV}, {"glGetMapParameterivNV", "void glGetMapParameterivNV (GLenum, GLenum, GLint *)", glGetMapParameterivNV}, {"glGetMapParameterfvNV", "void glGetMapParameterfvNV (GLenum, GLenum, GLfloat *)", glGetMapParameterfvNV}, {"glGetMapAttribParameterivNV", "void glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *)", glGetMapAttribParameterivNV}, {"glGetMapAttribParameterfvNV", "void glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *)", glGetMapAttribParameterfvNV}, {"glEvalMapsNV", "void glEvalMapsNV (GLenum, GLenum)", glEvalMapsNV}, {"glCombinerStageParameterfvNV", "void glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *)", glCombinerStageParameterfvNV}, {"glGetCombinerStageParameterfvNV", "void glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *)", glGetCombinerStageParameterfvNV}, {"glAreProgramsResidentNV", "GLboolean glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *)", glAreProgramsResidentNV}, {"glBindProgramNV", "void glBindProgramNV (GLenum, GLuint)", glBindProgramNV}, {"glDeleteProgramsNV", "void glDeleteProgramsNV (GLsizei, const GLuint *)", glDeleteProgramsNV}, {"glExecuteProgramNV", "void glExecuteProgramNV (GLenum, GLuint, const GLfloat *)", glExecuteProgramNV}, {"glGenProgramsNV", "void glGenProgramsNV (GLsizei, GLuint *)", glGenProgramsNV}, {"glGetProgramParameterdvNV", "void glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *)", glGetProgramParameterdvNV}, {"glGetProgramParameterfvNV", "void glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *)", glGetProgramParameterfvNV}, {"glGetProgramivNV", "void glGetProgramivNV (GLuint, GLenum, GLint *)", glGetProgramivNV}, {"glGetProgramStringNV", "void glGetProgramStringNV (GLuint, GLenum, GLubyte *)", glGetProgramStringNV}, {"glGetTrackMatrixivNV", "void glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *)", glGetTrackMatrixivNV}, {"glGetVertexAttribdvNV", "void glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *)", glGetVertexAttribdvNV}, {"glGetVertexAttribfvNV", "void glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *)", glGetVertexAttribfvNV}, {"glGetVertexAttribivNV", "void glGetVertexAttribivNV (GLuint, GLenum, GLint *)", glGetVertexAttribivNV}, {"glGetVertexAttribPointervNV", "void glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *)", glGetVertexAttribPointervNV}, {"glIsProgramNV", "GLboolean glIsProgramNV (GLuint)", glIsProgramNV}, {"glLoadProgramNV", "void glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *)", glLoadProgramNV}, {"glProgramParameter4dNV", "void glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)", glProgramParameter4dNV}, {"glProgramParameter4dvNV", "void glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *)", glProgramParameter4dvNV}, {"glProgramParameter4fNV", "void glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)", glProgramParameter4fNV}, {"glProgramParameter4fvNV", "void glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *)", glProgramParameter4fvNV}, {"glProgramParameters4dvNV", "void glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *)", glProgramParameters4dvNV}, {"glProgramParameters4fvNV", "void glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *)", glProgramParameters4fvNV}, {"glRequestResidentProgramsNV", "void glRequestResidentProgramsNV (GLsizei, const GLuint *)", glRequestResidentProgramsNV}, {"glTrackMatrixNV", "void glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum)", glTrackMatrixNV}, {"glVertexAttribPointerNV", "void glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *)", glVertexAttribPointerNV}, {"glVertexAttrib1dNV", "void glVertexAttrib1dNV (GLuint, GLdouble)", glVertexAttrib1dNV}, {"glVertexAttrib1dvNV", "void glVertexAttrib1dvNV (GLuint, const GLdouble *)", glVertexAttrib1dvNV}, {"glVertexAttrib1fNV", "void glVertexAttrib1fNV (GLuint, GLfloat)", glVertexAttrib1fNV}, {"glVertexAttrib1fvNV", "void glVertexAttrib1fvNV (GLuint, const GLfloat *)", glVertexAttrib1fvNV}, {"glVertexAttrib1sNV", "void glVertexAttrib1sNV (GLuint, GLshort)", glVertexAttrib1sNV}, {"glVertexAttrib1svNV", "void glVertexAttrib1svNV (GLuint, const GLshort *)", glVertexAttrib1svNV}, {"glVertexAttrib2dNV", "void glVertexAttrib2dNV (GLuint, GLdouble, GLdouble)", glVertexAttrib2dNV}, {"glVertexAttrib2dvNV", "void glVertexAttrib2dvNV (GLuint, const GLdouble *)", glVertexAttrib2dvNV}, {"glVertexAttrib2fNV", "void glVertexAttrib2fNV (GLuint, GLfloat, GLfloat)", glVertexAttrib2fNV}, {"glVertexAttrib2fvNV", "void glVertexAttrib2fvNV (GLuint, const GLfloat *)", glVertexAttrib2fvNV}, {"glVertexAttrib2sNV", "void glVertexAttrib2sNV (GLuint, GLshort, GLshort)", glVertexAttrib2sNV}, {"glVertexAttrib2svNV", "void glVertexAttrib2svNV (GLuint, const GLshort *)", glVertexAttrib2svNV}, {"glVertexAttrib3dNV", "void glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble)", glVertexAttrib3dNV}, {"glVertexAttrib3dvNV", "void glVertexAttrib3dvNV (GLuint, const GLdouble *)", glVertexAttrib3dvNV}, {"glVertexAttrib3fNV", "void glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat)", glVertexAttrib3fNV}, {"glVertexAttrib3fvNV", "void glVertexAttrib3fvNV (GLuint, const GLfloat *)", glVertexAttrib3fvNV}, {"glVertexAttrib3sNV", "void glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort)", glVertexAttrib3sNV}, {"glVertexAttrib3svNV", "void glVertexAttrib3svNV (GLuint, const GLshort *)", glVertexAttrib3svNV}, {"glVertexAttrib4dNV", "void glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble)", glVertexAttrib4dNV}, {"glVertexAttrib4dvNV", "void glVertexAttrib4dvNV (GLuint, const GLdouble *)", glVertexAttrib4dvNV}, {"glVertexAttrib4fNV", "void glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat)", glVertexAttrib4fNV}, {"glVertexAttrib4fvNV", "void glVertexAttrib4fvNV (GLuint, const GLfloat *)", glVertexAttrib4fvNV}, {"glVertexAttrib4sNV", "void glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort)", glVertexAttrib4sNV}, {"glVertexAttrib4svNV", "void glVertexAttrib4svNV (GLuint, const GLshort *)", glVertexAttrib4svNV}, {"glVertexAttrib4ubNV", "void glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte)", glVertexAttrib4ubNV}, {"glVertexAttrib4ubvNV", "void glVertexAttrib4ubvNV (GLuint, const GLubyte *)", glVertexAttrib4ubvNV}, {"glVertexAttribs1dvNV", "void glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *)", glVertexAttribs1dvNV}, {"glVertexAttribs1fvNV", "void glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *)", glVertexAttribs1fvNV}, {"glVertexAttribs1svNV", "void glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *)", glVertexAttribs1svNV}, {"glVertexAttribs2dvNV", "void glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *)", glVertexAttribs2dvNV}, {"glVertexAttribs2fvNV", "void glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *)", glVertexAttribs2fvNV}, {"glVertexAttribs2svNV", "void glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *)", glVertexAttribs2svNV}, {"glVertexAttribs3dvNV", "void glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *)", glVertexAttribs3dvNV}, {"glVertexAttribs3fvNV", "void glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *)", glVertexAttribs3fvNV}, {"glVertexAttribs3svNV", "void glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *)", glVertexAttribs3svNV}, {"glVertexAttribs4dvNV", "void glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *)", glVertexAttribs4dvNV}, {"glVertexAttribs4fvNV", "void glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *)", glVertexAttribs4fvNV}, {"glVertexAttribs4svNV", "void glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *)", glVertexAttribs4svNV}, {"glVertexAttribs4ubvNV", "void glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *)", glVertexAttribs4ubvNV}, {"glTexBumpParameterivATI", "void glTexBumpParameterivATI (GLenum, const GLint *)", glTexBumpParameterivATI}, {"glTexBumpParameterfvATI", "void glTexBumpParameterfvATI (GLenum, const GLfloat *)", glTexBumpParameterfvATI}, {"glGetTexBumpParameterivATI", "void glGetTexBumpParameterivATI (GLenum, GLint *)", glGetTexBumpParameterivATI}, {"glGetTexBumpParameterfvATI", "void glGetTexBumpParameterfvATI (GLenum, GLfloat *)", glGetTexBumpParameterfvATI}, {"glGenFragmentShadersATI", "GLuint glGenFragmentShadersATI (GLuint)", glGenFragmentShadersATI}, {"glBindFragmentShaderATI", "void glBindFragmentShaderATI (GLuint)", glBindFragmentShaderATI}, {"glDeleteFragmentShaderATI", "void glDeleteFragmentShaderATI (GLuint)", glDeleteFragmentShaderATI}, {"glBeginFragmentShaderATI", "void glBeginFragmentShaderATI (void)", glBeginFragmentShaderATI}, {"glEndFragmentShaderATI", "void glEndFragmentShaderATI (void)", glEndFragmentShaderATI}, {"glPassTexCoordATI", "void glPassTexCoordATI (GLuint, GLuint, GLenum)", glPassTexCoordATI}, {"glSampleMapATI", "void glSampleMapATI (GLuint, GLuint, GLenum)", glSampleMapATI}, {"glColorFragmentOp1ATI", "void glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)", glColorFragmentOp1ATI}, {"glColorFragmentOp2ATI", "void glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)", glColorFragmentOp2ATI}, {"glColorFragmentOp3ATI", "void glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)", glColorFragmentOp3ATI}, {"glAlphaFragmentOp1ATI", "void glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)", glAlphaFragmentOp1ATI}, {"glAlphaFragmentOp2ATI", "void glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)", glAlphaFragmentOp2ATI}, {"glAlphaFragmentOp3ATI", "void glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)", glAlphaFragmentOp3ATI}, {"glSetFragmentShaderConstantATI", "void glSetFragmentShaderConstantATI (GLuint, const GLfloat *)", glSetFragmentShaderConstantATI}, {"glPNTrianglesiATI", "void glPNTrianglesiATI (GLenum, GLint)", glPNTrianglesiATI}, {"glPNTrianglesfATI", "void glPNTrianglesfATI (GLenum, GLfloat)", glPNTrianglesfATI}, {"glNewObjectBufferATI", "GLuint glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum)", glNewObjectBufferATI}, {"glIsObjectBufferATI", "GLboolean glIsObjectBufferATI (GLuint)", glIsObjectBufferATI}, {"glUpdateObjectBufferATI", "void glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum)", glUpdateObjectBufferATI}, {"glGetObjectBufferfvATI", "void glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *)", glGetObjectBufferfvATI}, {"glGetObjectBufferivATI", "void glGetObjectBufferivATI (GLuint, GLenum, GLint *)", glGetObjectBufferivATI}, {"glFreeObjectBufferATI", "void glFreeObjectBufferATI (GLuint)", glFreeObjectBufferATI}, {"glArrayObjectATI", "void glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint)", glArrayObjectATI}, {"glGetArrayObjectfvATI", "void glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *)", glGetArrayObjectfvATI}, {"glGetArrayObjectivATI", "void glGetArrayObjectivATI (GLenum, GLenum, GLint *)", glGetArrayObjectivATI}, {"glVariantArrayObjectATI", "void glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint)", glVariantArrayObjectATI}, {"glGetVariantArrayObjectfvATI", "void glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *)", glGetVariantArrayObjectfvATI}, {"glGetVariantArrayObjectivATI", "void glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *)", glGetVariantArrayObjectivATI}, {"glBeginVertexShaderEXT", "void glBeginVertexShaderEXT (void)", glBeginVertexShaderEXT}, {"glEndVertexShaderEXT", "void glEndVertexShaderEXT (void)", glEndVertexShaderEXT}, {"glBindVertexShaderEXT", "void glBindVertexShaderEXT (GLuint)", glBindVertexShaderEXT}, {"glGenVertexShadersEXT", "GLuint glGenVertexShadersEXT (GLuint)", glGenVertexShadersEXT}, {"glDeleteVertexShaderEXT", "void glDeleteVertexShaderEXT (GLuint)", glDeleteVertexShaderEXT}, {"glShaderOp1EXT", "void glShaderOp1EXT (GLenum, GLuint, GLuint)", glShaderOp1EXT}, {"glShaderOp2EXT", "void glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint)", glShaderOp2EXT}, {"glShaderOp3EXT", "void glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint)", glShaderOp3EXT}, {"glSwizzleEXT", "void glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum)", glSwizzleEXT}, {"glWriteMaskEXT", "void glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum)", glWriteMaskEXT}, {"glInsertComponentEXT", "void glInsertComponentEXT (GLuint, GLuint, GLuint)", glInsertComponentEXT}, {"glExtractComponentEXT", "void glExtractComponentEXT (GLuint, GLuint, GLuint)", glExtractComponentEXT}, {"glGenSymbolsEXT", "GLuint glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint)", glGenSymbolsEXT}, {"glSetInvariantEXT", "void glSetInvariantEXT (GLuint, GLenum, const GLvoid *)", glSetInvariantEXT}, {"glSetLocalConstantEXT", "void glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *)", glSetLocalConstantEXT}, {"glVariantbvEXT", "void glVariantbvEXT (GLuint, const GLbyte *)", glVariantbvEXT}, {"glVariantsvEXT", "void glVariantsvEXT (GLuint, const GLshort *)", glVariantsvEXT}, {"glVariantivEXT", "void glVariantivEXT (GLuint, const GLint *)", glVariantivEXT}, {"glVariantfvEXT", "void glVariantfvEXT (GLuint, const GLfloat *)", glVariantfvEXT}, {"glVariantdvEXT", "void glVariantdvEXT (GLuint, const GLdouble *)", glVariantdvEXT}, {"glVariantubvEXT", "void glVariantubvEXT (GLuint, const GLubyte *)", glVariantubvEXT}, {"glVariantusvEXT", "void glVariantusvEXT (GLuint, const GLushort *)", glVariantusvEXT}, {"glVariantuivEXT", "void glVariantuivEXT (GLuint, const GLuint *)", glVariantuivEXT}, {"glVariantPointerEXT", "void glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *)", glVariantPointerEXT}, {"glEnableVariantClientStateEXT", "void glEnableVariantClientStateEXT (GLuint)", glEnableVariantClientStateEXT}, {"glDisableVariantClientStateEXT", "void glDisableVariantClientStateEXT (GLuint)", glDisableVariantClientStateEXT}, {"glBindLightParameterEXT", "GLuint glBindLightParameterEXT (GLenum, GLenum)", glBindLightParameterEXT}, {"glBindMaterialParameterEXT", "GLuint glBindMaterialParameterEXT (GLenum, GLenum)", glBindMaterialParameterEXT}, {"glBindTexGenParameterEXT", "GLuint glBindTexGenParameterEXT (GLenum, GLenum, GLenum)", glBindTexGenParameterEXT}, {"glBindTextureUnitParameterEXT", "GLuint glBindTextureUnitParameterEXT (GLenum, GLenum)", glBindTextureUnitParameterEXT}, {"glBindParameterEXT", "GLuint glBindParameterEXT (GLenum)", glBindParameterEXT}, {"glIsVariantEnabledEXT", "GLboolean glIsVariantEnabledEXT (GLuint, GLenum)", glIsVariantEnabledEXT}, {"glGetVariantBooleanvEXT", "void glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *)", glGetVariantBooleanvEXT}, {"glGetVariantIntegervEXT", "void glGetVariantIntegervEXT (GLuint, GLenum, GLint *)", glGetVariantIntegervEXT}, {"glGetVariantFloatvEXT", "void glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *)", glGetVariantFloatvEXT}, {"glGetVariantPointervEXT", "void glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *)", glGetVariantPointervEXT}, {"glGetInvariantBooleanvEXT", "void glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *)", glGetInvariantBooleanvEXT}, {"glGetInvariantIntegervEXT", "void glGetInvariantIntegervEXT (GLuint, GLenum, GLint *)", glGetInvariantIntegervEXT}, {"glGetInvariantFloatvEXT", "void glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *)", glGetInvariantFloatvEXT}, {"glGetLocalConstantBooleanvEXT", "void glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *)", glGetLocalConstantBooleanvEXT}, {"glGetLocalConstantIntegervEXT", "void glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *)", glGetLocalConstantIntegervEXT}, {"glGetLocalConstantFloatvEXT", "void glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *)", glGetLocalConstantFloatvEXT}, {"glVertexStream1sATI", "void glVertexStream1sATI (GLenum, GLshort)", glVertexStream1sATI}, {"glVertexStream1svATI", "void glVertexStream1svATI (GLenum, const GLshort *)", glVertexStream1svATI}, {"glVertexStream1iATI", "void glVertexStream1iATI (GLenum, GLint)", glVertexStream1iATI}, {"glVertexStream1ivATI", "void glVertexStream1ivATI (GLenum, const GLint *)", glVertexStream1ivATI}, {"glVertexStream1fATI", "void glVertexStream1fATI (GLenum, GLfloat)", glVertexStream1fATI}, {"glVertexStream1fvATI", "void glVertexStream1fvATI (GLenum, const GLfloat *)", glVertexStream1fvATI}, {"glVertexStream1dATI", "void glVertexStream1dATI (GLenum, GLdouble)", glVertexStream1dATI}, {"glVertexStream1dvATI", "void glVertexStream1dvATI (GLenum, const GLdouble *)", glVertexStream1dvATI}, {"glVertexStream2sATI", "void glVertexStream2sATI (GLenum, GLshort, GLshort)", glVertexStream2sATI}, {"glVertexStream2svATI", "void glVertexStream2svATI (GLenum, const GLshort *)", glVertexStream2svATI}, {"glVertexStream2iATI", "void glVertexStream2iATI (GLenum, GLint, GLint)", glVertexStream2iATI}, {"glVertexStream2ivATI", "void glVertexStream2ivATI (GLenum, const GLint *)", glVertexStream2ivATI}, {"glVertexStream2fATI", "void glVertexStream2fATI (GLenum, GLfloat, GLfloat)", glVertexStream2fATI}, {"glVertexStream2fvATI", "void glVertexStream2fvATI (GLenum, const GLfloat *)", glVertexStream2fvATI}, {"glVertexStream2dATI", "void glVertexStream2dATI (GLenum, GLdouble, GLdouble)", glVertexStream2dATI}, {"glVertexStream2dvATI", "void glVertexStream2dvATI (GLenum, const GLdouble *)", glVertexStream2dvATI}, {"glVertexStream3sATI", "void glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort)", glVertexStream3sATI}, {"glVertexStream3svATI", "void glVertexStream3svATI (GLenum, const GLshort *)", glVertexStream3svATI}, {"glVertexStream3iATI", "void glVertexStream3iATI (GLenum, GLint, GLint, GLint)", glVertexStream3iATI}, {"glVertexStream3ivATI", "void glVertexStream3ivATI (GLenum, const GLint *)", glVertexStream3ivATI}, {"glVertexStream3fATI", "void glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat)", glVertexStream3fATI}, {"glVertexStream3fvATI", "void glVertexStream3fvATI (GLenum, const GLfloat *)", glVertexStream3fvATI}, {"glVertexStream3dATI", "void glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble)", glVertexStream3dATI}, {"glVertexStream3dvATI", "void glVertexStream3dvATI (GLenum, const GLdouble *)", glVertexStream3dvATI}, {"glVertexStream4sATI", "void glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort)", glVertexStream4sATI}, {"glVertexStream4svATI", "void glVertexStream4svATI (GLenum, const GLshort *)", glVertexStream4svATI}, {"glVertexStream4iATI", "void glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint)", glVertexStream4iATI}, {"glVertexStream4ivATI", "void glVertexStream4ivATI (GLenum, const GLint *)", glVertexStream4ivATI}, {"glVertexStream4fATI", "void glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat)", glVertexStream4fATI}, {"glVertexStream4fvATI", "void glVertexStream4fvATI (GLenum, const GLfloat *)", glVertexStream4fvATI}, {"glVertexStream4dATI", "void glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble)", glVertexStream4dATI}, {"glVertexStream4dvATI", "void glVertexStream4dvATI (GLenum, const GLdouble *)", glVertexStream4dvATI}, {"glNormalStream3bATI", "void glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte)", glNormalStream3bATI}, {"glNormalStream3bvATI", "void glNormalStream3bvATI (GLenum, const GLbyte *)", glNormalStream3bvATI}, {"glNormalStream3sATI", "void glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort)", glNormalStream3sATI}, {"glNormalStream3svATI", "void glNormalStream3svATI (GLenum, const GLshort *)", glNormalStream3svATI}, {"glNormalStream3iATI", "void glNormalStream3iATI (GLenum, GLint, GLint, GLint)", glNormalStream3iATI}, {"glNormalStream3ivATI", "void glNormalStream3ivATI (GLenum, const GLint *)", glNormalStream3ivATI}, {"glNormalStream3fATI", "void glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat)", glNormalStream3fATI}, {"glNormalStream3fvATI", "void glNormalStream3fvATI (GLenum, const GLfloat *)", glNormalStream3fvATI}, {"glNormalStream3dATI", "void glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble)", glNormalStream3dATI}, {"glNormalStream3dvATI", "void glNormalStream3dvATI (GLenum, const GLdouble *)", glNormalStream3dvATI}, {"glClientActiveVertexStreamATI", "void glClientActiveVertexStreamATI (GLenum)", glClientActiveVertexStreamATI}, {"glVertexBlendEnviATI", "void glVertexBlendEnviATI (GLenum, GLint)", glVertexBlendEnviATI}, {"glVertexBlendEnvfATI", "void glVertexBlendEnvfATI (GLenum, GLfloat)", glVertexBlendEnvfATI}, {"glElementPointerATI", "void glElementPointerATI (GLenum, const GLvoid *)", glElementPointerATI}, {"glDrawElementArrayATI", "void glDrawElementArrayATI (GLenum, GLsizei)", glDrawElementArrayATI}, {"glDrawRangeElementArrayATI", "void glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei)", glDrawRangeElementArrayATI}, {"glDrawMeshArraysSUN", "void glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei)", glDrawMeshArraysSUN}, {"glGenOcclusionQueriesNV", "void glGenOcclusionQueriesNV (GLsizei, GLuint *)", glGenOcclusionQueriesNV}, {"glDeleteOcclusionQueriesNV", "void glDeleteOcclusionQueriesNV (GLsizei, const GLuint *)", glDeleteOcclusionQueriesNV}, {"glIsOcclusionQueryNV", "GLboolean glIsOcclusionQueryNV (GLuint)", glIsOcclusionQueryNV}, {"glBeginOcclusionQueryNV", "void glBeginOcclusionQueryNV (GLuint)", glBeginOcclusionQueryNV}, {"glEndOcclusionQueryNV", "void glEndOcclusionQueryNV (void)", glEndOcclusionQueryNV}, {"glGetOcclusionQueryivNV", "void glGetOcclusionQueryivNV (GLuint, GLenum, GLint *)", glGetOcclusionQueryivNV}, {"glGetOcclusionQueryuivNV", "void glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *)", glGetOcclusionQueryuivNV}, {"glPointParameteriNV", "void glPointParameteriNV (GLenum, GLint)", glPointParameteriNV}, {"glPointParameterivNV", "void glPointParameterivNV (GLenum, const GLint *)", glPointParameterivNV}, {"glActiveStencilFaceEXT", "void glActiveStencilFaceEXT (GLenum)", glActiveStencilFaceEXT}, {"glElementPointerAPPLE", "void glElementPointerAPPLE (GLenum, const GLvoid *)", glElementPointerAPPLE}, {"glDrawElementArrayAPPLE", "void glDrawElementArrayAPPLE (GLenum, GLint, GLsizei)", glDrawElementArrayAPPLE}, {"glDrawRangeElementArrayAPPLE", "void glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei)", glDrawRangeElementArrayAPPLE}, {"glMultiDrawElementArrayAPPLE", "void glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei)", glMultiDrawElementArrayAPPLE}, {"glMultiDrawRangeElementArrayAPPLE", "void glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei)", glMultiDrawRangeElementArrayAPPLE}, {"glGenFencesAPPLE", "void glGenFencesAPPLE (GLsizei, GLuint *)", glGenFencesAPPLE}, {"glDeleteFencesAPPLE", "void glDeleteFencesAPPLE (GLsizei, const GLuint *)", glDeleteFencesAPPLE}, {"glSetFenceAPPLE", "void glSetFenceAPPLE (GLuint)", glSetFenceAPPLE}, {"glIsFenceAPPLE", "GLboolean glIsFenceAPPLE (GLuint)", glIsFenceAPPLE}, {"glTestFenceAPPLE", "GLboolean glTestFenceAPPLE (GLuint)", glTestFenceAPPLE}, {"glFinishFenceAPPLE", "void glFinishFenceAPPLE (GLuint)", glFinishFenceAPPLE}, {"glTestObjectAPPLE", "GLboolean glTestObjectAPPLE (GLenum, GLuint)", glTestObjectAPPLE}, {"glFinishObjectAPPLE", "void glFinishObjectAPPLE (GLenum, GLint)", glFinishObjectAPPLE}, {"glBindVertexArrayAPPLE", "void glBindVertexArrayAPPLE (GLuint)", glBindVertexArrayAPPLE}, {"glDeleteVertexArraysAPPLE", "void glDeleteVertexArraysAPPLE (GLsizei, const GLuint *)", glDeleteVertexArraysAPPLE}, {"glGenVertexArraysAPPLE", "void glGenVertexArraysAPPLE (GLsizei, const GLuint *)", glGenVertexArraysAPPLE}, {"glIsVertexArrayAPPLE", "GLboolean glIsVertexArrayAPPLE (GLuint)", glIsVertexArrayAPPLE}, {"glVertexArrayRangeAPPLE", "void glVertexArrayRangeAPPLE (GLsizei, GLvoid *)", glVertexArrayRangeAPPLE}, {"glFlushVertexArrayRangeAPPLE", "void glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *)", glFlushVertexArrayRangeAPPLE}, {"glVertexArrayParameteriAPPLE", "void glVertexArrayParameteriAPPLE (GLenum, GLint)", glVertexArrayParameteriAPPLE}, {"glDrawBuffersATI", "void glDrawBuffersATI (GLsizei, const GLenum *)", glDrawBuffersATI}, {"glProgramNamedParameter4fNV", "void glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)", glProgramNamedParameter4fNV}, {"glProgramNamedParameter4dNV", "void glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)", glProgramNamedParameter4dNV}, {"glProgramNamedParameter4fvNV", "void glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *)", glProgramNamedParameter4fvNV}, {"glProgramNamedParameter4dvNV", "void glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *)", glProgramNamedParameter4dvNV}, {"glGetProgramNamedParameterfvNV", "void glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *)", glGetProgramNamedParameterfvNV}, {"glGetProgramNamedParameterdvNV", "void glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *)", glGetProgramNamedParameterdvNV}, {"glVertex2hNV", "void glVertex2hNV (GLhalfNV, GLhalfNV)", glVertex2hNV}, {"glVertex2hvNV", "void glVertex2hvNV (const GLhalfNV *)", glVertex2hvNV}, {"glVertex3hNV", "void glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV)", glVertex3hNV}, {"glVertex3hvNV", "void glVertex3hvNV (const GLhalfNV *)", glVertex3hvNV}, {"glVertex4hNV", "void glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV)", glVertex4hNV}, {"glVertex4hvNV", "void glVertex4hvNV (const GLhalfNV *)", glVertex4hvNV}, {"glNormal3hNV", "void glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV)", glNormal3hNV}, {"glNormal3hvNV", "void glNormal3hvNV (const GLhalfNV *)", glNormal3hvNV}, {"glColor3hNV", "void glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV)", glColor3hNV}, {"glColor3hvNV", "void glColor3hvNV (const GLhalfNV *)", glColor3hvNV}, {"glColor4hNV", "void glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV)", glColor4hNV}, {"glColor4hvNV", "void glColor4hvNV (const GLhalfNV *)", glColor4hvNV}, {"glTexCoord1hNV", "void glTexCoord1hNV (GLhalfNV)", glTexCoord1hNV}, {"glTexCoord1hvNV", "void glTexCoord1hvNV (const GLhalfNV *)", glTexCoord1hvNV}, {"glTexCoord2hNV", "void glTexCoord2hNV (GLhalfNV, GLhalfNV)", glTexCoord2hNV}, {"glTexCoord2hvNV", "void glTexCoord2hvNV (const GLhalfNV *)", glTexCoord2hvNV}, {"glTexCoord3hNV", "void glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV)", glTexCoord3hNV}, {"glTexCoord3hvNV", "void glTexCoord3hvNV (const GLhalfNV *)", glTexCoord3hvNV}, {"glTexCoord4hNV", "void glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV)", glTexCoord4hNV}, {"glTexCoord4hvNV", "void glTexCoord4hvNV (const GLhalfNV *)", glTexCoord4hvNV}, {"glMultiTexCoord1hNV", "void glMultiTexCoord1hNV (GLenum, GLhalfNV)", glMultiTexCoord1hNV}, {"glMultiTexCoord1hvNV", "void glMultiTexCoord1hvNV (GLenum, const GLhalfNV *)", glMultiTexCoord1hvNV}, {"glMultiTexCoord2hNV", "void glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV)", glMultiTexCoord2hNV}, {"glMultiTexCoord2hvNV", "void glMultiTexCoord2hvNV (GLenum, const GLhalfNV *)", glMultiTexCoord2hvNV}, {"glMultiTexCoord3hNV", "void glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV)", glMultiTexCoord3hNV}, {"glMultiTexCoord3hvNV", "void glMultiTexCoord3hvNV (GLenum, const GLhalfNV *)", glMultiTexCoord3hvNV}, {"glMultiTexCoord4hNV", "void glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV)", glMultiTexCoord4hNV}, {"glMultiTexCoord4hvNV", "void glMultiTexCoord4hvNV (GLenum, const GLhalfNV *)", glMultiTexCoord4hvNV}, {"glFogCoordhNV", "void glFogCoordhNV (GLhalfNV)", glFogCoordhNV}, {"glFogCoordhvNV", "void glFogCoordhvNV (const GLhalfNV *)", glFogCoordhvNV}, {"glSecondaryColor3hNV", "void glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV)", glSecondaryColor3hNV}, {"glSecondaryColor3hvNV", "void glSecondaryColor3hvNV (const GLhalfNV *)", glSecondaryColor3hvNV}, {"glVertexWeighthNV", "void glVertexWeighthNV (GLhalfNV)", glVertexWeighthNV}, {"glVertexWeighthvNV", "void glVertexWeighthvNV (const GLhalfNV *)", glVertexWeighthvNV}, {"glVertexAttrib1hNV", "void glVertexAttrib1hNV (GLuint, GLhalfNV)", glVertexAttrib1hNV}, {"glVertexAttrib1hvNV", "void glVertexAttrib1hvNV (GLuint, const GLhalfNV *)", glVertexAttrib1hvNV}, {"glVertexAttrib2hNV", "void glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV)", glVertexAttrib2hNV}, {"glVertexAttrib2hvNV", "void glVertexAttrib2hvNV (GLuint, const GLhalfNV *)", glVertexAttrib2hvNV}, {"glVertexAttrib3hNV", "void glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV)", glVertexAttrib3hNV}, {"glVertexAttrib3hvNV", "void glVertexAttrib3hvNV (GLuint, const GLhalfNV *)", glVertexAttrib3hvNV}, {"glVertexAttrib4hNV", "void glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV)", glVertexAttrib4hNV}, {"glVertexAttrib4hvNV", "void glVertexAttrib4hvNV (GLuint, const GLhalfNV *)", glVertexAttrib4hvNV}, {"glVertexAttribs1hvNV", "void glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *)", glVertexAttribs1hvNV}, {"glVertexAttribs2hvNV", "void glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *)", glVertexAttribs2hvNV}, {"glVertexAttribs3hvNV", "void glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *)", glVertexAttribs3hvNV}, {"glVertexAttribs4hvNV", "void glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *)", glVertexAttribs4hvNV}, {"glPixelDataRangeNV", "void glPixelDataRangeNV (GLenum, GLsizei, GLvoid *)", glPixelDataRangeNV}, {"glFlushPixelDataRangeNV", "void glFlushPixelDataRangeNV (GLenum)", glFlushPixelDataRangeNV}, {"glPrimitiveRestartNV", "void glPrimitiveRestartNV (void)", glPrimitiveRestartNV}, {"glPrimitiveRestartIndexNV", "void glPrimitiveRestartIndexNV (GLuint)", glPrimitiveRestartIndexNV}, {"glMapObjectBufferATI", "GLvoid* glMapObjectBufferATI (GLuint)", glMapObjectBufferATI}, {"glUnmapObjectBufferATI", "void glUnmapObjectBufferATI (GLuint)", glUnmapObjectBufferATI}, {"glStencilOpSeparateATI", "void glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum)", glStencilOpSeparateATI}, {"glStencilFuncSeparateATI", "void glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint)", glStencilFuncSeparateATI}, {"glVertexAttribArrayObjectATI", "void glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint)", glVertexAttribArrayObjectATI}, {"glGetVertexAttribArrayObjectfvATI", "void glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *)", glGetVertexAttribArrayObjectfvATI}, {"glGetVertexAttribArrayObjectivATI", "void glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *)", glGetVertexAttribArrayObjectivATI}, {"glDepthBoundsEXT", "void glDepthBoundsEXT (GLclampd, GLclampd)", glDepthBoundsEXT}, {"glBlendEquationSeparateEXT", "void glBlendEquationSeparateEXT (GLenum, GLenum)", glBlendEquationSeparateEXT}, aranym-0.9.15/atari/nfosmesa/link-oldmesa.h000066400000000000000000000006661213346724500205570ustar00rootroot00000000000000 {"OSMesaCreateLDG", "void *OSMesaCreateLDG( long format, long type, long WIDTH, long HEIGHT )", OSMesaCreateLDG}, {"OSMesaDestroyLDG", "void OSMesaDestroyLDG(void)", OSMesaDestroyLDG}, {"max_width", "long max_width(void)", max_width}, {"max_height", "long max_height(void)", max_height}, {"glOrtho", "void glOrtho( GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat near_val, GLfloat far_val )", glOrtho6f}, aranym-0.9.15/atari/nfosmesa/link-osmesa.h000066400000000000000000000024421213346724500204140ustar00rootroot00000000000000 {"OSMesaCreateContext", "OSMesaContext OSMesaCreateContext( GLenum format, OSMesaContext sharelist )", OSMesaCreateContext}, {"OSMesaCreateContextExt", "OSMesaContext OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits, GLint accumBits, OSMesaContext sharelist)", OSMesaCreateContextExt}, {"OSMesaDestroyContext", "void OSMesaDestroyContext( OSMesaContext ctx )", OSMesaDestroyContext}, {"OSMesaMakeCurrent", "GLboolean OSMesaMakeCurrent( OSMesaContext ctx, void *buffer, GLenum type, GLsizei width, GLsizei height )", OSMesaMakeCurrent}, {"OSMesaGetCurrentContext", "OSMesaContext OSMesaGetCurrentContext( void )", OSMesaGetCurrentContext}, {"OSMesaPixelStore", "void OSMesaPixelStore( GLint pname, GLint value )", OSMesaPixelStore}, {"OSMesaGetIntegerv", "void OSMesaGetIntegerv( GLint pname, GLint *value )", OSMesaGetIntegerv}, {"OSMesaGetDepthBuffer", "GLboolean OSMesaGetDepthBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *bytesPerValue, void **buffer )", OSMesaGetDepthBuffer}, {"OSMesaGetColorBuffer", "GLboolean OSMesaGetColorBuffer( OSMesaContext c, GLint *width, GLint *height, GLint *format, void **buffer )", OSMesaGetColorBuffer}, {"OSMesaGetProcAddress", "void * OSMesaGetProcAddress( const char *funcName )", OSMesaGetProcAddress}, aranym-0.9.15/atari/nfosmesa/nfosmesa.c000066400000000000000000000033451213346724500200030ustar00rootroot00000000000000/* OSMesa LDG linker Copyright (C) 2004 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #define GL_GLEXT_PROTOTYPES #include #include /*--- Functions prototypes ---*/ #include "lib-osmesa.h" #include "lib-oldmesa.h" #include "lib-misc.h" /*--- LDG functions ---*/ PROC LibFunc[]={ #include "link-osmesa.h" /* 10 functions */ #include "link-gl.h" /* 465-118 functions */ #include "link-glext.h" /* 974 functions */ #include "link-oldmesa.h" /* 5 functions */ {NULL, NULL, NULL} }; LDGLIB LibLdg[]={ { /* library version */ 0x0620, /* count of functions in library */ 10+465-118+974+5, /* function addresses */ LibFunc, /* Library information string */ "Mesa library", /* Library flags */ LDG_NOT_SHARED, NULL, 0 } }; /* * Main part : communication with LDG-system */ int main(int argc, char *argv[]) { if (ldg_init(LibLdg)==-1) { appl_init(); form_alert(1, "[1][This program is a LDG library][End]"); appl_exit(); } return 0; } aranym-0.9.15/atari/nfosmesa/nfosmesa_nfapi.h000066400000000000000000000023731213346724500211650ustar00rootroot00000000000000/* NatFeat host OSMesa rendering: NatFeat functions ARAnyM (C) 2003 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _NFOSMESA_NFAPI_H #define _NFOSMESA_NFAPI_H #define NFOSMESA_IOCTL (('N'<<8)|'F') /* if you change anything in the enum {} below you have to increase this ARANFOSMESA_NFAPI_VERSION! */ #define ARANFOSMESA_NFAPI_VERSION 0x00000001 enum { GET_VERSION=0, /* no parameters, return NFAPI_VERSION in d0 */ #include "enum-misc.h" #include "enum-osmesa.h" #include "enum-gl.h" #include "enum-glext.h" NFOSMESA_LAST }; #define NFOSMESA(a) (nfOSMesaId + a) #endif /* _NFOSMESA_NFAPI_H */ aranym-0.9.15/atari/nfpci/000077500000000000000000000000001213346724500153035ustar00rootroot00000000000000aranym-0.9.15/atari/nfpci/Makefile000066400000000000000000000007721213346724500167510ustar00rootroot00000000000000 TARGET = nfpci.prg COBJS = nfpci.c nfpci_cookie.c ../natfeat/natfeat.c SOBJS = entry.S nfpci_bios.S nfpci_xbios.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = -O2 -fomit-frame-pointer -Wall ASFLAGS = -m68020 LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lgcc -lc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(COBJECTS) $(SOBJECTS) $(TARGET) aranym-0.9.15/atari/nfpci/entry.S000066400000000000000000000022131213346724500165660ustar00rootroot00000000000000/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _init_driver, _install_driver .text /* Calculate length to keep resident */ _init_driver: movl sp@(4),a0 /* Read basepage pointer */ movl #0x100.w,d0 /* Length of basepage */ addl a0@(12),d0 /* Add TEXT length */ addl a0@(20),d0 /* Add DATA length */ addl a0@(28),d0 /* Add BSS length */ movl d0,sp@- bsr _install_driver addql #4,sp clrw sp@- /* If any error, quit program */ trap #1 aranym-0.9.15/atari/nfpci/nfpci.c000066400000000000000000000300011213346724500165400ustar00rootroot00000000000000/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include #include #include "../natfeat/nf_ops.h" #include "nfpci_nfapi.h" #include "nfpci.h" #include "nfpci_bios.h" #include "nfpci_cookie.h" /*--- Defines ---*/ #ifndef C_XPCI #define C_XPCI 0x58504349L #endif #ifndef C__PCI #define C__PCI 0x5f504349L #endif #ifndef VEC_XBIOS #define VEC_XBIOS 0x2e #endif #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM host PCI driver" #define VERSION "v0.4" /*--- Types ---*/ typedef void (*pcibios_routine_t)(void); typedef struct { unsigned long *subcookie; unsigned long version; pcibios_routine_t routines[43]; } pcibios_cookie_t __attribute__((packed)); /*--- Local variables ---*/ static unsigned long nfPciId; static pcibios_cookie_t pcibios_cookie={ 0, 0x00010000, { (pcibios_routine_t) pcibios_find_device, (pcibios_routine_t) pcibios_find_classcode, (pcibios_routine_t) pcibios_read_config_byte, (pcibios_routine_t) pcibios_read_config_word, (pcibios_routine_t) pcibios_read_config_long, (pcibios_routine_t) pcibios_read_config_byte_fast, (pcibios_routine_t) pcibios_read_config_word_fast, (pcibios_routine_t) pcibios_read_config_long_fast, (pcibios_routine_t) pcibios_write_config_byte, (pcibios_routine_t) pcibios_write_config_word, (pcibios_routine_t) pcibios_write_config_long, (pcibios_routine_t) pcibios_hook_interrupt, (pcibios_routine_t) pcibios_unhook_interrupt, (pcibios_routine_t) pcibios_special_cycle, (pcibios_routine_t) pcibios_get_routing, /* unimplemented */ (pcibios_routine_t) pcibios_set_interrupt, /* unimplemented */ (pcibios_routine_t) pcibios_get_resource, (pcibios_routine_t) pcibios_get_card_used, (pcibios_routine_t) pcibios_set_card_used, (pcibios_routine_t) pcibios_read_mem_byte, (pcibios_routine_t) pcibios_read_mem_word, (pcibios_routine_t) pcibios_read_mem_long, (pcibios_routine_t) pcibios_read_mem_byte_fast, (pcibios_routine_t) pcibios_read_mem_word_fast, (pcibios_routine_t) pcibios_read_mem_long_fast, (pcibios_routine_t) pcibios_write_mem_byte, (pcibios_routine_t) pcibios_write_mem_word, (pcibios_routine_t) pcibios_write_mem_long, (pcibios_routine_t) pcibios_read_io_byte, (pcibios_routine_t) pcibios_read_io_word, (pcibios_routine_t) pcibios_read_io_long, (pcibios_routine_t) pcibios_read_io_byte_fast, (pcibios_routine_t) pcibios_read_io_word_fast, (pcibios_routine_t) pcibios_read_io_long_fast, (pcibios_routine_t) pcibios_write_io_byte, (pcibios_routine_t) pcibios_write_io_word, (pcibios_routine_t) pcibios_write_io_long, (pcibios_routine_t) pcibios_get_machine_id, (pcibios_routine_t) pcibios_get_pagesize, (pcibios_routine_t) pcibios_virt_to_bus, (pcibios_routine_t) pcibios_bus_to_virt, (pcibios_routine_t) pcibios_virt_to_phys, (pcibios_routine_t) pcibios_phys_to_virt } }; /*--- External variables ---*/ extern void pcixbios_newtrap(void); extern void (*pcixbios_oldtrap)(void); /*--- Functions prototypes ---*/ static struct nf_ops *nfOps; static void install_pci_bios(void); static void install_pci_xbios(void); static void press_any_key(void); /*--- Functions ---*/ void install_driver(unsigned long resident_length) { Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Check if a PCI driver is not already installed */ if (cookie_present(C_XPCI, NULL)) { Cconws("A XPCI driver is already installed on this system\r\n"); press_any_key(); return; } if (cookie_present(C__PCI, NULL)) { Cconws("A _PCI driver is already installed on this system\r\n"); press_any_key(); return; } /* Check if NF is present for PCI */ nfOps = nf_init(); if (!nfOps) { Cconws("Native Features not present on this system\r\n"); press_any_key(); return; } nfPciId = nfOps->get_id("PCI"); if (nfPciId==0) { Cconws("NF PCI functions not present on this system\r\n"); press_any_key(); return; } /* Cookie with structure that holds function pointers */ install_pci_bios(); /* XBIOS functions */ install_pci_xbios(); Ptermres(resident_length, 0); for(;;); /* Never ending loop, should not go there */ } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); while (Bconstat(DEV_CONSOLE)==0); } static void install_pci_bios(void) { /* Add our cookie */ cookie_add(C__PCI, (unsigned long)&pcibios_cookie); } static void install_pci_xbios(void) { /* Read old XBIOS trap handler, and install ours */ pcixbios_oldtrap = Setexc(VEC_XBIOS, pcixbios_newtrap); cookie_add(C_XPCI, 0); } /* NF PCI functions */ long find_device(unsigned long device_vendor_id, unsigned long index) { return nfOps->call(NFPCI(NFPCI_FIND_DEVICE), device_vendor_id, index); } long find_classcode(unsigned long class_code, unsigned long index) { return nfOps->call(NFPCI(NFPCI_FIND_CLASSCODE), class_code, index); } long read_config_byte(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_BYTE), device_handle, data, num_register); } long read_config_word(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_WORD), device_handle, data, num_register); } long read_config_long(unsigned long device_handle, void *data, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_LONG), device_handle, data, num_register); } unsigned char read_config_byte_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_BYTE_FAST), device_handle, num_register); } unsigned short read_config_word_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_WORD_FAST), device_handle, num_register); } unsigned long read_config_long_fast(unsigned long device_handle, unsigned long num_register) { return nfOps->call(NFPCI(NFPCI_READ_CONFIG_LONG_FAST), device_handle, num_register); } long write_config_byte(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_BYTE), device_handle, num_register, value); } long write_config_word(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_WORD), device_handle, num_register, value); } long write_config_long(unsigned long device_handle, unsigned long num_register, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_CONFIG_LONG), device_handle, num_register, value); } long hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter) { return nfOps->call(NFPCI(NFPCI_HOOK_INTERRUPT), device_handle, data, parameter); } long unhook_interrupt(unsigned long device_handle) { return nfOps->call(NFPCI(NFPCI_UNHOOK_INTERRUPT), device_handle); } long special_cycle(unsigned long num_bus, unsigned long data) { return nfOps->call(NFPCI(NFPCI_SPECIAL_CYCLE), num_bus, data); } /* get_routing */ /* set_interrupt */ long get_resource(unsigned long device_handle) { return nfOps->call(NFPCI(NFPCI_GET_RESOURCE), device_handle); } long get_card_used(unsigned long device_handle, unsigned long *callback) { return nfOps->call(NFPCI(NFPCI_GET_CARD_USED), device_handle, callback); } long set_card_used(unsigned long device_handle, unsigned long callback) { return nfOps->call(NFPCI(NFPCI_SET_CARD_USED), device_handle, callback); } long read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_BYTE), device_handle, pci_address, data); } long read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_WORD), device_handle, pci_address, data); } long read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data) { return nfOps->call(NFPCI(NFPCI_READ_MEM_LONG), device_handle, pci_address, data); } unsigned char read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_BYTE_FAST), device_handle, pci_address); } unsigned short read_mem_word_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_WORD_FAST), device_handle, pci_address); } unsigned long read_mem_long_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_MEM_LONG_FAST), device_handle, pci_address); } long write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_BYTE), device_handle, pci_address, value); } long write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_WORD), device_handle, pci_address, value); } long write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_MEM_LONG), device_handle, pci_address, value); } long read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_BYTE), device_handle, pci_address, data); } long read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_WORD), device_handle, pci_address, data); } long read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data) { return nfOps->call(NFPCI(NFPCI_READ_IO_LONG), device_handle, pci_address, data); } unsigned char read_io_byte_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_BYTE_FAST), device_handle, pci_address); } unsigned short read_io_word_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_WORD_FAST), device_handle, pci_address); } unsigned long read_io_long_fast(unsigned long device_handle, unsigned long pci_address) { return nfOps->call(NFPCI(NFPCI_READ_IO_LONG_FAST), device_handle, pci_address); } long write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_BYTE), device_handle, pci_address, value); } long write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_WORD), device_handle, pci_address, value); } long write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value) { return nfOps->call(NFPCI(NFPCI_WRITE_IO_LONG), device_handle, pci_address, value); } long get_machine_id(void) { return nfOps->call(NFPCI(NFPCI_GET_MACHINE_ID)); } unsigned long get_pagesize(void) { return nfOps->call(NFPCI(NFPCI_GET_PAGESIZE)); } long virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_VIRT_TO_BUS), device_handle, virt_cpu_address, data); } long bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data) { return nfOps->call(NFPCI(NFPCI_BUS_TO_VIRT), device_handle, pci_address, data); } long virt_to_phys(void *virt_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_VIRT_TO_PHYS), virt_cpu_address, data); } long phys_to_virt(void *phys_cpu_address, void *data) { return nfOps->call(NFPCI(NFPCI_PHYS_TO_VIRT), phys_cpu_address, data); } aranym-0.9.15/atari/nfpci/nfpci.h000066400000000000000000000104351213346724500165560ustar00rootroot00000000000000/* NatFeat host PCI driver ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_H #define NFPCI_H /* Functions called by each PCIBIOS backend (_PCI via cookie, XPCI via Xbios */ long find_device(unsigned long device_vendor_id, unsigned long index); long find_classcode(unsigned long class_code, unsigned long index); long read_config_byte(unsigned long device_handle, void *data, unsigned long num_register); long read_config_word(unsigned long device_handle, void *data, unsigned long num_register); long read_config_long(unsigned long device_handle, void *data, unsigned long num_register); unsigned char read_config_byte_fast(unsigned long device_handle, unsigned long num_register); unsigned short read_config_word_fast(unsigned long device_handle, unsigned long num_register); unsigned long read_config_long_fast(unsigned long device_handle, unsigned long num_register); long write_config_byte(unsigned long device_handle, unsigned long num_register, unsigned long value); long write_config_word(unsigned long device_handle, unsigned long num_register, unsigned long value); long write_config_long(unsigned long device_handle, unsigned long num_register, unsigned long value); long hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter); long unhook_interrupt(unsigned long device_handle); long special_cycle(unsigned long num_bus, unsigned long data); /* get_routing */ /* set_interrupt */ long get_resource(unsigned long device_handle); long get_card_used(unsigned long device_handle, unsigned long *callback); long set_card_used(unsigned long device_handle, unsigned long callback); long read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short read_mem_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long read_mem_long_fast(unsigned long device_handle, unsigned long pci_address); long write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char read_io_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short read_io_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long read_io_long_fast(unsigned long device_handle, unsigned long pci_address); long write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned long value); long write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long get_machine_id(void); unsigned long get_pagesize(void); long virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data); long bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data); long virt_to_phys(void *virt_cpu_address, void *data); long phys_to_virt(void *phys_cpu_address, void *data); #endif /* NFPCI_H */ aranym-0.9.15/atari/nfpci/nfpci_bios.S000066400000000000000000000147761213346724500175610ustar00rootroot00000000000000/* NatFeat host PCI driver, _PCI cookie with function pointers ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _pcibios_find_device, _pcibios_find_classcode .globl _pcibios_read_config_byte, _pcibios_read_config_word .globl _pcibios_read_config_long, _pcibios_read_config_byte_fast .globl _pcibios_read_config_word_fast, _pcibios_read_config_long_fast .globl _pcibios_write_config_byte, _pcibios_write_config_word .globl _pcibios_write_config_long, _pcibios_hook_interrupt .globl _pcibios_unhook_interrupt, _pcibios_special_cycle .globl _pcibios_get_routing, _pcibios_set_interrupt .globl _pcibios_get_resource, _pcibios_get_card_used .globl _pcibios_set_card_used, _pcibios_read_mem_byte .globl _pcibios_read_mem_word, _pcibios_read_mem_long .globl _pcibios_read_mem_byte_fast, _pcibios_read_mem_word_fast .globl _pcibios_read_mem_long_fast, _pcibios_write_mem_byte .globl _pcibios_write_mem_word, _pcibios_write_mem_long .globl _pcibios_read_io_byte, _pcibios_read_io_word .globl _pcibios_read_io_long, _pcibios_read_io_byte_fast .globl _pcibios_read_io_word_fast, _pcibios_read_io_long_fast .globl _pcibios_write_io_byte, _pcibios_write_io_word .globl _pcibios_write_io_long, _pcibios_get_machine_id .globl _pcibios_get_pagesize, _pcibios_virt_to_bus .globl _pcibios_bus_to_virt, _pcibios_virt_to_phys .globl _pcibios_phys_to_virt .text _pcibios_find_device: andl #0xffff,d1 movl d1,sp@- movl d0,sp@- bsr _find_device addql #8,sp rts _pcibios_find_classcode: andl #0xffff,d1 movl d1,sp@- movl d0,sp@- bsr _find_classcode addql #8,sp rts _pcibios_read_config_byte: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_byte lea sp@(12),sp rts _pcibios_read_config_word: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_word lea sp@(12),sp rts _pcibios_read_config_long: andl #0xff,d1 movl d1,sp@- movl a0,sp@- movl d0,sp@- bsr _read_config_long lea sp@(12),sp rts _pcibios_read_config_byte_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_byte_fast addql #8,sp rts _pcibios_read_config_word_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_word_fast addql #8,sp rts _pcibios_read_config_long_fast: andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _read_config_long_fast addql #8,sp rts _pcibios_write_config_byte: andl #0xff,d2 movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_byte lea sp@(12),sp rts _pcibios_write_config_word: andl #0xffff,d2 movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_word lea sp@(12),sp rts _pcibios_write_config_long: movl d2,sp@- andl #0xff,d1 movl d1,sp@- movl d0,sp@- bsr _write_config_long lea sp@(12),sp rts _pcibios_hook_interrupt: movl a1,sp@- movl a0,sp@- movl d0,sp@- bsr _hook_interrupt lea sp@(12),sp rts _pcibios_unhook_interrupt: movl d0,sp@- bsr _unhook_interrupt addql #4,sp rts _pcibios_special_cycle: movl d1,sp@- andl #0xff,d0 movl d0,sp@- bsr _special_cycle addql #8,sp rts _pcibios_get_routing: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcibios_set_interrupt: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcibios_get_resource: movl d0,sp@- bsr _get_resource addql #4,sp rts _pcibios_get_card_used: movl a0,sp@- movl d0,sp@- bsr _get_card_used addql #8,sp rts _pcibios_set_card_used: movl a0,sp@- movl d0,sp@- bsr _set_card_used addql #8,sp rts _pcibios_read_mem_byte: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_byte lea sp@(12),sp rts _pcibios_read_mem_word: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_word lea sp@(12),sp rts _pcibios_read_mem_long: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_mem_long lea sp@(12),sp rts _pcibios_read_mem_byte_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_byte_fast addql #8,sp rts _pcibios_read_mem_word_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_word_fast addql #8,sp rts _pcibios_read_mem_long_fast: movl d1,sp@- movl d0,sp@- bsr _read_mem_long_fast addql #8,sp rts _pcibios_write_mem_byte: andl #0xff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_byte lea sp@(12),sp rts _pcibios_write_mem_word: andl #0xffff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_word lea sp@(12),sp rts _pcibios_write_mem_long: movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_mem_long lea sp@(12),sp rts _pcibios_read_io_byte: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_byte lea sp@(12),sp rts _pcibios_read_io_word: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_word lea sp@(12),sp rts _pcibios_read_io_long: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _read_io_long lea sp@(12),sp rts _pcibios_read_io_byte_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_byte_fast addql #8,sp rts _pcibios_read_io_word_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_word_fast addql #8,sp rts _pcibios_read_io_long_fast: movl d1,sp@- movl d0,sp@- bsr _read_io_long_fast addql #8,sp rts _pcibios_write_io_byte: andl #0xff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_byte lea sp@(12),sp rts _pcibios_write_io_word: andl #0xffff,d2 movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_word lea sp@(12),sp rts _pcibios_write_io_long: movl d2,sp@- movl d1,sp@- movl d0,sp@- bsr _write_io_long lea sp@(12),sp rts _pcibios_get_machine_id: bsr _get_machine_id rts _pcibios_get_pagesize: bsr _get_pagesize rts _pcibios_virt_to_bus: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _virt_to_bus lea sp@(12),sp rts _pcibios_bus_to_virt: movl a0,sp@- movl d1,sp@- movl d0,sp@- bsr _bus_to_virt lea sp@(12),sp rts _pcibios_virt_to_phys: movl a0,sp@- movl d0,sp@- bsr _bus_to_virt addql #8,sp rts _pcibios_phys_to_virt: movl a0,sp@- movl d0,sp@- bsr _bus_to_virt addql #8,sp rts aranym-0.9.15/atari/nfpci/nfpci_bios.h000066400000000000000000000112031213346724500175640ustar00rootroot00000000000000/* NatFeat host PCI driver, _PCI cookie functions ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_BIOS_H #define NFPCI_BIOS_H long pcibios_find_device(unsigned long device_vendor_id, unsigned short index); long pcibios_find_classcode(unsigned long class_code, unsigned short index); long pcibios_read_config_byte(unsigned long device_handle, void *data, unsigned char num_register); long pcibios_read_config_word(unsigned long device_handle, void *data, unsigned char num_register); long pcibios_read_config_long(unsigned long device_handle, void *data, unsigned char num_register); unsigned char pcibios_read_config_byte_fast(unsigned long device_handle, unsigned char num_register); unsigned short pcibios_read_config_word_fast(unsigned long device_handle, unsigned char num_register); unsigned long pcibios_read_config_long_fast(unsigned long device_handle, unsigned char num_register); long pcibios_write_config_byte(unsigned long device_handle, unsigned char num_register, unsigned char value); long pcibios_write_config_word(unsigned long device_handle, unsigned char num_register, unsigned short value); long pcibios_write_config_long(unsigned long device_handle, unsigned char num_register, unsigned long value); long pcibios_hook_interrupt(unsigned long device_handle, void (*data)(), unsigned long parameter); long pcibios_unhook_interrupt(unsigned long device_handle); long pcibios_special_cycle(unsigned char num_bus, unsigned long data); long pcibios_get_routing(void); /* unimplemented */ long pcibios_set_interrupt(void); /* unimplemented */ long pcibios_get_resource(unsigned long device_handle); long pcibios_get_card_used(unsigned long device_handle, unsigned long *callback); long pcibios_set_card_used(unsigned long device_handle, unsigned long callback); long pcibios_read_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long pcibios_read_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long pcibios_read_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char pcibios_read_mem_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short pcibios_read_mem_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long pcibios_read_mem_long_fast(unsigned long device_handle, unsigned long pci_address); long pcibios_write_mem_byte(unsigned long device_handle, unsigned long pci_address, unsigned char value); long pcibios_write_mem_word(unsigned long device_handle, unsigned long pci_address, unsigned short value); long pcibios_write_mem_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long pcibios_read_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char *data); long pcibios_read_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short *data); long pcibios_read_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long *data); unsigned char pcibios_read_io_byte_fast(unsigned long device_handle, unsigned long pci_address); unsigned short pcibios_read_io_word_fast(unsigned long device_handle, unsigned long pci_address); unsigned long pcibios_read_io_long_fast(unsigned long device_handle, unsigned long pci_address); long pcibios_write_io_byte(unsigned long device_handle, unsigned long pci_address, unsigned char value); long pcibios_write_io_word(unsigned long device_handle, unsigned long pci_address, unsigned short value); long pcibios_write_io_long(unsigned long device_handle, unsigned long pci_address, unsigned long value); long pcibios_get_machine_id(void); unsigned long pcibios_get_pagesize(void); long pcibios_virt_to_bus(unsigned long device_handle, void *virt_cpu_address, void *data); long pcibios_bus_to_virt(unsigned long device_handle, unsigned long pci_address, void *data); long pcibios_virt_to_phys(void *virt_cpu_address, void *data); long pcibios_phys_to_virt(void *phys_cpu_address, void *data); #endif /* NFPCI_BIOS_H */ aranym-0.9.15/atari/nfpci/nfpci_cookie.c000066400000000000000000000042031213346724500200760ustar00rootroot00000000000000/* NatFeat host PCI driver, cookie management ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Includes ---*/ #include #include #include #include /*--- Defines ---*/ #ifndef C_NULL #define C_NULL 0x4e554c4cL #endif /*--- Functions ---*/ static unsigned long *read_cookie_jar_pointer(void) { unsigned long *cookie_jar; void *old_stack=NULL; int super_flag; /* Check if already in supervisor mode */ super_flag = (int) Super((void *)1); if (!super_flag) { old_stack=(void *)Super(NULL); } cookie_jar= (unsigned long *) *_p_cookies; if (!super_flag) { Super(old_stack); } return (cookie_jar); } int cookie_present(unsigned long cookie, unsigned long *value) { unsigned long *cookie_jar; cookie_jar = read_cookie_jar_pointer(); if (cookie_jar == NULL) { return 0; } while (*cookie_jar != 0) { if (*cookie_jar == cookie) { if (value) *value = cookie_jar[1]; return 1; } cookie_jar+=2; } return 0; } int cookie_add(unsigned long cookie, unsigned long value) { unsigned long *cookie_jar; int count; cookie_jar = read_cookie_jar_pointer(); if (cookie_jar == NULL) { return 0; } count=0; while (*cookie_jar != 0) { cookie_jar += 2; count++; } /* Is there enough space ? */ if (cookie_jar[1]>count) { cookie_jar[2] = 0; cookie_jar[3] = cookie_jar[1]; cookie_jar[0] = cookie; cookie_jar[1] = value; return 1; } /* Not enough space in cookie jar */ return 0; } aranym-0.9.15/atari/nfpci/nfpci_cookie.h000066400000000000000000000017131213346724500201060ustar00rootroot00000000000000/* NatFeat host PCI driver, cookie management ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_COOKIE_H #define NFPCI_COOKIE_H int cookie_present(unsigned long cookie, unsigned long *value); int cookie_add(unsigned long cookie, unsigned long value); #endif /* NFPCI_COOKIE_H */ aranym-0.9.15/atari/nfpci/nfpci_nfapi.h000066400000000000000000000040041213346724500177260ustar00rootroot00000000000000/* NatFeat host PCI access ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef NFPCI_NFAPI_H #define NFPCI_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARANFPCI_NFAPI_VERSION! */ #define ARANFPCI_NFAPI_VERSION 0x00000000 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ NFPCI_FIND_DEVICE, NFPCI_FIND_CLASSCODE, NFPCI_READ_CONFIG_BYTE, NFPCI_READ_CONFIG_WORD, NFPCI_READ_CONFIG_LONG, NFPCI_READ_CONFIG_BYTE_FAST, NFPCI_READ_CONFIG_WORD_FAST, NFPCI_READ_CONFIG_LONG_FAST, NFPCI_WRITE_CONFIG_BYTE, NFPCI_WRITE_CONFIG_WORD, NFPCI_WRITE_CONFIG_LONG, NFPCI_HOOK_INTERRUPT, NFPCI_UNHOOK_INTERRUPT, NFPCI_SPECIAL_CYCLE, NFPCI_GET_RESOURCE, NFPCI_GET_CARD_USED, NFPCI_SET_CARD_USED, NFPCI_READ_MEM_BYTE, NFPCI_READ_MEM_WORD, NFPCI_READ_MEM_LONG, NFPCI_READ_MEM_BYTE_FAST, NFPCI_READ_MEM_WORD_FAST, NFPCI_READ_MEM_LONG_FAST, NFPCI_WRITE_MEM_BYTE, NFPCI_WRITE_MEM_WORD, NFPCI_WRITE_MEM_LONG, NFPCI_READ_IO_BYTE, NFPCI_READ_IO_WORD, NFPCI_READ_IO_LONG, NFPCI_READ_IO_BYTE_FAST, NFPCI_READ_IO_WORD_FAST, NFPCI_READ_IO_LONG_FAST, NFPCI_WRITE_IO_BYTE, NFPCI_WRITE_IO_WORD, NFPCI_WRITE_IO_LONG, NFPCI_GET_MACHINE_ID, NFPCI_GET_PAGESIZE, NFPCI_VIRT_TO_BUS, NFPCI_BUS_TO_VIRT, NFPCI_VIRT_TO_PHYS, NFPCI_PHYS_TO_VIRT }; #define NFPCI(a) (nfPciId + a) #endif /* NFCDROM_NFAPI_H */ aranym-0.9.15/atari/nfpci/nfpci_xbios.S000066400000000000000000000214741213346724500177420ustar00rootroot00000000000000/* NatFeat host PCI driver, XPCI cookie via XBIOS ARAnyM (C) 2004 Patrice Mandin This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .globl _pcixbios_find_device, _pcixbios_find_classcode .globl _pcixbios_read_config_byte, _pcixbios_read_config_word .globl _pcixbios_read_config_long, _pcixbios_read_config_byte_fast .globl _pcixbios_read_config_word_fast, _pcixbios_read_config_long_fast .globl _pcixbios_write_config_byte, _pcixbios_write_config_word .globl _pcixbios_write_config_long, _pcixbios_hook_interrupt .globl _pcixbios_unhook_interrupt, _pcixbios_special_cycle .globl _pcixbios_get_routing, _pcixbios_set_interrupt .globl _pcixbios_get_resource, _pcixbios_get_card_used .globl _pcixbios_set_card_used, _pcixbios_read_mem_byte .globl _pcixbios_read_mem_word, _pcixbios_read_mem_long .globl _pcixbios_read_mem_byte_fast, _pcixbios_read_mem_word_fast .globl _pcixbios_read_mem_long_fast, _pcixbios_write_mem_byte .globl _pcixbios_write_mem_word, _pcixbios_write_mem_long .globl _pcixbios_read_io_byte, _pcixbios_read_io_word .globl _pcixbios_read_io_long, _pcixbios_read_io_byte_fast .globl _pcixbios_read_io_word_fast, _pcixbios_read_io_long_fast .globl _pcixbios_write_io_byte, _pcixbios_write_io_word .globl _pcixbios_write_io_long, _pcixbios_get_machine_id .globl _pcixbios_get_pagesize, _pcixbios_virt_to_bus .globl _pcixbios_bus_to_virt, _pcixbios_virt_to_phys .globl _pcixbios_phys_to_virt .globl _pcixbios_oldtrap, _pcixbios_newtrap .text .even .ascii "XBRA" .ascii "XPCI" _pcixbios_oldtrap: .long 0 _pcixbios_newtrap: lea sp@(8),a0 btst #5,sp@ bnes supervisor_mode movl usp,a0 supervisor_mode: movw a0@+,d0 subw #300,d0 bmis old_xbios cmpw #42,d0 bhis old_xbios jsr @(pcixbios_function_table,d0:w:4)@(0) rte old_xbios: jmp @(_pcixbios_oldtrap)@(0) /* XBIOS functions */ _pcixbios_find_device: moveql #0,d0 movw a0@(4),d0 movl d0,sp@- movl a0@,sp@- bsr _find_device addql #8,sp rts _pcixbios_find_classcode: moveql #0,d0 movw a0@(4),d0 movl d0,sp@- movl a0@,sp@- bsr _find_classcode addql #8,sp rts _pcixbios_read_config_byte: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_byte lea sp@(12),sp rts _pcixbios_read_config_word: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_word lea sp@(12),sp rts _pcixbios_read_config_long: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@(6),sp@- movl a0@,sp@- bsr _read_config_long lea sp@(12),sp rts _pcixbios_read_config_byte_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_byte_fast addql #8,sp rts _pcixbios_read_config_word_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_word_fast addql #8,sp rts _pcixbios_read_config_long_fast: moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _read_config_long_fast addql #8,sp rts _pcixbios_write_config_byte: moveql #0,d0 movb a0@(7),d0 movl d0,sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_byte lea sp@(12),sp rts _pcixbios_write_config_word: moveql #0,d0 movw a0@(6),d0 movl d0,sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_word lea sp@(12),sp rts _pcixbios_write_config_long: movl a0@(6),sp@- moveql #0,d0 movb a0@(5),d0 movl d0,sp@- movl a0@,sp@- bsr _write_config_long lea sp@(12),sp rts _pcixbios_hook_interrupt: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _hook_interrupt lea sp@(12),sp rts _pcixbios_unhook_interrupt: movl a0@,sp@- bsr _unhook_interrupt addql #4,sp rts _pcixbios_special_cycle: movl a0@(4),sp@- moveql #0,d0 movw a0@,d0 movl d0,sp@- bsr _special_cycle addql #8,sp rts _pcixbios_get_routing: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcixbios_set_interrupt: movel #0xfffffff8,d0 /* PCI_GENERAL_ERROR */ rts _pcixbios_get_resource: movl a0@,sp@- bsr _get_resource addql #4,sp rts _pcixbios_get_card_used: movl a0@(4),sp@- movl a0@,sp@- bsr _get_card_used addql #8,sp rts _pcixbios_set_card_used: movl a0@(4),sp@- movl a0@,sp@- bsr _set_card_used addql #8,sp rts _pcixbios_read_mem_byte: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_byte lea sp@(12),sp rts _pcixbios_read_mem_word: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_word lea sp@(12),sp rts _pcixbios_read_mem_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_long lea sp@(12),sp rts _pcixbios_read_mem_byte_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_byte_fast addql #8,sp rts _pcixbios_read_mem_word_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_word_fast addql #8,sp rts _pcixbios_read_mem_long_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_mem_long_fast addql #8,sp rts _pcixbios_write_mem_byte: movw a0@(8),d0 andl #0xff,d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_byte lea sp@(12),sp rts _pcixbios_write_mem_word: moveql #0,d0 movw a0@(8),d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_word lea sp@(12),sp rts _pcixbios_write_mem_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_mem_long lea sp@(12),sp rts _pcixbios_read_io_byte: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_byte lea sp@(12),sp rts _pcixbios_read_io_word: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_word lea sp@(12),sp rts _pcixbios_read_io_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_long lea sp@(12),sp rts _pcixbios_read_io_byte_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_byte_fast addql #8,sp rts _pcixbios_read_io_word_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_word_fast addql #8,sp rts _pcixbios_read_io_long_fast: movl a0@(4),sp@- movl a0@,sp@- bsr _read_io_long_fast addql #8,sp rts _pcixbios_write_io_byte: movw a0@(8),d0 andl #0xff,d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_byte lea sp@(12),sp rts _pcixbios_write_io_word: moveql #0,d0 movw a0@(8),d0 movl d0,sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_word lea sp@(12),sp rts _pcixbios_write_io_long: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _write_io_long lea sp@(12),sp rts _pcixbios_get_machine_id: bsr _get_machine_id rts _pcixbios_get_pagesize: bsr _get_pagesize rts _pcixbios_virt_to_bus: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _virt_to_bus lea sp@(12),sp rts _pcixbios_bus_to_virt: movl a0@(8),sp@- movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt lea sp@(12),sp rts _pcixbios_virt_to_phys: movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt addql #8,sp rts _pcixbios_phys_to_virt: movl a0@(4),sp@- movl a0@,sp@- bsr _bus_to_virt addql #8,sp rts .data pcixbios_function_table: .long _pcixbios_find_device .long _pcixbios_find_classcode .long _pcixbios_read_config_byte .long _pcixbios_read_config_word .long _pcixbios_read_config_long .long _pcixbios_read_config_byte_fast .long _pcixbios_read_config_word_fast .long _pcixbios_read_config_long_fast .long _pcixbios_write_config_byte .long _pcixbios_write_config_word .long _pcixbios_write_config_long .long _pcixbios_hook_interrupt .long _pcixbios_unhook_interrupt .long _pcixbios_special_cycle .long _pcixbios_get_routing .long _pcixbios_set_interrupt .long _pcixbios_get_resource .long _pcixbios_get_card_used .long _pcixbios_set_card_used .long _pcixbios_read_mem_byte .long _pcixbios_read_mem_word .long _pcixbios_read_mem_long .long _pcixbios_read_mem_byte_fast .long _pcixbios_read_mem_word_fast .long _pcixbios_read_mem_long_fast .long _pcixbios_write_mem_byte .long _pcixbios_write_mem_word .long _pcixbios_write_mem_long .long _pcixbios_read_io_byte .long _pcixbios_read_io_word .long _pcixbios_read_io_long .long _pcixbios_read_io_byte_fast .long _pcixbios_read_io_word_fast .long _pcixbios_read_io_long_fast .long _pcixbios_write_io_byte .long _pcixbios_write_io_word .long _pcixbios_write_io_long .long _pcixbios_get_machine_id .long _pcixbios_get_pagesize .long _pcixbios_virt_to_bus .long _pcixbios_bus_to_virt .long _pcixbios_virt_to_phys .long _pcixbios_phys_to_virt aranym-0.9.15/atari/nfstderr/000077500000000000000000000000001213346724500160335ustar00rootroot00000000000000aranym-0.9.15/atari/nfstderr/Makefile000077500000000000000000000011301213346724500174710ustar00rootroot00000000000000 TARGET = nfstderr.bos TARGET1 = print.prg COBJS = nfstderrbos.c ../natfeat/natfeat.c ../nfpci/nfpci_cookie.c SOBJS = entry.S ../natfeat/natfeat_asm.S include ../CONFIGVARS CFLAGS = $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init_driver -lc -lgcc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) $(GENERAL) ${CFLAGS} ${LDFLAGS} ${STRIP} $(TARGET) $(TARGET1): print.o ${CC} -o $@ print.o $(GENERAL) ${CFLAGS} ${STRIP} $(TARGET1) clean: rm -f $(SOBJECTS) $(COBJECTS) $(TARGET) aranym-0.9.15/atari/nfstderr/entry.S000077500000000000000000000125371213346724500173330ustar00rootroot00000000000000/* NatFeat NF_STDERR /dev/nfstderr, MetaDOS BOS driver ARAnyM (C) 2005 STanda Opichal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ .text .globl _asm_init_devices, _init_devices .globl _asm_xopen, _xopen .globl _asm_xclose, _xclose .globl _asm_xread, _xread .globl _asm_xwrite, _xwrite .globl _asm_xseek, _xseek .globl _asm_xstatus, _xstatus .globl _asm_xioctl, _xioctl .globl _asm_xstartaudio, _xstartaudio .globl _asm_xstopaudio, _xstopaudio .globl _asm_xsetsongtime, _xsetsongtime .globl _asm_xgettoc, _xgettoc .globl _asm_xdiscinfo, _xdiscinfo /*--- Function to create a bos header ---*/ _asm_init_devices: /* Input: d0.w physical drive letter d1.w dma channel Forward: 0(sp) physical drive letter 4(sp) dma channel */ andl #0xffff,d1 movl d1,sp@- andl #0xffff,d0 movl d0,sp@- bsr _init_devices addql #8,sp rts /*--- MetaDOS BOS functions frontends ---*/ _asm_xopen: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metaopen_t *metaopen Forward: 0(sp) metados_bosheader_t *device 4(sp) metaopen_t *metaopen */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xopen addql #8,sp rts _asm_xclose: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _xclose addql #4,sp rts _asm_xread: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xread lea sp@(16),sp rts _asm_xwrite: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned short length Forward: 0(sp) metados_bosheader_t *device 4(sp) void *buffer; 8(sp) unsigned long first 12(sp) unsigned long length */ movl sp,a1 clrl d0 movw 12(a1),d0 movl d0,sp@- movl 8(a1),sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xwrite lea sp@(16),sp rts _asm_xseek: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long offset Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long offset */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xseek addql #8,sp rts _asm_xstatus: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosstatus_t *extended_status; Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosstatus_t *extended_status; */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xstatus addql #8,sp rts _asm_xioctl: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unsigned long magic 8(sp) unsigned short opcode 10(sp) void *buffer; Forward: 0(sp) metados_bosheader_t *device 4(sp) unsigned long magic 8(sp) unsigned long opcode 12(sp) void *buffer; */ movl sp,a1 movl 10(a1),sp@- clrl d0 movw 8(a1),d0 movl d0,sp@- movl 4(a1),sp@- movl a0,sp@- bsr _xioctl lea sp@(16),sp rts #if 0 _asm_xstartaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) unsigned char *tracks Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) unsigned char *tracks */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xstartaudio lea sp@(12),sp rts _asm_xstopaudio: /* Input: a0 metados_bosheader_t *device 0(sp) return address Forward: 0(sp) metados_bosheader_t *device */ movl a0,sp@- bsr _xstopaudio addql #4,sp rts _asm_xsetsongtime: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) unknown parameter 6(sp) start_msf 10(sp) end_msf Forward: 0(sp) metados_bosheader_t *device 4(sp) unknown parameter 8(sp) start_msf 12(sp) end_msf */ movl sp,a1 movl 10(a1),sp@- movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xsetsongtime lea sp@(16),sp rts _asm_xgettoc: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) dummy 6(sp) toc_header_t *toc_header Forward: 0(sp) metados_bosheader_t *device 4(sp) dummy 8(sp) toc_header_t *toc_header */ movl sp,a1 movl 6(a1),sp@- clrl d0 movw 4(a1),d0 movl d0,sp@- movl a0,sp@- bsr _xgettoc lea sp@(12),sp rts _asm_xdiscinfo: /* Input: a0 metados_bosheader_t *device 0(sp) return address 4(sp) metados_bosdiscinfo_t *discinfo Forward: 0(sp) metados_bosheader_t *device 4(sp) metados_bosdiscinfo_t *discinfo */ movl sp,a1 movl 4(a1),sp@- movl a0,sp@- bsr _xdiscinfo addql #8,sp rts #endif aranym-0.9.15/atari/nfstderr/metados.h000077500000000000000000000127501213346724500176500ustar00rootroot00000000000000/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwllw #define trap_14_wwllw(n, a, b, c, d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long) (b); \ long _c = (long) (c); \ short _d = (short)(d); \ \ __asm__ volatile \ ("\ movw %5,sp@-; \ movl %4,sp@-; \ movl %3,sp@-; \ movw %2,sp@-; \ movw %1,sp@-; \ trap #14; \ lea sp@(14),sp " \ : "=r"(retvalue) /* outputs */ \ : "g"(n), \ "r"(_a), "r"(_b), "r"(_c), "r"(_d) /* inputs */ \ : __CLOBBER_RETURN("d0") \ "d1", "d2", "a0", "a1", "a2", "memory" \ ); \ retvalue; \ }) #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (((unsigned long)'F'<<24)|((unsigned long)'C'<<16)|('T'<<8)|'L') /* bos_info_t returning ioctl */ #define METADOS_IOCTL_BOSINFO (('B'<<8)|'I') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } __attribute__((packed)) metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } __attribute__((packed)) metainit_t; typedef struct { char *name; unsigned long reserved[3]; } __attribute__((packed)) metaopen_t; typedef struct { char ext_status[32]; } __attribute__((packed)) metastatus_t; typedef struct { unsigned char count; unsigned char first; } __attribute__((packed)) metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } __attribute__((packed)) metadiscinfo_t; /* METADOS_IOCTL_BOSINFO ioctl() .bos driver info */ /** the devide is a character device (all the block values in API are * meant as byte values for these */ #define BOS_INFO_ISTTY 0x00001UL /** the device will not be visible in the x:\dev nor in x:\dev\bos */ #define BOS_INFO_BOSHIDDEN 0x10000UL /** the device will not be visible in the x:\dev but will be in x:\dev\bos */ #define BOS_INFO_DEVHIDDEN 0x20000UL typedef struct { unsigned long flags; } __attribute__((packed)) bos_info_t; #endif /* _METADOS_H */ aranym-0.9.15/atari/nfstderr/metados_bos.h000077500000000000000000000040351213346724500205100ustar00rootroot00000000000000/* MetaDOS BOS driver definitions ARAnyM (C) 2003 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_BOS_H #define _METADOS_BOS_H #include "metados.h" #define METADOS_BOSDEVICE_NAMELEN 32 typedef struct { long (*init)(metainit_t *metainit); long (*open)(metaopen_t *metaopen); long (*close)(void); long (*read)(void *buffer, unsigned long first, unsigned short length); long (*write)(void *buffer, unsigned long first, unsigned short length); long (*seek)(unsigned long offset); long (*status)(metastatus_t *extended_status); long (*ioctl)(unsigned long magic, unsigned short opcode, void *buffer); long (*function08)(void); long (*function09)(void); long (*function0a)(void); long (*startaudio)(unsigned short dummy, metatracks_t *tracks); long (*stopaudio)(void); long (*setsongtime)(unsigned short dummy, unsigned long start_msf, unsigned long end_msf); long (*gettoc)(unsigned short dummy, metatocentry_t *tocheader); long (*discinfo)(metadiscinfo_t *discinfo); } __attribute__((packed)) metados_bosfunctions_t; typedef struct { void *next; unsigned long attrib; unsigned short phys_letter; unsigned short dma_channel; unsigned short sub_device; metados_bosfunctions_t *functions; unsigned short status; unsigned long reserved[2]; char name[METADOS_BOSDEVICE_NAMELEN]; } __attribute__((packed)) metados_bosheader_t; #endif /* _METADOS_BOS_H */ aranym-0.9.15/atari/nfstderr/nfstderrbos.c000077500000000000000000000152241213346724500205410ustar00rootroot00000000000000/* NatFeat host NF_STDERR /dev/nfstderr, MetaDOS BOS driver ARAnyM (C) 2005 STanda Opichal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /*--- Include ---*/ #include #include #include "../natfeat/nf_ops.h" #include "metados_bos.h" /*--- Defines ---*/ #undef ENOSYS #define ENOSYS -32 #ifndef DEV_CONSOLE #define DEV_CONSOLE 2 #endif #define DRIVER_NAME "ARAnyM NF_STDERR driver" #define VERSION "v0.1" static const char device_name[METADOS_BOSDEVICE_NAMELEN]={ "nfstderr" }; /*--- Functions prototypes ---*/ void *init_driver(void); metados_bosheader_t *asm_init_devices(void); long asm_xopen(metaopen_t *metaopen); long asm_xclose(void); long asm_xread(void *buffer, unsigned long first, unsigned short length); long asm_xwrite(void *buffer, unsigned long first, unsigned short length); long asm_xseek(unsigned long offset); long asm_xstatus(metastatus_t *ext_status); long asm_xioctl(unsigned long magic, unsigned short opcode, void *buffer); long xopen(metados_bosheader_t *device, metaopen_t *metaopen); long xclose(metados_bosheader_t *device); long xread(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long xwrite(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length); long xseek(metados_bosheader_t *device, unsigned long offset); long xstatus(metados_bosheader_t *device, metastatus_t *ext_status); long xioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer); metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel); static void press_any_key(void); /*--- Local variables ---*/ unsigned long nf_stderr_id = 0; long __CDECL (*nf_call)(long id, ...) = 0UL; static metados_bosheader_t * (*device_init_f)(void)=asm_init_devices; /*--- Functions ---*/ void *init_driver(void) { struct nf_ops *nf_ops; Cconws( "\033p " DRIVER_NAME " " VERSION " \033q\r\n" "Copyright (c) ARAnyM Development Team, " __DATE__ "\r\n" ); /* Init the ID to 0 */ nf_stderr_id = 0; nf_ops = nf_init(); if ( ! nf_ops ) { Cconws("__NF cookie not present on this system\r\n"); press_any_key(); return &device_init_f; } nf_stderr_id = nf_ops->get_id("NF_STDERR"); if (nf_stderr_id == 0) { Cconws("NF_STDERR function not present on this system\r\n"); press_any_key(); return &device_init_f; } /* store the nf_call pointer for faster calls */ nf_call = nf_ops->call; return &device_init_f; } static void press_any_key(void) { Cconws("- Press any key to continue -\r\n"); while (Bconstat(DEV_CONSOLE)==0); } metados_bosheader_t *init_devices(unsigned long phys_letter, unsigned long phys_channel) { unsigned char *newdevice; metados_bosheader_t *DefaultDevice; metados_bosfunctions_t *DefaultFunctions; if (nf_stderr_id == 0) { Cconws(" ARAnyM NF_STDERR device driver unavailable\r\n"); return (metados_bosheader_t *)-39; } newdevice = (unsigned char *)Malloc(sizeof(metados_bosheader_t)+sizeof(metados_bosfunctions_t)); if (newdevice == NULL) { return (metados_bosheader_t *)-39; } DefaultDevice = (metados_bosheader_t *) newdevice; DefaultFunctions = (metados_bosfunctions_t *) (newdevice + sizeof(metados_bosheader_t)); DefaultDevice->next=NULL; DefaultDevice->attrib=0; DefaultDevice->phys_letter=phys_letter; DefaultDevice->dma_channel=phys_channel; DefaultDevice->functions=DefaultFunctions; DefaultDevice->functions->init=(long (*)(metainit_t *metainit)) 0xffffffffUL; DefaultDevice->functions->open=asm_xopen; DefaultDevice->functions->close=asm_xclose; DefaultDevice->functions->read=asm_xread; DefaultDevice->functions->write=asm_xwrite; DefaultDevice->functions->seek=asm_xseek; DefaultDevice->functions->status=asm_xstatus; DefaultDevice->functions->ioctl=asm_xioctl; DefaultDevice->functions->function08=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->function09=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->function0a=(long (*)(void)) 0xffffffffUL; DefaultDevice->functions->startaudio=(void*)0xffffffffUL; DefaultDevice->functions->stopaudio=(void*)0xffffffffUL; DefaultDevice->functions->setsongtime=(void*)0xffffffffUL; DefaultDevice->functions->gettoc=(void*)0xffffffffUL; DefaultDevice->functions->discinfo=(void*)0xffffffffUL; DefaultDevice->status=0; strncpy(DefaultDevice->name, device_name, METADOS_BOSDEVICE_NAMELEN); return DefaultDevice; } long xopen(metados_bosheader_t *device, metaopen_t *metaopen) { metaopen->name = device->name; metaopen->reserved[0] = metaopen->reserved[1] = metaopen->reserved[2] = 0; return 0; } long xclose(metados_bosheader_t *device) { return 0; } long xread(metados_bosheader_t *device, void *buffer, unsigned long first, unsigned long length) { return 0; } long xwrite(metados_bosheader_t *device, void *buf, unsigned long first, unsigned long length) { char outb[2] = { '\0', '\0' }; long nwrite = 0; /** * WARNING: this driver doesn't expect the incomming data first/length * to be in bytes and NOT blocks of 2048 bytes as specified in the * .BOS API specification. * * This is to me an acceptable hack to create .BOS character device * drivers for BetaDOS. **/ unsigned long bytes = length; while (bytes > 0) { /* call host os to print the data */ /* byte by byte because of NF_STDERR operates with * char* as with a string and not a byte array * ('\0' would terminate the output) **/ outb[0] = ((char*)buf)[nwrite]; nf_call(nf_stderr_id, outb); nwrite++; bytes--; } return nwrite; } long xseek(metados_bosheader_t *device, unsigned long offset) { return 0; } long xstatus(metados_bosheader_t *device, metastatus_t *extended_status) { if (extended_status != NULL) { memset(extended_status, 0, sizeof(metastatus_t)); } return 0; } long xioctl(metados_bosheader_t *device, unsigned long magic, unsigned long opcode, void *buffer) { if (magic != METADOS_IOCTL_MAGIC) { return ENOSYS; } switch (opcode) { case METADOS_IOCTL_BOSINFO: /* this device is character device */ ((bos_info_t*)buffer)->flags = BOS_INFO_ISTTY; return 0; } return ENOSYS; } aranym-0.9.15/atari/sound/000077500000000000000000000000001213346724500153345ustar00rootroot00000000000000aranym-0.9.15/atari/sound/README000066400000000000000000000051451213346724500162210ustar00rootroot00000000000000********************************************************************** * MagiCMac Sound driver v0.96 * Didier MEQUIGNON * 2002 April * ********************************************************************** Features: --------- Emulation of Falcon's XBIOS, there are no matrix like the falcon in the MacOS system nevertheless it's possible to : - Play samples in 8/16 bits mono and stereo (with/without D2D). - Record 16 bits samples in stereo like the Falcon (with/without D2D). - Select the input source (the current input source when MagiCMac is started or the number one). - Connnect or remove the audio source to the audio output. - Set the level output on the two channels. - Set the gain input on the two channels. - Emulation on the selection of tracks (1 to 4). - FDI external clock selection compatible. - Extended functions added like the GSXB/MilanBlaster drivers, for example it's possible to choice the true frequency. The bit 5 of the _SND cookie is set. 24/32 bits and mixer are not supported, and only Mororola format is supported. With the CPX, you can change the audio source. Special Futures: ---------------- - This driver can runs on Hades ! The output is the YAMAHA or the MV16/PSOUND card. In this case audio input functions are removed. The Timer A of the MFP2 is used. - This driver can run on Aranym ! The driver use SDL calls inside Aranym. Record isn't possible. Install: -------- Under MagiCMac, just copy ZMAGXSND.PRG in the AUTO folder and restart MagiCMac, you can select the input audio source with the CPX. Under Hades, if you want the MV16 (on the Ropocop), PSOUND (// port), or the YAMAHA (internal) output, you need to select to select the audio output with the CPX. Under Aranym, just copy ZMAGXSND.PRG in the AUTO folder. You need Aranym 0.1.7 or more. Copying: -------- This program and sources are free. Problems: --------- Please contact me: didier.mequignon@wanadoo.fr List of sound XBIOS functions supported: ---------------------------------------- Locksound() XBIOS Function 128. Unlocksound() XBIOS Function 129. Soundcmd() XBIOS Function 130. Setbuffer() XBIOS Function 131. Setmode() XBIOS Function 132. Settracks() XBIOS Function 133. Setmontracks() XBIOS Function 134. Setinterrupt() XBIOS Function 135. Buffoper() XBIOS Function 136. Gpio() XBIOS Function 138. Just used for clock selection. Devconnect() XBIOS Function 139. Sndstatus() XBIOS Function 140. Buffptr() XBIOS Function 141. Some functions are not 100% compatible with GSXB/MilanBlaster because the way under MacOS with sound devices is different. aranym-0.9.15/atari/sound/zmagxsnd.l000066400000000000000000003237001213346724500173510ustar00rootroot00000000000000 ILABEL TOS.Q DEBUG EQU 0;0-1-2 GSXB EQU 1;cookie VERSION EQU $0061;$0063 max pour 0.99 INC EQU ADDQ #1, DEC EQU SUBQ #1, TAILLE_BUFFER EQU 256*4;8192*4 TAILLE_BUFFER_SDL EQU 1024*4 TAILLE_SOUND_HEADER EQU 64 NB_BUFFERS EQU 5 MAX_TAB EQU 8 LTATTEN EQU 0 RTATTEN EQU 1 LTGAIN EQU 2 RTGAIN EQU 3 ADDERIN EQU 4 ADCINPUT EQU 5 SETPRESCALE EQU 6 SETSMPFREQ EQU 7 ;>>> SDL <<< SDL_MIX_MAXVOLUME EQU 128 ;Audio format flags AUDIO_U8 EQU $0008 ;Unsigned 8-bit samples AUDIO_S8 EQU $8008 ;Signed 8-bit samples AUDIO_U16LSB EQU $0010 ;Unsigned 16-bit sample Intel AUDIO_S16LSB EQU $8010 ;Signed 16-bit samples Intel AUDIO_U16MSB EQU $1010 ;Unsigned 16-bit sample Motorola AUDIO_S16MSN EQU $9010 ;Signed 16-bit samples Motorola ;current audio state SDL_AUDIO_STOPPED EQU 0 SDL_AUDIO_PLAYING EQU 1 SDL_AUDIO_PAUSED EQU 2 ;Aranym audio functions OpenAudio EQU 1 CloseAudio EQU 2 PauseAudio EQU 3 AudioStatus EQU 4 AudioVolume EQU 5 LockAudio EQU 6 UnlockAudio EQU 7 GetAudioFreq EQU 8 GetAudioLen EQU 9 ;>>> MacOS <<< ;flags gestalt gestaltStereoCapability EQU 0 gestaltStereoMixing EQU 1 gestaltSoundIOMgrPresent EQU 3 gestaltBuiltInSoundInput EQU 4 gestaltHasSoundInputDevice EQU 5 gestaltPlayAndRecord EQU 6 gestalt16BitSoundIO EQU 7 gestaltStereoInput EQU 8 gestaltLineLevelInput EQU 9 gestaltSndPlayDoubleBuffer EQU 10 gestaltMultiChannels EQU 11 gestalt16BitAudioSupport EQU 12 ;Get&Set Sound Information Selectors siActiveChannels EQU 'chac' ;active channels siActiveLevels EQU 'lmac' ;active meter levels siAGCOnOff EQU 'agc ' ;automatic gain control state siAsync EQU 'asyn' ;asynchronous capability siAVDisplayBehavior EQU 'avdb' siChannelAvailable EQU 'chav' ;number of channels available siCompressionAvailable EQU 'cmav' ;compression types available siCompressionChannels EQU 'cpct' ;compressor's number of channels siCompressionFactor EQU 'cmfa' ;current compression factor siCompressionHeader EQU 'cmhd' ;return compression header siCompressionNames EQU 'cnam' ;compression type names available siCompressionParams EQU 'evaw' ;compression parameters siCompressionSampleRate EQU 'cprt' ;compressor's sample rate siCompressionType EQU 'comp' ;current compression type siContinuous EQU 'cont' ;continous recording siDecompressionParams EQU 'wave' ;decompression parameters siDeviceBufferInfo EQU 'dbin' ;size of interrupt buffer siDeviceConnected EQU 'dcon' ;input device connection status siDeviceIcon EQU 'icon' ;input device icon siDeviceName EQU 'name' ;input device name siEQSpectrumBands EQU 'eqsb' ;number of spectrum bands siEQSpectrumLevels EQU 'eqlv' ;gets spectum meter levels siEQSpectrumOnOff EQU 'eqlo' ;turn on/off spectum meter levels siEQSpectrumResolution EQU 'eqrs' ;set the resolution of the FFT, 0 = low res (<=16 bands), 1 = high res (16-64 bands) siEQToneControlGain EQU 'eqtg' ;set the bass and treble gain siEQToneControlOnOff EQU 'eqtc' ;turn on equalizer attenuation siHardwareBalance EQU 'hbal' siHardwareBalanceSteps EQU 'hbls' siHardwareBass EQU 'hbas' siHardwareBassSteps EQU 'hbst' siHardwareBusy EQU 'hwbs' ;sound hardware is in use siHardwareFormat EQU 'hwfm' ;get hardware format siHardwareMute EQU 'hmut' ;mute state of all hardware siHardwareMuteNoPrefs EQU 'hmnp' ;mute state of all hardware, but don't store in prefs siHardwareTreble EQU 'htrb' siHardwareTrebleSteps EQU 'hwts' siHardwareVolume EQU 'hvol' ;volume level of all hardware siHardwareVolumeSteps EQU 'hstp' ;number of volume steps for hardware siHeadphoneMute EQU 'pmut' ;mute state of headphones siHeadphoneVolume EQU 'pvol' ;volume level of headphones siHeadphoneVolumeSteps EQU 'hdst' ;number of volume steps for headphones siInputAvailable EQU 'inav' ;input sources available siInputGain EQU 'gain' ;input gain siInputSource EQU 'sour' ;input source selector siInputSourceNames EQU 'snam' ;input source names siLevelMeterOnOff EQU 'lmet' ;level meter state siModemGain EQU 'mgai' ;modem input gain siMonitorAvailable EQU 'mnav' siMonitorSource EQU 'mons' siNumberChannels EQU 'chan' ;current number of channels siOptionsDialog EQU 'optd' ;display options dialog siOSTypeInputSource EQU 'inpt' ;input source by OSType siOSTypeInputAvailable EQU 'inav' ;list of available input source OSTypes siOutputDeviceName EQU 'onam' ;output device name siPlayThruOnOff EQU 'plth' ;playthrough state siPostMixerSoundComponent EQU 'psmx' ;install post-mixer effect siPreMixerSoundComponent EQU 'prmx' ;install pre-mixer effect siQuality EQU 'qual' ;quality setting siRateMultiplier EQU 'rmul' ;throttle rate setting siRecordingQuality EQU 'qual' ;recording quality siSampleRate EQU 'srat' ;current sample rate siSampleRateAvailable EQU 'srav' ;sample rates available siSampleSize EQU 'ssiz' ;current sample size siSampleSizeAvailable EQU 'ssav' ;sample sizes available siSetupCDAudio EQU 'sucd' ;setup sound hardware for CD audio siSetupModemAudio EQU 'sumd' ;setup sound hardware for modem audio siSlopeAndIntercept EQU 'flap' ;floating point variables for conversion siSoundClock EQU 'sclk' siUseThisSoundClock EQU 'sclc' ;sdev uses this to tell the mixer to use his sound clock siSpeakerMute EQU 'smut' ;mute state of all built-in speaker siSpeakerVolume EQU 'svol' ;volume level of built-in speaker siSSpCPULoadLimit EQU '3dll' siSSpLocalization EQU '3dif' siSSpSpeakerSetup EQU '3dst' siStereoInputGain EQU 'sgai' ;stereo input gain siSubwooferMute EQU 'bmut' ;mute state of sub-woofer siTerminalType EQU 'ttyp' ;usb terminal type siTwosComplementOnOff EQU 'twos' ;two's complement state siVendorProduct EQU 'vpro' ;vendor and product ID siVolume EQU 'volu' ;volume level of source siVoxRecordInfo EQU 'voxr' ;VOX record parameters siVoxStopInfo EQU 'voxs' ;VOX stop parameters siWideStereo EQU 'wide' ;wide stereo setting siSupportedExtendedFlags EQU 'exfl' ;which flags are supported in Extended sound data structures siRateConverterRollOffSlope EQU 'rcdb' ;the roll-off slope for the rate converter's filter, in whole dB ; as a long this value is a long whose range is from 20 (worst quality/fastest performance) ; to 90 (best quality/slowest performance) siOutputLatency EQU 'olte' ;latency of sound output component ;commandes de SNDDOCOMMAND ou SNDDOIMMEDIATE NULLCMD EQU 0 ;do nothing QUIETCMD EQU 3 ;stop a sound that is playing FLUSHCMD EQU 4 ;flush a sound channel REINITCMD EQU 5 ;reinitialize a sound channel WAITCMD EQU 10 ;suspend processing in a channel PAUSECMD EQU 11 ;pause processing in a channel RESUMECMD EQU 12 ;resume processing in a channel CALLBACKCMD EQU 13 ;execute a callback procedure SYNCCMD EQU 14 ;synchronize channels AVAILABLECMD EQU 24 ;see if initialization options are supported VERSIONCMD EQU 25 ;determine version TOTALLOADCMD EQU 26 ;report total CPU load LOADCMD EQU 27 ;report CPU load for a new channel FREQDURATIONCMD EQU 40 ;play a note for a duration RESTCMD EQU 41 ;rest a channel for a duration FREQCMD EQU 42 ;change the pitch of a sound AMPCMD EQU 43 ;change the amplitude of a sound TIMBRECMD EQU 44 ;change the timbre of a sound GETAMPCMD EQU 45 ;get the amplitude of a sound VOLUMECMD EQU 46 ;set volume GETVOLUMECMD EQU 47 ;get volume WAVETABLECMD EQU 60 ;install a wave table as a voice SOUND_CMD EQU 80 ;install a sampled sound as a voice BUFFERCMD EQU 81 ;play a sampled sound RATECMD EQU 82 ;set the pitch of a sampled sound GETRATECMD EQU 85 ;get the pitch of a sampled sound ;CONST 1 de SNDNEWCHANNEL SQUAREWAVESYNTH EQU 1 WAVETABLESYNTH EQU 3 SAMPLEDSYNTH EQU 5 ;CONST 2 de SNDNEWCHANNEL INITCHANLEFT EQU 2 INITCHANRIGHT EQU 3 WAVEINITCHANNEL0 EQU 4 WAVEINITCHANNEL1 EQU 5 WAVEINITCHANNEL2 EQU 6 WAVEINITCHANNEL3 EQU 7 INITMONO EQU $80 INITSTEREO EQU $C0 INITMACE3 EQU $300 INITMACE6 EQU $400 INITNOINTERP EQU 4 INITNODROP EQU 8 ;structure SNDCHANNEL NEXTCHAN EQU 0;SndChannelPtr FIRSTMOD EQU 4 CALLBACK EQU 8;SndCallBackProcPtr USERINFO EQU 12 WAIT EQU 16 CMDINPROGRESS EQU 20;SndCommand FLAGS EQU 24 QLENGTH EQU 26 QHEAD EQU 28 QTAIL EQU 30 QUEUE EQU 32;SndCommand [128] ;structure INPARAMPTR _INREFNUM EQU 0; --> reference number of a sound input device _COUNTREC EQU 4; <--> number of bytes of recording _MILLISECONDS EQU 8; <--> number of milliseconds of recording _BUFFERLENGTH EQU 12; --> length of the buffer beginning at bufferPtr _BUFFERPTR EQU 16; --> pointer to a buffer for sampled-sound data _COMPLEXIONROUTINE EQU 20; --> pointer to a completion routine _INTERRUPTROUTINE EQU 24; --> pointer to an interrupt routine _USERLONG EQU 28; --> free for application's use _ERRORREC EQU 32; <-- word 1 during record, 0 if finished, < 0 if error VECT_TIMER_A EQU $134 VECT_IO7 EQU $13C MEMVALID EQU $420 RESVALID EQU $426 RESVECTOR EQU $42A PROC_TYPE EQU $59E _COOKIE EQU $5A0 ;Le cookie 'McSn' (sous n'importe quel version TOS) est une garantie, ;qu'on peut jouer des sons 12.5 KHz 8Bit Mono par les fonctions son ;XBIOS Falcon. ;Pour plus d'informations, il faut tester le cookie McSn: ; ; struct McSnCookie ; { ; short vers; Version en code BCD ; short size; Taille de la structure ; ; short play; Possibilits de lecture ; short record; Possibilits d'enregistrement ; short dsp; Y'a-t-il un DSP? ; short pint; Playing: Interrupt possible pour fin de Frame? ; short rint; Recording: Interrupt possible pour fin de Frame? ; ; long res1; rserv....... ; long res2; ; long res3; ; long res4; ; }; ; ;Valeurs pour play & record: ; #define ST 0 ; #define TT 1 ; #define FALCON 2 ; ;Valeurs pour play: ; ST -> 12.5 Khz, 8 Bit Mono! ; TT -> Frquences STE/TT, 8 Bit Stereo ; FALCON -> Frquences FALCON, 16 Bit Stereo ; ;Et pour record: ; ST -> Pas de possibilits d'enregistrement ; TT -> Pas de possibilits d'enregistrement ; FALCON -> Frquences FALCON, 16 Bit Stereo ; ;Voil quoi devraient resembler les tests pour play & record: ; if play >= FALCON then [Possibilits FALCON prsentes] ;Pour dsp, pint & rint: ; if pint!=0 then setinterrupt marche por la lecture. ;Sur tous le Macintosh avec MagiCMac: play = FALCON, ;sans regarder quelles possibilits sonores du Macintosh (mono/stereo ..), TIMER_OUTPUT:MACRO $\1,$\2,$\3,$\4 MOVE \1,-(SP);mode: B0:mono(0)/stro(1) B1:8 bits(0)/16 bits(1) ; B6:rptition non(0)/oui(1) MOVE \2,-(SP);frquence PEA \3;adresse chantillons MOVE.L \4,-(SP);longueur BSR TIMER_OUTPUT_ LEA 12(SP),SP ENDM DEBUT: MOVE.L 4(SP),A5;Dbut de la basepage MOVE.L $C(A5),D0 ADD.L $14(A5),D0 ADD.L $1C(A5),D0 ADD.L #256,D0 SETBLOCK D0,(A5) MOVE.L #"MgSn",D0 BSR GET_COOKIE BPL.S \1;dja install BSR INIT BMI.S \1;erreur KEEPPROC #0,#FIN-DEBUT+$200;programme rsidant \1:IFNE 0,DEBUG PRINTLINE DEBUG1 CONIN_WE ENDIF TERM RTS AFF_INFO: MOVEM.L D0-D2/A0-A2,-(SP) LINK A6,#-4 PRINTLINE MESS1 LEA -4(A6),A0 CLR.L (A0) MOVEQ #VERSION/256,D0 MOVEQ #2,D1 BSR CONV_DECI MOVE.B #".",-2(A6) PRINTLINE -4(A6) LEA -4(A6),A0 CLR.L (A0) MOVEQ #VERSION & 255,D0 MOVEQ #2,D1 BSR CONV_DECI_SIMPLE PRINTLINE -4(A6) PRINTLINE MESS2 TST D_MAC BNE \1;MagiCMac TST D_SDL BEQ \1 PRINTLINE MESS8 TST.L NFID_AUDIO BEQ \1;<> NATFEAT PRINTLINE MESS8B SUPEXEC SDL_VERSION MOVE D0,D2 LEA -4(A6),A0 CLR.L (A0) MOVEQ #0,D0 MOVE D2,D0 LSR #8,D0 MOVEQ #2,D1 BSR CONV_DECI MOVE.B #".",-2(A6) PRINTLINE -4(A6) LEA -4(A6),A0 CLR.L (A0) MOVEQ #0,D0 MOVE.B D2,D0 MOVEQ #2,D1 BSR CONV_DECI_SIMPLE PRINTLINE -4(A6) \1:UNLK A6 MOVEM.L (SP)+,D0-D2/A0-A2 RTS AFF_NUMVERSION: MOVEM.L D0-D1/A0,-(SP) SWAP D0 MOVE D0,D1 MOVE D1,D0 LSR #8,D0 AND #$F,D0 OR #$30,D0 CONOUT D0 CONOUT #"." MOVE D1,D0 LSR #4,D0 AND #$F,D0 OR #$30,D0 CONOUT D0 MOVEQ #$F,D0 AND D1,D0 OR #$30,D0 CONOUT D0 MOVEM.L (SP)+,D0-D1/A0 RTS AFF_NOM_LISTE:;index dans D0, chane dans A0 MOVEM.L D0-D1/A0-A1,-(SP) MOVE D0,D1 MOVE.L A0,A1 CONOUT #13 CONOUT #10 CONOUT #"<" OR #$30,D1 CONOUT D1 CONOUT #">" CONOUT #" " PRINTLINE (A1) CONOUT #" " MOVEM.L (SP)+,D0-D1/A0-A1 RTS CONV_CAR:;MAC => Atari MOVE.L A0,-(SP) LEA TAB_CAR_MAC,A0 \2:TST.B (A0)+ BEQ.S \1 CMP.B (A0)+,D0 BNE.S \2 MOVE.B -2(A0),D0 \1:MOVE.L (SP)+,A0 RTS CONV_CHAINE:;chane dans A0 MOVEM.L D0/D1/A0,-(SP) MOVE #255,D1 \1:MOVE.B (A0),D0 BSR CONV_CAR MOVE.B D0,(A0)+ DBEQ D1,\1 MOVEM.L (SP)+,D0/D1/A0 RTS INIT: MOVEM.L D0-D2/A0-A2/A5,-(SP) CLR D_MAC CLR D_TT CLR D_SDL MOVE.L #"_MCH",D0 BSR GET_COOKIE BMI.S \38 MOVE.L D0,A0 MOVE (A0),D0;donne cookie CMP #2,D0;TT SEQ.B D0 EXT.W D0 MOVE D0,D_TT \38:MOVE.L #"PSND",D0;carte son HADES BSR GET_COOKIE SPL.B D0 AND #1,D0;flag carte son HADES MOVE D0,INFOS_COOKIE+10;slot MOVE.L #"MgMc",D0 BSR GET_COOKIE BMI \39;<> MagiCMac ST.B D_MAC MOVE.L D0,A0 MOVE.L (A0),D0;donne cookie BEQ \1 MOVE.L D0,A2 MOVE.L $10(A2),MODEMAC MOVE.L $14(A2),MODEATARI MOVE.L $18(A2),GETBASEMODE MOVE.L $28(A2),CALLMACCONTEXT MOVE.L $2C(A2),ATARIZEROPAGE IFNE 0,DEBUG PRINTLINE DEBUG3 ENDIF LEA INFOS_SON_MAC,A0 MOVE.L #"snd ",D0 BSR GESTALT BEQ.S \5 PRINTLINE ERR2;pas de son MAC BRA \6 \5:IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE.L INFOS_SON_MAC,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVE.L INFOS_SON_MAC,D0 BTST #gestaltStereoCapability,D0 BNE.S \28 PRINTLINE ERR8;pas de lecture stro BRA \6 \28:BTST #gestalt16BitSoundIO,D0 BNE.S \29 PRINTLINE ERR9;pas de sons 16 bits BRA \6 \29:IFNE 0,DEBUG PRINTLINE DEBUG4 ENDIF LEA CHANNEL,A0 MOVE #128,QTAIL(A0) PEA (A0) LEA (SP),A0 MOVE.L A0,SNDCHANNELPTR2 MOVE.L #INITSTEREO,INITSND LEA CALLBACK16,A0 MOVE.L A0,SNDCALLBACKPROCPTR LEA SNDNEWCHANNEL,A0 BSR CALLMACFUNCTION ADDQ #4,SP BEQ \4 PRINTLINE ERR1;canal ne peut pas etre ouvert \6:CONIN_WE CONOUT #13 CONOUT #10 CONOUT #10 BRA \1 \39:SUPEXEC TEST_SDL_ARANYM CLR D_OPEN_SDL \4:MOVE.L #"MgSn",D0 BSR INIT_COOKIE BPL.S \3 \1:MOVEQ #-1,D0;erreur BRA \2 \3:MOVE.L D0,A0 LEA INFOS_COOKIE,A5 MOVE.L A5,(A0) MOVE.L #"McSn",D0 BSR INIT_COOKIE BMI.S \9;erreur MOVE.L D0,A0 LEA STRUCT_MCSN,A1 MOVE.L A1,(A0) \9:IFNE 0,DEBUG PRINTLINE DEBUG5 ENDIF IFNE 0,GSXB MOVE.L #"GSXB",D0 BSR GET_COOKIE BPL.S \12 MOVE.L #"GSXB",D0 BSR INIT_COOKIE \12: ENDIF MOVEQ #6+32,D1;tendu, 16-bit DMA & 8-bit DMA MOVE.L #"_SND",D0 BSR GET_COOKIE BMI.S \34;pas trouv MOVE.L D0,A0 MOVEQ #9,D0 AND.L (A0),D0;conserve bit PSG & DSP OR.L D0,D1 BRA.S \35 \34:MOVE.L #"_SND",D0 BSR INIT_COOKIE BMI.S \11;erreur \10:MOVE.L D0,A0 ; Bit 0: PSG soundchip ; Bit 1: 8-bit DMA ; Bit 2: 16-bit DMA ; Bit 3: DSP ; Bit 4: Matrix ; Bit 5: tendu \35:MOVE.L D1,(A0) IFNE 0,DEBUG PRINTLINE DEBUG2 ENDIF \11:TST D_MAC BEQ \36;<> MagiCMac LEA DET_FIN_SON,A0 MOVE.L $34(A2),-4(A0);MACAPPSWITCH MOVE.L A0,$34(A2) LEA TAB_BUFFERS,A2 MOVE #NB_BUFFERS-1,D2 \7:LEA TAILLE_SOUND_HEADER(A2),A0 MOVE.L A0,(A2)+;buffer samplePtr MOVE.L #2,(A2)+;numChannels CLR.L (A2)+;frquence * 65536 CLR.L (A2)+;loopStart CLR.L (A2)+;loopEnd MOVE #$FF00,(A2)+;encode (extSH), baseFrequency MOVE.L #TAILLE_BUFFER/4,(A2)+;numFrames CLR.L (A2)+;AIFFSampleRate sur 80 bits CLR.L (A2)+ CLR (A2)+ CLR.L (A2)+;markerChunk CLR.L (A2)+;instrumentChunks CLR.L (A2)+;AESRecording MOVE #16,(A2)+;sampleSize CLR (A2)+;futurUse1 CLR.L (A2)+;futurUse2 CLR.L (A2)+;futurUse3 CLR.L (A2)+;futurUse4 ADD.L #TAILLE_BUFFER,A2 DBRA D2,\7 LEA TAILLE_SOUND_HEADER(A2),A0 MOVE.L A0,(A2)+;buffer samplePtr MOVE.L #2,(A2)+;numChannels CLR.L (A2)+;frquence * 65536 CLR.L (A2)+;loopStart CLR.L (A2)+;loopEnd MOVE #$FF00,(A2)+;encode (extSH), baseFrequency MOVE.L #TAILLE_BUFFER/4,(A2)+;numFrames CLR.L (A2)+;AIFFSampleRate sur 80 bits CLR.L (A2)+ CLR (A2)+ CLR.L (A2)+;markerChunk CLR.L (A2)+;instrumentChunks CLR.L (A2)+;AESRecording MOVE #16,(A2)+;sampleSize CLR (A2)+;futurUse1 CLR.L (A2)+;futurUse2 CLR.L (A2)+;futurUse3 CLR.L (A2)+;futurUse4 MOVE.L #(TAILLE_BUFFER/4)-1,D1;numFrames -1 \8:CLR.L (A2)+;init buffer arrt son SUBQ.L #1,D1 BPL.S \8 BSR RAZ_BUFFERS \36:BSR INIT_DET BSR AFF_INFO TST D_MAC BEQ \16;<> MagiCMac IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG50 MOVEM.L (SP)+,D0/A0 ENDIF PRINTLINE MESS3 LEA SNDSOUNDMANAGERVERSION,A0 BSR CALLMACFUNCTION BSR AFF_NUMVERSION CLR NB_INDEV MOVE.L INFOS_SON_MAC,D0 ; BTST #gestaltSoundIOMgrPresent,D0 BTST #gestaltHasSoundInputDevice,D0 BNE.S \26 PRINTLINE ERR7;no input device BRA \16 \26:BTST #gestaltStereoInput,D0 BNE.S \27 PRINTLINE ERR10;pas d'enregistrement stro BRA \16 \27:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG126 MOVEM.L (SP)+,D0/A0 ENDIF PRINTLINE MESS4 LEA SPBVERSION,A0 BSR CALLMACFUNCTION BSR AFF_NUMVERSION PRINTLINE MESS5 MOVE #1,COUNT MOVEQ #MAX_TAB-1,D1 \13:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG124 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBGETINDEXEDDEVICE,A0 BSR CALLMACFUNCTION BNE \14 LEA DEVICENAME,A1 MOVEQ #0,D0 MOVE.B (A1)+,D0;format pascal CLR.B (A1,D0);fin chane MOVE.L A1,A0 BSR CONV_CHAINE MOVE COUNT,D0 BSR AFF_NOM_LISTE INC COUNT DBRA D1,\13 \14:MOVE COUNT,D0 DEC D0 MOVE D0,NB_INDEV BEQ.S \17 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG125 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBOPENDEVICE,A0 BSR CALLMACFUNCTION BEQ \15 \18:CLR NB_INDEV \17:PRINTLINE ERR3;erreur ouverture BRA \16 \22:PRINTLINE ERR4;pas de source BRA.S \25 \23:PRINTLINE ERR5;pas de stro BRA.S \25 \24:PRINTLINE ERR6;pas de 16 bits \25:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG127 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBCLOSEDEVICE,A0 BSR CALLMACFUNCTION BRA \18 \15:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG160 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siDeviceName,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \18;erreur PRINTLINE MESS6 LEA INFODATA,A0 MOVEQ #0,D0 MOVE.B (A0)+,D0;format pascal CLR.B (A0,D0);fin chane BSR CONV_CHAINE PRINTLINE (A0) IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \22;erreur MOVE INFODATA,D0 MOVE D0,INSOURCE MOVE D0,4(A5) IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG159 MOVEM.L (SP)+,D0/A0 ENDIF CLR NB_SOURCES LEA TAB_SOURCENAME,A2 CLR.B (A2);fin tableau MOVE.L #siInputSourceNames,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \30;erreur LEA INFODATA,A0 MOVE.L (A0),A0;Handle MOVE.L (A0),A1 MOVE (A1)+,D1 MOVE D1,NB_SOURCES MOVE D1,2(A5) DEC D1 BMI \30 PRINTLINE MESS7 MOVEQ #1,D3 CMP #MAX_TAB,D1 BCS.S \31 MOVEQ #MAX_TAB,D1 \31:MOVEQ #0,D2 MOVE.B (A1)+,D2;format pascal MOVE.L A2,A0 MOVE D2,D0 DEC D0 BMI.S \32 MOVE.L A2,A0 \33:MOVE.B (A1)+,(A2)+ DBRA D0,\33 CLR.B (A2)+ BSR CONV_CHAINE MOVE D3,D0 BSR AFF_NOM_LISTE CMP INSOURCE,D3 BNE.S \32 CONOUT #"<" CONOUT #"-" \32:INC D3 DBRA D1,\31 CLR.B (A2);fin tableau \30:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG151 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siAsync,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur TST INFODATA BEQ \25;<> asynchronous IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG152 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siNumberChannels,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \23;erreur CMP #2,INFODATA BCS \23 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG153 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siSampleSize,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \24;erreur CMP #16,INFODATA BCS \24 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG154 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siSampleRateAvailable,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25 LEA INFODATA,A0 MOVE (A0)+,D0;count CMP #16,D0 BCS.S \19 MOVEQ #16,D0 \19:MOVE D0,NB_FREQ_REC BNE.S \20;liste frquences enregistrement supportes MOVEQ #2,D0;mini et maxi frquences enregistrement supports \20:MOVE.L (A0),A0;Handle MOVE.L (A0),A0 LEA TAB_FREQ_REC,A1 DEC D0 \21:MOVE.L (A0)+,(A1)+ DBRA D0,\21 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG152 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #2,INFODATA;2 voies MOVE.L #siNumberChannels,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG153 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #16,INFODATA;16 bits MOVE.L #siSampleSize,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG155 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #"NONE",INFODATA MOVE.L #siCompressionType,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG156 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #1,INFODATA;chantillons signs MOVE.L #siTwosComplementOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE #7,INFODATA MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION BNE \25;erreur SOUNDCMD #-1,#LTGAIN;init GAINS SOUNDCMD #-1,#RTGAIN \16:TST NB_INDEV BNE.S \37 CLR STRUCT_MCSN+6;record ST (impossible) \37:CONOUT #13 CONOUT #10 CONOUT #10 MOVEQ #0,D0 \2:MOVEM.L (SP)+,D0-D2/A0-A2/A5 RTS INIT_DET: MOVEM.L D0-D2/A0-A2,-(SP) CLR NB_INDEV CLR FLAG_ARRET MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro CLR PRESCALE CLR PRESCALE_STE CLR HORLOGE CLR HORLOGE2 CLR NB_TRACKS CLR NB_TRACKS_REC CLR TRACK CLR.L INTH_ADDR;routine appele en fin lecture buffer DMA CLR.L INTH_ADDR_REC;routine appele en fin enregistrement buffer DMA CLR CAUSE_INTER;setinterrupt CLR D_TIMER_A CLR D_IO7 CLR COUNT_TIMER_A CLR D_INIT_TIMER_A SETEXEC DET_BIOS,#45;TRAP #13 MOVE.L D0,DET_BIOS-4 SETEXEC DET_XBIOS,#46;TRAP #14 MOVE.L D0,DET_XBIOS-4 MOVEM.L (SP)+,D0-D2/A0-A2 RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 CALLBACK16_SDL: MOVEM.L D0-A6,-(SP) MOVE D_INTEL_SDL,-(SP) TST D_OPEN_SDL BEQ \1 BTST #0,STATUS+1 BEQ.S \78;arrt lecture BSR SDL_AUDIOSTATUS CMP #SDL_AUDIO_PLAYING,D0 BEQ.S \71 \78:AND #$FFFC,STATUS;arrt lecture DMA BSR SDL_CLOSEAUDIO CLR D_OPEN_SDL BRA \1 \71:BTST #0,STATUS+1 BEQ \1;arrt lecture BSR SDL_LOCKAUDIO BSR SDL_GETAUDIOLEN MOVE.L D0,D3;taille buffer cible LEA TAB_BUFFERS,A2;cible dbut MOVE.L A2,A1;adresse chantillons cible ADD.L D3,A1;adresse de fin cible MOVE.L ADR,A0;adresse source MOVE.L ADR_FIN,A6;fin source => changement de buffer D2D MOVE.L FREQUENCE,D6;frquence source MOVE.L FREQ_LECT,D7;frquence cible CMP.L D6,D7 BEQ \8;frquences identiques => pas de rchantillonnage CMP #2,NB_VOIES BEQ \45;stro CMP #2,OCT_ECH BEQ \58;16 bits mono ;8 bits mono ADD TRACK,A0 MOVE NB_TRACKS,A5 CMP.L D6,D7 BCS \35;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1;0-3 INC D1 JSR MUL32_32 MOVE.L D0,D1;pas MOVEQ #0,D2 MOVEQ #0,D3 \33:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits x(n) ASL #8,D6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \32 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits mono x(n+1) ASL #8,D7 MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \32:CMP.L A6,A3 BCC.S \31;fin buffer \34:TST (SP) BPL.S \59 ROR #8,D6;format Intel \59:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \33 BRA \6 \31:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \34 ;cas ou frquence cible < frquence source ; => diminution de la longueur \35:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \37:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits mono x(n) ASL #8,D6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \38 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits mono x(n+1) ASL #8,D7 MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \38:CMP.L A6,A3 BCC.S \39;fin buffer \36:TST (SP) BPL.S \60 ROR #8,D6;format Intel \60:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \37 BRA \6 \39:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA \36 ;pas de rchantillonnage \8:LSR.L #2,D3;/4 CMP #2,NB_VOIES BEQ \44;stro CMP #2,OCT_ECH BEQ \43;16 bits mono ADD TRACK,A0 MOVE NB_TRACKS,A5 TST (SP) BMI \61;format Intel BRA \40 \41:CMP.L A6,A0 BCC.S \42;fin de buffer MOVE.B (A0)+,D6 ADD A5,A0 ASL #8,D6 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \40:SUBQ.L #1,D3 BPL.S \41 BRA \6 \42:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \41 \76:CMP.L A6,A0 BCC.S \77;fin de buffer MOVE.B (A0)+,D6 ADD A5,A0 ASL #8,D6 ROR #8,D6;format Intel MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \61:SUBQ.L #1,D3 BPL.S \76 BRA \6 \77:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 ADD TRACK,A0 MOVE.L ADR_FIN,A6 BRA.S \76 ;8 bits stro \45:CMP #4,OCT_ECH BEQ \17;16 bits stro MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 CMP.L D6,D7 BCS \46;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \49:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits voie gauche x(n) MOVE.B (A3)+,D4;chantillon 8 bits voie droite x(n) ASL #8,D6 ASL #8,D4 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \50 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits voie gauche x(n+1) MOVE.B (A3)+,D5;chantillon 8 bits voie droite x(n+1) ASL #8,D7 ASL #8,D5 MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \50:CMP.L A6,A3 BCC.S \48;fin buffer \47:TST (SP) BPL.S \62 ROR #8,D6;format Intel ROR #8,D4 \62:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \49 BRA \6 \48:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \47 ;cas ou frquence cible < frquence source ; => diminution de la longueur \46:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \53:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE.B (A3)+,D6;chantillon 8 bits voie gauche x(n) MOVE.B (A3)+,D4;chantillon 8 bits voie droite x(n) ASL #8,D6 ASL #8,D4 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \54 ADD A5,A3 MOVE.B (A3)+,D7;chantillon 8 bits voie gauche x(n+1) MOVE.B (A3)+,D5;chantillon 8 bits voie droite x(n+1) ASL #8,D7 ASL #8,D5 MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \54:CMP.L A6,A3 BCC.S \52;fin buffer \51:TST (SP) BPL.S \63 ROR #8,D6;format Intel ROR #8,D4 \63:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \53 BRA \6 \52:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \51 ;pas de rchantillonnage \44:CMP #4,OCT_ECH BEQ \27;16 bits stro MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 TST (SP) BMI \64;format Intel BRA \56 \55:CMP.L A6,A0 BCC.S \57;fin de buffer MOVE.B (A0)+,D6 MOVE.B (A0)+,D4 ADD A5,A0 ASL #8,D6 ASL #8,D4 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ \56:SUBQ.L #1,D3 BPL.S \55 BRA \6 \57:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \55 \74:CMP.L A6,A0 BCC.S \75;fin de buffer MOVE.B (A0)+,D6 MOVE.B (A0)+,D4 ADD A5,A0 ASL #8,D6 ASL #8,D4 ROR #8,D6;format Intel ROR #8,D4 MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ \64:SUBQ.L #1,D3 BPL.S \74 BRA \6 \75:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \74 ;16 bits mono \58:MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 CMP.L D6,D7 BCS \22;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \19:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \20 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits mono x(n+1) MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \20:CMP.L A6,A3 BCC.S \21;fin buffer \18:TST (SP) BPL.S \65 ROR #8,D6;format Intel \65:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \19 BRA \6 \21:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \18 ;cas ou frquence cible < frquence source ; => diminution de la longueur \22:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \23:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits mono x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \24 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits mono x(n+1) MULS D0,D7 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 ADD.L D7,D6 ADD.L D6,D6 SWAP D6 \24:CMP.L A6,A3 BCC.S \25;fin buffer \26:TST (SP) BPL.S \66 ROR #8,D6;format Intel \66:MOVE D6,(A2)+;lecture en 16 bits streo MOVE D6,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \23 BRA \6 \25:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \26 ;pas de rchantillonnage \43:MOVE TRACK,D1 ADD D1,A0 ADD D1,A0 MOVE NB_TRACKS,A5 ADD A5,A5 BRA.S \28 \29:CMP.L A6,A0 BCC.S \30;fin de buffer MOVE (A0)+,D6 ADD A5,A0 TST (SP) BPL.S \67 ROR #8,D6;format Intel \67:MOVE D6,(A2)+;lecture en 16 bits streo MOVE D6,(A2)+ \28:SUBQ.L #1,D3 BPL.S \29 BRA \6 \30:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #1,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \29 ;16 bits stro \17:MOVE TRACK,D1 ASL #2,D1 ADD D1,A0 MOVE NB_TRACKS,D1 ASL #2,D1 MOVE D1,A5 CMP.L D6,D7 BCS \11;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S ADD.L D0,D0;*2 => 2^31 sinon pb signe MOVEQ #0,D1 MOVE NB_TRACKS,D1 INC D1 JSR MUL32_32 MOVE.L D0,D1 MOVEQ #0,D2 MOVEQ #0,D3 \9:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \10 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \10:CMP.L A6,A3 BCC.S \12;fin buffer \16:TST (SP) BPL.S \68 ROR #8,D6;format Intel ROR #8,D4 \68:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A2 BCS.S \9 BRA \6 \12:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \16 ;cas ou frquence cible < frquence source ; => diminution de la longueur \11:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 ROL.L #8,D1 AND.L #$FF,D1;poids fort JSR MUL64_TRACKS MOVE.L D0,A4;poids faible MOVEQ #0,D2 MOVEQ #0,D3 \13:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \14 ADD A5,A3 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \14:CMP.L A6,A3 BCC.S \15;fin buffer \3:TST (SP) BPL.S \69 ROR #8,D6;format Intel ROR #8,D4 \69:MOVE D6,(A2)+;lecture en 16 bits stro MOVE D4,(A2)+ ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A2 BCS.S \13 BRA \6 \15:ADD A5,A3 MOVE.L A3,ADR BTST #1,STATUS+1 BEQ \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA \3 ;pas de rchantillonnage \27:MOVE TRACK,D1 ASL #2,D1 ADD D1,A0 MOVE NB_TRACKS,D1 ASL #2,D1 MOVE D1,A5 TST (SP) BMI.S \72;format Intel BRA.S \4 \2:CMP.L A6,A0 BCC.S \7;fin de buffer MOVE.L (A0)+,(A2)+;lecture en 16 bits str ADD A5,A0 \4:SUBQ.L #1,D3 BPL.S \2 BRA \6 \7:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ.S \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \2 \70:CMP.L A6,A0 BCC.S \73;fin de buffer MOVEM (A0)+,D4/D6 ADD A5,A0 ROR #8,D4;format Intel ROR #8,D6 MOVE D4,(A2)+;lecture en 16 bits stro MOVE D6,(A2)+ \72:SUBQ.L #1,D3 BPL.S \70 BRA.S \6 \73:MOVE.L A0,ADR BTST #1,STATUS+1 BEQ.S \5;lecture sans rptition BSR SWAP_ADR MOVE.L ADR_DEBUT,A0 MOVE TRACK,D0 ASL #2,D0 ADD D0,A0 MOVE.L ADR_FIN,A6 BRA.S \70 \5:AND #$FFFC,STATUS;arrt lecture DMA BSR SDL_UNLOCKAUDIO MOVEQ #0,D0 BSR ENDSOUND BSR SDL_CLOSEAUDIO CLR D_OPEN_SDL MOVE.L ADR_FIN,ADR ADDQ.L #1,COMPT_BLOC BRA.S \1 \6:MOVE.L A0,ADR ADDQ.L #1,COMPT_BLOC BSR SDL_UNLOCKAUDIO \1:ADDQ #2,SP MOVEM.L (SP)+,D0-A6 RTE CONV_ECH:;D0: source, D1: fin source, D2: index bloc cible MOVEM.L D1-D6/A0-A2,-(SP) MOVE.L D0,A1;source dbut MOVE.L D1,D4;fin source CMP #NB_BUFFERS,D2 BHI.S \5 SUB.L A1,D4;taille en octets BGT.S \6 \5:MOVEQ #0,D0;plus d'chantillons BRA \1 \6:MOVEQ #0,D0 MOVE D2,D0;index bloc cible MOVE.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,D1 BSR MUL32_32 MOVE.L D0,D6;offset bloc cible LEA TAB_BUFFERS,A2 MOVEQ #0,D5 MOVE OCT_ECH,D5 MOVE.L D4,D0 MOVE NB_TRACKS,D1 INC D1 MULU D5,D1 BSR DIV32_32 MOVE.L D0,D4;nbre chantillons CMP.L #TAILLE_BUFFER/4,D4 BLE.S \7 ;taille des chantillons suprieure la taille du bloc MOVE.L #TAILLE_BUFFER/4,D4 MOVE.L D4,D0 MOVE NB_TRACKS,D1 INC D1 MULU D5,D1 BSR MUL32_32;nbre d'octets max par buffer ADD.L A1,D0;+ dbut buffer DMA MOVE.L D0,ADR_SUITE BRA.S \8 \7:CLR.L ADR_SUITE \8:MOVE.L D4,D0;nbre d'chantillons 16 bits stro MOVE.L D0,22(A2,D6.L);numSamples MOVE.L (A2,D6.L),A0;cible MOVE OCT_ECH,D2 SUBQ #2,D2 BEQ.S \3;8 bits stro ou 16 bits mono SUBQ #2,D2 BEQ.S \4;16 bits stro ;8 bits mono BSR CONV_MONO_8 BRA.S \2 ;8 bits stro \3:CMP #1,NB_VOIES BEQ.S \9 BSR CONV_STEREO_8 BRA.S \2 ;16 bits mono \9:BSR CONV_MONO_16 BRA.S \2 ;16 bits stro \4:BSR CONV_STEREO_16 \2:SUB.L A1,D0;adresse fin - adresse dbut = offset DMA \1:MOVEM.L (SP)+,D1-D6/A0-A2 RTS CONV_MONO_8: MOVEM.L D1-D2/A0-A1,-(SP) ADD TRACK,A1 MOVE NB_TRACKS,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 ASL #8,D2 MOVE D2,(A0)+ MOVE D2,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D2/A0-A1 RTS CONV_STEREO_8: MOVEM.L D1-D3/A0-A1,-(SP) MOVE TRACK,D1 ADD D1,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ADD D1,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 ASL #8,D2 MOVE.B (A1)+,D3 ASL #8,D3 MOVE D2,(A0)+ MOVE D3,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D3/A0-A1 RTS CONV_MONO_16: MOVEM.L D1-D2/A0-A1,-(SP) MOVE TRACK,D1 ADD D1,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ADD D1,D1 BRA.S \2 \1:MOVE.B (A1)+,D2 MOVE D2,(A0)+ MOVE D2,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1-D2/A0-A1 RTS CONV_STEREO_16: MOVEM.L D1/A0-A1,-(SP) MOVE TRACK,D1 ASL #2,D1 ADD D1,A1 MOVE NB_TRACKS,D1 ASL #2,D1 BRA.S \2 \1:MOVE.L (A1)+,(A0)+ ADD D1,A1 \2:SUBQ.L #1,D0 BPL.S \1 MOVE.L A1,D0 MOVEM.L (SP)+,D1/A0-A1 RTS RECH_FREQ_REC:;frquence demande dans D0 ;au retour frquence approche dans D0 au format MAC (frequence * 65536) MOVEM.L D1-D3/A0-A1,-(SP) LEA TAB_FREQ_REC,A0 MOVE NB_FREQ_REC,D1 BNE.S \4;liste frquences enregistrement supportes ;mini et maxi frquences enregistrement supports CMP (A0),D0 BCC.S \2 MOVE.L (A0),D0;mini BRA.S \1 \2:CMP 4(A0),D0 BCS.S \3 MOVE.L 4(A0),D0;maxi BRA.S \1 \3:SWAP D0 CLR D0 BRA.S \1 \4:DEC D1 MOVEQ #-1,D3;mini MOVE.L A0,A1 \5:MOVEQ #0,D2 MOVE (A0),D2 SUB.L D0,D2;recherche frquence approche parmi ceux disponibles BPL.S \7 NEG.L D2 \7:CMP.L D3,D2 BCC.S \6 MOVE.L D2,D3 MOVE.L A0,A1 \6:ADDQ #4,A0 DBRA D1,\5 MOVE.L (A1),D0 \1:MOVEM.L (SP)+,D1-D3/A0-A1 RTS SWAP_ADR_REC: MOVE.L D0,-(SP) MOVEQ #0,D0 MOVE STATUS,D0 LSR #2,D0 BSR ENDSOUND_REC TST D_SETBUFF_REC BEQ.S \1;pas de nouvelle adresse => bouclage DMA MOVE.L NEW_ADR_DEBUT_REC,ADR_DEBUT_REC;prise en compte des nouvelles adresses DMA de SETBUFFER MOVE.L NEW_ADR_FIN_REC,ADR_FIN_REC CLR D_SETBUFF_REC MOVE.L #-1,COMPT_BLOC_REC;compteur buffer MAC \1:MOVE.L (SP)+,D0 RTS INTER_REC:;sous MACOS, A1: buffer, D1.L: taille buffer MOVEM.L D0-A6,-(SP) BTST #2,STATUS+1 BEQ \1;arrt enregistrement MOVE.L D1,D3;taille MOVE.L A1,A0;adresse chantillons source ADD.L D3,A1;adresse de fin source MOVE.L ADR_REC,A2;adresse cible MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE NB_TRACKS_REC,D0 ASL #2,D0 MOVE D0,A5 MOVE.L ADR_FIN_REC,A6 MOVEQ #0,D6 MOVE FREQ_REC,D6;frquence source format MAC poids fort MOVE.L FREQUENCE,D7;frquence cible CMP.L D6,D7 BEQ \8;frquences identiques => pas de rchantillonnage BCS \11;diminution de la longueur ;cas ou frquence cible > frquence source ; => augmentation de la longueur MOVEQ #0,D0 MOVE.L D6,D1;frquence source LSR.L #1,D1 ROXR.L #1,D0 MOVE.L D7,D2;rapport = frquence source * 2^31 / frquence cible JSR DIV64_32S MOVE.L D0,D1 ADD.L D1,D1;*2 => 2^31 sinon pb signe MOVEQ #0,D2 MOVEQ #0,D3 \9:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) CMP.L A1,A3 BCC \6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \10 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \10:CMP.L A6,A2 BCC.S \12;fin buffer \16:MOVE D6,(A2)+;enregistrement en 16 bits stro MOVE D4,(A2)+ ADD A5,A2 MOVEQ #0,D0 ADD.L D1,D2;pas ADDX.L D0,D3 CMP.L A1,A3 BCS.S \9 BRA \6 \12:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA.S \16 ;cas ou frquence cible < frquence source ; => diminution de la longueur \11:MOVEQ #0,D0 MOVE.L D6,D1;frquence source MOVE.L D7,D2 ASL.L #8,D2;rapport = frquence source * 2^31 / frquence cible * 2^8 JSR DIV64_32S MOVE.L D0,D1 ASL.L #8,D0 MOVE.L D0,A4;poids faible ROL.L #8,D1 AND.L #$FF,D1;poids fort MOVEQ #0,D2 MOVEQ #0,D3 \13:MOVE.L A0,A3;adresse dbut source ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 ADD.L D3,A3 MOVE (A3)+,D6;chantillon 16 bits voie gauche x(n) MOVE (A3)+,D4;chantillon 16 bits voie droite x(n) CMP.L A1,A3 BCC \6 MOVE.L D2,D0 SWAP D0 LSR #1,D0;1-32767 BEQ.S \14 MOVE (A3)+,D7;chantillon 16 bits voie gauche x(n+1) MOVE (A3)+,D5;chantillon 16 bits voie droite x(n+1) MULS D0,D7 MULS D0,D5 NEG D0 BCLR #15,D0;1-32767 MULS D0,D6 MULS D0,D4 ADD.L D7,D6 ADD.L D5,D4 ADD.L D6,D6 ADD.L D4,D4 SWAP D6 SWAP D4 \14:CMP.L A6,A2 BCC.S \15;fin buffer \3:MOVE D6,(A2)+;enregistrement en 16 bits stro MOVE D4,(A2)+ ADD A5,A2 ADD.L A4,D2;pas ADDX.L D1,D3 CMP.L A1,A3 BCS.S \13 BRA \6 \15:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA \3 ;pas de rchantillonnage \8:LSR.L #2,D3;/4 BRA \4 \5:AND #$FFF3,STATUS;arrt enregistrement DMA MOVE.L RETOUR,-(SP) MOVEQ #0,D0 BSR ENDSOUND_REC BSR SPBSTOPRECORDING MOVE.L (SP)+,RETOUR MOVE.L ADR_FIN_REC,A2 BRA.S \6 \2:CMP.L A6,A2 BCC.S \7;fin de buffer MOVE.L (A0)+,(A2)+;enregistrement en 16 bits stro ADD A5,A2 \4:SUBQ.L #1,D3 BPL.S \2 BRA.S \6 \7:MOVE.L A2,ADR_REC BTST #3,STATUS+1 BEQ.S \5;enregistrement sans rptition BSR SWAP_ADR_REC MOVE.L ADR_DEBUT_REC,A2 MOVE TRACK,D0 ASL #2,D0 ADD D0,A2 MOVE.L ADR_FIN_REC,A6 BRA.S \2 \6:MOVE.L A2,ADR_REC ADDQ.L #1,COMPT_BLOC_REC \1:MOVEM.L (SP)+,D0-A6 RTS SWAP_ADR: MOVE.L D0,-(SP) MOVEQ #3,D0 AND STATUS,D0 BSR ENDSOUND TST D_SETBUFF BEQ.S \1;pas de nouvelle adresse => bouclage DMA MOVE.L NEW_ADR_DEBUT,ADR_DEBUT;prise en compte des nouvelles adresses DMA de SETBUFFER MOVE.L NEW_ADR_FIN,ADR_FIN CLR D_SETBUFF MOVE.L #-1,COMPT_BLOC;compteur buffer MAC/SDL \1:MOVE.L (SP)+,D0 RTS CALLBACK16:;sous MACOS MOVEM.L D3/A2-A4,-(SP) MOVE.L $18(SP),A4;structure channel MOVE.L $14(SP),A2 MOVE 2(A2),D0;index buffer BGE.S \2 AND #$FFFC,STATUS;arrt lecture DMA BRA \1 \2:BTST #0,STATUS+1 BEQ \6;arrt lecture BTST #1,STATUS+1 BEQ.S \4;lecture sans rptition ;rptition lecture DMA MOVE.L ADR_SUITE,D0 BNE.S \5;suite du buffer DMA BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,ADR_SUITE BRA.S \5 ;lecture DMA sans rptition \4:MOVE.L ADR_SUITE,D0 BEQ.S \6;plus d'autre chantillon => arrt lecture \5:TST.L D0 BMI \1;invalide MOVE.L ADR_FIN,D1 MOVE 2(A2),D2;index buffer BSR CONV_ECH BEQ.S \6;plus aucun chantillon => arrt lecture ADDQ.L #1,COMPT_BLOC;compteur buffer MAC MOVEQ #0,D0 MOVE 2(A2),D0;index buffer MOVE.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,D1 BSR MUL32_32 MOVE.L D0,D2 MOVE.L A4,A0;channel MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 ADD.L #TAB_BUFFERS,D2;buffer BSR MACSNDCMD MOVE.L A4,A0;channel MOVEQ #CALLBACKCMD,D0 MOVE 2(A2),D1;index MOVEQ #0,D2 BSR MACSNDCMD BRA.S \1 ;arrt lecture \6:TST.L COMPT_BLOC BPL.S \3 CLR.L COMPT_BLOC \3:CLR.L ADR_SUITE MOVE.L A4,A0;channel MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 MOVE.L #TAB_BUFFERS+((TAILLE_BUFFER+TAILLE_SOUND_HEADER)*NB_BUFFERS),D2;buffer vide arrt son BSR MACSNDCMD MOVE.L A4,A0;channel MOVEQ #CALLBACKCMD,D0 MOVEQ #-1,D1 MOVEQ #0,D2 BSR MACSNDCMD MOVEQ #0,D0 BSR ENDSOUND \1:MOVEM.L (SP)+,D3/A2-A4 DC.L $4E740008;RTD #8 CALCUL_FREQ: MOVEM.L D1/A0,-(SP) MOVEQ #0,D0 MOVE PRESCALE,D1 BEQ.S \2 CMP #11,D1 BHI.S \2 DEC D1;0-10 TST HORLOGE BEQ.S \3 ADDQ #3,D1 ADDQ #8,D1 TST HORLOGE2 BEQ.S \3 ADDQ #3,D1 ADDQ #8,D1 \3:ADD D1,D1 LEA TAB_NUM_FREQ_FALCON,A0 MOVE (A0,D1),D0 BRA.S \1 \2:MOVE PRESCALE_STE,D1 AND #3,D1 ADD D1,D1 LEA TAB_NUM_FREQ_STE,A0 MOVE (A0,D1),D0 \1:MOVEM.L (SP)+,D1/A0 RTS _SETEXEC: CMP #77,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG23 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #79,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG23 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _MFPINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG22 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG22 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L A0,VECT_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _JDISINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG19 MOVEM.L (SP)+,D0/A0 ENDIF CLR D_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG19 MOVEM.L (SP)+,D0/A0 ENDIF CLR D_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _JENABINT: CMP #13,D0;timer A BNE.S \2 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG20 MOVEM.L (SP)+,D0/A0 ENDIF ST.B D_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #15,D0;IO7 BNE.S \3 IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG20 MOVEM.L (SP)+,D0/A0 ENDIF ST.B D_IO7 MOVEQ #0,D0 BRA.S \1 \3:MOVEQ #1,D0 \1:RTS _XBTIMER: TST D0 BNE.S \1;<> timer A IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG21 MOVEM.L (SP)+,D0/A0 ENDIF TST D1 BNE.S \2;<> arrt CLR COUNT_TIMER_A CLR D_INIT_TIMER_A CLR.L VECT_TIMER_A MOVEQ #0,D0 BRA.S \1 \2:CMP #8,D1 BNE.S \1;<> event count mode AND #$FF,D2 MOVE D2,COUNT_TIMER_A;data = nbre de rptitions MOVE D2,D_INIT_TIMER_A MOVE.L A0,VECT_TIMER_A MOVEQ #0,D0 \1:RTS _LOCKSND: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG6 MOVEM.L (SP)+,D0/A0 ENDIF TST D_SND_LOCK BEQ.S \1 MOVEQ #-$80,D0;erreur BRA.S \2 \1:MOVEQ #1,D0 MOVE D0,D_SND_LOCK \2:RTS _UNLOCKSND: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG7 MOVEM.L (SP)+,D0/A0 ENDIF TST D_SND_LOCK BNE.S \1 MOVE.L #$FFFFFF7F,D0 BRA.S \2 \1:MOVEQ #0,D0 MOVE D0,D_SND_LOCK \2:RTS _SOUNDCMD: IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG8 PRINTLINE -6(A6) CONOUT #" " MOVEQ #0,D0 MOVE (SP)+,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEM.L D3-D4,-(SP) CMP #LTATTEN,D0;mode BEQ.S \10 CMP #RTATTEN,D0 BEQ.S \7 CMP #LTGAIN,D0 BEQ \16 CMP #RTGAIN,D0 BEQ \17 CMP #ADDERIN,D0 BEQ \15 CMP #ADCINPUT,D0 BEQ \20 CMP #SETPRESCALE,D0 BEQ \4 CMP #SETSMPFREQ,D0 BEQ \11;SETSMPFREQ valid par bit 5 du cookie '_SND' CMP #8,D0 BEQ \13;SETFMT8BITS valid par bit 5 du cookie '_SND' CMP #9,D0 BEQ \14;SETFMT16BITS valid par bit 5 du cookie '_SND' ;10: SETFMT24BITS, 11: SETFMT32BITS 12-25: ATTCONTROLS ;valids par bit 5 du cookie '_SND' BRA \2;non reconnu ;ltatten \10:LEA VOLUMES,A0 TST D1;data voie gauche BPL.S \9 MOVE (A0),D0;valeur courante BRA \6 \9:MOVE #255,D4 SUB D1,D4;data voie gauche MOVE D4,(A0) BRA.S \8 ;rtatten \7:LEA VOLUMES,A0 TST D1;data voie droite BPL.S \5 MOVE 2(A0),D0;valeur courante BRA.S \6 \5:MOVE #255,D4 SUB D1,D4;data voie droite MOVE D4,2(A0) \8:TST D_MAC BNE.S \34;MagiCMac MOVE (A0)+,D2;voie gauche ADD (A0),D2;voie droite LSR #1,D2 TST D_SDL BNE.S \35 NEG D2 ADD #255,D2 LSR #6,D2;4 niveaux MOVE D2,VOLUME;3-2-1-0 MOVE D4,D0 BRA.S \6 \35:MOVE D2,D0 LSR #1,D0;0-127 BSR SDL_AUDIOVOLUME BRA.S \6 \34:MOVE 2(A0),D2;voie droite SWAP D2 MOVE (A0),D2;voie gauche IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG104 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #VOLUMECMD,D0 MOVEQ #0,D1 BSR ISNDCMD MOVE D4,D0 \6:NEG D0 ADD #255,D0 AND #$F0,D0 BRA \1 ;ltgain \16:LEA GAINS,A0 TST D1;data voie gauche BMI.S \18 MOVE D1,D4 MOVE D4,(A0);voie gauche BRA \21 ;rtgain \17:LEA GAINS,A0 TST D1;data voie droite BPL \19 \18:MOVE D0,-(SP);mode MOVEQ #0,D0 MOVEQ #0,D1 TST NB_INDEV BEQ.S \25 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG158 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siStereoInputGain,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 MOVEM.L INFODATA,D0-D1 MOVE #255,D3 MOVE.L #$10000,D4 SUB.L D4,D0 BPL.S \22 MOVEQ #0,D0 \22:LSR.L #7,D0;/128 CMP D3,D0 BCS.S \23 MOVE D3,D0 \23:SUB.L D4,D1 BPL.S \24 MOVEQ #0,D1 \24:LSR.L #7,D1;/128 CMP D3,D1 BCS.S \25 MOVE D3,D1 \25:LEA GAINS,A0 MOVEM D0-D1,(A0) CMP #LTGAIN,(SP)+ BEQ \1 EXG D0,D1 BRA \1 \19:MOVE D1,D4 MOVE D4,2(A0);voie droite \21:MOVE D0,-(SP);mode MOVEQ #0,D0 MOVEQ #0,D1 TST NB_INDEV BEQ.S \25 MOVEM (A0),D0-D1 ASL.L #7,D0;*128 ASL.L #7,D1 ADD.L #$10000,D0 ADD.L #$10000,D1 MOVEM.L D0-D1,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG158 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siStereoInputGain,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 ADDQ #2,SP MOVEQ #0,D0 MOVE D4,D0 BRA \1 ;adderin \15:TST NB_INDEV BEQ \30 TST D1;data BPL.S \31 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \30;erreur BRA.S \32 \31:MOVEQ #0,D0 BTST #0,D1;ADC sur DAC (B0) BEQ.S \33 MOVEQ #7,D0 \33:MOVE D0,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG157 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siPlayThruOnOff,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \30;erreur \32:MOVE INFODATA,D0 BNE.S \30 MOVEQ #2,D0;Matrice BRA \1 \30:MOVEQ #3,D0;ADC (B0) et Matrice (B1) BRA \1 ;adcinput \20:TST NB_INDEV BEQ \27 TST D1;data BPL.S \26 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG120 PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBGETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \27;erreur BRA.S \28 \26:MOVE INFOS_COOKIE+4,INSOURCE MOVEQ #1,D0 AND #3,D1;data BNE.S \29 MOVE INSOURCE,D0 \29:MOVE D0,INFODATA IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 PRINTLINE DEBUG150 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L #siInputSource,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE.S \27;erreur \28:MOVE INFODATA,D0 CMP INSOURCE,D0 BEQ.S \27 MOVEQ #3,D0;ADC input sur PSG BRA.S \1 \27:MOVEQ #0,D0;ADC input sur microphone BRA.S \1 ;prescale \4:TST D1;data BMI.S \3 MOVE D1,PRESCALE_STE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE \3:MOVEQ #0,D0 MOVE PRESCALE_STE,D0 BRA.S \1 ;setsmpfreq \11:CMP #-1,D1;data BEQ.S \12 MOVEQ #0,D0 MOVE D1,D0 MOVE.L D0,FREQUENCE \12:MOVE.L FREQUENCE,D0 BRA.S \1 ;setfmt8bits \13:MOVEQ #1,D0;signed BRA.S \1 ;setfmt16bits \14:MOVEQ #5,D0;signed motorola big endian BRA.S \1 \2:MOVEQ #0,D0 \1:MOVEM.L (SP)+,D3-D4 RTS _SETBUFFER: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG9 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BNE \8;enregistrement MOVEQ #1,D0 AND STATUS,D0 MOVE D0,D_SETBUFF BNE.S \5;DMA en activit CLR.L ADR_SUITE MOVE.L D1,ADR_DEBUT;dmarrage MOVE.L D1,ADR_FIN BRA.S \6 \5:MOVE.L D1,NEW_ADR_DEBUT;pour prise en compte au changement de buffer DMA MOVE.L D1,NEW_ADR_FIN \6:MOVE.L D2,D0 SUB.L D1,D0 TST.L D0 BGT.S \2 \3:MOVEQ #1,D0;erreur BRA \1 \2:IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVE.L D1,D0 MOVEQ #10,D1 BSR CONV_DECI PRINTLINE DEBUG112 PRINTLINE -12(A6) CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L D2,D0 BSR CONV_DECI PRINTLINE DEBUG113 PRINTLINE -12(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #1,D0 AND STATUS,D0 BNE.S \4;lecture DMA en activit MOVE.L D2,ADR_FIN BRA \7 \4:MOVE.L D2,NEW_ADR_FIN BRA \7 \8:TST NB_INDEV BEQ \3;erreur CMP #1,D0;enregistrement BNE \3;erreur MOVEQ #4,D0 AND STATUS,D0 MOVE D0,D_SETBUFF_REC BNE.S \9;DMA en activit MOVE.L D1,ADR_DEBUT_REC;dmarrage MOVE.L D1,ADR_FIN_REC BRA.S \10 \9:MOVE.L D1,NEW_ADR_DEBUT_REC;pour prise en compte au changement de buffer DMA MOVE.L D1,NEW_ADR_FIN_REC \10:MOVE.L D2,D0 SUB.L D1,D0 TST.L D0 BLE \3;erreur IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVE.L D1,D0 MOVEQ #10,D1 BSR CONV_DECI PRINTLINE DEBUG112 PRINTLINE -12(A6) CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L D2,D0 BSR CONV_DECI PRINTLINE DEBUG113 PRINTLINE -12(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #4,D0 AND STATUS,D0 BNE.S \12;enregistrement DMA en activit MOVE.L D2,ADR_FIN_REC BRA.S \7 \12:MOVE.L D2,NEW_ADR_FIN_REC \7:MOVEQ #0,D0;OK \1:RTS _SETMODE: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG11 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ.S \6;8 bits stro CMP #1,D0 BEQ.S \5;16 bits stro CMP #2,D0 BEQ.S \4;8 bits mono CMP #3,D0 BEQ.S \3;16 bits mono, n'existe pas avec le XBIOS du FALCON MOVEQ #1,D0;erreur BRA.S \1 \6:MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro => 2 octets/chantillon BRA.S \2 \5:MOVE #2,NB_VOIES MOVE #4,OCT_ECH;16 bits stro => 4 octets/chantillons BRA.S \2 \4:MOVEQ #1,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits mono => 1 octet/chantillon BRA.S \2 \3:MOVE #1,NB_VOIES MOVE #2,OCT_ECH;16 bits mono => 2 octets/chantillon \2:MOVEQ #0,D0;OK \1:RTS _SETTRACKS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG17 MOVEM.L (SP)+,D0/A0 ENDIF AND #3,D0 MOVE D0,NB_TRACKS AND #3,D1 MOVE D1,NB_TRACKS_REC MOVEQ #0,D0;OK RTS _SETMONTRACKS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG17 MOVEM.L (SP)+,D0/A0 ENDIF AND #3,D0 MOVE D0,TRACK MOVEQ #0,D0;OK RTS _SETINTERRUPT: IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG15 PRINTLINE -6(A6) CONOUT #" " MOVEQ #0,D0 MOVE (SP)+,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF CMP #2,D0;src_inter valid par bit 5 du cookie '_SND' et le cookie 'GSXB' BNE.S \4 CLR CAUSE_INTER TST D1;cause BEQ.S \2;disable interrupt CMP #1,D1 BEQ.S \5;int_addr called on eof DAC interrupts CMP #2,D1 BEQ.S \7;int_addr called on eof ADC interrupts CMP #3,D1 BEQ.S \3;int_addr called on eof DAC/ADC interrupts \8:MOVEQ #1,D0;erreur BRA.S \1 \4:BHI.S \8;erreur CMP #3,D1 BHI.S \8;erreur MOVE D1,CAUSE_INTER TST D0;src_inter BEQ.S \6;timer A BSET #7,CAUSE_INTER;mfp BRA.S \6 \5:MOVE.L D2,INTH_ADDR BRA.S \6 \2:MOVEQ #0,D2 \3:MOVE.L D2,INTH_ADDR \7:MOVE.L D2,INTH_ADDR_REC \6:MOVEQ #0,D0;OK \1:RTS _BUFFOPER: MOVEM.L D3-D4/A3,-(SP) IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVE D1,-(SP) AND.L #$FFFF,D0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE DEBUG10 PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF TST D0;mode BPL \6 IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) PRINTLINE DEBUG111 LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE STATUS,D0 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF MOVEQ #0,D0 MOVE STATUS,D0;tat BRA \1 \6:TST NB_INDEV BEQ \5;test lecture MOVE D0,-(SP) BTST #2,D0;enregistrement DMA BEQ \11 ;enregistrement DMA BTST #2,STATUS+1;enregistrement DMA BNE \10;DMA dja en marche CLR.L COMPT_BLOC_REC;compteur buffer MAC IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG121 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L FREQUENCE,D0 BSR RECH_FREQ_REC MOVE.L D0,FREQ_REC MOVE.L D0,INFODATA MOVE.L #siSampleRate,INFOTYPE LEA SPBSETDEVICEINFO,A0 BSR CALLMACFUNCTION2 BNE \10;erreur IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG122 MOVEM.L (SP)+,D0/A0 ENDIF LEA INPARAMPTR,A1 MOVE.L ADR_DEBUT_REC,ADR_REC MOVE.L INREFNUM,_INREFNUM(A1) CLR.L _COUNTREC(A1) CLR.L _MILLISECONDS(A1) CLR.L _BUFFERLENGTH(A1) CLR.L _BUFFERPTR(A1) CLR.L _COMPLEXIONROUTINE(A1) LEA INTER_REC,A0 MOVE.L A0,_INTERRUPTROUTINE(A1) CLR.L _USERLONG(A1) LEA SPBRECORD,A0 BSR CALLMACFUNCTION2 BNE.S \10;erreur MOVEQ #$C,D0 AND (SP),D0 AND #$FFF3,STATUS OR D0,STATUS;enregistrement DMA BRA.S \10 \11:BTST #2,STATUS+1;enregistrement DMA BEQ.S \10;DMA dj l'arrt AND #$FFF3,STATUS;arrt enregistrement DMA CLR D_SETBUFF_REC BSR STOP_RECORD \10:MOVE (SP)+,D0 \5:BTST #0,D0;lecture DMA BEQ \3;demande DMA l'arrt ;lecture DMA BTST #0,STATUS+1 BNE \8;DMA dja en marche MOVEQ #3,D1 AND D0,D1 AND #$FFFC,STATUS OR D1,STATUS CLR.L COMPT_BLOC;compteur buffer MAC/SDL TST D_MAC BNE \12;MagiCMac TST D_SDL BEQ.S \19 TST D_OPEN_SDL BNE \3 CLR D_INTEL_SDL MOVE.L FREQUENCE,D0 MOVE #AUDIO_S16MSN,D1 MOVEQ #2,D2;stro MOVE #TAILLE_BUFFER_SDL/4,D3 LEA TAB_BUFFERS,A0 BSR SDL_OPENAUDIO BMI \3;erreur CMP #AUDIO_S16MSN,D0 BEQ.S \18 CMP #AUDIO_S16LSB,D0 BNE \3;erreur ST.B D_INTEL_SDL \18:ST.B D_OPEN_SDL BSR SDL_GETAUDIOFREQ MOVE.L D0,FREQ_LECT MOVE.L ADR_DEBUT,ADR SETEXEC CALLBACK16_SDL,#29;INT5 MOVE.L D0,CALLBACK16_SDL-4 MOVEQ #0,D0 BSR SDL_PAUSEAUDIO;lance la lecture BRA \2 \19:MOVEQ #0,D1 CMP #2,NB_VOIES BEQ.S \14;stro CMP #2,OCT_ECH BEQ.S \16;16 bits mono BRA.S \15;8 bits mono \14:BSET #0,D1;stro CMP #4,OCT_ECH BNE.S \15 \16:BSET #1,D1;16 bits \15:MOVE.L FREQUENCE,D2 BTST #1,D0;rptition BEQ.S \13 BSET #6,D1;rptition \13:MOVE.L ADR_DEBUT,A0 MOVE.L ADR_FIN,D0 SUB.L A0,D0 TIMER_OUTPUT D1,D2,(A0),D0 BRA \2 \12:MOVE.L #-1,ADR_SUITE;invalide BSR STOP_SOUND IFNE 0,DEBUG MOVEM.L D0/D1/A0,-(SP) PRINTLINE DEBUG112 LINK A6,#-12 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L ADR_DEBUT,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG113 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L ADR_FIN,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG114 CLR -2(A6) LEA -12(A6),A0 MOVEQ #10,D1 MOVE.L FREQUENCE,D0 BSR CONV_DECI PRINTLINE -12(A6) PRINTLINE DEBUG115 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE OCT_ECH,D0 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D0/D1/A0 ENDIF LEA TAB_BUFFERS,A3 MOVE.L ADR_DEBUT,D4 MOVEQ #0,D3;index bloc \4:CMP #1,D3 BCS.S \9;1er bloc vide MOVE.L D4,D0;offset bloc MOVE.L ADR_FIN,D1 MOVE D3,D2;index bloc cible BSR CONV_ECH BEQ \7;plus d'chantillons ADD.L D0,D4 \9:MOVE.L FREQUENCE,D1 SWAP D1 MOVE.L D1,8(A3);frquence * 65536 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG102 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #BUFFERCMD,D0;joue le son MOVEQ #0,D1 MOVE.L A3,D2;buffer BSR SNDCMD IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG103 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #CALLBACKCMD,D0 MOVE D3,D1;index bloc MOVEQ #0,D2 BSR SNDCMD ADD.L #TAILLE_BUFFER+TAILLE_SOUND_HEADER,A3 INC D3 CMP #NB_BUFFERS,D3 BCS \4 MOVE.L FREQUENCE,D1 SWAP D1 MOVE.L D1,8(A3);frquence * 65536 buffer vide arrt son BRA.S \2 \7:TST D3 BNE.S \2 AND #$FFFC,STATUS;arrt lecture DMA si plus d'chantillons au 1er bloc BRA.S \2 ;DMA l'arrt \3:AND #$FFFC,STATUS;arrt lecture DMA TST D_MAC BEQ.S \17;<> MagiCMac BTST #1,D0 BNE.S \2;DMA en rptition \17:CLR D_SETBUFF BSR STOP_SOUND \2:IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG110 MOVEM.L (SP)+,D0/A0 ENDIF \8:MOVEQ #0,D0;OK \1:MOVEM.L (SP)+,D3-D4/A3 RTS _GPIO: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG16 MOVEM.L (SP)+,D0/A0 ENDIF CMP #1,D0;mode: lecture BNE.S \2 MOVEQ #1,D0 AND.B HORLOGE2,D0;GPIO0=0 44.1KHz BSET #1,D0;GPIO1=1 Quartz BRA.S \1 \2:CMP #2,D0;mode: criture BNE.S \1 BTST #0,D1;data B0: 0: horloge 22.5792 Mhz pour 44.1KHz, 1: horloge 24,576 MHz pour 48KHZ SNE.B HORLOGE2 \1:MOVEQ #0,D0;OK RTS _DEVCONNECT: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG12 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ.S \4;source = restitution DMA TST NB_INDEV BEQ.S \3;erreur CMP #3,D0 BEQ.S \4;source = ADC CMP #2,D2;srcclk BCS.S \3;horloge 25.175 Mhz (0) ou horloge externe (1) MOVE D2,HORLOGE MOVE 4(SP),PRESCALE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE BRA.S \3 \4:CMP #2,D2;srcclk BCS.S \2;horloge 25.175 Mhz (0) ou horloge externe (1) ;horloge 32 MHz \3:MOVEQ #1,D0;erreur BRA.S \1 \2:MOVE D2,HORLOGE MOVE 4(SP),PRESCALE BSR CALCUL_FREQ MOVE.L D0,FREQUENCE IFNE 0,DEBUG MOVEM.L D1/A0,-(SP) LINK A6,#-6 CLR -2(A6) LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) UNLK A6 MOVEM.L (SP)+,D1/A0 ENDIF MOVEQ #0,D0;OK \1:RTS _SNDSTATUS: IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG13 MOVEM.L (SP)+,D0/A0 ENDIF TST D0 BEQ \1;status CMP #1,D0 BEQ.S \2;reset CMP #2,D0 BEQ \3;resolutions valid par bit 5 du cookie '_SND' CMP #3,D0 BEQ \6;MasterMix ;4: record sources, 5: duplex CMP #8,D0 BEQ \4;format8bits valid par bit 5 du cookie '_SND' CMP #9,D0 BEQ \5;format16bits valid par bit 5 du cookie '_SND' ;10: format24bits, 11: format32bits MOVEQ #0,D0 BRA \1 ;reset \2:BTST #2,STATUS+1;enregistrement DMA BEQ.S \7 BSR STOP_RECORD \7:CLR STATUS CLR D_SETBUFF CLR D_SETBUFF_REC BSR STOP_SOUND MOVEQ #LTATTEN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #RTATTEN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #LTGAIN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #RTGAIN,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD MOVEQ #ADDERIN,D0;mode MOVEQ #1,D1;data BSR _SOUNDCMD MOVEQ #ADCINPUT,D0;mode MOVEQ #0,D1;data BSR _SOUNDCMD CLR.L ADR_SUITE CLR.L ADR_FIN CLR.L ADR_DEBUT CLR.L NEW_ADR_DEBUT CLR.L NEW_ADR_FIN CLR.L ADR_FIN_REC CLR.L ADR_DEBUT_REC CLR.L NEW_ADR_DEBUT_REC CLR.L NEW_ADR_FIN_REC CLR PRESCALE CLR PRESCALE_STE CLR HORLOGE CLR HORLOGE2 CLR NB_TRACKS CLR NB_TRACKS_REC CLR TRACK CLR.L COMPT_BLOC;compteur buffer MAC MOVEQ #2,D0 MOVE D0,NB_VOIES MOVE D0,OCT_ECH;8 bits stro CLR.L INTH_ADDR;routine appele en fin lecture buffer DMA CLR.L INTH_ADDR_REC;routine appele en fin enregistrement buffer DMA CLR CAUSE_INTER;setinterrupt MOVEQ #0,D0 BRA.S \1 ;resolutions \3:MOVEQ #3,D0;8 & 16 bits BRA.S \1 ;MasterMix \6:MOVEQ #3,D0;DAC & ADC BRA.S \1 ;format8bits \4:MOVEQ #1,D0;signed BRA.S \1 ;format16bits \5:MOVEQ #5,D0;signed motorola big endian \1:RTS _BUFFPTR: MOVE.L D3,-(SP) IFNE 0,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG14 MOVEM.L (SP)+,D0/A0 ENDIF MOVE.L D0,A0 BTST #0,STATUS+1 BEQ \2;lecture DMA l'arrt TST D_MAC BNE.S \11;MagiCMac MOVE.L #TAILLE_BUFFER_SDL/4,D3 TST D_SDL BNE.S \12 MOVE.L ADRESSE,D1;adresse courante DMA (interruption timer A) BRA \4 \11:MOVE.L #TAILLE_BUFFER/4,D3 \12:MOVE.L D3,D1 MOVE.L COMPT_BLOC,D0;compteur buffer MAC/SDL SUBQ.L #1,D0 BPL.S \5 MOVEQ #0,D0 \5:MOVE.L D0,D2 BSR MUL32_32;offset buffer XBIOS en chantillons MOVE NB_TRACKS,D1 INC D1 MULU OCT_ECH,D1 BSR MUL32_32;nbre d'octets lecture DMA XBIOS MOVE.L D0,D1 ADD.L ADR_DEBUT,D1;+ adresse DMA dbut => adresse courante DMA BTST #1,STATUS+1 BEQ.S \4;pas de rptition MOVE.L ADR_FIN,D0 CMP.L D0,D1 BLE.S \4 SUB.L ADR_DEBUT,D1;dpassement + taille bloc SUBQ.L #1,D3 AND.L D3,D2;masque ASL.L #2,D2;COMPT_BLOC * 4 SUB.L D2,D1;vite de retourner la valeur prcdente en cas de bouclage DMA sur un petit buffer BPL.S \6 ADD.L D2,D1 \6:SUB.L ADR_DEBUT,D0;taille du bloc DMA EXG.L D0,D1 MOVEQ #0,D2;dpassement/taille bloc DMA <=> ADR_FIN - ADR_DEBUT DC.L $4C410402;DIVU.L D1,D2:D0;reste dans D2 MOVE.L D2,D1 ADD.L ADR_DEBUT,D1;adresse courante DMA \4:ADDQ.L #4,D1;pour GEMJing CMP.L ADR_FIN,D1 BLE.S \3 MOVE.L ADR_FIN,D1 BRA.S \1 \3:CMP.L ADR_DEBUT,D1 BGE.S \1 \2:MOVE.L ADR_DEBUT,D1 \1:MOVE.L D1,(A0)+;pointeur lecture TST NB_INDEV BEQ.S \8;pas d'enregistrement BTST #2,STATUS+1 BEQ.S \8;enregistrement DMA l'arrt MOVE.L ADR_REC,D1 BTST #3,STATUS+1 BEQ.S \10;pas de rptition MOVE.L COMPT_BLOC_REC,D2;compteur buffer MAC AND.L #(TAILLE_BUFFER/4)-1,D2 ASL.L #2,D2;COMPT_BLOC * 4 SUB.L D2,D1;vite de retourner la valeur prcdente en cas de bouclage DMA sur un petit buffer BPL.S \10 ADD.L D2,D1 \10:ADDQ.L #4,D1 CMP.L ADR_FIN_REC,D1 BLE.S \9 MOVE.L ADR_FIN_REC,D1 BRA.S \7 \9:CMP.L ADR_DEBUT_REC,D1 BGE.S \7 \8:MOVE.L ADR_DEBUT_REC,D1 \7:MOVE.L D1,(A0);pointeur enregistrement IFNE 0,DEBUG LINK A6,#-10 MOVEM.L D1/A0,-(SP) CLR -2(A6) MOVE.L -4(A0),D0 SUB.L ADR_DEBUT,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE DEBUG117 PRINTLINE -10(A6) MOVE.L ADR_FIN,D0 SUB.L ADR_DEBUT,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L COMPT_BLOC,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) MOVEM.L (SP),D1/A0 MOVE.L D1,D0 SUB.L ADR_DEBUT_REC,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L ADR_FIN_REC,D0 SUB.L ADR_DEBUT_REC,D0 LEA -10(A6),A0 MOVEQ #9,D1 BSR CONV_DECI PRINTLINE -10(A6) MOVE.L COMPT_BLOC_REC,D0 LEA -6(A6),A0 MOVEQ #5,D1 BSR CONV_DECI PRINTLINE -6(A6) LEA -6(A6),A0 MOVEQ #5,D1 MOVEQ #0,D0 MOVE STATUS,D0 BSR CONV_DECI PRINTLINE DEBUG116 PRINTLINE -6(A6) MOVEM.L (SP)+,D1/A0 UNLK A6 ENDIF MOVE.L (SP)+,D3 MOVEQ #0,D0;OK RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_BIOS: MOVE.L USP,A0 BTST #5,(SP);appel en superviseur BEQ.S \2 LEA 6(SP),A0 TST PROC_TYPE BEQ.S \2 TST (A0)+;mot supplmentaire sur la pile si > 68000 \2:MOVE (A0)+,D0;fonction CMP #5,D0;setexec BNE.S \1 MOVE (A0)+,D0;num MOVE.L (A0),A0;vector BSR _SETEXEC BNE.S \1 TST D_MAC BEQ.S \1 RTE \1:MOVE.L DET_BIOS-4,-(SP) RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_XBIOS: MOVE.L USP,A0 BTST #5,(SP);appel en superviseur BEQ.S \14 LEA 6(SP),A0 TST PROC_TYPE BEQ.S \14 TST (A0)+;mot supplmentaire sur la pile si > 68000 \14:MOVE (A0)+,D0;fonction CMP #$D,D0;MFPINT BNE.S \22 MOVE (A0)+,D0;num MOVE.L (A0),A0;vector BSR _MFPINT BNE \13 BRA.S \23 \22:CMP #$1A,D0;JDISINT BNE.S \19 MOVE (A0),D0;num BSR _JDISINT BNE \13 BRA.S \23 \19:CMP #$1B,D0;JENABINT BNE.S \20 MOVE (A0),D0;num BSR _JENABINT BNE \13 BRA.S \23 \20:CMP #$1F,D0;XBTIMER BNE.S \21 MOVEM (A0),D0-D2;timer, control, data MOVE.L 6(A0),A0;vector BSR _XBTIMER BNE \13 \23:TST D_MAC BNE \1;MagiCMac TST D_TT BNE \13;routine d'origine bra \1 TST D_SND_LOCK BNE \1 BRA \13 \21:CMP #$80,D0;LOCKSND BCS \13 CMP #$8D,D0;BUFFPTR BHI \13 MOVE D0,D1 SUB #$80,D1 ADD D1,D1 MOVE \3(PC,D1),D1 JMP \3(PC,D1) \3:DC.W \4-\3;$80 LOCKSND DC.W \5-\3;$81 UNLOCKSND DC.W \6-\3;$82 SOUNDCMD DC.W \7-\3;$83 SETBUFFER DC.W \8-\3;$84 SETMODE DC.W \17-\3;$85 SETTRACKS DC.W \18-\3;$86 SETMONTRACKS DC.W \15-\3;$87 SETINTERRUPT DC.W \9-\3;$88 BUFFOPER DC.W \2-\3;$89 /DSPTRISTATE DC.W \16-\3;$8A GPIO DC.W \10-\3;$8B DEVCONNECT DC.W \11-\3;$8C SNDSTATUS DC.W \12-\3;$8D BUFFPTR \4:BSR _LOCKSND BRA \1 \5:BSR _UNLOCKSND BRA.S \1 \6:MOVEM (A0),D0-D1;mode, data BSR _SOUNDCMD BRA.S \1 \7:MOVE (A0)+,D0;reg MOVEM.L (A0),D1-D2;begaddr, endaddr BSR _SETBUFFER BRA.S \1 \8:MOVE (A0),D0;mode BSR _SETMODE BRA.S \1 \17:MOVEM (A0),D0-D1;playtracks, rectracks BSR _SETTRACKS BRA.S \1 \18:MOVE (A0),D0;track BSR _SETMONTRACKS BRA.S \1 \15:MOVE (A0)+,D0;src_inter MOVE (A0)+,D1;cause MOVE.L (A0)+,D2;int_adr BSR _SETINTERRUPT BRA.S \1 \9:MOVE (A0),D0;mode BSR _BUFFOPER BRA.S \1 \16:MOVEM (A0),D0-D1;mode, data BSR _GPIO BRA.S \1 \10:SUBQ #4,SP MOVE (A0)+,D0;src MOVE (A0)+,D1;dest MOVE (A0)+,D2;srcclk MOVE (A0)+,2(SP);prescale MOVE (A0),(SP);protocol MOVE (SP),-(SP) MOVE 4(SP),-(SP) BSR _DEVCONNECT ADDQ #8,SP BRA.S \1 \11:MOVE (A0),D0;reset BSR _SNDSTATUS BRA.S \1 \12:MOVE.L (A0),D0 BSR _BUFFPTR BRA.S \1 \2:MOVEQ #0,D0 \1:RTE \13:MOVE.L DET_XBIOS-4,-(SP) RTS RAZ_BUFFERS: MOVEM.L D0-D1/A0,-(SP) LEA TAB_BUFFERS,A0 MOVEQ #NB_BUFFERS-1,D1 \1:LEA TAILLE_SOUND_HEADER(A0),A0 MOVE.L #(TAILLE_BUFFER/4)-1,D0 \2:CLR.L (A0)+ DBRA D0,\2 DBRA D1,\1 MOVEM.L (SP)+,D0-D1/A0 RTS STOP_SOUND: TST D_MAC BNE.S \2;MagiCMac TST D_SDL BNE.S \1 BSR FIN_IRQ_PSG BRA.S \1 \2:IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG100 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #FLUSHCMD,D0;nettoyage canal MOVEQ #0,D1 MOVEQ #0,D2 BSR ISNDCMD IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG101 MOVEM.L (SP)+,D0/A0 ENDIF LEA CHANNEL,A0 MOVEQ #QUIETCMD,D0;arrt son MOVEQ #0,D1 MOVEQ #0,D2 BSR ISNDCMD BSR RAZ_BUFFERS \1:RTS STOP_RECORD: TST NB_INDEV BEQ.S \1 IFEQ 2,DEBUG MOVEM.L D0/A0,-(SP) PRINTLINE DEBUG123 MOVEM.L (SP)+,D0/A0 ENDIF LEA SPBSTOPRECORDING,A0 BSR CALLMACFUNCTION2 \1:RTS DC.L "XBRA" DC.L "MgSn" DC.L 0 DET_FIN_SON: CMP #2,D0 BNE.S \1 MOVEM.L D0-D7/A0-A6,-(SP) LEA CHANNEL,A0 MOVE.L A0,SNDCHANNELPTR LEA SNDDISPOSECHANNEL,A0 BSR CALLMACFUNCTION2 MOVEM.L (SP)+,D0-D7/A0-A6 \2:TST.L DET_FIN_SON-4 BEQ.S \1 MOVE.L DET_FIN_SON-4,-(SP) \1:RTS INIT_COOKIE:;nom dans D0.L ;retourne le pointeur sur donne cookie dans D0 ou < 0 si erreur MOVEM.L D1-A1/A6,-(SP) MOVE.L D0,D7 BSR GET_COOKIE BPL \1;existe dja SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \8;mode superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \8:MOVE.L _COOKIE,D0 BEQ \2;le Cookie Jar n'existe pas TOS < 1.6 MOVE.L D0,A0 MOVEQ #1,D0;compteur nombre de cookies \3:TST.L (A0) BEQ.S \4;dernier cookie ADDQ #8,A0 INC D0 BRA.S \3 \4:CMP.L 4(A0),D0 BCC.S \5;plus de place CLR.L 8(A0);id dernier cookie MOVE.L 4(A0),12(A0);dplace data dernier cookie (nombre max de cookie) MOVE.L D7,(A0)+;installe nouveau cookie MOVE.L A0,D7 CLR.L (A0);contenu initialis 0 BRA \9 \5:MOVE.L 4(A0),D1;taille BEQ \10;erreur MOVE.L D1,D2 ASL.L #4,D2;double la taille (en octets) MOVE.L D2,D0 BSR MALLOC_D0 BMI \10;erreur MOVE.L _COOKIE,A0 MOVE.L D0,A1 MOVE.L D1,D2 ADD.L D1,D1 SUBQ.L #2,D2;recopie BMI.S \7 \6:MOVE.L (A0)+,(A1)+;id MOVE.L (A0)+,(A1)+;contenu SUBQ.L #1,D2 BPL.S \6 BRA.S \7 \2:MOVEQ #64,D0 BSR MALLOC_D0;rserve la place pour 8 cookie si le Cookie Jar n'existe pas BMI.S \10;erreur MOVE.L D0,_COOKIE LEA DET_RESET,A0 MOVE.L RESVECTOR,-4(A0) MOVE.L RESVALID,SAUVE_RESVALID MOVE.L A0,RESVECTOR;dtourne reset pour raz vecteur Cookie Jar MOVE.L #$31415926,RESVALID MOVE.L D0,A1 MOVEQ #8,D1 \7:MOVE.L D7,(A1)+;installe nouveau cookie MOVE.L A1,D7 CLR.L (A1)+;contenu initialis 0 CLR.L (A1)+;id dernier cookie MOVE.L D1,(A1);taille BRA.S \9 \10:MOVEQ #-1,D7;erreur \9:MOVE.L A6,D0 BEQ.S \11 SUPER (A6) \11:MOVE.L D7,D0 \1:MOVEM.L (SP)+,D1-A1/A6 RTS GET_COOKIE:;nom dans D0.L, au retour si < 0 pas de cookie ;retourne le pointeur sur donne cookie dans D0 MOVEM.L D1-A1/A6,-(SP) MOVE.L D0,D6 SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \5;mode superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \5:MOVEQ #0,D7 MOVE.L _COOKIE,D0 BEQ.S \1 MOVE.L D0,A0 \2:TST.L (A0) BEQ.S \1 CMP.L (A0),D6 BNE.S \3 MOVE.L A0,D7 ADDQ #4,D7 BRA.S \1 \3:ADDQ #8,A0 BRA.S \2 \1:MOVE.L A6,D0 BEQ.S \4 SUPER (A6) \4:MOVEQ #-1,D6 MOVE.L D7,D0 BEQ.S \6 MOVEQ #0,D6 \6:TST D6 MOVEM.L (SP)+,D1-A1/A6 RTS DC.L "XBRA" DC.L "MgSn" DC.L 0;adresse de retour DET_RESET: CLR.L _COOKIE;vecteur Cookie Jar MOVE.L SAUVE_RESVALID,RESVALID MOVE.L DET_RESET-4,RESVECTOR JMP (A6) MALLOC_D0: MOVE.L A0,-(SP) MOVE.L D0,-(SP) MALLOC #-1 MOVE.L (SP)+,A0 CMP.L D0,A0 BCS.S \1 \3:MOVEQ #-39,D0 BRA.S \2 \1:MALLOC A0 TST.L D0 BLE.S \3 \2:MOVE.L (SP)+,A0 TST.L D0 RTS CONV_DECI:;A0:pointeur cible chane ASCII, D0:valeur sur 32 bits, D1:nombre de chiffres BSR CONV_DECI_SIMPLE DEC D1 BEQ.S \1 SWAP D0 TST D0 BNE.S \3;dpassement MOVEQ #0,D0 \2:CMP.B #"0",(A0,D0) BNE.S \1 MOVE.B #" ",(A0,D0);enlve les zros inutiles INC D0 CMP D1,D0 BNE.S \2 BRA.S \1 \3:MOVE.B #"?",(A0,D1) DBRA D1,\3 \1:RTS CONV_DECI_SIMPLE:;A0:pointeur cible chane ASCII, D0:valeur sur 32 bits, D1:nombre de chiffres MOVE D1,-(SP) DEC D1 MOVE.L D0,-(SP) \1:MOVEQ #0,D0 MOVE (SP),D0 DIVU #10,D0;poids fort /10 MOVE D0,(SP);rsultat poids fort MOVE 2(SP),D0 DIVU #10,D0;((reste * 65536) + poids faible)/10 MOVE D0,2(SP);rsultat poids faible SWAP D0 OR #$30,D0 MOVE.B D0,(A0,D1) DBRA D1,\1 ADDQ.L #4,SP MOVE (SP)+,D1 RTS CALLMACFUNCTION: MOVEM.L A0/A2/A6,-(SP) MOVE.L A0,A2;fonction SUPER 0;superviseur MOVE.L D0,A6;sauve SSP MOVE.L A2,A0 BSR CALLMACFUNCTION2 SUPER (A6);utilisateur MOVEM.L (SP)+,A0/A2/A6 MOVE.L RETOUR,D0 RTS CALLMACFUNCTION2: MOVEM.L D1-A6,-(SP) MOVE.L A0,A2 MOVE.L MODEMAC,A0 JSR (A0) MOVE.L A2,-(SP) MOVE.L CALLMACCONTEXT,A0 JSR (A0) ADDQ #4,SP MOVE.L MODEATARI,A0 JSR (A0) MOVEM.L (SP)+,D1-A6 MOVE.L RETOUR,D0 RTS GESTALT: MOVEM.L D0-A6,-(SP) MOVE.L D0,D4;selector MOVE.L A0,A2;response SUPER 0 MOVE.L D0,D3 MOVE.L MODEMAC,A0 JSR (A0) MOVE.L A2,A0 MOVE.L D4,D0 MOVE.L A0,A1 DC.W $A1AD;Gestalt MOVE.L A0,(A1) MOVE D0,D4 MOVE.L MODEATARI,A0 JSR (A0) MOVE.L D3,A0 SUPER (A0) MOVE D4,D0 MOVEM.L (SP)+,D0-A6 RTS ENDSOUND: MOVEM.L D0-A6,-(SP) TST CAUSE_INTER BEQ \2 BMI.S \3;mfp BTST #0,CAUSE_INTER+1 BEQ \1;<> lecture TST D_TIMER_A BEQ \1 DEC COUNT_TIMER_A BGT \1 MOVE D_INIT_TIMER_A,COUNT_TIMER_A TST D_MAC BEQ.S \7 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI \7:MOVE.L VECT_TIMER_A,D0 BEQ.S \4 MOVE.L D0,A0 BRA.S \5 \3:BTST #0,CAUSE_INTER+1 BEQ.S \1;<> lecture TST D_IO7 BEQ.S \1 TST D_MAC BEQ.S \8 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI \8:MOVE.L VECT_IO7,D0 BEQ.S \4 MOVE.L D0,A0 \5:TST PROC_TYPE BEQ.S \6 CLR -(SP);format si > 68000 \6:PEA \4(PC);adresse de retour MOVE SR,-(SP) JMP (A0) \2:TST.L INTH_ADDR BLE.S \1 TST D_MAC BEQ.S \9 MOVE D0,-(SP);status MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVEQ #0,D0 MOVE (SP)+,D0;status \9:MOVE.L INTH_ADDR,A0 JSR (A0) \4:TST D_MAC BEQ.S \1 MOVE.L MODEMAC,A0 JSR (A0);repasse en mode MAC \1:MOVEM.L (SP)+,D0-A6 RTS ENDSOUND_REC: MOVEM.L D0-A6,-(SP) TST CAUSE_INTER BEQ.S \2 BMI.S \3;mfp BTST #1,CAUSE_INTER+1 BEQ \1;<> enregistrement TST D_TIMER_A BEQ \1 DEC COUNT_TIMER_A BGT \1 MOVE D_INIT_TIMER_A,COUNT_TIMER_A MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L VECT_TIMER_A,D0 BEQ.S \4 MOVE.L D0,A0 BRA.S \5 \3:BTST #1,CAUSE_INTER+1 BEQ.S \1;<> enregistrement TST D_IO7 BEQ.S \1 MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L VECT_IO7,D0 BEQ.S \4 MOVE.L D0,A0 \5:TST PROC_TYPE BEQ.S \6 CLR -(SP);format si > 68000 \6:PEA \4(PC);adresse de retour MOVE SR,-(SP) JMP (A0) \2:TST.L INTH_ADDR_REC BLE.S \1 MOVE D0,-(SP);status MOVE.L MODEATARI,A0 JSR (A0);passe en mode ATARI MOVE.L INTH_ADDR_REC,A0 MOVEQ #0,D0 MOVE (SP)+,D0;status BSET #7,D0;enregistrement JSR (A0) \4:MOVE.L MODEMAC,A0 JSR (A0);repasse en mode MAC \1:MOVEM.L (SP)+,D0-A6 RTS ISNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR LEA (SP),A0 MOVE.L A0,SNDCOMMAND LEA SNDDOIMMEDIATE,A0 BSR CALLMACFUNCTION2 ADDQ #8,SP RTS SNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR LEA (SP),A0 MOVE.L A0,SNDCOMMAND LEA SNDDOCOMMAND,A0 BSR CALLMACFUNCTION2 ADDQ #8,SP RTS MACSNDCMD: MOVE.L D2,-(SP);param2 MOVE D1,-(SP);param1 MOVE D0,-(SP);cmd MOVE.L A0,SNDCHANNELPTR MOVE.L SP,SNDCOMMAND BSR SNDDOCOMMAND MOVE.L RETOUR,D0 BEQ.S \1 AND #$FFFC,STATUS;arrt lecture DMA \1:ADDQ #8,SP RTS SPBVERSION: MOVEM.L D0-A6,-(SP) CLR.L -(SP) MOVE.L #$00000014,D0 DC.W $A800;SPBVersion MOVE.L (SP)+,RETOUR;NumVersion MOVEM.L (SP)+,D0-A6 RTS SPBGETINDEXEDDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE COUNT,-(SP) PEA DEVICENAME PEA DEVICEICONHANDLE MOVE.L #$05140014,D0 DC.W $A800;SPBGetIndexedDevice MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBOPENDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) PEA NUL;deviceName: defaut MOVE #1,-(SP);siWritePermission PEA INREFNUM MOVE.L #$05180014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBCLOSEDEVICE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L #$021C0014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBRECORD: MOVEM.L D0-A6,-(SP) CLR -(SP) PEA INPARAMPTR MOVE #-1,-(SP);asynchFlag: asynchronous MOVE.L #$03200014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBSTOPRECORDING: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L #$02300014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBGETDEVICEINFO: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L INFOTYPE,-(SP) PEA INFODATA MOVE.L #$06380014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SPBSETDEVICEINFO: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L INREFNUM,-(SP) MOVE.L INFOTYPE,-(SP) PEA INFODATA MOVE.L #$063C0014,D0 DC.W $A800 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDSOUNDMANAGERVERSION: MOVEM.L D0-A6,-(SP) CLR.L -(SP) MOVE.L #$000C0008,D0;SndSoundManagerVersion DC.W $A800 MOVE.L (SP)+,RETOUR;NumVersion MOVEM.L (SP)+,D0-A6 RTS SNDDISPOSECHANNEL: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.B #1,-(SP);quietNow DC.W $A801 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDDOCOMMAND: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.L SNDCOMMAND,-(SP) MOVE #1,-(SP);noWait DC.W $A803 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDDOIMMEDIATE: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR,-(SP) MOVE.L SNDCOMMAND,-(SP) DC.W $A804 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS SNDNEWCHANNEL: MOVEM.L D0-A6,-(SP) CLR -(SP) MOVE.L SNDCHANNELPTR2,-(SP) MOVE #SAMPLEDSYNTH,-(SP);synth MOVE.L INITSND,-(SP);init MOVE.L SNDCALLBACKPROCPTR,-(SP);userRoutine DC.W $A807 MOVE (SP)+,D0 EXT.L D0 MOVE.L D0,RETOUR;err MOVEM.L (SP)+,D0-A6 RTS DIV32_32:;divise D0 par D1 => D0 en 32 bits DC.L $4C410000;DIVU.L D1,D0;sans reste RTS MUL32_32:;multiplie D0 par D1 => D0 en 32 bits DC.L $4C010000;MULU.L D1,D0 RTS MUL32_64:;multiplie D0 par D1 en 32 bits ; => rsultat en 64 bits: poids faible dans D0, poids fort dans D1 MOVE.L D2,-(SP) DC.L $4C010402;MULU.L D1,D2:D0 MOVE.L D2,D1;poids fort MOVE.L (SP)+,D2 RTS DIV64_32S:;divise D1-D0 en 64 bits (poids fort dans D1) par D2 en 32 bits signs ; => rsultat dans D0 en 32 bits, reste dans D1 en 32 bits DC.L $4C420C01;DIVS.L D2,D1:D0 RTS MUL64_TRACKS: MOVE D2,-(SP) MOVE NB_TRACKS,D2 BRA.S \1 \2:ADD.L D0,D0 ADDX.L D1,D1 \1:DBRA D2,\2 MOVE (SP)+,D2 RTS TEST_SDL_ARANYM: MOVEQ #0,D0 MOVE SR,-(SP) OR #$700,SR LEA \1(PC),A0 MOVE.L 16,A1;instruction illegale MOVE.L A0,16 MOVE.L SP,A2 CLR.L NFID_AUDIO PEA NFNAME_AUDIO CLR.L -(SP) DC.W $7300;NATFEAT_ID MOVE.L D0,NFID_AUDIO BNE.S \2 CLR.L -(SP) DC.W $712C \2:MOVEQ #-1,D0 \1:MOVE.L A1,16 MOVE.L A2,SP MOVE (SP)+,SR MOVE D0,D_SDL RTS SDL_VERSION: MOVEM.L D1-A6,-(SP) MOVE.L NFID_AUDIO,D0 BEQ.S \1 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_OPENAUDIO: MOVEM.L D2-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 PEA (A0);buffer AND.L #$FFFF,D3 MOVE.L D3,-(SP);nb samples AND.L #$FFFF,D2 MOVE.L D2,-(SP);channels AND.L #$FFFF,D1 MOVE.L D1,-(SP);format MOVE.L D0,-(SP);frequency MOVEQ #OpenAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 28(SP),SP BRA.S \1 \2:PEA (A0);buffer MOVE D3,-(SP);nb samples MOVE D2,-(SP);channels MOVE D1,-(SP);format MOVE.L D0,-(SP);frequency MOVE.L #OpenAudio,-(SP) DC.W $712C LEA 14(SP),SP \1:MOVEM.L (SP)+,D2-A6 TST.L D0 RTS SDL_CLOSEAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #CloseAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #CloseAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_PAUSEAUDIO: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 EXT.L D0 MOVE.L D0,-(SP);pause_on MOVEQ #PauseAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 12(SP),SP BRA.S \1 \2:MOVE D0,-(SP);pause_on MOVE.L #PauseAudio,-(SP) DC.W $712C ADDQ #2,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_AUDIOSTATUS: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #AudioStatus,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #AudioStatus,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D1-A6 RTS SDL_AUDIOVOLUME: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 EXT.L D0 MOVE.L D0,-(SP);volume MOVEQ #AudioVolume,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL LEA 12(SP),SP BRA.S \1 \2:MOVE D0,-(SP);volume MOVE.L #AudioVolume,-(SP) DC.W $712C ADDQ #2,SP \1:MOVEM.L (SP)+,D1-A6 RTS SDL_LOCKAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #LockAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #LockAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_UNLOCKAUDIO: MOVEM.L D0-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #UnlockAudio,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #UnlockAudio,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D0-A6 RTS SDL_GETAUDIOFREQ: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #GetAudioFreq,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #GetAudioFreq,-(SP) DC.W $712C;fonctions audio Aranym \1:MOVEM.L (SP)+,D1-A6 RTS SDL_GETAUDIOLEN: MOVEM.L D1-A6,-(SP) TST.L NFID_AUDIO BEQ.S \2 MOVEQ #GetAudioLen,D0 ADD.L NFID_AUDIO,D0 MOVE.L D0,-(SP) CLR.L -(SP) DC.W $7301;NATFEAT_CALL ADDQ #8,SP BRA.S \1 \2:MOVE.L #GetAudioLen,-(SP) DC.W $712C \1:MOVEM.L (SP)+,D1-A6 RTS TIMER_OUTPUT_: MOVEM.L D0-A6,-(SP) MOVE.L #"hade",D0 BSR GET_COOKIE SPL.B D7 EXT.W D7 SWAP D7;flag HADES MOVE INFOS_COOKIE+10,D0;slot SNE.B D7 EXT.W D7;MV16/PSOUND SUB.L A6,A6 SUPER 1 TST.L D0 BMI.S \4;superviseur SUPER 0 MOVE.L D0,A6;sauve SSP \4:LEA COMPTEUR_PSG,A0 MOVE.L 64(SP),D0 MOVE.L D0,(A0)+;compteur initialis longueur MOVE.L 68(SP),(A0);adresse chantillons CLR FLAG_ARRET MOVE SR,-(SP) OR #$700,SR;interdit IRQ BSR ARRET_PSG MOVE 76(SP),D0;mode: B0:mono(0)/stro(1) ; B1:8 bits(0)/16 bits(1) B6:rptition non(0)/oui(1) BTST #6,D0;rptition BEQ.S \2 AND #3,D0 BSET #2,D0 \2:LEA TAB_PSG2,A0 TST D7 BMI.S \3;carte son HADES LEA TAB_PSG,A0 \3:ASL #2,D0 MOVE.L (A0,D0),A0 LEA SAUVE_IRQ_TIMER_A,A1 LEA $134,A2;vecteur MFP TST D_TT BEQ.S \7 LEA $174,A2;vecteur MFP TT \7:MOVE.L (A2),(A1);sauve vecteur MOVE.L A0,(A2);nouveau vecteur LEA $FFFA0000,A0;port cartouche => MV16 TST.L D7 BPL.S \5;<> HADES LEA ROPOCOP_HADES,A0 MOVE INFOS_COOKIE+10,D0;slot AND #3,D0 ASL #2,D0;*4 MOVE.L (A0,D0),A0 \5:MOVE.L A0,ADR_CARTOUCHE MOVE 74(SP),D0;no frquence LEA $FFFFFA01,A0;MFP TST D_TT BEQ.S \6 LEA $FFFFFA81,A0;MFP TT \6:MOVE.L A0,ADR_MFP BSR INIT_TIMER_A BCLR #3,$16(A0);VR automatic end of interrupt BSET #5,6(A0);IERA BSET #5,$12(A0);IMRA autorisation IRQ timer A BCLR #5,$E(A0);ISRA pas d'IRQ en service MOVE (SP)+,SR MOVE.L A6,D0 BEQ.S \1 SUPER (A6) \1:MOVEM.L (SP)+,D0-A6 RTS INIT_TIMER_A:;D0: no freq 0-7 ou freq si >7 MOVEM.L D0-D2/A0-A2,-(SP) MOVE D0,-(SP) MOVE.L ADR_MFP,A0;MFP 68901 BCLR #5,$12(A0);IMRA masque timer A BCLR #5,6(A0);IERA inhibe timer A BCLR #5,$A(A0);IPRA pas pending BCLR #5,$E(A0);ISRA pas d'IRQ en service CLR.B $18(A0);TACR stoppe timer A MOVE (SP)+,D0 MOVE.L #614400,D2;2.4576 MHz /4 DIVU D0,D2;/frquence BVS.S \2 MOVE.L D2,D1 CLR D1 SWAP D1 ADD.L D1,D1;reste *2 DIVU D0,D1 ADD D1,D2 CMP #255,D2 BCS.S \1 \2:MOVEQ #-1,D2 \1:MOVE.B D2,$1E(A0);TADR valeur initiale timer A MOVE.B #1,$18(A0);TACR prdiv /4 ;temps en uS = (TADR*4)/2.4576 MOVEM.L (SP)+,D0-D2/A0-A2 RTS ARRET_PSG: MOVEM.L D0-D1/A0,-(SP) LEA $FFFF8800,A0;circuit sonore PSG YAMAHA MOVEQ #0,D0 MOVEQ #5,D1 \1:MOVEP D0,0(A0);priode canaux 1 3 ADD #$100,D0 DBRA D1,\1 MOVE #$7FF,D0 MOVEP D0,0(A0);arrt canaux & port B en sortie MOVEM.L (SP)+,D0-D1/A0 RTS FIN_IRQ_PSG: TST FLAG_ARRET BMI.S \1 MOVEM.L D0/A0/A1,-(SP) MOVE SR,-(SP) OR #$700,SR;interdit IRQ MOVE.L ADR_MFP,A0;MFP 68901 BSET #3,$16(A0);VR software end of interrupt BCLR #5,$12(A0);IMRA masque timer A BCLR #5,6(A0);IERA inhibe timer A BCLR #5,$A(A0);IPRA pas pending BCLR #5,$E(A0);ISRA pas d'IRQ en service CLR.B $18(A0);TACR stoppe timer A MOVE.L SAUVE_IRQ_TIMER_A,A0 LEA $134,A1;vecteur MFP TST D_TT BEQ.S \3 LEA $174,A1;vecteur MFP TT \3:MOVE.L A0,(A1) BSR ARRET_PSG MOVE #-1,FLAG_ARRET;arrt ou fin BTST #0,STATUS+1;lecture DMA BEQ.S \2;arrt dja demand AND #$FFFC,STATUS;arrt lecture DMA MOVEQ #0,D0 BSR ENDSOUND \2:MOVE (SP)+,SR MOVEM.L (SP)+,D0/A0/A1 \1:RTS IRQ_PSG2_STEREO16_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I15 BRA I10;swap IRQ_PSG2_MONO16_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I17 BRA I10;swap IRQ_PSG2_STEREO16: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I15 BSR FIN_IRQ_PSG BRA I6 I15:ADDQ.L #4,(A0);adresse MOVE 4(A0),-(SP);volume MOVE.L (A0),A0;adresse MOVE -(A0),D0;chantillons EXT.L D0 MOVE -(A0),D1 EXT.L D1 ADD.L D1,D0 ASR.L #4,D0;moyenne sur 12 bits MOVE (SP)+,D1;volume ASR D1,D0 AND #(4095*2),D0 BCHG #12,D0;non sign MOVE.L ADR_CARTOUCHE,A0;MV16 utilise sur 12 bits MOVE.B (A0,D0),D1 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B LSR #5,D0;8 bits MOVE.B D0,2(A0) MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG2_MONO16: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I17 BSR FIN_IRQ_PSG BRA I6 I17:ADDQ.L #2,(A0);adresse MOVE 4(A0),D1;volume MOVE.L (A0),A0;adresse MOVE -(A0),D0;chantillon ASR #3,D0;sur 12 bits ASR D1,D0;volume AND #(4095*2),D0 BCHG #12,D0;non sign MOVE.L ADR_CARTOUCHE,A0;MV16 utilise sur 12 bits MOVE.B (A0,D0),D1 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B LSR #5,D0;8 bits MOVE.B D0,2(A0) MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG2_STEREO_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I9 BRA.S I10;swap IRQ_PSG2_MONO_REP: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I7 I10:BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,(A0);adresse NEG.L D0 ADD.L ADR_FIN,D0 MOVE.L D0,-(A0);compteur BRA.S I6 IRQ_PSG2_STEREO: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I9 BSR FIN_IRQ_PSG BRA.S I6 I9:ADDQ.L #2,(A0);adresse MOVE 4(A0),-(SP);volume MOVE.L (A0),A0;adresse MOVE.B -(A0),D0;chantillons EXT.W D0 MOVE.B -(A0),D1 EXT.W D1 ADD D1,D0 ASR #1,D0;moyenne AND #255,D0;8 bits MOVE (SP)+,D1;volume BRA.S I8 IRQ_PSG2_MONO: MOVEM.L D0/D1/A0,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I7 BSR FIN_IRQ_PSG BRA.S I6 I7:ADDQ.L #1,(A0);adresse MOVE 4(A0),D1;volume MOVE.L (A0),A0;adresse MOVEQ #0,D0 MOVE.B -(A0),D0;chantillon I8:ASR.B D1,D0;volume BCHG #7,D0;non sign LEA $FFFF8800,A0;PSG YAMAHA port // MOVE.B #15,(A0);port B MOVE.B D0,2(A0) MOVE.L ADR_CARTOUCHE,A0;MV16 voie 1 ASL #5,D0 MOVE.B (A0,D0),D0 ; 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 ;---------------------------------------------------- ;$FA # # # D D D D D D D D C C C C # ;---------------------------------------------------- ; | | | | | | ; < N/A > < volume data 8-bits > < channel> I6:MOVEM.L (SP)+,D0/D1/A0 RTE IRQ_PSG_STEREO16_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I14 BRA I5;swap IRQ_PSG_MONO16_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I16 BRA I5;swap IRQ_PSG_STEREO16: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #4,(A0)+;compteur BPL.S I14 BSR FIN_IRQ_PSG BRA I1 I14:ADDQ.L #4,(A0);adresse MOVE.L (A0)+,A1 MOVE -(A1),D0;chantillons EXT.L D0 MOVE -(A1),D1 EXT.L D1 ADD.L D1,D0 MOVEQ #9,D1 ASR.L D1,D0;moyenne AND #255,D0;8 bits MOVE (A0),D1;volume BRA I3 IRQ_PSG_MONO16: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I16 BSR FIN_IRQ_PSG BRA I1 I16:ADDQ.L #2,(A0);adresse MOVE.L (A0)+,A1 MOVE (A0),D1;volume MOVE -(A1),D0;chantillon BRA.S I3 IRQ_PSG_STEREO_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I4 BRA.S I5;swap IRQ_PSG_MONO_REP: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I2 I5:BSR SWAP_ADR MOVE.L ADR_DEBUT,D0 MOVE.L D0,(A0);adresse NEG.L D0 ADD.L ADR_FIN,D0 MOVE.L D0,-(A0);compteur BRA.S I1 IRQ_PSG_STEREO: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #2,(A0)+;compteur BPL.S I4 BSR FIN_IRQ_PSG BRA.S I1 I4:ADDQ.L #2,(A0);adresse MOVE.L (A0)+,A1 MOVE.B -(A1),D0;chantillons EXT.W D0 MOVE.B -(A1),D0 EXT.W D1 ADD D1,D0 ASR #1,D0;moyenne AND #255,D0;8 bits MOVE (A0),D1;volume BRA.S I3 IRQ_PSG_MONO: MOVEM.L D0/D1/A0/A1,-(SP) LEA COMPTEUR_PSG(PC),A0 SUBQ.L #1,(A0)+;compteur BPL.S I2 BSR FIN_IRQ_PSG BRA.S I1 I2:ADDQ.L #1,(A0);adresse MOVE.L (A0)+,A1 MOVE (A0),D1;volume MOVEQ #0,D0 MOVE.B -(A1),D0;chantillon I3:ASR.B D1,D0 ASL #2,D0 LEA $FFFF8800,A0;PSG YAMAHA LEA TAB_VOL+1(PC,D0),A1 MOVEQ #8,D0 MOVE.B D0,(A0);volume 1 MOVE.B (A1)+,2(A0);MOVEP inexistant sur 060 INC D0 MOVE.B D0,(A0);volume 2 MOVE.B (A1)+,2(A0) INC D0 MOVE.B D0,(A0);volume 3 MOVE.B (A1),2(A0) I1:MOVEM.L (SP)+,D0/D1/A0/A1 RTE DATA COMPTEUR_PSG:DC.L 0; ADRESSE:DC.L 0 ; ne pas changer l'ordre VOLUME:DC.W 0 ; TAB_VOL: DC.L $C0B09,$C0B09,$D0808,$B0B0B,$D0905,$C0B08,$D0902,$D0806,$C0B07,$D0707,$C0B06,$C0A09,$B0B0A,$C0B02,$C0B00,$C0A08 DC.L $D0604,$D0505,$D0504,$C0909,$D0403,$B0B09,$C0A05,$B0A0A,$C0908,$B0B08,$C0A00,$C0A00,$C0907,$B0B07,$C0906,$B0B06 DC.L $B0A09,$B0B05,$A0A0A,$B0B02,$B0A08,$C0707,$C0804,$C0706,$B0909,$C0606,$A0A09,$C0703,$B0A05,$B0908,$B0A03,$A0A08 DC.L $B0A00,$B0907,$B0808,$A0A07,$A0909,$C0101,$A0A06,$B0807,$A0A05,$A0908,$A0A02,$A0A01,$A0A00,$90909,$A0808,$B0801 DC.L $A0906,$B0704,$A0905,$90908,$A0903,$A0806,$A0900,$90907,$90808,$A0804,$90906,$A0801,$90905,$90807,$80808,$90902 DC.L $90806,$90900,$90707,$80807,$90706,$90802,$80806,$90606,$80707,$80804,$80706,$80802,$70707,$80606,$80704,$70706 DC.L $80605,$80604,$70606,$70704,$80504,$60606,$70604,$70505,$60605,$60604,$60505,$60602,$60504,$50505,$60502,$50504 DC.L $50404,$50502,$40404,$40403,$40402,$40303,$30303,$30302,$30202,$20202,$20201,$10101,$20100,$10100,$10000,$00000 DC.L $E0D0C,$F0300,$F0300,$F0300,$F0300,$F0300,$F0300,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0B,$E0D0A,$E0D0A DC.L $E0D0A,$E0D0A,$E0C0C,$E0D00,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$D0D0D,$E0C0B,$E0C0B,$E0C0B,$E0C0B,$E0C0B,$E0C0B DC.L $E0C0B,$E0C0B,$E0C0A,$E0C0A,$E0C0A,$E0C0A,$D0D0C,$D0D0C,$E0C09,$E0C09,$E0C05,$E0C00,$E0C00,$E0B0B,$E0B0B,$E0B0B DC.L $E0B0B,$E0B0A,$E0B0A,$E0B0A,$D0D0B,$D0D0B,$D0D0B,$E0B09,$E0B09,$E0B09,$D0C0C,$D0D0A,$E0B07,$E0B00,$E0B00,$D0D09 DC.L $D0D09,$E0A09,$D0D08,$D0D07,$D0D04,$D0D00,$E0A04,$E0909,$E0909,$D0C0B,$E0908,$E0908,$E0907,$E0808,$E0901,$C0C0C DC.L $D0C0A,$E0806,$E0707,$E0800,$E0705,$E0606,$D0C09,$E0505,$E0404,$D0C08,$D0B0B,$E0000,$D0C06,$D0C05,$D0C02,$C0C0B DC.L $C0C0B,$D0B0A,$D0B0A,$D0B0A,$D0B0A,$C0C0A,$C0C0A,$C0C0A,$D0B09,$D0B09,$D0A0A,$D0A0A,$D0A0A,$C0C09,$C0C09,$C0C09 DC.L $D0B06,$C0B0B,$C0C08,$D0B00,$D0B00,$C0C07,$C0C06,$C0C05,$C0C03,$C0C01,$C0B0A,$D0A05,$D0A04,$D0A02,$D0908,$D0908 TAB_PSG: DC.L IRQ_PSG_MONO,IRQ_PSG_STEREO,IRQ_PSG_MONO16,IRQ_PSG_STEREO16 DC.L IRQ_PSG_MONO_REP,IRQ_PSG_STEREO_REP,IRQ_PSG_MONO16_REP,IRQ_PSG_STEREO16_REP TAB_PSG2: DC.L IRQ_PSG2_MONO,IRQ_PSG2_STEREO,IRQ_PSG2_MONO16,IRQ_PSG2_STEREO16 DC.L IRQ_PSG2_MONO_REP,IRQ_PSG2_STEREO_REP,IRQ_PSG2_MONO16_REP,IRQ_PSG2_STEREO16_REP ROPOCOP_HADES:DC.L $FFFA0000,$FF7A0000,$FF7C0000,$FF7E0000 STRUCT_MCSN: DC.W 256 DC.W 30 DC.W 2;play FALCON DC.W 2;record FALCON DC.W 0;short dsp; Is the DSP there? DC.W 1;Playing: Interrupt possible with frame-end? DC.W 1;Recording: Interrupt possible with frame-end? DC.L 22579200,0,0,0;rserve TAB_NUM_FREQ_FALCON: ;frquences internes DC.W 49170,33800,24585,20770,16940,16940,12292,12292,9834,9834,8195; 25,175 MHz ;frquences via horloge externe DC.W 44100,29400,22050,17640,14700,14700,11025,11025,8820,8820,7350; 22,5792 MHz DC.W 48000,32000,24000,19200,16000,16000,12000,12000,9600,9600,8000; 24,576 MHz TAB_NUM_FREQ_STE:DC.W 6250,12500,25000,50000 VOLUMES:DC.W 255,255 GAINS:DC.W 0,0 INFOS_COOKIE: DC.W VERSION DC.W 0;NB_SOURCES DC.W 0;INSOURCE DC.L TAB_SOURCENAME DC.W 0;SLOT NFNAME_AUDIO:DC.B "AUDIO",0 NUL:DC.B 0 MESS1:DC.B 13,10,10,27,"p MagiCMac Sound Driver XBIOS v",0 MESS2:DC.B " ",27,"q installed",13,10,"Didier MEQUIGNON November 2002",0 MESS3:DC.B 13,10,"MacOS Sound Manager v",0 MESS4:DC.B 13,10,"MacOS Sound Input Manager v",0 MESS5:DC.B 13,10,"Input Devices:",0 MESS6:DC.B 13,10,"Current Input Device: ",0 MESS7:DC.B 13,10,"Input Sources:",0 MESS8:DC.B 13,10,"Aranym detected, use SDL Sound",0 MESS8B:DC.B ", v",0 ERR1:DC.B 13,10,"Channel XBIOS cannot be open !",0 ERR2:DC.B 13,10,"MAC without sound !",0 ERR3:DC.B 13,10,"Impossible to open input device !",0 ERR4:DC.B 13,10,"No input source...",0 ERR5:DC.B 13,10,"No stereo input...",0 ERR6:DC.B 13,10,"No 16-bits input...",0 ERR7:DC.B 13,10,"No input device !",0 ERR8:DC.B 13,10,"Hardware cannot play stereo sounds !",0 ERR9:DC.B 13,10,"Hardware cannot handle 16-bits sounds !",0 ERR10:DC.B 13,10,"Hardware cannot record stereo sounds !",0 DEBUG1: IFNE 0,DEBUG DC.B 13,10,"Driver non install",0 ENDIF DEBUG2: IFNE 0,DEBUG DC.B 13,10,"Cookie _SND initialis",0 ENDIF DEBUG3: IFNE 0,DEBUG DC.B 13,10,"Attributs MacOS tests",13,10," GestaltSoundAttr:",0 ENDIF DEBUG4: IFNE 0,DEBUG DC.B 13,10,"Cration canal audio",0 ENDIF DEBUG5: IFNE 0,DEBUG DC.B 13,10,"Cookie MgSn cr",0 ENDIF DEBUG6: IFNE 0,DEBUG DC.B 13,10,"LOCKSND ",0 ENDIF DEBUG7: IFNE 0,DEBUG DC.B 13,10,"UNLOCKSND ",0 ENDIF DEBUG8: IFNE 0,DEBUG DC.B 13,10,"SOUNDCMD ",0 ENDIF DEBUG9: IFNE 0,DEBUG DC.B 13,10,"SETBUFFER ",0 ENDIF DEBUG10: IFNE 0,DEBUG DC.B 13,10,"BUFFOPER ",0 ENDIF DEBUG11: IFNE 0,DEBUG DC.B 13,10,"SETMODE ",0 ENDIF DEBUG12: IFNE 0,DEBUG DC.B 13,10,"DEVCONNECT ",0 ENDIF DEBUG13: IFNE 0,DEBUG DC.B 13,10,"SNDSTATUS ",0 ENDIF DEBUG14: IFNE 0,DEBUG DC.B 13,10,"BUFFPTR ",0 ENDIF DEBUG15: IFNE 0,DEBUG DC.B 13,10,"SETINTERRUPT",0 ENDIF DEBUG16: IFNE 0,DEBUG DC.B 13,10,"GPIO ",0 ENDIF DEBUG17: IFNE 0,DEBUG DC.B 13,10,"SETTRACKS ",0 ENDIF DEBUG18: IFNE 0,DEBUG DC.B 13,10,"SETMONTRACKS",0 ENDIF DEBUG19: IFNE 0,DEBUG DC.B 13,10,"JDISINT ",0 ENDIF DEBUG20: IFNE 0,DEBUG DC.B 13,10,"JENABINT ",0 ENDIF DEBUG21: IFNE 0,DEBUG DC.B 13,10,"XBTIMER ",0 ENDIF DEBUG22: IFNE 0,DEBUG DC.B 13,10,"MFPINT ",0 ENDIF DEBUG23: IFNE 0,DEBUG DC.B 13,10,"SETEXEC ",0 ENDIF DEBUG50: IFNE 0,DEBUG DC.B 13,10," SndSoundManagerVersion",0 ENDIF DEBUG100: IFNE 0,DEBUG DC.B 13,10," flushcmd",0 ENDIF DEBUG101: IFNE 0,DEBUG DC.B 13,10," quietcmd",0 ENDIF DEBUG102: IFNE 0,DEBUG DC.B 13,10," buffercmd",0 ENDIF DEBUG103: IFNE 0,DEBUG DC.B 13,10," callbackcmd",0 ENDIF DEBUG104: IFNE 0,DEBUG DC.B 13,10," volumecmd",0 ENDIF DEBUG110: IFNE 0,DEBUG DC.B 13,10," fin BUFFOPER",0 ENDIF DEBUG111: IFNE 0,DEBUG DC.B 13,10," status BUFFOPER:",0 ENDIF DEBUG112: IFNE 0,DEBUG DC.B 13,10," adresse dbut DMA:",0 ENDIF DEBUG113: IFNE 0,DEBUG DC.B 13,10," adresse fin DMA:",0 ENDIF DEBUG114: IFNE 0,DEBUG DC.B 13,10," frquence:",0 ENDIF DEBUG115: IFNE 0,DEBUG DC.B 13,10," octets/chantillon:",0 ENDIF DEBUG116: IFNE 0,DEBUG DC.B " status DMA:",0 ENDIF DEBUG117: IFNE 0,DEBUG DC.B 13,10," compteur DMA:",0 ENDIF DEBUG120: IFNE 0,DEBUG DC.B 13,10," SPBGetDeviceInfo",0 ENDIF DEBUG121: IFNE 0,DEBUG DC.B 13,10," SPBSetDeviceInfo",0 ENDIF DEBUG122: IFNE 0,DEBUG DC.B 13,10," SPBRecord",0 ENDIF DEBUG123: IFNE 0,DEBUG DC.B 13,10," SPBStopRecording",0 ENDIF DEBUG124: IFNE 0,DEBUG DC.B 13,10," SPBGetIndexedDevice",0 ENDIF DEBUG125: IFNE 0,DEBUG DC.B 13,10," SPBOpenDevice",0 ENDIF DEBUG126: IFNE 0,DEBUG DC.B 13,10," SPBVersion",0 ENDIF DEBUG127: IFNE 0,DEBUG DC.B 13,10," SPBCloseDevice",0 ENDIF DEBUG150: IFNE 0,DEBUG DC.B 13,10," siInputSource",0 ENDIF DEBUG151: IFNE 0,DEBUG DC.B 13,10," siAsync",0 ENDIF DEBUG152: IFNE 0,DEBUG DC.B 13,10," siNumberChannels",0 ENDIF DEBUG153: IFNE 0,DEBUG DC.B 13,10," siSampleSize",0 ENDIF DEBUG154: IFNE 0,DEBUG DC.B 13,10," siSampleRateAvailable",0 ENDIF DEBUG155: IFNE 0,DEBUG DC.B 13,10," siCompressionType",0 ENDIF DEBUG156: IFNE 0,DEBUG DC.B 13,10," siTwosComplementOnOff",0 ENDIF DEBUG157: IFNE 0,DEBUG DC.B 13,10," siPlayThruOnOff",0 ENDIF DEBUG158: IFNE 0,DEBUG DC.B 13,10," siStereoInputGain",0 ENDIF DEBUG159: IFNE 0,DEBUG DC.B 13,10," siInputSourceNames",0 ENDIF DEBUG160: IFNE 0,DEBUG DC.B 13,10," siDeviceName",0 ENDIF TAB_CAR_MAC:DC.B "",0 ALIGN.W BSS D_MAC:DS.W 1 D_TT:DS.W 1 D_SDL:DS.W 1 D_OPEN_SDL:DS.W 1 D_INTEL_SDL:DS.W 1 NFID_AUDIO:DS.L 1 FLAG_ARRET:DS.W 1 SAUVE_IRQ_TIMER_A:DS.L 1 ADR_CARTOUCHE:DS.L 1 ADR_MFP:DS.L 1 SAUVE_RESVALID:DS.L 1 RETOUR:DS.L 1 COUNT:DS.W 1 HORLOGE:DS.W 1 HORLOGE2:DS.W 1 PRESCALE:DS.W 1 PRESCALE_STE:DS.W 1 STATUS:DS.W 1 ADR:DS.L 1 ADR_DEBUT:DS.L 1 NEW_ADR_DEBUT:DS.L 1 ADR_FIN:DS.L 1 NEW_ADR_FIN:DS.L 1 ADR_REC:DS.L 1 ADR_DEBUT_REC:DS.L 1 NEW_ADR_DEBUT_REC:DS.L 1 ADR_FIN_REC:DS.L 1 NEW_ADR_FIN_REC:DS.L 1 ADR_SUITE:DS.L 1 COMPT_BLOC:DS.L 1 COMPT_BLOC_REC:DS.L 1 FREQUENCE:DS.L 1 FREQ_LECT:DS.L 1 OCT_ECH:DS.W 1 NB_VOIES:DS.W 1 NB_TRACKS:DS.W 1 NB_TRACKS_REC:DS.W 1 NB_INDEV:DS.W 1 NB_SOURCES:DS.W 1 INSOURCE:DS.W 1 NB_FREQ_REC:DS.W 1 FREQ_REC:DS.L 1 TAB_FREQ_REC:DS.L 16 TRACK:DS.W 1 INTH_ADDR:DS.L 1 INTH_ADDR_REC:DS.L 1 CAUSE_INTER:DS.W 1 COUNT_TIMER_A:DS.W 1 D_INIT_TIMER_A:DS.W 1 D_TIMER_A:DS.W 1 D_IO7:DS.W 1 D_SND_LOCK:DS.W 1 D_SETBUFF:DS.W 1 D_SETBUFF_REC:DS.W 1 MODEMAC:DS.L 1 MODEATARI:DS.L 1 GETBASEMODE:DS.L 1 CALLMACCONTEXT:DS.L 1 ATARIZEROPAGE:DS.L 1 INPARAMPTR:DS.L 9 INREFNUM:DS.L 1 INFOTYPE:DS.L 1 DEVICEICONHANDLE:DS.L 1 INFODATA:DS.L 8 RECORDINGSTATUS:DS.W 1 METERLEVEL:DS.W 1 TOTALSAMPLESTORECORD:DS.L 1 NUMBEROFSAMPLESRECORDED:DS.L 1 TOTALMSECSTORECORD:DS.L 1 NUMBEROFSECSRECORDED:DS.L 1 SNDCHANNELPTR:DS.L 1 SNDCHANNELPTR2:DS.L 1 INITSND:DS.L 1 SNDCOMMAND:DS.L 1 SNDCALLBACKPROCPTR:DS.L 1 INFOS_SON_MAC:DS.L 1 CHANNEL:DS.L 9+(128*2);2 paramtres par SndCommand DEVICENAME:DS.B 256 TAB_BUFFERS:DS.B (TAILLE_BUFFER+TAILLE_SOUND_HEADER)*(NB_BUFFERS+1) TAB_SOURCENAME:DS.B (256*MAX_TAB)+1 FIN: END aranym-0.9.15/atari/tools/000077500000000000000000000000001213346724500153445ustar00rootroot00000000000000aranym-0.9.15/atari/tools/README000066400000000000000000000007361213346724500162320ustar00rootroot00000000000000These are the first basic tools for Aranym: - CLOCKY.PRG that write actual mouse position to $f9000e/$f90010 (It was faster to implement it into Clocky (TM) than to write a new TSR). Clocky by default do not alter the keyboard layout now. Get full Clocky 3.0 distribution at http://joy.atari.org/ - there's a nice editor of keyboard layout. - PCPATCH.PRG that patches PureC (PC.PRG) to be able to compile projects and files from the BetaDOS driven filesystem. Petr aranym-0.9.15/atari/tools/devdos/000077500000000000000000000000001213346724500166305ustar00rootroot00000000000000aranym-0.9.15/atari/tools/devdos/Makefile000077500000000000000000000007311213346724500202740ustar00rootroot00000000000000 TARGET = dev.dos COBJS = bosmeta.c dosdir.c dosfile.c dosfsfn.c main.c utility.c ctype.c SOBJS = mdglue.S include ../../CONFIGVARS CFLAGS = -mshort $(OPTS) $(WARN) $(GENERAL) LDFLAGS = -nostdlib -Wl,--entry -Wl,_init -lgcc COBJECTS = $(COBJS:.c=.o) SOBJECTS = $(SOBJS:.S=.o) all: $(TARGET) $(TARGET): $(COBJECTS) $(SOBJECTS) ${CC} -o $@ $(COBJECTS) $(SOBJECTS) $(GENERAL) ${CFLAGS} ${LDFLAGS} ${STRIP} $(TARGET) clean: rm -f $(SOBJECTS) $(COBJECTS) $(TARGET) aranym-0.9.15/atari/tools/devdos/README000077500000000000000000000025451213346724500175210ustar00rootroot00000000000000BetaDOS x:\dev filesystem driver ================================ The dev.dos is a driver that creates the u:\dev folder known from the FreeMiNT and MagiC environment. The motivation is to create identical environment by which any HW dependent access is encapsulated. That approach is present in UNIX-like environments and is present in FreeMiNT as its fundamental concept. The aim is to make developers provide special driver for any HW (or NF which is considered to be OS only acces feature) they create. Such driver would make it possible to create an equivalent on another machine with the same interface and would automaticaly impose some level of reusability. So for TOS environments one would create BetaDOS .BOS device driver and for FreeMiNT .XDD device driver. This dev.dos driver automatically scans any .BOS driver loaded by BetaDOS and creates appropriate x:\dev\bos folder entry for each. It also asks the particular .BOS driver for an information whether it should also be placed into the x:\dev under its name. (FIXME: provide another ioctl() to provide better name?). Just install it to the bdconfig.sys e.g. as: ... *BOS, \auto\nfstderr.bos, E *DOS, c:\auto\dev.dos, X:2 ... And you will get: X:\dev\bos\E X:\dev\nfstderr Ehere the nfstderr is actually like a hardlink to the bos\E entry. More documentation to come on this topic. Best Regards STanda aranym-0.9.15/atari/tools/devdos/bosmeta.c000077500000000000000000000155421213346724500204400ustar00rootroot00000000000000#include #include #include #include #include #include "bosmeta.h" #include "dosdir.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif /* x:\dev\phys folder lists respectively */ LIST root; static LIST root_dev; static LIST root_dev_phys; /* cookie release/dup */ static void release_cookie( FCOOKIE *fc); static void release_folder( LIST *f) { LINKABLE *fc = listFirst(f); while (fc) { FCOOKIE *trash = (FCOOKIE*)fc; fc = listNext(fc); release_cookie( trash); } } static void release_cookie( FCOOKIE *fc) { release_folder( fc->folder); free( fc->name); free( fc); } static FCOOKIE *dup_cookie( FCOOKIE *s) { FCOOKIE *fc; fc = malloc(sizeof(FCOOKIE)); fc->name = strdup(s->name); fc->attr = s->attr; fc->folder = s->folder; fc->bos_dev = s->bos_dev; fc->bos_info_flags = s->bos_info_flags; return fc; } long bosfs_initialize(void) { int i; metainit_t metainit={0,0,0,0}; FCOOKIE *fc; Metainit(&metainit); TRACE(("MetaDOS version=%s, drives=%x\n", metainit.version, metainit.drives_map)); if (metainit.version == NULL) { DEBUG(("MetaDOS not installed\n")); return -1; } if (metainit.drives_map == 0) { DEBUG(("No MetaDOS devices present\n")); return -1; } listInit( &root); { /* create the x:\dev folder */ fc = malloc(sizeof(FCOOKIE)); fc->name = strdup("dev"); fc->attr = FA_DIR; fc->folder = &root_dev; fc->bos_dev = 0; /* add it to the folder */ listInsert( root.head.next, (LINKABLE*)fc); } listInit( &root_dev); { /* create the x:\dev\phys folder */ fc = malloc(sizeof(FCOOKIE)); fc->name = strdup("bos"); fc->attr = FA_DIR; fc->folder = &root_dev_phys; fc->bos_dev = 0; /* add it to the folder */ listInsert( root_dev.head.next, (LINKABLE*)fc); } listInit( &root_dev_phys); for (i='A'; i<='Z'; i++) if (metainit.drives_map & (1<<(i-'A'))) { metaopen_t metaopen; int handle; char name[] = "A"; name[0] = i; fc = malloc(sizeof(FCOOKIE)); fc->name = strdup(name); fc->attr = 0; fc->folder = NULL; fc->bos_dev = i; fc->bos_info_flags = BOS_INFO_DEVHIDDEN; /* by default hide from U:\dev */ DEBUG(("dev: %s->%s\n", name, fc->name)); /* attempt to get the bos_info */ handle = Metaopen(i, &metaopen); if (handle == 0) { bos_info_t info; if ( ! Metaioctl(i, METADOS_IOCTL_MAGIC, METADOS_IOCTL_BOSINFO, &info)) { DEBUG(("ioctl: %s->%s %lx\n", name, fc->name, info.flags)); fc->bos_info_flags = info.flags; } Metaclose(i); DEBUG(("dev: %s->%s %lx\n", name, fc->name, fc->bos_info_flags)); /* the BOSINFO states that the device should not be visible * in x:\dev\bos nor in x:\dev\bos */ if ( fc->bos_info_flags & BOS_INFO_BOSHIDDEN ) { release_cookie( fc ); continue; } /* insert the devices that have a decent name also to u:\dev */ if ( ! (fc->bos_info_flags & BOS_INFO_DEVHIDDEN) && *metaopen.name ) { FCOOKIE *cfc = dup_cookie(fc); free( cfc->name); cfc->name = strdup(metaopen.name); listInsert( &root_dev.tail, (LINKABLE*)cfc); } } /* add it to the folder */ listInsert( root_dev_phys.head.next, (LINKABLE*)fc); } return 0; } long getxattr (FCOOKIE *fc, struct xattr *res) { res->mode = 0666; res->mode |= fc->attr & FA_DIR ? (S_IFDIR|0111) : 0; res->index = (long)fc; res->dev = (long)&root; res->rdev = (long)&root; res->nlink = 1; res->uid = 0; res->gid = 0; res->size = 0; res->blksize = 512; res->nblocks = ( res->size + res->blksize - 1) >> 9; // FIXME! res->mtime = 0; res->mdate = 0; res->atime = 0; res->adate = 0; res->ctime = 0; res->cdate = 0; res->attr = fc->attr; res->reserved2 = 0; res->reserved3[0] = 0; res->reserved3[1] = 0; return 0; } long name2cookie (LIST *folder, const char *name, FCOOKIE **res) { char lowname[32]; FCOOKIE* fc; DEBUG(( "name2cookie: name=%s\n", name)); /* look for 'name' in the folder */ listForEach( FCOOKIE*, fc, folder) { char *c = lowname; char *f = fc->name; while ( (*c++ = tolower(*f++)) ) ; DEBUG(( "name2cookie: fc->name=%s\n", fc->name)); if ( ! strcmp( lowname, name) ) { *res = fc; return 0; } } return -ENOENT; } /* * routines for parsing path names */ /* * relpath2cookie converts a TOS file name into a file cookie representing * the directory the file resides in, and a character string representing * the name of the file in that directory. The character string is * copied into the "lastname" array. If lastname is NULL, then the cookie * returned actually represents the file, instead of just the directory * the file is in. * * note that lastname, if non-null, should be big enough to contain all the * characters in "path", since if the file system doesn't want the kernel * to do path name parsing we may end up just copying path to lastname * and returning the current or root directory, as appropriate * * "dir" is the directory relative to which the search should start. * if you just want the current directory, use path2cookie instead. * */ # define DIRSEP(p) (((p) == '\\') || ((p) == '/')) long relpath2cookie (FCOOKIE *dir, const char *path, char *lastname, FCOOKIE **res) { long r = 0; short do_last = (lastname == NULL); char temp[PATH_MAX]; if ( ! lastname ) lastname = temp; DEBUG(( "relpath2cookie: dir=%s path=%s\n", dir->name, path)); /* first, check for a drive letter */ if (path[1] == ':') { char c = tolower ((int)path[0] & 0xff); if (c >= 'a' && c <= 'z') path += 2; else if (c >= '1' && c <= '6') path += 2; } while (*path) { /* now we must have a directory, since there are more things * in the path */ if ( ! (dir->attr & FA_DIR) ) return -ENOTDIR; /* skip slashes */ while (DIRSEP (*path)) path++; /* if there's nothing left in the path, we can break here */ if (!*path) { *res = dir; *lastname = '\0'; return 0; } /* next, peel off the next name in the path */ { register int len; register char c, *s; len = 0; s = lastname; c = *path; while (c && !DIRSEP (c)) { if (len++ < PATH_MAX) *s++ = tolower(c); c = *++path; } *s = 0; } /* if there are no more names in the path, and we don't want * to actually look up the last name, then we're done */ if (!do_last && !*path) { *res = dir; return 0; } r = name2cookie (dir->folder, lastname, res); if (r) { if (r == -ENOENT && *path) { /* the "file" we didn't find was treated as a directory */ return -ENOTDIR; } return r; } dir = *res; } return 0; } long path2cookie (const char *path, char *lastname, FCOOKIE **res) { static FCOOKIE rootfc; long r; rootfc.name = "devdir:"; // FIXME: DEBUG! rootfc.attr = FA_DIR; rootfc.folder = &root; rootfc.bos_dev = 0; r = relpath2cookie ( &rootfc, path, lastname, res); DEBUG(( "path2cookie: r=%d\n", r)); return r; } aranym-0.9.15/atari/tools/devdos/bosmeta.h000077500000000000000000000037151213346724500204440ustar00rootroot00000000000000/* * Copyright (c) 2005 STanda Opichal * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $Source: /var/repos/aranym/atari/tools/devdos/bosmeta.h,v $ * * CVS info: * $Author: standa $ * $Date: 2006-02-18 18:22:56 $ * $Revision: 1.2 $ */ #ifndef ___bosmeta_h__ #define ___bosmeta_h__ #include "list.h" #include "metados.h" typedef struct { LINKABLE item; char *name; short attr; LIST *folder; /* BOS device entries */ short bos_dev; unsigned long bos_info_flags; } FCOOKIE; /* old stat structure */ struct xattr { unsigned short mode; long index; unsigned short dev; unsigned short rdev; unsigned short nlink; unsigned short uid; unsigned short gid; long size; long blksize; long nblocks; unsigned short mtime, mdate; unsigned short atime, adate; unsigned short ctime, cdate; short attr; short reserved2; long reserved3[2]; }; static inline long is_terminal( FCOOKIE *fc) { return fc->bos_info_flags & BOS_INFO_ISTTY; } long bosfs_initialize(void); long getxattr (FCOOKIE *fc, struct xattr *res); long name2cookie (LIST *folder, const char *name, FCOOKIE **res); long relpath2cookie (FCOOKIE *dir, const char *path, char *lastname, FCOOKIE **res); long path2cookie (const char *path, char *lastname, FCOOKIE **res); #endif /* ___bosmeta_h__ */ aranym-0.9.15/atari/tools/devdos/ctype.c000077500000000000000000000070341213346724500201270ustar00rootroot00000000000000/* * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * * * begin: 2000-04-17 * last change: 2000-04-17 * * Author: Frank Naumann * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * changes since last version: * * known bugs: * * todo: * * optimizations: * */ # define _CTc 0x01 /* control character */ # define _CTd 0x02 /* numeric digit */ # define _CTu 0x04 /* upper case */ # define _CTl 0x08 /* lower case */ # define _CTs 0x10 /* whitespace */ # define _CTp 0x20 /* punctuation */ # define _CTx 0x40 /* hexadecimal */ unsigned char _mint_ctype[256] = { _CTc, _CTc, _CTc, _CTc, /* 0x00..0x03 */ _CTc, _CTc, _CTc, _CTc, /* 0x04..0x07 */ _CTc, _CTc|_CTs, _CTc|_CTs, _CTc|_CTs, /* 0x08..0x0B */ _CTc|_CTs, _CTc|_CTs, _CTc, _CTc, /* 0x0C..0x0F */ _CTc, _CTc, _CTc, _CTc, /* 0x10..0x13 */ _CTc, _CTc, _CTc, _CTc, /* 0x14..0x17 */ _CTc, _CTc, _CTc, _CTc, /* 0x18..0x1B */ _CTc, _CTc, _CTc, _CTc, /* 0x1C..0x1F */ _CTs, _CTp, _CTp, _CTp, /* 0x20..0x23 */ _CTp, _CTp, _CTp, _CTp, /* 0x24..0x27 */ _CTp, _CTp, _CTp, _CTp, /* 0x28..0x2B */ _CTp, _CTp, _CTp, _CTp, /* 0x2C..0x2F */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x30..0x33 */ _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, _CTd|_CTx, /* 0x34..0x37 */ _CTd|_CTx, _CTd|_CTx, _CTp, _CTp, /* 0x38..0x3B */ _CTp, _CTp, _CTp, _CTp, /* 0x3C..0x3F */ _CTp, _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, /* 0x40..0x43 */ _CTu|_CTx, _CTu|_CTx, _CTu|_CTx, _CTu, /* 0x44..0x47 */ _CTu, _CTu, _CTu, _CTu, /* 0x48..0x4B */ _CTu, _CTu, _CTu, _CTu, /* 0x4C..0x4F */ _CTu, _CTu, _CTu, _CTu, /* 0x50..0x53 */ _CTu, _CTu, _CTu, _CTu, /* 0x54..0x57 */ _CTu, _CTu, _CTu, _CTp, /* 0x58..0x5B */ _CTp, _CTp, _CTp, _CTp, /* 0x5C..0x5F */ _CTp, _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, /* 0x60..0x63 */ _CTl|_CTx, _CTl|_CTx, _CTl|_CTx, _CTl, /* 0x64..0x67 */ _CTl, _CTl, _CTl, _CTl, /* 0x68..0x6B */ _CTl, _CTl, _CTl, _CTl, /* 0x6C..0x6F */ _CTl, _CTl, _CTl, _CTl, /* 0x70..0x73 */ _CTl, _CTl, _CTl, _CTl, /* 0x74..0x77 */ _CTl, _CTl, _CTl, _CTp, /* 0x78..0x7B */ _CTp, _CTp, _CTp, _CTc, /* 0x7C..0x7F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80..0x8F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90..0x9F */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xA0..0xAF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xB0..0xBF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xC0..0xCF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xD0..0xDF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xE0..0xEF */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* 0xF0..0xFF */ }; aranym-0.9.15/atari/tools/devdos/dosdir.c000077500000000000000000000107171213346724500202710ustar00rootroot00000000000000#include #include #include #include #include "bosmeta.h" #include "list.h" #include "dosdir.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif long __CDECL sys_dl_opendir (DIR *dirh, LIST *list, int flag) { DEBUG(("dl_opendir: %lx list=%lx\n", dirh, list)); dirh->list = list; dirh->mode = flag; dirh->current = (FCOOKIE*)listRewind(dirh->list); return 0; } long __CDECL sys_dl_readdir (DIR *dirh, char *buf, int len) { dirh->current = (FCOOKIE *)listNext((LINKABLE*)dirh->current); DEBUG(("dl_readdir: %lx list=%lx: len %d, '%s'\n", dirh, dirh->list, len, dirh->current ? dirh->current->name : "ENMFILES")); if (!dirh->current) return -ENMFILES; /* Insert file index if needed */ if (!dirh->mode) { *(long*)buf = (long)dirh->current; buf += 4; len -= 4; } if ( len <= 0 ) return -ERANGE; strncpy(buf, dirh->current->name, len-1); return 0; } long __CDECL sys_dl_closedir (DIR *dirh) { DEBUG(("dl_closedir: %lx list=%lx\n", dirh, dirh->list)); dirh->list = NULL; dirh->current = NULL; return 0; } long __CDECL sys_dl_readlabel (char *buf, int buflen) { strncpy(buf, "nfstderr", buflen-1); return 0; } long __CDECL sys_d_free (MetaDOSDir long *buf, int d) { #if 1 return -ENOSYS; #else PROC *p = curproc; fcookie *dir = 0; d = (int)tolower(pathNameMD[0])-'a'; dir = &p->p_cwd->root[d]; #endif } long __CDECL sys_d_create (MetaDOSDir const char *path) { return -EACCES; } long __CDECL sys_d_delete (MetaDOSDir const char *path) { return -EACCES; } long __CDECL sys_f_xattr (MetaDOSFile int flag, const char *name, struct xattr *xattr) { FCOOKIE *fc; long r = path2cookie (name, NULL, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } return getxattr( fc, xattr); } long __CDECL sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr) { FCOOKIE *fc; long r = path2cookie (name, NULL, &fc); if (r) { DEBUG(("Fattrib(%s): error %ld", name, r)); return r; } return fc->attr; } long __CDECL sys_f_delete (MetaDOSFile const char *name) { return -EACCES; } long __CDECL sys_f_rename (MetaDOSFile int junk, const char *old, const char *new) { return -EACCES; } /* * GEMDOS extension: Dpathconf(name, which) * * returns information about filesystem-imposed limits; "name" is the name * of a file or directory about which the limit information is requested; * "which" is the limit requested, as follows: * -1 max. value of "which" allowed * 0 internal limit on open files, if any * 1 max. number of links to a file {LINK_MAX} * 2 max. path name length {PATH_MAX} * 3 max. file name length {NAME_MAX} * 4 no. of bytes in atomic write to FIFO {PIPE_BUF} * 5 file name truncation rules * 6 file name case translation rules * * unlimited values are returned as 0x7fffffffL * * see also Sysconf() in dos.c */ long __CDECL sys_d_pathconf (MetaDOSDir const char *name, int which) { /* FIXME? now from cookfs */ switch (which) { case -1: return 7; case 0: return 0x7fffffffL; case 1: return 1; case 2: return PATH_MAX; case 3: return PATH_MAX; case 4: return 0; case 5: return 0; case 6: return 0; case 7: return 0x00800000L; default: return -ENOSYS; } } long __CDECL sys_d_opendir (MetaDOSDir const char *name, int flag) { DIR *dirh = (DIR *) dirMD; FCOOKIE *fc; long r = path2cookie( name, NULL, &fc); if (r) { DEBUG(("Dopendir(%s): path2cookie returned %ld", name, r)); return r; } r = sys_dl_opendir( dirh, fc->folder, flag); if (r) return r; return (long)dirh; } long __CDECL sys_d_readdir (MetaDOSDir int len, long handle, char *buf) { DIR *dirh = (DIR *) dirMD; return sys_dl_readdir( dirh, buf, len); } long __CDECL sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, struct xattr *xattr, long *xret) { DIR *dirh = (DIR *) dirMD; long ret = sys_dl_readdir( dirh, buf, len); if ( ret ) return ret; *xret = getxattr( dirh->current, xattr); return 0; } long __CDECL sys_d_rewind (MetaDOSDir long handle) { DIR *dirh = (DIR *) dirMD; dirh->current = (FCOOKIE *)listRewind(dirh->list); return 0; } long __CDECL sys_d_closedir (MetaDOSDir long handle) { return sys_dl_closedir( (DIR*)dirMD); } long __CDECL sys_d_readlabel (MetaDOSDir const char *name, char *buf, int buflen) { return sys_dl_readlabel(buf, buflen); } long __CDECL sys_d_writelabel (MetaDOSDir const char *name, const char *label) { return -ENOSYS; } aranym-0.9.15/atari/tools/devdos/dosdir.h000077500000000000000000000035621213346724500202760ustar00rootroot00000000000000/* * $Id: dosdir.h,v 1.2 2006-02-05 03:03:46 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosdir.h,v 1.2 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosdir_h # define _dosdir_h # include "mintfake.h" /* local interpretation of the 'struct dirent' */ typedef struct { LIST *list; FCOOKIE *current; short mode; } DIR; long __CDECL sys_dl_opendir (DIR *dirh, LIST *list, int flag); long __CDECL sys_dl_readdir (DIR *dirh, char *buf, int len); long __CDECL sys_dl_closedir (DIR *dirh); long __CDECL sys_dl_readlabel (char *buf, int buflen); long __CDECL sys_d_free (MetaDOSDir long *buf, int d); long __CDECL sys_d_create (MetaDOSDir const char *path); long __CDECL sys_d_delete (MetaDOSDir const char *path); long __CDECL sys_f_sfirst (MetaDOSDTA const char *path, int attrib); long __CDECL sys_f_snext (MetaDOSDTA0); long __CDECL sys_f_attrib (MetaDOSFile const char *name, int rwflag, int attr); long __CDECL sys_f_delete (MetaDOSFile const char *name); long __CDECL sys_f_rename (MetaDOSFile int junk, const char *old, const char *new); long __CDECL sys_d_pathconf (MetaDOSDir const char *name, int which); long __CDECL sys_d_opendir (MetaDOSDir const char *path, int flags); long __CDECL sys_d_readdir (MetaDOSDir int len, long handle, char *buf); long __CDECL sys_d_xreaddir (MetaDOSDir int len, long handle, char *buf, struct xattr *xattr, long *xret); long __CDECL sys_d_rewind (MetaDOSDir long handle); long __CDECL sys_d_closedir (MetaDOSDir long handle); long __CDECL sys_f_xattr (MetaDOSFile int flag, const char *name, struct xattr *xattr); long __CDECL sys_d_readlabel (MetaDOSDir const char *path, char *label, int maxlen); long __CDECL sys_d_writelabel (MetaDOSDir const char *path, const char *label); # endif /* _dosdir_h */ aranym-0.9.15/atari/tools/devdos/dosfile.c000077500000000000000000000131111213346724500204210ustar00rootroot00000000000000/* * $Id: dosfile.c,v 1.2 2006-02-18 18:22:56 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.c,v 1.20 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS file handling routines */ #include #include #include # include "dosfile.h" # include "bosmeta.h" # include "metados.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif typedef struct { FCOOKIE *fc; unsigned long offset; } FILEPTR; static inline long do_open( FILEPTR *f, FCOOKIE *fc, short mode) { metaopen_t metaopen; long ret = Metaopen(fc->bos_dev, &metaopen); if ( ret ) return ret; /* store the FCOOKIE* */ f->fc = fc; f->offset = 0; return 0; } static inline long do_close( FILEPTR *f) { Metaclose(f->fc->bos_dev); f->fc = NULL; return 0; } static inline long tty_read( FILEPTR *f, char *buf, long count) { return Metaread(f->fc->bos_dev, buf, 0, count); } static inline long tty_write( FILEPTR *f, const char *buf, long count) { return Metawrite(f->fc->bos_dev, buf, 0, count); } #define BLOCK_SIZE 2048 static inline long block_read( FILEPTR *f, char *buf, long count) { unsigned long boffset = f->offset / BLOCK_SIZE; unsigned long bcount = ( count + BLOCK_SIZE - 1) / BLOCK_SIZE; DEBUG(("block_read: '%s'\n", f->fc->name)); if ( (f->offset % BLOCK_SIZE) == 0 && (count % BLOCK_SIZE) == 0) { long ret = Metaread(f->fc->bos_dev, buf, boffset, bcount); if ( ret < 0 ) return ret; f->offset += ret * BLOCK_SIZE; return ret; } else { char *buffer = malloc( bcount * BLOCK_SIZE); long ret = Metaread(f->fc->bos_dev, buffer, boffset, bcount); if ( ret < 0 ) { free(buffer); return ret; } count = (ret * BLOCK_SIZE < count) ? ret * BLOCK_SIZE : count; memcpy( buf, &buffer[f->offset - (boffset * BLOCK_SIZE)], count); free( buffer); return ret; } } static inline long block_write( FILEPTR *f, const char *buf, long count) { unsigned long boffset = f->offset / BLOCK_SIZE; unsigned long bcount = ( count + BLOCK_SIZE - 1) / BLOCK_SIZE; DEBUG(("block_write: '%s'\n", f->fc->name)); if ( (f->offset % BLOCK_SIZE) == 0 && (count % BLOCK_SIZE) == 0) { long ret = Metawrite(f->fc->bos_dev, buf, boffset, bcount); if ( ret < 0 ) return ret; return count; } else { char *buffer = malloc( bcount * BLOCK_SIZE); long ret = Metaread(f->fc->bos_dev, buffer, boffset, bcount); if ( ret < 0 ) { free(buffer); return ret; } count = (ret * BLOCK_SIZE < count) ? ret * BLOCK_SIZE : count; memcpy( &buffer[f->offset - (boffset * BLOCK_SIZE)], buf, count); ret = Metawrite(f->fc->bos_dev, buffer, boffset, bcount); free(buffer); if ( ret < 0 ) return ret; return count; } } static inline long do_lseek( FILEPTR *f, long place, short how) { switch (how) { case 0: /* whence = SEEK_SET; */ f->offset = place; break; case 1: /* whence = SEEK_CUR; */ f->offset += place; break; case 2: /* whence = SEEK_END; */ /* FIXME? How to find the size of a device? */ default: ; } return -ENOSYS; } long __CDECL sys_f_open (MetaDOSFile const char *name, short mode) { FILEPTR *fp = (FILEPTR*)fpMD; FCOOKIE *fc; long ret = path2cookie( name, NULL, &fc); if (ret) return ret; #if 0 /* make sure the mode is legal */ mode &= O_USER; /* note: file mode 3 is reserved for the kernel; * for users, transmogrify it into O_RDWR (mode 2) */ if ((mode & O_RWMODE) == O_EXEC) mode = (mode & ~O_RWMODE) | O_RDWR; #endif return do_open (fp, fc, mode); } long __CDECL sys_f_create (MetaDOSFile const char *name, short attrib) { FILEPTR *fp = (FILEPTR*)fpMD; FCOOKIE *fc; long ret = path2cookie( name, NULL, &fc); if (ret) return ret; return do_open (fp, fc, 1); // return EPERM; } long __CDECL sys_f_close (MetaDOSFile short fd) { FILEPTR *fp = (FILEPTR*)fpMD; return do_close (fp); } long __CDECL sys_f_read (MetaDOSFile short fd, long count, char *buf) { FILEPTR *f = (FILEPTR*)fpMD; DEBUG(("f_read: '%s' %lx\n", f->fc->name, f->fc->bos_info_flags)); if (is_terminal (f->fc)) return tty_read (f, buf, count); DEBUG(("f_read: block '%s'\n", f->fc->name)); return block_read (f, buf, count); } long __CDECL sys_f_write (MetaDOSFile short fd, long count, const char *buf) { long r; FILEPTR *f = (FILEPTR*)fpMD; if (is_terminal (f->fc)) return tty_write (f, buf, count); /* Prevent broken device drivers from wiping the disk. * We return a zero rather than a negative error code * to help programs those don't handle GEMDOS errors * returned by Fwrite() */ if (count <= 0) return 0; #if 0 /* it would be faster to do this in the device driver, but this * way the drivers are easier to write */ if (f->flags & O_APPEND) { r = do_lseek (f, 0L, SEEK_END); /* ignore errors from unseekable files (e.g. pipes) */ if (r == EACCES) r = 0; } else #endif r = 0; if (r < 0) return r; return block_write (f, buf, count); } long __CDECL sys_f_seek (MetaDOSFile long place, short fd, short how) { FILEPTR *f = (FILEPTR*)fpMD; if (is_terminal (f->fc)) return 0; return do_lseek (f, place, how); } long __CDECL sys_f_datime (MetaDOSFile unsigned short *timeptr, short fd, short wflag) { FILEPTR *f = (FILEPTR*)fpMD; /* some programs use Fdatime to test for TTY devices */ if (is_terminal (f->fc)) return EACCES; return EACCES; //FIXME: xdd_datime (f, timeptr, wflag); } aranym-0.9.15/atari/tools/devdos/dosfile.h000077500000000000000000000015631213346724500204360ustar00rootroot00000000000000/* * $Id: dosfile.h,v 1.1 2006-01-30 01:03:28 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STan * * Based on: * dosfile.h,v 1.7 2001/06/13 20:21:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. */ # ifndef _dosfile_h # define _dosfile_h # include "mintfake.h" long __CDECL sys_f_open (MetaDOSFile const char *name, short mode); long __CDECL sys_f_create (MetaDOSFile const char *name, short attrib); long __CDECL sys_f_close (MetaDOSFile short fd); long __CDECL sys_f_read (MetaDOSFile short fd, long count, char *buf); long __CDECL sys_f_write (MetaDOSFile short fd, long count, const char *buf); long __CDECL sys_f_seek (MetaDOSFile long place, short fd, short how); long __CDECL sys_f_datime (MetaDOSFile unsigned short *timeptr, short fd, short wflag); # endif /* _dosfile_h */ aranym-0.9.15/atari/tools/devdos/dosfsfn.c000077500000000000000000000221751213346724500204500ustar00rootroot00000000000000/* * $Id: dosfsfn.c,v 1.2 2006-02-05 03:08:12 standa Exp $ * * The ARAnyM MetaDOS driver. * * 2002 STanda * * Based on: * dosdir.c,v 1.11 2001/10/23 09:09:14 fna Exp * * This file has been modified as part of the FreeMiNT project. See * the file Changes.MH for details and dates. * * * Copyright 1990,1991,1992 Eric R. Smith. * Copyright 1992,1993,1994 Atari Corporation. * All rights reserved. * */ /* DOS directory functions */ #include #include #include #include #include #include "bosmeta.h" #include "list.h" #include "dosdir.h" #include "emu_tos.h" #include "mintfake.h" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif #define TOS_SEARCH 0x01 #define E_OK 0 #define NUM_SEARCH 10 static struct { DIR dirh; unsigned long srchtim; } search_dirs[NUM_SEARCH]; static inline void release_cookie( FCOOKIE **dir) { /* dummy as there is no dup_cookie in the path2cookie() */ } /* * returns 1 if the given name contains a wildcard character */ static int has_wild (const char *name) { char c; while ((c = *name++) != 0) if (c == '*' || c == '?') return 1; return 0; } /* * void copy8_3(dest, src): convert a file name (src) into DOS 8.3 format * (in dest). Note the following things: * if a field has less than the required number of characters, it is * padded with blanks * a '*' means to pad the rest of the field with '?' characters * special things to watch for: * "." and ".." are more or less left alone * "*.*" is recognized as a special pattern, for which dest is set * to just "*" * Long names are truncated. Any extensions after the first one are * ignored, i.e. foo.bar.c -> foo.bar, foo.c.bar->foo.c. */ static void copy8_3 (char *dest, const char *src) { char fill = ' ', c; int i; if (src[0] == '.') { if (src[1] == 0) { strcpy (dest, ". . "); return; } if (src[1] == '.' && src[2] == 0) { strcpy (dest, ".. . "); return; } } if (src[0] == '*' && src[1] == '.' && src[2] == '*' && src[3] == 0) { dest[0] = '*'; dest[1] = 0; return; } for (i = 0; i < 8; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') fill = c = '?'; *dest++ = toupper((int)c & 0xff); } while (i++ < 8) *dest++ = fill; *dest++ = '.'; i = 0; fill = ' '; while (c && c != '.') c = *src++; if (c) { for( ;i < 3; i++) { c = *src++; if (!c || c == '.') break; if (c == '*') c = fill = '?'; *dest++ = toupper((int)c & 0xff); } } while (i++ < 3) *dest++ = fill; *dest = 0; } /* * int pat_match(name, patrn): returns 1 if "name" matches the template in * "patrn", 0 if not. "patrn" is assumed to have been expanded in 8.3 * format by copy8_3; "name" need not be. Any '?' characters in patrn * will match any character in name. Note that if "patrn" has a '*' as * the first character, it will always match; this will happen only if * the original pattern (before copy8_3 was applied) was "*.*". * * BUGS: acts a lot like the silly TOS pattern matcher. */ static int pat_match (const char *name, const char *template) { char expname [TOS_NAMELEN+1]; register char *s; register char c; if (*template == '*') return 1; copy8_3 (expname, name); s = expname; while ((c = *template++) != 0) { if (c != *s && c != '?') return 0; s++; } return 1; } /* * Fsfirst/next are actually implemented in terms of opendir/readdir/closedir. */ long __CDECL sys_f_sfirst (MetaDOSDTA const char *path, int attrib) { static short initialized = 0; char *s, *slash; FCOOKIE *dir, *newdir; struct dtabuf *dta = (struct dtabuf*)dtaMD; long r; int i, havelabel; char temp1[PATH_MAX]; TRACE(("Fsfirst(%s, %x)", path, attrib)); if ( !initialized ) { initialized = 1; for (i = 0; i < NUM_SEARCH; i++) { search_dirs[i].dirh.list = NULL; search_dirs[i].dirh.current = NULL; search_dirs[i].srchtim = 0; } } r = path2cookie (path, temp1, &dir); if (r) { DEBUG(("Fsfirst(%s): path2cookie returned %ld", path, r)); return r; } /* we need to split the last name (which may be a pattern) off from * the rest of the path, even if FS_KNOPARSE is true */ slash = 0; s = temp1; while (*s) { if (*s == '\\') slash = s; s++; } if (slash) { *slash++ = 0; /* slash now points to a name or pattern */ r = name2cookie (dir->folder, temp1, &newdir); release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): lookup returned %ld", path, r)); return r; } dir = newdir; } else slash = temp1; /* BUG? what if there really is an empty file name? */ if (!*slash) { DEBUG(("Fsfirst: empty pattern")); return -ENOENT; } /* copy the pattern over into dta_pat into TOS 8.3 form * remember that "slash" now points at the pattern * (it follows the last, if any) */ copy8_3 (dta->dta_pat, slash); /* if (attrib & FA_LABEL), read the volume label * * BUG: the label date and time are wrong. ISO/IEC 9293 14.3.3 allows this. * The Desktop set also date and time to 0 when formatting a floppy disk. */ havelabel = 0; if (attrib & FA_LABEL) { r = sys_dl_readlabel (dta->dta_name, TOS_NAMELEN+1); dta->dta_attrib = FA_LABEL; dta->dta_time = dta->dta_date = 0; dta->dta_size = 0; dta->magic = EVALID; if (r == E_OK && !pat_match (dta->dta_name, dta->dta_pat)) r = -ENOENT; if ((attrib & (FA_DIR|FA_LABEL)) == FA_LABEL) return r; else if (r == E_OK) havelabel = 1; } DEBUG(("Fsfirst(): havelabel = %d",havelabel)); if (!havelabel && has_wild (slash) == 0) { struct xattr xattr; /* no wild cards in pattern */ r = name2cookie (dir->folder, slash, &newdir); if (r == E_OK) { r = getxattr (newdir, &xattr); release_cookie (&newdir); } release_cookie (&dir); if (r) { DEBUG(("Fsfirst(%s): couldn't get file attributes",path)); return r; } dta->magic = EVALID; dta->dta_attrib = xattr.attr; dta->dta_size = xattr.size; strncpy (dta->dta_name, slash, TOS_NAMELEN-1); dta->dta_name[TOS_NAMELEN-1] = 0; return E_OK; } /* There is a wild card. Try to find a slot for an opendir/readdir * search. NOTE: we also come here if we were asked to search for * volume labels and found one. */ for (i = 0; i < NUM_SEARCH; i++) if (! search_dirs[i].dirh.list) break; if (i == NUM_SEARCH) { int oldest = 0; DEBUG(("Fsfirst(%s): having to re-use a directory slot!", path)); for (i = 1; i < NUM_SEARCH; i++) if ( search_dirs[i].srchtim < search_dirs[oldest].srchtim ) oldest = i; /* OK, close this directory for re-use */ i = oldest; sys_dl_closedir (&search_dirs[i].dirh); /* invalidate re-used DTA */ dta->magic = EVALID; } r = sys_dl_opendir (&search_dirs[i].dirh, dir->folder, TOS_SEARCH); DEBUG(("Fsfirst opendir(%s, %d) -> %d", dir->name, i, r)); if (r != E_OK) { DEBUG(("Fsfirst(%s): couldn't open directory (error %ld)", path, r)); release_cookie(&dir); return r; } /* set up the DTA for Fsnext */ dta->index = i; dta->magic = SVALID; dta->dta_sattrib = attrib; /* OK, now basically just do Fsnext, except that instead of ENMFILES we * return ENOENT. * NOTE: If we already have found a volume label from the search above, * then we skip the sys_f_snext and just return that. */ if (havelabel) return E_OK; r = sys_f_snext(MetaDOSDTA0pass); if (r == ENMFILES) r = -ENOENT; if (r) TRACE(("Fsfirst: returning %ld", r)); /* release_cookie isn't necessary, since &dir is now stored in the * DIRH structure and will be released when the search is completed */ return r; } /* * Counter for Fsfirst/Fsnext, so that we know which search slots are * least recently used. This is updated once per second by the code * in timeout.c. * * BUG: 1/second is pretty low granularity */ long __CDECL sys_f_snext (MetaDOSDTA0) { DIR *dirh; struct dtabuf *dta = (struct dtabuf*)dtaMD; short attr; TRACE (("Fsnext")); if (dta->magic == EVALID) { DEBUG (("Fsnext(%lx): DTA marked a failing search", dta)); return -ENMFILES; } if (dta->magic != SVALID) { DEBUG (("Fsnext(%lx): dta incorrectly set up", dta)); return -ENOSYS; } /* get the slot pointer */ search_dirs[ dta->index ].srchtim++; dirh = &search_dirs[ dta->index ].dirh; /* BUG: sys_f_snext and readdir should check for disk media changes */ for(;;) { char buf[TOS_NAMELEN+1]; long r = sys_dl_readdir( dirh, buf, TOS_NAMELEN+1); if (r == EBADARG) { DEBUG(("Fsnext: name too long")); continue; /* TOS programs never see these names */ } if (r != E_OK) { sys_dl_closedir (dirh); dta->magic = EVALID; if (r != ENMFILES) DEBUG(("Fsnext: returning %ld", r)); return r; } if (!pat_match (buf, dta->dta_pat)) continue; /* different patterns */ attr = dirh->current->attr; /* silly TOS rules for matching attributes */ if (attr == 0) break; if (attr & (FA_CHANGED|FA_RDONLY)) break; if (attr & dta->dta_sattrib) break; } dta->dta_attrib = attr; dta->dta_size = 0; strncpy (dta->dta_name, dirh->current->name, TOS_NAMELEN-1); /* convert to upper characters (we are in TOS domain) */ strupr (dta->dta_name); DEBUG(("Fsnext: %s\n", dta->dta_name)); return E_OK; } aranym-0.9.15/atari/tools/devdos/emu_tos.h000077500000000000000000000055031213346724500204620ustar00rootroot00000000000000/* * $Id: emu_tos.h,v 1.1 2006-01-30 01:03:28 standa Exp $ * * This file belongs to FreeMiNT. It's not in the original MiNT 1.12 * distribution. See the file CHANGES for a detailed log of changes. * * * Copyright 2000 Frank Naumann * All rights reserved. * * Please send suggestions, patches or bug reports to me or * the MiNT mailing list. * * * This file 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, or (at your option) * any later version. * * This file 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., 675 Mass Ave, Cambridge, MA 02139, USA. * */ # ifndef _mint_emu_tos_h # define _mint_emu_tos_h # ifdef __KERNEL__ # include "ktypes.h" # else # include # endif # define TOS_NAMELEN 13 struct dtabuf { ushort index; /* index into arrays in the PROC struct */ long magic; # define SVALID 0x1234fedcL /* magic for a valid search */ # define EVALID 0x5678ba90L /* magic for an exhausted search */ char dta_pat[TOS_NAMELEN+1]; /* pointer to pattern, if necessary */ char dta_sattrib; /* attributes being searched for */ /* this stuff is returned to the user */ char dta_attrib; ushort dta_time; ushort dta_date; ulong dta_size; char dta_name[TOS_NAMELEN+1]; }; /* defines for TOS attribute bytes */ # define FA_RDONLY 0x01 # define FA_HIDDEN 0x02 # define FA_SYSTEM 0x04 # define FA_LABEL 0x08 # define FA_DIR 0x10 # define FA_CHANGED 0x20 # ifdef __KERNEL__ # define FA_VFAT 0x0f /* VFAT entry */ # define FA_SYMLINK 0x40 /* symbolic link */ # endif /* Codes used with Cursconf() */ # define CURS_HIDE 0 # define CURS_SHOW 1 # define CURS_BLINK 2 # define CURS_NOBLINK 3 # define CURS_SETRATE 4 # define CURS_GETRATE 5 /* structure used to hold i/o buffers */ typedef struct io_rec { char *bufaddr; short buflen; volatile short head; volatile short tail; short low_water; short hi_water; } IOREC_T; /* Bconmap struct, * returned by Bconmap (-2) */ typedef struct { struct { long bconstat; long bconin; long bcostat; long bconout; long rsconf; IOREC_T *iorec; } *maptab; short maptabsize; } BCONMAP2_T; struct kbdvbase { long midivec; long vkbderr; long vmiderr; long statvec; long mousevec; long clockvec; long joyvec; long midisys; long ikbdsys; short drvstat; /* Non-zero if a packet is currently transmitted. */ }; typedef struct kbdvbase KBDVEC; # endif /* _mint_emu_tos_h */ aranym-0.9.15/atari/tools/devdos/list.h000077500000000000000000000131741213346724500177650ustar00rootroot00000000000000/* * Double linked list implementation * Copyright (c) 2006 windom authors (see AUTHORS file) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Taken from: * WinDom: a high level GEM library * Copyright (c) 1997-2006 windom authors (see AUTHORS file) * * $Source: /var/repos/aranym/atari/tools/devdos/list.h,v $ * * CVS info: * $Author: standa $ * $Date: 2006-01-30 01:03:28 $ * $Revision: 1.1 $ */ #ifndef __WINDOM_LIST__ #define __WINDOM_LIST__ /* __BEGIN_DECLS */ /** @addtogroup List * @{ */ /** element used to link structures each others * * This data shall be set at the very first place of the structure * if you want all the macro to work correctly. */ typedef struct Linkable { struct Linkable *next; /**< pointer to previous structure in the list */ struct Linkable *prev; /**< pointer to next structure in the list */ } LINKABLE; /** definition of a list of linked structures * * This is the starting point of the list of your elements. * This data point to both the first and the last element * of the list. * */ typedef struct { LINKABLE head; /**< first element of the list: this is a dummy element */ LINKABLE tail; /**< last element of the list: this is a dummy element */ } LIST; /** this is a zero-ed LIST data * * Warning: such list won't be reconized as an empty list. * You should call listInit() to properly initialise/zero/empty a list. */ #define listEmptyListInitializer() {{NULL,NULL},{NULL,NULL}} /** Initialisation of an empty LIST * * @param list the LIST data to initialise * * Initialises a list : \a list will be set as an * empty list. */ static inline void listInit( LIST *list ) { list->head.next = &list->tail; list->head.prev = (LINKABLE*)0L; list->tail.next = (LINKABLE*)0L; list->tail.prev = &list->head; } /** Insert the \a entry before \a iter * * @param iter is an element of the chained list * @param entry is a new element to insert in the list * */ static inline void listInsert( LINKABLE *iter, LINKABLE *entry ) { entry->next = iter; entry->prev = iter->prev; iter->prev->next = entry; iter->prev = entry; } /** Insert the \a entry after \a iter * * @param iter is an element of the chained list * @param entry is a new element to insert in the list * */ static inline void listAppend( LINKABLE *iter, LINKABLE *entry ) { entry->next = iter->next; entry->prev = iter; iter->next->prev = entry; iter->next = entry; } /** remove \a iter from the list * * @param iter is the element of the chained list to remove * */ static inline LINKABLE *listRemove( LINKABLE *iter ) { iter->prev->next = iter->next; iter->next->prev = iter->prev; return iter; } LIST *createList( void ); LIST *listSplice( LIST *list, LINKABLE *first, LINKABLE *pastLast ); /** usefull macro to parse all elements of a list. * * @param type is the type of the structure (to cast the \a i data) * @param i is the data to use in for loop. This data should be of the * \a type type. * @param list is the list to parse. * * This macro is based on a real \c for instruction, so you may leave * this loop by using the \c break instruction. * * Very important: the first data of the \a type structure must be a LINKABLE data. * * @par Exemple of use: * @code typedef struct { LINKABLE link; int other_datas; } ELT; LIST *list; ELT *e; (...) listForEach( ELT*, e, list) { int found; if (e->other_datas) found = do_stuff(e); else found = do_other_stuff(e); if (found) break; } @endcode * */ #define listForEach( type, i, list ) \ if ( list ) for( i=(type)(list)->head.next; \ ((LINKABLE*)i) != &(list)->tail; \ i=(type)((LINKABLE*)i)->next ) /** return the very first LINKABLE object of the list (before the first element linked) */ #define listRewind( list ) &((list)->head) /** return the very last LINKABLE object of the list (after the last element linked) */ #define listEnd( list ) &((list)->tail) /** return the next element on list. If the end of the list is reached (that is if the next * element is the very last LINKABLE object of the list) */ #define listNext( iter ) ((!((LINKABLE*)iter)->next->next) ? NULL : (((LINKABLE*)iter)->next)) /** return the previous element on list. If the begin of the list is reached (that is if the previous * element is the very first LINKABLE object of the list) */ #define listPrev( iter ) ((!((LINKABLE*)iter)->prev->prev) ? NULL : (((LINKABLE*)iter)->prev)) /** return if the list is empty or not */ #define listIsEmpty(list) ( ((list)->head.next) == (&(list)->tail)) /** return the first linked element of the list (the LINKABLE object right after listRewind), * or NULL if the list is empty */ #define listFirst(list) ( ((list)->head.next) == (&(list)->tail) ? NULL : ((list)->head.next)) #define listLast(list) ( ((list)->tail.prev) == (&(list)->head) ? NULL : ((list)->tail.prev)) typedef struct LinkablePtr { LINKABLE iter; void *value; } LINKABLEPTR; /** @} */ /* __END_DECLS */ #endif /* __WINDOM_LIST__ */ aranym-0.9.15/atari/tools/devdos/main.c000077500000000000000000000035741213346724500177340ustar00rootroot00000000000000/* * $Id: main.c,v 1.2 2006-09-25 18:13:25 standa Exp $ * * The ARAnyM BetaDOS driver. * * 2001/2002 STan * * Based on: * @(#)cookiefs/dosmain.c * * Copyright (c) Julian F. Reschke, 28. November 1995 * All rights reserved. * **/ #include #include #include #include #include "mintfake.h" #define DEVNAME "DEV.DOS Filesystem" #define VERSION "0.1" #if 0 #include "nfd.h" #define TRACE(x) NFD(x) #define DEBUG(x) NFD(x) #else #define TRACE(x) #define DEBUG(x) #endif char DriverName[] = DEVNAME" "VERSION; long ldp; void __CDECL ShowBanner( void ); void* __CDECL InitDevice( long bosDevID, long dosDevID ); unsigned long get_cookie (unsigned long tag); /* Diverse Utility-Funktionen */ static int Bconws( char *str ) { int cnt = 0; while (*str) { cnt++; if (*str == '\n') { Bconout (2, '\r'); cnt++; } Bconout (2, *str++); } return cnt; } void __CDECL ShowBanner( void ) { Bconws ( "\n\033p "DEVNAME" "VERSION" \033q " "\nCopyright (c) ARAnyM Development Team, "__DATE__"\n" ); } struct cookie { long tag; long value; }; unsigned long get_cookie (unsigned long tag) { struct cookie *cookie = *(struct cookie **)0x5a0; if (!cookie) return 0; while (cookie->tag) { if (cookie->tag == tag) return cookie->value; cookie++; } return 0; } /* FIXME: from bosmeta.c */ int bosfs_initialize(); void* __CDECL InitDevice( long bosDevID, long dosDevID ) { if (get_cookie(0x4D694E54L /*'MiNT'*/)) { return (void*)-1; } /* * We _must_ use the bosDevID to define the drive letter here * because MetaDOS (in contrary to BetaDOS) does not provide * the dosDevID */ DEBUG(("InitDevice: [dosDev=%ld, bosDev=%ld]", dosDevID, bosDevID )); if ( bosfs_initialize() < 0 ) { return (void*)-1; } return &ldp; } aranym-0.9.15/atari/tools/devdos/mdglue.S000077500000000000000000000214601213346724500202370ustar00rootroot00000000000000// // $Header: /var/repos/aranym/atari/tools/devdos/mdglue.S,v 1.1 2006-01-30 01:03:28 standa Exp $ // // 2001 STanda // // The basic file layout was taken from Julian Reschke's Cookies // .globl _init .globl _sys_d_free, _sys_f_sfirst, _sys_f_snext, _sys_f_open .globl _sys_f_close, _sys_d_atime, _sys_f_write, _sys_f_read .globl _sys_f_attrib, _sys_f_create, _sys_f_seek, _sys_f_cntl .globl _sys_d_create, _sys_d_delete, _sys_f_rename .globl _sys_d_getpath, _sys_d_dsetpath .globl _sys_d_pathconf, _sys_f_xattr, _sys_d_opendir, _sys_d_readdir .globl _sys_d_closedir, _sys_d_xreaddir, _sys_d_rewinddir .globl _sys_d_readlabel, _sys_d_delete .globl _DriverName, _ShowBanner, _InitDevice .macro PRINT value // nf_call( nf_get_id(NF_STDERR), value); #if 0 move.l #s_stderr,-(sp) move.l #0,-(sp) dc.w 0x7300 lea 8(sp),sp move.l \value,-(sp) move.l #s_frm,-(sp) move.l d0,-(sp) move.l #0,-(sp) dc.w 0x7301 lea 16(sp),sp #endif .endm PRINT #if 1 #define SREGS movem.l a0-a6/d1-d7,-(sp) #define RREGS movem.l (sp)+,a0-a6/d1-d7 #else #define SREGS #define RREGS #endif .macro SSTCK framereg move.l sp,temp // store the old stack to the new one (do not touch regs) move.l #stack,sp move.l temp,-(sp) SREGS move.l temp,\framereg .endm SSTCK .macro RSTCK RREGS move.l (sp),sp .endm RSTCK // // Call to the MetaDOS C function implementation macro // .macro MDBSR framereg,label move.w 4(\framereg),-(sp) move.l (\framereg),-(sp) move.l a5,-(sp) move.l a4,-(sp) move.l a3,-(sp) bsr \label lea 18(sp),sp .endm MDBSR .text _init: bsr _ShowBanner move.l #functionTable+12,d0 move.l #_DriverName,d1 rts initfun: movem.l a0-a6/d1-d7,-(sp) PRINT #1 move.l d1,-(sp) // BetaDOS's dosDevID + some weird word / MetaDOS pure crap move.w d0,-(sp) // bosDevID 16bit move.w #0,-(sp) // pad for gcc (long) bsr _InitDevice addq #8,sp movem.l (sp)+,a0-a6/d1-d7 // d1: filename conversion // Bit 0: 0 = force upper case // Bit 1: 0 = fully expand // Bit 2: 0 = critical error handler reports EWRPRO moveq #5,d1 rts functionTable: dc.l 0x4d414749 // 'MAGI' dc.l 0x434d4554 // 'CMET' dc.l 349 dc.l initfun dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 dc.l -1, -1, -1, -1, -1 // 49 dc.l -1, -1, -1, -1 dc.l wrap_dfree // 54 dc.l -1 dc.l -1 dc.l wrap_dcreate // 57 dc.l wrap_ddelete // 58 dc.l -1 // 59 // wrap_dsetpath dc.l wrap_fcreate // 60 dc.l wrap_fopen // 61 dc.l wrap_fclose // 62 dc.l wrap_fread // 63 dc.l wrap_fwrite // 64 dc.l wrap_fdelete // 65 dc.l wrap_fseek // 66 dc.l wrap_fattrib // 67 dc.l -1 dc.l -1 // 69 dc.l -1 dc.l -1 // 71 // Dgetpath dc.l -1, -1, -1 // 74 dc.l -1, -1, -1 dc.l wrap_fsfirst // 78 dc.l wrap_fsnext // 79 dc.l -1, -1, -1, -1, -1 // 84 dc.l -1 dc.l wrap_frename // 86 dc.l wrap_fdatime // 87 dc.l -1, -1 // 89 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 99 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 109 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 119 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 129 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 139 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 149 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 159 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 169 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 179 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 189 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 199 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 209 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 219 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 229 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 239 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 249 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 259 dc.l -1 // 260 // wrap_fcntl dc.l -1, -1, -1, -1 // 264 dc.l -1, -1, -1, -1, -1 // 269 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 279 dc.l -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // 289 dc.l -1, -1 dc.l wrap_dpathconf // 292 dc.l -1, -1 // 294 dc.l -1 dc.l wrap_dopendir // 296 dc.l wrap_dreaddir // 297 dc.l wrap_drewinddir // 298 dc.l wrap_dclosedir // 299 dc.l wrap_fxattr // 300 dc.l -1, -1, -1, -1 // 304 dc.l -1, -1, -1, -1, -1 // 309 dc.l -1, -1, -1, -1, -1 // 314 dc.l -1, -1, -1, -1, -1 // 319 dc.l -1, -1 dc.l wrap_dxreaddir // 322 dc.l -1, -1 dc.l -1, -1, -1, -1, -1 // 329 dc.l -1, -1, -1, -1, -1 // 334 dc.l -1, -1, -1 dc.l wrap_dreadlabel // 338 dc.l -1 // 339 dc.l -1, -1, -1, -1, -1 // 344 dc.l -1, -1, -1, -1, -1 // 349 wrap_dfree: PRINT #54 SSTCK a0 move.w 10(a0),-(sp) // drive # move.l 6(a0),-(sp) // diskinfo * MDBSR a0,_sys_d_free lea 6(sp),sp RSTCK rts wrap_dcreate: PRINT #57 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_create lea 4(sp),sp RSTCK rts wrap_ddelete: PRINT #58 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_delete lea 4(sp),sp RSTCK rts wrap_dsetpath: PRINT #59 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD //REM MDBSR a0,_sys_d_dsetpath lea 4(sp),sp RSTCK rts wrap_fcreate: PRINT #60 SSTCK a0 move.w 10(a0),-(sp) // attr move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_create lea 6(sp),sp RSTCK rts wrap_fopen: PRINT #61 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_open lea 6(sp),sp RSTCK cmp.l #0,d0 bmi fopen_error move.l #0,d0 // reset the fs to 0 (MetaDOS requires this) fopen_error: rts wrap_fclose: PRINT #62 SSTCK a0 move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_close lea 2(sp),sp RSTCK rts wrap_fread: PRINT #63 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_read lea 10(sp),sp RSTCK rts wrap_fwrite: PRINT #64 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // count move.w 6(a0),-(sp) // handle MDBSR a0,_sys_f_write lea 10(sp),sp RSTCK rts wrap_fdelete: PRINT #65 SSTCK a0 move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_delete lea 4(sp),sp RSTCK rts wrap_fseek: PRINT #66 SSTCK a0 move.w 12(a0),-(sp) // mode move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // count MDBSR a0,_sys_f_seek lea 8(sp),sp RSTCK rts wrap_fattrib: PRINT #67 SSTCK a0 move.w 12(a0),-(sp) // attrib move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_f_attrib lea 8(sp),sp RSTCK rts wrap_fsfirst: PRINT #78 SSTCK a0 move.w 10(a0),-(sp) // flags move.l a4,-(sp) // name/mask - 6(a0) or a4 MD MDBSR a0,_sys_f_sfirst lea 6(sp),sp RSTCK rts wrap_fsnext: PRINT #79 SSTCK a0 MDBSR a0,_sys_f_snext RSTCK rts wrap_frename: PRINT #86 SSTCK a0 move.l 12(a0),-(sp) // newname move.l a4,-(sp) // oldname - 8(a0) or a4 MD (yes 8(a0)!!!) move.w 6(a0),-(sp) // reserved MDBSR a0,_sys_f_rename lea 10(sp),sp RSTCK rts wrap_fdatime: PRINT #87 SSTCK a0 move.w 12(a0),-(sp) // flag move.w 10(a0),-(sp) // handle move.l 6(a0),-(sp) // timeptr MDBSR a0,_sys_f_datime MDBSR a0,_sys_f_datime lea 8(sp),sp RSTCK rts wrap_fcntl: PRINT #260 SSTCK a0 move.w 12(a0),-(sp) // cmd move.l 8(a0),-(sp) // argument move.w 6(a0),-(sp) // handle //REM MDBSR a0,_sys_f_cntl lea 8(sp),sp RSTCK rts wrap_dpathconf: PRINT #292 SSTCK a0 move.w 10(a0),-(sp) // mode move.l a4,-(sp) // name - 6(a0) or a4 MD MDBSR a0,_sys_d_pathconf lea 6(sp),sp RSTCK rts wrap_dopendir: PRINT #296 SSTCK a0 move.w 10(a0),-(sp) // flag move.l a4,-(sp) // name 6(a0) or a4 MD MDBSR a0,_sys_d_opendir lea 6(sp),sp RSTCK rts wrap_dreaddir: PRINT #297 SSTCK a0 move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_readdir lea 10(sp),sp RSTCK rts wrap_drewinddir: PRINT #298 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_rewind lea 4(sp),sp RSTCK rts wrap_dclosedir: PRINT #299 SSTCK a0 move.l 6(a0),-(sp) // dirhandle MDBSR a0,_sys_d_closedir lea 4(sp),sp RSTCK rts wrap_fxattr: PRINT #300 SSTCK a0 move.l 12(a0),-(sp) // xattr* move.l a4,-(sp) // name 8(a0) or a4 MD move.w 6(a0),-(sp) // flag MDBSR a0,_sys_f_xattr lea 10(sp),sp RSTCK rts wrap_dxreaddir: PRINT #322 SSTCK a0 move.l 20(a0),-(sp) // xret* move.l 16(a0),-(sp) // xattr* move.l 12(a0),-(sp) // buffer move.l 8(a0),-(sp) // dirhandle move.w 6(a0),-(sp) // len MDBSR a0,_sys_d_xreaddir lea 18(sp),sp RSTCK rts wrap_dreadlabel: PRINT #338 SSTCK a0 move.w 14(a0),-(sp) // len move.l 10(a0),-(sp) // buffer move.l a4,-(sp) // pathname 6(a0) or a4 MD MDBSR a0,_sys_d_readlabel lea 10(sp),sp RSTCK rts s_frm: .ascii "DEV: %ld\n\0" s_stderr: .ascii "DEBUGPRINTF\0" .bss temp: ds.l 1 ds.b 8192 stack: aranym-0.9.15/atari/tools/devdos/metados.h000077500000000000000000000127501213346724500204450ustar00rootroot00000000000000/* Metados Copyright (C) 2002 Patrice Mandin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _METADOS_H #define _METADOS_H #include /* for trap_14_xxx macros */ #ifndef OSBIND_CLOBBER_LIST #define OSBIND_CLOBBER_LIST "d0", "d1", "d2", "a0", "a1", "a2", "memory" #endif #ifndef trap_14_wwllw #define trap_14_wwllw(n, a, b, c, d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long) (b); \ long _c = (long) (c); \ short _d = (short)(d); \ \ __asm__ volatile \ ("\ movw %5,sp@-; \ movl %4,sp@-; \ movl %3,sp@-; \ movw %2,sp@-; \ movw %1,sp@-; \ trap #14; \ lea sp@(14),sp " \ : "=r"(retvalue) /* outputs */ \ : "g"(n), \ "r"(_a), "r"(_b), "r"(_c), "r"(_d) /* inputs */ \ : __CLOBBER_RETURN("d0") \ "d1", "d2", "a0", "a1", "a2", "memory" \ ); \ retvalue; \ }) #endif #ifndef trap_14_wwlwl #define trap_14_wwlwl(n,a,b,c,d) \ __extension__ \ ({ \ register long retvalue __asm__("d0"); \ short _a = (short)(a); \ long _b = (long)(b); \ short _c = (short)(c); \ long _d = (long)(d); \ \ __asm__ volatile ( \ "movl %5,sp@-\n\t" \ "movw %4,sp@-\n\t" \ "movl %3,sp@-\n\t" \ "movw %2,sp@-\n\t" \ "movw %1,sp@-\n\t" \ "trap #14\n\t" \ "lea sp@(14),sp" \ : "=r"(retvalue) \ : "g"(n), "r"(_a), "r"(_b), "r"(_c), "r"(_d) \ : OSBIND_CLOBBER_LIST \ ); \ retvalue; \ }) #endif /*--- Functions prototypes ---*/ #define Metainit(buffer) \ (void)trap_14_wl((short)0x30,(long)buffer) #define Metaopen(drive,buffer) \ (long)trap_14_wwl((short)0x31,(short)drive,(long)buffer) #define Metaclose(drive) \ (void)trap_14_ww((short)0x32,(short)drive) #define Metaread(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x33,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metawrite(drive,buffer,first_block,nb_blocks) \ (long)trap_14_wwllw((short)0x34,(short)drive,(long)buffer,(long)first_block,(short)nb_blocks) #define Metaseek(drive,dummy,offset) \ (long)trap_14_wwll((short)0x35,(short)(drive),(long)(dummy),(long)(offset)) #define Metastatus(void) \ (long)trap_14_wl((short)0x36,(long)(buffer)) #define Metaioctl(drive,magic,opcode,buffer) \ (long)trap_14_wwlwl((short)(0x37),(short)(drive),(long)(magic),(short)(opcode),(long)(buffer)) #define Metastartaudio(drive,dummy,metatracks_t_p) \ (long)trap_14_wwwl((short)(0x3b),(short)(drive),(short)(dummy),(long)(metatracks_t_p)) #define Metastopaudio(drive) \ (long)trap_14_ww((short)(0x3c),(short)(drive)) #define Metasetsongtime(drive,dummy,start,end) \ (long)trap_14_wwwll((short)(0x3d),(short)(drive),(short)(dummy),(long)(start),(long)(end)) #define Metagettoc(drive,dummy,metatocentry_t_p) \ (long)trap_14_wwwl((short)(0x3e),(short)(drive),(short)(dummy),(long)(metatocentry_t_p)) #define Metadiscinfo(drive,metadiscinfo_t_p) \ (long)trap_14_wwl((short)(0x3f),(short)(drive),(long)(metadiscinfo_t_p)) #define METADOS_IOCTL_MAGIC (((unsigned long)'F'<<24)|((unsigned long)'C'<<16)|('T'<<8)|'L') /* bos_info_t returning ioctl */ #define METADOS_IOCTL_BOSINFO (('B'<<8)|'I') /*--- Types ---*/ typedef struct { unsigned short version; unsigned long magic; char *log2phys; } __attribute__((packed)) metainfo_t; typedef struct { unsigned long drives_map; char *version; unsigned long reserved; metainfo_t *info; } __attribute__((packed)) metainit_t; typedef struct { char *name; unsigned long reserved[3]; } __attribute__((packed)) metaopen_t; typedef struct { char ext_status[32]; } __attribute__((packed)) metastatus_t; typedef struct { unsigned char count; unsigned char first; } __attribute__((packed)) metatracks_t; typedef struct { /* TOC entry for MetaGetToc() function */ unsigned char track; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metatocentry_t; typedef struct { unsigned char reserved; unsigned char minute; unsigned char second; unsigned char frame; } __attribute__((packed)) metadisc_msf_t; typedef struct { /* Discinfo for MetaDiscInfo() function */ unsigned char disctype, first, last, current; metadisc_msf_t relative; metadisc_msf_t absolute; metadisc_msf_t end; unsigned char index, reserved1[3]; unsigned long reserved2[123]; } __attribute__((packed)) metadiscinfo_t; /* METADOS_IOCTL_BOSINFO ioctl() .bos driver info */ /** the devide is a character device (all the block values in API are * meant as byte values for these */ #define BOS_INFO_ISTTY 0x00001UL /** the device will not be visible in the x:\dev nor in x:\dev\bos */ #define BOS_INFO_BOSHIDDEN 0x10000UL /** the device will not be visible in the x:\dev but will be in x:\dev\bos */ #define BOS_INFO_DEVHIDDEN 0x20000UL typedef struct { unsigned long flags; } __attribute__((packed)) bos_info_t; #endif /* _METADOS_H */ aranym-0.9.15/atari/tools/devdos/mintfake.h000077500000000000000000000025521213346724500206060ustar00rootroot00000000000000/* * $Id: mintfake.h,v 1.1 2006-01-30 01:03:28 standa Exp $ * * The ARAnyM MetaDOS driver. * * This is the FreeMiNT configuration file modified for * the ARAnyM HOSTFS.DOS MetaDOS driver * * 2002 STan */ #ifndef _mintfake_h_ #define _mintfake_h_ # ifndef ARAnyM_MetaDOS # define ARAnyM_MetaDOS # endif /* MetaDOS function header macros to let the functions create also metados independent */ # define MetaDOSFile void *devMD, char *pathNameMD, void *fpMD, long retMD, int opcodeMD, # define MetaDOSDir void *devMD, char *pathNameMD, DIR *dirMD, long retMD, int opcodeMD, # define MetaDOSDTA0 void *devMD, char *pathNameMD, void *dtaMD, long retMD, int opcodeMD # define MetaDOSDTA0pass devMD, pathNameMD, dtaMD, retMD, opcodeMD # define MetaDOSDTA MetaDOSDTA0, /* disable some defines from the sys/mint/ *.h */ #ifdef O_GLOBAL # undef O_GLOBAL #endif /* rollback the settings from the FreeMiNT CVS's sys/mint/config.h) */ #ifdef CREATE_PIPES # undef CREATE_PIPES #endif #ifdef SYSUPDATE_DAEMON # undef SYSUPDATE_DAEMON #endif #ifdef OLDSOCKDEVEMU # undef OLDSOCKDEVEMU #endif #ifdef WITH_KERNFS # undef WITH_KERNFS #endif # define WITH_KERNFS 0 #ifdef DEV_RANDOM # undef DEV_RANDOM #endif #ifdef PATH_MAX # undef PATH_MAX #endif # define PATH_MAX 1024 #ifdef SPRINTF_MAX # undef SPRINTF_MAX #endif # define SPRINTF_MAX 128 #endif /* _mintfake_h_ */ aranym-0.9.15/atari/tools/devdos/utility.c000077500000000000000000000642051213346724500205110ustar00rootroot00000000000000/* * fVDI utility functions * * $Id: utility.c,v 1.2 2006-02-05 03:02:33 standa Exp $ * * Copyright 1997-2003, Johan Klockars * This software is licensed under the GNU General Public License. * Please, see LICENSE.TXT for further information. */ #include #include /* for size_t */ #include #include "utility.h" /* just forwards */ static inline void copymem(const void *s, void *d, long n); static inline void setmem(void *d, long v, long n); static inline void copy(const char *src, char *dest); static inline void cat(const char *src, char *dest); short debug = 0; char silentx[10] = "\0\0\0\0"; /* * Global variables */ typedef struct _Circle { struct _Circle *prev; struct _Circle *next; long size; } Circle; short Falcon = 0; short TT = 0; long cpu = 0; long fpu = 0; long frb = 0; long video = 0; long nvdi = 0; long eddi = 0; long mint = 0; long magic = 0; short mxalloc = 0; /* BEG: from ctype.c */ #define _ctype _mint_ctype extern unsigned char _mint_ctype[256]; # define _CTc 0x01 /* control character */ # define _CTd 0x02 /* numeric digit */ # define _CTu 0x04 /* upper case */ # define _CTl 0x08 /* lower case */ # define _CTs 0x10 /* whitespace */ # define _CTp 0x20 /* punctuation */ # define _CTx 0x40 /* hexadecimal */ # define isalnum(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl|_CTd)) # define isalpha(c) ( _ctype[(unsigned char)(c)] & (_CTu|_CTl)) # define isascii(c) (!((c) & ~0x7f)) # define iscntrl(c) ( _ctype[(unsigned char)(c)] & _CTc) # define isdigit(c) ( _ctype[(unsigned char)(c)] & _CTd) # define isgraph(c) (!(_ctype[(unsigned char)(c)] & (_CTc|_CTs)) && (_ctype[(unsigned char)(c)])) # define islower(c) ( _ctype[(unsigned char)(c)] & _CTl) # define isprint(c) (!(_ctype[(unsigned char)(c)] & _CTc) && (_ctype[(unsigned char)(c)])) # define ispunct(c) ( _ctype[(unsigned char)(c)] & _CTp) # define isspace(c) ( _ctype[(unsigned char)(c)] & _CTs) # define isupper(c) ( _ctype[(unsigned char)(c)] & _CTu) # define isxdigit(c) ( _ctype[(unsigned char)(c)] & _CTx) # define iswhite(c) (isspace (c)) # define isodigit(c) ((c) >= '0' && (c) <= '7') # define iscymf(c) (isalpha(c) || ((c) == '_')) # define iscym(c) (isalnum(c) || ((c) == '_')) # define _toupper(c) ((c) ^ 0x20) # define _tolower(c) ((c) ^ 0x20) # define _toascii(c) ((c) & 0x7f) int tolower (int c) { return (isupper (c) ? _tolower (c) : c); } int toupper (int c) { return (islower (c) ? _toupper (c) : c); } /* END: from ctype.c */ char * strupr (char *s) { char c; char *old = s; while ((c = *s) != 0) { if (islower (c)) *s = _toupper(c); s++; } return old; } /* * Turn string (max four characters) into a long */ long str2long(const unsigned char *text) { long v; v = 0; while (*text) { v <<= 8; v += *text++; } return v; } long get_l(long addr) { return *(long *)addr; } /* * Get a long value after switching to supervisor mode */ long get_protected_l(long addr) { long oldstack, v; oldstack = (long)Super(0L); v = *(long *)addr; Super((void *)oldstack); return v; } void set_l(long addr, long value) { *(long *)addr = value; } static inline void copymem(const void *s, void *d, long n) { const char *src = (const char *)s; char *dest = (char *)d; for(n = n - 1; n >= 0; n--) *dest++ = *src++; } static void copymem_aligned(const void *s, void *d, long n) { const long *src = (const long *)s; long *dest = (long *)d; long n4; for(n4 = (n >> 2) - 1; n4 >= 0; n4--) *dest++ = *src++; if (n & 3) { const char *s1 = (const char *)src; char *d1 = (char *)dest; switch(n & 3) { case 3: *d1++ = *s1++; case 2: *d1++ = *s1++; case 1: *d1++ = *s1++; break; } } } void *memcpy(void *dest, const void *src, size_t n) { if (n > 3) { if (!((long)dest & 1)) { if (!((long)src & 1)) { copymem_aligned(src, dest, n); return dest; } } else if ((long)src & 1) { *((char *)dest)++ = *((const char *)src)++; copymem_aligned(src, dest, n - 1); return (char *)dest - 1; } } copymem(src, dest, n); return dest; } void *memmove(void *dest, const void *src, long n) { const char *s1; char *d1; if (((long)dest >= (long)src + n) || ((long)dest + n <= (long)src)) return memcpy(dest, src, n); if ((long)dest < (long)src) { s1 = (const char *)src; d1 = (char *)dest; for(n--; n >= 0; n--) *d1++ = *s1++; } else { s1 = (const char *)src + n; d1 = (char *)dest + n; for(n--; n >= 0; n--) *(--d1) = *(--s1); } return dest; } static inline void setmem(void *d, long v, long n) { char *dest; dest = (char *)d; for(n = n - 1; n >= 0; n--) *dest++ = (char)v; } static void setmem_aligned(void *d, long v, long n) { long *dest; long n4; dest = (long *)d; for(n4 = (n >> 2) - 1; n4 >= 0; n4--) *dest++ = v; if (n & 3) { char *d1 = (char *)dest; switch(n & 3) { case 3: *d1++ = (char)(v >> 24); case 2: *d1++ = (char)(v >> 16); case 1: *d1++ = (char)(v >> 8); break; } } } /* This function needs an 'int' parameter * to be compatible with gcc's built-in * version. * For module use, a separate version will * be needed since they can't be guaranteed * to have the same size for 'int'. */ void *memset(void *s, int c, size_t n) { if ((n > 3) && !((long)s & 1)) { unsigned long v; v = ((unsigned short)c << 8) | (unsigned short)c; v = (v << 16) | v; setmem_aligned(s, v, n); } else setmem(s, c, n); return s; } long strlen(const char *s) { const char *p = s; while (*p++) ; return (long)(p - s) - 1; } int strcmp(const char *s1, const char *s2) { char c1; do { if (!(c1 = *s1++)) { s2++; break; } } while (c1 == *s2++); return (long)(c1 - s2[-1]); } long strncmp(const char *s1, const char *s2, size_t n) { char c1; long ns; /* size_t can't be negative */ ns = n; for(ns--; ns >= 0; ns--) { if (!(c1 = *s1++)) { s2++; break; } if (c1 != *s2++) break; } if (ns < 0) return 0L; return (long)(c1 - s2[-1]); } int memcmp(const void *s1, const void *s2, size_t n) { const char *s1c, *s2c; long ns; /* size_t can't be negative */ ns = n; s1c = (const char *)s1; s2c = (const char *)s2; for(ns--; ns >= 0; ns--) { if (*s1c++ != *s2c++) return (long)(s1c[-1] - s2c[-1]); } return 0L; } static inline void copy(const char *src, char *dest) { while ( (*dest++ = *src++) ) ; } char *strcpy(char *dest, const char *src) { copy(src, dest); return dest; } char *strncpy(char *dest, const char *src, size_t n) { char c1, *d; long ns; d = dest; ns = n; for(ns--; ns >= 0; ns--) { c1 = *src++; *dest++ = c1; if (!c1) break; } for(ns--; ns >= 0; ns--) *dest++ = 0; return d; } char *strdup(const char *s) { char *d; if ((d = (char *)malloc(strlen(s) + 1))) strcpy(d, s); return d; } static inline void cat(const char *src, char *dest) { while(*dest++) ; copy(src, dest - 1); } char *strcat(char *dest, const char *src) { cat(src, dest); return dest; } char *strchr(const char *s, long c) { char ch, c1; if (!c) return (char *)s + strlen(s); c1 = c; while(ch = *s++) { if (ch == c1) return (char *)s - 1; } return 0; } char *strrchr(const char *s, long c) { char *found, ch, c1; if (!c) return (char *)s + strlen(s); c1 = c; found = 0; while(ch = *s++) { if (ch == c1) found = (char *)s; } if (found) return found - 1; return 0; } void *memchr(const void *s, long c, size_t n) { char ch, c1; char *m; long ns; m = (char *)s; c1 = c; ns = n; for(ns--; ns >= 0; ns--) { ch = *m++; if (ch == c1) return (char *)m - 1; } return 0; } char *memrchr(const void *s, long c, size_t n) { char ch, c1; const char *m; long ns; m = (const char *)s + n; c1 = c; ns = n; for(ns--; ns >= 0; ns--) { ch = *--m; if (ch == c1) return (void *)m; } return 0; } long numeric(long ch) { if ((ch >= '0') && (ch <= '9')) return 1; return 0; } long check_base(char ch, long base) { if (numeric(ch) && (ch < '0' + base)) return ch - '0'; if ((ch >= 'a') && (ch <= 'z')) ch -= 'a' - 'A'; if ((ch >= 'A') && (ch < 'A' + base - 10)) return ch - 'A' + 10; return -1; } long atol(const char *text) { long n; int minus, base, ch; while(isspace(*text)) text++; minus = 0; if (*text == '-') { minus = 1; text++; } base = 10; if (*text == '$') { base = 16; text++; } else if (*text == '%') { base = 2; text++; } n = 0; while ((ch = check_base(*text++, base)) >= 0) n = n * base + ch; if (minus) n = -n; return n; } void ultoa(char *buf, unsigned long un, unsigned long base) { char *tmp, ch; tmp = buf; do { ch = un % base; un = un / base; if (ch <= 9) ch += '0'; else ch += 'a' - 10; *tmp++ = ch; } while (un); *tmp = '\0'; while (tmp > buf) { ch = *buf; *buf++ = *--tmp; *tmp = ch; } } void ltoa(char *buf, long n, unsigned long base) { unsigned long un; char *tmp, ch; un = n; if ((base == 10) && (n < 0)) { *buf++ = '-'; un = -n; } tmp = buf; do { ch = un % base; un = un / base; if (ch <= 9) ch += '0'; else ch += 'a' - 10; *tmp++ = ch; } while (un); *tmp = '\0'; while (tmp > buf) { ch = *buf; *buf++ = *--tmp; *tmp = ch; } } /* Mostly complete, but only simple things tested */ long sprintf(char *str, const char *format, ...) { long r; va_list args; va_start(args, format); r = vsprintf( str, format, args); va_end(args); return r; } /* Mostly complete, but only simple things tested */ long vsprintf(char *str, const char *format, va_list args) { int mode = 0; char *s, *text, ch; long val_l = 0; int base = 10; int field = 0; int precision = 0; int opts = 0; s = str; while ( (ch = *format++) ) { if (mode) { switch(ch) { case 's': text = va_arg(args, char *); while ((*str++ = *text++)) ; str--; mode = 0; break; case 'c': *str++ = va_arg(args, int); /* char promoted to int */ mode = 0; break; case 'p': opts |= 16; mode = 4; case 'x': case 'X': base = 16; if (opts & 16) { *str++ = '0'; *str++ = 'x'; } case 'o': if (base == 10) { base = 8; if (opts & 16) { *str++ = '0'; } } case 'u': opts |= 32; /* Unsigned conversion */ case 'd': case 'i': if (!(opts & 0x0100) && (opts & 1) && !(opts & 8)) { precision = field; field = 0; } switch (mode) { case 4: val_l = va_arg(args, long); break; case 3: if (opts & 32) val_l = va_arg(args, unsigned char); else val_l = va_arg(args, signed char); break; case 2: if (opts & 32) val_l = va_arg(args, unsigned short); else val_l = va_arg(args, short); break; case 1: if (opts & 32) val_l = va_arg(args, unsigned int); else val_l = va_arg(args, int); break; default: break; } if (!(opts & 32)) { if (val_l > 0) { if (opts & 4) *str++ = '+'; else if (opts & 2) *str++ = ' '; } else if (val_l < 0) { *str++ = '-'; val_l = -val_l; } } if (val_l || !(opts & 0x0100) || (precision != 0)) ultoa(str, val_l, base); val_l = strlen(str); if (val_l < precision) { memmove(str + precision - val_l, str, val_l + 1); memset(str, '0', precision - val_l); } str += strlen(str); mode = 0; break; case '%': *str++ = '%'; mode = 0; break; case 'h': opts |= 0x8000; if (mode == 1) mode = 2; else if (mode == 2) mode = 3; else opts |= 0x4000; break; case 'z': case 't': case 'l': opts |= 0x8000; if (mode == 1) mode = 4; else opts |= 0x4000; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (mode == 1) { ch -= '0'; if (!ch && !(opts & 0x8000)) { if (!(opts & 1)) opts |= 1; /* Zero padding */ else opts |= 0x4000; } else { opts |= 0x8000; if (opts & 0x0100) { if (!(opts & 0x0200)) { opts |= 0x0400; precision = precision * 10 + ch; } else opts |= 0x4000; } else if (!(opts & 0x0800)) { opts |= 0x0400; field = field * 10 + ch; } else opts |= 0x4000; } } else opts |= 0x4000; break; case '*': if (mode == 1) { if (opts & 0x0100) { if (!(opts & 0x0600)) { opts |= 0x0200; precision = va_arg(args, int); if (precision < 0) precision = 0; } else opts |= 0x4000; } else if (!(opts & 0x8c00)) { opts |= 0x8800; field = va_arg(args, int); if (field < 0) { opts |= 8; field = -field; } } else opts |= 0x4000; } else opts |= 0x4000; break; case ' ': if (!(opts & 0x8002)) { opts |= 2; /* Space in front of positive numbers */ } else opts |= 0x4000; break; case '+': if (!(opts & 0x8004)) { opts |= 4; /* Sign in front of all numbers */ } else opts |= 0x4000; break; case '-': if (!(opts & 0x8008)) { opts |= 8; /* Left justified field */ } else opts |= 0x4000; break; case '#': if (!(opts & 0x8010)) { opts |= 16; /* 0x/0 in front of hexadecimal/octal numbers */ } else opts |= 0x4000; break; case '.': if (!(opts & 0x0100) && (mode == 1)) { opts &= ~0x0400; opts |= 0x8100; precision = 0; } else opts |= 0x4000; break; default: opts |= 0x4000; break; } if (opts & 0x4000) { *str++ = '%'; *str++ = '?'; mode = 0; } if ((mode == 0) && (field > str - s)) { val_l = field - (str - s); if (opts & 8) { memset(str, ' ', val_l); } else { memmove(s + val_l, s, str - s); memset(s, ' ', val_l); } str += val_l; } } else if (ch == '%') { mode = 1; base = 10; opts = 0; field = 0; precision = 0; s = str; } else { *str++ = ch; } } *str = 0; return strlen(s); } void qsort(void *base, long nmemb, long size, long (*compar)(const void *, const void *)) { static long incs[16] = { 1391376, 463792, 198768, 86961, 33936, 13776, 4592, 1968, 861, 336, 112, 48, 21, 7, 3, 1 }; long i, j, k, h, j_size, h_size; short n; char buf[16], *v, *p1, *p2, *cbase; v = buf; if (size > sizeof(buf)) { v = malloc(size); if (!v) /* Can't sort? */ return; } cbase = (char *)base; for(k = 0; k < 16; k++) { h = incs[k]; h_size = h * size; for(i = h; i < nmemb; i++) { j = i; j_size = j * size; p1 = v; p2 = cbase + j_size; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; while ((j >= h) && (compar(v, cbase + j_size - h_size) < 0)) { p1 = cbase + j_size; p2 = p1 - h_size; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; j -= h; j_size -= h_size; } p1 = cbase + j_size; p2 = v; for(n = size - 1; n >= 0; n--) *p1++ = *p2++; } } if (size > sizeof(buf)) free(v); } void *fmalloc(long size, long type) { Circle *new; if (mint | magic) { if (!(type & 0xfff8)) /* Simple type? */ type |= 0x4030; /* Keep around, supervisor accessible */ new = (Circle *)Mxalloc(size + sizeof(Circle), type); } else { type &= 3; if (mxalloc) /* Alternative if possible */ new = (Circle *)Mxalloc(size + sizeof(Circle), type); else new = (Circle *)Malloc(size + sizeof(Circle)); } if ((long)new > 0) { if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; ltoa(buffer, (long)new, 16); puts("Allocation at $"); puts(buffer); puts(", "); ltoa(buffer, size, 10); puts(buffer); puts_nl(" bytes"); } new->size = size + sizeof(Circle); *(long *)&new[1] = size; return (void *)&new[1]; } else return new; } #if 0 static short block_space[] = {32, 76, 156, 316, 1008, 2028, 4068, 8148, 16308}; #else static short block_space[] = {16, 48, 112, 240, 496, 1008, 2028, 4068, 8148, 16308}; #endif static char *block_free[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #if 0 static char *block_used[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #else #if 0 static Circle block_used[] = { {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}; #else static Circle *block_used[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; #endif #endif static short free_blocks[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static short used_blocks[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; static short allocated = 0; #define ADDR_NOT_OK 0xfc000003 void allocate(long amount) { const int sizes = sizeof(block_space) / sizeof(block_space[0]); char *buf; Circle *link, *last; int i; amount &= ~0x0fL; if (!amount) return; buf = fmalloc(amount * 1024, 3); if (!buf) return; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Malloc at "); ltoa(buf, (long)buf, 16); puts(buf); puts("\x0a\x0d"); } last = (Circle *)block_free[sizes - 1]; for(i = 0; i < amount; i += 16) { link = (Circle *)&buf[i * 1024L]; link->next = last; link->prev = 0; link->size = sizes - 1; last = link; } block_free[sizes - 1] = (char *)last; free_blocks[sizes - 1] += amount >> 4; allocated += amount >> 4; } #define OS_MARGIN 64 #define MIN_BLOCK 32 #define LINK_SIZE (sizeof(Circle)) #define MIN_KB_BLOCK void *malloc(long size) { int m, n; const int sizes = sizeof(block_space) / sizeof(block_space[0]); char *block, buf[10]; Circle *link, *next; if ( (size > 16 * 1024 - OS_MARGIN - LINK_SIZE)) return fmalloc(size, 3); /* This will always break eventually thanks to the if-statement above */ for(n = 0; n < sizes; n++) { if (size <= block_space[n]) break; } if ((debug > 2) && !(silentx[0] & 0x02)) { ltoa(buf, n, 10); puts("Alloc: Need block of size "); puts(buf); puts("/"); ltoa(buf, size, 10); puts(buf); puts("\x0a\x0d"); } if (!block_free[n]) { for(m = n + 1; m < sizes; m++) { if (block_free[m]) break; } if (m >= sizes) { m = sizes - 1; block_free[m] = fmalloc(16 * 1024 - OS_MARGIN, 3); if (!block_free[m]) return 0; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Malloc at "); ltoa(buf, (long)block_free[m], 16); puts(buf); puts("\x0a\x0d"); } link = (Circle *)block_free[m]; link->next = 0; link->prev = 0; link->size = m; free_blocks[m]++; allocated++; } for(; m > n; m--) { if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Splitting\x0a\x0d"); } block_free[m - 1] = block_free[m]; link = (Circle *)block_free[m]; block_free[m] = (char *)link->next; free_blocks[m]--; next = (Circle *)(block_free[m - 1] + block_space[m - 1] + LINK_SIZE); link->next = next; link->prev = 0; link->size = m - 1; free_blocks[m - 1]++; link = next; link->next = 0; link->prev = 0; link->size = m - 1; free_blocks[m - 1]++; } } else { if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Available\x0a\x0d"); } } block = block_free[n]; block_free[n] = (char *)((Circle *)block)->next; if ((debug > 2) && !(silentx[0] & 0x02)) { puts(" Allocating at "); ltoa(buf, (long)block, 16); puts(buf); puts(" (next at "); ltoa(buf, (long)block_free[n], 16); puts(buf); puts(")\x0a\x0d"); } ((Circle *)block)->size = (((Circle *)block)->size & 0xffff) + (size << 16); if (1 ) { Circle *new = (Circle *)block; if (block_used[n]) { new->prev = block_used[n]->prev; new->next = block_used[n]; block_used[n]->prev->next = new; block_used[n]->prev = new; } else { block_used[n] = new; new->prev = new; new->next = new; } } free_blocks[n]--; used_blocks[n]++; *(long *)(block + sizeof(Circle)) = block_space[n]; return block + sizeof(Circle); } void *realloc(void *addr, long new_size) { Circle *current; long old_size; void *new; if (!addr) return malloc(new_size); if (!new_size) { free(addr); return 0; } new = malloc(new_size); if ((long)new <= 0) return 0; current = &((Circle *)addr)[-1]; #if 0 if (current->prev) #else if ((long)current->prev & 1) #endif old_size = current->size - sizeof(Circle); else old_size = current->size >> 16; copymem_aligned(addr, new, old_size < new_size ? old_size : new_size); free(addr); if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; puts("Reallocation from size "); ltoa(buffer, old_size, 10); puts(buffer); puts(" at $"); ltoa(buffer, (long)addr, 16); puts(buffer); puts(" to "); ltoa(buffer, new_size, 10); puts_nl(buffer); } return new; } long free(void *addr) { Circle *current; long size, ret; if (!addr) return 0; current = &((Circle *)addr)[-1]; if (!((long)current->prev & 1)) { size = current->size & 0xffff; if (((debug > 2) && !(silentx[0] & 0x02)) || (unsigned int)size >= sizeof(block_space) / sizeof(block_space[0]) || !(current->size >> 16)) { char buf[10]; puts("Freeing at "); ltoa(buf, (long)current, 16); puts(buf); #if 1 puts(" ("); ltoa(buf, (long)current->size, 16); puts(buf); puts(" ,"); ltoa(buf, (long)current->prev, 16); puts(buf); puts(" ,"); ltoa(buf, (long)current->next, 16); puts(buf); puts(")"); #endif puts("\x0a\x0d"); } if (1) { if (block_used[size] == current) { block_used[size] = current->next; if (current->next == current->prev) block_used[size] = 0; } current->prev->next = current->next; current->next->prev = current->prev; } current->next = (Circle *)block_free[size]; block_free[size] = (char *)current; free_blocks[size]++; used_blocks[size]--; return 0; } else { if ((debug > 2) && !(silentx[0] & 0x01)) { char buf[10]; puts("Standard free at "); ltoa(buf, (long)current, 16); puts(buf); puts("\x0a\x0d"); } } size = current->size; if ((debug > 2) && !(silentx[0] & 0x01)) { char buffer[10]; ltoa(buffer, (long)current, 16); puts("Freeing at $"); puts_nl(buffer); } ret = Mfree(current); if (ret) return ret; else return size; } long puts(const char *text) { #if 0 nfCall((nf_print_id, text)); #endif return 1; } long init_utility(void) { long tmp; tmp = (long)Mxalloc(10, 3); /* Try allocating a little memory */ if (tmp == -32) mxalloc = 0; else if (tmp < 0) return 0; /* Should not happen */ else { mxalloc = 1; Mfree((void *)tmp); } return 1; } aranym-0.9.15/atari/tools/devdos/utility.h000077500000000000000000000050071213346724500205110ustar00rootroot00000000000000#ifndef UTILITY_H #define UTILITY_H /* * fVDI utility function declarations * * $Id: utility.h,v 1.2 2006-02-05 03:02:33 standa Exp $ * * Copyright 2003, Johan Klockars * This software is licensed under the GNU General Public License. * Please, see LICENSE.TXT for further information. */ long init_utility(void); /* * Memory access */ long get_protected_l(long addr); void set_protected_l(long addr, long value); long get_l(long addr); void set_l(long addr, long value); /* * Cookie and XBRA access */ long get_cookie(const unsigned char *cname, long super); long set_cookie(const unsigned char *name, long value); long remove_xbra(long vector, const unsigned char *name); void check_cookies(void); /* * Memory pool allocation (from set of same sized blocks) */ long initialize_pool(long size, long n); char *allocate_block(long size); void free_block(void *addr); /* * Memory/string operations */ void *memchr(const void *s, long c, size_t n); char *memrchr(const void *s, long c, size_t n); void *memcpy(void *dest, const void *src, size_t n); void *memmove(void *dest, const void *src, long n); void *memset(void *s, int c, size_t n); char *strdup(const char *s); char *strncpy(char *dest, const char *src, size_t n); long strncmp(const char *s1, const char *s2, size_t n); char *strcat(char *dest, const char *src); char *strchr(const char *s, long c); char *strrchr(const char *s, long c); char *strupr(char *s); void qsort(void *base, long nmemb, long size, long (*compar)(const void *, const void *)); /* * Character numerics */ long numeric(long ch); long check_base(char ch, long base); long atol(const char *text); void ltoa(char *buf, long n, unsigned long base); void ultoa(char *buf, unsigned long un, unsigned long base); long str2long(const unsigned char *text); /* * General memory allocation */ void *fmalloc(long size, long type); void *malloc(long size); void *realloc(void *addr, long new_size); long free(void *addr); long free_all(void); void allocate(long amount); /* * ctype.h */ int tolower (int c); int toupper (int c); /* * Text output */ long puts(const char *text); void error(const char *text1, const char *text2); #define puts_nl(text) { puts(text); puts("\x0a\x0d"); } long sprintf(char *str, const char *format, ...); long vsprintf(char *str, const char *format, va_list args); /* * Maths */ short Isin(short angle); short Icos(short angle); #define ABS(x) (((x) >= 0) ? (x) : -(x)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define MAX(x,y) ((x) > (y) ? (x) : (y)) #endif aranym-0.9.15/atari/tools/pc101us.kbd.bz2000066400000000000000000000004231213346724500177150ustar00rootroot00000000000000BZh91AY&SYF@v`F4h24h5$  ʠ4d`hi 220` ,1x=pcQń0@@?CQ%zH@LIK: !@PW($E@!YLb4&u%Jd `d[B0EH@^QO48ӹtw>a3߇~ k.p!aranym-0.9.15/atari/tools/pcpatch.c000066400000000000000000000075461213346724500171460ustar00rootroot00000000000000#include #include /* A part of Fopen/Fcreate routine... (adding #100 to the file handle for in mem data) L2334: move.l a5,4(a4) ; 294D0004 clr.l (a4) ; 4294 addq #1,10(a5) ; 526D000A moveq #100,d0 ; 7064 add d4,d0 ; D044 L2348: addq #6,a7 ; 5C4F movem.l (a7)+,d3-d4/a3-a5 ; 4CDF3818 rts ; 4E75 */ unsigned char moveq100[] = { 0x29, 0x4d, 0x00, 0x04, 0x42, 0x94, 0x52, 0x6d, 0x00, 0x0a, 0x70, 0x64, 0xd0, 0x44, 0x5c, 0x4f, 0x4c, 0xdf, 0x38, 0x18, 0x4e, 0x75, }; /* A parts of Fread/Fdatime/Fseek/Fclose routines... (fh #100..#140) L2356: movem.l d3-d4/a2-a4,-(a7) ; 48E71838 move d0,d3 ; 3600 movea.l a0,a2 ; 2448 move.l d1,d4 ; 2801 cmp #100,d0 ; B07C0064 blt.s L2378 ; 6D06 cmp #140,d0 ; B07C008C blt.s L2392 ; 6D0E L2378: move.l d4,d1 ; 2204 movea.l a2,a0 ; 204A move d3,d0 ; 3003 jsr L173498 ; 4EB90002A5BA bra.s L2456 ; 6040 L2392: sub #100,d3 ; 967C0064 move d3,d0 ; 3003 lsl #3,d0 ; E748 lea U223702,a3 ; 47F9000369D6 adda d0,a3 ; D6C0 */ unsigned char cmp100140[] = { 0xb0, 0x7c, 0x00, 0x64, 0x6d, 0x06, 0xb0, 0x7c, 0x00, 0x8c, }; unsigned char sub100d3[] = { 0x96, 0x7c, 0x00, 0x64, 0x30, 0x03, }; FILE *fh; unsigned char patchBuffer[2]; int getByte( unsigned char *buff ) { return fread( (void*)buff, 1, 1, fh ) == -1 ? -1 : 1; } int findPart( unsigned char *buffer, size_t len ) { unsigned char charBuffer[2]; int idx = 0; int total = 0; while ( getByte( charBuffer ) > 0 ) { if ( idx >= len ) return 1; if ( *charBuffer != buffer[idx] ) idx = 0; else idx++; if ( total++ > 2000 ) return 0; } return 0; } int main() { char *result = NULL; fh = fopen ("PC.PRG", "rb+"); if ( !fh ) { result = "PC.PRG not found in current directory"; goto finalize; } if ( fseek( fh, 2000, SEEK_SET ) < 0 ) { result = "PC.PRG cannot seek to 2000 (too short file?)"; goto finalize; } if ( ! findPart( moveq100, sizeof( moveq100 ) / sizeof( *moveq100 ) ) ) { result = "findPart(moveq100) failed"; goto finalize; } *patchBuffer = 200; fseek( fh, -12, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); while ( 1 ) { if ( ! findPart( cmp100140, sizeof( cmp100140 ) / sizeof( *cmp100140 ) ) ) { result = "findPart(cmp100140) failed"; break; } *patchBuffer = 200; fseek( fh, -8, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); *patchBuffer = 240; fseek( fh, 5, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); if ( ! findPart( sub100d3, sizeof( sub100d3 ) / sizeof( *sub100d3 ) ) ) { result = "findPart(sub100d3) failed"; break; } *patchBuffer = 200; fseek( fh, -4, SEEK_CUR ); fwrite( patchBuffer, 1, 1, fh ); } finalize: fclose( fh ); if ( result == NULL ) { printf( "PureC was patched successfully.\n" ); } else { printf( "Error patching PureC: %s\n", result ); } puts("Press [Return] to quit."); getchar(); return 0; } aranym-0.9.15/atari/usbhost/000077500000000000000000000000001213346724500156735ustar00rootroot00000000000000aranym-0.9.15/atari/usbhost/usb.h000066400000000000000000000241401213346724500166360ustar00rootroot00000000000000/* * Modified for Aranym Native Features by David Gálvez 2010 * Modified from u-boot sources for Atari by Didier Mequignon 2009 * * * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Part of this code has been derived from linux * */ #ifndef _USB_H_ #define _USB_H_ #include "../../atari/usbhost/usb_defs.h" /* Everything is aribtrary */ #define USB_ALTSETTINGALLOC 4 #define USB_MAXALTSETTING 128 /* Hard limit */ #define USB_MAX_DEVICE 32 #define USB_MAXCONFIG 8 #define USB_MAXINTERFACES 8 #define USB_MAXENDPOINTS 16 #define USB_MAXCHILDREN 8 /* This is arbitrary */ #define USB_MAX_HUB 16 #define USB_CNTL_TIMEOUT 100 /* 100ms timeout */ /* String descriptor */ struct usb_string_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 wData[1]; } __attribute__ ((packed)); /* device request (setup) */ struct devrequest { uint8 requesttype; uint8 request; uint16 value; uint16 index; uint16 length; } __attribute__ ((packed)); /* All standard descriptors have these 2 fields in common */ struct usb_descriptor_header { uint8 bLength; uint8 bDescriptorType; } __attribute__ ((packed)); /* Device descriptor */ struct usb_device_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 bcdUSB; uint8 bDeviceClass; uint8 bDeviceSubClass; uint8 bDeviceProtocol; uint8 bMaxPacketSize0; uint16 idVendor; uint16 idProduct; uint16 bcdDevice; uint8 iManufacturer; uint8 iProduct; uint8 iSerialNumber; uint8 bNumConfigurations; } __attribute__ ((packed)); /* Endpoint descriptor */ struct usb_endpoint_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bEndpointAddress; uint8 bmAttributes; uint16 wMaxPacketSize; uint8 bInterval; uint8 bRefresh; uint8 bSynchAddress; } __attribute__ ((packed)) __attribute__ ((aligned(2))); /* Interface descriptor */ struct usb_interface_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bInterfaceNumber; uint8 bAlternateSetting; uint8 bNumEndpoints; uint8 bInterfaceClass; uint8 bInterfaceSubClass; uint8 bInterfaceProtocol; uint8 iInterface; uint8 no_of_ep; uint8 num_altsetting; uint8 act_altsetting; struct usb_endpoint_descriptor ep_desc[USB_MAXENDPOINTS]; } __attribute__ ((packed)); /* Configuration descriptor information.. */ struct usb_config_descriptor { uint8 bLength; uint8 bDescriptorType; uint16 wTotalLength; uint8 bNumInterfaces; uint8 bConfigurationValue; uint8 iConfiguration; uint8 bmAttributes; uint8 MaxPower; uint8 no_of_if; /* number of interfaces */ struct usb_interface_descriptor if_desc[USB_MAXINTERFACES]; } __attribute__ ((packed)); enum { /* Maximum packet size; encoded as 0,1,2,3 = 8,16,32,64 */ PACKET_SIZE_8 = 0, PACKET_SIZE_16 = 1, PACKET_SIZE_32 = 2, PACKET_SIZE_64 = 3, }; struct usb_device { int32 devnum; /* Device number on USB bus */ int32 speed; /* full/low/high */ int8 mf[32]; /* manufacturer */ int8 prod[32]; /* product */ int8 serial[32]; /* serial number */ /* Maximum packet size; one of: PACKET_SIZE_* */ int32 maxpacketsize; /* one bit for each endpoint ([0] = IN, [1] = OUT) */ uint32 toggle[2]; /* endpoint halts; one bit per endpoint # & direction; * [0] = IN, [1] = OUT */ uint32 halted[2]; int32 epmaxpacketin[16]; /* INput endpoint specific maximums */ int32 epmaxpacketout[16]; /* OUTput endpoint specific maximums */ int32 configno; /* selected config number */ struct usb_device_descriptor descriptor; /* Device Descriptor */ struct usb_config_descriptor config; /* config descriptor */ int32 have_langid; /* whether string_langid is valid yet */ int32 string_langid; /* language ID for strings */ memptr irq_handle; uint32 irq_status; int32 irq_act_len; /* transfered bytes */ memptr privptr; /* * Child devices - if this is a hub device * Each instance needs its own set of data structures. */ uint32 status; int32 act_len; /* transfered bytes */ int32 maxchild; /* Number of ports if hub */ int32 portnr; memptr parent; memptr children[USB_MAXCHILDREN]; }; /* big endian -> little endian conversion */ /* some CPUs are already little endian e.g. the ARM920T */ #define __swap_16(x) \ ({ unsigned short x_ = (unsigned short)x; \ (unsigned short)( \ ((x_ & 0x00FFU) << 8) | ((x_ & 0xFF00U) >> 8)); \ }) #define __swap_32(x) \ ({ unsigned long x_ = (unsigned long)x; \ (unsigned long)( \ ((x_ & 0x000000FFUL) << 24) | \ ((x_ & 0x0000FF00UL) << 8) | \ ((x_ & 0x00FF0000UL) >> 8) | \ ((x_ & 0xFF000000UL) >> 24)); \ }) #ifdef __LITTLE_ENDIAN # define swap_16(x) (x) # define swap_32(x) (x) #else # define swap_16(x) __swap_16(x) # define swap_32(x) __swap_32(x) #endif /* * Calling this entity a "pipe" is glorifying it. A USB pipe * is something embarrassingly simple: it basically consists * of the following information: * - device number (7 bits) * - endpoint number (4 bits) * - current Data0/1 state (1 bit) * - direction (1 bit) * - speed (2 bits) * - max packet size (2 bits: 8, 16, 32 or 64) * - pipe type (2 bits: control, interrupt, bulk, isochronous) * * That's 18 bits. Really. Nothing more. And the USB people have * documented these eighteen bits as some kind of glorious * virtual data structure. * * Let's not fall in that trap. We'll just encode it as a simple * unsigned int. The encoding is: * * - max size: bits 0-1 (00 = 8, 01 = 16, 10 = 32, 11 = 64) * - direction: bit 7 (0 = Host-to-Device [Out], * (1 = Device-to-Host [In]) * - device: bits 8-14 * - endpoint: bits 15-18 * - Data0/1: bit 19 * - speed: bit 26 (0 = Full, 1 = Low Speed, 2 = High) * - pipe type: bits 30-31 (00 = isochronous, 01 = interrupt, * 10 = control, 11 = bulk) * * Why? Because it's arbitrary, and whatever encoding we select is really * up to us. This one happens to share a lot of bit positions with the UHCI * specification, so that much of the uhci driver can just mask the bits * appropriately. */ /* Create various pipes... */ #define create_pipe(dev,endpoint) \ (((dev)->devnum << 8) | (endpoint << 15) | \ ((dev)->speed << 26) | (dev)->maxpacketsize) #define default_pipe(dev) ((dev)->speed << 26) #define usb_sndctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvctrlpipe(dev, endpoint) ((PIPE_CONTROL << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvisocpipe(dev, endpoint) ((PIPE_ISOCHRONOUS << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvbulkpipe(dev, endpoint) ((PIPE_BULK << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_sndintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ create_pipe(dev, endpoint)) #define usb_rcvintpipe(dev, endpoint) ((PIPE_INTERRUPT << 30) | \ create_pipe(dev, endpoint) | \ USB_DIR_IN) #define usb_snddefctrl(dev) ((PIPE_CONTROL << 30) | \ default_pipe(dev)) #define usb_rcvdefctrl(dev) ((PIPE_CONTROL << 30) | \ default_pipe(dev) | \ USB_DIR_IN) /* The D0/D1 toggle bits */ #define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> ep) & 1) #define usb_dotoggle(dev, ep, out) ((dev)->toggle[out] ^= (1 << ep)) #define usb_settoggle(dev, ep, out, bit) ((dev)->toggle[out] = \ ((dev)->toggle[out] & \ ~(1 << ep)) | ((bit) << ep)) /* Endpoint halt control/status */ #define usb_endpoint_out(ep_dir) (((ep_dir >> 7) & 1) ^ 1) #define usb_endpoint_halt(dev, ep, out) ((dev)->halted[out] |= (1 << (ep))) #define usb_endpoint_running(dev, ep, out) ((dev)->halted[out] &= ~(1 << (ep))) #define usb_endpoint_halted(dev, ep, out) ((dev)->halted[out] & (1 << (ep))) #define usb_packetid(pipe) (((pipe) & USB_DIR_IN) ? USB_PID_IN : \ USB_PID_OUT) #define usb_pipeout(pipe) ((((pipe) >> 7) & 1) ^ 1) #define usb_pipein(pipe) (((pipe) >> 7) & 1) #define usb_pipedevice(pipe) (((pipe) >> 8) & 0x7f) #define usb_pipe_endpdev(pipe) (((pipe) >> 8) & 0x7ff) #define usb_pipeendpoint(pipe) (((pipe) >> 15) & 0xf) #define usb_pipedata(pipe) (((pipe) >> 19) & 1) #define usb_pipespeed(pipe) (((pipe) >> 26) & 3) #define usb_pipeslow(pipe) (usb_pipespeed(pipe) == USB_SPEED_LOW) #define usb_pipetype(pipe) (((pipe) >> 30) & 3) #define usb_pipeisoc(pipe) (usb_pipetype((pipe)) == PIPE_ISOCHRONOUS) #define usb_pipeint(pipe) (usb_pipetype((pipe)) == PIPE_INTERRUPT) #define usb_pipecontrol(pipe) (usb_pipetype((pipe)) == PIPE_CONTROL) #define usb_pipebulk(pipe) (usb_pipetype((pipe)) == PIPE_BULK) /************************************************************************* * Hub Stuff */ struct usb_port_status { uint16 wPortStatus; uint16 wPortChange; } __attribute__ ((packed)); struct usb_hub_status { uint16 wHubStatus; uint16 wHubChange; } __attribute__ ((packed)); /* Hub descriptor */ struct usb_hub_descriptor { uint8 bLength; uint8 bDescriptorType; uint8 bNbrPorts; uint16 wHubCharacteristics; uint8 bPwrOn2PwrGood; uint8 bHubContrCurrent; uint8 DeviceRemovable[(USB_MAXCHILDREN+1+7)/8]; uint8 PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8]; /* DeviceRemovable and PortPwrCtrlMask want to be variable-length bitmaps that hold max 255 entries. (bit0 is ignored) */ } __attribute__ ((packed)); struct usb_hub_device { struct usb_device *pusb_dev; struct usb_hub_descriptor desc; }; #endif /*_USB_H_ */ aranym-0.9.15/atari/usbhost/usb_defs.h000066400000000000000000000175151213346724500176470ustar00rootroot00000000000000/* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland * * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Note: Part of this code has been derived from linux * */ #ifndef _USB_DEFS_H_ #define _USB_DEFS_H_ /* USB constants */ /* Device and/or Interface Class codes */ #define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */ #define USB_CLASS_AUDIO 1 #define USB_CLASS_COMM 2 #define USB_CLASS_HID 3 #define USB_CLASS_PRINTER 7 #define USB_CLASS_MASS_STORAGE 8 #define USB_CLASS_HUB 9 #define USB_CLASS_DATA 10 #define USB_CLASS_VENDOR_SPEC 0xff /* some HID sub classes */ #define USB_SUB_HID_NONE 0 #define USB_SUB_HID_BOOT 1 /* some UID Protocols */ #define USB_PROT_HID_NONE 0 #define USB_PROT_HID_KEYBOARD 1 #define USB_PROT_HID_MOUSE 2 /* Sub STORAGE Classes */ #define US_SC_RBC 1 /* Typically, flash devices */ #define US_SC_8020 2 /* CD-ROM */ #define US_SC_QIC 3 /* QIC-157 Tapes */ #define US_SC_UFI 4 /* Floppy */ #define US_SC_8070 5 /* Removable media */ #define US_SC_SCSI 6 /* Transparent */ #define US_SC_MIN US_SC_RBC #define US_SC_MAX US_SC_SCSI /* STORAGE Protocols */ #define US_PR_CB 1 /* Control/Bulk w/o interrupt */ #define US_PR_CBI 0 /* Control/Bulk/Interrupt */ #define US_PR_BULK 0x50 /* bulk only */ /* USB types */ #define USB_TYPE_STANDARD (0x00 << 5) #define USB_TYPE_CLASS (0x01 << 5) #define USB_TYPE_VENDOR (0x02 << 5) #define USB_TYPE_RESERVED (0x03 << 5) /* USB recipients */ #define USB_RECIP_DEVICE 0x00 #define USB_RECIP_INTERFACE 0x01 #define USB_RECIP_ENDPOINT 0x02 #define USB_RECIP_OTHER 0x03 /* USB directions */ #define USB_DIR_OUT 0 #define USB_DIR_IN 0x80 /* USB device speeds */ #define USB_SPEED_FULL 0x0 /* 12Mbps */ #define USB_SPEED_LOW 0x1 /* 1.5Mbps */ #define USB_SPEED_HIGH 0x2 /* 480Mbps */ #define USB_SPEED_RESERVED 0x3 /* Descriptor types */ #define USB_DT_DEVICE 0x01 #define USB_DT_CONFIG 0x02 #define USB_DT_STRING 0x03 #define USB_DT_INTERFACE 0x04 #define USB_DT_ENDPOINT 0x05 #define USB_DT_HID (USB_TYPE_CLASS | 0x01) #define USB_DT_REPORT (USB_TYPE_CLASS | 0x02) #define USB_DT_PHYSICAL (USB_TYPE_CLASS | 0x03) #define USB_DT_HUB (USB_TYPE_CLASS | 0x09) /* Descriptor sizes per descriptor type */ #define USB_DT_DEVICE_SIZE 18 #define USB_DT_CONFIG_SIZE 9 #define USB_DT_INTERFACE_SIZE 9 #define USB_DT_ENDPOINT_SIZE 7 #define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ #define USB_DT_HUB_NONVAR_SIZE 7 #define USB_DT_HID_SIZE 9 /* Endpoints */ #define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */ #define USB_ENDPOINT_DIR_MASK 0x80 #define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */ #define USB_ENDPOINT_XFER_CONTROL 0 #define USB_ENDPOINT_XFER_ISOC 1 #define USB_ENDPOINT_XFER_BULK 2 #define USB_ENDPOINT_XFER_INT 3 /* USB Packet IDs (PIDs) */ #define USB_PID_UNDEF_0 0xf0 #define USB_PID_OUT 0xe1 #define USB_PID_ACK 0xd2 #define USB_PID_DATA0 0xc3 #define USB_PID_UNDEF_4 0xb4 #define USB_PID_SOF 0xa5 #define USB_PID_UNDEF_6 0x96 #define USB_PID_UNDEF_7 0x87 #define USB_PID_UNDEF_8 0x78 #define USB_PID_IN 0x69 #define USB_PID_NAK 0x5a #define USB_PID_DATA1 0x4b #define USB_PID_PREAMBLE 0x3c #define USB_PID_SETUP 0x2d #define USB_PID_STALL 0x1e #define USB_PID_UNDEF_F 0x0f /* Standard requests */ #define USB_REQ_GET_STATUS 0x00 #define USB_REQ_CLEAR_FEATURE 0x01 #define USB_REQ_SET_FEATURE 0x03 #define USB_REQ_SET_ADDRESS 0x05 #define USB_REQ_GET_DESCRIPTOR 0x06 #define USB_REQ_SET_DESCRIPTOR 0x07 #define USB_REQ_GET_CONFIGURATION 0x08 #define USB_REQ_SET_CONFIGURATION 0x09 #define USB_REQ_GET_INTERFACE 0x0A #define USB_REQ_SET_INTERFACE 0x0B #define USB_REQ_SYNCH_FRAME 0x0C /* HID requests */ #define USB_REQ_GET_REPORT 0x01 #define USB_REQ_GET_IDLE 0x02 #define USB_REQ_GET_PROTOCOL 0x03 #define USB_REQ_SET_REPORT 0x09 #define USB_REQ_SET_IDLE 0x0A #define USB_REQ_SET_PROTOCOL 0x0B /* "pipe" definitions */ #define PIPE_ISOCHRONOUS 0 #define PIPE_INTERRUPT 1 #define PIPE_CONTROL 2 #define PIPE_BULK 3 #define PIPE_DEVEP_MASK 0x0007ff00 #define USB_ISOCHRONOUS 0 #define USB_INTERRUPT 1 #define USB_CONTROL 2 #define USB_BULK 3 /* USB-status codes: */ #define USB_ST_ACTIVE 0x1 /* TD is active */ #define USB_ST_STALLED 0x2 /* TD is stalled */ #define USB_ST_BUF_ERR 0x4 /* buffer error */ #define USB_ST_BABBLE_DET 0x8 /* Babble detected */ #define USB_ST_NAK_REC 0x10 /* NAK Received*/ #define USB_ST_CRC_ERR 0x20 /* CRC/timeout Error */ #define USB_ST_BIT_ERR 0x40 /* Bitstuff error */ #define USB_ST_NOT_PROC 0x80000000L /* Not yet processed */ /************************************************************************* * Hub defines */ /* * Hub request types */ #define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE) #define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER) /* * Hub Class feature numbers */ #define C_HUB_LOCAL_POWER 0 #define C_HUB_OVER_CURRENT 1 /* * Port feature numbers */ #define USB_PORT_FEAT_CONNECTION 0 #define USB_PORT_FEAT_ENABLE 1 #define USB_PORT_FEAT_SUSPEND 2 #define USB_PORT_FEAT_OVER_CURRENT 3 #define USB_PORT_FEAT_RESET 4 #define USB_PORT_FEAT_POWER 8 #define USB_PORT_FEAT_LOWSPEED 9 #define USB_PORT_FEAT_HIGHSPEED 10 #define USB_PORT_FEAT_C_CONNECTION 16 #define USB_PORT_FEAT_C_ENABLE 17 #define USB_PORT_FEAT_C_SUSPEND 18 #define USB_PORT_FEAT_C_OVER_CURRENT 19 #define USB_PORT_FEAT_C_RESET 20 /* wPortStatus bits */ #define USB_PORT_STAT_CONNECTION 0x0001 #define USB_PORT_STAT_ENABLE 0x0002 #define USB_PORT_STAT_SUSPEND 0x0004 #define USB_PORT_STAT_OVERCURRENT 0x0008 #define USB_PORT_STAT_RESET 0x0010 #define USB_PORT_STAT_POWER 0x0100 #define USB_PORT_STAT_LOW_SPEED 0x0200 #define USB_PORT_STAT_HIGH_SPEED 0x0400 /* support for EHCI */ #define USB_PORT_STAT_SPEED \ (USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED) /* wPortChange bits */ #define USB_PORT_STAT_C_CONNECTION 0x0001 #define USB_PORT_STAT_C_ENABLE 0x0002 #define USB_PORT_STAT_C_SUSPEND 0x0004 #define USB_PORT_STAT_C_OVERCURRENT 0x0008 #define USB_PORT_STAT_C_RESET 0x0010 /* wHubCharacteristics (masks) */ #define HUB_CHAR_LPSM 0x0003 #define HUB_CHAR_COMPOUND 0x0004 #define HUB_CHAR_OCPM 0x0018 /* *Hub Status & Hub Change bit masks */ #define HUB_STATUS_LOCAL_POWER 0x0001 #define HUB_STATUS_OVERCURRENT 0x0002 #define HUB_CHANGE_LOCAL_POWER 0x0001 #define HUB_CHANGE_OVERCURRENT 0x0002 #endif /*_USB_DEFS_H_ */ aranym-0.9.15/atari/usbhost/usbhost_nfapi.h000066400000000000000000000023721213346724500207140ustar00rootroot00000000000000/* NatFeat USB Host chip emulator ARAnyM (C) 2011 David Gálvez This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _USBHOST_NFAPI_H #define _USBHOST_NFAPI_H /* if you change anything in the enum {} below you have to increase this ARAUSBHOST_NFAPI_VERSION! */ #define USBHOST_NFAPI_VERSION 0x00000002 enum { GET_VERSION = 0, /* no parameters, return NFAPI_VERSION in d0 */ USBHOST_INTLEVEL, USBHOST_RH_PORT_STATUS, USBHOST_LOWLEVEL_INIT, USBHOST_LOWLEVEL_STOP, USBHOST_SUBMIT_CONTROL_MSG, USBHOST_SUBMIT_INT_MSG, USBHOST_SUBMIT_BULK_MSG }; #define USBHOST(a) (nfUsbHostId + a) #endif /* _USBHOST_NFAPI_H */ aranym-0.9.15/config.guess000077500000000000000000001276371213346724500154440ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2009-12-30' # This file 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: aranym-0.9.15/config.h.in000066400000000000000000000401211213346724500151250ustar00rootroot00000000000000/* config.h.in. Generated from configure.ac by autoheader. */ /* Define if building universal (internal helper macro) */ #undef AC_APPLE_UNIVERSAL_BUILD /* Define if you want to try out a different memory check */ #undef ARAM_PAGE_CHECK /* Default ARAnyM config file */ #undef ARANYMCONFIG /* Default ARAnyM directory */ #undef ARANYMHOME /* Default ARAnyM keymap */ #undef ARANYMKEYMAP /* Default ARAnyM NVRAM file */ #undef ARANYMNVRAM /* Define if you want accelerated blitter output */ #undef BLITTER_MEMMOVE /* Define if you want even more accelerated blitter output */ #undef BLITTER_SDLBLIT /* Define CPU type */ #undef CPU_TYPE /* Define if using some internal debugger */ #undef DEBUGGER /* Default directory separator */ #undef DIRSEPARATOR /* Define if not using full ATC */ #undef DISABLE_ATC /* Define if DSP disassembly */ #undef DSP_DISASM /* Define if using DSP */ #undef DSP_EMULATION /* Define if your system supports BPF devices. */ #undef ENABLE_BPF /* Define if you want to use EPS limiter */ #undef ENABLE_EPSLIMITER /* Define if lilo enabled */ #undef ENABLE_LILO /* Define if you want to use Linux /dev/sequencer support */ #undef ENABLE_MIDI_SEQUENCER /* Define if OpenGL enabled */ #undef ENABLE_OPENGL /* Define if you want to use Linux /dev/parport access for parallel port */ #undef ENABLE_PARALLELPARPORT /* Define if you want to use Linux/X86 hardware access for parallel port */ #undef ENABLE_PARALLELX86 /* Define if you want real STOP instruction implementation */ #undef ENABLE_REALSTOP /* Define if you want to use /dev/ttyXXX access for serial port */ #undef ENABLE_SERIALUNIX /* Define if you want to use ethernet card emulation */ #undef ETHERNET_SUPPORT /* Define if you want to use setjmp/longjmp instead of C++ exceptions */ #undef EXCEPTIONS_VIA_LONGJMP /* Define if you want to use extended segafault handler */ #undef EXTENDED_SIGSEGV /* Define if you want fixed position of VideoRAM */ #undef FIXED_VIDEORAM /* Define if you want to use CPU flight recorder */ #undef FLIGHT_RECORDER /* Define if using full MMU */ #undef FULLMMU /* Define if you want to use full history */ #undef FULL_HISTORY /* Define if you want FastRAM of fixed size */ #undef FixedSizeFastRAM /* Define to 1 if you have the `acoshl' function. */ #undef HAVE_ACOSHL /* Define to 1 if you have the `acosl' function. */ #undef HAVE_ACOSL /* Define to 1 if you have the header file. */ #undef HAVE_ALLOCA_H /* Define to 1 if you have the `asinhl' function. */ #undef HAVE_ASINHL /* Define to 1 if you have the `asinl' function. */ #undef HAVE_ASINL /* Define to 1 if you have the `atanh' function. */ #undef HAVE_ATANH /* Define to 1 if you have the `atanhl' function. */ #undef HAVE_ATANHL /* Define to 1 if you have the `atanl' function. */ #undef HAVE_ATANL /* Define to 1 if you have the `bcopy' function. */ #undef HAVE_BCOPY /* define if bool is a built-in type */ #undef HAVE_BOOL /* Define to 1 if the system has the type `caddr_t'. */ #undef HAVE_CADDR_T /* Define to 1 if you have the `canonicalize_file_name' function. */ #undef HAVE_CANONICALIZE_FILE_NAME /* Define to 1 if you have the `ceill' function. */ #undef HAVE_CEILL /* Define to 1 if you have the `coshl' function. */ #undef HAVE_COSHL /* Define to 1 if you have the `cosl' function. */ #undef HAVE_COSL /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the `expl' function. */ #undef HAVE_EXPL /* Define to 1 if you have the `fabsl' function. */ #undef HAVE_FABSL /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `finite' function. */ #undef HAVE_FINITE /* Define to 1 if you have the header file. */ #undef HAVE_FLOATINGPOINT_H /* Define to 1 if you have the `floorl' function. */ #undef HAVE_FLOORL /* Define if framework AppKit is available. */ #undef HAVE_FRAMEWORK_APPKIT /* Define if framework CoreFoundation is available. */ #undef HAVE_FRAMEWORK_COREFOUNDATION /* Define if framework IOKit is available. */ #undef HAVE_FRAMEWORK_IOKIT /* Define if framework SDL is available. */ #undef HAVE_FRAMEWORK_SDL /* Define if framework SDL_image is available. */ #undef HAVE_FRAMEWORK_SDL_IMAGE /* Define if framework Security is available. */ #undef HAVE_FRAMEWORK_SECURITY /* Define to 1 if you have the `fseeko' function. */ #undef HAVE_FSEEKO /* Define to 1 if you have the `fsync' function. */ #undef HAVE_FSYNC /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define if your system support GNU SOURCEs (vasprintf function) */ #undef HAVE_GNU_SOURCE /* Define to 1 if you have the header file. */ #undef HAVE_IEEE754_H /* Define to 1 if you have the header file. */ #undef HAVE_IEEEFP_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `isinf' function. */ #undef HAVE_ISINF /* Define to 1 if you have the `isinfl' function. */ #undef HAVE_ISINFL /* Define to 1 if you have the `isnan' function. */ #undef HAVE_ISNAN /* Define to 1 if you have the `isnanl' function. */ #undef HAVE_ISNANL /* Define to 1 if you have the `isnormal' function. */ #undef HAVE_ISNORMAL /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the `usb-1.0' library (-lusb-1.0). */ #undef HAVE_LIBUSB_1_0 /* Define to 1 if you have the `X11' library (-lX11). */ #undef HAVE_LIBX11 /* Define if zlib enabled */ #undef HAVE_LIBZ /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_IF_H /* Define to 1 if you have the header file. */ #undef HAVE_LINUX_IF_TUN_H /* Define to 1 if you have the `log10l' function. */ #undef HAVE_LOG10L /* Define to 1 if you have the `logl' function. */ #undef HAVE_LOGL /* Define to 1 if you have the header file. */ #undef HAVE_MACH_MACH_H /* Define to 1 if you have the `mach_task_self' function. */ #undef HAVE_MACH_TASK_SELF /* Define if your system has a working vm_allocate()-based memory allocator. */ #undef HAVE_MACH_VM /* Define to 1 if you have the header file. */ #undef HAVE_MATH_H /* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `mmap' function. */ #undef HAVE_MMAP /* Define if defines MAP_ANON and mmap()'ing with MAP_ANON works. */ #undef HAVE_MMAP_ANON /* Define if defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works. */ #undef HAVE_MMAP_ANONYMOUS /* Define if your system has a working mmap()-based memory allocator. */ #undef HAVE_MMAP_VM /* Define to 1 if you have the `mprotect' function. */ #undef HAVE_MPROTECT /* Define to 1 if you have the `munmap' function. */ #undef HAVE_MUNMAP /* Define to 1 if you have the header file. */ #undef HAVE_NAN_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_BPF_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_IF_TUN_H /* Define if you want to use FreeBSD's imitation of O_SYNC */ #undef HAVE_O_FSYNC /* Define if your system supports POSIX shared memory. */ #undef HAVE_POSIX_SHM /* Define to 1 if you have the `powl' function. */ #undef HAVE_POWL /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define if you have SDL_image */ #undef HAVE_SDL_IMAGE /* Define to 1 if you have the `sigaction' function. */ #undef HAVE_SIGACTION /* Define if doesn't define sighandler_t */ #undef HAVE_SIGHANDLER_T /* Define to 1 if you have the `signal' function. */ #undef HAVE_SIGNAL /* Define to 1 if you have the `signbit' function. */ #undef HAVE_SIGNBIT /* Define to 1 if you have the `sinhl' function. */ #undef HAVE_SINHL /* Define to 1 if you have the `sinl' function. */ #undef HAVE_SINL /* Define to 1 if you have the `sqrtl' function. */ #undef HAVE_SQRTL /* Define to 1 if you have the header file. */ #undef HAVE_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MMAN_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_MOUNT_H /* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STATVFS_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_VFS_H /* Define to 1 if you have the `tanhl' function. */ #undef HAVE_TANHL /* Define to 1 if you have the `tanl' function. */ #undef HAVE_TANL /* Define to 1 if you have the `task_self' function. */ #undef HAVE_TASK_SELF /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIO_H /* Define to 1 if you have the header file. */ #undef HAVE_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the `usleep' function. */ #undef HAVE_USLEEP /* Define to 1 if you have the header file. */ #undef HAVE_UTIME_H /* Define to 1 if you have the `vm_allocate' function. */ #undef HAVE_VM_ALLOCATE /* Define to 1 if you have the `vm_deallocate' function. */ #undef HAVE_VM_DEALLOCATE /* Define to 1 if you have the `vm_protect' function. */ #undef HAVE_VM_PROTECT /* Define if wchar_t is present */ #undef HAVE_WCHAR_T /* Define if you want to use direct access to host's fs */ #undef HOSTFS_SUPPORT /* Define to the floating point format of the host machine. */ #undef HOST_FLOAT_FORMAT /* Define to 1 if the host machine stores floating point numbers in memory with the word containing the sign bit at the lowest address, or to 0 if it does it the other way around. This macro should not be defined if the ordering is the same as for multi-word integers. */ #undef HOST_FLOAT_WORDS_BIG_ENDIAN /* Define if you want to use extended segfault handler also for HW space */ #undef HW_SIGSEGV /* Define if you want to map the control key to the emulated control key */ #undef MAP_CONTROL_TO_CONTROL /* Define if you want to map the meta key to the emulated control key */ #undef MAP_META_TO_CONTROL /* Define if using new debugger */ #undef NEWDEBUG /* Define if you want to use Linux support as CD-ROM driver */ #undef NFCDROM_LINUX_SUPPORT /* Define if you want to use host CD-ROM driver */ #undef NFCDROM_SUPPORT /* Define if you want to use X11 clipboard */ #undef NFCLIPBRD_SUPPORT /* Define if you want to use host JPEG decoder */ #undef NFJPEG_SUPPORT /* Define if you want to use host OSMesa driver */ #undef NFOSMESA_SUPPORT /* Define if you want to use Linux PCI driver */ #undef NFPCI_LINUX_SUPPORT /* Define if you want to use host PCI driver */ #undef NFPCI_SUPPORT /* Define if you want to use NF VDI driver */ #undef NFVDI_SUPPORT /* Define if you don't want to use check memory boundary */ #undef NOCHECKBOUNDARY /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* Define if OS needs to cleanly exit sigsegv handler */ #undef NO_NESTED_SIGSEGV /* Define OS type */ #undef OS_TYPE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define if you want to protect first 2kB of RAM against user mode access */ #undef PROTECT2K /* List of Native Features */ #undef PROVIDES_NATFEATS /* Define if you want protect end of memory */ #undef RAMENDNEEDED /* Define as the return type of signal handlers (`int' or `void'). */ #undef RETSIGTYPE /* Define if you want to use Linux /dev/rtc as source timer */ #undef RTC_TIMER /* Define if you want to build SDL GUI */ #undef SDL_GUI /* Define if your system requires sigactions to be reinstalled. */ #undef SIGACTION_NEED_REINSTALL /* Define if your system requires signals to be reinstalled. */ #undef SIGNAL_NEED_REINSTALL /* The size of `double', as computed by sizeof. */ #undef SIZEOF_DOUBLE /* The size of `float', as computed by sizeof. */ #undef SIZEOF_FLOAT /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long double', as computed by sizeof. */ #undef SIZEOF_LONG_DOUBLE /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `void *', as computed by sizeof. */ #undef SIZEOF_VOID_P /* Define if using only small ATC */ #undef SMALL_ATC /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you want to use ATA CD-ROM emulation */ #undef SUPPORT_CDROM /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME /* Define if using UAE debugger */ #undef UAEDEBUG /* Define if you want to use host USB driver */ #undef USBHOST_SUPPORT /* FPU core */ #undef USES_FPU_CORE /* Define to use 33-bit memory addressing on 64-bit JIT capable systems. */ #undef USE_33BIT_ADDRESSING /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ #if defined AC_APPLE_UNIVERSAL_BUILD # if defined __BIG_ENDIAN__ # define WORDS_BIGENDIAN 1 # endif #else # ifndef WORDS_BIGENDIAN # undef WORDS_BIGENDIAN # endif #endif /* Number of bits in a file offset, on hosts where this is settable. */ #undef _FILE_OFFSET_BITS /* Define for large files, on AIX-style hosts. */ #undef _LARGE_FILES /* Define if needed */ #undef _POSIX_C_SOURCE /* Define if needed */ #undef _XOPEN_SOURCE /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `off_t' if does not define. */ #undef loff_t /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `size_t' if does not define. */ #undef ssize_t /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ #undef volatile #ifndef HAVE_CADDR_T typedef void * caddr_t; #endif aranym-0.9.15/config.sub000077500000000000000000001034451213346724500150760ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Free Software Foundation, Inc. timestamp='2010-01-22' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: aranym-0.9.15/configure000077500000000000000000011706101213346724500150210ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for aranym 0.9. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: aranym@lists.bobek.cz about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='aranym' PACKAGE_TARNAME='aranym' PACKAGE_VERSION='0.9' PACKAGE_STRING='aranym 0.9' PACKAGE_BUGREPORT='aranym@lists.bobek.cz' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS BUNDLE_FRAMEWORKS ARCHFLAGS CPU_TYPE TARGET TAPIF DBGSP DYNGLSRCS GUISDLSRCS SERIALSRCS PARALLELPARPORTSRCS PARALLELX86SRCS NFCLIPBOARDSRCS NFVDISRCS NFJPEGSRCS NFOSMESASRCS USBHOSTSRCS NFPCISRCS NFCDROMSRCS MIDISEQSRCS DSPSRCS GENCPUSRCS CPUSRCS CPUINCLUDES SYSSRCS DEFINES WFLAGS OSMESA_LIBS OSMESA_CFLAGS LIBUSB_LIBS LIBUSB_CFLAGS ZLIB_LIBS ZLIB_CFLAGS GL_LIBS GL_CFLAGS SDL_LIBS SDL_CFLAGS SDL_CONFIG BEOS_SETVERSION BEOS_RC BEOS_XRES EGREP GREP PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE CXXCPP ac_ct_CXX CXXFLAGS CXX CPP OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_DEFAULT_VERBOSITY host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_nat_debug enable_full_debug enable_debug enable_fullhistory enable_flightrecorder enable_fullmmu enable_atc enable_realstop enable_dsp enable_dsp_disasm enable_protect2k enable_fixedfastram enable_fixedvideoram enable_blitmemmove enable_blitsdlblit enable_hostfs enable_ctrlkey enable_gui enable_opengl with_mesa_headers enable_nfpci enable_usbhost enable_nfosmesa enable_nfjpeg enable_nfclipbrd enable_nfvdi enable_ata_cdrom enable_epslimiter enable_lilo enable_rtctimer enable_parallelx86 enable_parport enable_serialport with_fink with_classicconfig enable_fpe enable_addressing enable_addr_check enable_spcflags_excl enable_jit_compiler enable_jit_fpu enable_jit_debug enable_ethernet enable_bpf_ethernet enable_cxx_exceptions enable_largefile with_sdl_prefix with_sdl_exec_prefix enable_sdltest ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP CXX CXXFLAGS CCC CXXCPP PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GL_CFLAGS GL_LIBS ZLIB_CFLAGS ZLIB_LIBS LIBUSB_CFLAGS LIBUSB_LIBS OSMESA_CFLAGS OSMESA_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures aranym 0.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/aranym] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of aranym 0.9:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules Enable silent build [[default=yes]] --enable-nat-debug enable native debugger support (default=yes) --enable-full-debug enable full debug outputs (default=no) --enable-debug=which specify which debugger to use (default=ndebug) --enable-fullhistory enable full history for debugger (default=no) --enable-flightrecorder enable CPU flight recorder (default=no) --enable-fullmmu enable full 68040 MMU (default=no) --enable-atc=ATC select type of ATC for MMU (default=full) --enable-realstop enable real STOP instruction (default=yes) --enable-dsp enable DSP 56001 (default=yes) --enable-dsp-disasm enable DSP 56001 disassembler (default=no) --enable-protect2k enable first 2kB of RAM Super protection (default=yes) --enable-fixedfastram=X use fixed size FastRAM of X MB (default=no) --enable-fixedvideoram use fixed start of VideoRAM (default=no) --enable-blitmemmove enable Blitter memmove rout (default=no) --enable-blitsdlblit enable SDL blitting routine EXPERIMENTAL UNSUPPORTED BUGGY (default=no) --enable-hostfs enable hostfs support (default=yes) --enable-ctrlkey=WICH specify which key to use for control key emulation (default=both) --enable-gui enable GUI (default=yes) --enable-opengl enable OpenGL (default=yes) --enable-nfpci enable NatFeat PCI (default=no) --enable-usbhost enable NatFeat USB (default=no) --enable-nfosmesa enable NatFeat OSMesa (default=no) --enable-nfjpeg enable NatFeat JPEG (default=yes) --enable-nfclipbrd enable NatFeat Clipboard (default=yes) --enable-nfvdi enable NatFeat VDI (default=yes) --enable-ata-cdrom enable ATA CD-ROM emulation (default=yes) --enable-epslimiter enable Exception per second limiter (default=no) --enable-lilo enable Linux-m68k loader (default=no) --enable-rtctimer enable Linux /dev/rtc as source timer (default=yes) --enable-parallelx86 enable Linux X86 hw access for parallel port (default=no) --enable-parport enable Linux /dev/parport access for parallel port (default=yes) --enable-serialport enable Unix /dev/ttySn serial port support (default=yes) --enable-fpe=FPE specify which fpu emulator to use (default=auto) --enable-addressing=AM specify the addressing mode to use (default=fastest) --enable-addr-check=AM specify the memory check to use (default=page) --enable-spcflags-excl enable exclusive spcflags handling (default=no) --enable-jit-compiler enable JIT compiler (default=no) --enable-jit-fpu enable JIT compiler for FPU instructions (default=no) --enable-jit-debug activate native code disassemblers (default=no) --enable-ethernet enable ethernet card emulation (default=yes) --enable-bpf-ethernet enable ethernet card emulation using BPF (default=no) --enable-cxx-exceptions enable the use of C++ try/catch instead of setjmp/longjmp (default=yes) --disable-largefile omit support for large files --disable-sdltest Do not try to compile and run a test SDL program Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-mesa-headers Path to Mesa header files --with-fink Use Fink suite to build Aranym on MacOSX (default=no) --with-classicconfig Use Classic config names on MacOSX (default=no) --with-sdl-prefix=PFX Prefix where SDL is installed (optional) --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GL_CFLAGS C compiler flags for GL, overriding pkg-config GL_LIBS linker flags for GL, overriding pkg-config ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config ZLIB_LIBS linker flags for ZLIB, overriding pkg-config LIBUSB_CFLAGS C compiler flags for LIBUSB, overriding pkg-config LIBUSB_LIBS linker flags for LIBUSB, overriding pkg-config OSMESA_CFLAGS C compiler flags for OSMESA, overriding pkg-config OSMESA_LIBS linker flags for OSMESA, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF aranym configure 0.9 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ------------------------------------ ## ## Report this to aranym@lists.bobek.cz ## ## ------------------------------------ ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_run cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by aranym $as_me 0.9, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" PROVIDES_NF="audio bootstrap xhdi" ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; else enable_silent_rules=yes fi AM_DEFAULT_VERBOSITY=1 if test x$enable_silent_rules = xyes; then AM_DEFAULT_VERBOSITY=0 fi # Check whether --enable-nat-debug was given. if test "${enable_nat_debug+set}" = set; then : enableval=$enable_nat_debug; WANT_NATDEBUG=$enableval else WANT_NATDEBUG=yes fi # Check whether --enable-full-debug was given. if test "${enable_full_debug+set}" = set; then : enableval=$enable_full_debug; WANT_FULLDEBUG=$enableval else WANT_FULLDEBUG=no fi # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then : enableval=$enable_debug; case "$enableval" in default) WHICH_DEBUG="ndebug";; uae) WHICH_DEBUG="uae";; ndebug) WHICH_DEBUG="ndebug";; no) WHICH_DEBUG="no";; *) as_fn_error $? "--enable-debug takes only one of the following values: default, uae, ndebug, no" "$LINENO" 5;; esac else WHICH_DEBUG="ndebug" fi # Check whether --enable-fullhistory was given. if test "${enable_fullhistory+set}" = set; then : enableval=$enable_fullhistory; WANT_HISTORY=$enableval else WANT_HISTORY=no fi # Check whether --enable-flightrecorder was given. if test "${enable_flightrecorder+set}" = set; then : enableval=$enable_flightrecorder; WANT_FLIGHTRECORDER=$enableval else WANT_FLIGHTRECORDER=no fi # Check whether --enable-fullmmu was given. if test "${enable_fullmmu+set}" = set; then : enableval=$enable_fullmmu; WANT_MMU=$enableval else WANT_MMU=no fi # Check whether --enable-atc was given. if test "${enable_atc+set}" = set; then : enableval=$enable_atc; case "$enableval" in full) ATC_TYPE="full";; small) ATC_type="small";; no) ATC_TYPE="no";; *) as_fn_error $? "--enable-atc takes only one of the following values: full, small, no" "$LINENO" 5;; esac else ATC_TYPE=full fi # Check whether --enable-realstop was given. if test "${enable_realstop+set}" = set; then : enableval=$enable_realstop; WANT_REALSTOP=$enableval else WANT_REALSTOP=yes fi # Check whether --enable-dsp was given. if test "${enable_dsp+set}" = set; then : enableval=$enable_dsp; WANT_DSP=$enableval else WANT_DSP=yes fi # Check whether --enable-dsp-disasm was given. if test "${enable_dsp_disasm+set}" = set; then : enableval=$enable_dsp_disasm; WANT_DSP_DISASM=$enableval else WANT_DSP_DISASM=no fi # Check whether --enable-protect2k was given. if test "${enable_protect2k+set}" = set; then : enableval=$enable_protect2k; WANT_PROTECT2K=$enableval else WANT_PROTECT2K=yes fi # Check whether --enable-fixedfastram was given. if test "${enable_fixedfastram+set}" = set; then : enableval=$enable_fixedfastram; WANT_FIXEDFASTRAM=$enableval else WANT_FIXEDFASTRAM=no fi # Check whether --enable-fixedvideoram was given. if test "${enable_fixedvideoram+set}" = set; then : enableval=$enable_fixedvideoram; WANT_FIXEDVIDEORAM=$enableval else WANT_FIXEDVIDEORAM=no fi # Check whether --enable-blitmemmove was given. if test "${enable_blitmemmove+set}" = set; then : enableval=$enable_blitmemmove; WANT_BLITMEMMOVE=$enableval else WANT_BLITMEMMOVE=no fi # Check whether --enable-blitsdlblit was given. if test "${enable_blitsdlblit+set}" = set; then : enableval=$enable_blitsdlblit; WANT_BLITSDLBLIT=$enableval else WANT_BLITSDLBLIT=no fi # Check whether --enable-hostfs was given. if test "${enable_hostfs+set}" = set; then : enableval=$enable_hostfs; WANT_HOSTFS=$enableval else WANT_HOSTFS=yes fi # Check whether --enable-ctrlkey was given. if test "${enable_ctrlkey+set}" = set; then : enableval=$enable_ctrlkey; case "$enableval" in ctrl) CONTROL_KEY="ctrl";; meta) CONTROL_KEY="meta";; both) CONTROL_KEY="both";; *) as_fn_error $? "--enable-ctrlkey takes only one of the following values: ctrl, meta, both" "$LINENO" 5;; esac else CONTROL_KEY="both" fi # Check whether --enable-gui was given. if test "${enable_gui+set}" = set; then : enableval=$enable_gui; WANT_SDLGUI=$enableval else WANT_SDLGUI=yes fi # Check whether --enable-opengl was given. if test "${enable_opengl+set}" = set; then : enableval=$enable_opengl; WANT_OPENGL=$enableval else WANT_OPENGL=yes fi # Check whether --with-mesa-headers was given. if test "${with_mesa_headers+set}" = set; then : withval=$with_mesa_headers; WITH_MESAINC=$withval else WITH_MESAINC=no fi # Check whether --enable-nfpci was given. if test "${enable_nfpci+set}" = set; then : enableval=$enable_nfpci; WANT_NFPCI=$enableval else WANT_NFPCI=no fi # Check whether --enable-usbhost was given. if test "${enable_usbhost+set}" = set; then : enableval=$enable_usbhost; WANT_USBHOST=$enableval else WANT_USBHOST=no fi # Check whether --enable-nfosmesa was given. if test "${enable_nfosmesa+set}" = set; then : enableval=$enable_nfosmesa; WANT_NFOSMESA=$enableval else WANT_NFOSMESA=no fi # Check whether --enable-nfjpeg was given. if test "${enable_nfjpeg+set}" = set; then : enableval=$enable_nfjpeg; WANT_NFJPEG=$enableval else WANT_NFJPEG=yes fi # Check whether --enable-nfclipbrd was given. if test "${enable_nfclipbrd+set}" = set; then : enableval=$enable_nfclipbrd; WANT_NFCLIPBRD=$enableval else WANT_NFCLIPBRD=yes fi # Check whether --enable-nfvdi was given. if test "${enable_nfvdi+set}" = set; then : enableval=$enable_nfvdi; WANT_NFVDI=$enableval else WANT_NFVDI=yes fi # Check whether --enable-ata-cdrom was given. if test "${enable_ata_cdrom+set}" = set; then : enableval=$enable_ata_cdrom; WANT_CDROM=$enableval else WANT_CDROM=yes fi # Check whether --enable-epslimiter was given. if test "${enable_epslimiter+set}" = set; then : enableval=$enable_epslimiter; WANT_EPSLIMITER=$enableval else WANT_EPSLIMITER=no fi # Check whether --enable-lilo was given. if test "${enable_lilo+set}" = set; then : enableval=$enable_lilo; WANT_LILO="$enableval" else WANT_LILO="no" fi # Check whether --enable-rtctimer was given. if test "${enable_rtctimer+set}" = set; then : enableval=$enable_rtctimer; WANT_RTCTIMER="$enableval" else WANT_RTCTIMER="yes" fi # Check whether --enable-parallelx86 was given. if test "${enable_parallelx86+set}" = set; then : enableval=$enable_parallelx86; WANT_PARALLELX86=$enableval else WANT_PARALLELX86=no fi # Check whether --enable-parport was given. if test "${enable_parport+set}" = set; then : enableval=$enable_parport; WANT_PARALLELPARPORT=$enableval else WANT_PARALLELPARPORT=yes fi # Check whether --enable-serialport was given. if test "${enable_serialport+set}" = set; then : enableval=$enable_serialport; WANT_UNIXSERIALPORT=$enableval else WANT_UNIXSERIALPORT=yes fi # Check whether --with-fink was given. if test "${with_fink+set}" = set; then : withval=$with_fink; WITH_FINK=$withval else WITH_FINK=no fi # Check whether --with-classicconfig was given. if test "${with_classicconfig+set}" = set; then : withval=$with_classicconfig; WITH_CLASSIC_CONFIG=$withval else WITH_CLASSIC_CONFIG=no fi if [ "x$WANT_MMU" = "xyes" ]; then SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="mpfr ieee uae" else SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="ieee uae" fi # Check whether --enable-fpe was given. if test "${enable_fpe+set}" = set; then : enableval=$enable_fpe; case "$enableval" in auto) FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER;; ieee) FPE_CORE_TEST_ORDER="ieee";; uae) FPE_CORE_TEST_ORDER="uae";; x86) FPE_CORE_TEST_ORDER="x86";; mpfr) FPE_CORE_TEST_ORDER="mpfr";; *) as_fn_error $? "--enable-fpe takes only one of the following values: auto, uae, x86, ieee, mpfr" "$LINENO" 5;; esac else FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER fi # Check whether --enable-addressing was given. if test "${enable_addressing+set}" = set; then : enableval=$enable_addressing; case "$enableval" in direct) ADDRESSING_TEST_ORDER="direct";; normal) ADDRESSING_TEST_ORDER="normal";; fixed) ADDRESSING_TEST_ORDER="fixed";; *) as_fn_error $? "--enable-addressing takes only one of the following values: direct, fixed, normal" "$LINENO" 5;; esac else ADDRESSING_TEST_ORDER="direct normal" fi # Check whether --enable-addr-check was given. if test "${enable_addr_check+set}" = set; then : enableval=$enable_addr_check; case "$enableval" in no) MEMORY_CHECK="no";; full) MEMORY_CHECK="full";; page) MEMORY_CHECK="page";; hwsp) MEMORY_CHECK="hwsp";; pagehwsp) MEMORY_CHECK="pagehwsp";; sseg) MEMORY_CHECK="sseg";; *) as_fn_error $? "--enable-addr-check takes only one of the following values: no, full, page, hwsp, pagehwsp, sseg" "$LINENO" 5;; esac else MEMORY_CHECK="page" fi # Check whether --enable-spcflags-excl was given. if test "${enable_spcflags_excl+set}" = set; then : enableval=$enable_spcflags_excl; WANT_SPCFLAGS_EXCL=$enableval else WANT_SPCFLAGS_EXCL=no fi # Check whether --enable-jit-compiler was given. if test "${enable_jit_compiler+set}" = set; then : enableval=$enable_jit_compiler; WANT_JIT=$enableval else WANT_JIT=no fi # Check whether --enable-jit-fpu was given. if test "${enable_jit_fpu+set}" = set; then : enableval=$enable_jit_fpu; WANT_JIT_FPU=$enableval else WANT_JIT_FPU=no fi # Check whether --enable-jit-debug was given. if test "${enable_jit_debug+set}" = set; then : enableval=$enable_jit_debug; WANT_JIT_DEBUG=$enableval else WANT_JIT_DEBUG=no fi # Check whether --enable-ethernet was given. if test "${enable_ethernet+set}" = set; then : enableval=$enable_ethernet; WANT_ETHERNET=$enableval else WANT_ETHERNET=yes fi # Check whether --enable-bpf-ethernet was given. if test "${enable_bpf_ethernet+set}" = set; then : enableval=$enable_bpf_ethernet; WANT_BFP_ETHERNET=$enableval else WANT_BFP_ETHERNET=no fi # Check whether --enable-cxx-exceptions was given. if test "${enable_cxx_exceptions+set}" = set; then : enableval=$enable_cxx_exceptions; WANT_CXX_EXCEPTIONS=$enableval else WANT_CXX_EXCEPTIONS=yes fi case "$host_os" in linux*) OS_TYPE=linux;; openbsd*) OS_TYPE=openbsd;; netbsd*) OS_TYPE=netbsd;; freebsd*|kfreebsd*-gnu) OS_TYPE=freebsd;; solaris*) OS_TYPE=solaris;; darwin*) OS_TYPE=darwin;; cygwin*) OS_TYPE=cygwin;; irix*) OS_TYPE=irix;; mint*) OS_TYPE=mint;; beos*|haiku*) OS_TYPE=beos;; mingw*) OS_TYPE=mingw;; *) OS_TYPE=`echo $host_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;; esac DEFINES="$DEFINES -DOS_$OS_TYPE" cat >>confdefs.h <<_ACEOF #define OS_TYPE "$OS_TYPE" _ACEOF ARCHFLAGS= HAVE_I386=no HAVE_SPARC=no HAVE_POWERPC=no HAVE_X86_64=no case "$host_cpu" in i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=yes if [ "x$OS_TYPE" = "xdarwin" ]; then ARCHFLAGS="-arch i386" if [ "x$DEVELOPER_SDK_DIR" = "x" ]; then DEVELOPER_SDK_DIR=/Developer/SDKs fi if [ ! -d "$DEVELOPER_SDK_DIR" ]; then as_fn_error $? "Cannot find SDKs directory at $DEVELOPER_SDK_DIR" "$LINENO" 5 fi case "$host_os" in darwin8* | darwin9* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.4u.sdk";; darwin10* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.5.sdk";; darwin11* | darwin12* ) ISYSROOT="-mmacosx-version-min=10.5";; *) as_fn_error $? "Sorry, unknown Darwin version: $host_os" "$LINENO" 5 ;; esac CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; sparc* ) CPU_TYPE=sparc HAVE_SPARC=yes;; powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=yes if [ "x$OS_TYPE" = "xdarwin" ]; then ARCHFLAGS="-arch ppc" ISYSROOT="-mmacosx-version-min=10.3" CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; x86_64* ) CPU_TYPE=x86_64 HAVE_X86_64=yes;; *) CPU_TYPE=`echo $host_cpu | sed -e 's/-/_/g'`;; esac DEFINES="$DEFINES -DCPU_$CPU_TYPE" cat >>confdefs.h <<_ACEOF #define CPU_TYPE "$CPU_TYPE" _ACEOF ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 $as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } if eval \${$as_ac_Header+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int main () { if ((DIR *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$as_ac_Header=yes" else eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' dir; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 $as_echo_n "checking for library containing opendir... " >&6; } if ${ac_cv_search_opendir+:} false; then : $as_echo_n "(cached) " >&6 else ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char opendir (); int main () { return opendir (); ; return 0; } _ACEOF for ac_lib in '' x; do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi if ac_fn_c_try_link "$LINENO"; then : ac_cv_search_opendir=$ac_res fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext if ${ac_cv_search_opendir+:} false; then : break fi done if ${ac_cv_search_opendir+:} false; then : else ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 $as_echo "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir if test "$ac_res" != no; then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in unistd.h fcntl.h sys/mman.h mach/mach.h sys/ioctl.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in getopt.h do : ac_fn_c_check_header_mongrel "$LINENO" "getopt.h" "ac_cv_header_getopt_h" "$ac_includes_default" if test "x$ac_cv_header_getopt_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_GETOPT_H 1 _ACEOF fi done for ac_header in termios.h termio.h alloca.h sys/statfs.h sys/statvfs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/types.h sys/stat.h sys/vfs.h utime.h sys/param.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/mount.h types.h stat.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in sys/socket.h do : ac_fn_c_check_header_mongrel "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" if test "x$ac_cv_header_sys_socket_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_SYS_SOCKET_H 1 _ACEOF fi done for ac_header in linux/if.h linux/if_tun.h net/if.h net/if_tun.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef HAVE_SYS_SOCKET_H #include #endif " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in net/bpf.h do : ac_fn_c_check_header_mongrel "$LINENO" "net/bpf.h" "ac_cv_header_net_bpf_h" "$ac_includes_default" if test "x$ac_cv_header_net_bpf_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NET_BPF_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 $as_echo_n "checking whether byte ordering is bigendian... " >&6; } if ${ac_cv_c_bigendian+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __APPLE_CC__ not a universal capable compiler #endif typedef int dummy; _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. ac_arch= ac_prev= for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do if test -n "$ac_prev"; then case $ac_word in i?86 | x86_64 | ppc | ppc64) if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then ac_arch=$ac_word else ac_cv_c_bigendian=universal break fi ;; esac ac_prev= elif test "x$ac_word" = "x-arch"; then ac_prev=arch fi done fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { #if BYTE_ORDER != BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { #ifndef _BIG_ENDIAN not big endian #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_bigendian=yes else ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. if test "$cross_compiling" = yes; then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } extern int foo; int main () { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else # finding both strings is unlikely to happen, but who knows? ac_cv_c_bigendian=unknown fi fi fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* Are we little or big endian? From Harbison&Steele. */ union { long int l; char c[sizeof (long int)]; } u; u.l = 1; return u.c[sizeof (long int) - 1] == 1; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_c_bigendian=no else ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 $as_echo "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) as_fn_error $? "unknown endianness presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 $as_echo_n "checking for working volatile... " >&6; } if ${ac_cv_c_volatile+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else ac_cv_c_volatile=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 $as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then $as_echo "#define volatile /**/" >>confdefs.h fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if ${ac_cv_sizeof_short+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if ${ac_cv_sizeof_int+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if ${ac_cv_sizeof_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if ${ac_cv_sizeof_long_long+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long long) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of float" >&5 $as_echo_n "checking size of float... " >&6; } if ${ac_cv_sizeof_float+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (float))" "ac_cv_sizeof_float" "$ac_includes_default"; then : else if test "$ac_cv_type_float" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (float) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_float=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_float" >&5 $as_echo "$ac_cv_sizeof_float" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_FLOAT $ac_cv_sizeof_float _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of double" >&5 $as_echo_n "checking size of double... " >&6; } if ${ac_cv_sizeof_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (double))" "ac_cv_sizeof_double" "$ac_includes_default"; then : else if test "$ac_cv_type_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_double" >&5 $as_echo "$ac_cv_sizeof_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_DOUBLE $ac_cv_sizeof_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long double" >&5 $as_echo_n "checking size of long double... " >&6; } if ${ac_cv_sizeof_long_double+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long double))" "ac_cv_sizeof_long_double" "$ac_includes_default"; then : else if test "$ac_cv_type_long_double" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long double) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long_double=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_double" >&5 $as_echo "$ac_cv_sizeof_long_double" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_DOUBLE $ac_cv_sizeof_long_double _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 $as_echo_n "checking size of void *... " >&6; } if ${ac_cv_sizeof_void_p+:} false; then : $as_echo_n "(cached) " >&6 else if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : else if test "$ac_cv_type_void_p" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void *) See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_void_p=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 $as_echo "$ac_cv_sizeof_void_p" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_VOID_P $ac_cv_sizeof_void_p _ACEOF ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_c_check_type "$LINENO" "loff_t" "ac_cv_type_loff_t" "$ac_includes_default" if test "x$ac_cv_type_loff_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define loff_t off_t _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t size_t _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 $as_echo_n "checking return type of signal handlers... " >&6; } if ${ac_cv_type_signal+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { return *(signal (0, 0)) (0) == 1; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_type_signal=int else ac_cv_type_signal=void fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 $as_echo "$ac_cv_type_signal" >&6; } cat >>confdefs.h <<_ACEOF #define RETSIGTYPE $ac_cv_type_signal _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if ${ac_cv_header_time+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 $as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } if ${ac_cv_struct_tm+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int main () { struct tm tm; int *p = &tm.tm_sec; return !p; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_struct_tm=time.h else ac_cv_struct_tm=sys/time.h fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 $as_echo "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then $as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h fi # Check whether --enable-largefile was given. if test "${enable_largefile+set}" = set; then : enableval=$enable_largefile; fi if test "$enable_largefile" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 $as_echo_n "checking for special C compiler options needed for large files... " >&6; } if ${ac_cv_sys_largefile_CC+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_sys_largefile_CC=no if test "$GCC" != yes; then ac_save_CC=$CC while :; do # IRIX 6.2 and later do not support large files by default, # so use the C compiler's -n32 option if that helps. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext CC="$CC -n32" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_largefile_CC=' -n32'; break fi rm -f core conftest.err conftest.$ac_objext break done CC=$ac_save_CC rm -f conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 $as_echo "$ac_cv_sys_largefile_CC" >&6; } if test "$ac_cv_sys_largefile_CC" != no; then CC=$CC$ac_cv_sys_largefile_CC fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 $as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } if ${ac_cv_sys_file_offset_bits+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _FILE_OFFSET_BITS 64 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_file_offset_bits=64; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_file_offset_bits=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 $as_echo "$ac_cv_sys_file_offset_bits" >&6; } case $ac_cv_sys_file_offset_bits in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits _ACEOF ;; esac rm -rf conftest* if test $ac_cv_sys_file_offset_bits = unknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 $as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } if ${ac_cv_sys_large_files+:} false; then : $as_echo_n "(cached) " >&6 else while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=no; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _LARGE_FILES 1 #include /* Check that off_t can represent 2**63 - 1 correctly. We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_sys_large_files=1; break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_sys_large_files=unknown break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 $as_echo "$ac_cv_sys_large_files" >&6; } case $ac_cv_sys_large_files in #( no | unknown) ;; *) cat >>confdefs.h <<_ACEOF #define _LARGE_FILES $ac_cv_sys_large_files _ACEOF ;; esac rm -rf conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler recognizes bool as a built-in type" >&5 $as_echo_n "checking whether the compiler recognizes bool as a built-in type... " >&6; } if ${ac_cv_cxx_bool+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} int main () { bool b = true; return f(b); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_bool=yes else ac_cv_cxx_bool=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_bool" >&5 $as_echo "$ac_cv_cxx_bool" >&6; } if test "$ac_cv_cxx_bool" = yes; then $as_echo "#define HAVE_BOOL /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5 $as_echo_n "checking for sin in -lm... " >&6; } if ${ac_cv_lib_m_sin+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char sin (); int main () { return sin (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_sin=yes else ac_cv_lib_m_sin=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5 $as_echo "$ac_cv_lib_m_sin" >&6; } if test "x$ac_cv_lib_m_sin" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi for ac_func in strdup do : ac_fn_c_check_func "$LINENO" "strdup" "ac_cv_func_strdup" if test "x$ac_cv_func_strdup" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRDUP 1 _ACEOF fi done for ac_func in sigaction signal do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mmap mprotect munmap do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in vm_allocate vm_deallocate vm_protect do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in strchr memcpy bcopy do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in usleep gettimeofday do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in fseeko fsync do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in canonicalize_file_name realpath do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_type "$LINENO" "caddr_t" "ac_cv_type_caddr_t" "$ac_includes_default" if test "x$ac_cv_type_caddr_t" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_CADDR_T 1 _ACEOF fi for ac_func in mach_task_self task_self do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done $as_echo "#define DIRSEPARATOR \"/\"" >>confdefs.h case "$host_os" in linux*) EXTRASYSSRCS="Unix/linux/parameters_linux.cpp Unix/linux/ethernet_linux.cpp Unix/host_filesys_unix.cpp" ;; cygwin*) $as_echo "#define ARANYMHOME \"aranym\"" >>confdefs.h LIBS="$LIBS -liberty" EXTRASYSSRCS="Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp" ;; solaris*) $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h $as_echo "#define _POSIX_C_SOURCE 199506L" >>confdefs.h DEFINES="$DEFINES -DBSD_COMP -D__EXTENSIONS__" EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; irix*) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/irix/unaligned.c Unix/host_filesys_unix.cpp" ;; freebsd*|kfreebsd*-gnu) $as_echo "#define HAVE_O_FSYNC 1" >>confdefs.h EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; darwin*) $as_echo "#define HAVE_O_FSYNC 1" >>confdefs.h if test "x$WITH_FINK" = "xyes"; then $as_echo "#define ARANYMHOME \"aranym\"" >>confdefs.h EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp Unix/darwin/ethernet_darwin.cpp Unix/darwin/SDLHotkeysRefresh.M" else $as_echo "#define ARANYMHOME \"ARAnyM\"" >>confdefs.h if test "x$WITH_CLASSIC_CONFIG" = "xyes"; then echo "Using classic config" $as_echo "#define ARANYMCONFIG \"config\"" >>confdefs.h $as_echo "#define ARANYMNVRAM \"nvram\"" >>confdefs.h $as_echo "#define ARANYMKEYMAP \"keymap\"" >>confdefs.h else echo "Using preference files" $as_echo "#define ARANYMCONFIG \"org.aranym.amcfg\"" >>confdefs.h $as_echo "#define ARANYMNVRAM \"org.aranym.nvram\"" >>confdefs.h $as_echo "#define ARANYMKEYMAP \"org.aranym.keymap\"" >>confdefs.h fi EXTRASYSSRCS="Unix/darwin/SDLMain.M Unix/darwin/host_filesys_darwin.M Unix/darwin/parameters_darwin.cpp Unix/darwin/ethernet_darwin.cpp Unix/darwin/SDLHotkeysRefresh.M" BUNDLE_FRAMEWORKS= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework AppKit" >&5 $as_echo_n "checking whether compiler supports framework AppKit... " >&6; } if ${aranym_cv_have_framework_AppKit+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework AppKit" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_AppKit=yes else aranym_cv_have_framework_AppKit=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_AppKit" >&5 $as_echo "$aranym_cv_have_framework_AppKit" >&6; } if test $aranym_cv_have_framework_AppKit = yes; then : $as_echo "#define HAVE_FRAMEWORK_APPKIT 1" >>confdefs.h fi have_framework_AppKit=$aranym_cv_have_framework_AppKit { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework CoreFoundation" >&5 $as_echo_n "checking whether compiler supports framework CoreFoundation... " >&6; } if ${aranym_cv_have_framework_CoreFoundation+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework CoreFoundation" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_CoreFoundation=yes else aranym_cv_have_framework_CoreFoundation=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_CoreFoundation" >&5 $as_echo "$aranym_cv_have_framework_CoreFoundation" >&6; } if test $aranym_cv_have_framework_CoreFoundation = yes; then : $as_echo "#define HAVE_FRAMEWORK_COREFOUNDATION 1" >>confdefs.h fi have_framework_CoreFoundation=$aranym_cv_have_framework_CoreFoundation { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework IOKit" >&5 $as_echo_n "checking whether compiler supports framework IOKit... " >&6; } if ${aranym_cv_have_framework_IOKit+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework IOKit" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_IOKit=yes else aranym_cv_have_framework_IOKit=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_IOKit" >&5 $as_echo "$aranym_cv_have_framework_IOKit" >&6; } if test $aranym_cv_have_framework_IOKit = yes; then : $as_echo "#define HAVE_FRAMEWORK_IOKIT 1" >>confdefs.h fi have_framework_IOKit=$aranym_cv_have_framework_IOKit { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework Security" >&5 $as_echo_n "checking whether compiler supports framework Security... " >&6; } if ${aranym_cv_have_framework_Security+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework Security" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_Security=yes else aranym_cv_have_framework_Security=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_Security" >&5 $as_echo "$aranym_cv_have_framework_Security" >&6; } if test $aranym_cv_have_framework_Security = yes; then : $as_echo "#define HAVE_FRAMEWORK_SECURITY 1" >>confdefs.h fi have_framework_Security=$aranym_cv_have_framework_Security PKG_CONFIG="" fi ;; beos*|haiku*) # Extract the first word of "xres", so it can be a program name with args. set dummy xres; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_XRES+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_XRES in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_XRES="$BEOS_XRES" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BEOS_XRES="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_XRES" && ac_cv_path_BEOS_XRES="as_fn_error $? "xres not found." "$LINENO" 5" ;; esac fi BEOS_XRES=$ac_cv_path_BEOS_XRES if test -n "$BEOS_XRES"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_XRES" >&5 $as_echo "$BEOS_XRES" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "rc", so it can be a program name with args. set dummy rc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_RC+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_RC in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_RC="$BEOS_RC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BEOS_RC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_RC" && ac_cv_path_BEOS_RC="as_fn_error $? "rc not found." "$LINENO" 5" ;; esac fi BEOS_RC=$ac_cv_path_BEOS_RC if test -n "$BEOS_RC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_RC" >&5 $as_echo "$BEOS_RC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "setversion", so it can be a program name with args. set dummy setversion; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_BEOS_SETVERSION+:} false; then : $as_echo_n "(cached) " >&6 else case $BEOS_SETVERSION in [\\/]* | ?:[\\/]*) ac_cv_path_BEOS_SETVERSION="$BEOS_SETVERSION" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_BEOS_SETVERSION="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_BEOS_SETVERSION" && ac_cv_path_BEOS_SETVERSION="as_fn_error $? "setversion not found." "$LINENO" 5" ;; esac fi BEOS_SETVERSION=$ac_cv_path_BEOS_SETVERSION if test -n "$BEOS_SETVERSION"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BEOS_SETVERSION" >&5 $as_echo "$BEOS_SETVERSION" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/beos/cdrom_beos.cpp Unix/host_filesys_unix.cpp" CPPFLAGS="$CPPFLAGS -I\$(srcdir)/Unix/beos" WANT_UNIXSERIALPORT=no ac_cv_tun_tap_support=no ;; *) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; esac SYSSRCS="$SYSSRCS $EXTRASYSSRCS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __wchar_t" >&5 $as_echo_n "checking for __wchar_t... " >&6; } if ${ac_cv_wchar_t+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_wchar_t="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_wchar_t=yes else ac_cv_wchar_t=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_wchar_t" >&5 $as_echo "$ac_cv_wchar_t" >&6; } if [ "x$ac_cv_wchar_t" = "xyes" -o "x$ac_cv_wchar_t" = "xguessing yes" ]; then $as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether TUN/TAP is supported" >&5 $as_echo_n "checking whether TUN/TAP is supported... " >&6; } if ${ac_cv_tun_tap_support+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #ifdef HAVE_SYS_SOCKET_H #include #endif #include #include #endif #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) #include #include #endif int main () { struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_tun_tap_support=yes else ac_cv_tun_tap_support=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tun_tap_support" >&5 $as_echo "$ac_cv_tun_tap_support" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BPF is supported" >&5 $as_echo_n "checking whether BPF is supported... " >&6; } if ${ac_cv_bpf_support+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined(HAVE_NET_BPF_H) #include #endif int main () { struct bpf_program filter; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_bpf_support=yes else ac_cv_bpf_support=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_bpf_support" >&5 $as_echo "$ac_cv_bpf_support" >&6; } have_mach_vm=no if [ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \ "x$ac_cv_func_vm_protect" = "xyes" ]; then have_mach_vm=yes fi if [ "x$have_mach_vm" = "xyes" -o "x$have_mach_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MACH_VM 1" >>confdefs.h fi case "$host_os" in darwin*) OSdarwinReq="#define OS_darwin";; *) OSdarwinReq= ;; esac if [ "x$have_mach_vm" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vm_protect works" >&5 $as_echo_n "checking whether vm_protect works... " >&6; } if ${ac_cv_vm_protect_works+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_cv_vm_protect_works=yes for test_def in NONE_READ NONE_WRITE READ_WRITE; do if test "$cross_compiling" = yes; then : ac_cv_vm_protect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_vm_protect_works=no else rm -f core fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi done if test "$cross_compiling" = yes; then : ac_cv_vm_protect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_vm_protect_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_vm_protect_works" >&5 $as_echo "$ac_cv_vm_protect_works" >&6; } if [ "x$have_mach_vm" = "xyes" ]; then case $ac_cv_vm_protect_works in *yes) have_mach_vm=yes;; *no) have_mach_vm=no;; esac fi if [ "x$have_mach_vm" = "xyes" -o "x$have_mach_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MACH_VM 1" >>confdefs.h fi fi have_mmap_vm=no if [ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \ "x$ac_cv_func_mprotect" = "xyes" ]; then if [ "x$have_mach_vm" = "xno" ]; then have_mmap_vm=yes fi fi if [ "x$have_mmap_vm" = "xyes" -o "x$have_mmap_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_VM 1" >>confdefs.h fi if [ "x$have_mmap_vm" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap supports MAP_ANON" >&5 $as_echo_n "checking whether mmap supports MAP_ANON... " >&6; } if ${ac_cv_mmap_anon+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_mmap_anon="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define HAVE_MMAP_ANON #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mmap_anon=yes else ac_cv_mmap_anon=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mmap_anon" >&5 $as_echo "$ac_cv_mmap_anon" >&6; } if [ "x$ac_cv_mmap_anon" = "xyes" -o "x$ac_cv_mmap_anon" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_ANON 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mmap supports MAP_ANONYMOUS" >&5 $as_echo_n "checking whether mmap supports MAP_ANONYMOUS... " >&6; } if ${ac_cv_mmap_anonymous+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_mmap_anonymous="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define HAVE_MMAP_ANONYMOUS #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mmap_anonymous=yes else ac_cv_mmap_anonymous=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mmap_anonymous" >&5 $as_echo "$ac_cv_mmap_anonymous" >&6; } if [ "x$ac_cv_mmap_anonymous" = "xyes" -o "x$ac_cv_mmap_anonymous" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_ANONYMOUS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether mprotect works" >&5 $as_echo_n "checking whether mprotect works... " >&6; } if ${ac_cv_mprotect_works+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_cv_mprotect_works=yes for test_def in NONE_READ NONE_WRITE READ_WRITE; do if test "$cross_compiling" = yes; then : ac_cv_mprotect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_mprotect_works=no else rm -f core fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi done if test "$cross_compiling" = yes; then : ac_cv_mprotect_works="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE #include "$srcdir/src/Unix/vm_alloc.cpp" _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_mprotect_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_mprotect_works" >&5 $as_echo "$ac_cv_mprotect_works" >&6; } if [ "x$have_mmap_vm" = "xyes" ]; then case $ac_cv_mprotect_works in *yes) have_mmap_vm=yes;; *no) have_mmap_vm=no;; esac fi if [ "x$have_mmap_vm" = "xyes" -o "x$have_mmap_vm" = "xguessing yes" ]; then $as_echo "#define HAVE_MMAP_VM 1" >>confdefs.h fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether POSIX shared memory is working" >&5 $as_echo_n "checking whether POSIX shared memory is working... " >&6; } if ${ac_cv_have_posix_shm+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_have_posix_shm="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define HAVE_POSIX_SHM $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" int main(void) { /* returns 0 if we have working POSIX shm */ if (vm_init() < 0) exit(2); char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT); if (m1 == VM_MAP_FAILED) exit(3); vm_exit(); exit(0); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_have_posix_shm=yes else ac_cv_have_posix_shm=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_posix_shm" >&5 $as_echo "$ac_cv_have_posix_shm" >&6; } if [ "x$ac_cv_have_posix_shm" = "xyes" -o "x$ac_cv_have_posix_shm" = "xguessing yes" ]; then $as_echo "#define HAVE_POSIX_SHM 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether 33-bit memory addressing is working" >&5 $as_echo_n "checking whether 33-bit memory addressing is working... " >&6; } if ${ac_cv_have_33bit_addressing+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_have_33bit_addressing="guessing no" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define USE_33BIT_ADDRESSING 1 #include "$srcdir/src/Unix/vm_alloc.cpp" int main(void) { /* returns 0 if we have working 33-bit addressing */ if (sizeof(void *) < 8) exit(1); if (vm_init() < 0) exit(2); char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT); if (m1 == VM_MAP_FAILED) exit(3); char *m2 = m1 + (1L << 32); m1[0] = 0x12; if (m2[0] != 0x12) exit(4); m2[0] = 0x34; if (m1[0] != 0x34) exit(5); vm_exit(); exit(0); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_have_33bit_addressing=yes else ac_cv_have_33bit_addressing=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_33bit_addressing" >&5 $as_echo "$ac_cv_have_33bit_addressing" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether signal handlers need to be reinstalled" >&5 $as_echo_n "checking whether signal handlers need to be reinstalled... " >&6; } if ${ac_cv_signal_need_reinstall+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_signal_need_reinstall="guessing yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } int main(void) { /* returns 0 if signals need not to be reinstalled */ signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_signal_need_reinstall=yes else ac_cv_signal_need_reinstall=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_signal_need_reinstall" >&5 $as_echo "$ac_cv_signal_need_reinstall" >&6; } if [ "x$ac_cv_signal_need_reinstall" = "xyes" -o "x$ac_cv_signal_need_reinstall" = "xguessing yes" ]; then $as_echo "#define SIGNAL_NEED_REINSTALL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sigaction handlers need to be reinstalled" >&5 $as_echo_n "checking whether sigaction handlers need to be reinstalled... " >&6; } if ${ac_cv_sigaction_need_reinstall+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test "$cross_compiling" = yes; then : ac_cv_sigaction_need_reinstall="guessing yes" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } typedef RETSIGTYPE (*signal_handler)(int); static signal_handler mysignal(int sig, signal_handler handler) { struct sigaction old_sa; struct sigaction new_sa; new_sa.sa_handler = handler; return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler); } int main(void) { /* returns 0 if signals need not to be reinstalled */ mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : ac_cv_sigaction_need_reinstall=yes else ac_cv_sigaction_need_reinstall=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sigaction_need_reinstall" >&5 $as_echo "$ac_cv_sigaction_need_reinstall" >&6; } if [ "x$ac_cv_sigaction_need_reinstall" = "xyes" -o "x$ac_cv_sigaction_need_reinstall" = "xguessing yes" ]; then $as_echo "#define SIGACTION_NEED_REINSTALL 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for vasprintf" >&5 $as_echo_n "checking for vasprintf... " >&6; } if ${ac_cv_have_vasprintf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { va_list a; vasprintf(NULL, NULL, a); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_vasprintf=yes else ac_cv_have_vasprintf=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_vasprintf" >&5 $as_echo "$ac_cv_have_vasprintf" >&6; } if [ "x$ac_cv_have_vasprintf" = "xyes" -o "x$ac_cv_have_vasprintf" = "xguessing yes" ]; then $as_echo "#define HAVE_GNU_SOURCE 1" >>confdefs.h fi if [ "x$ac_cv_have_vasprintf" = "xyes" ]; then DEFINES="$DEFINES -D_GNU_SOURCE" else SYSSRCS="$SYSSRCS Unix/vasprintf.c" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sighandler_t" >&5 $as_echo_n "checking for sighandler_t... " >&6; } if ${ac_cv_have_sighandler_t+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { signal(0, (sighandler_t)NULL); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_sighandler_t=yes else ac_cv_have_sighandler_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_sighandler_t" >&5 $as_echo "$ac_cv_have_sighandler_t" >&6; } if [ "x$ac_cv_have_sighandler_t" = "xyes" -o "x$ac_cv_have_sighandler_t" = "xguessing yes" ]; then $as_echo "#define HAVE_SIGHANDLER_T 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getopt_long" >&5 $as_echo_n "checking for getopt_long... " >&6; } if ${ac_cv_have_getopt_long+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _GNU_SOURCE #include #include int main () { getopt_long(0, NULL, NULL, NULL, NULL); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_have_getopt_long=yes else ac_cv_have_getopt_long=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_getopt_long" >&5 $as_echo "$ac_cv_have_getopt_long" >&6; } if [ "x$ac_cv_have_getopt_long" = "xyes" -o "x$ac_cv_have_getopt_long" = "xguessing yes" ]; then $as_echo "#define HAVE_GETOPT_H 1" >>confdefs.h fi if [ "x$ac_cv_have_getopt_long" = "xno" ]; then SYSSRCS="$SYSSRCS Unix/getopt_init.c Unix/getopt1.c Unix/getopt.c" fi case $CONTROL_KEY in meta) $as_echo "#define MAP_META_TO_CONTROL 1" >>confdefs.h ;; both) $as_echo "#define MAP_META_TO_CONTROL 1" >>confdefs.h $as_echo "#define MAP_CONTROL_TO_CONTROL 1" >>confdefs.h ;; ctrl) $as_echo "#define MAP_CONTROL_TO_CONTROL 1" >>confdefs.h ;; esac if [ "x$WANT_JIT" = "xyes" ]; then WANT_EXSIGSEGV=yes MEMORY_CHECK=sseg fi case $MEMORY_CHECK in no) $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h ;; page) $as_echo "#define ARAM_PAGE_CHECK 1" >>confdefs.h ;; hwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h ;; pagehwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define ARAM_PAGE_CHECK 1" >>confdefs.h $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h ;; sseg) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" $as_echo "#define NOCHECKBOUNDARY 1" >>confdefs.h $as_echo "#define RAMENDNEEDED 1" >>confdefs.h $as_echo "#define EXTENDED_SIGSEGV 1" >>confdefs.h $as_echo "#define HW_SIGSEGV 1" >>confdefs.h ;; *) ;; esac if [ "x$WANT_HISTORY" = "xyes" ]; then $as_echo "#define FULL_HISTORY 1" >>confdefs.h fi if [ "x$WANT_FLIGHTRECORDER" = "xyes" ]; then $as_echo "#define FLIGHT_RECORDER 1" >>confdefs.h fi if [ "x$WANT_CDROM" = "xyes" ]; then $as_echo "#define SUPPORT_CDROM 1" >>confdefs.h fi MMUSRCS="uae_cpu/cpummu.cpp" if [ "x$WANT_MMU" = "xyes" ]; then $as_echo "#define FULLMMU 1" >>confdefs.h fi if [ "x$ATC_TYPE" = "xsmall" ]; then $as_echo "#define SMALL_ATC 1" >>confdefs.h fi if [ "x$ATC_TYPE" = "xno" ]; then $as_echo "#define DISABLE_ATC 1" >>confdefs.h fi DSPSRCS="" if [ "x$WANT_DSP" = "xyes" ]; then $as_echo "#define DSP_EMULATION 1" >>confdefs.h DSPSRCS="dsp_core.c dsp_cpu.c" if [ "x$WANT_DSP_DISASM" = "xyes" ]; then $as_echo "#define DSP_DISASM 1" >>confdefs.h DSPSRCS="$DSPSRCS dsp_disasm.c" fi fi if [ "x$WANT_PROTECT2K" != "xno" ]; then $as_echo "#define PROTECT2K 1" >>confdefs.h fi if [ "x$WANT_FIXEDFASTRAM" != "xno" ]; then cat >>confdefs.h <<_ACEOF #define FixedSizeFastRAM $WANT_FIXEDFASTRAM _ACEOF fi if [ "x$WANT_FIXEDVIDEORAM" = "xyes" ]; then $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h else if [ "x$WANT_MMU" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Protection of first 2kB RAM enabled as well - won't hurt" >&5 $as_echo "$as_me: WARNING: Protection of first 2kB RAM enabled as well - won't hurt" >&2;} $as_echo "#define PROTECT2K 1" >>confdefs.h fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&5 $as_echo "$as_me: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&2;} $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h WANT_FIXEDVIDEORAM="yes" fi fi if [ "x$WANT_REALSTOP" = "xyes" ]; then $as_echo "#define ENABLE_REALSTOP 1" >>confdefs.h WANT_SPCFLAGS_EXCL=yes fi if [ "x$WANT_BLITMEMMOVE" = "xyes" ]; then $as_echo "#define BLITTER_MEMMOVE 1" >>confdefs.h fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&5 $as_echo "$as_me: WARNING: Blitter SDL surface blitting support needs fixed position of VideoRAM" >&2;} $as_echo "#define FIXED_VIDEORAM 1" >>confdefs.h WANT_FIXEDVIDEORAM="yes" fi if [ "x$WANT_BLITSDLBLIT" = "xyes" ]; then $as_echo "#define BLITTER_SDLBLIT 1" >>confdefs.h $as_echo "#define BLITTER_MEMMOVE 1" >>confdefs.h fi HAVE_ETHERNET=no if [ "x$WANT_ETHERNET" = "xyes" ]; then if [ "x$ac_cv_tun_tap_support" = "xyes" ]; then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="aratapif" HAVE_ETHERNET="yes" elif [ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_I386" ]; then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="" HAVE_ETHERNET="yes" elif [ "x$OS_TYPE" = "xdarwin" ]; then $as_echo "#define ETHERNET_SUPPORT 1" >>confdefs.h if [ "x$WANT_BFP_ETHERNET" = "xyes" ]; then if [ "x$ac_cv_bpf_support" = "xyes" -o "x$ac_cv_bpf_support" = "xguessing yes" ]; then $as_echo "#define ENABLE_BPF 1" >>confdefs.h fi else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/" >&5 $as_echo "$as_me: WARNING: Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/" >&2;} fi SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="" HAVE_ETHERNET="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ethernet interface not supported on your system" >&5 $as_echo "$as_me: WARNING: Ethernet interface not supported on your system" >&2;} TAPIF="" fi else TAPIF="" fi if [ "x$HAVE_ETHERNET" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF ethernet" fi if [ "x$WANT_HOSTFS" = "xyes" ]; then SYSSRCS="$SYSSRCS natfeat/hostfs.cpp" $as_echo "#define HOSTFS_SUPPORT 1" >>confdefs.h PROVIDES_NF="$PROVIDES_NF hostfs" fi GUISDLSRCS="" if test "x$WANT_SDLGUI" = "xyes" ; then GUISDLSRCS="gui-sdl/sdlgui.cpp gui-sdl/dlgFileSelect.cpp gui-sdl/file.cpp gui-sdl/dlgMain.cpp gui-sdl/dlgDisk.cpp gui-sdl/dlgPartition.cpp gui-sdl/dlgKeyboard.cpp gui-sdl/dlgHotkeys.cpp gui-sdl/dlgAlert.cpp gui-sdl/dlgOs.cpp gui-sdl/dlgVideo.cpp gui-sdl/dlgNetwork.cpp gui-sdl/dlgKeypress.cpp gui-sdl/dialog.cpp gui-sdl/dlgUsb.cpp" CPPFLAGS="$CPPFLAGS -I\$(srcdir)/gui-sdl" $as_echo "#define SDL_GUI 1" >>confdefs.h fi if [ "x$WANT_EXSIGSEGV" = "xyes" ]; then WANT_CXX_EXCEPTIONS="no" fi if [ "x$WANT_CXX_EXCEPTIONS" = "xno" ]; then $as_echo "#define EXCEPTIONS_VIA_LONGJMP 1" >>confdefs.h fi if [ "x$WANT_EXSIGSEGV" = "xyes" ]; then case "$host_os" in linux*) case "$CPU_TYPE" in i386) SYSSRCS="$SYSSRCS Unix/linux/sigsegv_linux_x86.cpp" ;; x86_64) SYSSRCS="$SYSSRCS Unix/linux/sigsegv_linux_x86_64.cpp" ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac ;; openbsd*) if [ "x$HAVE_I386" = "xyes" ]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; darwin*) if [ "x$CPU_TYPE" = "powerpc" ]; then as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 else SYSSRCS="$SYSSRCS Unix/darwin/sigsegv_darwin_x86.cpp" $as_echo "#define NO_NESTED_SIGSEGV 1 " >>confdefs.h fi ;; netbsd*) if [ "x$HAVE_I386" = "xyes" ]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; freebsd*|kfreebsd*-gnu) if [ "x$HAVE_I386" = "xyes" ]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; cygwin*) if [ "x$HAVE_I386" = "xyes" ]; then SYSSRCS="$SYSSRCS Unix/cygwin/sigsegv_cygwin.cpp" $as_echo "#define NO_NESTED_SIGSEGV 1 " >>confdefs.h else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; solaris*) if [ "x$HAVE_I386" = "xyes" ]; then SYSSRCS="$SYSSRCS Unix/solaris/sigsegv_solaris_x86.cpp" else as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 fi ;; *) as_fn_error $? "Sorry, extended segfault handler not supported on your platform" "$LINENO" 5 ;; esac fi ADDRESSING_MODE="" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the addressing mode to use" >&5 $as_echo_n "checking for the addressing mode to use... " >&6; } for am in $ADDRESSING_TEST_ORDER; do case $am in direct) if [ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]; then continue fi if [ "x$OS_TYPE" = "xsolaris" ]; then continue fi ADDRESSING_MODE="direct" DEFINES="$DEFINES -DDIRECT_ADDRESSING" break ;; fixed) if [ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]; then continue fi if [ "x$OS_TYPE" = "xlinux" -a "x$HAVE_I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [ "x$OS_TYPE" = "xfreebsd" -a "x$HAVE_I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [ "x$OS_TYPE" = "xopenbsd" -a "x$HAVE_I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [ "x$OS_TYPE" = "xdarwin" -a "x$HAVE_I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [ "x$OS_TYPE" = "xsolaris" -a "x$HAVE=I386" ]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi ;; normal) ADDRESSING_MODE="normal" DEFINES="$DEFINES -DNORMAL_ADDRESSING" break ;; *) as_fn_error $? "Internal configure.in script error for $am addressing mode" "$LINENO" 5 esac done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ADDRESSING_MODE" >&5 $as_echo "$ADDRESSING_MODE" >&6; } if [ "x$ADDRESSING_MODE" = "x" ]; then as_fn_error $? "Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER" "$LINENO" 5 fi HAVE_GAS=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GAS .p2align feature" >&5 $as_echo_n "checking for GAS .p2align feature... " >&6; } cat >conftest.S << EOF .text .p2align 5 EOF if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVE_GAS" >&5 $as_echo "$HAVE_GAS" >&6; } HAVE_GCC27=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC 2.7 or higher" >&5 $as_echo_n "checking for GCC 2.7 or higher... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5 xyes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "xyes" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; HAVE_GCC27=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f conftest* HAVE_GCC30=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC 3.0 or higher" >&5 $as_echo_n "checking for GCC 3.0 or higher... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if __GNUC__ >= 3 xyes #endif _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "xyes" >/dev/null 2>&1; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; HAVE_GCC30=yes else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f conftest* if [ "x$HAVE_GCC27" = "xyes" -a "x$FPE_CORE" = "xx86" ]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-merge-constants" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GCC supports constants merging" >&5 $as_echo_n "checking whether GCC supports constants merging... " >&6; } if ${ac_cv_gcc_constants_merging+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_gcc_constants_merging=yes else ac_cv_gcc_constants_merging=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_constants_merging" >&5 $as_echo "$ac_cv_gcc_constants_merging" >&6; } if [ "x$ac_cv_gcc_constants_merging" != "xyes" ]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi if [ "x$HAVE_GCC27" = "xyes" ]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-gcse-sm" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GCC supports store motion" >&5 $as_echo_n "checking whether GCC supports store motion... " >&6; } if ${ac_cv_gcc_store_motion+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_gcc_store_motion=yes else ac_cv_gcc_store_motion=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gcc_store_motion" >&5 $as_echo "$ac_cv_gcc_store_motion" >&6; } if [ "x$ac_cv_gcc_store_motion" != "xyes" ]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi CPUSRCS= GENCPUSRCS= ASM_OPTIMIZATIONS=none GENCPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp" CAN_JIT=no JITSRCS= GENJITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp" if [ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]; then DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\"" if [ "x$HAVE_GAS" = "xyes" ]; then ASM_OPTIMIZATIONS=i386 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE" # GENCPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s" GENJITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $GENJITSRCS" # GENJITSRCS="cpufast1_nf.s cpufast2_nf.s cpufast3_nf.s cpufast4_nf.s cpufast5_nf.s cpufast6_nf.s cpufast7_nf.s cpufast8_nf.s $GENJITSRCS" CAN_JIT=yes fi elif [ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]; then DEFINES="$DEFINES -DUNALIGNED_PROFITABLE" if [ "x$HAVE_GAS" = "xyes" ]; then ASM_OPTIMIZATIONS="x86-64" DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS" GENJITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $GENJITSRCS" CAN_JIT=yes WANT_33BIT_ADDRESSING=yes fi elif [ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]; then case "$host_os" in solaris*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking SPARC CPU architecture" >&5 $as_echo_n "checking SPARC CPU architecture... " >&6; } SPARC_TYPE=`solaris/which_sparc` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SPARC_TYPE" >&5 $as_echo "$SPARC_TYPE" >&6; } case "$SPARC_TYPE" in SPARC_V8) ASM_OPTIMIZATIONS="SPARC V8 architecture" DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" CFLAGS="$CFLAGS -Wa,-Av8" CXXFLAGS="$CXXFLAGS -Wa,-Av8" ;; SPARC_V9) ASM_OPTIMIZATIONS="SPARC V9 architecture" DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" CFLAGS="$CFLAGS -Wa,-Av9" CXXFLAGS="$CXXFLAGS -Wa,-Av9" ;; esac ;; esac fi if [ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" = "xyes" ]; then if [ "x$WANT_MMU" = "xyes" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: !!!!! MMU&JIT in progress, dangerous !!!!!" >&5 $as_echo "$as_me: WARNING: !!!!! MMU&JIT in progress, dangerous !!!!!" >&2;} fi JITSRCS="$JITSRCS uae_cpu/compiler/compemu_support.cpp" DEFINES="$DEFINES -DUSE_JIT=1" CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" if [ "x$WANT_JIT_DEBUG" = "xyes" ]; then DEFINES="$DEFINES -DJIT_DEBUG=1" fi if [ "x$WANT_JIT_FPU" = "xyes" ]; then DEFINES="$DEFINES -DUSE_JIT_FPU=1" JITSRCS="$JITSRCS uae_cpu/compiler/compemu_fpp.cpp" fi GENJITSRCS="$GENJITSRCS compstbl.cpp cpustbl_nf.cpp" else WANT_JIT=no WANT_JIT_FPU=no WANT_JIT_DEBUG=no JITSRCS="" GENJITSRCS="" fi if [ "$ac_cv_have_33bit_addressing:$WANT_33BIT_ADDRESSING" = "yes:yes" ]; then use_33bit_addressing=yes fi if [ "x$use_33bit_addressing" = "xyes" -o "x$use_33bit_addressing" = "xguessing yes" ]; then $as_echo "#define USE_33BIT_ADDRESSING 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking floating point format" >&5 $as_echo_n "checking floating point format... " >&6; } if ${ac_cv_c_float_format+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat > conftest.$ac_ext <&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then od -c conftest.o | sed 's/^[0-7]*[ ]*/ / s/\*/./g s/ \\n/*/g s/ [0-9][0-9][0-9]/./g s/ \\[^ ]/./g' | tr -d ' ' | tr -s '*' ' ' | fold | sed '$a\ ' > conftest.dmp if grep 'format:.@IEEEF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.I@@PFE.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (big-endian)' elif grep 'format:.FEEEI@.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.EFP@@I.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IEEE (little-endian)' elif grep 'format:.__floa.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='VAX D-float' elif grep 'format:..PDP-1.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='PDP-10' elif grep 'format:.BMHEXF.:tamrof' conftest.dmp >/dev/null 2>&1; then ac_cv_c_float_format='IBM 370 hex' else as_fn_error $? "Unknown floating point format" "$LINENO" 5 fi else as_fn_error $? "compile failed" "$LINENO" 5 fi rm -rf conftest* ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_float_format" >&5 $as_echo "$ac_cv_c_float_format" >&6; } # IEEE is the default format. If the float endianness isn't the same # as the integer endianness, we have to set FLOAT_WORDS_BIG_ENDIAN # (which is a tristate: yes, no, default). This is only an issue with # IEEE; the other formats are only supported by a few machines each, # all with the same endianness. format=IEEE_FLOAT_FORMAT fbigend= case $ac_cv_c_float_format in 'IEEE (big-endian)' ) if test $ac_cv_c_bigendian = no; then fbigend=1 fi if test $ac_cv_c_bigendian = universal; then fbigend=WORDS_BIGENDIAN fi ;; 'IEEE (little-endian)' ) if test $ac_cv_c_bigendian = yes; then fbigend=0 fi if test $ac_cv_c_bigendian = universal; then fbigend='!WORDS_BIGENDIAN' fi ;; 'VAX D-float' ) format=VAX_FLOAT_FORMAT ;; 'PDP-10' ) format=PDP10_FLOAT_FORMAT ;; 'IBM 370 hex' ) format=IBM_FLOAT_FORMAT ;; esac cat >>confdefs.h <<_ACEOF #define HOST_FLOAT_FORMAT $format _ACEOF if test -n "$fbigend"; then cat >>confdefs.h <<_ACEOF #define HOST_FLOAT_WORDS_BIG_ENDIAN $fbigend _ACEOF fi for ac_header in ieee754.h ieeefp.h floatingpoint.h nan.h math.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done if [ "x$WANT_JIT_FPU" = "xyes" -a "x$FPE_CORE_TEST_ORDER" != "xieee" ]; then FPE_CORE_TEST_ORDER="ieee" fi for fpe in $FPE_CORE_TEST_ORDER; do case $fpe in ieee) case $ac_cv_c_float_format in IEEE*) FPE_CORE="IEEE fpu core" $as_echo "#define USES_FPU_CORE \"IEEE\"" >>confdefs.h DEFINES="$DEFINES -DFPU_IEEE" FPUSRCS="uae_cpu/fpu/fpu_ieee.cpp" for ac_func in isnanl isinfl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in logl log10l expl powl fabsl sqrtl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in sinl cosl tanl sinhl coshl tanhl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in asinl acosl atanl asinhl acoshl atanhl do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in floorl ceill do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done case $CPU_TYPE in alpha) CXXFLAGS="$CXXFLAGS -mieee" LDFLAGS="$LDFLAGS -mieee" break ;; *) ;; esac break ;; esac ;; x86) if [ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]; then FPE_CORE="i387 fpu core" DEFINES="$DEFINES -DFPU_X86" FPUSRCS="uae_cpu/fpu/fpu_x86.cpp" break fi ;; uae) FPE_CORE="uae fpu core" $as_echo "#define USES_FPU_CORE \"UAE\"" >>confdefs.h DEFINES="$DEFINES -DFPU_UAE" FPUSRCS="uae_cpu/fpu/fpu_uae.cpp" break ;; mpfr) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mpfr_set_zero in -lmpfr" >&5 $as_echo_n "checking for mpfr_set_zero in -lmpfr... " >&6; } if ${ac_cv_lib_mpfr_mpfr_set_zero+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lmpfr -lgmp $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char mpfr_set_zero (); int main () { return mpfr_set_zero (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_mpfr_mpfr_set_zero=yes else ac_cv_lib_mpfr_mpfr_set_zero=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_mpfr_mpfr_set_zero" >&5 $as_echo "$ac_cv_lib_mpfr_mpfr_set_zero" >&6; } if test "x$ac_cv_lib_mpfr_mpfr_set_zero" = xyes; then : LIBS="$LIBS -lmpfr -lgmp" fi if test $ac_cv_lib_mpfr_mpfr_set_zero = yes; then FPE_CORE="mpfr fpu core" $as_echo "#define USES_FPU_CORE \"MPFR\"" >>confdefs.h DEFINES="$DEFINES -DFPU_MPFR" FPUSRCS="uae_cpu/fpu/fpu_mpfr.cpp" break fi ;; *) as_fn_error $? "Internal configure.in script error for $fpe fpu core" "$LINENO" 5 ;; esac done if [ "x$FPE_CORE" = "x" ]; then as_fn_error $? "Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER" "$LINENO" 5 fi for ac_func in atanh do : ac_fn_c_check_func "$LINENO" "atanh" "ac_cv_func_atanh" if test "x$ac_cv_func_atanh" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_ATANH 1 _ACEOF fi done for ac_func in isnan isinf finite isnormal signbit do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if [ "x$WANT_JIT" = "xno" ]; then if [ "x$WHICH_DEBUG" = "xndebug" -a "x$ac_cv_func_sigaction" = "xyes" ]; then $as_echo "#define DEBUGGER 1" >>confdefs.h $as_echo "#define NEWDEBUG 1" >>confdefs.h CPUSRCS="$CPUSRCS uae_cpu/debug.cpp" fi if [ "x$WHICH_DEBUG" = "xuae" ]; then $as_echo "#define DEBUGGER 1" >>confdefs.h $as_echo "#define UAEDEBUG 1" >>confdefs.h CPUSRCS="$CPUSRCS uae_cpu/debug.cpp" fi fi if [ "x$WANT_SPCFLAGS_EXCL" = "xyes" ]; then DEFINES="$DEFINES -DENABLE_EXCLUSIVE_SPCFLAGS" fi CPUINCLUDES="-I\$(srcdir)/uae_cpu" CPUSRCS="$CPUSRCS uae_cpu/aranym_glue.cpp uae_cpu/memory.cpp uae_cpu/newcpu.cpp uae_cpu/readcpu.cpp $JITSRCS $FPUSRCS $MMUSRCS" GENCPUSRCS="$GENCPUSRCS cpudefs.cpp cpustbl.cpp $GENJITSRCS" if [ "x$HAVE_GCC27" = "xyes" ]; then CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'` CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'` fi if [ "x$WANT_NATDEBUG" = "xyes" ]; then DBGSP="-g" WFLAGS="" if [ "x$HAVE_GCC27" = "xyes" ]; then WFLAGS="$WFLAGS -W -Wall" DBGSP="-ggdb3" fi else DBGSP="" WFLAGS="" fi if [ "x$WANT_FULLDEBUG" = "xyes" ]; then CFLAGS="$CFLAGS -DWHOLEDEBUG" CXXFLAGS="$CXXFLAGS -DWHOLEDEBUG" fi if [ "x$HAVE_GCC27" = "xyes" ]; then CFLAGS=`echo $CFLAGS | sed -e 's/-O2//g'` CFLAGS="-O3 $CFLAGS" CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O2//g'` CXXFLAGS="-O3 $CXXFLAGS" fi if [ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_GCC30" = "xyes" ]; then CFLAGS=`echo $CFLAGS | sed -e 's/-O[23]//g'` CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O[23]//g'` fi if [ "x$HAVE_OFAST" = "xyes" ]; then CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="-LANG:std $CXXFLAGS" LDFLAGS="$LDFLAGS -ipa" fi SDL_CFLAGS= SDL_LIBS= if test "x$OS_TYPE" == "xdarwin" -a "x$WITH_FINK" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL" >&5 $as_echo_n "checking whether compiler supports framework SDL... " >&6; } if ${aranym_cv_have_framework_SDL+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL=yes else aranym_cv_have_framework_SDL=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL" >&5 $as_echo "$aranym_cv_have_framework_SDL" >&6; } if test $aranym_cv_have_framework_SDL = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL 1" >>confdefs.h fi have_framework_SDL=$aranym_cv_have_framework_SDL fi if test "x$have_framework_SDL" = "xyes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL framework" >&5 $as_echo_n "checking location of SDL framework... " >&6; } if ${aranym_cv_SDL_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL.framework" if test -d "$framework_loc" ; then aranym_cv_SDL_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL_location" >&5 $as_echo "$aranym_cv_SDL_location" >&6; } if test -z $aranym_cv_SDL_location ; then as_fn_error $? "SDL framework not found" "$LINENO" 5 fi SDL_LOCATION=$aranym_cv_SDL_location CPPFLAGS="$CPPFLAGS -I$SDL_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_LOCATION" else # Check whether --with-sdl-prefix was given. if test "${with_sdl_prefix+set}" = set; then : withval=$with_sdl_prefix; sdl_prefix="$withval" else sdl_prefix="" fi # Check whether --with-sdl-exec-prefix was given. if test "${with_sdl_exec_prefix+set}" = set; then : withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" else sdl_exec_prefix="" fi # Check whether --enable-sdltest was given. if test "${enable_sdltest+set}" = set; then : enableval=$enable_sdltest; else enable_sdltest=yes fi if test x$sdl_exec_prefix != x ; then sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_exec_prefix/bin/sdl-config fi fi if test x$sdl_prefix != x ; then sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" if test x${SDL_CONFIG+set} != xset ; then SDL_CONFIG=$sdl_prefix/bin/sdl-config fi fi as_save_PATH="$PATH" if test "x$prefix" != xNONE; then PATH="$prefix/bin:$prefix/usr/bin:$PATH" fi # Extract the first word of "sdl-config", so it can be a program name with args. set dummy sdl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_SDL_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $SDL_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" ;; esac fi SDL_CONFIG=$ac_cv_path_SDL_CONFIG if test -n "$SDL_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 $as_echo "$SDL_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi PATH="$as_save_PATH" min_sdl_version=1.2.10 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 $as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } no_sdl="" if test "$SDL_CONFIG" = "no" ; then no_sdl=yes else SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` if test "x$enable_sdltest" = "xyes" ; then ac_save_CFLAGS="$CFLAGS" ac_save_CXXFLAGS="$CXXFLAGS" ac_save_LIBS="$LIBS" CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" rm -f conf.sdltest if test "$cross_compiling" = yes; then : echo $ac_n "cross compiling; assumed OK... $ac_c" else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include "SDL.h" char* my_strdup (char *str) { char *new_str; if (str) { new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); strcpy (new_str, str); } else new_str = NULL; return new_str; } int main (int argc, char *argv[]) { int major, minor, micro; char *tmp_version; /* This hangs on some systems (?) system ("touch conf.sdltest"); */ { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } /* HP/UX 9 (%@#!) writes to sscanf strings */ tmp_version = my_strdup("$min_sdl_version"); if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { printf("%s, bad version string\n", "$min_sdl_version"); exit(1); } if (($sdl_major_version > major) || (($sdl_major_version == major) && ($sdl_minor_version > minor)) || (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) { return 0; } else { printf("\n*** 'sdl-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); printf("*** of SDL required is %d.%d.%d. If sdl-config is correct, then it is\n", major, minor, micro); printf("*** best to upgrade to the required version.\n"); printf("*** If sdl-config was wrong, set the environment variable SDL_CONFIG\n"); printf("*** to point to the correct copy of sdl-config, and remove the file\n"); printf("*** config.cache before re-running configure\n"); return 1; } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else no_sdl=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi if test "x$no_sdl" = x ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if test "$SDL_CONFIG" = "no" ; then echo "*** The sdl-config script installed by SDL could not be found" echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" echo "*** your path, or set the SDL_CONFIG environment variable to the" echo "*** full path to sdl-config." else if test -f conf.sdltest ; then : else echo "*** Could not run SDL test program, checking why..." CFLAGS="$CFLAGS $SDL_CFLAGS" CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include "SDL.h" int main(int argc, char *argv[]) { return 0; } #undef main #define main K_and_R_C_main int main () { return 0; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding SDL or finding the wrong" echo "*** version of SDL. If it is not finding SDL, you'll need to set your" echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" echo "*** to the installed location Also, make sure you have run ldconfig if that" echo "*** is required on your system" echo "***" echo "*** If you have an old version installed, it is best to remove it, although" echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" else echo "*** The test program failed to compile or link. See the file config.log for the" echo "*** exact error that occured. This usually means SDL was incorrectly installed" echo "*** or that you have moved SDL since it was installed. In the latter case, you" echo "*** may want to edit the sdl-config script: $SDL_CONFIG" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ac_save_CFLAGS" CXXFLAGS="$ac_save_CXXFLAGS" LIBS="$ac_save_LIBS" fi fi SDL_CFLAGS="" SDL_LIBS="" as_fn_error $? "*** SDL version $SDL_VERSION or higher not found! ***" "$LINENO" 5 fi rm -f conf.sdltest fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports framework SDL_image" >&5 $as_echo_n "checking whether compiler supports framework SDL_image... " >&6; } if ${aranym_cv_have_framework_SDL_image+:} false; then : $as_echo_n "(cached) " >&6 else saved_LIBS="$LIBS" LIBS="$LIBS -framework SDL_image" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : aranym_cv_have_framework_SDL_image=yes else aranym_cv_have_framework_SDL_image=no; LIBS="$saved_LIBS" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_have_framework_SDL_image" >&5 $as_echo "$aranym_cv_have_framework_SDL_image" >&6; } if test $aranym_cv_have_framework_SDL_image = yes; then : $as_echo "#define HAVE_FRAMEWORK_SDL_IMAGE 1" >>confdefs.h fi have_framework_SDL_image=$aranym_cv_have_framework_SDL_image if test "x$have_framework_SDL_image" = "xyes" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking location of SDL_image framework" >&5 $as_echo_n "checking location of SDL_image framework... " >&6; } if ${aranym_cv_SDL_image_location+:} false; then : $as_echo_n "(cached) " >&6 else aranym_cv_SDL_image_location="" echo "#error dummy" > conftest.c pos_locations=`$CC -v conftest.c -framework SDL_image 2>&1 | grep -e "> search" -A 999 | grep -e "End of " -B 999 | grep -e "^ "` rm -f conftest.c for pos_location in $FRAMEWORK_SEARCH_PATHS $pos_locations ; do pos_location="`echo $pos_location | sed 's/^"//' | sed 's/"$//'`" framework_loc="$pos_location/SDL_image.framework" if test -d "$framework_loc" ; then aranym_cv_SDL_image_location="$framework_loc" break; fi done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $aranym_cv_SDL_image_location" >&5 $as_echo "$aranym_cv_SDL_image_location" >&6; } if test -z $aranym_cv_SDL_image_location ; then as_fn_error $? "SDL_image framework not found" "$LINENO" 5 fi SDL_image_LOCATION=$aranym_cv_SDL_image_location CPPFLAGS="$CPPFLAGS -I$SDL_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes else tmp_cflags=$CFLAGS tmp_cppflags=$CPPFLAGS CFLAGS="$CFLAGS $SDL_CFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CFLAGS" ac_fn_c_check_header_mongrel "$LINENO" "SDL_image.h" "ac_cv_header_SDL_image_h" "$ac_includes_default" if test "x$ac_cv_header_SDL_image_h" = xyes; then : have_sdlimage_h=yes else havesdlimage_h=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IMG_isJPG in -lSDL_image" >&5 $as_echo_n "checking for IMG_isJPG in -lSDL_image... " >&6; } if ${ac_cv_lib_SDL_image_IMG_isJPG+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lSDL_image $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char IMG_isJPG (); int main () { return IMG_isJPG (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_SDL_image_IMG_isJPG=yes else ac_cv_lib_SDL_image_IMG_isJPG=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SDL_image_IMG_isJPG" >&5 $as_echo "$ac_cv_lib_SDL_image_IMG_isJPG" >&6; } if test "x$ac_cv_lib_SDL_image_IMG_isJPG" = xyes; then : have_sdlimage_lib=yes else have_sdlimage_lib=no fi CFLAGS=$tmp_cflags CPPFLAGS=$tmp_cppflags if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then LIBS="$LIBS -lSDL_image" fi fi if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then $as_echo "#define HAVE_SDL_IMAGE 1" >>confdefs.h fi if test "x$WANT_OPENGL" = "xyes"; then have_opengl="no" if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GL" >&5 $as_echo_n "checking for GL... " >&6; } if test -n "$GL_CFLAGS"; then pkg_cv_GL_CFLAGS="$GL_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gl\""; } >&5 ($PKG_CONFIG --exists --print-errors "gl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GL_CFLAGS=`$PKG_CONFIG --cflags "gl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GL_LIBS"; then pkg_cv_GL_LIBS="$GL_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gl\""; } >&5 ($PKG_CONFIG --exists --print-errors "gl") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GL_LIBS=`$PKG_CONFIG --libs "gl" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gl" 2>&1` else GL_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gl" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GL_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (gl) were not met: $GL_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GL_CFLAGS and GL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GL_CFLAGS and GL_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GL_CFLAGS=$pkg_cv_GL_CFLAGS GL_LIBS=$pkg_cv_GL_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test "x$GL_LIBS" = "x"; then case "$host" in *-*-cygwin* | *-*-mingw*) GL_LIBS="-lopengl32" ;; *-*-darwin*) GL_LIBS="-Wl,-framework,OpenGL" ;; *) GL_LIBS="-lGL" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL support" >&5 $as_echo_n "checking for OpenGL support... " >&6; } tmp_cflags=$CFLAGS tmp_libs=$LIBS CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS $GL_LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include "SDL_opengl.h" int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : have_opengl="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengl" >&5 $as_echo "$have_opengl" >&6; } CFLAGS=$tmp_cflags LIBS=$tmp_libs DYNGLSRCS="" if test "x$have_opengl" = "xyes"; then $as_echo "#define ENABLE_OPENGL 1" >>confdefs.h DYNGLSRCS="dyngl.c" else WANT_OPENGL="no" fi fi if [ "x$WANT_LILO" = "xyes" ]; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 $as_echo_n "checking for ZLIB... " >&6; } if test -n "$ZLIB_CFLAGS"; then pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$ZLIB_LIBS"; then pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` else ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$ZLIB_PKG_ERRORS" >&5 have_zlib=no elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } have_zlib=no else ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS ZLIB_LIBS=$pkg_cv_ZLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } have_zlib=yes fi fi # Fallback to autoconf (helps in Ubuntu 10.04 LTS) if [ "x$have_zlib" = "xno" ]; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzopen in -lz" >&5 $as_echo_n "checking for gzopen in -lz... " >&6; } if ${ac_cv_lib_z_gzopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gzopen (); int main () { return gzopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_z_gzopen=yes else ac_cv_lib_z_gzopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzopen" >&5 $as_echo "$ac_cv_lib_z_gzopen" >&6; } if test "x$ac_cv_lib_z_gzopen" = xyes; then : have_zlib=yes else have_zlib=no fi fi if [ "x$have_zlib" = "xyes" ]; then $as_echo "#define HAVE_LIBZ 1" >>confdefs.h fi else have_zlib="not required" fi WITH_USBHOST="no" if test "x$WANT_USBHOST" = "xyes"; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBUSB" >&5 $as_echo_n "checking for LIBUSB... " >&6; } if test -n "$LIBUSB_CFLAGS"; then pkg_cv_LIBUSB_CFLAGS="$LIBUSB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_CFLAGS=`$PKG_CONFIG --cflags "libusb-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$LIBUSB_LIBS"; then pkg_cv_LIBUSB_LIBS="$LIBUSB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libusb-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "libusb-1.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_LIBUSB_LIBS=`$PKG_CONFIG --libs "libusb-1.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then LIBUSB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libusb-1.0" 2>&1` else LIBUSB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libusb-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBUSB_PKG_ERRORS" >&5 WITH_USBHOST="no" elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } WITH_USBHOST="no" else LIBUSB_CFLAGS=$pkg_cv_LIBUSB_CFLAGS LIBUSB_LIBS=$pkg_cv_LIBUSB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } WITH_USBHOST="yes" fi fi # Search the library and headers directly if test "x$WITH_USBHOST" = "xno"; then ac_fn_c_check_header_mongrel "$LINENO" "libusb-1.0/libusb.h" "ac_cv_header_libusb_1_0_libusb_h" "$ac_includes_default" if test "x$ac_cv_header_libusb_1_0_libusb_h" = xyes; then : WITH_USBHOST="yes" else WITH_USBHOST="no" fi if test "x$WITH_USBHOST" = "xyes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libusb_init in -lusb-1.0" >&5 $as_echo_n "checking for libusb_init in -lusb-1.0... " >&6; } if ${ac_cv_lib_usb_1_0_libusb_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lusb-1.0 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char libusb_init (); int main () { return libusb_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_usb_1_0_libusb_init=yes else ac_cv_lib_usb_1_0_libusb_init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_usb_1_0_libusb_init" >&5 $as_echo "$ac_cv_lib_usb_1_0_libusb_init" >&6; } if test "x$ac_cv_lib_usb_1_0_libusb_init" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBUSB_1_0 1 _ACEOF LIBS="-lusb-1.0 $LIBS" else WITH_USBHOST="no" fi LIBUSB_LIBS="-lusb-1.0" fi fi if test "x$WITH_USBHOST" = "xno"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libusb is missing, USB NF disabled" >&5 $as_echo "$as_me: WARNING: libusb is missing, USB NF disabled" >&2;} fi fi if [ "x$WANT_LILO" = "xyes" ]; then if [ "x$WANT_MMU" = "xyes" ]; then $as_echo "#define ENABLE_LILO 1" >>confdefs.h else as_fn_error $? "Linux kernel requires functional MMU emulation" "$LINENO" 5 fi fi $as_echo "#define NFCDROM_SUPPORT 1" >>confdefs.h NFCDROM_DRIVER="sdl" case "$host_os" in linux*) NFCDROMSRCS="natfeat/nfcdrom_linux.cpp" $as_echo "#define NFCDROM_LINUX_SUPPORT 1" >>confdefs.h NFCDROM_DRIVER="linux,$NFCDROM_DRIVER" ;; esac PROVIDES_NF="$PROVIDES_NF cdrom($NFCDROM_DRIVER)" NFPCISRCS="" if [ "x$WANT_NFPCI" = "xyes" ]; then case "$host_os" in linux*) $as_echo "#define NFPCI_SUPPORT 1" >>confdefs.h NFPCISRCS="natfeat/nfpci.cpp" $as_echo "#define NFPCI_LINUX_SUPPORT 1" >>confdefs.h NFPCISRCS="$NFPCISRCS natfeat/nfpci_linux.cpp" PROVIDES_NF="$PROVIDES_NF pci" ;; *) as_fn_error $? "*** NatFeats PCI not supported by this OS ***" "$LINENO" 5 WANT_NFPCI="no" ;; esac fi USBHOSTSRCS="" if [ "x$WANT_USBHOST" = "xyes" -a "x$WITH_USBHOST" = "xyes" ]; then $as_echo "#define USBHOST_SUPPORT 1" >>confdefs.h USBHOSTSRCS="natfeat/usbhost.cpp" LIBS="$LIBS $LIBUSB_LIBS" PROVIDES_NF="$PROVIDES_NF usb" fi NFOSMESASRCS="" if test "x$WANT_NFOSMESA" = "xyes"; then $as_echo "#define NFOSMESA_SUPPORT 1" >>confdefs.h NFOSMESASRCS="natfeat/nfosmesa.cpp" if test "x$PKG_CONFIG" != "x"; then pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OSMESA" >&5 $as_echo_n "checking for OSMESA... " >&6; } if test -n "$OSMESA_CFLAGS"; then pkg_cv_OSMESA_CFLAGS="$OSMESA_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"osmesa\""; } >&5 ($PKG_CONFIG --exists --print-errors "osmesa") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OSMESA_CFLAGS=`$PKG_CONFIG --cflags "osmesa" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$OSMESA_LIBS"; then pkg_cv_OSMESA_LIBS="$OSMESA_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"osmesa\""; } >&5 ($PKG_CONFIG --exists --print-errors "osmesa") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_OSMESA_LIBS=`$PKG_CONFIG --libs "osmesa" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then OSMESA_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "osmesa" 2>&1` else OSMESA_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "osmesa" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$OSMESA_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (osmesa) were not met: $OSMESA_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables OSMESA_CFLAGS and OSMESA_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables OSMESA_CFLAGS and OSMESA_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else OSMESA_CFLAGS=$pkg_cv_OSMESA_CFLAGS OSMESA_LIBS=$pkg_cv_OSMESA_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi fi if test "x$OSMESA_CFLAGS" != "x"; then CPPFLAGS="$CPPFLAGS $OSMESA_CFLAGS" else case "$host_os" in darwin*) CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include/" ;; *) WANT_NFOSMESA="no" ;; esac fi fi if [ "x$WANT_NFOSMESA" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF osmesa" fi NFJPEGSRCS="" if [ "x$WANT_NFJPEG" = "xyes" ]; then if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then $as_echo "#define NFJPEG_SUPPORT 1" >>confdefs.h NFJPEGSRCS="natfeat/nfjpeg.cpp" PROVIDES_NF="$PROVIDES_NF jpeg" else WANT_NFJPEG="no" fi fi NFVDISRCS="" if [ "x$WANT_NFVDI" = "xyes" ]; then $as_echo "#define NFVDI_SUPPORT 1" >>confdefs.h NFVDISRCS="natfeat/nfvdi.cpp natfeat/nfvdi_soft.cpp" NFVDI_DRIVER="sw" if [ "x$WANT_OPENGL" = "xyes" ]; then NFVDISRCS="$NFVDISRCS natfeat/nfvdi_opengl.cpp" NFVDI_DRIVER="opengl,$NFVDI_DRIVER" fi PROVIDES_NF="$PROVIDES_NF vdi($NFVDI_DRIVER)" fi NFCLIPBOARDSRCS="" if [ "x$WANT_NFCLIPBRD" = "xyes" ]; then if [ "x$OS_TYPE" = "xcygwin" ]; then $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/cygwin/clipbrd_cygwin.cpp" elif [ "x$OS_TYPE" = "xdarwin" ]; then $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/darwin/clipbrd_darwin.M" elif [ "x$OS_TYPE" = "xbeos" -o "x$OS_TYPE" = "xhaiku" ]; then $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/beos/clipbrd_beos.cpp" LIBS="$LIBS -lbe" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XOpenDisplay in -lX11" >&5 $as_echo_n "checking for XOpenDisplay in -lX11... " >&6; } if ${ac_cv_lib_X11_XOpenDisplay+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lX11 $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char XOpenDisplay (); int main () { return XOpenDisplay (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_X11_XOpenDisplay=yes else ac_cv_lib_X11_XOpenDisplay=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_XOpenDisplay" >&5 $as_echo "$ac_cv_lib_X11_XOpenDisplay" >&6; } if test "x$ac_cv_lib_X11_XOpenDisplay" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBX11 1 _ACEOF LIBS="-lX11 $LIBS" fi if [ "x$ac_cv_lib_X11_XOpenDisplay" = "xyes" ]; then $as_echo "#define NFCLIPBRD_SUPPORT 1" >>confdefs.h NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/clipbrd_x11.cpp" LIBS="$LIBS -lX11" else as_fn_error $? "Sorry, NatFeat Clipboard not implemented on your platform yet" "$LINENO" 5 WANT_NFCLIPBRD="no" fi fi fi if [ "x$WANT_NFCLIPBRD" = "xyes" ]; then PROVIDES_NF="$PROVIDES_NF clipboard" fi if [ "x$WANT_EPSLIMITER" = "xyes" ]; then $as_echo "#define ENABLE_EPSLIMITER 1" >>confdefs.h fi if test "x$WANT_RTCTIMER" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define RTC_TIMER 1" >>confdefs.h else WANT_RTCTIMER="no" fi fi PARALLELX86SRCS="" if test "x$WANT_PARALLELX86" = "xyes" ; then if test "x$OS_TYPE" = "xlinux" -a "x$HAVE_I386" = "xyes"; then $as_echo "#define ENABLE_PARALLELX86 1" >>confdefs.h PARALLELX86SRCS="parallel_x86.cpp" else WANT_PARALLELX86="no" fi fi PARALLELPARPORTSRCS="" if test "x$WANT_PARALLELPARPORT" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define ENABLE_PARALLELPARPORT 1" >>confdefs.h PARALLELPARPORTSRCS="parallel_parport.cpp" else WANT_PARALLELPARPORT="no" fi fi if test "x$OS_TYPE" = "xlinux"; then $as_echo "#define ENABLE_MIDI_SEQUENCER 1" >>confdefs.h MIDISEQSRCS="midi_sequencer.cpp" fi SERIALSRCS="" if test "x$WANT_UNIXSERIALPORT" = "xyes" ; then if test "x$ac_cv_header_termios_h" = "xyes" -a "x$ac_cv_header_sys_ioctl_h" = "xyes"; then $as_echo "#define ENABLE_SERIALUNIX 1" >>confdefs.h SERIALSRCS="serial_port.cpp" else WANT_UNIXSERIALPORT="no" fi fi cat >>confdefs.h <<_ACEOF #define PROVIDES_NATFEATS "$PROVIDES_NF" _ACEOF APP=aranym case "$host_os" in darwin*) if test "x$WITH_FINK" = "xyes"; then TARGET="\$(APP)" else TARGET="\$(APP_BUNDLE)" fi ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" srcdir="." ;; mingw*) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"./\${APP}\\\"\"" ;; *) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; esac CFLAGS="$CFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" CXXFLAGS="$CXXFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" if [ "x$ARCHFLAGS" != "x" ]; then CPPFLAGS=`echo $CPPFLAGS | sed -e "s:$ARCHFLAGS::g"` LDFLAGS=`echo $LDFLAGS | sed -e "s:$ARCHFLAGS::g"` fi ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by aranym $as_me 0.9, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ aranym config.status 0.9 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo echo ARAnyM configuration summary: echo echo Use exclusive spcflags handling ........ : $WANT_SPCFLAGS_EXCL echo Use JIT compiler ....................... : $WANT_JIT echo Use JIT compiler for FPU instructions .. : $WANT_JIT_FPU echo JIT debug mode ......................... : $WANT_JIT_DEBUG echo Floating-Point emulation core .......... : $FPE_CORE echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS echo Addressing mode ........................ : $ADDRESSING_MODE echo -n Full MMU support ....................... : $WANT_MMU if [ "x$WANT_MMU" = "xyes" ]; then echo -n " (" case "$ATC_TYPE" in full) echo -n "with ATC";; small) echo -n "with small ATC";; no) echo -n "without ATC";; esac echo -n \) fi echo echo Linux /dev/rtc source timer ............ : $WANT_RTCTIMER echo Real STOP implementation ............... : $WANT_REALSTOP echo DSP 56001 support ...................... : $WANT_DSP echo DSP 56001 disassembly support .......... : $WANT_DSP_DISASM echo Debugger ............................... : $WHICH_DEBUG echo Check memory ........................... : $MEMORY_CHECK echo First 2kB of RAM Supervisor protected... : $WANT_PROTECT2K echo FastRAM fixed size ..................... : $WANT_FIXEDFASTRAM echo Fixed position of VideoRAM ............. : $WANT_FIXEDVIDEORAM echo Blitter memmove acceleration ........... : $WANT_BLITMEMMOVE echo Blitter SDL blit acceleration .......... : $WANT_BLITSDLBLIT echo Support for hostfs ..................... : $WANT_HOSTFS echo Support for ethernet ................... : $HAVE_ETHERNET echo GUI .................................... : $WANT_SDLGUI echo OpenGL ................................. : $WANT_OPENGL echo Linux-m68k loader ...................... : $WANT_LILO echo Zlib ................................... : $have_zlib echo libusb-1.0.............................. : $WITH_USBHOST echo NatFeat CD-ROM driver .................. : $NFCDROM_DRIVER echo NatFeat PCI driver ..................... : $WANT_NFPCI echo NatFeat USB driver ..................... : $WANT_USBHOST echo NatFeat OSMesa driver .................. : $WANT_NFOSMESA echo NatFeat JPEG decoder ................... : $WANT_NFJPEG echo NatFeat Clipboard ...................... : $WANT_NFCLIPBRD echo NatFeat VDI driver ..................... : $WANT_NFVDI echo Exception per second limiter ........... : $WANT_EPSLIMITER echo Linux/X86 h/w access for parallel port.. : $WANT_PARALLELX86 echo Linux /dev/parport for parallel port.... : $WANT_PARALLELPARPORT echo Unix /dev/ttySn for serial port......... : $WANT_UNIXSERIALPORT echo Use C++ exceptions for m68k exceptions.. : $WANT_CXX_EXCEPTIONS echo echo "Configuration done. Now type \"make depend\" (or \"gmake depend\") then \"make\" (or \"gmake\")." aranym-0.9.15/configure.ac000066400000000000000000001736431213346724500154100ustar00rootroot00000000000000dnl Process this file with autoconf to produce a configure script. dnl Written in 1999 by Christian Bauer et al. dnl Adapted for ARAnyM by Milan Jurik AC_INIT(aranym,0.9,aranym@lists.bobek.cz,aranym) AC_PREREQ(2.52) AC_CONFIG_HEADER(config.h) dnl Define list of provided Native Features PROVIDES_NF="audio bootstrap xhdi" dnl Canonical system information. AC_CANONICAL_HOST dnl Silent rules AC_ARG_ENABLE(silent-rules, AC_HELP_STRING([--enable-silent-rules], [Enable silent build [[default=yes]]]), , enable_silent_rules=yes) AM_DEFAULT_VERBOSITY=1 if test x$enable_silent_rules = xyes; then AM_DEFAULT_VERBOSITY=0 fi AC_SUBST(AM_DEFAULT_VERBOSITY) dnl Options. AC_ARG_ENABLE(nat-debug, [ --enable-nat-debug enable native debugger support (default=yes)], [WANT_NATDEBUG=$enableval], [WANT_NATDEBUG=yes]) AC_ARG_ENABLE(full-debug, [ --enable-full-debug enable full debug outputs (default=no)], [WANT_FULLDEBUG=$enableval], [WANT_FULLDEBUG=no]) AC_ARG_ENABLE(debug, [ --enable-debug=which specify which debugger to use (default=ndebug)], [ case "$enableval" in default) WHICH_DEBUG="ndebug";; uae) WHICH_DEBUG="uae";; ndebug) WHICH_DEBUG="ndebug";; no) WHICH_DEBUG="no";; *) AC_MSG_ERROR([--enable-debug takes only one of the following values: default, uae, ndebug, no]);; esac ], [WHICH_DEBUG="ndebug" ]) AC_ARG_ENABLE(fullhistory, [ --enable-fullhistory enable full history for debugger (default=no)], [WANT_HISTORY=$enableval], [WANT_HISTORY=no]) AC_ARG_ENABLE(flightrecorder, [ --enable-flightrecorder enable CPU flight recorder (default=no)], [WANT_FLIGHTRECORDER=$enableval], [WANT_FLIGHTRECORDER=no]) AC_ARG_ENABLE(fullmmu, [ --enable-fullmmu enable full 68040 MMU (default=no)], [WANT_MMU=$enableval], [WANT_MMU=no]) AC_ARG_ENABLE(atc, [ --enable-atc=ATC select type of ATC for MMU (default=full)], [ case "$enableval" in full) ATC_TYPE="full";; small) ATC_type="small";; no) ATC_TYPE="no";; *) AC_MSG_ERROR([--enable-atc takes only one of the following values: full, small, no]);; esac ], [ATC_TYPE=full]) AC_ARG_ENABLE(realstop, [ --enable-realstop enable real STOP instruction (default=yes)], [WANT_REALSTOP=$enableval], [WANT_REALSTOP=yes]) AC_ARG_ENABLE(dsp, [ --enable-dsp enable DSP 56001 (default=yes)], [WANT_DSP=$enableval], [WANT_DSP=yes]) AC_ARG_ENABLE(dsp-disasm, [ --enable-dsp-disasm enable DSP 56001 disassembler (default=no)], [WANT_DSP_DISASM=$enableval], [WANT_DSP_DISASM=no]) AC_ARG_ENABLE(protect2k, [ --enable-protect2k enable first 2kB of RAM Super protection (default=yes)], [WANT_PROTECT2K=$enableval], [WANT_PROTECT2K=yes]) AC_ARG_ENABLE(fixedfastram, [ --enable-fixedfastram=X use fixed size FastRAM of X MB (default=no)], [WANT_FIXEDFASTRAM=$enableval], [WANT_FIXEDFASTRAM=no]) AC_ARG_ENABLE(fixedvideoram, [ --enable-fixedvideoram use fixed start of VideoRAM (default=no)], [WANT_FIXEDVIDEORAM=$enableval], [WANT_FIXEDVIDEORAM=no]) AC_ARG_ENABLE(blitmemmove, [ --enable-blitmemmove enable Blitter memmove rout (default=no)], [WANT_BLITMEMMOVE=$enableval], [WANT_BLITMEMMOVE=no]) AC_ARG_ENABLE(blitsdlblit, [ --enable-blitsdlblit enable SDL blitting routine EXPERIMENTAL UNSUPPORTED BUGGY (default=no)], [WANT_BLITSDLBLIT=$enableval], [WANT_BLITSDLBLIT=no]) AC_ARG_ENABLE(hostfs, [ --enable-hostfs enable hostfs support (default=yes)], [WANT_HOSTFS=$enableval], [WANT_HOSTFS=yes]) AC_ARG_ENABLE(ctrlkey, [ --enable-ctrlkey=WICH specify which key to use for control key emulation (default=both)], [ case "$enableval" in dnl default is both ctrl) CONTROL_KEY="ctrl";; meta) CONTROL_KEY="meta";; both) CONTROL_KEY="both";; *) AC_MSG_ERROR([--enable-ctrlkey takes only one of the following values: ctrl, meta, both]);; esac ], [ CONTROL_KEY="both" ]) AC_ARG_ENABLE(gui, [ --enable-gui enable GUI (default=yes)], [WANT_SDLGUI=$enableval], [WANT_SDLGUI=yes]) AC_ARG_ENABLE(opengl, [ --enable-opengl enable OpenGL (default=yes)], [WANT_OPENGL=$enableval], [WANT_OPENGL=yes]) AC_ARG_WITH(mesa-headers, [ --with-mesa-headers Path to Mesa header files], [WITH_MESAINC=$withval], [WITH_MESAINC=no]) AC_ARG_ENABLE(nfpci, [ --enable-nfpci enable NatFeat PCI (default=no)], [WANT_NFPCI=$enableval], [WANT_NFPCI=no]) AC_ARG_ENABLE(usbhost, [ --enable-usbhost enable NatFeat USB (default=no)], [WANT_USBHOST=$enableval], [WANT_USBHOST=no]) AC_ARG_ENABLE(nfosmesa, [ --enable-nfosmesa enable NatFeat OSMesa (default=no)], [WANT_NFOSMESA=$enableval], [WANT_NFOSMESA=no]) AC_ARG_ENABLE(nfjpeg, [ --enable-nfjpeg enable NatFeat JPEG (default=yes)], [WANT_NFJPEG=$enableval], [WANT_NFJPEG=yes]) AC_ARG_ENABLE(nfclipbrd, [ --enable-nfclipbrd enable NatFeat Clipboard (default=yes)], [WANT_NFCLIPBRD=$enableval], [WANT_NFCLIPBRD=yes]) AC_ARG_ENABLE(nfvdi, [ --enable-nfvdi enable NatFeat VDI (default=yes)], [WANT_NFVDI=$enableval], [WANT_NFVDI=yes]) AC_ARG_ENABLE(ata-cdrom, [ --enable-ata-cdrom enable ATA CD-ROM emulation (default=yes)], [WANT_CDROM=$enableval], [WANT_CDROM=yes]) AC_ARG_ENABLE(epslimiter, [ --enable-epslimiter enable Exception per second limiter (default=no)], [WANT_EPSLIMITER=$enableval], [WANT_EPSLIMITER=no]) AC_ARG_ENABLE(lilo, [ --enable-lilo enable Linux-m68k loader (default=no)], WANT_LILO="$enableval", WANT_LILO="no") AC_ARG_ENABLE(rtctimer, [ --enable-rtctimer enable Linux /dev/rtc as source timer (default=yes)], WANT_RTCTIMER="$enableval", WANT_RTCTIMER="yes") AC_ARG_ENABLE(parallelx86, [ --enable-parallelx86 enable Linux X86 hw access for parallel port (default=no)], [WANT_PARALLELX86=$enableval], [WANT_PARALLELX86=no]) AC_ARG_ENABLE(parport, [ --enable-parport enable Linux /dev/parport access for parallel port (default=yes)], [WANT_PARALLELPARPORT=$enableval], [WANT_PARALLELPARPORT=yes]) AC_ARG_ENABLE(serialport, [ --enable-serialport enable Unix /dev/ttySn serial port support (default=yes)], [WANT_UNIXSERIALPORT=$enableval], [WANT_UNIXSERIALPORT=yes]) AC_ARG_WITH(fink, [ --with-fink Use Fink suite to build Aranym on MacOSX (default=no)], [WITH_FINK=$withval], [WITH_FINK=no]) AC_ARG_WITH(classicconfig, [ --with-classicconfig Use Classic config names on MacOSX (default=no)], [WITH_CLASSIC_CONFIG=$withval], [WITH_CLASSIC_CONFIG=no]) dnl FPU emulation core. if [[ "x$WANT_MMU" = "xyes" ]]; then SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="mpfr ieee uae" else SUGGESTED_AUTO_FPE_CORE_TEST_ORDER="ieee uae" fi AC_ARG_ENABLE(fpe, [ --enable-fpe=FPE specify which fpu emulator to use (default=auto)], [ case "$enableval" in dnl default is always ieee, if architecture has this fp format auto) FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER;; ieee) FPE_CORE_TEST_ORDER="ieee";; uae) FPE_CORE_TEST_ORDER="uae";; x86) FPE_CORE_TEST_ORDER="x86";; mpfr) FPE_CORE_TEST_ORDER="mpfr";; *) AC_MSG_ERROR([--enable-fpe takes only one of the following values: auto, uae, x86, ieee, mpfr]);; esac ], [ FPE_CORE_TEST_ORDER=$SUGGESTED_AUTO_FPE_CORE_TEST_ORDER ]) dnl Addressing modes. AC_ARG_ENABLE(addressing, [ --enable-addressing=AM specify the addressing mode to use (default=fastest)], [ case "$enableval" in direct) ADDRESSING_TEST_ORDER="direct";; normal) ADDRESSING_TEST_ORDER="normal";; fixed) ADDRESSING_TEST_ORDER="fixed";; *) AC_MSG_ERROR([--enable-addressing takes only one of the following values: direct, fixed, normal]);; esac ], [ ADDRESSING_TEST_ORDER="direct normal" ]) AC_ARG_ENABLE(addr-check, [ --enable-addr-check=AM specify the memory check to use (default=page)], [ case "$enableval" in no) MEMORY_CHECK="no";; full) MEMORY_CHECK="full";; page) MEMORY_CHECK="page";; hwsp) MEMORY_CHECK="hwsp";; pagehwsp) MEMORY_CHECK="pagehwsp";; sseg) MEMORY_CHECK="sseg";; *) AC_MSG_ERROR([--enable-addr-check takes only one of the following values: no, full, page, hwsp, pagehwsp, sseg]);; esac ], [ MEMORY_CHECK="page" ]) dnl Experimental hacks around spcflags handling. AC_ARG_ENABLE(spcflags-excl, [ --enable-spcflags-excl enable exclusive spcflags handling (default=no)], [WANT_SPCFLAGS_EXCL=$enableval], [WANT_SPCFLAGS_EXCL=no]) dnl JIT compiler options. AC_ARG_ENABLE(jit-compiler, [ --enable-jit-compiler enable JIT compiler (default=no)], [WANT_JIT=$enableval], [WANT_JIT=no]) AC_ARG_ENABLE(jit-fpu, [ --enable-jit-fpu enable JIT compiler for FPU instructions (default=no)], [WANT_JIT_FPU=$enableval], [WANT_JIT_FPU=no]) AC_ARG_ENABLE(jit-debug, [ --enable-jit-debug activate native code disassemblers (default=no)], [WANT_JIT_DEBUG=$enableval], [WANT_JIT_DEBUG=no]) AC_ARG_ENABLE(ethernet, [ --enable-ethernet enable ethernet card emulation (default=yes)], [WANT_ETHERNET=$enableval], [WANT_ETHERNET=yes]) AC_ARG_ENABLE(bpf-ethernet, [ --enable-bpf-ethernet enable ethernet card emulation using BPF (default=no)], [WANT_BFP_ETHERNET=$enableval], [WANT_BFP_ETHERNET=no]) AC_ARG_ENABLE(cxx-exceptions, [ --enable-cxx-exceptions enable the use of C++ try/catch instead of setjmp/longjmp (default=yes)], [WANT_CXX_EXCEPTIONS=$enableval], [WANT_CXX_EXCEPTIONS=yes]) dnl Host OS type (host is build if not cross-compiling). case "$host_os" in linux*) OS_TYPE=linux;; openbsd*) OS_TYPE=openbsd;; netbsd*) OS_TYPE=netbsd;; freebsd*|kfreebsd*-gnu) OS_TYPE=freebsd;; solaris*) OS_TYPE=solaris;; darwin*) OS_TYPE=darwin;; cygwin*) OS_TYPE=cygwin;; irix*) OS_TYPE=irix;; mint*) OS_TYPE=mint;; beos*|haiku*) OS_TYPE=beos;; mingw*) OS_TYPE=mingw;; *) OS_TYPE=`echo $host_os | sed -e 's/-/_/g' | sed -e 's/\./_/g'`;; esac DEFINES="$DEFINES -DOS_$OS_TYPE" AC_DEFINE_UNQUOTED([OS_TYPE], "$OS_TYPE", [Define OS type]) dnl Target CPU type. ARCHFLAGS= HAVE_I386=no HAVE_SPARC=no HAVE_POWERPC=no HAVE_X86_64=no case "$host_cpu" in i386* | i486* | i586* | i686* | i786* ) CPU_TYPE=i386 HAVE_I386=yes if [[ "x$OS_TYPE" = "xdarwin" ]]; then ARCHFLAGS="-arch i386" if [[ "x$DEVELOPER_SDK_DIR" = "x" ]]; then DEVELOPER_SDK_DIR=/Developer/SDKs fi if [[ ! -d "$DEVELOPER_SDK_DIR" ]]; then AC_MSG_ERROR([Cannot find SDKs directory at $DEVELOPER_SDK_DIR]) fi case "$host_os" in darwin8* | darwin9* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.4u.sdk";; darwin10* ) ISYSROOT="-mmacosx-version-min=10.4 -isysroot $DEVELOPER_SDK_DIR/MacOSX10.5.sdk";; darwin11* | darwin12* ) ISYSROOT="-mmacosx-version-min=10.5";; *) AC_MSG_ERROR([Sorry, unknown Darwin version: $host_os]) ;; esac dnl Add the ARCHFLAGS here to let configure check for the target and not host capabilities. CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; sparc* ) CPU_TYPE=sparc HAVE_SPARC=yes;; powerpc* ) CPU_TYPE=powerpc HAVE_POWERPC=yes if [[ "x$OS_TYPE" = "xdarwin" ]]; then ARCHFLAGS="-arch ppc" ISYSROOT="-mmacosx-version-min=10.3" dnl Add the ARCHFLAGS here to let configure check for the target and not host capabilities. CPPFLAGS="$CPPFLAGS $ISYSROOT $ARCHFLAGS" LDFLAGS="$LDFLAGS $ISYSROOT $ARCHFLAGS" fi ;; x86_64* ) CPU_TYPE=x86_64 HAVE_X86_64=yes;; *) CPU_TYPE=`echo $host_cpu | sed -e 's/-/_/g'`;; esac DEFINES="$DEFINES -DCPU_$CPU_TYPE" AC_DEFINE_UNQUOTED([CPU_TYPE], "$CPU_TYPE", [Define CPU type]) dnl Checks for programs. AC_PROG_CC AC_PROG_CC_C_O AC_PROG_CPP AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_MAKE_SET AC_PROG_INSTALL PKG_PROG_PKG_CONFIG m4_ifndef([PKG_CHECK_MODULES], [AC_DEFUN([PKG_CHECK_MODULES], [true])]) dnl Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_CHECK_HEADERS(unistd.h fcntl.h sys/mman.h mach/mach.h sys/ioctl.h) AC_CHECK_HEADERS(getopt.h) AC_CHECK_HEADERS(termios.h termio.h alloca.h sys/statfs.h sys/statvfs.h) AC_CHECK_HEADERS(sys/types.h sys/stat.h sys/vfs.h utime.h sys/param.h) AC_CHECK_HEADERS(sys/mount.h types.h stat.h) AC_CHECK_HEADERS(sys/socket.h) AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h, [], [], [ #ifdef HAVE_SYS_SOCKET_H #include #endif ]) AC_CHECK_HEADERS(net/bpf.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN AC_C_CONST AC_C_INLINE AC_C_VOLATILE AC_CHECK_SIZEOF(short, 2) AC_CHECK_SIZEOF(int, 4) AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(long long, 8) AC_CHECK_SIZEOF(float, 4) AC_CHECK_SIZEOF(double, 8) AC_CHECK_SIZEOF(long double, 12) AC_CHECK_SIZEOF(void *, 4) AC_TYPE_OFF_T AC_CHECK_TYPE(loff_t, off_t) AC_TYPE_SIZE_T AC_CHECK_TYPE(ssize_t, size_t) AC_TYPE_SIGNAL AC_HEADER_TIME AC_STRUCT_TM AC_SYS_LARGEFILE AC_CXX_BOOL dnl Checks for libraries AC_CHECK_LIB(m, sin) dnl Checks for library functions. AC_CHECK_FUNCS(strdup) AC_CHECK_FUNCS(sigaction signal) AC_CHECK_FUNCS(mmap mprotect munmap) AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect) AC_CHECK_FUNCS(strchr memcpy bcopy) AC_CHECK_FUNCS(usleep gettimeofday) AC_CHECK_FUNCS(fseeko fsync) AC_CHECK_FUNCS(canonicalize_file_name realpath) dnl Defines caddr_t as void * if not already defined AC_CHECK_TYPES(caddr_t) AH_BOTTOM( [#ifndef HAVE_CADDR_T typedef void * caddr_t; #endif]) dnl Darwin seems to define mach_task_self() instead of task_self(). AC_CHECK_FUNCS(mach_task_self task_self) AC_DEFINE([DIRSEPARATOR], "/", [Default directory separator]) case "$host_os" in linux*) EXTRASYSSRCS="Unix/linux/parameters_linux.cpp Unix/linux/ethernet_linux.cpp Unix/host_filesys_unix.cpp" ;; cygwin*) AC_DEFINE([ARANYMHOME], "aranym", [Default ARAnyM directory]) LIBS="$LIBS -liberty" EXTRASYSSRCS="Unix/cygwin/parameters_cygwin.cpp Unix/cygwin/tools_cygwin.cpp Unix/cygwin/ethernet_cygwin.cpp" ;; solaris*) AC_DEFINE([_XOPEN_SOURCE], 500, [Define if needed]) AC_DEFINE([_POSIX_C_SOURCE], 199506L, [Define if needed]) DEFINES="$DEFINES -DBSD_COMP -D__EXTENSIONS__" EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; irix*) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/irix/unaligned.c Unix/host_filesys_unix.cpp" ;; freebsd*|kfreebsd*-gnu) AC_DEFINE([HAVE_O_FSYNC], 1, [Define if you want to use FreeBSD's imitation of O_SYNC]) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; darwin*) AC_DEFINE([HAVE_O_FSYNC], 1, [Define if you want to use FreeBSD's imitation of O_SYNC]) if test "x$WITH_FINK" = "xyes"; then AC_DEFINE([ARANYMHOME], "aranym", [Default ARAnyM directory]) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp Unix/darwin/ethernet_darwin.cpp Unix/darwin/SDLHotkeysRefresh.M" else AC_DEFINE([ARANYMHOME], "ARAnyM", [Default ARAnyM directory]) if test "x$WITH_CLASSIC_CONFIG" = "xyes"; then echo "Using classic config" AC_DEFINE([ARANYMCONFIG], "config", [Default ARAnyM config file]) AC_DEFINE([ARANYMNVRAM], "nvram", [Default ARAnyM NVRAM file]) AC_DEFINE([ARANYMKEYMAP], "keymap", [Default ARAnyM keymap]) else echo "Using preference files" AC_DEFINE([ARANYMCONFIG], "org.aranym.amcfg", [Default ARAnyM config file]) AC_DEFINE([ARANYMNVRAM], "org.aranym.nvram", [Default ARAnyM NVRAM file]) AC_DEFINE([ARANYMKEYMAP], "org.aranym.keymap", [Default ARAnyM keymap]) fi EXTRASYSSRCS="Unix/darwin/SDLMain.M Unix/darwin/host_filesys_darwin.M Unix/darwin/parameters_darwin.cpp Unix/darwin/ethernet_darwin.cpp Unix/darwin/SDLHotkeysRefresh.M" BUNDLE_FRAMEWORKS= dnl Empty list of frameworks to bundle dnl Check for some important frameworks ARANYM_CHECK_FRAMEWORK(AppKit, []) ARANYM_CHECK_FRAMEWORK(CoreFoundation, [#include ]) ARANYM_CHECK_FRAMEWORK(IOKit, [#include ]) ARANYM_CHECK_FRAMEWORK(Security, [#include ]) dnl We (Mac OS X target) don't want to use PKG_CONFIG even if it exists (e.g. in /opt) PKG_CONFIG="" fi ;; beos*|haiku*) dnl Find tools needed to add resources AC_PATH_PROG(BEOS_XRES, xres, [AC_MSG_ERROR([xres not found.])]) AC_PATH_PROG(BEOS_RC, rc, [AC_MSG_ERROR([rc not found.])]) AC_PATH_PROG(BEOS_SETVERSION, setversion, [AC_MSG_ERROR([setversion not found.])]) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/beos/cdrom_beos.cpp Unix/host_filesys_unix.cpp" CPPFLAGS="$CPPFLAGS -I\$(srcdir)/Unix/beos" WANT_UNIXSERIALPORT=no ac_cv_tun_tap_support=no ;; *) EXTRASYSSRCS="Unix/parameters_unix.cpp Unix/host_filesys_unix.cpp" ;; esac SYSSRCS="$SYSSRCS $EXTRASYSSRCS" dnl Stupid hack around problem with extfs straply vs. Mac OS X AC_CACHE_CHECK([for __wchar_t], ac_cv_wchar_t, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #include #include #include ], ac_cv_wchar_t=yes, ac_cv_wchar_t=no, dnl When cross-compiling, do not assume anything. ac_cv_wchar_t="guessing no" ) AC_LANG_RESTORE ]) AC_TRANSLATE_DEFINE(HAVE_WCHAR_T, $ac_cv_wchar_t, [Define if wchar_t is present]) dnl Check that the host supports TUN/TAP devices AC_CACHE_CHECK([whether TUN/TAP is supported], ac_cv_tun_tap_support, [ AC_TRY_COMPILE([ #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) #ifdef HAVE_SYS_SOCKET_H #include #endif #include #include #endif #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) #include #include #endif ], [ struct ifreq ifr; memset(&ifr, 0, sizeof(ifr)); ifr.ifr_flags = IFF_TAP | IFF_NO_PI; ], ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no ) ]) dnl Check that the host supports BPF devices AC_CACHE_CHECK([whether BPF is supported], ac_cv_bpf_support, [ AC_TRY_COMPILE([ #if defined(HAVE_NET_BPF_H) #include #endif ], [ struct bpf_program filter; ], ac_cv_bpf_support=yes, ac_cv_bpf_support=no ) ]) dnl Various checks if the system supports vm_allocate() and the like functions. have_mach_vm=no if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \ "x$ac_cv_func_vm_protect" = "xyes" ]]; then have_mach_vm=yes fi AC_TRANSLATE_DEFINE(HAVE_MACH_VM, $have_mach_vm, [Define if your system has a working vm_allocate()-based memory allocator.]) case "$host_os" in darwin*) OSdarwinReq="#define OS_darwin";; *) OSdarwinReq= ;; esac dnl Check that vm_allocate(), vm_protect() work if [[ "x$have_mach_vm" = "xyes" ]]; then AC_CACHE_CHECK([whether vm_protect works], ac_cv_vm_protect_works, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cv_vm_protect_works=yes dnl First the tests that should segfault for test_def in NONE_READ NONE_WRITE READ_WRITE; do AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_vm_protect_works=no, rm -f core, dnl When cross-compiling, do not assume anything ac_cv_vm_protect_works="guessing no" ) done AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" ], , ac_cv_vm_protect_works=no, dnl When cross-compiling, do not assume anything ac_cv_vm_protect_works="guessing no" ) AC_LANG_RESTORE ] ) dnl Remove support for vm_allocate() if vm_protect() does not work if [[ "x$have_mach_vm" = "xyes" ]]; then case $ac_cv_vm_protect_works in *yes) have_mach_vm=yes;; *no) have_mach_vm=no;; esac fi AC_TRANSLATE_DEFINE(HAVE_MACH_VM, $have_mach_vm, [Define if your system has a working vm_allocate()-based memory allocator.]) fi dnl HAVE_MACH_VM dnl Various checks if the system supports mmap() and the like functions. dnl ... and Mach memory allocators are not supported have_mmap_vm=no if [[ "x$ac_cv_func_mmap" = "xyes" -a "x$ac_cv_func_munmap" = "xyes" -a \ "x$ac_cv_func_mprotect" = "xyes" ]]; then if [[ "x$have_mach_vm" = "xno" ]]; then have_mmap_vm=yes fi fi AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm, [Define if your system has a working mmap()-based memory allocator.]) dnl Check that mmap() and associated functions work. if [[ "x$have_mmap_vm" = "xyes" ]]; then dnl Check if we have a working anonymous mmap() AC_CACHE_CHECK([whether mmap supports MAP_ANON], ac_cv_mmap_anon, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define HAVE_MMAP_ANON #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mmap_anon=yes, ac_cv_mmap_anon=no, dnl When cross-compiling, do not assume anything. ac_cv_mmap_anon="guessing no" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_MMAP_ANON, $ac_cv_mmap_anon, [Define if defines MAP_ANON and mmap()'ing with MAP_ANON works.]) AC_CACHE_CHECK([whether mmap supports MAP_ANONYMOUS], ac_cv_mmap_anonymous, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define HAVE_MMAP_ANONYMOUS #define CONFIGURE_TEST_VM_MAP #define TEST_VM_MMAP_ANON #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mmap_anonymous=yes, ac_cv_mmap_anonymous=no, dnl When cross-compiling, do not assume anything. ac_cv_mmap_anonymous="guessing no" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_MMAP_ANONYMOUS, $ac_cv_mmap_anonymous, [Define if defines MAP_ANONYMOUS and mmap()'ing with MAP_ANONYMOUS works.]) AC_CACHE_CHECK([whether mprotect works], ac_cv_mprotect_works, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_cv_mprotect_works=yes dnl First the tests that should segfault for test_def in NONE_READ NONE_WRITE READ_WRITE; do AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_$test_def #include "$srcdir/src/Unix/vm_alloc.cpp" ], ac_cv_mprotect_works=no, rm -f core, dnl When cross-compiling, do not assume anything ac_cv_mprotect_works="guessing no" ) done AC_TRY_RUN([ #define CONFIGURE_TEST_VM_MAP #define TEST_VM_PROT_RDWR_WRITE #include "$srcdir/src/Unix/vm_alloc.cpp" ], , ac_cv_mprotect_works=no, dnl When cross-compiling, do not assume anything ac_cv_mprotect_works="guessing no" ) AC_LANG_RESTORE ] ) dnl Remove support for mmap() if mprotect() does not work if [[ "x$have_mmap_vm" = "xyes" ]]; then case $ac_cv_mprotect_works in *yes) have_mmap_vm=yes;; *no) have_mmap_vm=no;; esac fi AC_TRANSLATE_DEFINE(HAVE_MMAP_VM, $have_mmap_vm, [Define if your system has a working mmap()-based memory allocator.]) fi dnl HAVE_MMAP_VM dnl Check if we have POSIX shared memory support AC_CACHE_CHECK([whether POSIX shared memory is working], ac_cv_have_posix_shm, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define HAVE_POSIX_SHM $OSdarwinReq #include "$srcdir/src/Unix/vm_alloc.cpp" int main(void) { /* returns 0 if we have working POSIX shm */ if (vm_init() < 0) exit(2); char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT); if (m1 == VM_MAP_FAILED) exit(3); vm_exit(); exit(0); } ], ac_cv_have_posix_shm=yes, ac_cv_have_posix_shm=no, dnl When cross-compiling, do not assume anything. ac_cv_have_posix_shm="guessing no" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_POSIX_SHM, $ac_cv_have_posix_shm, [Define if your system supports POSIX shared memory.]) dnl Check if we have working 33-bit memory addressing AC_CACHE_CHECK([whether 33-bit memory addressing is working], ac_cv_have_33bit_addressing, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #define USE_33BIT_ADDRESSING 1 #include "$srcdir/src/Unix/vm_alloc.cpp" int main(void) { /* returns 0 if we have working 33-bit addressing */ if (sizeof(void *) < 8) exit(1); if (vm_init() < 0) exit(2); char *m1 = (char *)vm_acquire(32768, VM_MAP_DEFAULT | VM_MAP_33BIT); if (m1 == VM_MAP_FAILED) exit(3); char *m2 = m1 + (1L << 32); m1[0] = 0x12; if (m2[0] != 0x12) exit(4); m2[0] = 0x34; if (m1[0] != 0x34) exit(5); vm_exit(); exit(0); } ], ac_cv_have_33bit_addressing=yes, ac_cv_have_33bit_addressing=no, dnl When cross-compiling, do not assume anything. ac_cv_have_33bit_addressing="guessing no" ) AC_LANG_RESTORE ] ) dnl Check signal handlers need to be reinstalled AC_CACHE_CHECK([whether signal handlers need to be reinstalled], ac_cv_signal_need_reinstall, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } int main(void) { /* returns 0 if signals need not to be reinstalled */ signal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } ], ac_cv_signal_need_reinstall=yes, ac_cv_signal_need_reinstall=no, dnl When cross-compiling, do not assume anything. ac_cv_signal_need_reinstall="guessing yes" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(SIGNAL_NEED_REINSTALL, $ac_cv_signal_need_reinstall, [Define if your system requires signals to be reinstalled.]) dnl Check if sigaction handlers need to be reinstalled AC_CACHE_CHECK([whether sigaction handlers need to be reinstalled], ac_cv_sigaction_need_reinstall, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_RUN([ #include #ifdef HAVE_UNISTD_H #include #endif #include static int handled_signal = 0; RETSIGTYPE sigusr1_handler(int) { handled_signal++; } typedef RETSIGTYPE (*signal_handler)(int); static signal_handler mysignal(int sig, signal_handler handler) { struct sigaction old_sa; struct sigaction new_sa; new_sa.sa_handler = handler; return ((sigaction(sig,&new_sa,&old_sa) < 0) ? SIG_IGN : old_sa.sa_handler); } int main(void) { /* returns 0 if signals need not to be reinstalled */ mysignal(SIGUSR1, sigusr1_handler); raise(SIGUSR1); raise(SIGUSR1); exit(handled_signal == 2); } ], ac_cv_sigaction_need_reinstall=yes, ac_cv_sigaction_need_reinstall=no, dnl When cross-compiling, do not assume anything. ac_cv_sigaction_need_reinstall="guessing yes" ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(SIGACTION_NEED_REINSTALL, $ac_cv_sigaction_need_reinstall, [Define if your system requires sigactions to be reinstalled.]) dnl Check if we have vasprintf (_GNU_SOURCE) AC_CACHE_CHECK([for vasprintf], ac_cv_have_vasprintf, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ va_list a; vasprintf(NULL, NULL, a); ], [ac_cv_have_vasprintf=yes], [ac_cv_have_vasprintf=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_GNU_SOURCE, $ac_cv_have_vasprintf, [Define if your system support GNU SOURCEs (vasprintf function)]) if [[ "x$ac_cv_have_vasprintf" = "xyes" ]]; then DEFINES="$DEFINES -D_GNU_SOURCE" else SYSSRCS="$SYSSRCS Unix/vasprintf.c" fi AC_CACHE_CHECK([for sighandler_t], ac_cv_have_sighandler_t, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ signal(0, (sighandler_t)NULL); ], [ac_cv_have_sighandler_t=yes], [ac_cv_have_sighandler_t=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_SIGHANDLER_T, $ac_cv_have_sighandler_t, [Define if doesn't define sighandler_t]) dnl Check if we have getopt_long AC_CACHE_CHECK([for getopt_long], ac_cv_have_getopt_long, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ getopt_long(0, NULL, NULL, NULL, NULL); ], [ac_cv_have_getopt_long=yes], [ac_cv_have_getopt_long=no] ) AC_LANG_RESTORE ] ) AC_TRANSLATE_DEFINE(HAVE_GETOPT_H, $ac_cv_have_getopt_long) if [[ "x$ac_cv_have_getopt_long" = "xno" ]]; then SYSSRCS="$SYSSRCS Unix/getopt_init.c Unix/getopt1.c Unix/getopt.c" fi case $CONTROL_KEY in meta) AC_DEFINE([MAP_META_TO_CONTROL], 1, [Define if you want to map the meta key to the emulated control key]) ;; both) AC_DEFINE([MAP_META_TO_CONTROL], 1, [Define if you want to map the meta key to the emulated control key]) AC_DEFINE([MAP_CONTROL_TO_CONTROL], 1, [Define if you want to map the control key to the emulated control key]) ;; ctrl) AC_DEFINE([MAP_CONTROL_TO_CONTROL], 1, [Define if you want to map the control key to the emulated control key]) ;; esac if [[ "x$WANT_JIT" = "xyes" ]]; then WANT_EXSIGSEGV=yes MEMORY_CHECK=sseg fi case $MEMORY_CHECK in no) AC_DEFINE([NOCHECKBOUNDARY], 1, [Define if you don't want to use check memory boundary]) ;; page) AC_DEFINE([ARAM_PAGE_CHECK], 1, [Define if you want to try out a different memory check]) ;; hwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([NOCHECKBOUNDARY], 1, [Define if you don't want to use check memory boundary]) AC_DEFINE([EXTENDED_SIGSEGV], 1, [Define if you want to use extended segafault handler]) AC_DEFINE([RAMENDNEEDED]) ;; pagehwsp) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([ARAM_PAGE_CHECK], 1, [Define if you want to try out a different memory check]) AC_DEFINE([NOCHECKBOUNDARY], 1, [Define if you don't want to use check memory boundary]) AC_DEFINE([EXTENDED_SIGSEGV], 1, [Define if you want to use extended segafault handler]) AC_DEFINE([RAMENDNEEDED], 1, [Define if you want protect end of memory]) ;; sseg) ADDRESSING_TEST_ORDER="fixed" WANT_EXSIGSEGV="yes" AC_DEFINE([NOCHECKBOUNDARY], 1, [Define if you don't want to use check memory boundary]) AC_DEFINE([RAMENDNEEDED], 1,) AC_DEFINE([EXTENDED_SIGSEGV], 1, [Define if you want to use extended segafault handler]) AC_DEFINE([HW_SIGSEGV], 1, [Define if you want to use extended segfault handler also for HW space]) ;; *) ;; esac dnl Full opcode's history if [[ "x$WANT_HISTORY" = "xyes" ]]; then AC_DEFINE([FULL_HISTORY], 1, [Define if you want to use full history]) fi dnl CPU flight recorder if [[ "x$WANT_FLIGHTRECORDER" = "xyes" ]]; then AC_DEFINE([FLIGHT_RECORDER], 1, [Define if you want to use CPU flight recorder]) fi dnl ATA CD-ROM emulation if [[ "x$WANT_CDROM" = "xyes" ]]; then AC_DEFINE([SUPPORT_CDROM], 1, [Define if you want to use ATA CD-ROM emulation]) fi MMUSRCS="uae_cpu/cpummu.cpp" dnl Full MMU if [[ "x$WANT_MMU" = "xyes" ]]; then AC_DEFINE([FULLMMU], 1, [Define if using full MMU]) fi dnl Small ATC if [[ "x$ATC_TYPE" = "xsmall" ]]; then AC_DEFINE([SMALL_ATC], 1, [Define if using only small ATC]) fi dnl Full ATC if [[ "x$ATC_TYPE" = "xno" ]]; then AC_DEFINE([DISABLE_ATC], 1, [Define if not using full ATC]) fi dnl DSP DSPSRCS="" if [[ "x$WANT_DSP" = "xyes" ]]; then AC_DEFINE([DSP_EMULATION], 1, [Define if using DSP]) DSPSRCS="dsp_core.c dsp_cpu.c" dnl DSP disassembler if [[ "x$WANT_DSP_DISASM" = "xyes" ]]; then AC_DEFINE([DSP_DISASM], 1, [Define if DSP disassembly]) DSPSRCS="$DSPSRCS dsp_disasm.c" fi fi dnl protect first 2kB of RAM if [[ "x$WANT_PROTECT2K" != "xno" ]]; then AC_DEFINE([PROTECT2K], 1, [Define if you want to protect first 2kB of RAM against user mode access]) fi dnl fixed size FastRAM if [[ "x$WANT_FIXEDFASTRAM" != "xno" ]]; then AC_DEFINE_UNQUOTED([FixedSizeFastRAM], $WANT_FIXEDFASTRAM, [Define if you want FastRAM of fixed size]) fi dnl fixed start of VideoRAM if [[ "x$WANT_FIXEDVIDEORAM" = "xyes" ]]; then AC_DEFINE([FIXED_VIDEORAM], 1, [Define if you want fixed position of VideoRAM]) else if [[ "x$WANT_MMU" = "xyes" ]]; then AC_MSG_WARN([Protection of first 2kB RAM enabled as well - won't hurt]) AC_DEFINE([PROTECT2K], 1, [Define if you want to protect first 2kB of RAM against user mode access]) fi if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_MSG_WARN([Blitter SDL surface blitting support needs fixed position of VideoRAM]) AC_DEFINE([FIXED_VIDEORAM], 1, [Define if you want fixed position of VideoRAM]) WANT_FIXEDVIDEORAM="yes" fi fi dnl Full STOP instruction if [[ "x$WANT_REALSTOP" = "xyes" ]]; then AC_DEFINE([ENABLE_REALSTOP], 1, [Define if you want real STOP instruction implementation]) WANT_SPCFLAGS_EXCL=yes fi dnl Blitter memmove acceleration if [[ "x$WANT_BLITMEMMOVE" = "xyes" ]]; then AC_DEFINE([BLITTER_MEMMOVE], 1, [Define if you want accelerated blitter output]) fi if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_MSG_WARN([Blitter SDL surface blitting support needs fixed position of VideoRAM]) AC_DEFINE([FIXED_VIDEORAM], 1, [Define if you want fixed position of VideoRAM]) WANT_FIXEDVIDEORAM="yes" fi dnl Blitter SDL surface blitting if [[ "x$WANT_BLITSDLBLIT" = "xyes" ]]; then AC_DEFINE([BLITTER_SDLBLIT], 1, [Define if you want even more accelerated blitter output]) AC_DEFINE([BLITTER_MEMMOVE], 1, [Define if you want accelerated blitter output]) dnl required for the SDLBLIT fi dnl Ethernet card emulation HAVE_ETHERNET=no if [[ "x$WANT_ETHERNET" = "xyes" ]]; then if [[ "x$ac_cv_tun_tap_support" = "xyes" ]]; then AC_DEFINE([ETHERNET_SUPPORT], 1, [Define if you want to use ethernet card emulation]) SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="aratapif" HAVE_ETHERNET="yes" elif [[ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_I386" ]]; then AC_DEFINE([ETHERNET_SUPPORT], 1, [Define if you want to use ethernet card emulation]) SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="" HAVE_ETHERNET="yes" elif [[ "x$OS_TYPE" = "xdarwin" ]]; then AC_DEFINE([ETHERNET_SUPPORT], 1, [Define if you want to use ethernet card emulation]) if [[ "x$WANT_BFP_ETHERNET" = "xyes" ]]; then AC_TRANSLATE_DEFINE(ENABLE_BPF, $ac_cv_bpf_support, [Define if your system supports BPF devices.]) else AC_MSG_WARN([Ethernet won't work without TunTap driver for Mac OS X. See http://tuntaposx.sourceforge.net/]) fi SYSSRCS="$SYSSRCS natfeat/ethernet.cpp" TAPIF="" HAVE_ETHERNET="yes" else AC_MSG_WARN([Ethernet interface not supported on your system]) TAPIF="" fi else TAPIF="" fi if [[ "x$HAVE_ETHERNET" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF ethernet" fi dnl Support for direct access to host's fs if [[ "x$WANT_HOSTFS" = "xyes" ]]; then SYSSRCS="$SYSSRCS natfeat/hostfs.cpp" AC_DEFINE([HOSTFS_SUPPORT], 1, [Define if you want to use direct access to host's fs]) PROVIDES_NF="$PROVIDES_NF hostfs" fi dnl SDL GUI GUISDLSRCS="" if test "x$WANT_SDLGUI" = "xyes" ; then GUISDLSRCS="gui-sdl/sdlgui.cpp gui-sdl/dlgFileSelect.cpp gui-sdl/file.cpp gui-sdl/dlgMain.cpp gui-sdl/dlgDisk.cpp gui-sdl/dlgPartition.cpp gui-sdl/dlgKeyboard.cpp gui-sdl/dlgHotkeys.cpp gui-sdl/dlgAlert.cpp gui-sdl/dlgOs.cpp gui-sdl/dlgVideo.cpp gui-sdl/dlgNetwork.cpp gui-sdl/dlgKeypress.cpp gui-sdl/dialog.cpp gui-sdl/dlgUsb.cpp" CPPFLAGS="$CPPFLAGS -I\$(srcdir)/gui-sdl" AC_DEFINE([SDL_GUI], 1, [Define if you want to build SDL GUI]) fi dnl C++ exceptions if [[ "x$WANT_EXSIGSEGV" = "xyes" ]]; then WANT_CXX_EXCEPTIONS="no" fi if [[ "x$WANT_CXX_EXCEPTIONS" = "xno" ]]; then AC_DEFINE(EXCEPTIONS_VIA_LONGJMP, 1, [Define if you want to use setjmp/longjmp instead of C++ exceptions]) fi dnl Extended signal segmentation fault handler if [[ "x$WANT_EXSIGSEGV" = "xyes" ]]; then case "$host_os" in linux*) case "$CPU_TYPE" in i386) SYSSRCS="$SYSSRCS Unix/linux/sigsegv_linux_x86.cpp" ;; x86_64) SYSSRCS="$SYSSRCS Unix/linux/sigsegv_linux_x86_64.cpp" ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac ;; openbsd*) if [[ "x$HAVE_I386" = "xyes" ]]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; darwin*) if [[ "x$CPU_TYPE" = "powerpc" ]]; then AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) else SYSSRCS="$SYSSRCS Unix/darwin/sigsegv_darwin_x86.cpp" AC_DEFINE(NO_NESTED_SIGSEGV, 1 , [Define if OS needs to cleanly exit sigsegv handler]) fi ;; netbsd*) if [[ "x$HAVE_I386" = "xyes" ]]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; freebsd*|kfreebsd*-gnu) if [[ "x$HAVE_I386" = "xyes" ]]; then SYSSRCS="$SYSSRCS Unix/xbsd/sigsegv_xbsd.cpp" else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; cygwin*) if [[ "x$HAVE_I386" = "xyes" ]]; then SYSSRCS="$SYSSRCS Unix/cygwin/sigsegv_cygwin.cpp" AC_DEFINE(NO_NESTED_SIGSEGV, 1 , [Define if OS needs to cleanly exit sigsegv handler]) else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; solaris*) if [[ "x$HAVE_I386" = "xyes" ]]; then SYSSRCS="$SYSSRCS Unix/solaris/sigsegv_solaris_x86.cpp" else AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) fi ;; *) AC_MSG_ERROR([Sorry, extended segfault handler not supported on your platform]) ;; esac fi dnl Determine the addressing mode to use ADDRESSING_MODE="" AC_MSG_CHECKING([for the addressing mode to use]) for am in $ADDRESSING_TEST_ORDER; do case $am in direct) if [[ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]]; then continue fi dnl Problems with Solaris if [[ "x$OS_TYPE" = "xsolaris" ]]; then continue fi ADDRESSING_MODE="direct" DEFINES="$DEFINES -DDIRECT_ADDRESSING" break ;; fixed) if [[ "x$HAVE_MMAP_VM" = "xno" -a "x$HAVE_MACH_VM" = "xno" ]]; then continue fi if [[ "x$OS_TYPE" = "xlinux" -a "x$HAVE_I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [[ "x$OS_TYPE" = "xfreebsd" -a "x$HAVE_I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [[ "x$OS_TYPE" = "xopenbsd" -a "x$HAVE_I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [[ "x$OS_TYPE" = "xdarwin" -a "x$HAVE_I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [[ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi if [[ "x$OS_TYPE" = "xsolaris" -a "x$HAVE=I386" ]]; then ADDRESSING_MODE="fixed (0x51000000)" DEFINES="$DEFINES -DFIXED_ADDRESSING -DFMEMORY=0x51000000" break fi ;; normal) ADDRESSING_MODE="normal" DEFINES="$DEFINES -DNORMAL_ADDRESSING" break ;; *) AC_MSG_ERROR([Internal configure.in script error for $am addressing mode]) esac done AC_MSG_RESULT($ADDRESSING_MODE) if [[ "x$ADDRESSING_MODE" = "x" ]]; then AC_MSG_ERROR([Sorry, no suitable addressing mode in $ADDRESSING_TEST_ORDER]) fi dnl Check for GAS. HAVE_GAS=no AC_MSG_CHECKING(for GAS .p2align feature) cat >conftest.S << EOF .text .p2align 5 EOF if $CC conftest.S -c -o conftest.o >/dev/null 2>&1 ; then HAVE_GAS=yes; fi AC_MSG_RESULT($HAVE_GAS) dnl Check for GCC 2.7 or higher. HAVE_GCC27=no AC_MSG_CHECKING(for GCC 2.7 or higher) AC_EGREP_CPP(xyes, [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5 xyes #endif ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no)) dnl Check for GCC 3.0 or higher. HAVE_GCC30=no AC_MSG_CHECKING(for GCC 3.0 or higher) AC_EGREP_CPP(xyes, [#if __GNUC__ >= 3 xyes #endif ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no)) dnl (gb) Do not merge constants since it breaks fpu/fpu_x86.cpp. dnl As of 2001/08/02, this affects the following compilers: dnl Official: probably gcc-3.1 (mainline CVS) dnl Mandrake: gcc-2.96 >= 0.59mdk, gcc-3.0.1 >= 0.1mdk dnl Red Hat : gcc-2.96 >= 89, gcc-3.0 >= 1 if [[ "x$HAVE_GCC27" = "xyes" -a "x$FPE_CORE" = "xx86" ]]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-merge-constants" AC_CACHE_CHECK([whether GCC supports constants merging], ac_cv_gcc_constants_merging, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([],[],[ac_cv_gcc_constants_merging=yes],[ac_cv_gcc_constants_merging=no]) AC_LANG_RESTORE ]) if [[ "x$ac_cv_gcc_constants_merging" != "xyes" ]]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi dnl Store motion was introduced in 3.3-hammer branch and any gcc >= 3.4 dnl However, there are some corner cases exposed on x86-64 if [[ "x$HAVE_GCC27" = "xyes" ]]; then SAVED_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -fno-gcse-sm" AC_CACHE_CHECK([whether GCC supports store motion], ac_cv_gcc_store_motion, [ AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([],[],[ac_cv_gcc_store_motion=yes],[ac_cv_gcc_store_motion=no]) AC_LANG_RESTORE ]) if [[ "x$ac_cv_gcc_store_motion" != "xyes" ]]; then CXXFLAGS="$SAVED_CXXFLAGS" fi fi dnl Select appropriate CPU source and REGPARAM define. CPUSRCS= GENCPUSRCS= ASM_OPTIMIZATIONS=none GENCPUSRCS="cpuemu1.cpp cpuemu2.cpp cpuemu3.cpp cpuemu4.cpp cpuemu5.cpp cpuemu6.cpp cpuemu7.cpp cpuemu8.cpp" dnl gb-- JITSRCS and GENJITSRCS will be emptied later if the JIT is not available dnl gb-- Other platforms should define their own set of noflags file variants CAN_JIT=no JITSRCS= GENJITSRCS="compemu1.cpp compemu2.cpp compemu3.cpp compemu4.cpp compemu5.cpp compemu6.cpp compemu7.cpp compemu8.cpp" if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_I386" = "xyes" ]]; then dnl i386 CPU DEFINES="$DEFINES -DUNALIGNED_PROFITABLE -DREGPARAM=\"__attribute__((regparm(3)))\"" if [[ "x$HAVE_GAS" = "xyes" ]]; then ASM_OPTIMIZATIONS=i386 DEFINES="$DEFINES -DX86_ASSEMBLY -DOPTIMIZED_FLAGS -DSAHF_SETO_PROFITABLE" # GENCPUSRCS="cpufast1.s cpufast2.s cpufast3.s cpufast4.s cpufast5.s cpufast6.s cpufast7.s cpufast8.s" GENJITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $GENJITSRCS" # GENJITSRCS="cpufast1_nf.s cpufast2_nf.s cpufast3_nf.s cpufast4_nf.s cpufast5_nf.s cpufast6_nf.s cpufast7_nf.s cpufast8_nf.s $GENJITSRCS" CAN_JIT=yes fi elif [[ "x$HAVE_GCC30" = "xyes" -a "x$HAVE_X86_64" = "xyes" ]]; then dnl x86-64 CPU DEFINES="$DEFINES -DUNALIGNED_PROFITABLE" if [[ "x$HAVE_GAS" = "xyes" ]]; then ASM_OPTIMIZATIONS="x86-64" DEFINES="$DEFINES -DX86_64_ASSEMBLY -DOPTIMIZED_FLAGS" GENJITSRCS="cpuemu1_nf.cpp cpuemu2_nf.cpp cpuemu3_nf.cpp cpuemu4_nf.cpp cpuemu5_nf.cpp cpuemu6_nf.cpp cpuemu7_nf.cpp cpuemu8_nf.cpp $GENJITSRCS" CAN_JIT=yes WANT_33BIT_ADDRESSING=yes fi elif [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_SPARC" = "xyes" -a "x$HAVE_GAS" = "xyes" ]]; then dnl SPARC CPU case "$host_os" in solaris*) AC_MSG_CHECKING(SPARC CPU architecture) SPARC_TYPE=`solaris/which_sparc` AC_MSG_RESULT($SPARC_TYPE) case "$SPARC_TYPE" in SPARC_V8) ASM_OPTIMIZATIONS="SPARC V8 architecture" DEFINES="$DEFINES -DSPARC_V8_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -Wa,-Av8" CXXFLAGS="$CXXFLAGS -Wa,-Av8" ;; SPARC_V9) ASM_OPTIMIZATIONS="SPARC V9 architecture" DEFINES="$DEFINES -DSPARC_V9_ASSEMBLY" dnl -DOPTIMIZED_FLAGS" CFLAGS="$CFLAGS -Wa,-Av9" CXXFLAGS="$CXXFLAGS -Wa,-Av9" ;; esac ;; esac fi dnl JIT sources if available if [[ "x$WANT_JIT" = "xyes" -a "x$CAN_JIT" = "xyes" ]]; then if [[ "x$WANT_MMU" = "xyes" ]]; then AC_MSG_WARN([!!!!! MMU&JIT in progress, dangerous !!!!!]) fi JITSRCS="$JITSRCS uae_cpu/compiler/compemu_support.cpp" DEFINES="$DEFINES -DUSE_JIT=1" dnl JIT is buggy with strict-aliasing, it seems (FIXME!) CXXFLAGS="$CXXFLAGS -fno-strict-aliasing" if [[ "x$WANT_JIT_DEBUG" = "xyes" ]]; then DEFINES="$DEFINES -DJIT_DEBUG=1" fi if [[ "x$WANT_JIT_FPU" = "xyes" ]]; then DEFINES="$DEFINES -DUSE_JIT_FPU=1" JITSRCS="$JITSRCS uae_cpu/compiler/compemu_fpp.cpp" fi GENJITSRCS="$GENJITSRCS compstbl.cpp cpustbl_nf.cpp" else WANT_JIT=no WANT_JIT_FPU=no WANT_JIT_DEBUG=no JITSRCS="" GENJITSRCS="" fi dnl Use 33-bit memory addressing? if [[ "$ac_cv_have_33bit_addressing:$WANT_33BIT_ADDRESSING" = "yes:yes" ]]; then use_33bit_addressing=yes fi AC_TRANSLATE_DEFINE(USE_33BIT_ADDRESSING, $use_33bit_addressing, [Define to use 33-bit memory addressing on 64-bit JIT capable systems.]) dnl Select appropriate FPU source. gcc_AC_C_FLOAT_FORMAT AC_CHECK_HEADERS(ieee754.h ieeefp.h floatingpoint.h nan.h math.h) if [[ "x$WANT_JIT_FPU" = "xyes" -a "x$FPE_CORE_TEST_ORDER" != "xieee" ]]; then dnl AC_MSG_WARN([Sorry, JIT-FPU supports only the "ieee" FPE implementation]) FPE_CORE_TEST_ORDER="ieee" dnl Restore previous variables. FPE_CORE_STR and FPUSRCS are overwritten fi for fpe in $FPE_CORE_TEST_ORDER; do case $fpe in ieee) case $ac_cv_c_float_format in IEEE*) FPE_CORE="IEEE fpu core" AC_DEFINE([USES_FPU_CORE], "IEEE", [FPU core]) DEFINES="$DEFINES -DFPU_IEEE" FPUSRCS="uae_cpu/fpu/fpu_ieee.cpp" dnl Math functions not mandated by C99 standard AC_CHECK_FUNCS(isnanl isinfl) dnl Math functions required by C99 standard, but probably not dnl implemented everywhere. In that case, we fall back to the dnl regular variant for doubles. AC_CHECK_FUNCS(logl log10l expl powl fabsl sqrtl) AC_CHECK_FUNCS(sinl cosl tanl sinhl coshl tanhl) AC_CHECK_FUNCS(asinl acosl atanl asinhl acoshl atanhl) AC_CHECK_FUNCS(floorl ceill) case $CPU_TYPE in alpha) dnl Maybe -mieee-with-inexact CXXFLAGS="$CXXFLAGS -mieee" LDFLAGS="$LDFLAGS -mieee" break ;; *) ;; esac break ;; esac ;; x86) if [[ ":$HAVE_GCC27:$HAVE_I386:$HAVE_GAS:" = ":yes:yes:yes:" ]]; then FPE_CORE="i387 fpu core" DEFINES="$DEFINES -DFPU_X86" FPUSRCS="uae_cpu/fpu/fpu_x86.cpp" break fi ;; uae) FPE_CORE="uae fpu core" AC_DEFINE([USES_FPU_CORE], "UAE", [FPU core]) DEFINES="$DEFINES -DFPU_UAE" FPUSRCS="uae_cpu/fpu/fpu_uae.cpp" break ;; mpfr) AC_CHECK_LIB(mpfr, mpfr_set_zero, [LIBS="$LIBS -lmpfr -lgmp"], [], [-lgmp]) if test $ac_cv_lib_mpfr_mpfr_set_zero = yes; then FPE_CORE="mpfr fpu core" AC_DEFINE([USES_FPU_CORE], "MPFR", [FPU core]) DEFINES="$DEFINES -DFPU_MPFR" FPUSRCS="uae_cpu/fpu/fpu_mpfr.cpp" break fi ;; *) AC_MSG_ERROR([Internal configure.in script error for $fpe fpu core]) ;; esac done if [[ "x$FPE_CORE" = "x" ]]; then AC_MSG_ERROR([Sorry, no suitable FPU core found in $FPE_CORE_TEST_ORDER]) fi dnl Check for certain math functions AC_CHECK_FUNCS(atanh) AC_CHECK_FUNCS(isnan isinf finite isnormal signbit) dnl Select debugger if [[ "x$WANT_JIT" = "xno" ]]; then dnl new debugger if [[ "x$WHICH_DEBUG" = "xndebug" -a "x$ac_cv_func_sigaction" = "xyes" ]]; then AC_DEFINE([DEBUGGER], 1, [Define if using some internal debugger]) AC_DEFINE([NEWDEBUG], 1, [Define if using new debugger]) CPUSRCS="$CPUSRCS uae_cpu/debug.cpp" fi dnl UAE debugger if [[ "x$WHICH_DEBUG" = "xuae" ]]; then AC_DEFINE([DEBUGGER], 1, [Define if using some internal debugger]) AC_DEFINE([UAEDEBUG], 1, [Define if using UAE debugger]) CPUSRCS="$CPUSRCS uae_cpu/debug.cpp" fi fi dnl Exclusive spcflags handling if [[ "x$WANT_SPCFLAGS_EXCL" = "xyes" ]]; then DEFINES="$DEFINES -DENABLE_EXCLUSIVE_SPCFLAGS" fi dnl UAE CPU sources for all architectures. CPUINCLUDES="-I\$(srcdir)/uae_cpu" CPUSRCS="$CPUSRCS uae_cpu/aranym_glue.cpp uae_cpu/memory.cpp uae_cpu/newcpu.cpp uae_cpu/readcpu.cpp $JITSRCS $FPUSRCS $MMUSRCS" GENCPUSRCS="$GENCPUSRCS cpudefs.cpp cpustbl.cpp $GENJITSRCS" dnl Remove the "-g" option if set for GCC. if [[ "x$HAVE_GCC27" = "xyes" ]]; then CFLAGS=`echo $CFLAGS | sed -e 's/-g\b//g'` CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-g\b//g'` fi if [[ "x$WANT_NATDEBUG" = "xyes" ]]; then DBGSP="-g" WFLAGS="" if [[ "x$HAVE_GCC27" = "xyes" ]]; then WFLAGS="$WFLAGS -W -Wall" DBGSP="-ggdb3" fi else DBGSP="" WFLAGS="" fi if [[ "x$WANT_FULLDEBUG" = "xyes" ]]; then CFLAGS="$CFLAGS -DWHOLEDEBUG" CXXFLAGS="$CXXFLAGS -DWHOLEDEBUG" fi dnl Remove the "-O2" option if set for GCC and set the "-O3" option. if [[ "x$HAVE_GCC27" = "xyes" ]]; then CFLAGS=`echo $CFLAGS | sed -e 's/-O2//g'` CFLAGS="-O3 $CFLAGS" CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O2//g'` CXXFLAGS="-O3 $CXXFLAGS" fi dnl Remove -O[23] for cygwin gcc 3.x (gcc-3.3.3-3 found buggy). if [[ "x$OS_TYPE" = "xcygwin" -a "x$HAVE_GCC30" = "xyes" ]]; then CFLAGS=`echo $CFLAGS | sed -e 's/-O[[23]]//g'` CXXFLAGS=`echo $CXXFLAGS | sed -e 's/-O[[23]]//g'` fi dnl Or if we have -Ofast if [[ "x$HAVE_OFAST" = "xyes" ]]; then CFLAGS="`echo $CFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-g//g'` -Ofast" CXXFLAGS="-LANG:std $CXXFLAGS" LDFLAGS="$LDFLAGS -ipa" fi dnl Check for SDL SDL_CFLAGS= SDL_LIBS= if test "x$OS_TYPE" == "xdarwin" -a "x$WITH_FINK" = "xno"; then ARANYM_CHECK_FRAMEWORK(SDL, []) fi if test "x$have_framework_SDL" = "xyes" ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL) CPPFLAGS="$CPPFLAGS -I$SDL_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_LOCATION" else dnl Try macro from sdl.m4 AM_PATH_SDL(1.2.10, :, AC_MSG_ERROR([*** SDL version $SDL_VERSION or higher not found! ***])) fi dnl Check for SDL_Image ARANYM_CHECK_FRAMEWORK(SDL_image, []) if test "x$have_framework_SDL_image" = "xyes" ; then ARANYM_CHECK_FRAMEWORK_LOCATION(SDL_image) CPPFLAGS="$CPPFLAGS -I$SDL_image_LOCATION/Headers" BUNDLE_FRAMEWORKS="$BUNDLE_FRAMEWORKS $SDL_image_LOCATION" have_sdlimage_lib=yes have_sdlimage_h=yes else tmp_cflags=$CFLAGS tmp_cppflags=$CPPFLAGS CFLAGS="$CFLAGS $SDL_CFLAGS" CPPFLAGS="$CPPFLAGS $SDL_CFLAGS" AC_CHECK_HEADER(SDL_image.h, have_sdlimage_h=yes, havesdlimage_h=no) AC_CHECK_LIB(SDL_image, IMG_isJPG, have_sdlimage_lib=yes, have_sdlimage_lib=no) CFLAGS=$tmp_cflags CPPFLAGS=$tmp_cppflags if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then LIBS="$LIBS -lSDL_image" fi fi if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then AC_DEFINE(HAVE_SDL_IMAGE, 1, [Define if you have SDL_image]) fi dnl Add OpenGL ? if test "x$WANT_OPENGL" = "xyes"; then have_opengl="no" if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([GL], [gl]) fi if test "x$GL_LIBS" = "x"; then case "$host" in *-*-cygwin* | *-*-mingw*) GL_LIBS="-lopengl32" ;; *-*-darwin*) GL_LIBS="-Wl,-framework,OpenGL" ;; *) GL_LIBS="-lGL" ;; esac fi AC_MSG_CHECKING(for OpenGL support) tmp_cflags=$CFLAGS tmp_libs=$LIBS CFLAGS="$CFLAGS $SDL_CFLAGS" LIBS="$LIBS $SDL_LIBS $GL_LIBS" AC_TRY_COMPILE([ #include "SDL_opengl.h" ],[],[have_opengl="yes"]) AC_MSG_RESULT($have_opengl) CFLAGS=$tmp_cflags LIBS=$tmp_libs DYNGLSRCS="" if test "x$have_opengl" = "xyes"; then AC_DEFINE([ENABLE_OPENGL], 1, [Define if OpenGL enabled]) DYNGLSRCS="dyngl.c" else WANT_OPENGL="no" fi fi dnl Check for zlib if [[ "x$WANT_LILO" = "xyes" ]]; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([ZLIB], [zlib], [have_zlib=yes], [have_zlib=no]) fi # Fallback to autoconf (helps in Ubuntu 10.04 LTS) if [[ "x$have_zlib" = "xno" ]]; then AC_CHECK_LIB(z, gzopen, [have_zlib=yes], [have_zlib=no]) fi if [[ "x$have_zlib" = "xyes" ]]; then AC_DEFINE([HAVE_LIBZ], 1, [Define if zlib enabled]) fi else have_zlib="not required" fi dnl Check for libusb-1.0 WITH_USBHOST="no" if test "x$WANT_USBHOST" = "xyes"; then # Search using pkg-config if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([LIBUSB], [libusb-1.0], [WITH_USBHOST="yes"], [WITH_USBHOST="no"]) fi # Search the library and headers directly if test "x$WITH_USBHOST" = "xno"; then AC_CHECK_HEADER(libusb-1.0/libusb.h, [WITH_USBHOST="yes"], [WITH_USBHOST="no"]) if test "x$WITH_USBHOST" = "xyes"; then AC_CHECK_LIB(usb-1.0, libusb_init, [], [WITH_USBHOST="no"]) LIBUSB_LIBS="-lusb-1.0" fi fi if test "x$WITH_USBHOST" = "xno"; then AC_MSG_WARN([libusb is missing, USB NF disabled]) fi fi dnl Linux loader if [[ "x$WANT_LILO" = "xyes" ]]; then if [[ "x$WANT_MMU" = "xyes" ]]; then AC_DEFINE([ENABLE_LILO], 1, [Define if lilo enabled]) else AC_MSG_ERROR([Linux kernel requires functional MMU emulation]) fi fi dnl Natfeat CD-ROM driver AC_DEFINE([NFCDROM_SUPPORT], 1, [Define if you want to use host CD-ROM driver]) NFCDROM_DRIVER="sdl" case "$host_os" in linux*) NFCDROMSRCS="natfeat/nfcdrom_linux.cpp" AC_DEFINE([NFCDROM_LINUX_SUPPORT], 1, [Define if you want to use Linux support as CD-ROM driver]) NFCDROM_DRIVER="linux,$NFCDROM_DRIVER" ;; esac PROVIDES_NF="$PROVIDES_NF cdrom($NFCDROM_DRIVER)" dnl Natfeat PCI driver NFPCISRCS="" if [[ "x$WANT_NFPCI" = "xyes" ]]; then case "$host_os" in linux*) AC_DEFINE([NFPCI_SUPPORT], 1, [Define if you want to use host PCI driver]) NFPCISRCS="natfeat/nfpci.cpp" AC_DEFINE([NFPCI_LINUX_SUPPORT], 1, [Define if you want to use Linux PCI driver]) NFPCISRCS="$NFPCISRCS natfeat/nfpci_linux.cpp" PROVIDES_NF="$PROVIDES_NF pci" ;; *) AC_MSG_ERROR([*** NatFeats PCI not supported by this OS ***]) WANT_NFPCI="no" ;; esac fi dnl Natfeat USB driver USBHOSTSRCS="" if [[ "x$WANT_USBHOST" = "xyes" -a "x$WITH_USBHOST" = "xyes" ]]; then AC_DEFINE([USBHOST_SUPPORT], 1, [Define if you want to use host USB driver]) USBHOSTSRCS="natfeat/usbhost.cpp" LIBS="$LIBS $LIBUSB_LIBS" PROVIDES_NF="$PROVIDES_NF usb" fi dnl Natfeat OSMesa driver NFOSMESASRCS="" if test "x$WANT_NFOSMESA" = "xyes"; then AC_DEFINE([NFOSMESA_SUPPORT], 1, [Define if you want to use host OSMesa driver]) NFOSMESASRCS="natfeat/nfosmesa.cpp" if test "x$PKG_CONFIG" != "x"; then PKG_CHECK_MODULES([OSMESA], [osmesa]) fi if test "x$OSMESA_CFLAGS" != "x"; then CPPFLAGS="$CPPFLAGS $OSMESA_CFLAGS" else case "$host_os" in dnl For darwin the OSMesa include path is by default not defined darwin*) CPPFLAGS="$CPPFLAGS -I/usr/X11R6/include/" ;; *) WANT_NFOSMESA="no" ;; esac fi fi if [[ "x$WANT_NFOSMESA" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF osmesa" fi dnl Natfeat JPEG decoder NFJPEGSRCS="" if [[ "x$WANT_NFJPEG" = "xyes" ]]; then if test "x$have_sdlimage_h" = "xyes" -a "x$have_sdlimage_lib" = "xyes"; then AC_DEFINE([NFJPEG_SUPPORT], 1, [Define if you want to use host JPEG decoder]) NFJPEGSRCS="natfeat/nfjpeg.cpp" PROVIDES_NF="$PROVIDES_NF jpeg" else WANT_NFJPEG="no" fi fi dnl Natfeat VDI driver NFVDISRCS="" if [[ "x$WANT_NFVDI" = "xyes" ]]; then AC_DEFINE([NFVDI_SUPPORT], 1, [Define if you want to use NF VDI driver]) NFVDISRCS="natfeat/nfvdi.cpp natfeat/nfvdi_soft.cpp" NFVDI_DRIVER="sw" if [[ "x$WANT_OPENGL" = "xyes" ]]; then NFVDISRCS="$NFVDISRCS natfeat/nfvdi_opengl.cpp" NFVDI_DRIVER="opengl,$NFVDI_DRIVER" fi PROVIDES_NF="$PROVIDES_NF vdi($NFVDI_DRIVER)" fi dnl Natfeat Clipboard driver NFCLIPBOARDSRCS="" if [[ "x$WANT_NFCLIPBRD" = "xyes" ]]; then if [[ "x$OS_TYPE" = "xcygwin" ]]; then AC_DEFINE([NFCLIPBRD_SUPPORT], 1, [Define if you want to use MS-Windows Clipboard]) NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/cygwin/clipbrd_cygwin.cpp" elif [[ "x$OS_TYPE" = "xdarwin" ]]; then AC_DEFINE([NFCLIPBRD_SUPPORT], 1, [Define if you want to use Mac OS X clipboard]) NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/darwin/clipbrd_darwin.M" elif [[ "x$OS_TYPE" = "xbeos" -o "x$OS_TYPE" = "xhaiku" ]]; then AC_DEFINE([NFCLIPBRD_SUPPORT], 1, [Define if you want to use BeOS clipboard]) NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/beos/clipbrd_beos.cpp" LIBS="$LIBS -lbe" else AC_CHECK_LIB(X11, XOpenDisplay) if [[ "x$ac_cv_lib_X11_XOpenDisplay" = "xyes" ]]; then AC_DEFINE([NFCLIPBRD_SUPPORT], 1, [Define if you want to use X11 clipboard]) NFCLIPBOARDSRCS="natfeat/nfclipbrd.cpp" SYSSRCS="$SYSSRCS Unix/clipbrd_x11.cpp" LIBS="$LIBS -lX11" else AC_MSG_ERROR([Sorry, NatFeat Clipboard not implemented on your platform yet]) WANT_NFCLIPBRD="no" fi fi fi if [[ "x$WANT_NFCLIPBRD" = "xyes" ]]; then PROVIDES_NF="$PROVIDES_NF clipboard" fi dnl Exception per second limiter if [[ "x$WANT_EPSLIMITER" = "xyes" ]]; then AC_DEFINE([ENABLE_EPSLIMITER], 1, [Define if you want to use EPS limiter]) fi dnl Linux /dev/rtc source timer if test "x$WANT_RTCTIMER" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([RTC_TIMER], 1, [Define if you want to use Linux /dev/rtc as source timer]) else WANT_RTCTIMER="no" fi fi dnl Linux/X86 hardware access for parallel port PARALLELX86SRCS="" if test "x$WANT_PARALLELX86" = "xyes" ; then if test "x$OS_TYPE" = "xlinux" -a "x$HAVE_I386" = "xyes"; then AC_DEFINE([ENABLE_PARALLELX86], 1, [Define if you want to use Linux/X86 hardware access for parallel port]) PARALLELX86SRCS="parallel_x86.cpp" else WANT_PARALLELX86="no" fi fi dnl Linux /dev/parport access for parallel port PARALLELPARPORTSRCS="" if test "x$WANT_PARALLELPARPORT" = "xyes" ; then if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([ENABLE_PARALLELPARPORT], 1, [Define if you want to use Linux /dev/parport access for parallel port]) PARALLELPARPORTSRCS="parallel_parport.cpp" else WANT_PARALLELPARPORT="no" fi fi dnl Linux /dev/sequencer MIDI support if test "x$OS_TYPE" = "xlinux"; then AC_DEFINE([ENABLE_MIDI_SEQUENCER], 1, [Define if you want to use Linux /dev/sequencer support]) MIDISEQSRCS="midi_sequencer.cpp" fi dnl Serial port support SERIALSRCS="" if test "x$WANT_UNIXSERIALPORT" = "xyes" ; then if test "x$ac_cv_header_termios_h" = "xyes" -a "x$ac_cv_header_sys_ioctl_h" = "xyes"; then AC_DEFINE([ENABLE_SERIALUNIX], 1, [Define if you want to use /dev/ttyXXX access for serial port]) SERIALSRCS="serial_port.cpp" else WANT_UNIXSERIALPORT="no" fi fi AC_DEFINE_UNQUOTED([PROVIDES_NATFEATS], "$PROVIDES_NF", [List of Native Features]) dnl Data directory APP=aranym case "$host_os" in darwin*) if test "x$WITH_FINK" = "xyes"; then TARGET="\$(APP)" else TARGET="\$(APP_BUNDLE)" fi ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" srcdir="." ;; mingw*) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"./\${APP}\\\"\"" ;; *) TARGET="\$(APP)" ARANYM_DATADIR="\"\\\"\${datadir}/\${APP}\\\"\"" ;; esac CFLAGS="$CFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" CXXFLAGS="$CXXFLAGS -DARANYM_DATADIR=$ARANYM_DATADIR" dnl Remove the ARCHFLAGS again as they must be handled separately inside the Makefile. if [[ "x$ARCHFLAGS" != "x" ]]; then CPPFLAGS=`echo $CPPFLAGS | sed -e "s:$ARCHFLAGS::g"` LDFLAGS=`echo $LDFLAGS | sed -e "s:$ARCHFLAGS::g"` fi dnl Generate Makefile. AC_SUBST(WFLAGS) AC_SUBST(SET_MAKE) AC_SUBST(DEFINES) AC_SUBST(SYSSRCS) AC_SUBST(CPUINCLUDES) AC_SUBST(CPUSRCS) AC_SUBST(GENCPUSRCS) AC_SUBST(DSPSRCS) AC_SUBST(MIDISEQSRCS) AC_SUBST(NFCDROMSRCS) AC_SUBST(NFPCISRCS) AC_SUBST(USBHOSTSRCS) AC_SUBST(NFOSMESASRCS) AC_SUBST(NFJPEGSRCS) AC_SUBST(NFVDISRCS) AC_SUBST(NFCLIPBOARDSRCS) AC_SUBST(PARALLELX86SRCS) AC_SUBST(PARALLELPARPORTSRCS) AC_SUBST(SERIALSRCS) AC_SUBST(GUISDLSRCS) AC_SUBST(DYNGLSRCS) AC_SUBST(DBGSP) AC_SUBST(TAPIF) AC_SUBST(TARGET) AC_SUBST(CPU_TYPE) AC_SUBST(ARCHFLAGS) AC_SUBST(SDL_CFLAGS) AC_SUBST(SDL_LIBS) AC_SUBST(BUNDLE_FRAMEWORKS) AC_SUBST(ZLIB_CFLAGS) AC_SUBST(ZLIB_LIBS) AC_OUTPUT(Makefile) dnl Print summary. echo echo ARAnyM configuration summary: echo echo Use exclusive spcflags handling ........ : $WANT_SPCFLAGS_EXCL echo Use JIT compiler ....................... : $WANT_JIT echo Use JIT compiler for FPU instructions .. : $WANT_JIT_FPU echo JIT debug mode ......................... : $WANT_JIT_DEBUG echo Floating-Point emulation core .......... : $FPE_CORE echo Assembly optimizations ................. : $ASM_OPTIMIZATIONS echo Addressing mode ........................ : $ADDRESSING_MODE echo -n Full MMU support ....................... : $WANT_MMU if [[ "x$WANT_MMU" = "xyes" ]]; then echo -n " (" case "$ATC_TYPE" in full) echo -n "with ATC";; small) echo -n "with small ATC";; no) echo -n "without ATC";; esac echo -n \) fi echo echo Linux /dev/rtc source timer ............ : $WANT_RTCTIMER echo Real STOP implementation ............... : $WANT_REALSTOP echo DSP 56001 support ...................... : $WANT_DSP echo DSP 56001 disassembly support .......... : $WANT_DSP_DISASM echo Debugger ............................... : $WHICH_DEBUG echo Check memory ........................... : $MEMORY_CHECK echo First 2kB of RAM Supervisor protected... : $WANT_PROTECT2K echo FastRAM fixed size ..................... : $WANT_FIXEDFASTRAM echo Fixed position of VideoRAM ............. : $WANT_FIXEDVIDEORAM echo Blitter memmove acceleration ........... : $WANT_BLITMEMMOVE echo Blitter SDL blit acceleration .......... : $WANT_BLITSDLBLIT echo Support for hostfs ..................... : $WANT_HOSTFS echo Support for ethernet ................... : $HAVE_ETHERNET echo GUI .................................... : $WANT_SDLGUI echo OpenGL ................................. : $WANT_OPENGL echo Linux-m68k loader ...................... : $WANT_LILO echo Zlib ................................... : $have_zlib echo libusb-1.0.............................. : $WITH_USBHOST echo NatFeat CD-ROM driver .................. : $NFCDROM_DRIVER echo NatFeat PCI driver ..................... : $WANT_NFPCI echo NatFeat USB driver ..................... : $WANT_USBHOST echo NatFeat OSMesa driver .................. : $WANT_NFOSMESA echo NatFeat JPEG decoder ................... : $WANT_NFJPEG echo NatFeat Clipboard ...................... : $WANT_NFCLIPBRD echo NatFeat VDI driver ..................... : $WANT_NFVDI echo Exception per second limiter ........... : $WANT_EPSLIMITER echo Linux/X86 h/w access for parallel port.. : $WANT_PARALLELX86 echo Linux /dev/parport for parallel port.... : $WANT_PARALLELPARPORT echo Unix /dev/ttySn for serial port......... : $WANT_UNIXSERIALPORT echo Use C++ exceptions for m68k exceptions.. : $WANT_CXX_EXCEPTIONS echo echo "Configuration done. Now type \"make depend\" (or \"gmake depend\") then \"make\" (or \"gmake\")." aranym-0.9.15/contrib/000077500000000000000000000000001213346724500145445ustar00rootroot00000000000000aranym-0.9.15/contrib/aranym-jit.desktop000066400000000000000000000003031213346724500202060ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 Name=ARAnyM JIT Comment=Virtual Machine with JIT CPU compiler for max speed Exec=aranym-jit Icon=aranym Terminal=false Type=Application Categories=System;Emulator; aranym-0.9.15/contrib/aranym-mmu.desktop000066400000000000000000000003041213346724500202170ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 Name=ARAnyM MMU Comment=Virtual Machine with MMU for FreeMiNT and Linux-m68k Exec=aranym-mmu Icon=aranym Terminal=false Type=Application Categories=System;Emulator; aranym-0.9.15/contrib/aranym.desktop000066400000000000000000000002651213346724500174310ustar00rootroot00000000000000[Desktop Entry] Encoding=UTF-8 Name=ARAnyM Comment=Virtual Machine for Atari 32-bit applications Exec=aranym Icon=aranym Terminal=false Type=Application Categories=System;Emulator; aranym-0.9.15/contrib/icon-32.png000066400000000000000000000057271213346724500164370ustar00rootroot00000000000000PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< yIDATxڌW xT=ol,I&6IQYLV* AkU)~( h4,"ŐYJȞ$373{P|˽94qÁd` x`3ΎqZF35& 2"Fܐi.;'&>\ּٜ$B(h3F%dnraڽ YЇ~`^md_(b6xH-Z!`7m)x_ .Z7\;cFeg.PiuwAph'|[fVƺJ{&e=7Qy4>epqDۮ73 b",h|֎&0NNkh!8^ FG%(\-pw >AnU>G&bn{zd}wb-7cp '_%@"ãL)`)BeHkomuy-pGn[RKލiu8Wt}nsrRt$Lk4c~B^,6!e^Fz|$L&zveܣYc,#.q 3odG+L4A(w$(MҼ<%f-yB6v06eziaސ& *iXƤؓ/7` TF!bjtJb{3&2}Z7Kt4$PN ֈ2=J1S` c"|fK7BS M 3] }L|t赶1tB>&,@d09v}:b[T1ζ* ?!I+Dg@p1;vBSoԠxT 2Bw 8b3N Njqؿhys`^A:Gk$>*zbSX4 ng#*s8ZkJP~r篆5V*g4T 2T_bLgn;JW)s;0QdD֠ %u@Mep1mJ8tBك qrPӏϡ~A6jsBT96F7T f=t&RX"rBeq|Mp N4Wخ7HCd] & ɩ)Qzzl ľ 3z^^G: v[j1 )Y1yOይ} O8"id86) ASO:E'O H .qn'n+*8E:n'`DB$q۷c096/E@`ʁf\CAuvs;7%5ODwoՎS1*!hmPV 1qN![&F܃R&t;H)LD.8$rXͭvb7z GCA8m0ݑB( ܄!1JJGo<ny8a$*ND/ OĀ!Y8:"-gvO\$\`1% Hf\@^p 4!8yp'\2tpu6 n$b05W >$%QsaEj3ذ(gPj`yBuO==LR֟ez~Y^3VR۽6wQIFa!q8FTxYS)& 834Q_l5yĶ{{L!$47pD>+;X^UX3T.NX7qaҼ8c=ˊ ˡ&zZzj.!6-~h:sŷ( z'BFCepb,v#=u68Pk5Aٮ jp ܞy J=Me(CӅ]f>)j5z"jJA_+c&  $&2JeF,&a~nƪk^ D)Ʀh7e\O8C&1a2ݺф:3W19^mfL%e;Snc뎰%!bb7 HMyAØ>}Sd;EZ'&c[f*F"1}fsɳ F͜;/=$1JE 5qB<ϓhȄyZhDOprJU{gӷV*=B/oɋ62{Tò53\R8]Ԃb5_\6) dM-P'mNpK[ I ==I.s)Nn X-Sp1r7K5Ux%{ݟ\ %9 CsAu$:vq0P3s~iu ,aOlScT\x z]Dtb%ygBpp8BB᫓(Ο>ڿ4BR/[HY FbZtҩND0 Z_-1CGk*.޾_?'0N'ԊۑNǘ^N F]H '_0 F IENDB`aranym-0.9.15/contrib/icon-48.png000066400000000000000000000122661213346724500164420ustar00rootroot00000000000000PNG  IHDR00WtEXtSoftwareAdobe ImageReadyqe<XIDATxڬZ չ=]t>0lYѸAC\a70hD .(F[ @dPewhpCJMWW/L}d*t-S1(Ou@SГ>^bÑJ u'orìdqF֬VWmv0; wfߗYLS/ Ɲ xveX oz6]CT_2y](JƥPV-wnF3z@qH LQ${XSZhDȓgF5OG6bo"iV,kҌ:-@֎Pxŕo/=}Uu@bx$er#~cv#iOXܽ`2Zۘ3ayȥ*}O( ?DZԤjD]q^j%g( j"3F-tZ*e%1M6K)_V~n3fL,D^ ?ؑp^ "tvFg6ߝw8O,BR  o>A>?8޼4w'C#7dy31UFSЛLpx\8vp:?"[~U܆~=fנO>67ԟӕ86g_|˫taA}r/ #- ., w.ǗҾh?7K(eAcap80r5HēR$uxs!kG/zxpHW7ޅ 2(|'&MF}R'hyh-HIJ1ldxr<cprkU|igf;X:Pqmw pR@6~W@*êXe#0pP,jyޖ[n<*gQ Z f|Bwp8R}y}pxPs[a"+Y9iIrqzT(e+F[lڸY7w1; 4{ _7 v=% Zp6hU9O;Ǩ]UA`b A†c $!I &< "uعi7e_x⅕+Fs )244VJӍe×%lr&8ɶ~C&EJ HPXy%@4ɂL&lkCCaY~?"n-q<\xc BDd,&niuz6ef,7J_M1x"gq0iZÁv"JXY a9DE`tQ{h'rr$eMqYqHj+D!.JvDKϹ+8Sw.| .Rs OТAzPΥsYݓ"5#,-ſ|ӁW͔>ƧHs&?ocHeaa$}=X/ѥ -?@ a=Vg}*!Ql_mD66&#~U^XYR y,ᰴt*Bo銁V #R>1 mU\CVg3a$uU؆01;aF(ty =eIkɢ$p]Xh>3nLf/EonTҎ! aêg\r&7~}-)^s&V.@2◉-r ]gsc . "t-ޚ&X\C7̤z+Cc&`訉p")k@0|Πǘa }z (G 4Ba硸l0Zx}0É0]խn4^$.4ǼB8 lNO{XqJ ܽ%B?^>:@.z8kO˛5gx6}R6Z=gRxG |PcOJA\*GAWVmyz®)O&@<48L*X{Pm¤A!6x=?<`jNYuU; Op/kV$Z3C<inE h,h&-gIr$|lZ8)p[a9M0} q<LS_H IbZ!<hm%%I,$DR̶]4ۺdљ jc؍?bB^%JLnh8Kvh: ;\<}D^CY7ȧX,m fruIbhly#SjBJΠ CAB̸u\>t3:ï$&փ3_KȓSC H9%bhwaeOn1-i6MGȏZ j~A)v-vGuQH;Z;($yFj+ g]Gh'E69!¡Jb^6|"Uy)&dW 瀯p(-G9,e8<>I?)&{AdDiM7<;}rJ 5K۴a$ů.8 f̣EXčL|_x VDjן KKJ!ctn]ЈcswK>k7z'\m^ ;a1^blZ$$r"e XҰ^ FG2x]k9 ];xv @D,L'2^X'&#CPKZ%(&T}`~*#@D-եOU㈷JmTaI| 6xe(w`ۖ @ۭza0؟})sїH-o =C'hyGVνi~Nu,j>[ObUlެ9jߏ'H Z*C.6lJLZaE!8*^F}Jq-ԯ U<(Y!:8z2p+acdǗ)BpS &cW YL@?CH$l, o͏Bc,6f\r_t˹#9LsAT{731dwg4r@ǰ H+V|$?)ZX+,:b,Z]|t /=0ck0oޑzdhutBr\xZHJnhndc{G>$0IdP>Dp,&chC:|dw>rgГCO jMW " 0eY, ~ 96ԚS,K7@y9^JnX]cOk"q?:&-?f;٩7<\|YlWE|tD1yx!|,ɯJÐQVĘ8yZ/2I* e7fzO;Xsw~XOސ7 ;oE_? k W$v8=yTHDz!@pcYp)֬|ԋ.wzw6B T띡|b?kt|VW@]7F,j)xWknFn6=N[xCߣT3d~+5ޅ62$u5\H lc~"gdr4-hw75<3n|C{y'5kǿV@k9:˦^y O9hi MMHDn3%zʦsQX\\*c|~MWrUGO=\r2Oz<. *wV7i0KbJ$cKN>6t%I?Pcܗq{sr2?Br.bT t/F wӫGaٿ@Qu(1.N P~Q'^۸_,IENDB`aranym-0.9.15/data/000077500000000000000000000000001213346724500140155ustar00rootroot00000000000000aranym-0.9.15/data/logo.png000066400000000000000000003625211213346724500154740ustar00rootroot00000000000000PNG  IHDR5bKGD pHYs  tIME1+" IDATxy%i]oY~ofPB*NۭvNOۭC L - k)lEQTAmIUeUfeVn~.g?%ވL*'#9q{8'6DEEE=NeKKK,..riX^^fnnyYZZb~~VEۥNݦtz!2ig$IJ!PJ)FVcttfIޠl2>6Ɩgh6G˶299$W]u3SLNNPU߂RǏgvvÇsY9ʉ'8ugcqqVkeC/. One!텽ZOFǘd֭\u+W]u%\}OZ.| O)\~}$I7D":QQQfggٷo?Ǐ`߾}=vs >B n]Iï!PX+Ca  zBez{9@S'_͓*>jqSWsӞ“2n4QQQ. ;w}kn}ؿGe}}ύwU~ AP . @|p!I:>*rӯ?=<qUǍ,***`TTc'N=<Do^g~yx {=7<:纫0**kmm]p}m۽ܷzh}jӺ _/7'І~@`9: /+(bڵ|>^y Oefz-b. (Z(H tK$m!0fz^ FDEEԹsͷq˭sБ!n*@>AN߆ K<" s7 ;`WäL0K*]uIǺ-ŏxO*"FEE]ڻ 7}|۸w ]:8y` r+o ^xQ@p q`ep\ @VBc&ҔzogϾ&~"FEE] ڳ /~o No]U=FpxE" ,TBQ CR@g2*( 0 C(s|_?I0** _:_6n^Vm vz*^sWoԪ@w/e^ ~BoX8 ׇ|"ʲW0pt+ZƋd~=⤒QQQNWǟ ^y<ڎ=E0_&ڱ1-F8xrtM@L(@!po!܅0hiSI",mDQDW#XAw[@͵}HXMJȱ;Qn 堙FOP:Uz ,3Z@`.{Ǝ6/}(7<%`TTf-OǞ[) x(9dHtc  bcOCXN$+ž>QW !l0Xp3-~b`jD5բ.>}Pk}jz!*,ۛB-'~6B)Ef!P)R*A3DmQuXGEEzk|#ȍ+'B ˹437<X]rʂۊۇ!T Q W!A{A1Ok"p <"9xT4RAzSu V]AE$ˢ 9ME<:|uU@h;/pgR~yX%Il?y /F1-ªL҅2Ԕz97CXaiLЪ6&BVޝ*:5bX@jPt8B+~:U*kIDaځ>蟯,A.1 u)ۏRB䡮!5z84>qP %J~ R UABplq\%&DEE.G>eOsHAPB !mPt%"[ E[V@,{W|>hc(uA2W_Rvu{7p7AsYWNhE9 `X(M E]8 J,HӴn B% ,;DJ[#pþ0ν mᑪAN vjMrQ/(׈0ks nM+ Z1`2ZbUtg" mU0J׆ÊnWh$ӭ az@Ep Pٿo@+AۥV0a!*G z-vz;"FE]_X],rfv6$TJ9Z80MeJ Krӥ=A$hp)(;U9 &ł!,tc].a8Xs\ 4 X>yjOu6AP})d],0G^gۇ}_`' ~~Ii}*e%\>h`1Z :?8W : "2׃% aK W:**`TQx>_,.E@߽ nC8*ac!ׅB!am+B>@Zu &k_I^9OjυB|yH? JbNC$$`аF)qA ({f} GGEE`#_OI;]c `T>]8{ⴑYanmiKbz``N\AU |*x*;L*xlX*%XY$p{_WR.\71~>,\pC?yJ@-Q8Ą-J;vrAXgmm}4%I 4Ȳ N+7J=)ԃQQQ}wcxUbXe8l'ʡ'*#@(.x*6 D7~BaXeAECΫ0B< q2!bBΙ4wv3^PW8E;U 4"t q|a)"<0^/%I MV3VaTTT3}vE HW@]Us`1rDD&OnCP Ja`q90ÑfX \(3ULPpJ!`Tl6\l?gW}ue~X 'i)`(mXNΠB!b+_"h9-]n`jPj3 ȼƶQM m(.+ hmz!#(VDuQśwtȮxs'D[zDEI@<"n!Q`BT.["`rp0*́&+^6ja^`Xz 0p-I1` ,X3g MpWOSɋM2Zf LL\.(:\Z a$84Oi}} )ŀ XZC4~,iJ!4v"FE=J:x4/U G"zQp*` Zi0ޠS^A8&-yr9eS/̟o+s*=].*cYcu͛6o:҄j( 6%"_70GٽB}L' !B 9/DHˆ񪔙B`σ]p}OQ`]Ϝ[hY˂.'/J琅._MU3`ʡE@uX"|B;Q B39̞ `A8U~I#+ IR#Id]>`mXE苊u1vowk)`oX5<]zzi@&!<&JIB"d"IdYPʌzt:]T7컗=YPs@3pzh5P謋]Ⱥh5fQ8(̼iu@ ?!+ء[gϊR)nϝ;xah0]0VT2K_4#"̤sRΌ hݸE8?.k5Z+pnOic)(&<%***`Tj#/Nl~U'8{i[W>9At{brl4s6›f7+2zvnO{MӦY̓\E:jCA:kϺhC[gB䪷_؞vy/쩹l$> %D{u]LZ6wX1+$VTpWbcGPyZj7Cjg-l,嗡fV8Ҿ1y˕ʊߦAp[0ϱ\|b㕅Ì\D_P,t:5v|- AGPHg) [V t7vmXTJse1mN @߇Y t#FEE:O7ȍe`_**þzȎ^CTmCjg*:E2*++rd g@ kFNޠѨh4ťV`hBLV UnY^n2u T_' Sp B'Bhb[`O3'-B4GܦޱJDb*IJOrT>1Frt$(L8; H^ k$%GPkdbV[vEFy^JY zX0FEEE*hy_1,[Ia]}B7݊=f8ll4NHHP`~b;qaE1Amxڇ3p5Nmx0#Z!fey8J R"%9) ׊ xgGW1*`T%W};9ze IDATpƀX+VlBQo3!Bb)jFfIB_R@%iJ$N_ӡ뱺2昝c~~"*d$z=ü-V;d\qR!ĥ;E“|< ŚCe6L{?Rι@3l?Xs۔ ]h{hO ®NW{{Zf$xIRj-rI_), f=ZZuGEEDo;p}T<M :}] w 0&iJjll6 · 5y>Upe,vt:[ܹ9N9ٳ,-^[Fek$Mסzl_ot|?9/E4dRǫ(B0dK%t2Ӟ6*c>4~pUK1b]SD#PJy:@S 25 |9'bQQox[aCGcg\֔s/+u͕`umZʱfBHzҠp@Iްս i*L񩙩ڧ5j鳜:uYV[ +$tj$sײ6O\|"nPQwISP Yj\R,}EACl}uvމSVͣufF,FEEz}_V^ف)9Nb6.yWdl,*mnû:#&###w-f}fsfsfZ-^jNPڑ[Yf53X[9;ˉ'9u -Z#kꭘ 񆕻U|*] z'0O qR %yng±&ȩM. p3gQ1 Am , r7P< D-ͩ} H!h"t+=p58'PNs/d"&F0*'mm -lqy}$qlo>m22R=Ԝ zj5͎D8@YZZ'N9{yTdTAꯐW'mJݨPj*N͵+eYApj3< K~H;oN)Q4ʂ`f7D왳oK `$!0AiCE,V IGEzt={|7GO;/3;!N_+s Euq"Gϭ3(##c⏄f_n[Y. >}GOp1fϞf}u`B"뵬۷ k#*/V9}A˖EQ m/\A ߔ: &P(BWPAU3>,gĐbB&97;K}N5 8mB!IiA(>.` \!a*A"FE}}G7|(QaEܾBń~4^ol6-8{[1 M̈́h4=KK]Ν;S'9x0ǎca, l^_~3w= \F'S8"=&0(%3cZj‘=eW9C1ä)-ɫm'c@%(B&ieR1L .w'H"n z}8҇[eT>;mBBW5 ~}g 4pNGctt^_cdM4&_][eXX2;{ǎr!?TEuȺTշntջ'X ZZc Oj {چ`U4O(z=ڶ46PX3`~1-.2 ]@S-  PpC,wT3Ј{ӨQQ{;t%t1dGeQGE߾H$4u7::~e܂_QsWy]wu`~Ǚ3>|㴖f"Y [&9~wWպ&\QpJ^PsKkt\Nq*JΠ&,8)PIcaog [t9sB "}01 ӄ ->u< |;|O!,Gۗm[ʠj#@s:::ؘu Ń_ۅvۀ";qY<,"Ujb -{.etuvn_ޠ9sdи8s7x/m F exiAP'>t,AB9C kx<].J}(D!"IkǏgz=O,fb.P*B`ۅ;3/[`TOO}Wua>׾^ŽcA>_ettqFGGK \?~IDzs =-!09~;RWЂY߇}'؋`r4nQ.X{yșM>i+VjlQ%ol̀cc06fot-]\k`~ހɓ?<YYEUK]fow_e>{*Sۺu$'{] BN01hfF ۩B;pΠҦ8E|αVyn PA,SΞz'0w `!ANkƻ$620é9M~Ӯ٨QQ/ë^/|`Z>~4Mi6G|>1>>no)BWBu෰`xv?CY^\L[]aUg&*CiHԴqףe\#mvlظ-]@P*R zt]NmָEE~GxT &͜{CK?3WʔFX|####I&&&e|\ ߈u5Hmޑ4];yhnΝ9/Po".˶ߚK(Ur~_.-͠9 ^/􀦭;(\w]!+!o- ,#ʐ.l Dj(5͡!3B3+Xs|2 'M5~/^^ę˿.nnQB)WߴL^ <ʍݼ6UzQ7j;0O311d|&&-hԠN^ʀ5XN#ڽ;ɣ *B-KR9W L|G#E]n7_4"r,(A~0JP2@"M4ѣA[ܚ[ׂ k #K8ǝ.@RJz==k,WD=nfQf7|+;v~aGiG1+m m4lG)8ӌO09zobƬ72 Ԁ_jj`Gٳw<Ç2KM-Tgl]U;csTO0o8͸r M21a½ĄqAӂdk)X\ 8xp;wsvN< %bzdE ~-˯κ+zҨ$hiS樨G ]Ž!>V Ŧ̄ &hefO >'Piu)u\aȕEHyyYIrFvm+]u?tx~7/'f0ꉣtU7+u1L(:~br2eb&'-MhF]?kRfpH]qoq>+hh^˶tYGniV@ȢW/ި47C,Hl?AeSB7VLZO+|hF D*mN%B8Y5Х _Uh-C) IK2anUf1N`5og_M**`w>ok o ,\$S!͑&bq8SLNN311d&&alFq 07gNѣY~/>x?'p@:P({59aRqGǍG9h=C~av!bG[܇m(2HJgvr _c 64 s,;^ϟv:?2s-^TT^Ưo&A.rLL6;X~LMM1109 S&lԸ~M*<.=']v>ۿC: 4*:[ ,z޲gpoý"IAJWEzàso( A1Py˘2cUfʶa㬯jN h}M7p7E!5{!0!Ё`8XNfWYEEӛ9mΟt=e ipo5M299)MNYׯ c_J8 oϞSs6v)e{pooł_njr;5Wrž~"#beoԥ:Qs*o #D>]r+T ;c4 M-Q5~B 覅om7 `Qp k 뙉&R(7dii7Q=?o{Yn"lUi-IHƙπ4SSNM䴭2й~ep ; 瞻9vatw-uP%~ ۺӍ8reoK A?-:A(|GV.76h P1YG(mŇҊZjz:x~{S G3;e-Jfb+?m,V)EE7}w|+;bDb_^כyLMM199SS&ab: =†\U8y={pϽرc; h^B뷜ydpo;2 /)c7u m??1ĵw†{H9  5vb]G4JnҚ5GϬB<ŧA43@PJ(;eO|+3k>_PTKW ?94b_ʷ4MÙyw:~3LM5rLXoE;8}CŶmwp~ڥ._mV>7/xD}4O!DB JB̮@QAfasBeǎ`dB_K6 aB=@vR]ʫ].ˋ-;NὯOTKO72dP?%B& Lp~J6Ԍ?!Zu~=!ػw{a~8u"˨|KnG-wdj6ި'-4s1V AM.Ĭ (F'ѷ ]] I `Ϻzf$IJ$Btrf0KN+vSv>_OTKG~}֊@uWa_ m]'&drr-LO!iSS0.N"pfÃ>]wξ1"]|.Wa[S ý2_w*r}~_IABI"}P25O:n8,y?]`\HۄzLS&Fe3V޶N܄"F=_}h72l[I,Z!\I~SLOoajjii& h`Na޷mCE%uнߪ_O@sEs11^}ԃ`35vVNafj&̩dY|߮CC)iBaZC`8:\]/1KTǯ^7 [ AZ3y8 C3LM M 6 Ul 8zw};;34 ?o*|2jr†΅.&+ZW'b_Jgs. 6ҡ U;3C๳'ٹTouLϼi@gl:iZ!0A(`U ̍MTǟ~>{?ґnH?wW ڼި{ SSSLMmazziM&0 qάBop`n--t{~g[65 ýW~acSaW%6wX]ҵA ٓfQop;Lp tLNYi2lPVac:of"F= /a >$9eFQ(Cff [M$fW<6p8G=>v;gNKLg6%of"19IX IDATEE:AÐ4]D%;;OWJa $͞dyR S|Fb pX{';6:45:z;0=N.(os>0q?{?wf{ Tr_ۼ4́~7VǙMo1~T'rg'}.bDLG{[4zhF>B{ Ⱥwז"d:_TT4?lt;{m+W\4xZNjjfnSRK!˨n#0z@wFFCFcZmz^prC okf0>r3O?YQ = Q?w1G&&&gmezz2&oglb-p ;v;neC;ybݞ'ΣJ =\/CU eM!0<8rYS"\CkaOfrȠQh@-͞bNm8K|is !;Q *4MFT"mW!|̝,~7ez?o7Qy}swp{fsa!iff.cz-j_UF58|{wʱ#I2uϡ87O !_?-1MEs"EE} XC@ѳD Kr$896ת{HaNA3m\E@THG` Q XqZB9Jޢ^\_o  ,FykDEo䕿W#+5zv!B/u^#99 33[3=W 0~Ǘ>P]w}h"[oL!$oC`[yGzdXA7]o%Su_[uгsp(kPsgOc JvŸ :A9J٤lz<hYny-dzjW&0}-ߨ&vmbZH#f-[Rffiar3L߱^صk;w7F27O֞S=Zl:~2A3~KT#@J0'򾀥G=pb` jR0{;wqnG4蹪=L S1M=iom jlh4 YN؏RupQt^RSM&*`ԣ3KȿCr)B(y8 MH%Ÿi:ri<p8r <;<ŭwyy՝Gu};˷T7[-% >@{M )5C9 n4۞'!V!"4I 鵐0#;>FFadd[ \J\`}Q=Zn»?7n.Q.>?3o`(b`l0Q;==$[ز%-[`20GTwo'38r=۷o~"U"Yʍt믘Ϊ[h|=܌+ =Ez@P X '"}F aPOgݠ@1}"kT N<I iBt4lV8|QQQ>Ϻ ]LѪ狀 T?v$iZ{I&I *SO{`کC{T$ccKzL vN, BA.uLLM$*`+_Nm?P0(Vz֒VZaBn5ߖM{-*kppλq_gnM yΜ?w~}վUoTTԣ X$p $z`jR\ 9$ǎ5i jpQ h2Xˇ:^`*EL >u ?ohL"F=r᭟.y_wٵ{I a$1>>6.9f.1Uf-xx;o箻ISѝ3a"BWm{ :|zY&87CQQ+@x֯M!w@crԠ |4Mms%g@m V ̭ܿ]w})F3kYI 4,-_lůZ/*1V9"%7Bޤ.~fHRť5V4#Vj)ԦJS@+v5:vv:Y333]gq(svM$j5T۶~]@NaR;CȄˆ)>[cK+ݱcz3sX"kCuL<ߠQϋ>\[n`X ⾯U }&@E0h$`߾5ju> L va}VV՚fiiei4t;msOgIen`dz4~g*n&Q_s -~hGu<-7b=v/[n.|Gnb툾i敾-G~[0-s|e=z@` ye*_7A Zd%={}!G~ԞO?3h_+j%Zj-dWWWYߧaʂe i/snyq3u~W?&۝ a ǼEf;Ŋiff.gf t\* ¨Ki=,ϱ{C4 &44) 8 ZS,/oaiiɩIiu"#^cz//ro2667Q^<&@PjCT i2t[>d乌mp w[eEM/ym2V!CH;\M:,QP7FXKME킬vv0F .]4Mjh'Vcr׷j Z-Au9KK L-v{t?H ڠ ٦ ,wٸyD@ ~GCҸbHT}o1;͖-e˘)p9yط^aߑg{Anڗxx.b$'k {y=վBA|Nw׺{nN(o%#,K MݜJvGY^Z"Hm(( :tntzkYY]%B"A(3ø:|h`7S?y<~ͻw7u6CbM cs233þvd> {w-_ G!y]=VYg͋Y~Gs9kKjt{b;>( >s:D=:Yf[ G>?dиݞ]ش*H0l&PB"SA"4Ǐhll<4Č 5҂V XXX`~~~C߭z+~}8XQ|C%/z~!~"FZZ^_MBA92R~f h_y\Nw_;XޜovTy ռ뗷Bfݙ.ҐRJH"a}+X( 2Avߗ~;б{~ r6jh  zzͲϐ%,Ǣ^\rb[hi=8;#9XJ%X\<, αPY %jSH:PV*V  E7\?O.ˆZv?_mjA7uHHOaa9ho7]]GBG+M- Р#CiJ>FV@O`P_%1TYCh 0Κ(ϝC@Qae pW}p}WWIȊn|9!JAem%֟- ؀O련Bx:MyeK.Q,Fk[-EhBz; vq(8,KҭcY6Jꖓq*AR0Zdzjx'*nڍ{;|cyjʷ|km-zyKw##U^)oR}ykR/VҬݤ}?+J)80O$Jy_45P). D 1Y۹&‹]7Mkڝ8KdP kg҉}*S(!} im4C%|b~n/I>(A>oD;MP#,,YfX/,mi_%~!!_~yp[dy "$&xX۝j_IWa<^ÞSO#CW(SawEcQN%I̓LE)Ґt7}x޵ߠORR6oA 7% (YE *9(ϿHO%`xbGp$; ǎѣ9|#j+`X7Nga1Yۿ~6 ?s _8n*uO?I?Ä(iz|%;t;x{gB}0:@)j(3Y !EkmCIO$Zo#tۙ;723;Kief(X4 VQ7Wc|tb fFi> ) Ha寥~N(y݇CڅLWG< O? _"/9% ̟J߀ þ}mݔ #."PEꋦnݼ< n߄@'/ ;u}]RY@NzRAQ;؎MnGgG;Ghmbq/ǀ8s'XXfjj%/PXRS0$mbUqbJ -_p[S<5 ¾ZWgE<~[Z ɗ06]]><펗3^_kO YJ|²BWFa[u\{ TŔi,V&8]cvϽ`ݮűzS?;rԟS%&B, 懃P*9.\ҥ(35X}B;p8vr3ּE lU- T'"Ї!]miy~o[*^kzW|Bj :Z<毀>&2i^yqK#%m6@xhr$_=R*)%cLA}vɛ>zkXR큼?:8Ǎhx"?v%k~>` sӼ+^W1yaM)8~-?~ò HHUaXHT"ה ]7s…lf0ks{/WV* oa<{^կlZ[[=릻3݇cZ|灱/2׿U.]x G-xR/Q_h=gynX;cE";M\,Th7 S#P3 +0x~l vڰ?M~ |xcud -#dUf|l_>OOo?C02᥹ni8q[9q8]s/BhsYFQ&D·l~Dz]2_ /B&C}TF~ط ::MxEX&a^P*/˝v}g3r|zy LD%!6fz1`O)k;sZ6~4!t@9g(E՞hxN {P0nY_ReJ__?/Ho =0 KCv;8q'O`ZP8a(X[cӀ0CSFuɃo_v9~߿H4۷0OQ|nӪ~#ٗtu9^ط:-i,%Kx_翏͒S ΣR}}g_+TntQ~c |M08茡2[7?Qcݚe6kjCUa_ o L?;7tf؀LHgzj&Ȋކ7fAN^O}sܨgkvfIU[$ 7)Dm07Ņ>Bg#u@pRpKn626>FiqYw,%~'*.cv=?xgx>LU ]+!tt4k^,7SC |o4I^pӸ9TuU_ d! _k멉tHdǺzS3k{ M*k,[# IDATGLi̞jJ0a  㣣\ Ȃ!Mp68u4gNJW!/P^"8!MRxߘ fQ~]S= p.yyOg~e9UٿNhu_ /Uatz{_&QZ%?Os+KxI1z⪒׮aj@AH8%PYvG9xqrq3{0Sm8 :F.YDT`^IDnbQB_o.@z8N;9sSN[DssH )n> ڧ?i>eC3Y;~ O5o1><? ,an:;}'WUfo5꒲޻ělg0k N׏ofZKgoKKax>Ŋ>LM \<3:=SB}𷀪yOZ 9Q#}+`0bdms'`L*nnn;]_Fa푊U[L:puYUָ:<̅ e cv~'G܄<ՃH1 &eO~ِN[V|&*ѹ'B8}8|֦~t௵ӻƳ~W^>%iU,ބW >nJb6Vhmz\ DD|iӺGk;X!\u=IBVExk!uBe=8-D͟2s>B6{ }}WO|K[TPcRCRE~~Tk;*> GKgnNFGfhhel*,倌̆mff-_p2o/O? ضCRlˌ\y+בFըh'c+67P|a:[-9?߿ fs.",Rv.[m,M*k8Bf!r?}*e kp:tÇmhq.'Y?Yfgp+ C@KS>?<#x`k\I`߯Ckkk<IGGWZXT waz"}k%d}%˦г_a2`{aˍy| \"هfVnaXsW9v4ѻcUwa9./\ǶmN~槮^c#+%b;?azW \LTvb{'ӣJcYTD!nKX9j͢GoHw n &Nj9rCC,c*Qzc؍plg0k= Mt{_lNZy7ra6(&%'lxkkkh{௵Z k51(|K_^Ges-ksCgǯJ7(#O0 ZAqIDE%0U}(ؐ0vJnEn ES6}"Y З޷s"7]uvThW2VԣKè:J B c\xi`nJ6w8z\t8D.3b ;0<ַ-~j3>9V3Ǻe_"6닿W|覣C RCi&'ahH‹?6KNUZXٹir/"=}pb/s h9.Aŷq$ӗ Xmq.A'ZΜo~^pHUrm @;!'n喱P.GoEz]a&vOZp۝pΞ\4Q|_PaUJ?`KzF,D9 -Z[[ ׏[CX^5LO(\p}YJcnuY[V_׉ɽBF!) xuM@Zf}B9>- 8AhU`}&U>bӛenl߸BJ+.+9.B%@{.!Lή\…e.{Akn= gﴸ8zvAK\g?Yof>Y)EX/!`# #ϻu/~]Od~ǡgL Q+^Ge{*YB'!iYwMy0-aXLgwsPQ-4x8,DXiRe NZI 3=Q! fMhQEʖqh/X%D *36:/WbbS-m;Ns/N]Z.OFˊR:vR}``~`֮e_ٰ#̰@IT"pG;iŞ[Z B^U˯/ǭEdezJx̟'l dH#Bh J^_! 4ZFF0YT}睳Weʓ\@KcYɍ>ӿy e^}>?h݉WHXD ķq*s\2WꃑYr ,yqΝ\KB$obkǗ__cmm-3k>ɿo`h$Z$XŧQEN[o>~+WsQ'/p>j6oaG7x/ A}H?>KIa̋ak%,ҁHUp/)9~No Y?d} 0QQLj^燃rA} BUjё\=W tiswýrԝlL5ü,4]i*F#PCʪ^&gX[YJe{쁫%Y)hGn>)S'`FG>e{|Օ/1 d/7mmy|]YBk\t."R7aٚ܋Z~ -ժ@ޟK|fL|F%DEJ Vd0b~h[1URjO}1Bz2a XUf&t%ꇉX;w 7=N h^ $I;~~.2j~qGU*+ qhkk5iٿxwmM^䥗S^!ǒWG֗P(}__7H٦ l,E x+brjw20[9V9A4P0bݬ`dnCi:}QeT}7AO=G`L`lNĞ-"MG,FI4j[̡|!E2&a @Fl"/jZrl6_j4L 鮑k,.rF?+z"ن `l@PlM!>7*Kh$ k_QJiy3*csV?8$_"F37ǁc.)`YRkL }UG@7ck na"Eayc v]p'x"3low(Pϖ ?yUC϶Oʕ \pzyGzyسYSƞس=rAMݚjn  5ff^xL[4qUn&6()t()#8*Nerv\^G=x>^1HRz7گʯdq[]gL 1C?Bشc_Ţ >[j ό>[@՗o\/u|rYu B_˵}(Oh&-K͈0j~v*5'>2;Hd3Qejr+W^f!'8w+inn> 臁\@{W戁>Oep?$`B(⏠BBF!p|yߵ5mltW.`?Zk%T}5i3ٿ+(ܻ|m=0{9E7xNJ8`>SXN4+- Y,pdtTuo)Fk|PсH[[[e`+_|t9:-,^zEη__ͦԜ׿dz?x) b̟9 UƵ0v=F脅ٽMNĥW(neY[$_ܘ䋦%& u"cP[G zZf>wE4l˲c_#-GQmBxW:gDz/_ _z%ĶsX4zz-;/!H X7vNQK*Sןr艰@y0y;4/ĉg8u?u6xy;yi~oCJzR_)>𖷼%Z3jw J} )e²r)uڽWq0/r1,#+ > $_jB+*_+|cVEY7 V5"өFۍ`bs yZ_P6U5ZUe\UqT(@׭FeRaۀpprIbys={v|%X2cذ˝VMzmxрaЗ:UGI D Dˮ\C^i8-g~}=L_+ԖWpA`9;])6Zo@Y^Ы-rj(eHpiHeQ bb`8~T\t>lUo5/,rZ8"etKZd]bh! ᐱPc"# T^(nzqƁt@$ }#蟱03t|Pﯻj߹2Gnɱm!n:Γ=&҉1 o;9fƇGhvc'V&][MP5_c4ϕ9sSgNppgg~.2In{z !\g6??{^ַfk㏢iBLG6& [ ^y/335{t2y j 聿o&c@EC,VJ8sn~axP-*F!=OV'8[畋(TG&LLZ՗9sǽ*!c sX)Ͳ8e;gb-ۘdrp 8rZl@2z(>y 6Ts!&W4$0 F@XV zz.p-,`}{de2݂ s}WaEi:;~w~'v׾,/E}][6Xoi/ ? HKKpVQ.\(9V$4R_!n-Omਲ&0b# +JzQF 9'";쭜<gww矿}s#0T?//fS>no0h{ 7|+ꁿB!~/ 0߇p|Eß(=gND33EZ~ЖJav;oJ)/)c^#°m 2 o_RQeۗ~iVox3I ,c* IDATc^`W2< Uȷr`}IM0 ^ln`ֶھ<z/*E`ea@0rŢ ?j re֖gȱ|.{*xH΅/_g |5p㭁F Jkw^n;oəc&g_ۣ? 0Y{oZ#GSr'T FѾ6#j ;Pkm~!tj cCoN޽<55G?l`ֶ[џ2L0|2!8`B7r`jz+=}L`-Uۇ=7yjfo?3&uKEI;Ύ+˲SX>_kUI^ޖ$Y@b/gtm) ε2Bd CONsz OXxC={?JQ'  b{;ߙMfۋ/]q)#1=tP($`.3d_K ۋ[^Ē^~Ѽ~E k@}>L6X2`MƌXLuc0`>:U*8{l{{]#zufK[PӼ bv+Y@ D^@/ ,a{ᡇ3.zr d0?x6f0ki2Y?Ոh,=w-_BKK B(R1\cqvXAUQE귬ٽY~_;v65kK(N.㹕߷c>Ti;獃@ % B$wRn_'>R($1ʳ[uf| O~G=ͩSwη wo& f6:6J ݯc-$ЌM y '.JP?ׅ  "K^跶ru?o6_>4Bw,Y/RQ~X,}$~kZ[5Z WqԽ5@|7{kS$Vs7m;<?$MPc}0n[Ԩy ~xGQ݅ O=T6f0kʹ:̰D Xx {޿&UXZZbbb^VJ3جxE2e,U_{~'{vV̨ǨNڹ%i|-+bt0Q211w(٭">=*-Lq v8Z=@_r50oogkQ[[+??- ,AsOa!kii!E}9a%/[_ޢЯ?jLo>װdCM&A3`}v;+g%@3D`t@~9Ex'w8O BtYUsXZe>i'p;zvVQOۛMz?*53)b3'bɿжmRT*UJ%Z^˸Edm 宀DK$0A AvTeGagJT2S/7W<7"b^؆07AoNqlGZUpBȍc՘Jz\.DqpYx辅r]fn>B270DDn3TxN2??O0 8voKGdyy~ӇI (EeVoSq[dkNcyAl);[G[kUsiGǩ nTP )Y+WLCC!xg0 , ރ7o3xpo d8R\$FnHȿxB|>`A՗-ykȾX1C jvswwTC/SМ4ה[j1Hi"_6[yPmr@jbC999c=-̚?I thtZx(/Pg֘gh*˥Y-o U_EUS%}9Mk-"w70lRð.s!ky .L0ny;H0+IJ45FgO5Ld`sC2Iv*1(QnGԨap`Xwx(vvP v f-hjO_m)E2o;k0-WYYYa||1/䃿ed= ھ%_Ko"'X7C0(6W,a3H#*<|6=q@':yk4~Z*B~ѿ cDb\8mgg?-0?6tPUEɉ1zz.1ntSr]HY@8Ei=ַŕ+W?Y_=A\I{+uea_.öme:<6ȪIwTՔ}"Ϳ,bu]"uos[CIU cݿ02,U;d린,%nN0ƒ!16~u?.Jzzw޿z7)7| .B,;l,emX@`2,җQR>sJ+  =.$8gpdڷ~?* $5*"iii!8B`rrKB})*'E#]j J.Ne&2N7'Z^q+'bx_ 6%bunV\>o'=cey~zusKk;Nw3dTNEXVamK/\N %\K|ٷJ>=q$ +ؠzzRAB6P w!dc#rs> =|Ӕ&;E5=~=yqPK/_/Lzұլ9as--z"c㬭䃿 ~}?WzkWQ_[!~053/"(@5Gg?8m7;#;sq}@u XoWow!<|3_WN[lhA7_ ̌c廓Z ]uԗGw=V=BM2= 6#pn /rR@+&H.;j, h)$rk`UqK ]f~F(p{aG[8?qBk8O+ݶc=^ dm?5}hPHCvQ²rLMM"*><74/{lBUO{ot|2%(鄾+#(+ý| ;pG _yKo׆zpIJw[N5'բ3=i|Mǹc_"1h}3iv&\9 6bG:kt O ,#W ,TC 20x7w>>s#ҋ_ŭ,bٚ3@}:3mRO8ڀo./n@o훗^cWqn@w d5|aC "˷}gYc#Ӵ2?KE1䞁?D"Jf@f7!)^[ \*ma2i !^ۅ Sk6eXB?%ɨh)"JƘ`: Ѡaane {BYacX\C}w2qEw&/(/ɣkO?4Ü9s&jNk?%L*17H 7ho(Bfvf!Pa*sئ֯EssFLW FsWp[j"UqyY,~.aS^Yp?C ^"DQ .h2 G?*․1 4Y [@r\("Vk%lz/9Yϯad1TKg]-g(?Wmb{b@w\ ݿ ڍt=oRaf|z-tm?*!b"x?_$߼/Jir0xM w,myܕ f7~nB(rQ*-Wg <,G8 ;9Ay djNml E,|$,;ӥ_&'X[Yf-}VU?KxE k*s /ex|_k+4`׍l{e9pw}N  8+h0Mq cvRtKyNc 0n,vZ[g̴ =#T3|J!lܝ`{ a۟} vieLq9-!,$m'd_C2ԗedmdٛ@BώؿPo1*!4 RnZma&gBE [ftm 01 8d-d>Z' ~1)66~2ҁ)/bjVyzΟVܢ\{nRb`>x5zW݃h;Jn{e H)3P ]{>3[M?6yvlw¿rYVKXj Y[@7 t,K0aʼnjdl&*%M|A:Yo+6 lS`R0L"oFZQ@f#!PtYyHE"*~E/i6XŵvSAxZJ' #j ˌ 1;wV~I| \XX_b 2xj:TnP0spuVTZba~5pW|[F)MϲC׏X (Otx-bFAŮH,,{شn4z6R\^bHOH}X\w[*ػ`S BDu2D#ٟ=>,{g07COoCC0]hm2`}S6JM(5&?H@⏹yVWT~t*ȅI˷T/^ܡ6h`ĴbB}  @c"9E Blm:D<|+b }fX/V !AoFe+b}%-:@aN`*i>5Q  װEjeV]q0P |S.3p뻝pE2LTĥR&3mjY8rz6fjxF/j9ԀlΡ97ɼp Y6ôBS(0ȒszqA@;Mv+=ĀWBx~CĮ0V&0`QevfaG0GOrY\7@+_+++|B7;U !8Ks@XcVPbmu KeQ^v?rKrcJ)abzRW&n=!mW./hř̟ѭ1X/` ghuB%0Q]ӎsO&e]_c_ahS[o' }-0pٿ۔?eդ\@"hYeR Y/\EՖ}ݿrd.,ǿّ$`dS8S]Vw=@Yp~QvF 67="wDG%:#lSFG#6ԫpMzp65d}ёzg4Z1*Yu.^̕+=I1*[cl²RJWX]]rj@ϭ_ Uz5Rz/+Ic hd;[KgpUdMvBir.iDJ?yA0ي3k 5`f *Yu`xC0/ ROf@!gǞHN-(0(\WlZTZٿ oOW@O?! ذأS(h+_aG?o#oet_PM$~ ؘ l\=(Q^~ܐmԟ~dU4bW4X7O\sLT ׻~UW \./38ЀdJ{Y{, N`"iE $1 RJPUHiF~r"AX> ʴ|QȮ຦^|lu&ȝ.H2E6}&ۼ:2J쏴F9gq!ވڏ@An;'nx}+U BT!ˌ 2;4u]tDsu ,dj##‹Ku&&<|9K.k 5pBA}-Zn4VpMJepP,ɀ-K)R5 ՆfvN%^xq1MaBРA?j&Fpڙ>d7|A,_Ⳁ 0tw <':{ x3GNlES)L?r׈&fv!*Y\.Sed}/X_gOhIN{'TkK?@ h\.Mba*j% 6 ;,tkXE{'ZcL_lN\ǪaZ.RPlHUp5@ܐ0 [cZ IDAT+n !j]8]ʩ~oB֪HYdW:+8gZ˷+So}HA=|UbN[l,rD!^Sj{lУuqY_ `{[׾6 ~.%]@6eTPODBxk*[zZG}/HB@LyT")M{ݡV;Eh8/5DR(4PSZ Y7c:GU2ҟ/۩u'Y9kīk0ϪtO]jt ˶#s\7BxZE*Kb.3`@o*ዤwT}{hdO# x-@>9n.:BVT{=ͭǼwsΜ=6凁=@CVTxꩧ v5V>IMGPE:-j+&w ~>?ikC. ?mHY+@9P9?yXɳU)v>o x_enz )UHe׈4F`"c eG.yq'Vfoؙ RTVm]c @4"%yͿ7EgB@i2ߟv~\N{g7sc[E%vMzb?I}y7p#ٰ4p3w_-ﱊ]~ӅlP+PE[,?4bپfY6JJfz:-RxsSۨ[;q `ʴwלaz1LH^GxRrc?S?X'7v4w"EXCL#Kd:8Nbmee,K<ywr} Z@#1oX]쇥]oVU,L GJx%|mR /[C 5!z A` 4 Rrj?C38z4STzqʡ0'`/PMIKve I ,atJe_%V!0U@8] `T(/* R LGy)_VQf-~ !N~_cDZ*˝Aѹ)@07dBp'4.n&,*k,/β)4dhimb/R,LQ^^v_qKem9&ptxm7iR YŢ8͟!}pY&sK/}Kmon')/]BRtĠYG62AU!eO+B!7$ɲ5/ȵr-kVod#3đ QR!AҏIA#H # 9 9pޗ+ʌ̌}yՇ_37KêGT\F8Ӵ.U3t]:rc&D2Q& |_y @-Y)ioft~Q9?R0{XfUyY~T n}0E˫*OlZ&g 7@y@@5;K8ȒГr2v4Ld7ޔ\uLwn􂣻xa!,e7l.#r||#Jm~t uvqΧ#+| bf*Q&~U*rq)+!`I ?awtz+K,`Ƭ4 >qEXHbOlyҰ0{!?8%@zA!p$qbpNI C2:\U˛fñ Cs }cu8_̝-(9a{{@DxWO~|NIWui~\@# x"ӆ^cyXY,M"e%(XPT,F#ݯ̰ 1pA?F|LeNgA}Nˏf0vY/t=MsAt-b{>+ =mɗ ~ަVb\5A[z֝8Ko&s0^q!(bУk4`G)j p}q:֯ㆥ2xJ7y蛐aǔC\-ldϿeE T~<&5Fm|6֭8,0{)fmɷ??@"پ7{T )*}ՆD0f;:, DC8߯FRQLAD5y{\O۠%rrF8|Kd T*Zd) eWQ*KVL9HE3zP;ZӍTݻ7>;^<j'y|gLDxڻヒ PQG@# hA`sGgm Oq@*7h&rr@( 6:gfV﨟%yw8ng3ITOrGkqV.Vu>>t ST $)]c+u}lmⓏֱfM?(W3`1ToE@jo 2+Y 9ܐIQJXO#Y_dωE9_TݫJtz@Tqh3 ̱F4}qɒrh~ܓ9aoq@:Ho2Цrj<>PUn;5\j>=(W ɷz+OW{xvKn [Js"U 6b=l2SX ?v&Բ;%IEVoq<ս>kxr# lNGn^.0ڳSCx8J#穝F/P"۸-"{,.\d*pZ[};߅ ],ĥB,g-U HY\sq0Fc0O*;玳F}4t;ʹ`ںK\$Wl/:v m^'Xx5:ԫNem cgv;^yz9 %?vvv"t5?v>SCv֣.=63sem7½7 1|˩9"b_H*=m- YAn8fsݞCҞ☱^$IiߺD >~pY@BҞAj2lߢҀk \sA}ܹswn^KŋH[0@w"0}+fF DZV]r|VI)s8¥xQ>DFAΡ]sbK­g={ݑ53"se|y Jl zYPIt!B^f@H<'sh^$tgR^j)6 %S`+;i"M&gϩʣ8(/:b6 Zk4-D;@t: gOua`tHG .Da*n:Dsʍs=wS|Gi?pYk?.˓y'1$=@+I 6g&W>GKڿ͇k^H0 `]i+h̀1]DX>{ ?W 1l\]dY]oo/72PHcoW3#K`2k{7~}td qrŻo3o"]AОVU\{RwkO8ʙ8TY̎pavnOO j~ ϧ}B;F9iϕsY&=9wZGb]? x嫸iHS kkkxꩧ`s;w ٲ}>C~^ ^ J߄;vgBEr=FN.I2|>XqXl+X\p(!jsGPIrdݿwܙ/Umc]@%u]2Lw÷ pI\^