openmsx-catapult-19.0/0000755000175000017500000000000014460024013014265 5ustar manuelmanuelopenmsx-catapult-19.0/desktop/0000755000175000017500000000000014460023655015751 5ustar manuelmanuelopenmsx-catapult-19.0/desktop/openMSX-Catapult.desktop0000644000175000017500000000044214460023655022450 0ustar manuelmanuel[Desktop Entry] Encoding=UTF-8 Name=openMSX Catapult Comment=Graphical interface for openMSX Type=Application Exec=%INSTALL_BASE%/bin/catapult Icon=%INSTALL_BASE%/resources/icons/catapult.xpm DocPath=%INSTALL_BASE%/doc/manual/index.html Terminal=false Categories=Application;Emulator;Game; openmsx-catapult-19.0/GNUmakefile0000644000175000017500000000002614460023655016350 0ustar manuelmanuelinclude build/main.mk openmsx-catapult-19.0/doc/0000755000175000017500000000000014460023655015045 5ustar manuelmanuelopenmsx-catapult-19.0/doc/release-notes.txt0000644000175000017500000000200314460023655020347 0ustar manuelmanuelRelease Notes for openMSX Catapult for openMSX 19.0 (2023-07-25) ================================================================ Catapult release to match openMSX 19.0. This release we again didn't change much, but is the full list of news: - migrated to wxWidgets 3.2.1 and libxml2 2.9.14 (latest stable releases) - adjusted code for changes in the openMSX type command Known issues / caveats: - not feature complete, especially for newer features you will have to revert to the openMSX console (press F10/Cmd+L) or the OSD menu (MENU key/Cmd+O) openMSX Home Page: http://openmsx.org/ Project page on GitHub: http://github.com/openMSX/ Contact options: - Talk to us on #openmsx on irc.libera.chat. - Use the forum on http://www.msx.org/forum/semi-msx-talk/openmsx - File a ticket on https://github.com/openMSX/wxCatapult/issues (for Catapult) - File a ticket on https://github.com/openMSX/openMSX/issues (for openMSX) Have fun with your emulated MSX! the openMSX developers openmsx-catapult-19.0/doc/release-process.txt0000644000175000017500000000457514460023655020715 0ustar manuelmanuelopenMSX Catapult Release Process ================================ This is a kind of recipe for doing releases. Having it written down decreases the chance of forgetting a small but crucial step during the hectic work of getting a release out. Preparing for a release ----------------------- - Tell all developers to commit only fixes. - Verify the documentation is up-to-date. Currently most documentation is in "doc". - Write release notes in "doc/release-notes.txt". - Add the change list to "doc/release-history.txt". Creating a release candidate ---------------------------- - If you're creating the very first release candidate for this release, use a version number that ends with -rc1, so 1.2.3-rc1. Only the final release will be without the -rc suffix (in both tag and version numbers.) - Update the copyright year in src/catapult.rc and src/wxCatapultFrm.cpp - Edit the version number in build/version.mk: VERSION=1.2.3 The version should be the version of openMSX for which this Catapult release is intended. Set RELEASE_FLAG to true. - Update build/version.py similar to build/version.mk. - Update the release date in "doc/release-notes.txt" and "doc/release-history.txt". - Don't forget to commit and push all these last changes before tagging! - Tag the git archive: git tag -a RELEASE_1_2_3 -m "Tagging release 1.2.3." git push --tags - Get the tagged code from this URL: https://github.com/openMSX/wxcatapult/archive/RELEASE_1_2_3.tar.gz This step makes sure that exactly the tagged code will be released. - Extract this archive and chdir to the herewith created wxcatapult-RELEASE_1_2_3 directory - Create the distribution tar.gz file: make dist - Save the created file somewhere you can find it again: mv derived/dist/openmsx-catapult-1.2.3.tar.gz /openmsx-catapult-1.2.3.tar.gz This is the release candidate. Sanity check on release candidate --------------------------------- This is a small check to be performed by the release coordinator. - Test build: * Compile and check for warnings: make * Test installation: su make install - Start openMSX Catapult with the supported openMSX releases. - Verify the version number in the About dialog. If the sanity check is passed, distribute tar.gz to fellow developers and testers. Post-release ------------ - Set RELEASE_FLAG to false in build/version.mk and build/version.py. openmsx-catapult-19.0/doc/manual/0000755000175000017500000000000014460024013016307 5ustar manuelmanuelopenmsx-catapult-19.0/doc/manual/index.html0000644000175000017500000000231514460023655020320 0ustar manuelmanuel openMSX Catapult Manuals

openMSX Catapult Manuals

The openMSX Catapult documentation is split into a number of separate documents, each with their own purpose and intended audience.

Compilation Guide
This guide describes how you can get the openMSX Catapult sources and compile them. If you downloaded a binary release, you can skip this.
User's Manual
This manual describes all the things you can do with openMSX Catapult once it is fully running.

Please also read all documentation of openMSX itself. You can find it here.

To the openMSX Home Page.

openmsx-catapult-19.0/doc/manual/user.html0000644000175000017500000011252514460023655020174 0ustar manuelmanuel Catapult User's Manual

Catapult User's Manual

Contents

  1. 1. Introduction
    1. 1.1. New Versions of this Document
    2. 1.2. Purpose
    3. 1.3. Contributors
    4. 1.4. Revision History
  2. 2. Starting Catapult
  3. 3. A Quick Tour
    1. 3.1. Session Page
    2. 3.2. Miscellaneous Control Page
    3. 3.3. Video Control Page
    4. 3.4. Audio Control Page
    5. 3.5. Input Text
    6. 3.6. Status Page
    7. 3.7. Global Section
  4. 4. Using the Session Page
    1. 4.1. Selecting Hardware
    2. 4.2. Selecting Software
    3. 4.3. Updating Media
  5. 5. Using the Control Pages
    1. 5.1. Miscellaneous Control Page
    2. 5.2. Video Control Page
    3. 5.3. Audio Control Page
  6. 6. Input Text
  7. 7. Status Display
  8. 8. Using the menu
  9. 9. Contact Info

1. Introduction

1.1. New Versions of this Document

The latest version of the openMSX Catapult manual can be found on the openMSX home page:

http://openmsx.org/catapult-manual/

The latest version of the openMSX manual can also be found there:

http://openmsx.org/manual/

You can also use these URLs to get up-to-date versions of the hyper links if you printed out this manual.

1.2. Purpose

This manual is about Catapult, the (optional) GUI for openMSX. You can find more information about openMSX on the openMSX home page. You can also download Catapult and the emulator itself from there.

openMSX is in alpha state, which means that some things work but not all features are implemented yet. Many emulation features are implemented, but in terms of user interface it is rather bare bones. However, since the emulation is already pretty good, it would be nice if non-insiders would be able to play with it, too. To allow people to use openMSX without having to find all options the hard way, Catapult was created. Like openMSX, Catapult is still in development and doesn't support all features we would like it to, but still it has become a great addition to openMSX. This manual assumes that openMSX has already been set up. For further details how to setup and use openMSX please refer to the openMSX manuals .

Although Catapult was designed to be self explanatory, we still decided to create a comprehensive manual to familiarise people with the various pages and controls.

Disclaimer: We do not claim this guide is complete or even correct. What you do with the information in it is entirely at your own risk. We just hope it helps you enjoy Catapult (and with that openMSX) more.

1.3. Contributors

The following people contributed to this document in one way or another:

Thanks to all of them!

1.4. Revision History

This section gives an overview of the changes that were made to this document. It doesn't contain every single modification (use the CVS log for that), only the big picture.

2004-05-05: Herman Oudejans
Initial version.
2004-10-05: Herman Oudejans
Updated for version 0.5.0
2005-02-07 Herman Oudejans
Updated for version 0.5.1
2005-12-30 Manuel Bilderbeek
Updated for version 0.6.0
2014-02-12 Manuel Bilderbeek
Let's stop keeping this revision history, just look at the Git Log.

2. Starting Catapult

On a Unix-like system, if you use a recent KDE or GNOME, you can find Catapult in the menu, under Emulators or under Games. If this does not work for you, you can start Catapult from the command line by simply typing:

catapult

Windows users can simply double-click on the Catapult icon in the start menu if they have chosen to create it during setup. If not, simply find the executable and start it anyway you like.

When you start Catapult for the first time it will ask where it can find openMSX. To make it as easy as possible, Catapult first checks the default locations for openMSX to see if the executable is there. If it is, you only need to press the OK button. If it is not on the default location, you will need to locate it yourself.

At the bottom you can uncheck the check box if you don't want to run the hardware configuration test. We recommend to leave this on though: it will check which MSX systems will work with openMSX and which will not. The ones that are not working are probably missing some system ROMs. See the openMSX Setup Guide on how to deal with that. By default, the list of extensions and MSX machines that can be emulated, will only show hardware that is found to be working. You can change that in the View menu. After having installed more ROMs, you can always run the test again via the "File - Test MSX Hardware" menu option.

After you press the OK button, Catapult's main screen appears, as shown in the picture below.

Main Screen

3. A Quick Tour

The main screen of Catapult consists of 6 pages to separate different kinds of functionality. This creates a much clearer interface than trying to put everything on one page. This Section introduces the different pages and how they can be used. It also tells about the global section of Catapult.

The next chapters discuss Catapult's functionality in detail. You will find links in this chapter to those detailed explanations.

3.1. Session Page

This page lets you select which MSX machine you want to use, what extra functionality that machine should have and what kind of media (disks, cartridges, cassettes and hard drive images) you insert. This is the most used page of Catapult. [details]

3.2. Miscellaneous Control Page

The Miscellaneous Control Page ("Misc Controls") contains the controls that can't easily be put in one category. This page contains three types of controls:

[details]

3.3. Video Control Page

This page contains all controls to select how openMSX should display the MSX screen. Some of this controls can cause openMSX to slow down. This page also contains some controls to let openMSX make screen shots. [details]

3.4. Audio Control Page

When Catapult starts, this page looks completely empty, but once openMSX is started, this page contains a mixer of each sound device available in the MSX. This page also contains some controls concerning MIDI and PCM wave input. These are only enabled when MIDI ports are available in the currently emulated machine and/or extensions or when the Panasonic FS-A1GT MSXturboR is being emulated, respectively. [details]

3.5. Input Text

This page can be used to 'type' text in openMSX. Any text typed or copied into the text field can be typed into the emulated MSX including newlines. [input]

3.6. Status Page

This page contains the messages Catapult gets from openMSX. This can be informational messages like where the screen shot has been saved, but it can also show warnings or errors that occur. In case of an error, Catapult automatically selects this page. [status]

3.7. Global Section

The global section can be found in the bottom of the Catapult screen. It contains the Start/Stop button to start or stop openMSX. It also contains a representation of the LEDs of the MSX. Not all MSX machines have these LEDs, so don't be alarmed if some LEDs don't appear to be working. At the bottom of this section, you can find the status bar. It displays information about whether or not openMSX is running and the number of frames openMSX displayed per second (fps).

4. Using the Session Page

Below, you can see a screen shot of the Session Page. The left side is used to select the hardware of the MSX and the right side specifies which software should be inserted into the MSX. Screen shots in this manual were taken in Windows XP, Windows 7 and Windows 10. So, we're mixing systems here... in general, controls might look a little different but should still be easily recognisable.

Session Page

4.1. Selecting Hardware

In the top-left corner, you can select which machine openMSX should emulate. The fact that a machine is listed, doesn't mean that it actually runs. If a machine needs system ROM images and they are not available, that particular machine just won't run. Catapult won't detect this lack of ROMs. You will see the error message showing up in the Status Page. However, you can let Catapult run a test on all found hardware configurations via the "File - Test MSX Hardware" menu option. After testing, only working configurations will be shown, unless you change this in the "View - Display Broken Configurations" menu option.

More about machines and how to set them up in the openMSX manual.

Below that, you can select one or more extensions. Extensions are simply MSX cartridges (extensions to the MSX system) that you can plug into the emulated MSX. This can be e.g. sound chips, memory mappers or drive controllers. You can select as many extensions as you would like in Catapult, but openMSX might make a problem. Some problems that can occur are:

Note that with Catapult it is not possible to select one extension multiple times. We don't expect this to be a problem, however.

More about extensions in the openMSX manual.

4.2. Selecting Software

The rest of this page is used for inserting media into your MSX. There are three types of media you can use:

disks:
Most MSX2 or higher machines are equipped with one or more disk drives. Moreover, openMSX supports a few external drive controllers as extensions. If a machine doesn't have a disk drive and no such extension was added, Catapult still lets you use these fields. openMSX, however, will in this case give an error message. Disks can be changed while openMSX is running (see below). See the openMSX User's Manual for more information about using disks.
cartridges:
Any MSX supports cartridges. These are simply put in before the MSX is started. openMSX also supports replacing cartridges while openMSX is running. Be careful: this will cause existing extensions in that slot to get removed, without Catapult showing that to you!
See the openMSX User's Manual for more information about using ROM cartridges.
cassettes (tapes):
Most MSX1 computers depend on a tape recorder (or data recorder) and almost all other MSX computers support cassette as well. Like using disks, when a machine doesn't support cassette you can still fill in this field. openMSX will just ignore it. In this field you can input wav-files (cassette sounds) or cas-files (a binary representation of the cassette). Below the cassette input, there are three more buttons. 'Rewind' simply lets you rewind the tape to the start. 'Record' will set the cassette recorder in recording mode. Currently, openMSX only supports recording to a fresh WAV image, so you will be prompted to input a new file name. You can also let openMSX generate a name automatically via the menu under the 'Cassette' button. The 'Play' button switches the cassette recorder back to play mode. This will end any recording and close the recorded WAV file, if any. It will also rewind the current cassette, so that you can load from it, if you like. You can of course also select another cassette image.
In the cassette menu, you can also disable Motor Control. Normally, an MSX uses the 'remote control' system of a good MSX cassette recorder. This means that the tape is only played when the MSX is actually loading something from it. By disconnecting the 'remote' plug of such a cassette recorder, the recorder will always play if the play button is pressed. If 'Motor Control' is disabled, this means that the 'remote' connector of the virtual cassette recorder is unplugged, making the tape run even if the emulated MSX is not loading something. See the openMSX User's Manual for more information about using cassettes.
hard disk images:
If you use an extension with the current machine that implements a hard disk drive, you can select the non-default hard disk image to be used here. If none is selected, the default will be used instead. If no hard disk extension is present, Catapult still lets you use these fields. openMSX, however, will in this case give an error message. Hard disk images are only safe to be changed while the emulated MSX is powered off. That's why Catapult will not allow you to change hard disk images while openMSX is running. See the openMSX User's Manual for more information about using harddisks.

Every media input box is equipped with a history. Just click on the down arrow to open the history. This way you can easily select the most recently used files. Catapult remembers the last 25 items of each media field.

The button groups on the far right are to insert or remove the various types of media. The buttons on the left of these groups present a file selection window, in which you can select which media file should be used. The buttons on the right are to eject media. No conformation is asked for this.

The buttons left of the media field can be used to show a pop-up menu with some extra options. Options shown in these pop-ups are:

Browse for disk/ROM/cassette/harddisk image
These options are the same as when you use the browse buttons on the right of the media fields
Browse for disk folder (disks only)
Instead of selecting a specific disk file, you can also select a complete directory. This option is in openMSX known as DirAsDisk. Please check the openMSX User's Manual for the limits using this feature.
Eject disk/cartridge/cassette/harddisk
These options are the same as when you use the eject buttons on the right of the media fields
Select IPS Patches (disks and cartridges)
Instead of inserting a trained or translated disk or ROM image, you can also select one or more patches which will be applied after loading the image. Choosing this option results in a special dialog in which you can add or remove patches and change the order of the patches. The patches are always applied in the order shown. If openMSX is running, disk patches are immediately applied when selected. This menu item will show the number of patches selected.
Selected cartridge type (cartridges only)
If a cartridge is not available in the ROM databases and openMSX can't detect the type properly, you can use this option to force a cartridge type. Please contact us if you find ROM images that are incorrectly detected. See 9. Contact Info for this. This menu item always shows a short representation of the type selected.
Rewind cassette (cassette only)
Choosing this option is the same as pressing the 'Rewind' button
Motor Control (cassette only)
See above for an explanation of this.
Auto create Cassette file for recording (cassette only)
See above for an explanation of this.

4.3. Updating Media

Catapult uses two different kinds of updating schemes. When openMSX is not running and you change some of the media input boxes, nothing really happens until you actually start openMSX. At that moment, the used values are added to the history and the history is saved. Of course, these values are then used in openMSX. If openMSX is already running and you change a disk or tape, this will be updated according to the following criteria:

In both cases, the history is updated.

Again, do note that updating cartridges while extensions are inserted, will mean that the extension in that slot will be removed and Catapult will not show this in the user interface!

5. Using the Control Pages

This section explains what you can do to control many aspects of openMSX. Catapult is using the so-called CliComm interface. This interface allows you to send messages to openMSX to change a number of settings and parameters. openMSX, in its turn, can also send messages to Catapult telling if any setting or parameter has been changed and if requested commands have been processed without problems.

5.1. Miscellaneous Control Page

Below you see a picture of the Miscellaneous Control Page while openMSX is running. If openMSX is not running, most controls will be disabled. (You can still set up what's in the joystick ports.)

Miscellaneous Controls Page

The top section of this page consists of a number of controls with which you can influence the speed and maximum frame skip setting of openMSX. The upper row controls the speed percentage of openMSX. You can use the slider to select a speed between 1 and 500%. You can also directly input the speed into the input box. Finally, the buttons on the right are to set the speed to respectively 100% and to the fast forward speed. If the "Fast Fwd" button is pressed, openMSX runs at the fast forward speed, which can be tweaked with the Fast forward speed slider up to 10000% (100 times the normal speed). Very useful to fast forward demos. For the case of loading from tape, disk or LaserDisc taking forever, you can tell openMSX to go as fast as possible automatically during loading using the "Fast Load" button. If the selected speed is higher than your PC can manage, openMSX will try to go as fast as possible. The next rows selects how many frames may be maximally skipped to maintain the chosen speed.

In the centre of this page, you can find the so-called action controls. These control the behaviour of the MSX directly. The power control can turn the MSX on or off. When Catapult starts openMSX, the power is always on. The Reset button resets the MSX. The Pause button pauses the emulation completely. Finally, the firmware button lets you choose whether or not you want to enable the firmware in the MSX you are emulating (if available).

The bottom of the page allows you to hook devices to the MSX connectors.

For each joystick port, you can choose between a mouse, keyjoysticks, the Arkanoid pad, a track ball, a touch pad, some dongles and any joysticks hooked up to the PC. If you select the same device for both ports, you get a warning and a request for confirmation. This allows you to choose which port the selected device should be in. These are the only controls that can be modified before openMSX is started. You can also adjust the Ren Sha Turbo speed (joystick auto fire) if the current MSX supports it (MSXturboR, for instance).

You can hook a Printer logger or SIMPL in the printer port. When you choose the Printer logger, you can also choose which file to use for the log by either typing it directly or browsing for it. If you plug SIMPL (a very simple Digital to Analog Converter) into the printer port, openMSX supports it as an extra audio device. You can also see a slider for it appearing it the Audio Controls page.

5.2. Video Control Page

Below you see a picture of the Video Control Page while openMSX is running. If openMSX is not running, most controls will be disabled.

Video Control Page

In the top-left corner, you can select which renderer is used by openMSX.

With the top-centre controls you can select which scaler should be used. You can select both the scaling factor and the scaling algorithm. Scalers determine how the picture is scaled to higher resolutions than 320×240 (if you use a factor greater than 1). Beware that some scalers might be slow. The algorithms are sometimes quite complex.

See for an explanation of renderers and scalers the openMSX User's Manual.

The VSync button toggles frame drawing synchronization with your monitor. It only has effect when using the SDLGL-PP renderer. More info in the openMSX Command Reference.

The Video Source control selects which video source is visible on the openMSX window. Usually it's just "MSX", but in some cases you might want to show the GFX9000 for instance (or Video9000, which has some features to superimpose the MSX image over the GFX9000 image). More info in the openMSX User's Manual.

The Deinterlace button toggles the deinterlacing effect on or off. When a real MSX is in interlace mode, you can see the screen flashing. When deinterlace is off you get that same effect on openMSX. If this toggle is switched on, the picture holds perfectly still.

The Limit sprites button allows you to let openMSX draw as many sprites on a horizontal line as necessary. With the sprite limit switched off, some games will stop flashing their sprites. This feature is on by default since that's closest to a real MSX. Some programs rely on the sprite flicker effect and may thus look bad if you turn this off.

The Full screen button switches openMSX to full screen mode. The first time you do this, there will be a warning how to get back. You can disable this warning if you want to. Windows users can also get back to windowed mode by switching back to Catapult (using ALT-TAB) and simply deselecting full screen again.

The Disable sprites button allows you to disable sprites in order to create screenshots of games without sprites, useful for making maps.

The centre part of this page allows you to modify the openMSX screen. All of these settings can be controlled by using the slider, typing the value directly into the edit field or using the reset button to revert to the default state. These settings are pretty much self-explanatory, or otherwise explained in the openMSX User's Manual. Glow is only supported in the SDLGL-PP renderer.

The bottom line of the page can be used to create screen shots from openMSX. As soon as a filename is available in the first box, the second box will show a counter. This counter is based on the number of files that already exist. So if test is typed and test0001, test0002 and test0003 exists, then the counter will show 0004. The browse button can also be used to set a filename, however the counter part will recalculated. So even if you browse and try to open test0002 the result will still be test0004. You can also override the counter by just typing another number, but as soon as you change the name again, the counter will be recalculated. Normally, there is no reason to override the counter.

Finally, pressing the Grab button takes the screen shot. If the filename and counter fields are empty, openMSX will take a screen shot with the default settings. The first time, there will be a message that the shot has been taken and that the location is shown in the Status Page, since no further changes are noticeable. You can disable this message when it pops up. So, again, the location of the screen shot taken will be shown in the Status Page.

5.3. Audio Control Page

Below you see a picture of the audio control page while openMSX is running. If openMSX is not running, the controls will be disabled and instead of the mixer a simple message will be displayed stating: "No audio channel data available".

Audio Controls Page

The top half of this page is used to adjust the volume and channel mode of the sound devices present in openMSX. When a slider is all the way up, volume is set to maximum and if it's all the way down that specific device is muted. The mode selector below each slider lets you choose between L(eft), R(ight), M(ono) and (O)ff. However, some sound devices only support S(tereo) (and Off, of course).

The bottom part of this page can be used to select where the sound I/O devices are redirected to. The top of this section lets you choose what is plugged into the MIDI-IN port. You can at least choose between --empty-- and midi-in-reader. Windows users also have the choice to use one of the native MIDI devices. The field besides the selector is only used when midi-in-reader is selected. In this case, this allows you to select from which file the MIDI input is taken.

The second row of controls is to select what is plugged into the MIDI-OUT port. Possibilities are --empty-- and midi-out-logger. Windows users can, again, also select native MIDI devices. The field right of it allows you to select in which file the MIDI output is stored in case midi-out-logger is chosen. In UNIX systems you might want to choose /dev/midi to route the MIDI data to a MIDI device you have connected to your system.

MIDI-IN and MIDI-OUT are only available when you're emulating a machine or extension with MIDI ports. If there are multiple MIDI ports available, only one can be controlled with Catapult.

Finally, the last row is to select the PCM wave input, which is only available on the MSXturboR GT. You can choose --empty-- or wavinput. In case of wavinput, the field besides it selects from which file the PCM input is taken.

6. Input Text

Below, there's a picture of the Input Text page.

Audio Controls Page

This page contains only three controls. The big text field can be used to type or paste any text you want typed out in the emulated MSX. All characters typed in this field will be typed in the MSX, so it could take a while when there's a large text. Any newlines within this field will result in an enter in the MSX. The text is transmitted to the MSX as soon as the type button is used. The text will not be automatically cleared, so the same text can be used multiple times. Finally, the clear button clears the text, so you can start over. A final note: this feature may not work entirely correctly for Japanese and not at all for Korean characters.

7. Status Display

The status display of Catapult consists of four different elements:

The Status Page displays all messages given by openMSX. This includes informational messages, but also warnings and errors and output from the debug device (see the openMSX User's Manual for more information) if it is configured to output to stderr. Informational texts are displayed in black, warnings are displayed in dark red while errors can be recognised by their bright red colour. This display is cleared whenever openMSX is started.

Status Page

The LED status display in the Global Section shows the status of the MSX LEDs at any given time. Which LEDs are used depends on the type of MSX computer openMSX is emulating.

The final part of the Global Section is the status bar, at the bottom of the Catapult window.

On the left side of the status bar you can see whether or not the emulator is running. This can be convenient if you have multiple Catapults in use. It will also tell you if openMSX is paused.

Finally, on the right side of the status bar, you'll find the frame rate display, which shows you how many frames openMSX is displaying per second. When the emulator runs at 100% speed, this should be 50 or 60 fps (depending on the current display frequency of the MSX). When you increase the speed of openMSX, the fps count should also be increased. Bear in mind that when using SDLGL-PP (OpenGL), your video driver may force the fps to your monitor refresh rate to avoid disturbance while drawing. Also, if this display shows a frame rate below 50 fps, your computer is actually a bit to slow to generate all frames in time with the current settings and thus frames are being skipped.

8. Using the menu

Although most of the Catapult action is done using the various pages mentioned above, there are a few options only available through the pull down menu. These options are described briefly in this section.

Test MSX Hardware
This will start the hardware configuration test. Use it to check which openMSX hardware configurations are actually working. See also 2. Starting Catapult and 4.1. Selecting Hardware.
Quit
This closes Catapult. If there is a running openMSX (started by this instance of Catapult) it will be closed also.
Edit Configuration
Here you can change which openMSX version Catapult is to start, if you installed more than one. See also 2. Starting Catapult.
Load openMSX Settings
Here you can browse for an openMSX settings file to be used. This settings file will be used the next time you start openMSX. This option is not saved when you close Catapult.
Save openMSX Settings
This option is only available when openMSX is running. You can ask openMSX to save its settings to the default location (which is share/settings.xml).
Save openMSX Settings As
This option is only available when openMSX is running. You can ask openMSX to save its settings to a specified file.
Save openMSX Settings On Exit
When is option is on (indicated by a check mark in front of it), openMSX will save its settings as soon as it closes.
Display Broken Configurations
Check this if you want Catapult to display openMSX hardware configurations (machines and extensions) which were found to be not working when the Test MSX Hardware feature was last used. By default it is unchecked, which means the broken configurations are hidden, so that you cannot accidentally select one.
About
Shows information about Catapult including the version number.

9. Contact Info

Feedback and bug reports are always most welcome!

There are several options:

  1. Go to our IRC channel: #openMSX on libera.chat and ask your question there. Also reachable via webchat! If you don't get a reply immediately, please stick around for a while, or use one of the other contact options. The majority of the developers lives in time zone GMT+1. You may get no response if you contact them in the middle of the night...
  2. Post a message on the openMSX forum on MRC.
  3. Contact us and other users via one of the mailing lists. If you're a regular user and want to discuss openMSX and possible problems, join our openmsx-user mailing list. If you want to address the openMSX developers directly, post a message to the openmsx-devel mailing list. More info on the openMSX mailing lists, including an archive of old messages, can be found at SourceForge.
  4. Create a new issue in the openMSX issue tracker on GitHub. You need a (free) log-in on GitHub to get access.

In any case, try to give as much information as possible when you describe your bug or request.

openmsx-catapult-19.0/doc/manual/compile.html0000644000175000017500000007411714460023655020652 0ustar manuelmanuel openMSX Catapult Compilation Guide

Catapult Compilation Guide

Contents

  1. 1. Introduction
    1. 1.1. New Versions of this Document
    2. 1.2. Purpose
    3. 1.3. Contributors
    4. 1.4. Revision History
  2. 2. Getting the Source Code
    1. 2.1. Released Version
    2. 2.2. git Clone
  3. 3. Compilation
    1. 3.1. Build Tools
    2. 3.2. Libraries
    3. 3.3. Compilation of the Libraries
    4. 3.4. Compilation of Catapult Itself
  4. 4. Installation
  5. 5. Next Steps
  6. 6. Contact Info

1. Introduction

Note: throughout this guide we will refer to Catapult as wxCatapult. Both are the same in every case. The openMSX team used wxCatapult as an internal name where Catapult is the application name.

1.1. New Versions of this Document

The latest version of the openMSX Catapult manual can be found on the openMSX home page:

http://openmsx.org/catapult-manual/

The latest version of the openMSX manual can also be found there:

http://openmsx.org/manual/

You can also use these URLs to get up-to-date versions of the hyper links if you printed out this manual.

1.2. Purpose

This guide is about Catapult, the (optional) GUI for openMSX. You can find more information about openMSX on the openMSX home page. You can also download the emulator itself from there.

openMSX is in alpha state, which means that some things work but not all features are implemented yet. Many emulation features are implemented, but in terms of user interface it is rather bare bones. That's why we decided to create a GUI for it, so most users can use it a little bit more comfortably. For people who want to (or have to) compile Catapult themselves, we have written this guide. It explains how you can get it running on your system, i.e. how to get the sources and compile them. Note that some software distributions may have packaged openMSX Catapult and will enable you to install it directly using package management tools. We refer to the documentation of the tools of the distribution you are using to install openMSX Catapult. If you use such a package, you can skip the largest part of this manual and start reading at chapter 5. Next Steps.

This guide describes how you can get the openMSX sources and compile them. The level of support for compilation depends on the operating system:

Linux
Most openMSX developers run some form of Linux, so this is the platform on which compilation is supported best. Compilation instructions for Linux are mostly also valid for other UNIX-like operating systems.
Windows
Most Windows users will just download the binary release. But if you want to follow the latest developments or like to play with the code a bit, it is possible to compile Catapult on Windows yourself. The former main Catapult developer used mainly Windows, so compilation is very well supported on this platform as well. This manual gives a few pointers in the right direction for that.
FreeBSD
Catapult was compiled successfully on FreeBSD 4 and 5. FreeBSD is not a platform we support officially, but whenever a user finds compilation problems on FreeBSD, we fix them, so usually FreeBSD compilation should work.
macOS
Unfortunately, we have not been able to get Catapult working on macOS. There is a port of wxWidgets (the base of Catapult), but version 2.4 doesn't support toggle buttons yet and we did not get the menu working (amongst other things) with version 2.6 and after that we gave up. It may work just fine with 2.8 or 3.0, we don't know.
Other operating systems
Catapult theoretically can compile on every system where you have g++ (the C++ compiler of GCC) and the required libraries are available. However, in practice every system is slightly different and a new operation system will not work out-of-the-box. Still, it shouldn't take much effort to make Catapult build on a new OS.

If you need help compiling Catapult, please contact us. If you needed any modifications to make Catapult compile, please send those modifications to us, so we can make Catapult more portable.

Disclaimer: We do not claim this guide is complete or even correct. What you do with the information in it is entirely at your own risk. We just hope it helps you enjoy Catapult (and with that openMSX) more.

1.3. Contributors

The following people contributed to this document in one way or another:

Thanks to all of them!

1.4. Revision History

This section gives an overview of the changes that were made to this document. It doesn't contain every single modification (use the Git log for that), only the big picture.

2004-04-25 Herman Oudejans
Initial version based on the openMSX manuals by Manuel Bilderbeek, Jorrith Schaap and Maarten ter Huurne.
2004-10-04 Herman Oudejans
Added touch.exe to the compilation packages
2005-02-06 Herman Oudejans
Updated this manual for compilation with wxWidgets 2.5 and for compilation with MinGW.
2005-12-30 Manuel Bilderbeek
Updates for compilation with wxWidgets 2.6.
2009-04-26 Max Feingold
Updates for compilation with SVN and Visual C++.
2010-06-20 Max Feingold
Updates for compilation with Visual C++ 2010.
2013-08-05 Patrick van Arkel
Updates for compilation with Visual Studio 2012 and the use of Git.
2014-02-12 Manuel Bilderbeek
Let's stop keeping this revision history, just look at the Git Log.

2. Getting the Source Code

Catapult is a sub-project of openMSX, developed using the tools GitHub freely offers to open source projects. The code is stored in Git, an open source version management system. Catapult is released at every openMSX release.

There are several options for getting the source code:

Released Version
These are tested versions, which should give you little problem compiling and running. However, they may not have all the latest features. Also there could be bugs that have been fixed since the last release.
Git Clone
Through Git you can get the same development version the Catapult developers are using. This is the bleeding edge: the latest stuff, which may be great or may be horribly broken. Usually Catapult Git compiles and runs fine, but we're only human, so once in a while it breaks. Also there may be changes that are not documented yet.

Releases are intended for general users. It might be a good idea to play with a release first. If you like what you see and want to get in deeper, you can switch to Git later. If you update often, it is best to use a Git checkout rather than a Git snapshot, because with a checkout you can do efficient incremental updates, saving network bandwidth and compile time.

If you downloaded a version that is either a lot older or a lot newer than this guide, it is a good idea to read the guide included in your downloaded version instead of the version you're reading right now. You can find the Compilation Guide in the directory doc/manual.

2.1. Released Version

You can download the latest released version of Catapult from our website (check the Download box).

After downloading, type:

tar xzvf Catapult-VERSION.tar.gz

in which VERSION is the Catapult version you downloaded, or use the file name you saved the tar.gz file with. The directory that is created by uncompressing the tar.gz file is called the top of the source tree.

Note: Windows doesn't natively support tar or gzip, but there are enough utilities available to decompress these sources anyway. Examples of such utilities are PowerArchiver 6.1 (free), Wiz (free), 7-Zip (free) or WinZip (commercial).

2.2. Git Clone

Getting a Git clone means you use Git to retrieve the latest version of the source code of wxcatapult. This means you will need to install a Git client. This package is usually named git. There are graphical front-ends for Git, but this guide will tell you how to use Git from the command line. More information about git can be found on the Git Documentation site.

Windows users might want to look at msysGit for a command line tool, TortoiseGit for Windows Explorer integration, or Git Extensions, which also includes Visual Studio integration.

With the following line (which is also displayed when you browse an openMSX Git repository) you can retrieve the latest sources (also works on Windows when using msysGit):

git clone https://github.com/openMSX/wxcatapult.git openmsx-wxcatapult

In this line you specified where you want to retrieve the files from (host name of the Git server), what project you want to retrieve (openMSX in this case), what module you want to get (wxcatapult.git in this case, which is the module that contains the sources of the wxcatapult program) and what directory it should be cloned to (we chose openmsx-wxcatapult in this example).

When compiling wxcatapult on Windows with GCC, it's often convenient to use C:\MinGW\msys\1.0\home\<username>\openmsx-wxcatapult as the target directory, as this is easy to reach from your MinGW Shell - it's your MinGW home directory.

If you're a developer, it makes sense to use this Git commandline:

git clone git@github.com:openMSX/wxcatapult.git openmsx-wxcatapult

For this to work smoothly, without having to type your password all the time, it's probably a good idea to read the GitHub docs about SSH keys.

The Git command created a directory called openmsx-wxcatapult for you in the current directory (or in the directory you specified in TortoiseGit). This directory is what we will call in this manual the top of the source tree. In addition to the wxcatapult code, you will see a hidden Git administration directory called .git. Do not mess with it (nor move contents of this directory around), otherwise Git will get confused.

If you want to update your source tree later, go to the top of the source tree and type:

git pull

or right click on the openmsx-wxcatapult directory in Windows Explorer and select "TortoiseGit -> Pull...".

3. Compilation

Before you can start compiling Catapult, you have to make sure your system has all the necessary build tools installed, as well as the libraries Catapult depends upon. The former you have probably already done if you have compiled openMSX itself before Catapult. The following sections list the packages you need.

3.1. Build Tools

For compilation, you need Python, a C++ compiler, and some compiler-specific programs. If you have compiled packages from source before, you probably some of have these installed already.

Python
A compact and dynamic programming language. The latest version should work fine.
C++ compiler
There are two compilers that are can be used to build Catapult: mingw msys's gcc and Visual C++. The gcc compiler builds Catapult on all supported platforms, while Visual C++ is an alternative option on Windows.

gcc

For compilation in Linux, you need Make and a C++ compiler. If you have compiled packages from source before (like openMSX), you probably have these installed already.

make
GNU implementation of the Make tool. Make interprets rules that define how a project should be built.
g++
The GNU C++ compiler. Version 3.2 or later is necessary; 2.95 is not supported for openMSX, so we also don't support it for Catapult. To be on the safe side: we recommend 3.4 or later.

For compilation in Windows you will need the combination of Minimal System (msys) and Minimalist GNU for Windows (MinGW). This is the same combination that is needed to compile openMSX on Windows. Although compilation works, the generated executable will be larger than the binary released version (which is compiled with Visual C++) and will also need the MinGW runtime DLL.

Visual Studio Community

Use this way to obtain the Visual C++ compiler:

Visual Studio Community 2022
This is a free (as in beer) IDE and development environment. It builds 32 and 64-bit binaries out of the box. This is the best option for developers looking to browse the source code or use other benefits of an IDE.

To build with Visual C++ from the command line, you need to open a Visual Studio command prompt. A shortcut for this can usually be found in your start menu.

When building with Visual C++, the result is a static executable with minimal dynamic library dependencies. Two platforms are supported:

Two different configurations are supported:

3.2. Libraries

Catapult depends on a few libraries. Using Linux you must have the runtime packages of these libraries installed to be able to run Catapult. The runtime package for the "Foo" library is typically called libfoo. Also, for compiling Catapult you need the development packages of these libraries installed as well. Development packages are typically named libfoo-dev or libfoo-devel. Windows users need to have the proper DLL's installed (foo.dll) to be able to run Catapult. Compiling in Windows means that you also need the lib-files (foo.lib).

If there are no binary versions of the required libraries available for your system or you rather compile them yourself, please see the next section for a few hints about compiling them from their sources.

Catapult depends on the following libraries:

wxWidgets
Formerly known as wxWindows, this is a cross-platform C++ GUI toolkit.
libxml2
XML C library, originally developed for GNOME.

Debian Linux

On a Debian testing system, the packages are called:

libwxgtk3.0-0v5
This is the main runtime wxWidgets library
libwxgtk3.0-dev
This package contains the necessary headers to compile.
libxml2 and libxml2-dev
XML C library, originally developed for GNOME.

Although other versions are available, we recommend to use wxWidgets 3.0, as we haven't tested much with other versions.

Microsoft Windows

Get the source code for wxWidgets. Version 3.0.5 is what we used, so that's recommended. Please read the next section for instructions for compiling wxWidgets from source.

For Windows, version 2.9.14 of libxml2 is recommended.

Unpack the source packages into the derived\3rdparty\src directory. This will generate a subdirectory called libxml2-v2.9.14.

For wxWidgets, unzip the sources somewhere else. For Windows, the compilation inside the 3rdparty folder is not supported at the moment.

3.3. Compilation of the Libraries

For some distributions it's necessary to manually compile the libraries. This section gives a few pointers to get it to work. It's not intended to be a substitute for the documentation supplied with the libraries. The wxWidgets sources can be found at wxWidgets Home and the libxml2 sources are available at Libxml2 Home.

Building the libxml2 library should be easy enough with the docs available. You can also use the libraries that are built in openMSX using the staticbindist method.

gcc

Compilation of wxWidgets couldn't be more straightforward. The docs provided are easy to follow and it takes only a few steps. There is no need to give any pointers here about this library as its documentation says exaclty how to compile it. We do give the proper configure command line here (although some options might be already default):

mkdir build-openmsx-catapult
cd build-openmsx-catapult
../configure --disable-shared --disable-unicode --enable-xrc --enable-controls --with-msw
make
make install

Visual Studio

The following steps build third-party libraries with Visual C++:

for 32-bit

for 64-bit

To build for other platforms or configurations, simply replace "Unicode Release" and "Win32" in the command lines above with the desired options, which are explained above.

It is worth noting that running msbuild from a command line is exactly equivalent to opening the respective solution files in Visual Studio and compiling the projects inside them using the IDE.

Note that there seems to be confusion on where the vcvarsall.bat is located... Microsoft documented it in this help page, but other people seem to disagree... Please check what is applicable for your case.

For now, wxWidgets has to extracted to derived\3rdparty\src\wxWidgets-3.0.5 (yes, that version and that specific location, otherwise the compiler won't find the include files for the library) and be built manually, after which the results must be manually copied to the proper place in the 3rdparty tree. Here are the steps with a Visual Studio command prompt in the location where the wxWidgets source files were unzipped (derived\3rdparty\src\wxWidgets-3.0.5).

For 32-bit

For 64-bit

Then copy the results to the Catapult build specific 3rdparty folder. E.g. for 64-bit, copy the contents of lib\vc_x64_lib to derived\x64-VC-Unicode Release\3rdparty\install\lib\.

3.4. Compilation of Catapult Itself

gcc

We have made compilation of Catapult itself as easy as possible. In most cases Linux or msys users only have to open a shell, go to the top of the source tree and type:

make

You can build different flavours by setting the CATAPULT_FLAVOUR environment variable. The following values are supported:

debug
No optimization and full debug symbols
devel
Some optimization but still full debug symbols available (this is the recommended flavour for testing)
opt
Fully optimized and no debug symbols (this is the default flavour)

Depending on how fast your system is, this may take several seconds to several minutes.

If you get errors during compilation, verify that you installed all required libraries, both the run time and development packages. If that doesn't help, or we forgot to list a library Catapult depends on, contact the openMSX developers. Make sure you provide us with the error message(s) you got.

Visual Studio

The following steps build Catapult with Visual Studio:

for Win32

for Win64

To build for other platforms or configurations, simply replace "Unicode Release" and "Win32" in the command lines above with the desired options. Note: the options should be consistent with the ones you provided for the 3rdparty libraries build, see above!

It is worth noting that running msbuild from a command line is exactly equivalent to opening the respective solution files in Visual Studio and compiling the projects inside them using the IDE.

Note that there seems to be confusion on where the vcvarsall.bat is located... Microsoft documented it in this help page, but other people seem to disagree... Please check what is applicable for your case.

4. Installation

To install Catapult in Linux, run the following command:

make install

This installs Catapult, by default in /opt/openMSX-Catapult. You can change this location by modifying the config.mk file. Note that only root has rights to write to system-wide directories such as /opt, so you may have to do su before make install.

Catapult has no individual installation system on Windows, so it's up to you to make sure the files are in the right directory. Please follow these pointers to make sure it should work:

gcc

If all went well, you should have Catapult installed now. You can test it by starting Catapult from the command line:

catapult

or by double clicking the icon in Windows.

Using Catapult should be intuitive, but if it's not, please read the Catapult User's Manual. This should give a complete description on how to use Catapult.

If you got stuck somewhere in the compilation and installation process, please contact us. The next chapter will tell you how.

6. Contact Info

Feedback and bug reports are always very welcome!

If you encounter problems, you have several options:

  1. Go to our IRC channel: #openMSX on libera.chat and ask your question there. Also reachable via webchat! If you don't get a reply immediately, please stick around for a while, or use one of the other contact options. The majority of the developers lives in time zone GMT+1. You may get no response if you contact them in the middle of the night...
  2. Post a message on the openMSX forum on MRC.
  3. Contact us and other users via one of the mailing lists. If you're a regular user and want to discuss openMSX and possible problems, join our openmsx-user mailing list. If you want to address the openMSX developers directly, post a message to the openmsx-devel mailing list. More info on the openMSX mailing lists, including an archive of old messages, can be found at SourceForge.
  4. Create a new issue in the openMSX issue tracker on GitHub. You need a (free) log-in on GitHub to get access.

In all cases, please provide as much information as possible when you describe your bug or request.

gcc

For experienced users: if you get a crash or a hang, try to provide a gdb backtrace. This will only work if you did not strip the openMSX binary of its debug symbols.

Another useful thing to do is to install the debug versions of libstdc++ and libc6, and then run openmsx with an LD_LIBRARY_PATH=/usr/lib/debug exported in the environment. This will give a more detailed stacktrace, especially in optimized code.

Visual C++

For experienced users: if you get a crash or a hang, try to provide a user dump. This will work for any openMSX binary, including pre-built binaries obtained from www.openmsx.org.

As of Windows Vista SP1 and later operating systems, you can find user dump files for crashed processes in the "%LocalAppData%\CrashDumps" directory. The default Windows crash dump behavior can be further customized as per MSDN.

To generate a user dump on demand on any Windows OS, please read KB286350.

openmsx-catapult-19.0/doc/manual/video.png0000644000175000017500000003620114460023655020140 0ustar manuelmanuelPNG  IHDRsEbKGD pHYsodtIME 8' IDATxOh#}Oe(H0r]W7H n?ӹH#Cfl܋B'cs|H6W""1c.aU +h%[\n(cA!),mɖ RO/~o4%s >?T(+x`t!?|OWu0n;GAA  qK1y CF7ңBWRmh u;-݂ ?P4e)=V3TR1WV*"ܓF K-EN]x\A߼ʫeu{txHۅke+hk5Oxӭm ykC֙,hٛ ]{4bgo=9^?WB9E\~-Z/ዂ_An]\\|˗Ij+W$J HVagZ!l%디+"g2͸P:Oퟓ,47eƫ!rKwe0`JfWwZsgwI.Wi6߭_m{4qm9"b/_?n$cKvr/A߻oZFOvaUp%WyAy唨_I W@WP[*$?gaΖ!D}yWCJ ]՞3`}=4m_TP^AWs3`D'x}gu˵&I,*0T]is\uALۉnxN)&_V۬wX{Ѽve={=IpPK>aeMS{Z4ӻqs\n%o7ᾋϔatm&\;Tz"~/R>uA% !S,]_ZP/ŴPS~mrᬊQ.w`̔䯝W>g/F'Uv;E0d,[_"b*u=Skm-ֵk56,FNd]|=:B+4|u\n~"+zO0ss||m vU)&L\&`΅BAϟ?ğzzY7t))u)R*eEaA}T8k*LG 5JS8@@AA  ?qߥd2I' @ >fa_bb<}} 7t899a h/O1>=JSG@AA V0dҽ^WҀ^fULN \ٟUG@BH6BJ8ˬ#OՎ=Sߍ ywtHFޓ쉹yd>Uیc1VXʹ8+e1YϨQh4M'zQ`Y-U.U>v6ql_L=TR5*w\$V,'2pdrg0o ^V[V9v9ʚY|t6OM>O2ov0ڝTnHqqJ#ݘ{(OdlOLHjH/_\bf6OYL|SoFC~f7,hiy'gXk?Oٞn~{mP[v oL]g}Mfs; ӟV_|ؗ/_Vӟ○ho%ż7K![)U:~T<Ћ׶_v^T_Q^Fb?MƟomSUMd}VsN Ӷcyp^Ye Ic|}^CtQfuyѪcY:CWB1X~r\xv!-Xc$,jw\7%J;εz][ן6вv=K.qxN5efrV@ i6rsYrȝ0.j*YL4ƻcmsŨfu>C}~LTh5}Ŭ^-&~gwcg786B#7{{,} nՈf*tVQZR*(3`[Nw}i֘VPp)3d~ݩpz#ZoV`X;1o;gA9~*3Ɵ\}0OI~/¥3~Sh9J+-\WMڎ⩊]zskpȱؗ\TRIGo^1?|b߼N(vَɷ򲕹8ZP36Ͽyxo+/ia26ߎĽ%u/oVa2=zcyE7ߪ'}cS=ΰk3t7szJ;LJyw_$e}>jtV-O@*UU{sZЁG:İ~;_m)07TөVg65YA~*, 'ϤV{xc O) '͉7~Ub[^ il%)_w^~R˺Ȕm_ ~-HDV3@YNپ9L5ʛE/Gǒ'ěC[=VA[~{Kx{~07\ޔ^ws6e?h:|yud/6ћc# Y$Ũqu>9x*~I ^]^ /TĮmfӸ\Ǎ9YqyuVip)N)vScJnNQE2 Kgr{`\_nׯ||֬5jg6':4Q̮;Z~\H38/rÂ|l7xɏ߁ Qh4MfJKF()ΰfVa'7u?Y'#?O?t==c^1;Meo!f\eezyf2Z]nYn1אzϢ:֏ nS'q4GvO 6KY:I`]iӾwZ'cZ!mƕy ;=q< VRLOO!kkf,TZ!ïr6 !_fKy독ڭs:$|Jwن|~%IU_?ǿzbeMWMCi69c:˭t7yM$t_jv6еx}ʍϒ!W~E|S纼hձ}jsơNn}5G?%gű;A :Bt)r6o *|)?]}S~rO{vW0e۱]:X(~nC`7MtyYYW2ILْZ^xk1"TøixbT,Ky15~jlܶ:6'?n~ ~RS/g]բq\Vre>ӱc=wxG.I?Yi5*4˾m\btuįDmYG:X5|qٰ\M_E*W :3xݳo^AXi7ZqMʓ7e3`Nf|v3&cOl5= mco~j_9dӢ.'s}w<w'83~9tsk6bJy-W> ϧ3 _YrΜaeMS{Zj3sXR!1k2&1]Or?N~>NSOn6vc=wxZ!WDs\n%zWqϔLUɫ˪ԢXVz\_DRWN˾ЃU1QPYd@ j1~5;&=پaVn| վ27_^̦ؖk 8jc=wpKEOq>-<;E0d,]T8k].ZM}y:]y^?kVo^ÇzG,ck2&ׯ WΫ0 CơUj6n[{o͏Or?VyWZ]yY}Cqcqc=ss||m |;_'ttDMGZ 24Y2&GyL6ɤ:99Q xbj0sP%'GA7t>M끖A@P#gӑ /=uFAA  qt5/..-!8U-JS8@@AA  q  ěK+d2B馏b^W=^h!a )ݷJ+te=רooLGwGV@ևHw5 ;{J1yR4e zPڏ(5\:[޳iܓ҄i! -53n]o+<רF+ZX\[fκ2J(Va^zRW0ҍ\ t}tܦ:m+l!ն}5B\(sI{Q8@@AA<fnknq0#`Y[[u~}ǒ$A!0~qfIϖEi #4~g:l' ~-gt£?~J'`(PЅtȐaTyc%:S?a*eWd1bP*h3F+T7eƫdIδB~)e];+UDzm,=0O/ XZΰfx`::a[vic7}Dp^qIO[Z:*)N9v)ESݘujGCCǪ2;jUj˩6grrOq׵] .,eLTiݗR0zv)r6_y,T.A鎯9i\Z(Z8IerqkȗtbeC/TN3ZeewO;WR&͉}j=y/]բq\Vy {xYSf1 #Zo6XkgGwմ>*t-S*(".kFܟ\̆.46vKҞy-74.+(ohjjW:}/.M/+sU_DOH/_ k/Qސ6gj'f:V3KZg6'feLjVz4N4...K?6+!p'kkkzYd2i6l(9; =\R/&0A8 #Ͳ|mٶ,m;AA|Dyޡ]0;˧oض,m;X'IDATkr[5:q4L.  zx\Ԉq  WM0?t 9fG8ef?BL&٨}Ы azzCK <JSzcOط~K' >*~ `?~J'`(PЅR+0!ChFbVa'߾ r|c@~)e)U]Ois\nU$Tq]/A)ҹsܭY}Ex >T"gBW)C!o*ፉ,S)4e)#KK/ڟzƬW; 8r8r8Vܩ@>V3V^N9㐣p84-1"I *edQ!.@>:*ih7%iqWd(%ՙz}\VrLRfU+;ksޮUJw%JSy-Zں62it_\f6,'#@l|F)JcqY MQmRlC}/.M/+sU_DOHjɉ)u ?ӏ?4(ŴNtMʓ8.eև꓊Vq\[-U۞V,Qo4kK4@tkrf\K^C8G p D5]S֕aeS0d~)5.lhbv$ЄmRS:ؖ ~MLbu w*To;O n)nVOl/~Xfڐ6J>ސ6gj'f:V3KZg6'feLjVz4N4...KU5ɬo24NNN ?.WM!?tAdYO߰mY>ۖm|A  (;ug ۖmk0dM<ykFǂ ҅:99a:]q 8{)=`o00#<f,W5d2F^] e/l_*4xqP~g:>oqݯ=?~J'`(PЍtHa0 yc%RL^WDmOTlXN24Y*[:_J|J+d,)6Gi.UDzm,=K/bP4uV8Tf aJ$.$qʘ̪˫zUVoxFOrU?zTRRl)"w7C_<.# R!/Ϥv9VHtcu+?At\PݦRL^0 ֗PRZ!ëZ V)&o(]De|k}7fݾQñLN9iնZr%3)W-3{m ҲlWD)4e+|A%PytpTd& AeeC/TN3ZeewO;WR&͉}j=y/]բq\Vy {sg@ ge)+mz0$פ歯.un:-^J/\_V`窾Vm_htʭ qiA:*u_МoN :St-hn@χgCqkRġ*ۧ!bM}8z,jך.Y%e}).*E\! U+PTi+Q!wjnA:XR~aNN953ia2 >58!! +!K).]}ͷڹ4BoIoLc[YA5>ŋQV;ׁ8\[snAD~(u6 p_r~i*enaV i펮4 isvbc5Sġu{fsBoVƤVm5WOdMoB/_duUY[[&IMOOa{D@ٹP(z5Q ?/f,a۲|-g8@@Q^wh?-gaɚxfmmA! ӥ urr†%!u55A  qUS$躭: <:fG8ef?BL&٨}Ы azzCK <JSz|tϞ VI~0(MV:$)}6z=#^(W퉪 ɷoQI1KwP{:ogqYFQx)&@ ESYg aHEq^>r*5VZ=ڌ)m'2&)*^՛,Ѫ\[ȝ*lKݾx\>\5J:]џ ^:A.6;2dֿPj*U,z,J1o7VCTb<Owc99TNzCVme/ڜqQk8A\\I6'v+ھvyWqY!/<]ϝhVt ~%'xE:} ʣ97*ж2GQa MQmR¥evh Mw}-07(K)Ӕi]=ó!{g8Y~yonlE7+5ڵfekV{lErYziJF>JWkfϔtjzԈl'XY&6jJ Mh!&u1˫m 6pVfJWO4G*WQST Cҙ~@qB8!Cq~U8l3fڐ6J>ސ6gj'f:V3KZg6'feLjVz4N4...K'6+!p+kkkzYd2i6l(9; =\R&0(A8l #{`G,m@=?AA|yޡ Om "N6kkkt,i.]ح6,AAA nkn3c`F2U!J&l> ]a0==F^RJSG@)oNA3:>ׯt)Hd Ð7V{ңB_`Jfp&Ym^:Bv|KK)ӔOi%sK7mFAFeY-k{Qԧ .Iy~Ҧen8ʚpj~Dp^qIO[Z:*)lOݴS8NjeLRfUU*o7Y歯.un:-^J/\_V`窾Vm\NѼVzrV4R,i Wgy\?c~ PrMʓ8*iaΩk-ی}8z,jך.Y%e});iJԿ&ʭm5[ ސ6gj'f:V3KZg6'feLjVz4N4...KQ_7_ 5ɬo24NNN ?. .l6K{+ۖl[ڳm=@'kI6#[ND'9 A lxNNNذqo};+TԖ %b|r6>_z5:ZFtXԩ$wJiw]kR_ɢ "۾ \^ԣmk*MSfm^.N V4%JSYx:fGIG9y&]pqդ]^]K-PbJtŋQ֮rbb^mx1z@ jO'kJ/.\Ð$:-}nk+:rx49>>޶5@eBϟKO 88@@AA #঵5:F@ S{: n$G؏u|Q'F?? CW@tϖurr뀻oۢFxq jzp|\.AČ8@_y_=2 tp0oi9;2Zus5zc3y~ПٟIz"3W; |ʿ݉.̏ĥ[11PX2)\;o75XmͲ/ֺ;(!ðզέtL^PZ*ż^JvR`^0:nz^:f o,FsO|W-Swdu5 cUIU[ jzzK`DTv/;t@o)[69E=Ӕ *7JTPȇJVZ!ׁrR{#ʖQZ)r6"KDNUĞ#ooʥ\BT箏*+]-n\VxC|;5}jO[MoAQt/,$G sNkq *BIRrqBZ#–as:+{k%I]̬Za}Y 6>h YTˆ<.uĝ Efgy&咤ґrwYJ,GFxY#䂚4?;QRlҔ[UhCڜwtYi'}>?x?Yc9A9=e2ӌObT FGJpENwrhahI JR]iveo|vzniCq8x[ĵ)MV1ѸJĽOq$gekΚ w|nΰf2L*TxnwY[f _\fI{xa9fU.o7{@e{J6Gk$ F]CD9OR:rNA঒b^"sՂJ\y q.5/U,@Wpg'''t⽴F'8==pg@NA޿O' (!Q3~Aq  880p>A˗Cq  88@@AA  q}#IB(JoIENDB`openmsx-catapult-19.0/doc/manual/input.png0000644000175000017500000000541014460023655020167 0ustar manuelmanuelPNG  IHDR!N?Z IDATxݽTaj6[X 7xo!Xi.$f`"(uc?WR{yo/ll*gY+wGMrSm-O.٥`J˦ȼ|o!|#3[8njƜGB4:W܁ D̘sӽlK~ׅ8|~_ p;'>W_%0CA͚qr~ɦw)S#co^ɍWaa/+LM6۾XɍG|\vsɔo.|xskL& `1stO -GcG޻ܙE;:gej;nߌtV!ຮyeJɌϏ˚Zg/~Ȋi%EUc\d q؟1OsQR?SU;_uGM:[Ɍi%¹+'\qKμLY?eyI6Zp%@1>Y8# vVnԯ\,s0sb5gLͬMMٍiWtF&)F.4cNYjNHQf+}ߌeDn\4o.KԬ?DZ@¹d /娹]v@Ucf͈<6uW$ jufgK M--|>fpIyScgf,/۟n6KF\͵W@1h )@1h )@1h )@R՘wV+/P|f͇w/+ %՘gpp RF+; ^٠em12U՘N<ߎu-^)@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@1h )@ʫkvm_|~?y/[c< EcHR4 EcHR4O܏}W ?|U넘?Cj?|˕4m6.d< EcHYǟ|ގ_|lԘU;~ؿp4]u̠ΟMjZv|^cgfc'su:Kk)XXpGn1}7 Rpzc1vlGnXM=mǎeOuLM7;c p6md'+uZ 6yԻ#Gsؽ5fǗ,y EcH)~m7_~ܚ>*ڻ޼R4 EcHRdɃIENDB`openmsx-catapult-19.0/doc/manual/misc.png0000644000175000017500000003666014460023655017776 0ustar manuelmanuelPNG  IHDRjV`zTXtRaw profile type exifxUP[!=8۵IoͮpP~5AHK!kV:tyHn<GJ"{u_׌t%$ݚ[nϵk=ϣ}J*P3^shv@׽F-ݸqE\R9 ML쒒"yyVf('Ӵ[rICJ3)&.E*TZ)LSd@ƸLZ d0*$OԔU嘑Jyfa".6r2S1έ9ǟg>Ë́0^GƳm?Rh8!39ѵ2rFJ!I_ ӪgQZ:Ir2Dj|V5_΅!mRÍ:^陔_ {&גycec5mfLm36.PN7]w7ٳ0M4\W¬y1e' sn M9c{P)Ԛ)AjX1-:6kjbRw"t$$\NR GΡs+8Wl!#${x'lL)v*cU.vG\X 9 k>h@`ۍ:.;gY=p  pp8μ%o;\= 39by8vm<=\p<^7\.=~\P#8p(AA 8h?fW1Կ~k(AmId%,3d\\8]O*`+Vğ0t\JA{#r964u}|s;c0FI^Caq)a(1DJA{d9fu%I# ;]^XjlqO[-j]ܦj6%uWokDֽ T݆j*eծq-L *@llS1$4<`$pKA+1-fbQnmkvO+h].1XvǷ]t[s6V +WV䵎]yy~C -Ik)3WlдdZߧC>'j7ǖ{5˩pΔy<#ᄵ_.xmO+?پOG 'ַל_.,v 864"cWz{qEE-K%)ҷ ϕP]Z^.Zc*R@ގjjX\\O#Z)7 Gwi}:F(|Lr\/E\-뱞Ւ_n_ӔiF]]<˩ f3)2ʞtj$xg!5UF~M;ejޟVwN{1$glxն*Sdc?cHئ[ؤTjmUKKJʥ')vCN-S!Gm'?珷 zãz6yިrnJ3*WkWٝ@SR`d-h4>rY4xSwg$uw0%ii&iԼirkyէNߗ`ۍu ~ȎrpAi#|8ÇWFGG]+{}o:ld37>J؟sgΝk] x5)@L\.ו*;מ@/Q^0:I?\p88@_,o;\= 39by8vm<=\p<^7\.=~\P#8p(AA 8h?fW1Կ~k(A-H F׮r}K3Iqj89nީd$gXTPƒr)헧Ww`|DISf|Vd"=0Myδ l3ZY[-j͏Z/vdaGف.D乴\ ) Ic'LE=W襫][ k^r_6O**I~xI pKFPZsvqY}l@%(N 9`&R>>8~˯$@YA?}4Y4g,+lmV1>R3)X,*=Y)HQ-\--+śm{]U4Wflk{|ORPqur571vt0-ձygu4[1tVήyH1$glOkȯ1AӪͩ {X򒒛MOIϕW^7TݮY?gquS> Y9U x+v[7^, ?@=-uự\brWv4ʜhj̺r/[Nt򬱭{R&[C4 /u n50=U.Gc^`dAwy]z:4s ;9eZtCH'4 ='҄gBSW.\҄M?O}N/l{u|rt}pl^383J>Rhx8mZI= YE']~ Ai§b5@Ţ^CyCm$ ;#kv0RzǾ@zsJ;䐤smsjJS gVLj_̈o)iczI eTFL1;n:Gaږ~=tt,5Θ[ުԀ,tK>bgكJ%q7JX vW]\W*KZoƵ0cE98t] _^q=E,]'֌xc\ͽEE˻< %(Mx+!cz_Κhpa<7{iÊʌ[7.džrі'tuV>1L,S%hfM;%(MOޟp(hxNp7nSlZ_RO3DX~Xﭨ wű*% 6-նr붏08-jf^N7˳-ƵטWJ`Z>LwvlulӺ=lnܸۙAAi#|8ÇWFGG]+{}o:ld3708N*/qXϵz8+fύGQ<p&JrN0 `r{п]C .ːaIFJ4TW̟D\rp.[]Y)սK0(sGrlhc]nMA@I3*sJۚhfoe7#K%)gfI!P&(A]g̈5.%LtGIJVwS{P)3w?8mU᩾>5}F쀤9ftdmٞQn8 K _+&`'nrߖOzY`(py ZʖWd){MZf*¹"2\Ow'Sp)p0J6=^uH2"WM ^>l[T.a[?1):H`?߼/ @lN6-loi}n XVddiP+2[m[.oMʆ@pɣILt MiD5eL3!lI]T IƥD*+K 9=ĒVfhMUOwx5/Ik)3WlдJ&JWL$plh*gmfNS)ը%BӊҲSהM m6ٶnU)oknU,U\oͶ|NQE \+TM> ixIN\Gф4nKNDq*\Ŧjuj67=?Ϥy&WFټ|Vڰ?Sz?v`3!|cڡZOrԼ?$OTfGoF?vpeyJ8+ ,hd}KyKԆu^JYwPmն@p'4 =OF ~cyX4s ;{|];jjB{Pkab_BMw|w+?pgp8")eLj3Ԑa銁Y=^8(rWjt,Ţ^} Jm+8?xH8:s[b6P`\J i|#-gnZJ וIW`?FگI]'|@*KHڋ=$ \M7mY±}%y+ks_a0 vk5L<~8nΦ;q#Ra&گԣ;NLrOԪoznN Ow4,RfJt[iފ rkygAZ|x!kttEz .;gn!\eF'J]s؟s`/x5) L\.ׅ"1Я(A/f{ރTpEppjxԀp8@}!CF 8~ F JP8@@  pp\ 2휏ewWyE\ rEkÞT'-eg: aTL)hn\CLZ'(!}7?%m"QO-kHl::\i&ۅu #dvۍ ?;ltxxrݍ7îf MiZA$ˡTM}% e' 44{XRmZyfTJd?R2ՑѦN+3i;h|G 'd<'w|~\#!M/횘 F= Ye|9ڃJq*|Z陔_K%O!ҫc&kq k(TC{'cr$jKPzJ+rT)[Ohfv؃J4M нTVά3p9ZAx$b԰js>1GQpޯxCGIvg=R.T&Ǫ;19&<욘r*VJ !/b&3( +3n=TIqƨ'>3h=z_~_2h=?$#WFC}FGn\2υyy.zuڢ8Gp㝋՟IU?1E}{5gzjQnFp;#Z؉k,EUf?ԧ~/JSeNπӗK}.y/\ӷlD ;EEW}ZvWo^eםiފxC<קwwC}-k8w{/x-)fѨg4lO.jӿm(UfZ(6l6lxA+2[m[5lm3/CsחFoSk5 Ҕ/ﯾRWzU^*/I%I}J>_vԫJ뎶)V*Y7Y١>AKUgIDAT_>eZ*OT ڮ+dowG8,񋿑vkOݧ_uW}MXfm붊Y opctR"=Y)HQ-\--+śm{]UʿjРnǽlW[r| cǯI+6U56DZy#'_'k}R*c#JҵHWߖ߾-5k_.D}WzkrO|uþ{F.I"'$ry9 ~k祤뿧9$3'ї]ITH*WҶS|v\K0ZwlKn%RMM}[QLm84SziX='z鸦5i r|b׻tw^kכ%Ͽ^k]_ӫ}%]WJj͎k}r+T|2OLyY^gZJOo\#}q5zmQO>);#rn^:MBWkR>WOUץk^/ݦIe]+TjB_1$Ч?^?臺O~+SAtn.+onjfY±p98t] _^yu9F{i}U&{ׇפWՇ^K>,]^WKVMMߖ\G|Yg?T)%g?SCMiIi}>\ysO>9rkygAZ f{MݝZm+nxKP@ ZԘ&۽nTf>S~^IW5 ]^^RJҒkv9ӯI%UKrjf1ƍꞍn?E''ktt]y^xן_zuR)~Z?я:ڶ]vf)z<8@@_ 5#vww?Wׯ>2>#p88@!G`A @ pp8 (8=\CLZ't .ExG.oECNzjۃ h@ x6~Mzm˨*3t$PYLS[f@7c%0SZ!!|cv' au7nܨ~I "5CVh^㏔ FU%plh*g*e ".6r2S5fB24T9} dv)pBfsSOk"'2k_ACڬT3)KvUFiB'|ViSԾtЧ ǐqrJ5t46^ }BSΘ6Ͻ4ïYgӛ؃J4M NbWpޯxC8GIJjX5=R옚cYjscM7K})d ;Q*x\'*3Vfs $y]T\}* K!Gxd@*7Mk"ױ8~hX2_C2S q26%??op LKr>ۚyRgG2 W )gɀ WDqeƸbJ+0d::ܸOc' }IV誝n~ZؿTz~ߜjSLӔ +3R$oWpޯf5&7ceO>Rh8Q4x5˩pΔ4&|E\mLji\?.%+Ii5 M[U߫e֬c[PXff6mI꺹m⵶[>miݶl3Zמlͭh[jb{N6 B o޼ӧOud֖>}7o0Pȯr&5Ok?'3)lz(1LX=Crg6~ͷ(ߘ.ֹةZP뻵=Q)]gSTXTqUzR {Z|"=.U\i}Ʀ{zlmbT,]΂xO+iD ;Eg5{ק^[ݝ{ァx.ommŋZXX{@pFK%e&*!8eZtrHKr*]Mǥye3}zj7]RjMu^Zhݷӈܲ|:rVv`Vw}{4S}[,-7~&MŜSKjX1U*M-Ū)iml=R.T&{L}BSΘΘ;5RBfxnf'=tYŋ֬vqYV$I>VU\v5AundܹU W=W;l,`ɩp.jVxͅr2@Υ䩦lWB&ǬoJvIvM50'dF W)r+wéiF4-ց\M-J@ف34g_4;; г=HHJxU8q/moomGFF085MEڃJ'ҲL3z4Fͺ5=u=5۔> U/mi8'*'9ݭyd[VU\>i;#'mjhXu71}YݽiӌVU$!yG k-ʅ誁YŋG/A#oŦ})*8[zndžzI 8W=)?| xs'JZiqoD ;q>z8r4/j ޞA>c8r>`vlxe.xz pJkkkuOOOrkkk>NcO- mu^mz[up!gڑ5v[}\k}mC~_ӣ ٵvyv뚅eIЋV3n^274}>C}mh>7TWnq>:6\裏8t۬ձOnNPҫ-i>it};iUzލ!\R]9 :gm7:<<ԍ7-@7|o 'l~|Go8xeI BJRr\˾}/ľطx axǥD}%)ВfOV}Z_{qeU-kffӶvuܶTXZLkݶn[skOc6V-S='wEo7oӧ:nkkKO>՛7o(TYed9qڃ䙔?73aHr asmoQ1] sSᵠkwkNK3KC9DevնƞNQbQUI%XiXTqէ鱵O{QUtͶ; =Z.ʧ-U\]ַ{mowwVB ŋ/^haaA wG-EGijM-IN"-ɩt55 Q5-}f.{ &̺r/FF iDwnYQ}[>e9n;0=U-Ve}`A B@?b)M%5*&bYeĔH6td6L)v*=f&>)gLKMg̝ZK)v3imSuF8A'|wX4m\h*e篝VDeѣ7jvqlcW0eU/mi8UHGeiLwmZ[Uqfl=5cmߌflZffuM3ZUSp%R&(f/Y\tK@ipw/.ݦ8o!LsZ'\V%zK3KBR(yk;Ž-A oGQlY c?`8p)Qvww8΃e.!JP8@@   Oqq:>${FGG@./#Mfb2[Ap\Jݜd59"pށ!R$b|Dv{N#@^(_wq;u>9g8#pIr*3era)4Q=R~nW*܏O2SA;g y4#_p~Axkü =lkJUԐQ◿幄s/.F@ɺߑ@|[SZ!!#,5U)s (ٴǎ$j3H6!/@W'TNuHpz?j1tCۼvs|?G?|dI1&*M+3&ӌsdB_$J))fBrYKSzplh*s1R~LKҚi,T_! 'raek_,m2OV3i[Reznn[*x+uOʴmK5gѺ8fmnE+R;syWT0Zx捞>}#붶Syo[_ Ŏ_IhwO:V}@i,G`ܚe1 9BJt955̩}v_e4e91Sz?YkV_AϕkJS6=Rmh_lknU,U\THEW}Z[U5Kl -J|NQYi}ֺ|wg5c{iaaA/^ [[[z{2ΰʷ{p^3=L~} POl?r~%j O<W6sTY^XN;Y>0xњ..j$ɧڢ<oGڇz] +:8r4/j0KiwwC;.&qҟzW=tU_bC5-5ڇ- W '# vtѻů\=xȘ$$¢Ğ1Νt t ^p՚gѓP_h'17BzQH,%c5Cη@iAuV\uڣY.Vݧܼ-2.p9fH;']`.4sK̍ЬZUL]`vy()A EՠJ?ۯ<{,wԠjP.Wo߾{܅LWSPA;g뗉{PSPATyԠjP9Hn?qyg*)A EՠKE]8Sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxˋ^..=x(w )%]>!w Jh~A Eՠ*%]6PT 3PT سxx\޺t=}sW)cu%l }(՛W-jPj(ҜއxbnQūy%W mÛaa@KY]jfy5bo\o pq ojBd/ pܾ>RUȗcݻVj(l^.fi3WnWa@9/M 票~\[#{ }@t9Y[Y k̵S[PPFh*>gM%^ XUA;$]02PT ا޳&\5Guwݳ'fzswn\9:ȫ԰/M.O<..m33v;}w: zIPuz',~qi폑k r~RGnʳ+`w9 kf#.ggɽ])ͻIkE.>;=Zw%X,er%IIIM<^|}C_߭yQ [wgϞv.UU]}yË1yQ`k_>>y^cbݻ_9ǟ~^suqgg=碕tŷ]~%=qyg䜉2=]b/oL\ 8I|ۥE;g5bLsqqאN^@wu*a'zf,o)͉<:efaCS7zKMTMhsNA}j.wYrdz[N<*˾iZ] Y=m3C֮LIQmVv]BXOoΐX5oW-|e9޹v*0&[ǶbܘG7f!Ck}ժN(o8xZj~To}b`h5 i{wݲlzua'mziwǒЈ/AFLPkK?[ukg!Q kqW۟N;ذGq 'qv܉HX.*,ؓ-V\=o 0tyܥuk_F.{,?ٽkh潭)C7&cT#va8r?8mGwՍy#Oʮ(f؛1.Q-آlV.bwaX+Ösjtሓk8KŜlwӖEEye{I~%S< դrxQ'`oZ>(]坑s A 3's^ҽN~=esgl:LA s/h%]HNry`ӥF ;=dܥE;9pۥg[Wm!{J-.OÛ3$>kXI.v3.HضT-sƚ4G?Ac%fh.dh$ccSfX^YGLzxߩ9CpbcKO3"YWw$4g}TCNoW-s+iSQfD}h6zhNN95`xK Ô֍BZHӶ{ԫUm ~LLDHч]HhiE9g.--yH{ye҅Q›Wobni$]0i>3Wmz?˹pKoa0ןV51]u%DK5[ ؏) P.p?6nP[s֢N {0OkzF6|rtO# KXxؔ1.ke@kz56Enn Ƙn`g:Wԍ CZoc.C0Kzuklױ33V\e2jG$΋2ԟٚ!sNM*,GQ29}?sDjA'7BF>T4O, J5Sqn|aS\vanM~L93;Ta?$&6gFzzkӢehӻ/cw\y#P^w嬼Nw١ .uƶwѶ#K_'9ԯ~Wa|7ѐpz%Ge GC1tPKdwahEd& X;wb]:G3@]](aa҅< m.`Tl'WlٳgYs']73 ذ/m^޺~)S@.`]']']']']??ٱ8iIENDB`openmsx-catapult-19.0/doc/manual/mainscreen.png0000644000175000017500000017265214460023655021171 0ustar manuelmanuelPNG  IHDR2-aF pHYsaa?itIME  IDATxy|?gfn®l@٩Z+$/~UQ%uR٬QV)1uPVP;313wMHBؒͼ½gfs3gf>9gΈpa PBxwAPBQE/Q7o"DE !EAek$[B@!v9 A !@DR/5IAP]:EB L"H EEťj*(P4!j)U@TE(P*,P!("MUT r* >" @ @54EU4OD&IӔi&I)$):ƶu$""SIdRҐIdY%`H@QJ@7MݐaiRIIĬGRX$@B$" @ H4!4Eq\i(PaiiGMU#`$[ۺTEUU4a2*$ !H `BI۫e:_QEUۢC^BQel>@A邜B_#ϑc5\֜GoP $u|$"I$ISZ OJidRSvCRJӔ)UQa" A$T! E )ɔReXJii)I$`_]kWź8@hR4 0%)hVm@Dd9QXZuNy(Y-9K9mۗS =VBP (օȯs/Oub(D3؇ߦ}J @~AIE"wۖV sjvӓNnPUEu"s ύp*RWrZ٧$霫BNV’@!T&Tp Ä U%`H( @:&  xPL#AxL#m1& L~N xPKn*ѢyfJx3hBk JHJ>LAa44⋳0 ouT)%n8UҒv3WAə`YE0\Ya% L11 0 s0XLF,X(_Xvva)$T e&T 6" a>%g|,a. i4d{I$I* r@]e}0 0 2Wng*QO]e4EvipJ0%IIv;'k x`0 sQu $g?1|r.:aAc^.W<:ޞ8| QN!$2D2 A&)x/0 \fzpH jӥv~ě=ŬGp)xf/ӦKs6rFJ kU Ȕ$jN2Y-1X)Íi*<lvU(JY'fb:R'J*zLjә`eyf8}͗8,/#w%2t=]3@<Έn =FeřȎsfg헽! ^_]@J3MFF@ p3* 矪ALI/'s0 j Ȫ+] M2:UnHi1=n:c!nOn v}2k]3SIlD`]2VZ,3%BӨŭw6cj+=iXA7ƷM^=_$ӄFPU(Bg'=)fڳgwaaQ䞾I|qrp caSe*(Dyn,68FDH0C%#ϜլZOU|Gda&7%mtC_PZ"0f<*TH $'NT~?XwtVb0]v_ha42g0F9?PB5֒Jy@ŎEܒ_[ď*}ȡp@9(a_T\N_Ү83oS7ۻWF>o*(n 0  UBQXoXhCjՙ72Yu*/{Wl5>Dʲ{/_8"Y{Ƞ-0oK)RNw$HۓPJ1%Cƣb`g0 0uĭG"0L`0=.@,R=Φ*P$%n5J۰EM6{=D#m䮌!6O%SFHqv> ^},oB(S4SM+,*J@G++aiLYL/|IqWV~)Ou.,4-%Ď Bbd꒠Xٺ'=0 dz{oM18 @hym- P"Ux;hbԨWsO~ܥ⛓)8s?tտNʷVzw~~|ƁBЋ؟{đ|rtj.Gu9c]5;rJ>]OMe1~[/v1 sIc@*=oI@ӊ00Z'XSŬEڻ ])ݕd0͊/Ӓ 桧҂e|SLA$y_Rsli͉ۈYhf֬kN3Pڵ%H.A?жGj{WpkxE;FvzEZ>sp ]@{+Bv?][WQ!:g^j_֏غwޠřN^o\a˞r7u&D A@!h& @ S0H]f^Y[2++qCa$%IYe?M)_O.z"BH!)2zDDDݺגgz/~px㟩ezk.7mjф͖irX-/14/.v8)^b?*-U|սka/H<{R֑Gɵ?":`_t"Þ:[􌩪fޮYR)%je[deÎ tTr6m+,5lNٸf N+aam^ _aF.> }W]urSkkozA[p"RC,}RwJiWa ˶nNp "0sEPwU#](yBuj}u: .?oKwPQW*Y{ͯWj r\{ Gs cRj;::ydu)0 C?;@5w-,woۯ(2D}lmq@IjCg8Pg4]4^x9*=0L'{"}(*^ H" ! ߪŖjm։-b䮄i$HHU}Sg-* A["Y`6}qKv?G]nS[?}(7z'{ל]0PhmiuuZy׭m(v:YDu{w4mXlz2euX/4`wƧ^ѥ phvv?薏w+{P o ;wU9GqÙž·7>]ju]Ro;eGs~>|P;Ā Lgà+G֥}nlVqcj}:Gno{HD Z ccOYMWx>7AN^s/#O4EY=֌0xAN::{I?9 vuźisHذ=B%vERhHNŮ7#Ū1GB+ Pca ›m~ӭmrUI/~M[)@3P BT@PUp_F~>`Ǐu\\(? MxeAP7@Mf{U6]\* ʛտǴܫ!"`]5pK4W+wHzGvb[@鿍uȷ~z}>`)2 Dާ7HJ*pUZ$PK+D6 e5ERa)1`Hg Ng7 4M #I"Y7|]Z4Kq# {:cxdba@io(I|1r-nLNxIT_/Peߍ_7|"}tBU< nG|kN {V%;ۇ 4IL2Wl m,@ŎӔ*>s0h @ W^brAP@H@BmΤT 7}知^Jm~b@Y/ `gZ7~-E;FܼP6wwv{WIR(@кe޻}oGo̻.0GyiP|b G֗osoXf#{_u)=#pg+'qGf=)U7ÜPa#H 1&^B=1OhM'MZg5b'o] i,KuZ`uTPK5o+Ɏ? k .0! 2,uk.@ +"gH'k'Y&qmARy}lUHHO^ L^dHxGyp aEh޸kFO濿lVU4-ߗ ۊ_Q[}M׻)'_'zgM:\1ogs]~q;"=6Vϊ39_0_,ȟ*ݑeE CCj[-[>YyuϬ纊!W٫̵z4^,H(N {ukN9^C]`+)ϳ.<-Wۚmbۉ<+0LX`WP~Weh:.` 1P遦RWV$awI1L&´`W"@ZH3wHu!we m2@*9l@HӚ bzG|6O.1~:O֒a@X8H @ĹLkTRU܈?k-:|;fhclc'dw %ūwz]o&] b<  >\k5@w țwY#p_x-\O5%pS[ژڟ?5.q,a&d(<}<;✬vF/+*?1~[W &N?D]f3x("qK(Δ@*?x;+Pcl-QKչSSɰp⾭(U4U'%iws-0,3g0Qၪp뤓-% C0 2L&óۗϬ[2 T??Ď.qE_}ro 7/}3tzŦ9eqxOO,L1p)\G-qv`+5Z#o>8!BE#:ƭ.mk8b{`G\u9WSVT!&&$ֆCHc01ǀ:k=fI<՘uPjw?Ԭ_o'02 'y0L#1:3 TAAOyP %%\p%O'9aa,o != @Kaaj0 0LMh<&a' IDATa&$LK 0 0O-IHcG0 0 Tiϝs;ܳ=z‡aaHQZ /^wU;Õs?myƿS\Ӗw{$RZyɯHr .Xyx/.;,a4ML&9i;Yƞ5cn-Z?{c1UgCQ^~ޫ&b#@Woҧdb۳^8nu 0 s9!MPR(;q|Jm - _ G޹g\>1 Auvپx/* =v?E"4cmXC:n竪Y;\GV1"R;0 46$R /^r;ql߉co}bx}ox{۴  tؾǖu`|W;ql78=çyı}';1gF/M]g%~ OBFo݋?[4A#^i[E'9!Yђ1yIVפ.Ýw 0LSDPޠ%cF9!yK^o˂I/.5foϹ4e9&'fo)vijnmY\p ݣ/QcgkPmٹX_8u}^7@~v 8Rc2kIk97 va)# (udc;(5  ;,9;+n UQCΡ ̯3ȖOmY=økXp`@Pn5Z֍/aij a[Jx6LѠ'Ͱzf~!{y-~wuO<{ݕ&~/ ͂wٺԩK]G'<{~r`tj($cgű$t<>a&$D"0㖢c{"pQ u^W/~ı}~H+uب!K>"Z/u=6MD<@訆W Nga&$'!sw0SX܎ávij.&6AE:0 0&aaΦ%aa*jIcK 0 0ի%jl5 0 4aJ?Wr5zK?sǜd6~c: K2 0 @t~bJj5E֗FYzSh#,0 0 'D[u5W[t?yM}SYS;~mZn'5O6A?s9pU sԒ[R?򌘔j^&uPkt}S;~?|Nun?9F|Ma.ZjrKvMp"\㟻:_|rе9F|Ma.Z@A-I2MMonu7|SYm9F|0EL˽i6c{< ;I:1 sQ~V7Su۴Ɯs(@L^Scε&RMI0 # ,9M9pW0T\j6/L9҈wNʡBğԉc7HElmOGsߚ)QE2Rs9b9I˷FE+G$.aVj \x$$ť)<ە0g~Z'+͑Jy35EMSf9fhNfԒ3 -+RUN6%IݭUD3[>*"b[EZC}/m"uCuQ"PDZYtq8Q"FWu,e䜭Է+y+˨:԰. bgsn?'ޚ<viyy釗/ijTD-{b&e$"[ 3Snݹ,0q荝3,C0al2G ȑ!M1Q\'Ob’XZ2cw!WhK-D?Z#ceQ݌ }h'<> R 7I+>Z>><4HLY֥!]^ιSt_B*B$z܇\,|@9W]֨Eu9gdĞT0WK "Rj/RAAœUgXb&eluNT5KYDSk!ix1.YKNY 7Eۈ1oY+>i/Jڠ/Eoe,L\kPoʐ"•V.oGUDT֨ 3wdDij[ Z;>5"!lR&=Ι~T||Y,oøkzs_ C~rf@yjL p]PkşW֨ȈQ+ l5*]3%9UuWm{l߮Ɩ$T j?@Lj߈D[BMhm>?ѯ{j?IOqr I-qWB\ۣw/{tYG@ѷGeev-E~@(wuBgkH \8l)&ixOza(Ðv(~>ꞫuBUF4%mWb\w#oCpKBDD;/*'"EUWXo8c**v* `EF)jߜDzHc}hM8f 7ylڸn&FŏI\akuŻC[_qQDQcRP8sDݷ&WGiٲM˖mJTp0']ws0Tzs 2F5-"D$MY0w Nu)8E#ZZy w9;gExvo5_ݰbtC#tٳ%֥5bE=&zip fkQqkN,-={1&}nkmO}oKKOmY=_ ѓ55$Q1IQ{8v签c?y8+Ǫ^coヱTM񙎟s Xk]vhn|/',Zgκzf=0m1W'd-MksC99-mFZ[C^Epg|#7RRZzrZs۔ݱS'Ρo~E||r)S<. O=zm\Ǟ? 9jI(R뉰} CM%_a?2ř2&-+`UڀϡKU!&ONsXt@ascVٻ\xUL;1E+y;n?99gϞM̘&MW,S>^C)TYo:P\HPEc_ vkqgBDŢl:>^h%8) hs++m/4ԗ3rEtDE+,Q^9!ϗ}r]@k[PE+7kg`=>2'JsU".zY<\O!1 sB(5׆% a% z5|r[ߔkZMvIXkUau"h0e]IP|Ȭ]Wտ]+'a/ZpWT]|MX?BL^_rd$DQC>xv'w]Iw&/7P*;`HU71ԡ84)˾f""oXr䜤I^FXf惿]Pݞ} [ٻ9(Zjsγs?zջV}A@ 3QvQ~yhfxR V}99ćbTa @k W&krs~#o>j \3 = |Ue\ ~KȟpW0D5.p4#{܆{ ]'P;s׈jTuU0:WE_3ǑaasΤa E==k-]^ڎaaK%of?۵D{5gչK bdlʥs{ 3SnE4 kFVcyǝMY=K \3 05AlYvdpX4[ژ>"޻e[Ť&;z"y+6oMC{ :֠{;x-jD{*[~Q192̩9:Wc1a`$RZBe/X:"k|$-;'lPو?ԧMxySaZjLކIc@Ҳ2 ژ>#+jmțĤei|tʮ]["zW@LP `ë{dV"/,E)ٔvo+=@a%rlCߥj1Jm#0LcGA S~3 ;iBLdL1 :Y2iܣnj\[Hܙ֔^Y5Y1ֹ SgOPq@بexWL0RiT=t[{~5o̹{~6&4DnC%Q1wT[:i>a˕{wڵW<-Ť͘$|М7I}jڄ">(\C٩X5ss2d$ͯa-sja.woUVR髒̹!Ht5WG珌Ȋ—-fvUK 6<>|Ž҉%;9޺ѕ#a} ڻݻwK-Ւ[uG;# W˚t>e1i-ÄGCm^)6>4a~*/k>G%e=j7ȣ r펞Hy$iBCm]“z9*'uFǝ8 @HU L>h hS\'µG2P a&"nMq6$$VϷ l$bU9FZ 3S& l8'&ez p˒z$*pQi6NLP񖥬8HzP*7B׺'k5Io"<H[f} _{ ѺtxmBIwTyYS&h o鄍6e@`ab:j'h}?~Ƌ+s -WL;"4aG-I陸MMb1N`a|jI@( 1IxpWg$4^j2{RbN|_F$ &sw*@lچh VHص<CZl][mHj+dJ$" EEV*$hIj~ 0 0 EZ'w24Il[I8!dbthw'#=W'yyH9+&ŧVa`Ӫ[`M{mGW ߐXi9 c̱9f.0Ii!N/yKs?9#Ee:^[4s}l$@z i+MS'zK=(F ,7w!EQÛGƭa-4qj`_vr,57.m򦋸=,S5юPZ,ӑ!wR~ VG7] ]#Tddϥ*Qph!i31bEA|Z,s3S+sӟaI%>6܍+ʥYʪۼSMǫW=_~(I%aRBse o}sJt$ϛP/\?oF9Er^$ jN !~d%yi]a5'gd2LAR0 jCRW}?gx]۽8yOܘOy ś9qw5$!"־~5C&twA BU#8 V"Cގ럫hsD6KFF9Ji%bfm";&_?#0Ħm4[C_ ƞǍjz%Wf{tELR IDAT>. U=fs5q3'17OF$i}ɦd+>Kn"Vz΄\WV}^ P4꣖@ֈ+tWx ?h%HD42P7:,I.v-ϟW&*@|na `u|)i3%RX-YhO|9c'}Rɭ{FB$9u5V8 Mf8ʃGN ! (hlJiGqwNGsA> ŏLG鱼H_Mbt߃#'-Ovv VL_Q`i2y5(~dz`g[xt<k >v.RɩŮ >.Z"2x !!40(3Pf"Q)P4MSJS6L0 %m"]Ү]W֮]Z7o.2mdXȰ6-[ oDZ0 6n)-@РSgGOI^!<9.Ad =m'nwޥ%f}>vWߐv+Fčm= 73e-`Rr320F&D$M4 > ӘhlG;gӾrK_2ǿ]ߺM3'$VwB@#խ;;҂DwhP͉!v*}y!_}b-KK Yy 6 c Mڥ a끂NR;kZ"SJGn WQE)+CF-}ڹg-Ǜǣ{* - k~ TF|?g`rԒ~J&KAJR9N7ۤD9N0̥HdjO?Qo5Mu]C g0 .mO}=40 sibdiJAR"@ k`T+ne%JB;wRRjӸ[U/jD[`˶Pl{ZXdoGgf0 )Wc,3uJnGq a&$ Mr` ? P?J}f;ܶvsZ[pVE[5[,CZLy'd,g&`Hܱa u 8fĞŻO `3ϐˎ>=`͝ߖUśWEa4-w_t];80syf}U̶F(͠ A~qŞ ]kf7;O)Mֳ㆟"[}|ANPvYQYQ/7RX" 466( =v^kBƍ1hwgooP 0 Sdil$~O?=o~ݺxm^{gd;kqhGwAr asVϢ N{dhv!`JOشp!.l^Z-t>{(! 0MdjPȵjnCDٳ{64}Bֱÿl޶Qp$G;WjiAa.U}BACWZ;|K _<~374{9ɟ>msta4K6*'jݺuǎzҽ{' m[v𿎵J3CX^cuaiR^"% ޻ǷQIv;oHq.6eYFCV\B~w%)-ArE"@ph_{m+A`5RĉK );%y̌4F[Kgk%%Tkj !>-W:U϶{7.]]Iw aCN?|w3쳍g}x GС /ZH\n30FJw7?i99[9chfTLnCh1P%_\ 7A#iMdpԬ$K-Jfl UKx{K-VԢ?Ҿ[K Zh BͦUW?;{3*&}׶x%$ 2`j H܊g'__b$E}[Z\K5bĨ2s[x\4A.Qi+I T˱}= g52 sn?Wm[Ӽ4mX ~G심ϻ#Dk7#}l9ƽlN2B9ƚm-xd^\hQ8~ e/}5F󝉀a3,OBmdE.e _QIuWpvT>NiqH;l yiEӷfQ+,p 2,6B2,| )N\aQޯ4xf19kyw+|qt;̩vMo-O߲ `N a9`} !%в\e PYU/?(#9(Ti!O 5W).b6u kP E{^3m7gM۶=%ˍ1Gg+ZW+`oUi{}2Gi(-~Pq;z/k ƭ` |-3ףшraTU0W}wˊ8ڣsl瘾'! &@aKĘ9>n A¤I&N*3 XBL_Ȁpq9G.r&y8 ,%{cg 8Q 炻ۮ.pr.H-1aqHCM]0ӭ&Jd@(EQD1ť3 uk}wgz]4w]/uG~_ĸE"xܣ#D'yk` TAje58d("7XSK1rYLDYIFā(ɱ$pOgs?k/xZlќnRNAb|"x}FŤk,xTu -cM-X  3-)SA @߀2Ȼ?; ͈`܄" c i[:*>csPfr.pCOU >{c}uɭM !jb B6V> XSHJ S5MX/Rs c"Es@$OA%`&iSLq4LӧO59uSJϘRZ1bJɴ)SK'O,I$sݷ\w=w$w np<z{V',M!X!쯳uza.ms@5jnhЃhlia\Ab 4E.{ nuwH90T4lEOK11 9"EЈQ ~ڇ.wG׻o{Iwߍދ7./ \3f*$7@{C !sw-Zb)`mQ2h0WՀ!u 4=r Ҳa% ~?>ŸP<&.#Biw̙NM̙ N1D#R 7,`6ܔ%2b1Ag$ADĠKJ w3Z}vo[ AI*Ilyj bHl@d1"FEeXKā( Dt(9"AsQFʼ{|Tk`Ǡs`0F~a `j;te56؝mVhbA@EȵI6myJ0I+1 Ww=p,W#b)2 r"Id0OI7))^zi9lS7K./[ַŋYImμ^@4|(yq)  iufG;:7D:)uL B˷ r0MQd ;YA@a$^Fu/wl-)|~_ySr#>yviKi͙ ")2r? ݮw7*{2R*rhLiۚ%vwONB; g^ 㩾خC_7ӴUn LHATb1 EE&"LF&D߷T@MSobeݮGO҂?xlίXrAYj̀YJD"IJɗo?-;7.g$2P9_ "iBqQ S xIV&nRS=2uԳΚ`sMɟ}[eF =_3a0#` 0%K,|9*v>^#1Z*ӾO31Y! -8"Es0L ,̌)(=߅-\7fT[*QhuO8@`:C;@^ * 81fo!쯳8Ӟi7W{ug@ $\.כ~b0)-l^RpztnrIKƤK"y/:Q1 cAI7Q03Ks!z$v!夗%4K:3?٫[NI&yQ"14818br:L[a7~qmS93%CkY M+!Z8 v{#PA_g *"=pCMu=?Aobv<4޼R!nZhh:Zd+ӒJ&쯳:%W_gq( 51Ki]cx~UDV^OɧFy~#EyLZ2(FK4 E"B8Gk4hT A! c@,XBJ{9n)g԰eKڵqh YzTG`jnaYK4;Z%N ]̎`m9}^P WwhP!`,)*/`m-C6ДDJzmv)PEᮀzKj/Z"kW¡}% \ WO~ &" 3{>=}7t8$WJuq1rh IDATQP YK F.U& cI^߃>ώ^Iߵ-rEJj,)+6{P_-ڼxPM<([_g4UɑӝJN̵ vg[x]PIDPn$qK(׏MuŻw۵ .:WWߣ-k%EE\$75'󕱢}w_ܺз(tV}!M{Q.$K18enء&VMylAa>ϢE{{wK bE՗~EՒj갿ʰUI|o[t%,Κ [BMLA\tqnmFD V~&P_W"v[*{-#`As&a3cYΐ+p5grڼગ޶-& bD9pCMADĠ+KpW %{v^ ) W-ڼcfP  *  ȹ(r-ѷP7*k-'jk zxZQ9  s͎->pZc+cl-4(VOPNTL%Obo  F QGĘ9q`vCyIT9p84=$!3AGwBRNy=# 2%VdH㔼}** VoMKSu9HD͸Ru>X#.> y?F21" ȤDF  ȤAAyC*AA(Ⱥ XAA'QDkylRvc"F Cƹ| G"FF`&a4NtO~fAV- ƿ6d`{}S;]ADD8ג^"F^y˔aR0w^qih%-E(QwÚBĸ+(嵄 iu)n$]Y\UH F6;pњ,g=ѲG3놙ht}[O }}Ai8r;Ճ =N4lDD UY#95NKNW"FGeY?]:?V́޻4Mw]wKۿx"7qU_)p~ToeN!B'G"]J]O.k {25TKe'U_ 5E1 hmPSWdoUSԄ;Z 'W* zB5!:`;%`qԯM\&`)'Oo,?+x73DǤ=AI<]f`+?&y2R$sYW('s:z_esV?zGx+^TV]7;pg;cOȖ-7޻ZP{ye(I#x2+aP;Ror6!a*< 51[fPsgv-uXJvRaqmK:te.))qѵe$s,_5X8 YtN8*62D~0~.~gޣǃ  c &)1~$98}R$P:09UXj=""Äu)zx"2 CuyOL SDzJJNsQyuWz|Y#gWnd7x-7|/*4% ޔgV{$ xi: *oIoY䧳N]Hpz:Wd2@Fyй?WNT9$;wˉRr*X]uKݡ6/$˞ A[*,_5?}\W-\e?hX#՗- Ϲ6||(nϐ__AAi0n1X[kv46[ JU9rӣun6/@@Nk.yQ]ɪ+sƒn?`_g}{e,E~xFѽg-{fI  ei$Vli^]bnŽǡ̾8;R.KoA\WsfG;:7AT8xUPZ~ȏ{S=߰~zF3Ggp93ٻ𦞵63nv>8rYe?L,nG3twޫ?i{J^ŸN:a՗S¤~+o,<=kYZ%kTiӳУF! 9q ]N+Yue:a+ofoS6YqN#)˔gY`*i/Q'zDu2ODR 5/geAH-BFo| f,y@mL ƀ(0#blSl@ DEdÉ \~w썥FQ) gaYklu?fWcsmKF[{P ѷ!+޽/jYPt}kzsb:G8-'1ȷDqU R|KƘo .1eN'Al ";}(  ԫ!u%oױ jR}2(SjML,;K//37I*A9!rӿ:F:Znv:hvVr Nkn_Mg4Zd=2,-)16Z  bj) [ .Lr)p5h͡Ojʞ+#PvMlBAĸ!}blm$i7/fg*w%o<6Zp9Fҳ-1drD ``f(h ȠZ6Bz{ȷDy *E>~txD#X"l$6PbԒ PQIH"ILAʶZL08! %q11 9bI(w D-3A;]g~Mn~\ҩ j 0GsRKA}9/G5=z]s'(s hRKA"Q8e $O _}5hчOfXՅ_8e40cF%5Ȱy7XW-$"g"2G;Bbri0^%}1]'o (oDEK!j *CrR;ɀvz@Xb2MX􍅱H\HxQ*(ZL.7P.p!("I[D?514u6/Ƙ$X<1R?+Ԕ(4u)է&̾%޼lo?vt$O*P|Ku }1E9""# L`L`'#ōJrD?}o箏w:ص}p{z&O+2}ʔeA`5+ ЙW9w6>/_;8BpW^mY#qZݓ:e]PhdgǪ);]!Y5jJ*bǞZGS+˧_rOBGyKF c鿽;S%fPI- ZfȻ؂& w\fyjV%fDMeoU3{8)ͫ3;|`m+f҇O}Xkο͓.Dh|'VJi v^_^OEXp5(xՕ^r.Ę;r? ލ\)}ȱU?wJWsQn2!h7ēǏ ~LB ` 0}ߟ+\G&BqK=N2b%; i|.=h6Y-@<JYOjٯL*b9oy'WL>mc9]wޏ[N7 !\/]eaݘ*!23vuO0ᔉJLԉSL,^*~C[n˛+y/o/>R:qK@AFU5HqJv+ry9P\͹ijJ(hA@!\>!yD0r03 o:v}|0={&_Ó'<[f(܌x 6]9yrX 6*\mɷDc`ѫ^1'&` Ͼ8r|ӧ`KgKy'w[Է־UF'n j)敼1zxݒ)W5Cb)>m˾EX}v4-/QSud0WeaۛwMiV J/mu[l]FlZ#'㷷nzKAh"-?|jҡR"nΗK&ΟYpYg/8|4>sJږ\j\2^)hxooo&e˄[rYT 56dz>Ƽ bJVOl .@ٱ*`v4g}>~l4 %um_x嫇@]s%r-C:g)[/{8Q %K^["1DCR"GM~"QA;<.3}ַkŢ~eBYjAhIvt䐨qzr.-4-xr82zК*bY/':筪>EIJx嚚uj[MMĿ(Z_<޲|Smum㿼qib ҇D)`*(lBu 0' R;&8eȯ Q/_٫[iIK:D]h"Ob٫_jurlW+]0g7A_3w;QBu~&#X b"4(Jg / "\~:A`NL1X1zD"_֦(oIQKhBEiĢQUϓ Gb,E+Vh$v%Bv(L(^NqKAdlFŤ}ZuN9G΀ ADX4Ă+Āo9`\ Cd<3A"!oɐ]cMHs.rQfMD&ybRsaKz|吶ڕ1MP9'Ï 9ch42GxD#C;:B#@_d/GγQǡs_u8^=Gqo+âE,j,yX<~Ᵽ&Aj-X7'3i%g8|Խ"xÚkVЍ#F,G|n2&!/+8/fo_*I?_\?lť7%ugT̾Cm=J' %  RKAAzю]be>#QED1&Q ΀@4WL%d;1&P2aqHQwE+Rzu}eҊYG0-rĆ D^|kjɼa墘E-A #>%IuM?>͵YrY C]?k/cќnuejo6-2B&!F7!zgTLZd~Z .|WM_gau uh:K|谿.M*;Zkخ+ŦN9K y]n(0c߾ЌQ.{\8^ώ  b,px@$ʣ".rJ G1XLU3KF${w:] _B̉3;ڃz{tc\NmI:fG| sm=Nh (̚52DqaLQ(r.oFA `&iSLq4LӧO59uSJϘRZ1bJɴ)SK'O,I$s[;;?C =Ο/"TX]`Kڌ,=]cmSxkA2_Jة-Aq5c1 b,1(1q(2Qq&c1t]?ҟq5=ֺ]tc`A(Iv_O wU5h#H-(rNj Tw8o|3dz@Tc786Hp.⪥Pn3F51KSUJ]r PM&12øRKA"QrD{E2y _}5hчOfXՅ_@8 ˤpڼ ZCA;RQ@zM=*G|壞&-M A"?Eΐs,!9@@ A2@" \Z =o~ \\D,1&,X$wi=֩ dv߾yRm0lMކ]'ak5ZBUҪ)7Ԛ%+Ic]oSeS˔9ULa "'C|+X**g-gͥ S}'K 9¢`kL?ο؉^sKj)1ƘYD(==쯳8k<^% &suMZ%VpAc -@_o[;uJ:~gtf'9vcN;'ySp" &0&GΑ?F@ e fQK%'};w}stؽ3yZٔSTL.VYImμ^@4|(yq)jQF^nvcr ю"w̎v )Ҕg{jYOYKU[O+W{d[__,V^~ʕW< M+//ht @TĘ(͆c n7۵{7?w<Fh(o <|q['gG{K:zɣxĂWT%-d%Ak!ݸ-Om[EsM{E8G@1&2N:pCLۋk{wbсGA]UBM.m?-`A1Y/':U?}n[]YXW3}ʔS^[\rcmS)S~6'.([rk[uX"bLC9`j!‹27F51wMV"kdB0{ W؟5K&$-_=V  bDq$MF1*z5ō}yEp@_D\J!'sk iHՓe^(¢}IQKhqN8jw4QMA,zm `P r1 ĢQ-F np3jW޶y5Y|9YHS^u,:à%҅u)ZJJ2T kop["B،IޓG{O;}jӧbFŤ njI#_-.Bήz)c@c8͵Nb3[AzWY.0p[kuQ:3V %uu$ #pE.F9F9FcUbbƐ8qy|WM/ LV;h ͵ vg[cޮ0YWpZ6@c*ݷEOfaĐxKapq1hq'MhP5phr8Ѣ$!a0xnǞٱKQ1ng)jK RsЕŬڬ kni yVPQ"MyHU%)06"r.ƢϏMH`ެyJUA~.lR<=\bR\`,:02W0~GE 4dQcu+4lH][jY2,W{SU>18!K8-)aՇ6hv351fBi bl~Ι4咳N>^la@5+#ǷQYɿۉIB$v8P h/m DM~Jb 2R~Ցl^q"?Rq mʅ&8$q8&?eDzcwˉmYffg޻;q:E&v.3(m0Q1 !K{lߵu|'.$YLwR؎C%J˘S]~`9y?sz}'KCA^ZBA@-!  aQ;2xvGĴXG\Jq.c5 %dRvÎKwAAZ-9*'^$8 ZZ ɍpqp6S$BPT}V7#8әw`!LL:&_vDyZ є$hʖ ZV7 T\Tj$BbPՋOJD]bCvxуG Ad|xy>4%>n/DG9>ic+\+B4ѷ*j2E1WGԉ($Vݯѕ57B2jjNPxGĐO!FC~y`+8캪灭r:sC9bV?fq2%շ-_*З/sCOs 'Ad-LmД%txRh䰹5Ԭk!T[n_ǞB)( nr.4SGgvYo-tRBbϳzBgȨiMuYGkϽ[_hi93/.z] vG|닆^:T7m 5]Fm6P-j)vwU]ާQk^N}<8uD~\Up,W1H祋n}r _9j/e_~v(pZmdωתrEf+6 = T-+gP|Wֶ߹en֪^_='ҥ_@]`L{x 2 Ђe7D ZJN*Sy_Dl,GLh=BtJ͒\K;a_! QDaIY]B{ &O?Z0tS @!7jofiAlέ1joSϾG|mҥygYdJl )7@C tCIMG_ё pHKl/,/O%A NWljÑQ>8\Vc}AOn8-RgRG -eB4zl)(fYSJ4vUn.Mߎw6F+v!:yaTr'7}rMw^VFBs5⠐jHoo+I!n|ų{g rjV8]wE^ẠoLBO o4eߵ`ȧ*UHMSnM@9M'P<۾>nsF xyH7܈@$I\,dnAavJC$,In8n AAd|AA#f$-hˋd?A5N8  H`PRF]gnU6 IDATŗeۄ…# $B$vܒ`ǰpHFD# $WMYӷ[r)|¢eQ.AA$N0%J)G- E:4e-bʵ>]9H0)&} $\8  HˆS-M'Ԕl!Y GAI4 e5Gfԩ'TVQJcWEKYp Rqq^zVz.Rs BQT8- 3W>kIl)+)m;v&;ɗ2a PgBGj GKȘ}x9^ǷPTK`q|3Sj -keG pM vyoʲx>Ao_T~!{G|Bu3 |(DxoPp_u+row;%|m̾{ww6 >C -]4//p,Y$//////77wwh4$t ?n08?*kb]L"]6Z\Й#\DS@vSUUObtҭ KF*Pe栟b 2=Kk~zm˅!?`}j?JZB$C9D!5!!nS u(>Ō{ojjxׇ8p^x׮_|qΜ95+ ;pg^&J誺REk|OO… ;::~3gΤygUUU'Ov\ D[O6AMGm֭#wr9njBpY->Wb(uF*^tkMZҝCi_,5˴J,y4%t&֔UrǑU6^A[fM[ ''~uǯ 'B-oCUdAf>OɖD} 7ei{,엡.X_z###zU*UFFFoo5\vy>vq3Ie!u^j_ؚ%+LqKF 4%z~ȡB& i 6M>Z ra))5Xj4%` 7N)L PU QIr-ηXXg[m?bzK򗯁'W}g@)}WwwY\)j,,+ƃRFъwl?Zѡ8F@Rh2닣d& &I-ycr@$Bx2BSz#p6 X( cPK!H|!J/QreάN|ZL*M(s{+sfLj%AWK4*P7 S9h8JJ-)S zpRTo^n~/~uYND- Pg-Ǿs$pۄgZ"$>rO{4 .nA_Y><.@9]T͋>kRҶ䶧_}W~B{2gt7 Jx1%sYrۄt#%WKFd*|I%i u ä=Mw(Q4)<'4 >mRgR3^&tY7iO0$yE<Ҹ.wųAsS8Kd !HX]EwwO Af4fВr0fR[PT^nc2 2(kBd 2x rAO3㤸AfZҔ;Im8` *JZbK2AHDZRMj :LI.ke tY+m.1I)miiq6@f Q-eaG7V"AAdu8G}T58nazbu2fGSE  2|+3Bɯ"05I"/ABuJʩ0@AA#ޕO&9n./2,zl:3RߝDT[>5__[ ރMN7O4 RIqZflhPJvj֭\K:/FdД;]񍺝Q"ou.]abJe\5+ o7fɓxvحf2B N v;CJC4e-JaL0A1Hù;m4@lsJW 0Wn'QӘ.̔Qiite12)Ad9:u_uE!ҕGn>^sȀ諐;0MS|:9Ƒ3ع%wV p@cǜi`?vdN;וɷ{k=sl2OdbsJGe%:p4[ N A)JG vklpwi `羶nA$`O=2g=-8}q,-q# z6}4]-]GG4dn Wd~zjΒ;f dn g.}Y,t} G{ œgjB%~!2о T!?XbM6@֒9GzOZiܢ -م+WݰtdQ~>^x-Vg5m-#:AŅ׽0gn3Ȟaq뾙9Ys@ 4@" W^1A6BZAX SN"勁s̑nYs`04{`Sd⼶9̚q'݃_* {z  ɿfNP-P 3+oO{>z{ CYJ;a`O%Kt|ڙ="8`⼶гtJȟsho6k'< ZepVܶji[`ѵEsNut"wN#sA7j`{Q~>HNwwŋozOD̰՜90vTjQ~+ g =wŢx:10';;2͸%)[rTBg ~BdRXk kn< sf!d)ljkB!xŊNUKekTj<3pH ~,=pV,$x 2x8gUVo34\*$z2@_ 2S#'PZ鞕 Vܶay¢UV+eeWj=>11OýhUЬyʶiDG=qZ&EKP`ը^[ QIvיW(A&iπRw$tBHje\ NЙ%ϒj$F_Ȅ~|![_NFi_vZ  ? DJGqBk$K-uqT .> 1WS0 RN/Gprh3U)8z$n6)kq6@6}E m  %IZԍ$D h'suڔ3 u8 dPi5~|A:Q̮G\.-@*ab-i 6qXllqxRlES8TeDWH#2ʚ{gC36ygYYshާ3CH3hʪL֒AӺ&Z+teAuthe4ʛfNIB`\帬XnBwƮY9> ӀS.'s3!ʚ_@ >O-i5jIl0j`CE'i+'CC  b L&IlhSTZIiV气-3SgQN5r||KZ҉-!&77/77-k\r@|SjZhYd5xJ͑3a DRV@A eYӷ  2@A-! (# XB  x0 -_1Af$8. oʣlc-0B;lG; L_}Y-̴%JdPzN:; S*upX#/3(oG%-tN 1Єe#37:r0AdA n6YSF}{i KȌLףA߉s6LUA}r@MI@S# jӦhm  4R4n)4(`S? pnwA$&ٖ4E u9ű޺V`eĹS9+ }ҧP{ !J.A`VK3Mb[3$ Ub/*׊]q%45ĉ.w)w.hMߺXHiZ)7O "#Nl%Yo3&aR In8 vZ/sC[@/7}w|?}{|#Kˬ k~jߘUz@֎ygm Adjtu:y3Ey9DH# #phyHo߻Qycj~Ϭ74ersՋeBPZ]?Ch5+Nx8 8Ja(4)k=%q oh]g͏dʡ~Km)k,TΦ֌; b!-cM{~X55m<-~hAi"{x M$y|T>: DTAAf\Jc-v-p )4V.LV%`ܒRXziTlm9t! 23#q3%&T,5[`24RIܠNQ]WA*re.Ǖ\/֚"y&SP3"q4[&A.UlSJN8ESR AAO+q^yřF tfat6!D>^l4C=qDQ3SgC%_RXҔA/&s4[wc9AdÎzQa?DڗfY`\v42et:_F B+~6E[gQň LMBuW ]-\<0|.!NIQAABp\J(AA$TMAAdP5˲h *12hK4q]aT*Af* aC 2x_C:>9{!y*~eάW/- 3jF®QIj FcYT+T`^vaxxnl36&x cdfpn̝Ef+\17eޜysRɸ";촜ԜԹ)s2deev$x#GXTS&;(R`ر8\K.RٽQ-/SJ)ViwRgEgUЮW%AД, "ѭ5UH)kऔux2 ,'Wl.QT~-BV2 nRs(`pUS,˺B-6%y.>+ b Af vB8yKX娗^r^y  ~pyXOjQ0P0JMs&?0$trǔ6t|<È2WǗl7^u4ފ0'a`T^p5yŎBV,Q@ޥbSGf߽;33[<6I{A!C[^U~xÇ#G>ǚ~xapUVׄ)xF tf}{T!w᝾a8`?QRڮAM܅N8/yU4,zU-MYdы{0c~@Sb/!i K4Q*4ѡ ( ۹4>Y*b` ̈́|ńPRqahPǎ9}75CM"'2 2cy@yJyJ)% 1o' ! q{<_@y T|W,\C@^ }ĉwvvu9N?yuqIѶw_Y n{>*7 @Ts#JҬU n} ̯ C.-cuع0cTD0׃-K{lߵW6'//u=<*i _MRϗ;"mkPS,=ƭ-C.yz>J=i)hi73TO=]W;:8ay< [wqx&Af|0W׵6L= ^v!dO&۾:xZǧO6wӧ.܅W9/?;"d{V%\3;`@T$mMץ.MgT3n׭_-wENOp<8YCR3ADM4nT-EQzS~9w_[+niyvUqշoZޕzih,ɻ\g{й 5<4gcs x<# ݶP-8 }K JsUy)i)SRJa^*wnW~ -1Ҁ5MIų10LJ_?wvF1a#x7`yB| 9W\r=wgUkxy?v? ;~ep3exB$Ix"L$7KQIykJalsȑQ^eϜ=C)}F)isscKϟ?+ d]9yL&aҁ@YHf⏟a4 DM23 Ih3r2 Mc^g 7prz&#}_vy׬|qK6>Ev7n̏8n AfZRY@C<^ rP7)C+{?_yOܹ?($Τ񄨙ٳqq$.T1(7 \JԴ<g9*.re}͢y[`떭ʑV?ռ%{űo2SVJ8fJ_ޘ P &A񟩞y7?SQʳޱ{"0ajufFLw Q\cǎJ Q|inq2\Vֿ_{,SZA,GEI$>)O0Ј7vw"Vz`,k޽J~-d`O _L " tq#2u`Yv"M_p <N7+afS;$Qyi sLF=}v8+^6._!䜾]Cm`+'Lk<fxB)Yyd4?M 3K0qRzQ˶^/exޱѱQ0%TTo^n~ C|/:\gvwn.ԛ %=svY d+ 7[d&7;:H j : 1RT r F Yz#ohةs68֚:hmZ4*trtʅ k1EB#/FX,V;)R*fY,x9r@@\׵OM^/lf )a o|q f^Au;i@y&ō +'z/e'TKu) L388VMY/I,:3< bxXq8e@x $(J# )T Mdf!LGK Ë~Sq6gXP^XYDA^kQ?ю3-#($R^T ٳUh:A$J9Pc#h dưgRy9>fA;OPs1蒾Ma5=,/)U/$jVey`%KBG>1R"3Z/"N:ۗi }Y XljIg)SqyatfJaJ +wn͌)H",DΎehpAi(:8y, jUJJ"P]GNtFS L7!4Iy x*%5B@!$G# $ LjjAA$8W2  jLZAA$7UJ !D%-_>VCA$yPT))22T #OK iiigqrj $R%*PϚ5{T;##M  ,BԔh AA j  <jb AADY:U@A %5%Pi³M\6333-%-T*NOM^#6D цlä2 ߻󳟌9gYJ/evlRN*zB!!4B&<9`p*{0{Q}&ל45!Q& цhC! &30̋o|{L2g=)AjzcG9fF G!m hI@yl{P捍г{ݝCkŊ̹ҧMUv.snfu/?$EMRjFC 28^AHX[ӭ[ո{.ٸOh| O?_'RhxGxOXb4 ! t}i9~z#cE='_C//K}<Oŀ@Y.T.ms^Ufj!µ[AI1NIr5  3 :ϟ<oቃx+&=%؁7y϶h /Iľxy?yyX/g$t>K6hl6;wBYwuvp*g jZf@Ps:IDATؠ';"<|$~ v-Az>8ڞmD;vm}&_'Xt/a{#dI|C%^Q5roms/NNgIڷB.+}m}{# R;;`CS'1U}K5yp1wd~m{oF{_\ ~}϶JRϜ<xӾš+=f{챗{zXREjƇc+#5OȆ|9r ^ nnVRnUG>c >;ߤ[^2#~dnTo~쥊a *",jI >MS`s/R rӖ&+>1>3R,+V)h!?~i|cOؤ'%8/ ȴaOƉsq؝{(ôTJ@y1ͦV8oʅ\<߿ <  IreάN|ZLTZ9=~•9"v yy0 %AI"jM̯گ.I*S@;[޲QDJԜSXęhA:%_oy$Oů̙[On;Zܹc CSh!$r<KDDQUbJ8I|C6UH~A)AjCRu48I(xRc w枽}cv0s=}>{ߏY @yqq3_WKRo\M@y "휉`f4n"88 f_]S:@&/ qq!!88sb\-98L_883Z&pZkŘǤjO8 1TCGEQԀM*&xeW5eY9Ԕ4GrԔ'tm֎Y9v L)88'Kfꨥz= d!Z=K.SRQV}aR+OBR Stu]Ym14B88;hoI"2ӼA-d(ҒKP'zoOO]U;zO;'A{~Z4Rr88I_tZ򦉚g0 2a6fP6:UdJx5k?yȳ^*>mX*6 塟O %YYVM=6QLsSuRk&M#s8 HT;s*MK@~ry&K =⍮9̹QsǙ',9g =uZrgh%WK#/>(BX\{q83Pvwg>q=57GOS{^̆%qFctt|q}}˗.]to1E88΂bt} K?2rرCǞn_qw58zk:PLo؀]ϵҾ}+XڷPCݸle߲}V-[3ve7 SHwCNMs-8$p8sKQKO{⾭}c#F[\WG=8rw ppǍ>G|ȋGwntfl8z/>5q<1E/qo:m4 mkw׷7|symʎY-߾;vrj>mvn%{;~+82^̣.Q"a uj<9-03K[3q:[շЋjW\W!{߹Œ8 qCVe"鈼ɻŮ?woo>9g↏ | YGt΃#G_9=o7<A+8iccl]S9p?|s7\]^xއ}m̩VlG[8mE8Ml6FDLӺ=v׆#: =oWW}n{hwٹu߲wl;+?e_Ϭ8NK+Zr紲WⓟiäQo3dCx}3۞x#iƥ&v7ƶk?K[ յw<ݹ33@+?vz'^Z֑^ BpB|b~y 6Ȏ~f.`ks_guۯ)lB REDmXHx+݄z+@najq?8T'|j?#@/DyoTU3NH`"$X%##(WܠȌ[-{RM)0UlEHX$ dL F!T010%dSM`4Tcn,Ae9hS ,&j[Mj5lI'#[`0  S-H(jzj!pfTSxffJ͔JH\-e9,cIUS3Ƙ&3%X`)DL$(Di嗝30j2Ufl6D`έrM)%M§a &)l( 3TB(ZV+jsZcf ’Q.MXe@U:R]ZZ6>TIENDB`openmsx-catapult-19.0/doc/manual/manual-purple.css0000644000175000017500000000042514460023655021617 0ustar manuelmanuel@import "manual.css"; p.version { border-top: 2px groove #8070C0; } h1 { border-bottom: 2px groove #8070C0; } h2 { background-color: #C8C0FF; padding-left: 4pt; } h3 { background-color: #E8E4FF; padding-left: 4pt; } h4 { background-color: #F4F0FF; padding-left: 4pt; } openmsx-catapult-19.0/doc/manual/session.png0000644000175000017500000012046214460023655020520 0ustar manuelmanuelPNG  IHDR"= pHYsaa?itIME 5M7= IDATx{|TսY;3 rGB2C 砵VImkT̈EmaBTGWCTbyN!UD3AV1쵞?3{ C.k ߵ|w}Z߽/nѼb ?ѰT@C߯H9xD\ AKXAA{Lh# oMAAAAA "  DAA2  dAA  AAA$3%n:J@d$L=aIdԦϠmmSd*i8$<TD4LVqN< ΃ RpuP[ͪM%7b+e!g֍gq6ً>ye#*dm<#P}'+śW/{ iE5t`ⱭZ/ᝀ9 Xmm9sZrV`l`+YV[ko=U6pIS"1?N҇v? L0~g6;w̞B呚Xqs|<]~<GQ{`3`Ȳi-6!4zY :1qsz#S/sn{Y*a6&{nɁU,/d-7Loݼ q\xٍ-yik>;crvhw%|e.Xi>%nc3*еs̮x*tN Wwm-%CI葘#wxI 8/>y2~,[mm5%EҰ5%n*lH,lŮU[7t-kغ *֠"gvIHJ}|z5Fn*B|+[ӊ#śGY'bUKDU`9s_i&jȭx-z$̘}>سg7yl.-jGDټzh۴l|~Aذ Ŋ–A%˶ܳpky\l^ W -8׽*4m'H!pew%+N]xqHhׄӲ|YOV$`wFmjeUZmot4iA %t>A)YU#㜢Oր#mJ gM΂7ZsK>fvƹEjc+^(ѕeaPBl7YMJoZ7KC%۵йO%M!9sEi!kch&\a\秨`4.ZnӋ7LhNe0!4 ;mL3/T/ M%y<'tӕFi A2Aѯ/n2%ƛ&z{vmonY|gwx1C)ܑj.R\VkK/,ug) V!JťꝪ8g?"Ƶ5tĠWoG;‡mT}̌1q].rpZHiJ[Sl-iwirAU8` XT^z\J"*ٝupJ,zPMUuV<Mv{CSnu5NWcj`J(U~ gƊp|7f\|.|yV}:-;H]ޱ{#W|̕ #}]p޹2=sydPP]h3z^LU Q( VP^*J#~"nQbMխU 8+[YtqѨ)V,bjJqTu.z8Ҏ̙2izOkq*tWbiHu)BYd9yAj-f%d b@9WGz#cl24{έ8|l.+1U:7\88rK]uiZʶڮxkkFy V겗oM~4έ,rzâDKFiWvӃ~$ *ddh AId˲̹ 뤛 ʂG Gǎ2eh̺pd֘cFfi5: ;IYpw<4^+;Wۛ ( 2*2gsޑ1BV@⪖0Es.}Hd0Yk2(xDs.sυ @#{> <~w<4l0m{h>6KvoAD^"$|sΝ;wڵk׮]w_tg0l||+%G2\9wo!}ǔMdIIFqWh*P~ɳgOݻv}mqX!g_?)RXm{5m}6R^##ۈkkkꫯz֬YiV"n>~k{ּ"N13eb֔Y2Qpxw=~={xSzW6Ϫy~+u.y3c7Gn|?_]wM; pAF8xpڵ,'fE7d:{*c:^Shq%t#D%̞{?n^wݞwexᇅ.&]w^Ǽg&Nmyc;Sq"Oodhrpof^:@ʄ@Do3rH/D2W e3i0t0TP5 hf\ =/{c_’~q&m;W^O;AqHd K0dZkQ.Y}vZeﭼT! 'A0Bkk?*6{iӦM<!rH% pcfLd2 t;2cE~.%idAyvK6G8o̙`NJ%+g(\g ~~ÓGyzoXdǴ֎ב? hR c8qQ.xȴi&O?||߾Τ!`&k c3GNI2HD:/qb%~%uAÿd]Ѻ-o;Z͟S-]?6,@z[kЙMVa;|"A $ sddJ(wUt O! I xǏN26/ɓgϞ]Z1>Q?!'{ "KK}D+JFlʾuo!>S9uO+Xo^g64Aphw5 \bSBjhدyn:Œ;Nb>o ~lBDg¤;kOݩ?jҝ~}gyz3m&/uE,Ѭ?[u9 2' "T b_/@TB)Z1PA\}]? H(HYlP^Nظ1C?9yù u7qs9Û2! ]'L\G,hZl|:xd33߂p{ ,xnAsO.Umt_}~/zm&/M&3c+ܲbq͈&%2sK,4`/ePmJsCS sj:MbVi@ng{j]J×nW" jT:e0idfĤ3mSɔ3բ "{}MV˨)%n5r-h(Z6UTe)-C9hT:eǯ-_?MS{Ti{@Eh썀) <x"sJdIT:e97}!lV< ڈ Lߚbfi׍T#Ku PePf%7wtЈ_ycd]Ӹ 6鼴4[1Hq rN|e"gx.∞27h˽SLj`W&|fVpm^ݲty]~VΙ`sܙx 9r؞Q[V|9sHgdՖê“s*d/- yN o# nռlҾt2_RGf ުwa6/6{?W23lٽƚ͡eYPuf)}ktu\wv oI-o~#Ҡ Ff%F/k <o3.]]'o>m{2.S|o5Ewmߪz qJ)AADJePۦE ߮|rҐxrfզ6M/UhFnEipeM!Z5n,+7M84L  ,6hs[jѽ3U| [=?wJy \PyJrŋҙS<(W͆ڜ CK({>whs\Ҝ :r  $aϼPa5Ё3H4sX )w{]>;AqH<4R,>;_YG%Þ=]ޘ3M  %$ $ zۨQsAK[sLh-:w6֪1ވ.#e4IżR %5f(L4~ev5|Uƞ3f`uǏr7|,U A DU@k$|)dp2gPH3c.qq031fHo!3'$&ed]04# HDS3Lʒ|~@L,d>?o+w|:kM/7lKq{ Dɠh<2aZ%ҊKʒeY: )d@e0p+'JM[/塟WbТ/|~}X k|A3$ci &<ɠ,X@Q$, RIg; ܸocncfSȌڅ/?EN(bp_?詏|ܘߟ=Ʌ>$D xpMDg)C$ 24DGNpE.2Bk]rIؠ19vB4 _f8d.s!A#ɹą|Wyu|Aw6)6GyYrOtz[X\vzkYGI4)g55o0Ag2esd_WI7A $:FeG Gǎ2eh̺pd֘cFfi5ek[ ,2n?wY`ݺU~(! &Ap{՛'96 2S  ȕ|;߉#?~Ά)}>SiaBELdb oVGbMխB!]/!hq]j MDP4†gWpnA |~.u, y IDAT ,$.?Ͼ.?9S-XM~/wGڵKW>f`[up5FRXfwyբl%IS _"8O*U.WІgU2PF ~а{p+ /~Y_@,4aCL 8$ZD\wu \lvZ8+f3`<Yhjuw';wܹs׮]vڽ{w;aOnk^ i rlcZO.H, WCCA\%E;s<{ٽkGB^y BA (82Bp!`[YIIL?R@p0bخkkkꫯz֬YiV"n>~k{ּ"2^8U ਯP֝)}xD,ȏ) .,dsTȐD\Q8{oq㽇?5mwe;^>2xg/͛k1?vX"ۃ xǗ`OxҵtyYU?2DiW%kD^<8bcxpm3dB2={ff\y)J4hy Cee& DMLyd{oP =,gϽoץf^u{N9s̙?ݯ;dC3_39)AESHG*PFU*G4% ҷ<~5EaA~r57H7 m@6+Wxޘ3,ܿD6A n|IYo@ @Flx*_O֡CN{=;222J-A_?l0D2O2 Pa+$# C9eF?(V5W^`ڵ(Z/\we{e/) i<Μy vQ~柁u{W<8(IF第]]%TC~}cvP') tykNT[ p5BޚbA.vG K]+8DKkvGWvlxak2ua+ED& û (lCH1\&ftxu?Gu.?sܮbgB, Z ۼ'[S\FM)/BQԇvx뫄(-gy BGVhU tJ(.)Tlykcip)b-Sάuޖ&MFykteidcqxoMmt?xӣiJHA7F!0%Rhs!MA.R+=TL nEن euPpy[U}Hث[udWW;+kuj6adžZEfխ݉8lw6hjthqk3FZrHI2;!y .[ 9 "L9w|fA '"Ȩ clܘ<\pwwѓ e雗L RTł2u,(rx6c,.g6aw5W]5^AYFgVBAfii [{i—0fԕ%2AB{waAm>?o+w|f]^44Qo3A}0[ͣod#m2 0$)V[gMT! W9)7:Y̯e*.FYSB~ntmquuQZvU Cb'^1.'a!2U$,fXO2p쫮ΎLHP~(PIː`\m%[%P/AelRH0VI0q >#;L92UuK7f fTwsDjZW'US&}m/[ٝ5 ˚ZrBmU5X(,v98o5ߣAQ,1KFk+ƂCipja>zEY\ h(G~ro/ߏ޴F2Ŏen w/rǕ肹TGDc.cFd20St)=e2$ƻnjl'%3ݴLe3MCˆ4iw:A)*?|e_%Q`tc.edqD?AA NHA1HU~Bp!$mz?M#2hQ "췂  dAAɠ)g5^g¨  }SΏ "=D'yGTAv{UC9U;%DٷO>+ֱ|Ei]hYiGXY"ن`}e,mb dx5sU~<mꁃ˲F޵1`M1mg 4UjkFlFК421ܷC cLȋ; n2V%ZTW8~"ՙ(m-N}V ]EФb>K㛴wzAi|!N7(}N3L7HHǴONޣ O9c1fu6'w[m"S熫T>Ru% < RWSBJܐؒ=OH<;}AAqs#GOڦٛb" 82ȒgvyܡTUxk*DKn~+SVꂻR: # 2ȱN+c:.wc-BhjTu9C:U3TTJAAzQ/ڇ  #*de z̙,XW (X_rJ8AALК W eq[n4o^SOnbtͷ>> 狧;q˭QP?:cVrNiG9OTN: :,͛)ywe^bWE}%shSU u*-9\$4"cg_;he8xhuPŻ7-EĻ}3|?oZs|T^8/hrLլ'y-?7́.v7-;=&'ڕD fr7=n$1߆w:{b_fHAN봽,5I緖[+?L3.X25<嬠U8,Uw57 ,=<;EVGUk?3'j/5c3y+B1oXsaO,:8쭈D}yn̙fnD>~Iv?ao)K|eQ`x67ˋ J`쭩T-py"rjJ]pW*ў:7\6@De$)#?v#?n \{[Mi7F갷޴vjۯg%2s_xf}:l8aO=ts:2222ȱN+cQr0"iF5Q3Z5CMj 4i Welvy[{5+68;wp՟B\v[曂"8hoP"wkvf e1 ?~9؉[Aͻ۟:Fkְ_B) ?_ޢM) G䶐ތEFSłysDdc}7<71n5 "MT5#/egSZy'?g?H˹ubgP,t3'L uqoF'?Ow6<-H,k?B$O/!D 4R sK,7jA "YݷEAAbZ%̙,XW}ykRrJ%2 `Aqt>73ҹsSw369 MgBWi- iyзft(z:LOaD|DҌoPAd1H " ==R[S[SZn^ـbZ{r= %%N3];Uݾ3 Z TbqTSFk9 O&V7MֲZmz8CY˓E%zkGMHA$WAe6T#1B:HY^G}̮-2j%^C+AA2( *X e0D(* zgC~nJ]#+Vhu>L0e@$H&su\. 2L&0Ĩ  zg~X J] 'X-c{tQ?JQuU ,t#AɠD*έ9UVRjQ8%*H NTQBd_W(ђgz[F  A U>θѥAQͫ>O)%%#'nAA ԁOsJu[:O(d֯6UޚW*[S>^ V醫'evg{+L$)U?,|WYeU&h:{zz`~b1I22\a_Wi i#S47Msza&Ջ8}7'2T5n{b]YlsXTt79F]1,F8˙#jƶ_ggrc#'υ3S,ಜ@A/l,zH#V%H[UT JN3 ! pە8 & &d^,ù~8ɃzxtӖ5Y`>~1hy!G]; 16S"Pyycn*ӂ3r.kV]vcs Aȣ(1_OAA2 vix>f b`i6z(4+2H ݓ3Y. Qy<0H2 R AB.@zHtu2\dY:Δ> + GeA;]w+kb ;ݍ9I1A#ƅ9 " M˾OI=o:c: : ʼTkO)b" 1py/, EyR@y9 믻-}=uvZ' ڇs̙,X/n~tY ) tx~ỽEl H/@@iDLp;; $U- n%K\\4 cyY觭dJl}YePlaz¼W]_b6l0m{hGxh/n5%"]K.8v$oG}_\ccmbbɺtFIOlj|"z||+{9%#.ipwe9r55nuxEQvV01 wכ& ;”no&lհ?ٳg_jK0'M$m&¢o&R }1\ Ile*&1&3 J 3ӝɡ={?ݳpxÇZ=lؑ#nj6z8$]]t3|_{,9U!mnY%au+ 6;N4i7ot*~wkujyqd+ߘ>z={x_yGyn~_6zGGO]?Z&"~Ydec`OTVx/2\fXnuV &8c-!eH$e0I)C2eH$ƾn>=L:%;<,hx[pS IDATw}y䑽??[o)y[Qt_k7MRBAʆX RUUЉ WEP+T,ĸ#e^bf&4*l^n|}kg&Fٹ3'P~!-^}۞3'U4i{jʎ>y8 mN; tg3S'VE̎u& f~}^6SbZ #-D.K:V%t'XWA&)=;J޾ʬv4OֈŠajylIOd5~) H cqnJ7d@fX[m{?=#nٻog?sOkKxqOcGóX{ˈcFX^ΖA1 *$@AE @z|94ٳGOvW8]?3K;RdnbLޠPTЍMY\ϮN;qǯ|SlέOl.+ W-N<{lɳM}W۵CoMyW[:OĘ⦩gWzk*!T&sMm^Ѷ7wvK5ɐ.|uk"A1Qf n&IpUYf(PD9<3f!>rYgt[ S/>md'\Q0:+enk?Ѻ}uv?ﶇeHklVZ]lURխ6Ih^ZoWۭ Wr763-Vb eqlU e8*ԣ.ԪDb^A$zAc0q/,)aOQօOO)›ي$Wl;bR'Bg6iZѺ6^/A2GFFX" @S@_FE @ק#z}0㫘^}s:Geau2V%DU,-R/I$8<A)y9JPR!hM1b?Woڴ=(~ҝ3aƤ;kCi+?5[_h(OhIw'f 6;_@C {& ,A*ۃG+) 激s~+`RJ3H2 νvj,R4A D%ɠ Iz.8~+%+=T$D G)6 0ƍɡs/g`uZ\7f(c ` "(\I*x]B0! dګcobCf 2s˂I8kd?bs FaUY$բ@@C}fC3=B`F "#om@6їrg3rxS& dk^a!Üz_LqcUF s>e k)gyƖjͱ7KF^%t_21kĬ^1Lzx~ɯo6&%WV2 aP_򫟔18MwdX[QT_ 2UPzV O9+p۫cȩp A^E>EJ# {omAfUУ]A:Ur/\y Qh zʋk~EZT54u,@Jh>yoMB MO2=O!K5ֹ5cVg^=٫[] E5|^*?~TSNu9͙㛎ή._WGGGGΥKF'$d),;c&j7ώX?(۝ s9ЬNTXASukUٝbE44{&P*EoSBހ 6S1qA @p腅eq}jU6|[aRXfw*ZP]l-I&ْgs N8ys/u )^[un{Y[0/?*P&*/Ii* #^ l!ٗvϺ]?T >7N8=A$U5juyolfV\3`b  S,Vk1Z~9J*s1z_qm5.mmqZɇb]~2Udj.V/^Z TeOY@B=~A&~rXE}R1 Ib'OO1aϼP* R}ǏMYa221NxtӖo8{Y}a5t$/WYqэyf/n+& bpB2  AAA 5DPANQf]uvr@4a:Q9sj1$I2\whEZWJ 熾pioE~Ģ%isņၞ>#w(#OkLAҳA#k7\ =#nzS5@)t5<ちrQ<ˣtɃ9㊢9AO6~1|˷OWoZ|08 ( 99Dh 7%dq|`dU'<-ߜ7n e\Y֭- ]v~)֝Og֛J c# GsM`{qs;D%(SҖO*.0r FtdiVTUYKKTC=iMTyޞ֣j*x>RԶŃ%~=z (P$gRu rDބ..~|qOccKKiz:LtM;KKn,'7 !J)(*:u., r ^}CEuu Zh$߳5h2<QNT-پr.,V+US. 0AqR0\-eڕ O\8}|-K ?£J BAzmZwkgYo~~<}/%J)KiXRE;.0ϴ87A كPv[cC ,3AG5_W5۾>.4؅ߘ. >;1Ǭ  v?SP|o+ Wj\V㮺WJ[hGf4!r_JKafb iNZ@)\}#D_@{8i1p#D,O:4e84dHĥM㨬jQ'_ RA bq3L/A1#WɰtBbs%$ˠ,Ca͢=Cr%T弝 10ex.45ɅBBHiPg|6:5K Ǵ[mm& 9^ƺ.%fq )[G BDBȵ%WwÉx`t𥱑@%WB.kATJ)^[lmTԅ['FhS LT汶I][!N [UIO ,OA h :E888AB'>Wё᱑i>C#=ǻ~_:&&A1ckd2&ka0_Pgg/ hZڬ7A r((\E]X`q )vkXܶ6 ],UGi΍!+go޷zݓɗ~mU_5TxDɠLg)htzHx2Aolc'_ewd_ȤTUZ[| Y貀R*< <7ALչ3$;{N{b须5(ی 3"#\hf!WؼjSQ IVvߝD& ӣXk^%)PGݝ'Dk͒/A7TxApA $:.1-muDpk$yXw<<3ze)Z;:0ѧ*$#ҵw4͏/U_Ng8 Bdh^$¼#q&\f,^'V01cL.A(%7\6hg*1F-hFiq \0Yk/7)M936#uݻ'o><99oǿ~wVMpC$e.ΕĈN'-!@t:cDKY\8cWZK5д~칿!i7!$ƧO ϫYTIfnJb>j c@ V͉6:HLr_0`mDkZ)~|AA GKwU(1Zw8mu$ʒe=B:bzGpVxbR'4(! ,:4 WR$Htv ƬRf@R|ᴅ2SM5z2 gVhs IDAT ,dĺjieRPgK*ciy[bƦ|Q$ʤVUWmn6  ȂAunnc8(=jL:ȡ5 Y#ArieXwTN֛-1%A.N#4Zx}vBNXn oΟdp8vߎ]FȜe⹜\NҬ,$K# ~%+tKXLHMdX&8UҢ4AY BAe  bBvAэ6H'yw4gФUV3?fAfR$t\z6g͠g;CD  "e }zAAePX:D pi-xv9A #lAdD0lʑEDl丹]+!wx3ظ\i:&?/ M &pӹcc!@v{Ԟ,$mFXdeۭ[5" TlLruy<2 o Դrl)sImdX:J+=5^ / 9֛_UVSbA򻺍fX{WCnIj-*h3B҅Ćm] YRP.abCG8!N!0$4nC;kx\vװ\Cb䤭PYT-ؤ+.\Fрl4i0Ӡ\JiӅ=G6nk eP/K(LbF[GCXz'$g*#X(՘Hxz| 6sK%>KւC`09ֺrlʱWJGτ^\9ܞLJڱWVXpCmʱ}׾R ZW+nO񇮍(%>^ dyͯH",cMCAQ*]prkF5 +3AyKv*M. X:E6 IhFg'> .?0>;iI^l1%F"ټbN@G,(J%Wn+IPD ‰6ߎ X: zEhFRB Ӌ"  re40F[Zb%7yڻb  .3"6Ut*_Tgf4ڬFB1 澆NKpCdyn*My fq9yBNZ#eǪ'VwUNm^*OhpPYLpEA qdË-<x@ APK'$Y'a !, _9qn'n[xxK~^ t}O YؿHFeÞƜ 3%[s7V@?|q#my<s3D Roe((h ם&DG)g, d2TH/Չ>NpYSQD$mrd2A2!:ya QBS!i *2$GA<%@yQ,QyT HF|92D DE%(*AAnrI "^hl&Y$HFƜ Q!AF ?= Qk#kcx($`Q *Y8Le,)2PNBFiu_u˲3 W'Wittyy?z79U{FWIp%FȪTn|۬ʺ$k294j:+mأ_. Y$@x׾@yC[6lp;^]~ʵn[WO__*U~ͺu7T+O'1 / Q{RlIhON F*a^[ؗFl0: _d WMjʑciC-^T*+8ىZ-n6^|R L.4CϿhyP 8IJn#\އCߚ5k|>իJKKWZ0oQVV0* Maãs{9ͽgSj:HһSV6l_ˆUQ ߽ۥRIv{lI:Ո[a4]i mA}SؘOp9s5Zh B$By$ DG; u*B @(P_\t?-۷o||W^w><00_b|| 7/M׭Dw@Ws10.&r3OL1&1t %vCcI҆ ex:(ZWaE)# ќ kQB7l/Η?M}ГJ`~ӛ!M잍섮u6<AN/#FgZZ`.x;u%T"Ak 8J?? SJƆ;::>U'''e Džc=|ƽGPFRA>j c@ V1l/2T(YkV7Zm>TPt>bTX^Y֠9vau̎= 㻎|Rz=_=BT WoGP о?zhB$''n8_!~Ǔ]vSJ]SSSK,QwOZHf:҉~짗N ÿW~si3RzS,A,$G_۬׌JVQ },@TzLU%8s 2t tk!~ ^UҌ nmfMk7C @׉3ϯc 7<9TMM})DFd< qIl=.j ZQB-5(ꫯ}قzo7\\\|u׉<_wubI?ykt `yڻ|}ݒ1A-<;zmAwҘ+֫ag{9fS=G3/_ۺCZ!gN.Cnz0;PmkGN XHA ={y?{ꫯtΝkll<}taa!˲:.ykv٦_}'hd M|щ?X~]@y*x  )TMTkSItR ‡h$dl?r|G&CsMҁk__BҥK  eee-]t``o  3 &N8drdŒOh0snnc8TLXJQYs*㑦J8zEΈ: MPa]Fh0qݠEi J՛n6gjg+7 co K+7l, Yomxf ]'Xivd [QBmܗ?su RGL%vMњ$*qw&6Ƞĩprev|ehw+ G;>)/[Y]b+qd8)hu?} &) eP*Td2A2)b;~8EAePivZNR  22f@v8m^AE)<SQj  HHMBȬV{ŵKSN_6%Q_7@UJ  "Aa[6ӨepP*k%RD i8Id0|NR^GiRz`v t?u͝\2E|iú<»LUx R &plX  b FSyZc !6| H<[Wè[;H;6ቃ2HKQ-dqC-12J+Ad V;VjX_86q7x{{w=|lD.Me> @ίݱrkgWŪBs{) qo{O>zs [^ME@MrIGvp8 p  sլ=xh䦻 !6ݹ F{aNJW;~pdH)ҦDeo{oLaMAkmHi~ZW0ᙢw,`uqh``l1}uW r~ӝU3O$-k8巾p A9pEOó#km((X]Vtlܝ ><;R\Ga~Xsdey98w窕P\!Dռmqm U -.pEHV/Kƨ A;^{PPbe##Q]Vι~XsgUmc5{>-#bIjU١spvͪ;B7M 4X Yhk{z+o.:+w{șoCoV\?YRwfF[H sP+Gu]p#=TљZl+e IKg!rYXyn~w6Ԍ{8*(P3PY(MA[YifsM5 E2MSj"jժ2U UpX:V^s0[L 4@$۬ʞLْ1>;1:o6oxeƈ ){ P^률T_# }qӺy;7)m1_[&*PP  s~SlV 4ZApl}1O][iF6魞򒮱t]`G AAf&d"+ SF*SdlG;XQQ F28jB&' ''hlld D&T:4 &x&^P2|;Gx~a4ڬ-ڨdž:[  #jAM, > 1},UmnT&B+7|vs_nآAy@Yy3_y ll 08m3`p]flr; h"F0\6h2J`du.V#Wm}^e;Tyu58ʬiRa+I/ sҲ2llP;j}l.l#d2t\Nv$zu:iZ. t@~%+t$(Tʊ[A5y⶟>AY BAe   AAA  (4PME 2r2SYWi7 Ͼ6ydpΤ^ b-`S O Skoܛ*>;iwF. &W8heDeŭ;M 2 f#6]~jaDmȺz- ԧH]@a" dPG;i\:lXAA bL;l^$iM.;  +*AuH .E~uzdɗ̪`Ӧ|td (Rڤ魶QZAfHv[kؾұւ̓@^k,`Q$A+TЗCJq!dqiw 6mMEDڙ8W,pHGRJ1JioO>p#mBc e I׼tlbwp /î}cJj8tk+6m/AZy ml$Nd^5c-ftZa$0qviD# AdM rUV6.6i#d75Y n /@ @)5?A8k^7UMC"-lϩ)At8(G&vB^gb{LiQJdlw(yȴo)@v[k <iR0s0n]o&`}l+ !:?~cnpn$RXN-MiN*jC3NMԜxq6671X:`Io:ŘyAYX$|"9pDA$2|"  e  (AAaAR繩`C4 4rr N$//+ AP!c*G>890xڒ__SA B೓y|i#'M{_mki~??:<,ZlGٰ1gƯ}V= 7V@qM Yl逸<9fJiA Zwi#xg7``LRXYOڕL|p*楝ݬa?8/T890[JJ`(!J_pɁaBtx@aL9 ! P^:A TN7s*J(m#״1_ b9,/>ܕe}vbv푡{11}bVof=jGa,^8xɓ66q(<1kOEOl@/cۚѩ8MˁEuhQ5@+]8 dpjJ4Dy ()戟9ˋsV(ʹh兹%KJ ,]wv**ﳢa)ƺn_[`7J\QUzmT_hs|R;;#%ޡiVuoBlv _T9U,$&$)Lq$GCC Y$TOMw,fA^T#d쵋;oVO8PS3t*̦w241$OAvQXF1$lWΕ7jxSJmpMbG]TWh펗. bsG K Q^8m !y\s3LLJsL.c޸]D7nZiV50ٙ5;cYxQI>]^T72Zz=Ռt1W nYHU |P3iل.Ad0BO pې-2ZL<-nqqF=^}GR|Ιn۬(pfafSJ9npWX=e*Q*LInIԶLE2+0F'bΑnv|rT^80zb{}yE.S) ?.>;{ǣG=r;}wo.+Q$l4sqṽfPf#^0VtmFncuT[ ؂|w!š5y4@m[XϮ㦢/RJ}˒': ` @JJ)%:AtH  P TBxb7N:~oo_ӧS'OO=^{q|V;?bΟppBc"wpm4dvImšrsQ`NRn,$K#(_I;F)BSu_ita 0QRȝ-?7l=!1d˷'(_eJo?7ϝs]sTzݵ/ڋ.|2MdY_۫fbAd>{sn՚ɞי@⶟摹}Q%kPJ6{&0?w7?Y ZO@Wj\ףB3?hi=>$J7x,24!O6~Op> B%+~t{;v?w=zcG}:?k{uϳ N`?tR[oKy7>Ő(f҅rCM֛Jֶ*{wɁj[w> g}cfX3 <YP*/IIl=.j ZQB-5Q'.x6s;w.MF/~t6LEsqh Aȕԑfګ u="/Զ=808裩ЅOFF 1ݶmɺ')}giɍח@a2D)YWgnӅ%ZEN38ğI~jJty PAyStbgd+Y~}]5o)YXT SKǟm6U ^ A |#gw kɐHD9ASTرcs}|cJ #Js)..V.ӟ΋3 &N8drdŒOh?q((YM) pza*$(]2<ǔ?_+7/OE"RJid2fl58q2nzJ?﷾ r(X޴}syRNjsd YY}%`5)@0D RtTsV1žaq:<624gtR`x//@"f<Ĥ4Ec5zRU^ u60v^Mjhʘ@uLSF* dY'V1+]Fn cڽckddc nmeڕbq,N7إժyx-yBOɁK䪯vl;x 3(L.c޸]3U[L z㦕fUS #ηoX:E9+@u#3NQxnLɶXjt%wk)  j&-D8v/%)oŧ*S0esséZTέ\;Lst'6ݚ1ܥؙICS˚aeZyzYf[h lKt4m)H W2KLmZ9SLzVփo?ء((8BY3Xk^%@Svw6oKdqC~gI) u60 &bG)R:̺m4T˕LmjQuۻjZG2#%*hSeú[5SQ v32Fը澆Iѽp`-6B?OQBz3;-Kcr; !]RD6#Dm}^e'KS\Cˤ7'ؼagxuz{j%JZ4*\.Oę 2 y)@nT*beE (tM5?ڌ 2!;j Zw?| s%W&J׃'Apme1xQ/k=t_:ؤqheŭ"kb;m?} g;">RDN/'B<Od6dɖ^WoA[EAbp%kk" Ȝ]"qJW\f9iՁ( @PJ_ AA,ąP) yAЉoݫ4 aS$&.V A:8x ^@E4 "b9mKb Mi8Ӑ>GD)%"JU|H ~jF j}J"2?7r"Գk!ߵ<4Kk8E38&ʾ0RBaMGq$"$ XffO;=kɨ»۴ߴKIDATchx1~K?abjٿ"mvv/fNGi p?  ּnp ڌ0 т80HP!>A 4xEzfvYaY)"G'LTV_6ql~=GIENDB`openmsx-catapult-19.0/doc/manual/status.png0000644000175000017500000001222014460023655020350 0ustar manuelmanuelPNG  IHDRCxj?sRGBbKGD pHYsaa?itIME'C8IDATx?h`s6@*4K.=B2D$&夭bԂQA'-;oy4t~[?2.ㇿjAWzJzְ'EdH2d xޔL Ò,s\6I$IY<&+@]1ﱗX2^NV6^۲կTZ:I/L'8'K_-G굻?Fe[J-}XP{̳S7;Uز9_ d{A2gO5O7\`}JQ'5~~Uck}iRw{A_vCVԙ,@y9U,vٶj}W˧~ V==*X|z5Ɍ/O'@WS%e[2دguׯ*jc5Wekl4/]KǶ{A?~^Kj2-+y\uۮXS g񡿩Qmr.5J{?1Aai:Kbr2w/)sY˸ wO7ݯ BE)3FWkwZ'(Mkwy$V^7Ѯ&>)DɜQk?-ͶǏ]Do˸nC᫪ knby5`*[Qy"'1C@=v |k>Mgo/:YWƀs9ϸ;ڞZ7/\0=gWƎ`,^^&Z IFz kvLK(v# kw}ߠv ^MƓ5'YŞ}7I^;E{m0y9*xeyA}Qy?Qv6~̮S}fz?ȀWd~0~ ;Ւ4anxhuݻ鵝a!cfؼjE}+d%4RS}'$KWL'_!?W;vXmq7N{8z_K a&YUPc眮u+\j[OgA6*`|ws8ɺ֨o>vzXfUak4_UeN,_.T=~Uo -Qz/Oη7FQKWEptO/8L>xaxfefrᛙAR>3oQ4l>VH?3 ag4?霷ڟy[m;A`0_~Q?EGr3[`y}#SQ͖`i0}5CBcXUZg`)F?4Zo(hɊ~mD739z~U,m>{K="v]b? SEnE)ܦ4^pQVyܤTw׳$[7Yd6[#/my2j-inNgQXCh|IVԒ*gH$Y/O٤3S{ON xyv~7U`muGCFwdΫI% wޅO_V)UA0vG@ėoN@}΂V7py??3]o {O.omUV  ˷fa*YCkը3AuuZVi34}*g4y^ڸb[8~0^F[Է{Le䩮 Fz273WMZrq"߅O_g`*4oog3S>hl غ<܇',s.٧E|rsR# w>s; S75sS8~Z}#]=wϸ_YݘyMwf']&S*jLMm':&|?~&nܵA}8{?dWyf&wFFuufx Dj8Z(ɦ^gԢ_qL>ew9&;#a 5 $ $H2dH2xY"MqrLdH2d d @@]ё[8j9&I2$H2dH2d ; "H2$H2dH2d ͝ pm$ $H2$H2dPMpg4WG @$@$)woEc2$@$I$I nEy&WG @$@$IuwFG ً dH2d d @@]сwFpȝ\I$I I $\wFpu$ $H2$H2dPhyg4G @$@$I I $H2$H2di3M^M\I$I I $h.;: I $ $H2kߵg.юp I $ $H2ksgtKSp3#d @ @$;s gƝ\I$I I $ ~1WG @$@$IuwFQK[p"H2$H2dH2d5d @ @$I$I I $H2$H2d d @$@$I I $ $H2dH2d @ @$I$I $ $H2$H2d d @$@$I I $H2$H2dH2d @ @$I$I $ $H2dH2d d @$@$I I $H2$H2d d @ @$I$I $ $H2dH2d @ @$@$I I $H2$H2d d @ @$I$|MpI8s. @$5G|oA/j .1?r$l \IENDB`openmsx-catapult-19.0/doc/release-history.txt0000644000175000017500000003230514460023655020730 0ustar manuelmanuelRelease History =============== This is an overview of the changes that were incorporated into past releases. openMSX Catapult 19.0 (2023-07-25) ---------------------------------- This release we again didn't change much, but is the full list of news: - migrated to wxWidgets 3.2.1 and libxml2 2.9.14 (latest stable releases) - adjusted code for changes in the openMSX type command openMSX Catapult 18.0 (2022-06-12) ---------------------------------- This release we didn't change the source code, but is the full list of news: - Updated IRC links in documentation, as we moved to Libera.Chat - Build: updated Windows build files for Visual Studio 2022 openMSX Catapult 17.0 (2021-05-18) ---------------------------------- This release we hardly changed anything, so here is the full list: - Do not expand environment variables in the config strings. This probably fixes settings with paths that contain special characters - Build: - Fixed build warnings under Clang - Updated build warning flags - Removed CPU detection, as it wasn't useful for Catapult openMSX Catapult 16.0 (2020-08-25) ---------------------------------- This release we again didn't change much, so here is the full list: - Fix hidden openMSX window when launching from Catapult - Migrated build to Python 3 - Migrated to wxWidgets 3.0 - Make supported extensions consistent with openMSX command line - Replaced Accuracy control with VSync button - Replaced Min and Max Frameskip controls with fast forward speed controls - Added button to enable full speed when loading ("Fast Load") openMSX Catapult 0.15.0 (2018-12-05) ------------------------------------ This release we again didn't change much, so here is the full list: - Disable controls for joystick/printer port if the machine doesn't have them - Fix Catapult trashing the replay at time 0 (when reversing back to time 0) - Added .hdd extension when browsing for harddisk images - The test machine for extensions is now C-BIOS_MSX2+ (if available) openMSX Catapult 0.14.0 (2017-08-03) ------------------------------------ This release we again didn't change much, so here is the full list: - Added noise control to Video Control Page - Improved customization of build for distros - Added support for showing build commands - Fixed browse extension for openMSX executable - Upgraded Visual Studio files to 2017 openMSX Catapult 0.13.0 (2016-07-31) ------------------------------------ This release we again didn't change much, so here is the full list: - Fixed Catapult interrupting a replay directly after loading it - Fixed drag-and-drop: put dropped file's path in input box, not in history - Fixed memory leak noticable when reversing - Fixed performance when reversing - Fixed failure of handling files with quotes and with [] in their path - Fixed plugging MIDI devices on non-Windows platforms - Improved screenshot controls - Upgraded Visual Studio files to 2015 openMSX Catapult 0.12.0 (2015-09-12) ------------------------------------ This release we again didn't change much, so here is the full list: - Query machine and extension list directly from openMSX. This also eliminates the share dir setting, which was confusing our users, as they thought they could use it to configure openMSX, while it was only meant to let Catapult find the list of extensions and machines. - Query ROM mapper type list from openMSX. This makes sure that Catapult will always offer all possible mapper types that are supported by openMSX. It also means not all have a full description, as that is not queried (yet) from openMSX. - Fix handling of MIDI connectors: it only supported MSX-MIDI, now it is generic. - Fixed some update bugs. Now Catapult should be properly updated when changing hardware in openMSX itself, like plugging connectors or changing machine. - Fixed initial value of the printer port's plug: now shows --empty-- instead of blank. openMSX Catapult 0.11.0 (2014-11-03) ------------------------------------ This release we didn't change much, so here is the full list: - fixed inserting cartridges from Catapult at run time when browsing for a new cartridge (it did work when choosing one from history) - added higher resolution PNG icon for non-Windows systems - added workaround for Catapult telling that certain extensions are not working, although they're working fine openMSX Catapult 0.10.1 (2014-05-01) ------------------------------------ This release we cleaned up some more code (most of the session page), and therewith fixed even more bugs. We also added a few new features, most importantly support for hard disks and support for changing cartridges at run time. Be careful though, the latter will cause extensions inserted in that slot to get removed, without Catapult showing you that! All highlights: - fixed disk image file not shown on UI when inserting a disk twice - made behaviour the same for all media (was inconsistent at places) - added support for changing cartridges at run time - add DESTDIR support (for packagers) - made Catapult code compatible with wxWidgets 3.0. It requires 2.8 or 3.0 now. - fixed several bugs on the session page - in the history of previously used media, now also store the accompanying IPS patches - fixed setting the video source when there's a space in its name (e.g. Neos MA-20) - removed annoying CTRL-A short cut for the About dialog - fixed layout of About dialog - added support for hard disk images (works of course only when such an extension is present) - fixed Catapult interrupting a replay because it plugged in the cassette player - fixed fps-display in the Catapult status bar - added build support for 64-bit ARM - added higher resolution Windows icon and logo in about box openMSX Catapult 0.10.0 (2014-01-05) ------------------------------------ Catapult release to match openMSX 0.10.0. This release we mostly cleaned up the code (so that other people can more easily help improving Catapult) and fixed some (minor) bugs. - some updates to recognize the new openMSX machine/extension directory structure - fixes for several small bugs - fixes for some memory leaks - updated to libxml 2.8.0 - updated to wxWidgets 2.8.12 - allow setting up multiple IPS files - added video source setting - added disable sprites setting (for easy map creating) - support DMK file extension in file filters - fixed invalid PNG files (libpng 1.6 would refuse to load them) openMSX Catapult 0.9.1 (2012-09-30) ----------------------------------- Catapult release to match openMSX 0.9.1. No changes in Catapult. openMSX Catapult 0.9.0 (2012-08-12) ----------------------------------- Catapult release to match openMSX 0.9.0. No changes in Catapult. openMSX Catapult 0.8.2 (2012-01-15) ----------------------------------- Catapult release to match openMSX 0.8.2. No changes in Catapult. openMSX Catapult 0.8.1 (2011-03-12) ----------------------------------- Catapult release to match openMSX 0.8.1. No changes in Catapult. openMSX Catapult 0.8.0 (2010-06-02) ----------------------------------- Catapult release to match openMSX 0.8.0. No changes in Catapult. openMSX Catapult 0.7.2 (2009-06-30) ----------------------------------- Catapult release to match openMSX 0.7.2. No changes in Catapult. openMSX Catapult 0.7.1 (2009-06-28) ----------------------------------- This release comes mostly with good news for Windows users: we have a brand new installer with binaries which have been created in a brand new way, using Microsoft Visual C++ 2008. This means smaller binaries and also support for 64-bit Windows operating systems. Other Windows-specific changes include: - Catapult is now a stand-alone binary, statically linked with wxWidgets 2.8.9 and libxml2 2.7.3. - Unicode is now fully supported (no more problems with localized versions of Windows e.g.). Note: this means Catapult requires Windows 2000 or higher as of this release. openMSX Catapult 0.7.0-R1 (2009-01-07) -------------------------------------- This is a release to go with openMSX 0.7.0. The only change is that a bug in the build system was fixed, nothing else has changed. The plan is still to release a completely new Catapult as soon as possible; unfortunately we didn't make it in time for openMSX 0.7.0. openMSX Catapult 0.6.3-R1 (2007-12-09) -------------------------------------- This is a release to make openMSX Catapult compatible with openMSX 0.6.3. Like previous version, no features were added, only some compatibility issues were fixed: added new mapper types and translated channel modes to the new balance settings. The plan is still to release a successor for Catapult as soon as possible; unfortunately we didn't make it in time for openMSX 0.6.3. openMSX Catapult 0.6.2-R1 (2007-04-15) -------------------------------------- This is a release to make openMSX Catapult compatible with openMSX 0.6.2. No features were added, only some minor bugs were fixed. The plan is to release a successor for Catapult as soon as possible; unfortunately we didn't make it in time for openMSX 0.6.2. openMSX Catapult 0.6.1-R1 (2006-07-30) -------------------------------------- This is a release to make openMSX Catapult compatible with openMSX 0.6.1. No features were added, only some minor bugs were fixed. The plan is to work on a successor of Catapult as soon as possible. openMSX Catapult 0.6.0-R2 (2006-01-29) -------------------------------------- This is a bugfix release for Windows users. One problem was fixed in Catapult itself: no machine was selected at the very first startup (after scanning the available machines). A new Windows binary release is built with a differently configured wxWidgets: the FontMap stuff of wxWidgets gives registry problems for some Windows users, so we disabled it. openMSX Catapult 0.6.0-R1 (2006-01-21) -------------------------------------- User interface: Added: support for 2 keyjoysticks Added: dialog to check which openMSX hardware configurations are working. Added: menu option to display or hide broken hardware configurations. Added: option to disable config check after setup. Added: record button for cassette recorder, for new openMSX functionality. Added: scaler factor selector, for new openMSX functionality. Fixed: several details. Compilation: Added: Support for wxWidgets 2.6.x, which is now preferred as well. openMSX Catapult 0.5.2-R2 (2005-06-26) -------------------------------------- This second release of openMSX Catapult 0.5.2 is only a bug fix release. We found that on platforms that use wxGTK, the extensions didn't work anymore. This is due to some bug in wxGTK, but we implemented a work around for it in this release, which should make Catapult usable again. Also, we made some errors in the new CPU build files, which are corrected in this release. Note: none of these changes affect Win32 users, so we will not release a new Win32 binary. openMSX Catapult 0.5.2-R1 (2005-06-18) -------------------------------------- Fixed: The rensha Turbo slider wasn't updated when updated in openMSX. Fixed: Choosing a printer log file works now as it should. Fixed: In Windows, it was possible to crash openMSX by using F10 or ALT Added: Experimental and untested support for the following CPU's: DEC Alpha, ARM, HP PA-RISC, IA-64, Motorola 680x0, MIPS, IBM S/390, Sparc openMSX Catapult 0.5.1-R1 (2005-03-05) -------------------------------------- Fixed: Some wrong behaviour with speed/throttle settings. Added: Popup menus for diskA, diskB, cartA, cartB and cassette Added: Mapper selection for cartridges. Added: IPS support for disks and cartridges. Changed: There are no longer two cassette types. Changed: History is now limited to 25 items Changed: The input page is no longer capable of displaying formatted text. Added: Mingw compilation support. (Although it works fine it produces a larger executable and it needs the mingw runtime dll). Added: wxWidgets 2.5 unicode compile support (Not perfect yet). openMSX Catapult 0.5.0-R1 (2004-10-18) -------------------------------------- - Fixed: Loading and saving of used hardware, media and configuration - Fixed: Disabled controls are much clearer now - Added: Individual sound channels can now be muted - Added: Minimum and Maximum Frameskip support - Added: Saving openMSX Settings - Added: openMSX type support (typing remotely into the MSX) - Added: Screenshot support - Added: Printerport connector - Added: Saving of Joystick settings - Added: Ren Sha Turbo support (turboR only) - Changed: Throttle into Max Speed - Changed: underscores in machine and extension names are now showed as spaces - Changed: Removed tear-off menu style in gtk openMSX Catapult 0.4.0-R1 (2004-05-28) -------------------------------------- This was the first Catapult new style, with the following features: - Select machine and multiple extensions - Select media to put in the MSX (disk/tape/carts) - Disks and tapes can be changed when openMSX is running - Various controls to vary the openMSX speed (speed, max frameskip, throttle) - Ability to plug devices into the joystick ports (before and at run time) - openMSX render control (renderer, scalers, accuracy, blur, glow, gamma and scanlines) - Complete audio mixer (consisting of all available sounddevices) - MIDI in/out pluggable support (for TurboR GT) - PCM Wave input selection (for TurboR) - openMSX errors and warnings display - MSX LEDs visualisation - Frame rate indicator - Full communication with openMSX (back and forth) openmsx-catapult-19.0/doc/authors.txt0000644000175000017500000000217314460023655017276 0ustar manuelmanuelPrime Developers: None. Maintainers (minimal, keep it running): Manuel Bilderbeek Wouter Vermaelen The other openMSX developers also contribute to openMSX Catapult every now and then :) Retired developers: Herman Oudejans With many thanks to: Michael Goettsche Patrick van Arkel Albert Beevendorp And before altering (or completely rewriting) we used code from the following contributors: Finding a window by process ID: Martin-Pierre Frenette (www.codeproject.com) openMSX XML parser: Wouter Vermaelen Linux build system: Maarten ter Huurne Historical note: openMSX Catapult was originally developed by Manuel Bilderbeek in Qt 3 (for Linux), with the help of Michael Goettsche. Soon Herman Oudejans made a Windows version in Visual Studio with MFC. However, we wanted to make a common program that is portable to different operating systems, so we started a total rewrite based on wxWidgets and added it as a subproject to openMSX CVS. This is the result! openmsx-catapult-19.0/doc/GPL.txt0000644000175000017500000004325414460023655016240 0ustar manuelmanuel GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. openmsx-catapult-19.0/README0000644000175000017500000000346414460023655015167 0ustar manuelmanuel---------------------------------------------------------------------------- openMSX Catapult - the GUI for openMSX ---------------------------------------------------------------------------- openMSX Catapult is an optional part (a subproject) of openMSX, the MSX emulator that aims for perfection. With Catapult you can control openMSX via a graphical user interface. A release of Catapult is compatible with the current release of openMSX. The project is not being developed anymore, but we will try to keep it working to make working with openMSX more convenient. We do have plans to migrate openMSX to a set of libraries that support a native GUI. Although the program should be self explanatory, we included a set of HTML manuals, that tell how you can compile the program (if you want or need to) and how to use Catapult with openMSX. To understand what all options mean and to get a better feeling of what openMSX is, we also recommend to read the documentation of openMSX. You can read what has changed in this and the previous releases in the release notes. You can find the release notes of this release in the file 'release-notes.txt' in the directory 'doc'. Highlights of previous releases can be found in 'release-history.txt'. All source code and other works that are part of, or distributed with Catapult are copyrighted by their respective authors. The file 'AUTHORS' contains a list of people who made works for Catapult or contributed works to Catapult. Some source files may contain a license notice; all other source files are licensed under the GNU Public License (GPL), of which you can find a copy in the file 'GPL'. If you got a binary release of openMSX Catapult and are interested in the sources, please visit our home page: http://openmsx.org/ Happy MSX-ing! the openMSX developers openmsx-catapult-19.0/build/0000755000175000017500000000000014460024013015364 5ustar manuelmanuelopenmsx-catapult-19.0/build/version.py0000644000175000017500000000761614460023655017450 0ustar manuelmanuel# Contains the Catapult version number and versioning related functions. from executils import captureStdout from makeutils import filterLines from os import makedirs from os.path import isdir import re # Name used for packaging. packageName = 'catapult' # Version number. packageVersionNumber = '19.0' # Note: suffix should be empty or with dash, like "-rc2" or "-test1" packageVersionSuffix = '' packageVersion = packageVersionNumber + packageVersionSuffix # Is this a release version ("True") or development version ("False"). releaseFlag = True # TODO: Before extraction of SVN or git-SVN revision number can be done, we # should figure out a way to avoid rewriting Version.ii on every build. # Option 1: Read Version.ii and do not write if new contents are the same. # Option 2: Persist the extracted revision number. # I prefer option 2, since it is more modular (separate extraction and # include generation steps) but option 1 might be easier to implement at # first (no need to persist anything). def _extractRevisionFromStdout(log, command, regex): text = captureStdout(log, command) if text is None: # Error logging already done by captureStdout(). return None # pylint 0.18.0 somehow thinks captureStdout() returns a list, not a string. lines = text.split('\n') # pylint: disable-msg=E1103 for revision, in filterLines(lines, regex): print('Revision number found by "%s": %s' % (command, revision), file=log) return revision else: print('Revision number not found in "%s" output:' % command, file=log) print(str(text), file=log) return None def extractGitRevision(log): return _extractRevisionFromStdout( log, 'git describe --dirty', r'\S+?-(\S+)$' ) def extractNumberFromGitRevision(revisionStr): if revisionStr is None: return None if revisionStr == 'dirty': return None return re.match(r'(\d+)+', revisionStr).group(0) _cachedRevision = False # because None is a valid result def extractRevision(): global _cachedRevision if _cachedRevision is not False: return _cachedRevision if releaseFlag: # Not necessary, we do not append revision for a release build. return None if not isdir('derived'): makedirs('derived') with open('derived/version.log', 'w', encoding='utf-8') as log: print('Extracting revision info...', file=log) revision = extractGitRevision(log) print('Revision string: %s' % revision, file=log) revisionNumber = extractNumberFromGitRevision(revision) print('Revision number: %s' % revisionNumber, file=log) _cachedRevision = revision return revision def extractRevisionNumber(): return int(extractNumberFromGitRevision(extractRevision()) or 0) def extractRevisionString(): return extractRevision() or 'unknown' def getVersionTripleString(): """Version in "x.y.z" format.""" return '%s.%d' % (packageVersionNumber, extractRevisionNumber()) def getDetailedVersion(): if releaseFlag: return packageVersion else: return '%s-%s' % (packageVersion, extractRevisionString()) def getVersionedPackageName(): return '%s-%s' % (packageName, getDetailedVersion()) def countGitCommits(): if not isdir('derived'): makedirs('derived') with open('derived/commitCountVersion.log', 'w', encoding='utf-8') as log: print('Extracting commit count...', file=log) commitCount = captureStdout(log, 'git rev-list HEAD --count') print('Commit count: %s' % commitCount, file=log) return commitCount formatMap = dict( main=lambda: packageVersionNumber, plain=lambda: packageVersion, triple=getVersionTripleString, detailed=getDetailedVersion, ) if __name__ == '__main__': import sys badFormat = False for fmt in sys.argv[1:] or ['detailed']: try: formatter = formatMap[fmt] except KeyError: print('Unknown version format "%s"' % fmt, file=sys.stderr) badFormat = True else: print(formatter()) if badFormat: print('Supported version formats:', ', '.join(sorted(formatMap.keys())), file=sys.stderr) sys.exit(2) openmsx-catapult-19.0/build/outpututils.py0000644000175000017500000000203614460023655020373 0ustar manuelmanuel# Various utility functions for generating output files and directories. from os import makedirs from os.path import dirname, isdir, isfile def createDirFor(filePath): '''Creates an output directory for containing the given file path. Nothing happens if the directory already exsits. ''' dirPath = dirname(filePath) if dirPath and not isdir(dirPath): makedirs(dirPath) def rewriteIfChanged(path, lines): '''Writes the file with the given path if it does not exist yet or if its contents should change. The contents are given by the "lines" sequence. Returns True if the file was (re)written, False otherwise. ''' newLines = [ line + '\n' for line in lines ] if isfile(path): inp = open(path, 'r') try: oldLines = inp.readlines() finally: inp.close() if newLines == oldLines: print('Up to date: %s' % path) return False else: print('Updating %s...' % path) else: print('Creating %s...' % path) createDirFor(path) out = open(path, 'w') try: out.writelines(newLines) finally: out.close() return True openmsx-catapult-19.0/build/makeutils.py0000644000175000017500000000346614460023655017760 0ustar manuelmanuelimport re def filterLines(lines, regex): '''Filters each line of the given line iterator using the given regular expression string. For each match, a tuple containing the text matching each capture group from the regular expression is yielded. ''' matcher = re.compile(regex) for line in lines: if line.endswith('\n'): line = line[ : -1] match = matcher.match(line) if match: yield match.groups() def filterFile(filePath, regex): '''Filters each line of the given text file using the given regular expression string. For each match, a tuple containing the text matching each capture group from the regular expression is yielded. ''' inp = open(filePath, 'r') try: for groups in filterLines(inp, regex): yield groups finally: inp.close() def joinContinuedLines(lines): '''Iterates through the given lines, replacing lines that are continued using a trailing backslash with a single line. ''' buf = '' for line in lines: if line.endswith('\\\n'): buf += line[ : -2] elif line.endswith('\\'): buf += line[ : -1] else: yield buf + line buf = '' if buf: raise ValueError('Continuation on last line') def extractMakeVariables(filePath): '''Extract all variable definitions from the given Makefile. Returns a dictionary that maps each variable name to its value. ''' makeVars = {} inp = open(filePath, 'r') try: for name, value in filterLines( joinContinuedLines(inp), r'[ ]*([A-Za-z0-9_]+)[ ]*:=(.*)' ): makeVars[name] = value.strip() finally: inp.close() return makeVars def parseBool(valueStr): '''Parses a string containing a boolean value. Accepted values are "true" and "false"; anything else raises ValueError. ''' if valueStr == 'true': return True elif valueStr == 'false': return False else: raise ValueError('Invalid boolean "%s"' % valueStr) openmsx-catapult-19.0/build/platform-netbsd.mk0000644000175000017500000000014614460023655021032 0ustar manuelmanuel# Configuration for NetBSD. # Assume NetBSD is a lot like FreeBSD. include build/platform-freebsd.mk openmsx-catapult-19.0/build/platform-mingw32.mk0000644000175000017500000000155614460023655021047 0ustar manuelmanuel# Configuration for MinGW. # Does platform support symlinks? USE_SYMLINK:=false # File name extension of executables. EXEEXT:=.exe # The next lines are needed to determine the name of the XRC library from wx-config. WX2XRC_DYNAMIC:=s/-lwx\\([^0-9]*\\)\\([0-9]\\)\\([0-9]\\)./ -lwx_\\1_xrc-\\2\\.\\3 & / WX2XRC_STATIC:=s/\\(\\/[^ ]*\\/\\)libwx\\([^0-9]*\\)\\([0-9]\\)\\([0-9]\\).\\.a/ \\1libwx_\\2_xrc-\\3\\.\\4\\.a & / # Compiler flags. CXXFLAGS+= \ -std=gnu++0x \ -mthreads -mconsole -mms-bitfields \ -I/mingw/include -I/mingw/include/w32api \ `if test -d /usr/local/include; then echo '-I/usr/local/include'; fi` \ -D__GTHREAD_HIDE_WIN32API \ -DFS_CASEINSENSE # Linker flags. LINK_FLAGS:=-L/mingw/lib -L/mingw/lib/w32api \ `if test -d /usr/local/lib; then echo '-L/usr/local/lib'; fi` \ $(LINK_FLAGS) # Platform specific source files. SOURCES+=PipeConnectThread openmsx-catapult-19.0/build/msysutils.py0000644000175000017500000000432014460023655020024 0ustar manuelmanuelfrom os import environ from os.path import isfile from subprocess import PIPE, Popen import sys def _determineMounts(): # The MSYS shell provides a Unix-like file system by translating paths on # the command line to Windows paths. Usually this is transparent, but not # for us since we call GCC without going through the shell. # Figure out the root directory of MSYS. proc = Popen( [ msysShell(), '-c', '"%s" -c \'import sys ; print sys.argv[1]\' /' % sys.executable.replace('\\', '\\\\') ], stdin = None, stdout = PIPE, stderr = PIPE, ) stdoutdata, stderrdata = proc.communicate() if stderrdata or proc.returncode: if stderrdata: print('Error determining MSYS root:', stderrdata, file=sys.stderr) if proc.returncode: print('Exit code %d' % proc.returncode, file=sys.stderr) raise IOError('Error determining MSYS root') msysRoot = stdoutdata.strip() # Figure out all mount points of MSYS. mounts = { '/': msysRoot + '/' } fstab = msysRoot + '/etc/fstab' if isfile(fstab): try: inp = open(fstab, 'r') try: for line in inp: line = line.strip() if line and not line.startswith('#'): nativePath, mountPoint = ( path.rstrip('/') + '/' for path in line.split() ) mounts[mountPoint] = nativePath finally: inp.close() except IOError as ex: print('Failed to read MSYS fstab:', ex, file=sys.stderr) except ValueError as ex: print('Failed to parse MSYS fstab:', ex, file=sys.stderr) return mounts def msysPathToNative(path): if path.startswith('/'): if len(path) == 2 or (len(path) > 2 and path[2] == '/'): # Support drive letters as top-level dirs. return '%s:/%s' % (path[1], path[3 : ]) longestMatch = '' for mountPoint in msysMounts.keys(): if path.startswith(mountPoint): if len(mountPoint) > len(longestMatch): longestMatch = mountPoint return msysMounts[longestMatch] + path[len(longestMatch) : ] else: return path def msysActive(): return environ.get('OSTYPE') == 'msys' or 'MSYSCON' in environ def msysShell(): return environ.get('MSYSCON') or environ.get('SHELL') or 'sh.exe' if msysActive(): msysMounts = _determineMounts() else: msysMounts = None if __name__ == '__main__': print('MSYS mounts:', msysMounts) openmsx-catapult-19.0/build/custom.mk0000644000175000017500000000144114460023655017242 0ustar manuelmanuel# This file contains user-adjustable settings for the build and installation # process. # Directory to install to. # Catapult is always installed into a single self-contained directory. # But you can change that directory to for example /usr/local/openMSX-Catapult # or /usr/games/openMSX-Catapult if you like. INSTALL_BASE:=/opt/openMSX-Catapult # Create a symbolic link to the installed binary? # This link is placed in a location that is typically in a user's path: # /usr/local/bin for system-wide installs and ~/bin for personal installs. SYMLINK_FOR_BINARY:=true # Locations for openMSX binaries and share directory # these are suggested as initial values when you run catapult # for the first time CATAPULT_OPENMSX_BINARY:=/opt/openMSX/bin/openmsx CATAPULT_OPENMSX_SHARE:=/opt/openMSX/share openmsx-catapult-19.0/build/version.mk0000644000175000017500000000031714460023655017416 0ustar manuelmanuel# Version info. # Name used for packaging. PACKAGE_NAME:=openmsx-catapult # Version number. PACKAGE_VERSION:=19.0 # Is this a release version ("true") or development version ("false"). RELEASE_FLAG:=true openmsx-catapult-19.0/build/wxg2xrc.sed0000644000175000017500000000177314460023655017510 0ustar manuelmanuel# specific for catapult.xrc /name="CatapultFrame"/{ s/class="CatapultFrame"/class="wxFrame"/ s/>/ subclass="CatapultFrame">/ } //,/<\/object>/d s/\([^<]*\)\(\)/\1\2\3\ \1 1<\/usenotebooksizer>/ /name="SessionPage"/,${ /selection/d //,/<\/choices>/d } /name="RomTypeDialog"/,${ /selection/d //,/<\/choices>/d } /name="IPSSelectionDialog"/,${ /selection/d //,/<\/choices>/d } /name="VideoControlPage"/,${ s/choices/content/ s/choice/item/g } #global deletes /