From f913d80b031098950ebdc0ad084ef829bc80ba29 Mon Sep 17 00:00:00 2001 From: Mark Aufflick Date: Tue, 18 Oct 2011 14:51:02 +1100 Subject: [PATCH] v0.91 sources and binaries from website --- CHANGES => CHANGES.txt | 57 + COPYING.txt | 280 +++++ KEGSMAC.app/Contents/Info.plist | 50 +- KEGSMAC.app/Contents/MacOS/KEGSMAC | Bin 370360 -> 389536 bytes KEGSMAC.app/Contents/Resources/2mg.icns | Bin 0 -> 74738 bytes KEGSMAC.app/Contents/Resources/525.icns | Bin 0 -> 76671 bytes .../Resources/English.lproj/InfoPlist.strings | Bin 520 -> 0 bytes README.a2.compatibility.txt | 123 +++ README.compile => README.compile.txt | 43 +- README.kegs => README.kegs.txt | 472 +++++---- ....partitions => README.linux.partitions.txt | 0 README.mac => README.mac.txt | 0 README.md | 9 + README.win32 => README.win32.txt | 13 +- kegswin.exe | Bin 388517 -> 413192 bytes src/2mg.icns | Bin 0 -> 74738 bytes src/525.icns | Bin 0 -> 76671 bytes src/Info.plist | 50 +- src/InfoPlist.strings | Bin 520 -> 0 bytes src/Makefile | 9 +- src/adb.c | 259 +++-- src/adb.h | 8 +- src/clock.c | 82 +- src/config.c | 767 +++++++++++--- src/config.h | 6 +- src/defc.h | 70 +- src/defcomm.h | 32 +- src/dis.c | 366 ++----- src/engine_c.c | 97 +- src/instable.h | 7 +- src/iwm.c | 167 +-- src/iwm.h | 6 +- src/iwm_35_525.h | 33 +- src/joystick_driver.c | 153 +-- src/macdriver.c | 224 +++- src/moremem.c | 655 ++++++------ src/paddles.c | 173 ++- src/protos.h | 91 +- src/protos_engine_c.h | 4 +- src/protos_macdriver.h | 8 +- src/protos_xdriver.h | 15 +- src/scc.c | 208 +++- src/scc.h | 44 +- src/scc_macdriver.c | 10 +- src/scc_socket_driver.c | 995 ++++++++++++++++-- src/scc_windriver.c | 7 +- src/sim65816.c | 394 ++++--- src/smartport.c | 37 +- src/sound.c | 64 +- src/sound_driver.c | 42 +- src/vars_x86solaris | 2 +- src/video.c | 214 +++- src/windriver.c | 39 +- src/xdriver.c | 38 +- 54 files changed, 4590 insertions(+), 1833 deletions(-) rename CHANGES => CHANGES.txt (87%) create mode 100644 COPYING.txt create mode 100644 KEGSMAC.app/Contents/Resources/2mg.icns create mode 100644 KEGSMAC.app/Contents/Resources/525.icns delete mode 100644 KEGSMAC.app/Contents/Resources/English.lproj/InfoPlist.strings create mode 100644 README.a2.compatibility.txt rename README.compile => README.compile.txt (63%) rename README.kegs => README.kegs.txt (73%) rename README.linux.partitions => README.linux.partitions.txt (100%) rename README.mac => README.mac.txt (100%) create mode 100644 README.md rename README.win32 => README.win32.txt (83%) create mode 100644 src/2mg.icns create mode 100644 src/525.icns delete mode 100644 src/InfoPlist.strings diff --git a/CHANGES b/CHANGES.txt similarity index 87% rename from CHANGES rename to CHANGES.txt index 56bedb5..9a884b9 100644 --- a/CHANGES +++ b/CHANGES.txt @@ -1,4 +1,61 @@ +Changes in KEGS v0.91 since v0.90 (12/06/04) +- Fixed serious bug in engine_c.c that could cause Finder file copies to + silently corrupt data. +- Virtual Modem support--modem appears on serial port, allows outgoing + and incoming connections. +- Sockets (and Virtual Modem) supported on Windows. +- Fixed various reset bugs (where pressing Ctrl-Reset would cause infinite + beeps, etc). +- Allow user to select ROM file from config panel if not found. +- Improved Mac OS X interface: Full Screen support and error dialogs. +- Better floppy support by always having 5.25" read nearest track regardless + of head position (supports Last Gladiator game bad crack by + emulating other emulators). + +Changes in KEGS v0.90 since v0.89 (10/19/04) +- Make Keypad Joystick the default joystick emulation +- Fix timezone calculation on Mac OS X for central time zone. +- Fix handling of long paths in config panel, reported by David Scruffham. +- Always call joystick_init at startup. +- Fix F2 keymappings for X Windows, to fix some issue reported by + David Wilson. +- Fixed some documentation issues reported by David Wilson. +- Fixed a bug in joystick_driver.c reported by Doug Mitton. +- Add README.a2.compatibility to discuss known issues with programs. + +Changes in KEGS v0.89 since v0.88 (10/17/04) +- Make old mouse button presses disappear after .5 seconds. +- Add Keypad Joystick, along with configuration menu choices to enable it. + The keypad numbers move the joystick to the indicated direction, + with chording allowing in-between values. + The keypad '0' is button 0 and keypad '1' is button 1. +- Also add jostick scaling factor and trim adjustment. +- Allow user to increase keyboard and mouse scan rate to 240Hz from 60Hz + for some better game response. + +Changes in KEGS v0.88 since v0.87 (10/13/04) +- Add configuration setting to debug halt on code red halts. Also add + configuration mode (on by default) to shadow text page 2 on ROM 01, + which is an enhancement over a real IIgs. +- Handle mac binary header on images. Handle compressed .po images. +- Fix refresh rate to 59.923Hz from 60Hz so that exactly 17030 1MHz cycles + pass in one screen refresh period. +- Enhance trace-to-file function to also write out data values stored using + the Data_log info. +- Debugger adds memory move and memory compare functions. +- Support "floating bus" where reading certain $C0xx locations returns the + current video data. This allows Bob Bishop's split-screen demos to + run and enables Drol's between-level animations to work fully. + +Changes in KEGS v0.87 since v0.86 (10/05/04) +- Remove all of Jonathan Kalbfeld's and Gilles Tschopp's contributions. + All of Solaris audio is removed. +- Fix config screen not drawing correctly if emulator was currently displaying + video page 2. +- Fix STP instruction. +- Fix mouse-joystick which was halving the Y dimension. + Changes in KEGS v0.86 since v0.85 (03/23/04) - Add patch for Solaris sound by Jonathan Kalbfeld. - Fix so that F4 enters config panel even while running Prosel-16 diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..960fe74 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/KEGSMAC.app/Contents/Info.plist b/KEGSMAC.app/Contents/Info.plist index 15a616a..d810c7d 100644 --- a/KEGSMAC.app/Contents/Info.plist +++ b/KEGSMAC.app/Contents/Info.plist @@ -4,8 +4,46 @@ CFBundleDevelopmentRegion English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + 2mg + 2MG + + CFBundleTypeIconFile + 2mg.icns + CFBundleTypeName + Apple II 2MG Disk Image + CFBundleTypeOSTypes + + a2mg + + CFBundleTypeRole + None + + + CFBundleTypeExtensions + + kegs + + CFBundleTypeIconFile + 525.icns + CFBundleTypeName + KEGS Configuration File + CFBundleTypeOSTypes + + kegs + + CFBundleTypeRole + None + + CFBundleExecutable KEGSMAC + CFBundleName + KEGSMAC CFBundleIconFile kegsicon.icns CFBundleInfoDictionaryVersion @@ -13,10 +51,14 @@ CFBundlePackageType APPL CFBundleSignature - ???? + KEGS CFBundleVersion - 0.1 - CSResourcesFileMapped - + 0.91 + CFBundleShortVersionString + KEGSMAC version 0.91 + CFBundleGetInfoString + KEGSMAC v0.91, Copyright 2004 Kent Dickey, http://kegs.sourceforge.net + NSHumanReadableCopyright + Copyright 2004 Kent Dickey diff --git a/KEGSMAC.app/Contents/MacOS/KEGSMAC b/KEGSMAC.app/Contents/MacOS/KEGSMAC index 81fafe87085272b05a0d3603be3b5b6524f0b966..22550372ce7534b00ea2b7dc0f536d8d1705c99f 100755 GIT binary patch literal 389536 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%0AZ-ub8HU0X?Qwu`<6z8Q5>X^JT*DkRN@ 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 E7emlk2LJ#7 delta 139027 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 diff --git a/KEGSMAC.app/Contents/Resources/2mg.icns b/KEGSMAC.app/Contents/Resources/2mg.icns new file mode 100644 index 0000000000000000000000000000000000000000..1e612e0d21cddc3d735e7928d8f6fc5d06c6be9e GIT binary patch literal 74738 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�uEWE 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 literal 0 HcmV?d00001 diff --git a/KEGSMAC.app/Contents/Resources/525.icns b/KEGSMAC.app/Contents/Resources/525.icns new file mode 100644 index 0000000000000000000000000000000000000000..94e5a90d7a8aa4a7f50feaeb45b8d50a5988b561 GIT binary patch literal 76671 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 page (just add port 23 as +open--you'll need to use the "New..." button and then select Other for +Port Name, and enter Port Number as 23). Then from KEGS in a +communications program, do "ATDT127.0.0.1", and then log-in to your Mac. + +KEGS also accepts incoming "calls". Start KEGS, and initialize the +Virtual Modem with some AT command (ATZ resets all state, and is a useful +start). KEGS now has a socket port open, 6502 for slot 2, which you +can connect to using any telnet program. In a Terminal window, then +type "telnet 127.0.0.1 6502" and you will connect to KEGS. The Virtual +Modem then starts printing "RING" every 2 seconds until you answer with +"ATA". You are now connected. I have not tried BBS programs, but have +made connections with ProTERM. + +On Windows XP SP2, when KEGS tries to open this incoming socket, you'll +need to enable it and click Unblock to the dialog that Windows pops up. +If you do not want incoming connections, you can block it instead. + +Once connected, you can go back to talking to the Virtual Modem by +pressing + three times quickly (+++), and then not type anything for a second. +This goes back to the AT-command mode. You can now "ATH" to hang up, or +"ATO" to go back online. + +On Windows, the socket code is very preliminary and there are problems +receiving connections. + +KEGS also supports an older, simpler socket interface, which it defaults +to using on slot 1. In KEGS, from APPLESOFT, if you PR#1, all output will +then be sent to socket port 6501. You can see it by connecting to the +port using telnet. In another terminal window, do: "telnet localhost 6501" +and then you will see all the output going to the "printer". Under APPLESOFT, you can PR#1 and IN#1. This gets input from the socket also. You can type in the telnet window, it will be sent on -to the emulated IIgs. Telnet on Unix defaults to "line mode" which -buffers keys you type until you hit return. This can be a bit distracting, -and can be disabled by hitting Ctrl-] and then "mode char". This -causes a few {{ chars to show up in KEGS--just ignore this for now. -You may want to go to the F4 Config Panel and set "mask off high bit" -for serial port accesses to make PR#2 work a little nicer. +to the emulated IIgs. You may want to go to the F4 Config Panel and set +"mask off high bit" for serial port accesses to make PR#1 work a little nicer. -That's about it. Proterm and Appleworks GS can talk to the modem port -fine, but it's limited in its usefulness. I have printed from -Printshop, but it's a bit pointless since it's sending out Imagewriter -printer codes which doesn't look like anything. You can "print" from -BASIC by using something like PR#1 in KEGS and +You can "print" from BASIC by using something like PR#1 in KEGS and "telnet localhost 6501 | tee file.out" in another window. -Feel free to let me know what doesn't work, but a lot is known not -to work. GNO's tty interface may work, but I'm having problems -testing it. - KEGS status area: ---------------- @@ -875,7 +961,7 @@ Fix the Ensoniq bugs to make sound more accurate. If you have any problems/questions/etc., just let me know. Special thanks to Jeff Smoot of climbingwashington.com for letting me use -the picture of a keg in the Mac icon. +the picture of a keg for the Mac icon. Kent Dickey kadickey@alumni.princeton.edu @@ -956,21 +1042,9 @@ KEGS boots s7d1 by default. You can change this using the emulated IIgs control panel, just like a real Apple IIgs. KEGS emulates a IIgs with two 5.25" drives in slot 6, two 3.5" drives in slot 5, and up to 32 "hard drives" in slot 7. However, the current Configuration Panel only -lets you set through s7d11. - -Config.kegs file ----------------- - -KEGS saves your preferences and disk image names in the file config.kegs. -KEGS searches for this file in the directory KEGS was started in, in -your home directory, or in the Resources directory (on a Mac) of the app. -It needs to find one someplace, so putting it in your home directory is -usually the easiest. - -The config.kegs file is a simple text file. You need to quit KEGS before -editing the file. The BRAM data is also kept in this file, with separate -BRAM contents for ROM 01 and ROM 03 (so if you switch ROM versions, you -don't lose all your BRAM preferences). +lets you set through s7d11. ProDOS 8 can access disks up to s7d8, but GSOS +has no limit, so it's best to put HFS images past s7d8 in order to leave +more slots for ProDOS images. If you're trying to use a real host device (CD-ROM, or hard drive, or floppy), you should make the permissions on the /dev/disk* files something @@ -982,8 +1056,6 @@ You can do this on a Mac with: sudo chmod 644 /dev/disk2 -Running KEGS as root is NOT recommended. - -The s6d* and s5d* drives support disk swapping and disk ejecting, but -the s7d* drives do not. +DO NOT RUN KEGS AS ROOT. It is not designed for this and it's almost certain +problems will ensue. diff --git a/README.linux.partitions b/README.linux.partitions.txt similarity index 100% rename from README.linux.partitions rename to README.linux.partitions.txt diff --git a/README.mac b/README.mac.txt similarity index 100% rename from README.mac rename to README.mac.txt diff --git a/README.md b/README.md new file mode 100644 index 0000000..c9317db --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +KEGS - Kent's Emulated GS +========================= + +Kegs is an Apple //gs emulator for Mac OS X, Win32, Linux and Unix/X11 + +The latest version on the main KEGS home page is v0.91 which doesn't work on Intel Macs. In fact, only +small build changes are required, so I have forked the code to Github with my changes. + +Original homepage with useful info on how to get it running is here: (http://kegs.sourceforge.net/)[http://kegs.sourceforge.net/] diff --git a/README.win32 b/README.win32.txt similarity index 83% rename from README.win32 rename to README.win32.txt index 182958a..d3d0617 100644 --- a/README.win32 +++ b/README.win32.txt @@ -2,13 +2,13 @@ WIN32 port of KEGS (KEGSWIN) ---------------------------- -There is a different port of KEGS by akilgard called KEGS32. -You can get it from http://www.geocities.com/akilgard/kegs32. -This port is leveraged from KEGS32, but mostly a rewrite (perhaps -for the worse). The joystick code was taken without too many -modifications. +There is a different port of KEGS by Chea Chee Keong (akilgard) called +KEGS32. You can get it from http://www.geocities.com/akilgard/kegs32. +This port is leveraged from KEGS32, but mostly a rewrite (perhaps for +the worse). I am grateful for Chea for doing the windows port since I +did not know any Windows programming. -This port is alpha quality. Seriously. Don't expect much. +This port is alpha quality. Don't expect much. This is a bare-bones Win32 port. It was compiled with Mingw2.0, which you can download at: http://www.mingw.org/. I also had @@ -49,3 +49,4 @@ In order to compile, You can contact me at kadickey@alumni.princeton.edu + diff --git a/kegswin.exe b/kegswin.exe index b6c6563ee01dd6fbb51b106928bba99e42781737..5d2277eb716085c255254862d97482604430abca 100755 GIT binary patch literal 413192 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

6vU}`DrHwo8iNwpRtX) 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 z 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Μ*kvR3%=nJsBB(}G^-R<_~kC!gv1rm0kiP&W$(#9>?@M4Tu zb%Do8$jn`&;}mFP5(eGRnPkj>p(DVjfkyxlSJ;~xUgZwY%?ww_dgI9|Yt7}Qd8vHM zDHl&6J@#t``Z;!k#+_>7WOy5!v3QFhV;_^S-xFqn3v++saO3mlc+r0@00!p&(pBn? z-nzzS+8L=w*j*ro)&3`0+)5UrC!Nzn4PA%-R@rbk@dM?!alls2nOgj|)nGvx2UbzW z(WCm~Mn6UM%^@&&_(YR9Jk6VZ7)q$HNo;t`$7qrt>?LBCpSF|-$xZ$!0JpYP#BKX& zsQejsBY9^0XW+~^!@GckVxNi7ANs0p@TzWMN4t6fQNH?TD`2kjpGUy&eP)Q+w=bex8r%ukFKE}PcqC8NAh{TX<#ZtVgc$tuE!vU? zyB7kLrg(3dRaC5g<`&-=5B#DvcH#U-d~Uw+5CM7Mhi3YUMXGYZQc+K{q!Q&ZU9-61 z=Ie^R`Nc&uC+1HtE|^w0Ie(@V;ft!*&^7;6h@up)=Eq8_+ihk(w{Y@x#kcTdg_3jE z^c7W=#S0d}N0HcTW@>LyVe!QLd@JmN?OU>}%3o>4=u-Byn~G)@S|JJg)y?utRrlOk z(XHsoH(fXFrpd)p@9ExzqCrGVdE74PslHW&E<7PU)wjafxh|akLIabKMfYJz7++og z5+!ikrSlS#Pnvks^n^Mn`a+lbtLb6IIIjh2Zdjofme3{r`6HiDe7Au&;ZK+JGJUK9 z&MRJKj}<6`zvY{EcY+4{PAe5GOC<_0gf3;>_d~7ivSOTbyoZ{ok}ROPpEGdbu?sG*z6b&iW>Cf{Noc zZqN=@cD;^~Cr(#jIUxmNO%L3Hb*fl10{K`)2h#jO?ZK0-z#yzXv1W*xgf*>&Wf?qD z@f)D@vll7MIfXop15OmsAl&J5{TF;EfA^MU6#BekJ%Df>n}%3lM56@HAcz$Ov}uLD z?1!*!MI^4!S0UEldCRhhE7o7lD0356tUvLVWfJ#ctQ%Fn6=JQ``C?VLhR#}CrR*^} z_y5K<2baj#fL$y7GN|XLN7tro7lVBz;<(mp9HJr6eBk;Hwa$qYT*AXF+0BF6?X5*d z3+;l^saXZO@5`3EaN>=;_r)6mvMSs|G?FuL0H?njCkx2;HdN{o=g1d%Zm*~B7a0xj_DD{K;Zt0D+}5J4W{&J6}|pBIZUp|4ba z;H|AgkTj|+u?<h&=vRsbITE-G`1t^Qc0u4zMWU#hy{! zqgWmFIcB%?qq`@+aY>b`*n-MC0!twq*oIWyxul{?ZN;N_!BRge$QA@jmMrfQsC*E+ zTCfmR)hNf5NRe@7T)LowM{ie4hVtYIO^Mg%CbW8Mg?@A0il$OxP6IPL&&VO@B6P1G`PgJgq$?S4n=i@=W@j%F~J|uYH}_o~k{utC$(eGp(!VJINB$)z$L}<(aNM z1xQm+{X`lTx!sNybXv(3iKy7){Rwu7u>T>)Y{SzVrERwikb`EEKq#;8GBPk;MR9AW z128yQ_0Pt`ay>GD>usZk15bE}|3yxq?**>ix(3UTRs8S*DI{uV{T2$|S|`3W3BJP8 zuyv#Ou8;c$mKgc7$nmvDL8~9Q;ZN>wHf>+<_X%=C0d9`)8v@3~rSu)I*^b*N! z)Kd}=duz@dudhLDq5{SDm_&ZIr`^UI@GI!*7Tk=!9;v|SNWhMAclX+tdCSA>&4Py< zUgHSa7vGM$bzhrgu!#&{)PURz9jih4BixNMt0dd=8V3k`Otw zeYnnwnZs-ebY>+?8{MkZGhU^UlGRpjSVH}?m@?6?Q|_7VH|wl~*@vudich-Vkrn#y zAXt8E>U7}R$ZAcD(mw+Y-NGY%qAsD8@k{%`OyM!4ZJ;IIS(#R7pZU|NC`PMx{>f~@QYcVW`J|;(ZQ6;Qx zHrp;#GjGhAiVYHsv=w&0>RjjcS@Onl+T`^Y=Z80`;Opy~L)sP?EiWcz`M(8eD2i~`ex>FkHtGqQ$$Vq4HPV^ zA`5L7|Lt8jO3}p#Fk^m^jAO1FEj>ZL3&W!a&CLOFfgv7|W23 zqb)Sai?OQ*_^|j3%U^`9^7>Bk8}2EGk#Sz*I4h0OFDEK3qsvg;YzqtFb9U%0rFC>P zno>6>(RgUt1C!BR1c61s%Ag&E;bg+H=s%rQx={FxfIf&( zagPMs9O0hAnk2+b%F~Jb7g5pLoll>8ldY{xr$Dp|}gXz=v(J=%2in zA30{;)6fGIkoRolH@L$!ZT0&QvU*RoiSLXuyU+GudtMm}dn11G*Orntex_-&#cdAL zW^kaO5}7CxGslb3UZh@ML%(;i2QBfdD|jzW9$pJD9iW_-KpHSbS{C7FKDtGK+}5*x zO$9;JJKSH2<|fEpf6$+9uCFP%cc%KC;ak(_jgJ{G)vwnD&)NMkIyN6de=@i3vwYc4 z(i_XaAv9)ptiAJm4JE(0bOi^4F^N0_N)fp{*2N>vfy&}IHvxqDn>F>GH@*U;oD2Li zZ}FDDy1#vQqO#=OmuH>V1Tjnx_m?h3CeaObd7vl}J4U<%?}zi#LPe=fDlq!`VdoRi z9p5?GKcpi?$bko%52a*mgK6WrjyGRF-0>_$}~Ju`Y`k%GFN>%dYC!+Cxu?zCWGnOga5ZWdK}o(@dia6 zkW#)9`lx16*zzTmAy{Yd{jeGiqsBr!et9L)an?Z@Wq&f~tbBW3^7Jg<{tsu0lv zzd2?-)%*q~D06-V@dfj8dAZFz$faO&&qIA}f8uVGd3b1KDmI;qaPfX9=mJeOtE>5U zpzlj>kQ~Km=o?}mkvMVqkr>{?YmDz6K3T6_8Raq7`vGd*#@DQS;DE(YQcQR;yU24K zjhr(0K#^e$9m%ZE1I^U$&;VI=^l@sqD7A3*6kh|iH!@KW1<23TvK9!&o>R)7S-A;oopxA7tDGs0d+Ay4x)Zp7hj zTra;q*LF((h1yyM(;ce6ZEoG~w#O!DcdF?=JYmpn_wD${z+)4_{e)w1tAO~HQx3$w z(SF0g954>-In;L*c?NenU(e%vsu~tS%}HAq5j|OwJj@MB^@f7o;q3M#B*qZ zTPLYnq~0{~+x!deluC%J@~$gwvzFbtZ28J%8mf?&dP7XpYjwXm^3FW`;l3LedM9Z9 zimB@6KiKT{8mAc&#jdFsQ&~%yZ7DT$qx`j{)WvOHny>w4D%-IMZ7Fl(ez$2`UR%oi zxL=8~rQ+wq_U9K~c!8TFY%jcUl(gC0^ZfLI2Oelk$-(x(0|)RM9rqij{G#~fVH?38 zX9;Ed7{965roM4^dRxj3*nWTArxT2qSlx5J8c)(Sh)Wo)|Zra(Ep9&DRQ~y z2wZN74b=aEGnH&2He(M22cqd^(qEWiTVewA&=86}_^}=SaXroTB7$o^c-UV1rtGPn z_jqc9SmE*M{35@TN@=~o$Wj!YW-Kt(-%Id&<0YUG=&KyPu)mp7h) zv_Ps}jVHB5xL7z$%40@Ez8sY3k=B5B!it$Xo z%~|&{`>+VhA7zYSgcgJ4&#$rJdq@z8W(_uPbrU=2TijE(8kOR&3RQWHhNUO_kXi~P zr2LK)iG8RA|AB{Y$a1S#c~W9K*&f)VWtV+YMJ|CNqdRbfjjFZz8$A(9t#!<}+)q-~y?gpm;d6?fQ73L_BB3B;nM%B~J zflC{`E#mF0`-qulq#rnQE^1(FbkH}%{;Hnr;|wW6^BRH5NmiT!7!u=G|4@aa4nR6y zd>+dXtjQJop7{91XBlxcN(Wk8AdhGlaFu?K1T7*+jXm2b50VyzdH?4p5>Q4i(Qi_B zg^!>CfFdWE%P^!|fy-J>r}Dgz^nvb(doSTg{gLdwl>A?k%O{`c+Py;5MjK7aYm#4y z&r@3ES)*qa8F?HOqEC~`SlkcWAUX7J;N@pXZhFfK? zlLZrfj?rMTegkd~phVybS$uYhc9;fk6?m(nH4*KAu~opMa{mzbld=$_dDx^wo{$bX z^06*>G=v9HGx4l=zJ{ks?J+*0$K-v7j7EWjd1bC9F^!lylYjtT_)p`%#cW$+KyERL z;RqBRbFyu*e^S26Z>q`-C2#802zj-rf*EhDg_J2%=G_D`_O!woq6D#9UhK0Ms=-XX za}s$lr!@)%(HbT^Bp^IhE491JPTY;3M)Y;k*>N!MVO2IBrs3g{!V!^&>Tq%SFAet< zPKJpgWwfP8p!})Ev5M9oq05h_1c(DA;LfT6jp-iB%nuC zQBxH!pW+QMb=E2t5q}Exl6Pf<>2G>}ftGXO@v{q$-#DBk7xj&;s@wq|Q=L$MsUmX1 z$5RF}N0SumNx*Rn=q4MFYb!$u8)5X(bdFXdRU>&+*0y;biJ(nvCC`NRs=l~hwU=6W zbwdk{A9RZ)C7vIvyjv{kn)72#(XFsLfnw?p>ZX5v``ZkO*&EI}A^zgSVtHTI_zK(h z_Y;E;Nbvg-ti<;?hsey`EiSVZZ&d1r|cqK1eJF~`eAjR8_x&IAsIQ^9xBI<+ujKYqB4(zVi-ems-P<1$7 z2f5}3mjlXUdua53Fk6E=^YB+O&yHQ!^T3{{XqoRo`;A2rnJ{63ZTQg9H~Q|jdE{r- zGIcO1ExF*LPXGiOr`8 zsM8PEmkBv`wXWjERIx=4b`KaSqrx4kT*h)bfN;dk@R$KPcn=t$0?0MNwaRjRe)bL1 z;1nM-U_^;~+OV66UNYT1sc^dT$iEo|?BNJf081spf<+XH=__5K%+jhQ+ALA#=af;k zti)qgW3YR8r*%Z9m9wB#ZEhyxcKn7fw&im#ImUfUsa#%Opp419lgu@8iMxuoyGobJ z^*Oh2R-HUU{dPPvKY^qj;Na-+T4y=Zx5WuU@;fr8Cp zqJ713K}{#-pmj#5E7Ct=ui_ZD4DQ_=DkrfPR4$b_=y1w_oBR3n$*4zNF<{83D!2ag za_?N_o|2=mjQP zA1Sj{)ZobdHRQ<7ZSZsQD)BE_T3YO1QeIvx5JH{qwO`4S#iH9LQEIEV4e$a9pv14B zi3ItJmzAy@Becw}^|D;>43sP}-{d1c?5gUvnc58>nLRZ7^O9M~8$Lh1M^cX-nk~zH zz$lq&@k9w0kuV#TEi?=*p(bN&9jnna3mrp1WG4mGf`$SMg*L3u$rTgCSyMN3qL?<@ zz&vHxT&8(T{5<^?_4oY=XHws9TAww{jDJ(!V)b`?f;Qh)`PuT8o9R>YEc%AdxA_@4 z3P13`!xGO}G4+l~)_hZ!Jr$fF8+`!ej=HQG>=^4Y4(!P@@em-Xk8ggHL~_>8fqvVO zlKK}&9_m0-w7;dyE&y1`v%S_L)TTJI4DZE9@>=J&Q z_x%9>Z9DLq>QC9$hRGJqZDygj@irloaxf?nRIsFI#%vi6`ccscGo%`sS-xYWh&-6} zARSy}taw*8wSin48>d?+?$^|XZU7Igzk*^QGD+o9+@z(~ELyd*{#ovHg*dgDU>T_n z-TD+&h)GLzNjn>))PB+_2lgCj@$74SfvO%FnJpPU7w#+RU;B`(d4{}@Cm1q|C_z_5Nnum4MIdgXysWF~U)$PN|23uOf9zG-+7>U>ED-|Q+5puO0SkEBCE8+b z0a4(5e>3lH!o~LVd_D)wzVpsI_jzvf%rnot71$9A)oCh2{D@&A{Z6#Z9J99P@dTBA zAmjGVn;u5*5P?WDlzgk-XiTtWaY?;)4zlObHi*0uM1HAR*x9N8iO$?h}Jjkp4o{Re7iBXRn8>N1lPW~bO zR*>$M@>ksRJikHqD(J4;aV9nJd-eB`wEA0BKQAwRK5a`3)yadk+E-*woeiwbPFXvV zlutME!{GB3jmIf#zoWP{Chn&+0Z4j^N2L8R^SegB6Qle1UY{Ooswl4KD!J#7)3A1! zm!A$|suPB3Oe0xlccmCLKyv~ikA8`AXI(8IZq z=Fi4y+H6SBX+s)E8`ALEkcQKS*5*PQXd5Sp(LYGR?49{l2IF>|yT)LSFwabOSesL= zVIRq6hQcQ4FeS-Rw{tf#93&m4r(kU-C-8;5J2>HPp80ESk&{EyNjFq)I~qc>(N04V zcMOS;>Xl7a=Oz90bl$ZurixphmOAX^9YbcDqOwG-^cwo7}eCL)bu_4rt1yUQ*wSu1XHj##*E7joC&Y{x4?N|rs50j>}Ck6Re zJD$VZ(mZz#lV((%m(~oQiz`W)Xipl27&;FUcTzEh5V z^H;k0vz=l9-T;0P_iN4AGk)z#nHc(%euwQsm+1HoYq_zru5<`u@4Yu1)SB`+mq2KtyiL3w1)kW=(0Uj0Gxt4ia-D-u6E@&fo?7)H_ zPGGC`y_w2Y-0L+(n1!DU2va+ChOiQ9cJyC1&12Xpfd6o%zT5)(kU6xnGkB6$e1=lc?D3B=-DrrtmWx^vKgRdy=^MR;Y`+^N8CI@ z!t}0Pc0krzJ(=R$6u;4pUqSrNp3DqAwq-`~aP|}U9U8RwD6wF#aZ7QbyffsN0`)l= zBt(?u@<;=o%urt4^~P%D%lH&w#_x$osS$^&nH%xdfc}BTRzZIvJ4PCrfXi?AlnnW4tN!;YmUk(;9^WRpG^VrS4(@4R9qrF5swwKG3JLo=N?(6IVd z;|ZbOdPb zS=v-nD_9ADPkrsfyQ;fBEBg-?Xl7lPEs_m7*5PdGN9Qh-!L6J-u;TkX8~9oI-tNb7 zpUOsB&R_=7HS6k&(yn|F5&g?L#cC&PF3(%llIM8{*NH8@Qg8KGeb;4Bk4qcOEh4#L!FI+S3sk-?pu6k) zImWn#HD+#JE<#<>MmL@Jn~!$!TwdiI)Vb%zJm=-+_Z8#6 ztKT#Y$W2qzM|F1}qiRzv!>@*%P;oJ_;m%Fh)Nf}~duiw+m>cXIt=)$Sm|Bk=q>oY`%?hy45xMQ2 zOsmInhhoZ(8bZr4Rk@<)_PvUu(QbV>!+yw|PP7oiogZTu4!)NFqs3F}(-WS6xIK#_ zIj-iePfLGojcT&v*_A&N2CaW=4d+5SU})o{{MBW*UHOf5Fc{ z-7s1%Yv<2NWU2h?-FR6n1lbut&9tv8|{js+serU+z zg-1i*EdC4V!C!>G>-byfzANtdzi$(_n!iW+dy+q+LD#e~D49Rf$73QsORtWJxP}O+ zh}XQrkUxCb%mq0+vn3?Y2H4!vn%Q*9hDQ#{ImL_p5qU-|m&HT3im84XIpDWYw(BwO zzqu^PDLeE!=4`jK|4UL6b4%oxf;VErcwNvI* z0cp_V5M)(K>qxYRj;Hs0@BvVGH!Y!0Kp%!NfDM*OSb(yuQIhX-^qVWNY^IOzA|^>p zoc)}~&|ad((rH4sb{9WoZH75(B)U?`mr+M{7oMRAQcLEd?H&)EUEH7xvTV!y!K*vJ zqhv%G3uve}sGyM)M7G2k( z4o!>>SGFDRtKbja{%Wh&*(f={Xj(Wo=TlqeUmxNRz_!1?)1hdi>WO_wJ^lTYEV_lG zNsS8@##{$47gXn*uvAt(_FCMZs+MqSj$`W3ydr2{F?_m&MZ+9?weHGy zR;pm<0oCHHQI*bG)!(&3jnTiZ6>6Ogskt_!=Ih_+8Js`7HmeAmRX3cAHdG}hbim_f zOU^O1*wTbq&I2mVS)-DiwJN3esV7XUUjj|%Tv*OV1HR8uvEO=K?53{*WgL?gYJ6Tu zJx@;1Ft2oC#SLl zDC_U*@z--R_27;Gp+lN|xym>5VZFjPEVz~9b0-&Da{a&4O~p;R&bJT zRL~7mFNfuBkx8(5;30ve$J%1A_`0#!C4fNf+80p!9uB@vnZlZWX(%);{Q?rgjBB0s&R@-ms8HDC ziKKr+{FkqGx@;^Lwe zyCdly8y&oMdUAXo(GcO`+nnA=y2CPYhw~rtSLsy+MbaVi1-$zRaOrmC0DsGAL?_1& z37YP2&J|CxC>JMI`;BY)n_`{Q!~HOCLU#BI$ehlpL3b7&DKXu+z(Jx8kpd zt*}iOJWUH3k7AnU)J26U7o~%7Rk6|xpex1{eT-bAD_&&#c?#j=~=8j2d{BgJ- z(sT;;J{%mh#|9~~1i4PQ(1oCzmDdpFw$pB(Y0zJdloGJ5VH!M{1zJwTk1&{-K?I*! zL1e{ta|j2ph?M;x)mea6Pb-!EF0 z!DAHwJMVJlpV;KMfo78Djg6$gW8MeZ_wkXmW8SsECp}Pbn|U8<-)Z7a=KZ7QJ^HYk zke+Iy&a_E*A7|c+bMIf^-I7C1!4Sa>K*fc3&ASb}>^WjrG3JY7=qBJ$%vAW|9Un8k zWRkU~=dR6CXTtVZG1ZYtVXx>`?b#kA3DY=<%}QUXc=Si)IU z!AJcc41DyiP4yPrF?Ej6`K9lfVb8Q_B?>G(s7}KHV-69@&()s3Hwrb1)@BcigBJ%A!_k6!@-rYIm z`-|q?okQN&^R5*&qgX0{#vz(;b)?1BQ}UYMG~@opk>TtHY8@>-Vc(GAn2b2bBsasG ziJ^V0x5O>ltuZ*~_h!5@rD!9Q<9#yb%E-^T8&;(vw)63V&zxr-KnvcQU z0H_&??>S;X_IMSCc%{V-Sv<#|^B#*TITW!|*3OV;LHzXB8SS>W?Ofadp=5pvC%N-k zu8;N4+4;O!1l7)Gb`BpwG_m85?;PkGiEj{15}i%aPz1Qqk2iXi`M&Vtu}{%j%bUx1 zKXDo-lK;eMyqMS%rtwomo-mEoCr;y$f1G3*Gm51Bb{bv4_!E&IGL6sD?7nGyh_|UI zQ3F#njib2l+e{-|dRl$@ix@`y|C>guYb`Ld>2KL0oj$s_+02&9H8W3hTm3Op{4*jn z1JaTLYK5*m5^d8IH*U03eD;Y`y#C#jPVvu)KKT^KHO27H`1{`25U!Yyrl=wFbL}gP z_Zrd2#h05Y!s)zR6HUVmW+WL>ku?qITl?(Z)nsc*{{IOfjvdLBY+Gm~x2eg$pd(V_ z7!0{}uN}T?H9}_n9zR@*g?bi{=RoX^0pv(Jf&8G(T|FZ?Yk;$@k9sWR0|MsN*Y-ut zB1(hsdbnxfaRjK=enL9@5*`k%D5N=iY6D7o!^WNs7#h)!m+d-oG6G@wTbh=tTmCmF zOu3XutlUBJA$aq$R&X%nYJ8>udH6MI7u zM6~}=-A}EzF#8*vObFhXw*uN`Ruup^C+e(J5J?Ykn;s*jdY)4D+uiJgiFEaAh0)FW zQqPy1NRqi3yw0xFG5%{=3hk7;o;=R}+wRvO zhWA@P7SNMxrngIh9q$;eg&w>ik{-U#Kw7c+aBaL}%q;Uk;=w>Z!M@hJd1`Zc-u@eT zy3mo@!p7!4{D}|O!rM}>7P#NWx!=6+v;N~N>%R@|r}4RL5Agv|fEK&VJSoO^Ba~Q6 zw&n4IjsBJ|@fJTAjul5((mnYP#`?@RE!?|XMybPtlD7{q(ga?uPSK+8b*?gf{L`SB zmD0cwZd5g_a8w%_-~s;s?yxK322va7Ve$*WmgPwwoWVEZphWe9iIVk!&arsfZ{DEA z(2~i{yYoCOg;GaOug4opdKuL?Bef!7JyfyD05aX_gIhT9;O^E<273K1mjh|XijCDG z48PKHqxXjvo|ba%DRwbJXTgBjFg@~`)=V{(ovzAiLh0LZW#XiIzingRXCqM@q<&hO z+nw-+VxwQ{ixyw&eZl3Q&fii;2W7g!JeMAET}%BGIv>QSTVwmZbwUvKM@f>?`t$|n zFPb~|W)w5AriHhn=8{&pEZEOa@?_3uH)vy0j(dVe4}^-=q?012;ig4s{7bXiRnCbX z2frrUNsBl7SywCTs%$A%hmCK&?iOjy7U|fr@=JMSR9us;x}q#-G>W!FKA?D-bwfjN z6bF@c3K7k@a?F}@;YCKtH0#zTsp&ydcf5p8&2N=xmG)GqoJag<(0|v@8Bze{2@k;0 z2Q4h@pxnO1`~kkiye{F5a>8mD}h#E}vc0-5ghz82LE#8Tk-u{-sdffCf zjLTj~pH9Za&|RpaN9@z>&kFT^Q$%8->e%uOev3ZGSedg9>>NgCDSG=J#_d5=zg|lMOg-yUqo7H*(P8OuKAw|M|2+)TrCk>hMZOQV@ zv52ze9t>I^!@zv5U^0h7_LEW7RsrVP2vXvc0c&pms~^1HZ{Zc^gLmot)G<1Uq;LH` zrV_v`OoWRBpJsj`H;Hgbs{|0Ai3kTBU&z1mYUM{}tvIT6nG3((_i>U@&(x$ZM9gtE z$Wdy2`aCQ0NPgevjP=CV`0z?-0 zvS24_06&vS2AB?mL^Ry z(Gf*YBic^(Y`#oG_B0e}_A4~|Np7yTq^H)M+n9>o zq6-@;hKmlcds6Q1qOnso*PIg+iE#GU)4bgIKlJlYG1#DNR0iqGxW9skoM7SFD`f4fhP7b# zn;6=_ud_`yRuU_=#Sfp20bOabki~_eWI?C7an5v)^P?EQ?X#8o8!d`xUcoO^t9<7- zmYDaI{4O4rjQz}$e7ueD2gz8I=kbqHOtSKyv!_q-y!*e#G{3)s_w3eg-Ei03C)gC= z`X$pM0K;I_MA;=)x!!IhE>>X^;^8>$e4K0{F7|dWjsci`S8>!{HRj~|^KA37!^%(a zTy9&z`6k=)6^!o6b|^PAXTdFvvsArmoIm#l?fhzIFL$bLv36$duHNEB9K$oKuu8M(C#koR zonBKW`+xnN7Qv}C>5FFJ^MYP-6v=wYLA0C&RNz&|N|^mG8_CjgD|#ADfqVYZ7<`4I zKl0XkqCe#){ar>JQY!5Sm|mp4pEgKuVw4~#Qt|e*=vtC7MZrk=voJ7OfU%z0>02+r zzz`KRdcciL78$@wepe8Z_@#iVb${aW2~bb}N)dF>bLSn(7jgDYG%Kb^VwC~4I|N`{ z>mcakA*h_VqXAE5#($00+ugPqkx2S~)1mmY@ZBZTA)ciyt#|<8dWf9X@mCv3EGnM5 zb4-9jFdr+xdKI=|)1VS0>E)FZ6ZKV)*&0sl4=`P%?8|N0k4S-1#3MTB0MH5?!wk*cMJp zZ{@?aOhB+cz0EYC%pgj|CisC2jm13v!iO(kji;IDcJigeWa)j$CG;--WAA=8IM}s9 zD5-y4D;jd4Xf8BA7i!FfV!6xzGc-(1W?q!@1B8 zbD>9ap`Q{0Txk88T-;-BDBdysGQV>c6VdB!n}$)AoME!mE&{mP<45w+H6}XB7*o!JU81-b~*;{12<#BHahdYf2UbzvrE7v*Eo8~uoEPuraG=?o3S=6D1#kT-Y&+F^U_nUg~IMAW(7Euh3Wg zn%*V?lhAv{757o%NX9jyWqc4H%%0!tNl&Dtg2?J}24TA|wBtSb6RP4x2O`2eIaoIc zkbdu#zwaC>;O-eVU9rO={7(OJr?IKHD3~QivOiT<-00|ac!ys2l^LRS*T|cf7#2`W zBc9T_(*wW40;)ouRuiLCeB%5G{Gyk@+}4Ntu^khzk_UHdLU1u(+mytef{kfhuE{pV zX(e>?P5~7|)Y`$#WaK?cu}zD|#5YVwo4f3V_7HJ^$5m_V&-?YHC(irz7Ch<*0S$cR zd-(eL$ov1?mG2`Ix%SlX>H-4J&_aGW{=n}P{&nRSnb3=uWLcOT$xdWs(mj7N>&V{k zYh1YsDH>I5r;RliUh9L~-^|xpL-c!h2?pEMP*Pv!5BVMshjBlP!|l(W+kpI~3#4Wl z!C}@7+#(e;7fR(IsNXu#B?BlI3h7w;Mp_$*t}fs>F`{aH`n6vQ0t%yAIz_#49n$mu z#Dy%pPJ|Lelw});#dEgpOx#J8J!|QGi^E0p!(<4wz1}t^YRsIq8 zcE{;onAdg{N*#rSBk37GHnn1QO)NMpS+UbtF<0WAT5P-_h{rhWA^{cTPm4o}WG!Mm z4(hP7)m=8S;8ljtDXk#T@JUm|7m3#T8u)tJvx2=r0T?zV0J|=u3PJ=5nvaSeEN`sX zUj6><=R0ZtGXeiIbpx6YdCFz#-29$-mRG-Y`vB*q>KFKZVGLf*s^4GwBKF{=+3PjG zHCV*l$TgXtJ<4v()QOX@*_(!h6ZCc?*YG|4*cJharRnHTsCQcQWqtUb`4BKyCNI{i zUA>f&!1n)2LS}TJFBj;O(GcL8ol7Z=WMR^MIDzV)|3kC)gU77=2)l<2$=C7)9nyv5=zXOv z&6%d7nY|}hZZa)nx$I6}%NHTsSv)p3wO9x93vRd}XUON$2Z8C3QpOHIHMdBylX?y- z&oh&E(4`+RAI8#p>}S}EHq)l)_TD$i7i}!0T_2}i;3KL7?gwCaPQb^ac@5FV?@#xn zFC_^=NavjL&zH}-!Jy8JYlJ+fcr4Z}nvo^hI0Z0RWj^9$ftQiy`XJq}P_Z3I2>>NU z@ZzYZJ$l9vTGIYgTBdjGvlz+h&ZVO(wxc(TcMXVsN(okwKp);;Iv82U+J7d-;qr4} zd;|WA#zeoMRA0`edbM|3TaWLdz$NldCV`G5W0d5=6KdMld;c-?0LP^Z76h-q=|*V6 z4UKcTb({&4(}?}VU6=%V0^a~rN<!p~-I4{u>T0yAir{=+_i6VmfMlF%;$Tk!Z(agM(YLyeP zI{!W6D4gr_igZcpvNEG9Dyfg|)iCb+v6+v=5Y_S}$2^*!Rojgyn%?)aTCEuc58=FK z-O$kbHg6%l`CDJcY``4cPYmrK*@*5@e^dNjlK{uW(3wOzf8%1VVb2mu?K&;B$4~de z2RL(zvqLA9dQV!yaO$A$I<3(siY`{sJZB1MCq1Fr-|l0z;#2=fUKH*r`Y~apErB|D z%z2S#eOL9&{IL&WQs`e~ROZCtuOo0Uvwfh))hJbw`}q3)ND*!V+0MpL&zOML)qlB;H7Se90nJ;7(LuHa;)) zuWTV9zU_+q_g8rijK{!>b9Q&}soqdpAGAk(;R) zM~l4aUwX z6Jx5#KAS}&16r1-FH77U1QIK$u;pDOGqjB@dw7CXauMMAEx?uB1{;a51=Xe&=_3nY zUW0ly=c~U>Di^R`*_{QdKA2(*g}y6D4kiZ)3X`iT!GF)E*wIt1J7)yO#XF~)zT6## zElD}2C3_L!^i_Y>4#oov3WFC_`VkwolcAWM!$eThWlAzcD;{=FSLnfXnH3aGH7KUe zvZ=3q_!4#aY~d~h1OJEjs6k9~k&aSR^UOqEf_o>sMjc%)HRv;XAQv1xdVBsedN>E0 z4=K+1v-=Uzs_$#+O=|+If|9S(&+B{@6{6NFme-NETJ{qA`%)Izs5J`T_}42lEp{RCIO9pZp#X_LJj&8mh)sue*KDh3w86=>oTBOfG8zZ<--jCjv6Z$O-xJGv3|t}|Sr&M|rH92zE& znPaS{CZU7fgt-W8l#7=sO8Xqs1pb>FYr+=hYj_Wjif~UERJ+(XU84bnZ^`CE#QCV<2!{T!`@~JA7KFzxq z8c^lU*gHZgqriIGbN);MM)%JnxHA%;sj-_chJY@btB%&W<22JN$+k4!Q9#5@zWBlf z%m$$Xh48$>rQcNB*g3pya%`w+DyO(rh;v(sb7`@f>#pX!T{J9|c^!OkyHf>z`ckma_R_xK+>29_E1t6(N*Pi{`;s)1A*^@^UQ|a)Fu2wZ&Li1~Q-Qm#cT<&h44+ zVwCo@ITbEr958`v$-U0jJ;(OawCWp*7(3RjR&F)lk z3T!bKbzL`K#u~SAuxddga=Z2$q8wqLKR0`&fHqyIP>KXsUa;%q5_(g`s;8VWtz?FZ z;z!P={RKpa8Cm~b;!H{3Z<4-o$&&RFHxgqi6JMVo3L-w$HKr2O=3%7h16@RU{H+6d z9Oyy-^u$g@D=kL6hZm$01=kVWeAIa-{*Ko<)HSAxSE_K5zDtv3wu-S6HmBpe^5T2) znhY@F5_xg_P+sig_)oy!@t6rH%^ZH+BMnv_UNnKzBrkX`a~4gAT?8rKofu1XO)n?L zPWX|U73vX`>a&JmiW`g#c}U%$-^4{nAF_b0DMoG zf)&ZffRxoKv-Z!7fcXGEQ`3?y1T{m5Aa5n~r+gnNv$ZTFgZ!_O^saV+suIiGBAdA6 ztiHtO{oYWw28`^^i-5>DU(gh1)sjF zwId4|oAVOGq*EN@%p6(By+;Joum9-i(aU2wrvpjfC9BJb@BQl}>_ql`oD{$6F#YY# zZdAJKeb+y%T|eeDr4~x9)^wDCzyA7Fg910)w2+-6*JA0z5n$5TE3TS4*3}^9${)pn zM|FQL%UTV_hp&L$`x~+&=OTo>z#GM`J9K^eO;>+pt?%UAA?R;C%+Mukf982YL(8-Z z!ikWnQ(j`}fI{GOK8O@zXeX=~rE&Az_R)&{PfD+Au46e}GA}5$?47u~e;DCPkhT(r zb>=e~)O14zBkC5EXi%+aFz6klPI26`V%4AGob>}QFqKv(Sm!|2kD zk3g@6Xc5t_j3Cp-aP9E9YwE{9ch?Sge;(65e*%s#h)NlML~UlhHqG4yt6 zs1l&6vh+6Kzw4*aCGUg(K1kH0CXH6##WW$Fn?5 z>mt~TeCHFu%;n!PFq63Nhs5ig=Aih&{MgV*IyyHs+N~s|Hc4-iDmkj*n52DmlXA+m zNcsl=o%ntOwP0+5h!Kf?pzN6kObr>?lMr1bj|N2;7!{n&$KUhObsQAPe2f%oSh>Dz zdD0T}Hz_xwO(n`})Q89258Q2kv`v;u_bYa_8+!?{%(MO19k%piCi5NRZz-#6ltcVg zr5A2wm~duSkcNL_DX7+T^Xcr{*I|THg3KDg8&5M97n5+L58}A%+dgHsi zTu333po76v)8`?sGk!Y$3h1k!x?E_w%ix+uRs4zwWu@%to@w?Lg1s*R?a{V#z=o!8ni1~(g)62DB(N96JeN?hEqFRXmwZ4d zN;S`=kP)3n?)?RIO-(OgMrbSP5L04h@izzJ=#AEOtyoIK^iOZLw5}D|UHQxe=F?RK z)6|lQ>G9Mnn0eaS&yGx0R=`?AOWnR@Ui&SlGhqAtTQT9P^Db2Yk?WEv6zk=PrzIBQQ7}OE)Egh2wjEKk`;|=~+rR_ca4bmi!#4=+ z21>OCi3inu+h+uM40INSye}c@mOAxi7>(&*?}xKi^F<2;qyI0{7Ps*^?t0oaY;-aV z?G{~!H)sA$b8cP~WNRVoh!^(7_y`7uN=*sE2AU6DHIALdQSS0*wAY2A)k?7A+}Zs0 zlo(C4Oq_*2_?P1T>rVk8_4io_d2{DB#a*SiS-;`j%-&SX#M68%3btDV}TsK5{GaTm;Kp!P>vY zo*^;vAGB$IzFHQJUE6+;=c*MVw1&*AwqHZU2AhI5Suhqb$-?FY$!g{Jva=6w`fZ6} zO3vLa{MJw9JhsN+!vC^kvkv|EFnz&)drvBpAK!C!eD@&8QvAI^IPv3y{z0SA4hii1 zcj>;nqoHI;DS7tS@LS8@Rs2okZx(+y^0$D$#r&-bhcjOSR}$ecCyI>vED^5F=tN>7 zJUR1u^Q_C9XPy%>=a^^2>>kDsaqB@Fl@nN26F)Q{hQqULgK!f|)38rx+M?y3rbBl= zW_juBAhb=lg1niRc!l_^H{xj)c2r7J(3PA0D}PBE_Tj7mJCEb^^H@^%{!%B7CaUOD zzhTGf1q(Lq5}4||9hoNbQGdTyVSSysg+BaC49WVB)AVELrjr`njlD#^gUrU7Yd;G0 zE5Z(uGt=>1{_6ahKzi)7)p}$J=_%Oz)07$0XLPcC9*v9;d^2LAL$6K4PF>ck7RV@m z@lCO)3xF=*>Ex1xXI6Z#_F(pU1_^1j4nQV|%2^sfZ)Y-NUVnL{EcV9LMB z?%Mye!FVEq_G50&{;a(YU|{HNmVa7#sl=L*tYXQGKu~G$${kpzOROGO7ib4LUcnF_ z=nPXzY@~rY=g`VFp+T{iV1&}=l|yKIsV?~FEJ(T|INDUgZ>uDAqU7W zCK9`_d5`RQlD;#Yv0>5DJ{Ble%B%S4U4};oZTHN&>lik=WDf{BB`iopZH zgL=7|@OiM#Im9h}-tOM}+#`-aZONo`bzk=F)wkFBTXfnfm#@INy*491aK}`cuRLb7 zRqKxG+c`w|o#V1uN^wlK7j|35yQfO1=`aSazT3&s7#NRUZ zxH2P|KNDlb`RomaU(1%+y5HZTrTCSx;Vx|WTk=V5$q#p4|3*01dp8>h-^(Uw#oPyr z&-kt{Za$cdc-aHF2a7lv=r3QK96f;hh5!&Q$$$wX^`_#_`r?Pq-Z5nDXW(ZeJNVr> z)B}=ld#`5`_G7~e2=5#w&h5YVN~*RJBia=SPNET#kXUeF05IKHc#TP)XVw2Q<$5J^ z7I`MJ&flVzUiYXWl1~I_klF1pw{2x+GdA`0)1t2`%`key3}mW_H1M14Sj(x%V2P0; zlT)Tniw0<_amo>)^awBMJW4lS6>`JVrs&@%Y=OT(887~BkcgK1%&}5$x8YU&_^&=y zbO2Tli^gZakG*x#f?IF;it*?)_g^jV+n@|{4CA#LqTFiUvU7V;W*dgyKiHCXi0Q_H+ z@~pkHvAO<_3+U5l z^U+8riJ`($d>9LZI8~~TWBG{kB9Zvu>M59u-}giFi2G*fE&kIlo5y7Pn7}tgibVV$ z5E&lQz(txnJK#=J;~NU1<)5R#f83=4@s4-)vL9FM$D}DS-Q>Q{V+$#;C9kn>k7SFC z*m@7zk{>><^zs+k@a`=Rj1E!Vt zt+gf3&K6l<-`Ch8r`w0eK4f#2k zmN?Tse0tbno@mFpoRaT8zT|i@B~MBu3P?UFai7e+DY(Oy7`2apeXO+w&+b?7BvW#u zO1|KjlGA7W@#xWt?QMyKnG{=aA}&=$76cM;t$=yc4ipbF#)-HF#7=~wbxo5>|5GcV zn$R*j{%mO?ez(mc19)=EBA&+zJtjs26{P>6(#NC32u$yrPrwYAO{v8P8J5^b%sv|R zK+zqIsDL>XKvn?Kf6s+*FWn_}0(EaY@qE#&hJ`pmT$nwk^aUL=syx5^^XFf1L9n9w zqVg*KKmM4JwMLXEjQ7O;HpO4Xj(h%1+%z;-7PnRrbCK&K6K255v7buW@K<|ZoNR$O zNwREN>y{;7lhFsO-i4f&({obvsaq7VAlmA@|+`bRGGK`wOA4RJkn=I=Km zdF|J_?V>NxxB9pllinXhu4}^j_eN`Si2KII{_kbMuU!wPVmm8#OCu}sIdcI9jE1jM ziwy-o&K^|jGgNm@x3e{sF2>awz8psVfTsFeQv8l;SFm+H!g#wHj9Tf2_HqK;G|Dfw zFqpa&Fr%yW+OD2pcB_ZA2|E3J&9n(G|A&chS0BTx^{cA}xYIV<>8^ZDwf<=lh_K(T z!SZgaU#(|)G_oJlVQT06PPG}zrFWAqx=sW1Nj4B!y($YukkTw(+tn`VXN~f1s9M%H z9ZBC=eKTTVa!g`~=8gMXNLe45m_AQ(;!qVUSm3^dGZ`Wl*eVwn@Tz%jbGBwRzPBZ^ zR-NYJ=5`e|DU!y$glW1R9!?*SSO1a^$Q-IyeTby5H%h@kW|}E~QZ%EYuTjyy5NkJ2 z`YUws1Pajqe4=sroke`E%F1E>=Ytg&UUUHm49kzle5oWnc|%an0{pZ69#13hQ}R8Y zZl3#i$8yp$gzrDbZ1e%%b;awW13jMih(F4^XMk^D!6}8OdGqoI4L)^<|M&)y!jzva zCtH5DoNT?>^0W2k$|t{H_3*2ICoA86&ZYDC`A?ZhZZq#KjT`IoIBn|~nxvibW;xA|8n5lFK_h{OD@;LpQ&tl+Pd;3NE%^6e4+ zO8NE(f2DkTgue*iG-naMb@LbDTQ`3ZzIF3gi!WBIQ)#$qk&LPFbH8xz+*>_gp1W{? z$QUPGf(CGdx6Hj|!NS`-H;I1b{P99$ANv&LXV1?}d7?Zy*E8+$#?INEscRozcfF_n z$rZo99zAOr+cst&7y4e<<>SPYQ0JFm6Zd{`Fhy@`^caUeyRi947r|v)vzeX<{N*~& z;}5@do!NwYau6S#G~SN8d>BP5t1*Vi-}m@+o-U8d#HQ@>+x`LVFElnw>=7245<9Xb z>eGf5o>#8(95pFMGD0-d7fFrz-aq2;rkK3u@tVFz?1%OJw%bo%Li;d;&dl3&)X`mI;t>v zxi9{Pf9ql0$L&cL4H(fAf78EpFNx!?`{RfF{ucSG!RxiZMf*STqXa&!z+nQPAi(ui za`uW9LQGCoS`Sf9SM7rV9&)o*An&dB+{ifa;=?@aqng-??dl`FBHpYn@ zg^IQkx>KPD(2!ZGP{&F_3l$1%AV-vtYIIcN*KCa$?!vV?v!Y1!2m0_8K4f`a>(^cT zo$Lh`7a3iNgcymPb{nISTQWFiJ!@{mjrOXHg*V+8&AoCWj9WFXyTIJGGD|0_vt=2< z&DBpR9(x3Hwu8byZ+0IQqpEaq$?@`1z0SK7JtWFAG2weibV#cO-$SB8dWt^j@X8u6 zGX2nP8s4CL3r3gDzqAYgBhk0?d71efAeYEbqVORRpvXjW2f}=wWk0*Qd*tRIKB@sy zQGjbwyLmE`!rJSEO8L6N!@Dj|GTJHjZ7^?L`K83`A4h{bdLUoEJMFV zw0H0lUajBw!C}iMrO)>n4-JFWbR*vjBGu5u(D0G**hoAR-xHpPUaXHSuGUa=sC0+85%Jr)A4+UwoSOanobP_G}@k*9#Lx9AYm> zy*ViLhA-(W^&S)f^zNe@Nndx;w>Ifx;p5%Nt|jay^b7?o^HuEcef+>W)!1~JV!yB0 z8VFjI^JnM9)X_6gcOUvl{7rA_@M%s>h)V~ZKSQUWjl29$D;u9;INmW0Gp7(M_H*WJ z2r6eEM#T9hjq?r^t$;#5k~)uAMTYQr*-Y{b;E5_hZ;O{;KCA zwY8pI1oamrJc+-g??uu8P)TM3YL)b{vu@sfD`4lzwlD3x%BVm5!5@1Zc1jcy&KD3QApidq4^>;2VQJsubBdqNqyd=Ds3SIYxI#!10mj9xH> zp^@pIKVVeWYn8C~jxiXU-pK0gx(g71xPNy(m&eZ44%)fU9hd%2tLT{exY}I*gz5nx z0#7UVlWMT`>*Nke63!jw(bAl)wX5ZhT+nx?O%vB6Jj%!^8>C0Sn-NRD7Xw<^`6x2D z#g420s544ef1<4xcHy1RV3*-Hk@Q}M6NpSy{!Y}SqGMcFewh*z-IZUS3uSL*bZok= z{IL6JgDVqRdFUP3k-0d1A$?=(OxBHw<=cUnz0?X3X2V%bJoy&7}nh=JmY3<9< zq29d{bX`?VupF4o=?geFti^qa^?8}TVvRQ#n=#tPRjSlEC)!W;u;?zJW~&)$)n82TsDA)XZPz!8_@ zd$DNr9IOvs4DcB3n2#LZxrF8$J095_q}9aUZ<;1@I-KnK*Skx6R=jl<=UKU6L7a1> zbj8y5es{&dGj6>5-b=FgPPzM)?WXdff{DcWHT-JFkgaVW%qu8yuYK(w;b}h89M37O zQp2!a5tj7v_I%Ek_%#DuY zF|n8*DmF(Y=ZDUssv;eiW8-SakR^P4C3DPYq&LH7XnND}#gtRJ1#8YMd(xj|p8G0SeuM%ck}4y57ap5E2i<2gs7 zlj%x2_!U!^@f~(qyd#{sgrb|S$M~}UCXTVQBKG|2%S4^+MP=rUtI)v3N63E=+7oi# z#na3C1*wAtbWMj#N+XysdA~$$TkbP}ksRY4B{u87>%U+O&F?Gh{PSZS&2I{4hIhg@ z@xrgLzqNrB@uOk?Ju?VYbgYVNwRACs`dcm~hVAUql_t*IL`?m-dhsQHRYf;2k~}D) zg>yf|Wq0G&+Z8`D%75o`6mBcd4k50H;)nB=e^Gc8Kjd4M|Ae?N4reX3=lM487-0B5 zK5gEBNL2D`x}&;<01sjDkNA<(7T;(JdN+Qkoc!gA_x;z@$A9wUAAe?Q zvT}6lje*X-1DVvJJZE3(;MpVA$(ngmGKTr~316tsR41uF{SGCW{$!a#GI5G}@}7V3 z4R#{>)mKkV^%VG|s-?c(53TQ*FM~hPufi3_R~UD##WxrrI-2>lS#lu2N6!?*2ESn- zHZzUrlgTcMb7`p2jT@8s#Wyv`^rV6F-`vG!RIUBx=PbTpo(kJ21DMPG_atc;Jq|)S z$~iGMDd21{%UeZ#t;9K;I-KW!^q;9C14v%rzju}TaWoKHh;Pu?brqX9K~;MD1i-%> zgbVr~J)8*Zgniz1oSQnh=b98b5?wvudeCf zr7CObbJ>B3cjWc<;A$4$()bJl(0zSjT{;!;cJ{8ABr=NtQ$B$qd;4BHWY;i}hQ5pL z8+}bBM+vkV3x07_(5%Cx#?gzE(H}OtZEg5QSa{vyS(ZmN%!+a05klhJTe6$h+H^d2 zd|m6p_*?T6cZXUuviF-u>b*P;#w)_H@yLyMmNXFz5(6GwmCLX~`C!4UJ23!$EF|sl z);E)F9-p+;gD7KiDB{2CH@wpQ2%{XqG!eUz`0le|Ka)v*a4W~~k|k_2kcOzlebSo@ z*Ad9cnib?0zvAQjjt*bvn2)p%djtyz5vym>ShrG4#GMm{{i)Ey6z1K?2!}{B z-KECR%c36URv$^+#>4;UW|oNH5@EVEh8uynj-HM^%)58J8-NUY4{kolry|f`Ixb*0 zF}3%TWYvJt#MZ1jWi(B$qLI__*;yM;vk1Oq@tL%?QfH{2p&PWNCY}nDtcJ!`xk)}o zd6iQB-=`$HPqr%zBdfyRu-05(+Msje=(c83O$oHxfA2~NEV+tOdj?RSks(z!Q95*5 zoAf;|1=gB}N3%v*so&v$hsoCB9bs}P%;0dklCp{um->e5P->WS!H(5L=pUeeU7@5p#%w||aIWo(UpnjOw_fQD#d zn68!|am4$sV?tf|A>Q>b^Cph+l~FXPJc4IsQ4sD2x&mr^$&KQ$f!?R+PF3bBG@3w7 zW()zz>upMN@hVHPM^es7$Z(E+SN$vcji8WQpZ#CcU#7RlrOl9HS{BaIU*9)Hc)@M6 zDR+Np1zqxXLw{HH(O;;p|E_b`iDK&i1^un;qrcxehW>_+rN8FmzoftZmPV+(l{77R zU6&Xl8jLiB8VCX`G7I{8*9|@lkrXAt%YaGBYsDt$QU-fjpqgqe!!nDNQbgvs9hmgrtx04bgfA4+>anct~mdrr^lX^9uK?x;&lNf~{+sMhH zFQxVPusTBqVg@9HSC2vn_0d?(Tdn-^7`kSxpN6Gw=eUl(aq zlH>yqvmF9m*KhM=l2X6~LmKObi;gHf2AXc^H4#DYA1T0)^<-OM3p+R~&F`23notP6 z#BGlnFkF;#0`H?mGy{f+Pq3sK(t5|5tErF-mY(OqgMpyo;v*9bHxaQGT@9Sm_83W3 zwkc1PxYoPg5_g631mbFGt*O6@5~3ze%K40my{wSKNDD=CA=oaxhgRF-Me=K%(K#33 zkZ=lUa4st(x74N!eGq%{S@Q03Zb*S34hBw|sCV0DU6$HqGfVX@`Z zR7}$vhzlr6lcZf16D$%rhwRHRmg$lZJ{yNqB$x^5k9U;7wkw(YDA`2%DD|a%esoBpTiR32}|qx0ier zy8n?r`ks~fXltqNl`o&lSct^eM+5bc@0r&D;gI-0I4@;}iokEp9H50xccw>=%^8l- zLF^}5Vt-|eCH5OR6J(|4H4u__E)o~cj9kNVC;nJvytF1Z$X)D$#}`i zo}B1>yv$s~iA-0DV#sUy%gkXqC7C&#%+c&{qK{@v#DuOHnK^7_W=pg2kA=VtIX42c zDTSoG`&+a^w*)&Dia9AOEF%w#J{yTRN1d~Bv7x|OVOLO90{IKlGEO3G^FR6u9W4SB z)R?e$lOel+AeBktMF#P=Tn{;6LPJK@4Ov+?C>YGiy1|^RTf+!8YBP`TNPI7tm;dG0_L?OEHe!>YI4$6QEH|3H(&L$MFIN=2((hW zi&L+IGlrk=VEI<;-R!(a{F=6Dp}7GK>!4+l@o*0! zxvYv{r43dRER#@H2F8_n{r7x<nwRI_7(-dJoXMx$cRW)O$v zDSb5C+RSV$;Y%7Bhy$%iK5t+Nlv{biSp0WA1jD0Wl6EKb$D#;BAuNjYtvoS*%}G9z zl(Y?{6+)!{%9AsnU{S=yB2$Wz2#Y>RRmX@uga3)hlSLi1IOtth!8M<`)n$<&7c8Pf zLBKP>n?_%r<|5vsIbnr2U<{S6zhw@Xim*~-gq0#ItSGxLC#+21EpSp{WisOsGvN7H zsKr$Ly#LV+Ml@N$D-9^-fg5riRGwV1rD8j(#M5bZIah#O?WGB2tC}U0P($geZx}%( z7MdPUNkj=T8IviZ#1z5#eqaz#3t>dS9+`89BFj>H^Kj_E>N&pKPx3m8Gy}lDWbOGL zXD{Eiw0;j1OqLBmFZnV!DZER`Ep|Z`8Q+5svnFwIk!+;U+PIeT>SSypMJBNzDv(ph z=j8l+jcc9xWaI3|+SHz6lQ-;aWW(kt`@X3+)t#D(?ap5RZz)uzuXEDGRT&L7*~2PZ z{60u*WwNLMvEG5#CVf>Pd*RY+h3r?;;~;5jpjsbw#`)aWTGm^9aK=f7sLH++CVeBE zabmxfBp;`xT3CT%_`0S_1mby~hCpB^F=*MnB+&quKpDnrLg45n#Fbl0A(9-j!4N@| zsv;#K8zqp9S(d36gZ9&5>LMHXn&M+IWaFsi;y%O0Z{@|3jTlGj|L&3vZ7bsLDUY56 zMr^Yr0|jy(Iypp>e@8a#!E01zne!QPT_jLG6SDEd)s}2rDSo^k&ml~5fEKDUIe-c> z^6HDoTZyMhl95qH0ZBS0oLL3>LGX*{iZCMg4Y)1ld+(5A_D8LL(Jq34TB{9OM>QCd z_?+kM5~bV-PRJ`cjLq^rD$o!|y`5by-xC+8?(rvo0ERj*@Ga(lbRX@}#Fv>Vcu#yk zwd)l6F*{La$d*|Hdeii9J`zC708fz2DQ80}Q$P)sslVoNG%Q&ry{GWAmd8Q%kXuEk zAYQc$Pwnsx)KW{Kwei0n9o`Lfs&z~PY;3evGMQ*ZEjJLi`~|KH)YQ_T+RbV2+sc+0 zCfykDQ#-g@1rC0H@CL`m@m8_L=qHsyg}BT-`DL;3S~`tEl)vTcCoppu3Oy*O-p3kh zAE7>GE>RL%O-(Vw(Chj$bYDM)UNa_H_C@NggZ!|$lcJP5PV??rzRG(kcaVvK;BpLH z?@XoH;f}wW#}lVLnsDkUPZWJ~jVy;^M$8SPvNNCEXd(HDQB}F9LX$cBibsoValTfS z>i9xy^~@_-LleuXB#dG8*@SDH#Xf}ha%a5eP^esGU$YW+xzXJSwyp{|(~1(9rJCf$ z@vahQY_W5VXjQ4hx&Mv<^rMKf1<<9=H3d#np>qYgnWFf5>1D*_w_7gHb__!IRK3K2 zH;gLAQA&*M9lf$h0WEwIp#68>ECfe#M#RjA5RQ98@=0r;39!PB^1h2;J1Wd z&(Y>6%1oz7trwXMA{SWnGGarb$l#Ym0uqQZRS9>JEnXMJI|~8Wv6Vd_ zRaN3Hp%++EHGDl-QN<8c8Psy@hozy}AQ`J{gI=awx>zO6=SxB_NtVCRR zUc?UGs6q!H7`)!GalD~gB`tGSmDNs6ly*Y8RfAcJg;~gDhT#`mhA+}rU>QE4qQp>F zC0v={ex;3u>oxG9Ch4=93P!QjXjL?h$+FSZ7-dAP*j!V(?Bhh#fMk)Qsl5Y{TKC3x zd8xmYGRolYBsE-}851!hB`S;4FC|6!s*jPi+<9470`6IUDSVMcH6$wKa5w`|#zpE# z(CI<3fz2t;ax*yPsl9`gm(S(c4D#U!%}VtSq`FdYSI}C9p$ciluY8|guK88_0@gl< zEH8Lg80(*b&6^Zr^@gdH$Jyxo9oKx|D(YP6ivBvl3`Qugs5NjAIE#;pGvn)V`HIQu z777)HQLB$2OIihuwiB$98&JAYV3^>SEmj2+HKB1tM!kPzhSaD+rzV6VGU&his}`qb zx;Q0%RV)U{62;)uOp8-unr7h=_;)xJHnMe}zVJWihu{5w;D=I>%!YUfe2(XdFXVWl z_lQ(&ur){+w27DMcL0+9yph)+Gve_le<^(32!J;tY*MVY{ZHVBGZQ5SUk&b}Z=WBE zBFpFap^L0lss6}H6*bgwkX5w7OHfz40yV?e0XZg=<%cyEaa-Ru2x~IY#~P{0{w9Pq zysl!)V3fu})hxdg9M@#|-9iJ|bk}Uu{6ts@Z?)+V^uAN`d+xNCW8 z*U*Yh;)b|?J}tg`d1^Pj(7Q4I>T>So+WMX``|! zN{)RkJmwV%-7O;FYjsQVIlj;n3e*1LyqY`cp_Zyrft5Q|PQ*uT+Da<-zGQy4I*n4R zl{?c5jgQQ7r%tjj%%4${R!*9)gv%G%yBMogaxI(>y%S$W|0IkEZ%duql*xc6@s-zvekr4qags^1gn^l{26UPBh& zE)v=c0+(8R)25atqcX=J8I9<%_;wOpt34jq>W;%TDRS!!u9;AO28rAOgRFDc$R;Cw ztdq8SG1R~^#K8w>a~)(BBROFmZ{_NND@M@bIyzA&*!S*_cNJJ25-|(`C))fiA6HRi zV$w>%Lw@x}t3uWxYQS9*Bc{Th%e_5`QR0){_edI2QYhF2(P)eb1R%J0mb9~khFCq3 ziF=P&T#aBcN&O)l=hdEH@^qr+Bw{_a%!4p>*2oJ69I!AeU^`DN248vXM15 zvM-|Y_y~;Kl&vpCt{h*2?IONW7^P|hPCPGu@YBmrCp>|cuN*)Ru&ehzhYwn{!R{DU zf$yeJ=oSMMHcQ_s=X7LC=n8p_gyh}e-Rj)tbG}mGu#svbML~TKfhr^MMx3G$i0(ur z6RV^uGvELBrz9nPVu)&XhpfRulbEf8Dl9t z=k~WFHQ9unWTmqv-qb-Dhu2J1-7jZxv8Q-+#jMGMf`>c;R<>FryF2c2v?Q z#KLSgR93v>RNjF$Lr0PZcQ$>b_3fsQRCKVv0jBv|dZ_|Fc!nk>QJGZkagKd5EIzAo zW$&iqZSTf>&wm?TkEXbixMZ77?U1uLF`(M_BY$fxTyQM*F!95KmZd8?Bmm>pK>~0k zqhHK^P{rGTh=#ecd7a6urJ3(1W1RtRw!gL;gVc^DfsF6se3{F}CMvhgypj0^jc0I* zR-HK!*>a-OJ)W{kxD1BW$Q?d!dTbE(?LDf^i&^S@sOmQs9*QY#%moV|7aAo+V5{CddzB z-GQFot^?b9pE&^n#6?ZG$BJ@~-XixB#OmA?iWgJ|%P+Wy z|3_Aza76LL3+Kyi_%|pEF2TV74>`gx{t>V`l0O4`;`Jo@6UpjzAjo7a-GGpMPtXf^ zF$^I*>5D!O(S%xcpYT`_ zX@yLQ^h+~TnA#=Df{caCgV1!keMOjP-K2SqoleALwoV7<7ZiF#`&4sKXbn|I!@*k} z`7j9EK+3RX6G>m4_b{>I9n+IFqrLCpLK@Jg1746rKHYkjl zv>vE6^N_)$5u1!sf<+0Z0fcv@iP$fKiJ9L)KkHw8vi}N2ZrMA?MSw5&hxYg4XfKg z3X{pyDLhLPm1`0u4^(Vn5hi71ka&!+SwgW9qUFo0U@#_3Xj8MT;=&BCn!~xbu-c{; zkb>n_g{8sXhxjl-RFC<~WT49ytXz9$ zGKib7$>ZeUN%mAl{+6ehbR!~>xpfQkP%J=d0swL#q}ee_bYo8xW{ASB8l7P>J6+ET zv0a^t_g!~KU)_Tp7>z6+D``YIoAwGOeG$qmB$p>y)69pu)=kN>S$6j6Nx`auFwHAi z`CP}|0Vjb3ITl61kmvY9C@p9+ppcmGKsh?A-GE^mQy)l7{#6h$81`3rA5AHA{2W#3 zLi$j6kaLCZYSw6vHG!p}Ld`xMb;TTJKVWBHewgAe#iQ{Bkk3=ctkf=Rfxz;40|VOa z+R&=iZ?OdcGxb zv&Lwb^QFrFXo{(|96&Se6FsO*R<0vKUF())$vys-@2Mp6{0{lrFhS`gHS^s$^zTyG zHyly%@!-mCW*RDxnE#`4Kp-*s8-awc+4*98gU|V_esIm?V`Jdrc&AUH^LRS4f+!@Q zf(xB9^vMkJT@b54e0>4hs6gLz5AHYJZE6~gF8&>C-{UrI_=~1NiLxJ=nNQR-!=%~% zC9URrlq2nGA+_83`r7u{T(i`?|HIzfz(-YFf8#eHXwV=l1dTS>iv}7r;06N*jdd}J zM2WhP@S>tg$O{SNWt(guv=J8ZUn*7r! zt%U^ta=ez{EAb+ui)~9AN^h;cKs{irFKDrqI$%*A>IA!cNr(E1=;;44`CWgk*iSB{D)X^&Ir-gGxCp`K0Otg>alcazVww5}sTt3DF7>LU>vmDo%5p@$9K5oi>O z3<&NCdO}iocA*r}8hd)V$tx95i1mYkH^G(%5V-?T94Fc8#rqP zjGt93DaMNBo@+II`!yALT@KK*@e?$|y7FOxaB{UF5KGsSRNXw!y5U;+lY&IbArYJF z8|dR#=JF>QzL6%f8U}Z!i9-F81XNQ#TF;sc#Yhgs$5O$*GIQ+V$*hZ?q;xuK6LunJI zl{V)3E5;BaU0XUx2K4=*Cnky2Y(xL%{JAHECVg=9@M51g<0aH?tVYAQtX`wV>NQ%d zp|(9mjfU{u({;P9FuX=%n?CX;jCwV%(NdDS7wP(vk;J|SgZMML&Vsr)=R4?70JcXE zK78cm%iv1tLk=mVU(^FsT(X%=3$0`EV|$4ls%CI#=K`9mjYA!%c*jtu3ARLN6r0la zj-g&M#?%sN@5!%0L>fh!1wW}8%Rx^A3KaEM;K^`A!@F1#GN5?{ywJw8(KcYs-PE4@ zFbVcplrrblc+X#1ro^|%7;5mmvR(=H^y~_F(;j}FCcqLOZo>^NsU-NVdfsmyAHVBU z_fd7hg_~5c0PCa?J3Zg*3iR8ix$N}N`gPTPqz3~Q3qK{_*y_rpp&gh&WS#{)8O(FE z;i0?<=r+gmv+2N(hBufWG{zbAiXGp#p*aITv9@SR;H599a6!wZejuP++|Tj^QunTD zb@s)1CU5kRY#ye#cP;$Tg}d|Yl}?Dwwu*i|0p#|$&4Ip{+iH%Vu8sL?^GQ4aIsIt0 zW^%tEqDy0miT&E$-}cq!1O_ab14&}jDbqXA^ z(uTE(D(!(?kb--w3Yh9?*3?SCcvHfFr4`T`1S&c8>rJf)E~e{~Q{Te+xW(_yA2e>y zf@sektcvq&)~C?7MZM?w>%wm+>nwN|`3b|R3sUqGW1Hh>^%w~Xor$Czs{cIr5~;mV z@x(2rm0LE`$}Ro;To&HSq!ii$U8Pl%l~V(G*eA4WB2+7ny~Sh=ZMm+}hN6hglrQm? zE!*fVu1_4rTN-H6B!Rg+`rMc8*l@py7)wPStT{d1utI5v28~um& z+q9*aG(6(|Hg>?`eyGH864%T0eKPevX--u8C2!5<2a!r5V zKsL4DwbH$#MQD#C26mU>I|=9t+(C31lLDFTESKAC-XV6FtZK@GyD8=VsBg+9% z*)zf)^@@ktxM%b|yLRG0;3guyhIahGCxA$f`kcVGXTggxgb%4CFQ8j=oCM>)ir9M? z&dQusjj(t0rJ&K((U*!Ky1E|=?;{e}-XFjd9epW~bOp{t)3j>}Vvq9z{z*+13!Q&G z;;5ai6ADmDL(aTO!CIOSO4ln$^CRu}*bbipzkuhiC-HNg_R%`~E`^T4P8~Ozs;85E zL&&y{!mjk#3AL`AeT8197GwLC(h_|qZww2b+%TzDa`IECKM?!5Tvol%n84)ya8nRXTq`aw9 z0wZ@&R4lsPhaslemvKs9!8UAXv2)>xO-Qo^H)5jkA}o@6w){Cz*vb?M;OAUHEd*=1=--Dv5V!9%13| zH0I094?wXVZ>fr~5D9BMC1Lv=#58R$-aZQ1v3z1%MOgwQAr2@U-=rGHNm`G23>4XE z&~d9DvCyU2<;y>gov7{Q7Nl9=IatuVCT$NqF*-C~*nUGb?Xt^vMZdtI3zd4kE29y z${z=KM6@@99{Y@Ue{;ryEf5tA?_)wSj+**x&ITC9tomSoH?X7GIScxVG-^m+6K+BY zg{V+JI2P4x%y{><1b2HOf~rCTVxb9iT9ita_<;Mh<5;vd3$HJyz2rjPn3}htg-QlQ zp4d^DOu^9C37z$l4>TKYh9~ZiqMc{G)Pg7GpaT!cH92t|HkRBSHkSG{J2^ex<4Eu{ zBzD+TMgwm#jn|cnDqL%sX!|=+y&j7{rQAnb0?_#mx}Em+3fuuZvX&0ft~Y@j!z8rT zSAh1X@D8S3s6dF_GWXLaWblu6zzGb&%asJ#R}zJNc2qgr3xIYMV>sOKSJB!w3!g)z z$T7WbZj1SyhJxanYV2q0ESOVKRWz%#prq7+@9)cMYpT@hn(C41IMm&#G7!~-L)x!P zEU&FdW$FiKcqhhs9keut3=O}>(`?Q)6bH80CZ0ZrcQ;^N@#2plP88MNiIhJqNTyi! zrTv>xfv9cGS%WDN6Ph!YG{;{DeW7o*65PK?v^Z}^!e(JEed6X1F_?-T6tZ43>o41& zII*68;2pKBZK*!^8IQH0-k2qxKInzsSbvbXz&(AQVTtO9dY^p0slHt=SlUznel>i& zD;V`E#Q?8cBOy{EB8#f`bo+6!u_$QCp;^`Xk509Tl&qt~#`=WeNuSC7&Vb9pD1*eDQ zO|>^)uiB>t{yc z$Zu1of^!B{Fc~=4q!}`P0&B&!o*YtiCAB!Qn7oDFR9!~=EM2ta2XjyR^P;e(^u?U* z)tI}z5*}f}t7l7;Z@{y=qTY%cOmS$A?>7nC9lN)vAXW2d(}t8uS_bpLPsP@Ev(*4?Sqt}`e|X-#Uf)>rr7%%B@zMxKF~TI;%34oP+Fpr8VD?1|x452C zP%gn|j|L%ZkY-|}1CU!%u=+yTDebIYEsbE2PSvxwFChpkC1@3WFgzMq=yu&8!Y2iZ}+f-~< z=iUkQDU_R=tFeI+e#q;?-b$EI62Hy&e?4JmXG;PFQe6zxAT>+}_H1BV~sq^v9OBoZiE9`W> zm;PCL0Nslo&$rYFLKSF5g_#0&<4|v6g%f@~M{$ZYK1%j%VV_)q#sb>-?x#0Vbh^60 zM3<*Gg>9+m&0sq$cJ0I)ZC5cC);A!Iu89nz1ZCKzgpB}Zn4iP3W6LQn7-!Vl+p)B) zwkL)@=?UP|9$JF&3VoatgT+98+&ssyMlG=GsJH(LxbwWd>lk{?c-nOWXN}`Nbi23z zQnGh?`!6E7 z+jCm^sqd0kTvJ(t?I>$&i{|6d2kqnw+Jn;2{)5bEF>~xS)Wn#Vgr$(*#<;JcVKy8* zclF@ucyRV-^%@AfzJOS$i%$)~n3e}|#!1SJIJb?BRA}u1?1#>mvRtkW;9+aiPh+qZ zr333CX$zq%CS}?Kzk^38m)yq&EI5F3)4KX1LbM4x-`@{McslEG?gPqxtp=bz8-^2G zXg@zRE#2RqG4Co&o+0RH0$$g=VoU2zwBiyUUX1`_zBg)-&lx|yDds|aML2Cia9ied zY&(b1iLbZCT&Q+`K55eAa{EIlA8$fWlh;l~KSAv@i|y=LQarzyHaIK8j-W+#&Vso! zY5z_fIiXcX*e|`flpotR76Q!$k+#v5Ci(Dw?r49n+(>&#u3XQ44LjeJ`zZvk4MUb? z`%k*JCg|Hv2FAu<%fvkNl;+VJUe1$FF#`$kY52gNfSp{A5&b6lU9r8lsd&t z{L}PhGN~g+Th-B5T$P6ZRP!Rmiv0O6ZgQ7s%WaD^5&>o^Kq>X@sn zW3EaaGt!!-&MB>SmZ;ec4mC;1yyd20CB1I~R2PnOMKxM-XensjcN{TXgOt?H*d%^HfLaUBF?3XxtD%3Ug;c@t6~NUdII1jt;!SQV2s{`0K+e6=W}8Uf^ly7}mK>u;4Jr#K5yjl#X$Eo(b_dw-J5> z{(K1`$QM1%*(eyN29~0PM`okdQdC^S0kbFTcQme;-HJgO<<9BN=y74VY8trQw%B*8 za}dIV0#R8{KkltowBXz67|QaE#LTWS>wXs-iB4d%dEM`o6we$rv#1`MC^^|MKFXb9`&AGt3Zk6pH$w^V1> zqOk`DW%h7balTw8(j3PXV{1%3#o=Y?Je+AzuV>p?nqJ^sidrZ1C#)A}uW9u^wHH;I zlIukwyfqeYK|C$;{VCE8pY`FqQ)mOF$ACpufRL{Epfqz377pB(8P9$P;<(BfOv^oj zRC#$QI?&-e(DEy|Ze*_e(PAfZO>SV( z-SqPZxRZV%U(RH6A81LE^J_Hbpxc_LQNZ;X%=;F4KLqcgpRVG5o4iZ>DwH`h=DsC6 z@X(Ywa9d`);+>Gewpi_hsT^m68wbT#ZOa@)Ff9N&8s*FZ)xB1; z$47TJBP3DXOUO=Vu9oj6XEQZtU3a1Cp+hFGuc%}ipjwUfA*JuagNacnl%L09Y1}sA zTU5j|h^=zc@gSzTH~y6%3IU9M(|OFZaSAyaGUc?e0#C{I$${f6kI|$Y^%v;gKlQzF z?X~CY3o8fYy$L6sy1gX3yH>;4;W|Chh;YedJ5aU7Du zU&Q*K&JQf*QPXk>%fRfc6(`Qnz^(g>VN_z*LG^TRkl84Sy^GjH z5au#t7j7j0r*>-D2xA+0_P`j(KM%YAP-ejyJdYuO52Ay{n{K~HU^9!VX?(xNQCh8{ zD6go&D9+r9;!^$sC(TyWIkA5&d#TJTnp=8Hz0+P>ikhr62L(cDEe9u*I zlqu|N915}4Dp0ShaB9c$<`vy9oBsTnkS&5or@`N4bhs`9*$`A$9{2gn*6tY8ZkPEZW zNU>on9AqpT@)fl#a_L@%2fKE&MKRmW7IwQXn%#0^Xu>UL(xll@)R@Ve-BWHqjN!Rw z&QX+t#lG8|7a@z5-$%*PeIdNiY79M9hMr332~IlPju7V5pWN+gz>j&V$>lF0 znD#&xdWi_iE%V)&j|9!s*=Z>8W6}6}8B~+X-(XZ1fol3~cww=ZcLE9Qzkn53Wr*eV z*k}Rm1A3gQJ(dTFdSIfqZE$Gz0L}cBM zndZM}w4C-}Q9WN^I)CU&N^#Fun8U^s}sXjVqTrWRq_J$@sXqYYuQ+Drf?zS|?3}jn~#L&FoN7%z> z_L)&{F8q|#ZIZiN&2xXDP7Pe5OVj7<$3lvt7Y)vM^udvAv4voWdt3m4L8qM*c%|c? z$W(!~q=y)5nF@ySd4YAX-gayED^n*@0|DoG>T{fDDc9H3SC^=B=U}`QFnvKm$9vQH z-RRCB#B4u{Clwonf~6h<7H5I2(FV>yieV`l$J3r@CY-qm z&Eto+!f)5RryJ49!_JMYfTw}|B;+BL#^{hbDOh$9jVYrguY+XaG3o=>U4X%s0gIjn zfQQDSa>W70dbaV_jz{rv1sSDIC+o2 zL?|$QG@1-SCSh1k<%;~``CxJ|4jrU`#XexuHcZ=0n-Yj(V?Jv43cQ*U_!zeC`&$q= z^6E`(ok;!DqBEttBk(Q=yJ-0R?#N2=o; zR4HG6`K&rMyQ;pj$XQb>^yg<4l+Qzpsj8@=nsgFJzLb~JDKEUn9W`ncPPucc71U0t zL|a+-q2uYbRs_}HRKC>AQ_G6blPJ--OhL=?6ZgR!_km!b6@_5nGMrQvxIUH%q$8U$ zH>$yo>>aMvSQ(M+CwoWsZn^~&=o-p!+8@A^y%*!?cS9G;HS0cDU9ftxJJF>H)T7$# z$fn#0&t5s&2P4z#e!R?^e0+Zn`%+ z4!*|PJNnXGAT0*&=u2~hDxLyveD(1vo$^;6B$g#$$?L-=1QkuXn@a2IFylx4`TE*w zw4pMtLEq0*-lI58_IwO)SaC-}f&lXZQ`mqjb>FU^t>~`+-wb%M?{3!mS@Q(g{{39W z7GlNuL;qskx9&f}x4gg=Ak7P0qxsYQTld!F+v!+mbNjiSib>wr!uvcs&iKLTDUJNH zgM22f0h>p_28GnZV<^&<1)Vgs*`Rd-3NZO^tnaBk?;$67%*n~7MMJeHW<|jr*#eE{ ztA;sLoVHS=0sLsrUXSe!xvyfaQnjq6mO0fk2TlUuQ>v!%qG@bimu8Vrgke%N&YKtS z{YB!q%mina=M6}1z_VWtc=pKV6Md!zTw1J=2)BDOV>|j#SqX}%-pp9Lw-2Vg{1nlj zqpN_)0&2iOek&89Al_>d@O$K4PY%B9BsKHcV^OPRV%i$1J6oAHDNus4+0$qGZQak< z?Kr;sNqCeBkDx*nc#jpH*ArD6c54Q|soVM^R-wl&*Acfi?usdR3mUu{k^{ z=<;sz(2ox2daAEF`cid97ZMStd&OdDRulDlGO=*LeQd#kzhlA*6v(+Lvu(Yq`vK^5 znRhU$|0;^yDvD}UHt~Km z)_J}@^$u~c*~h^Dd;sYpc<*7q+0Fr26oXYcG=!fQ2%sr}H&{5wK3T+}RhtSGOdv63 ze6yo3%^n~!2)>q6&cb?0WJg|5+=}P&zE43Qo6!DWsh=n2iAf4P%aSeug%ul<0(S%SyfXbZe5<+|VZZ@)&cYjY*biQv<`vcgAZgs7I*DfGvS=ok z{pfSLdbt-3cgzb@078JwZ?;#JcqtBiO;}NC%dz#F7dy>GY?ygXN zHa{50A24|CK-E`31L*oOp`)pZtqne;(eMVoz)izx!DG}p;^2eX+mO9y*s_>14DFLl z>FOEQWU?|3M7@cB*l9VYumlig>s?>5=Do9ydN z_H}}N%1cTR>)^hjU(Y9X=Xoc^c%$5#W25d-6q}CMeh$UeuPL5S-upOgZGqi=Fm`4B zM<^w69BqA!=inXfJ(xph$c-`0*Tt-&NAwB1x!in`?cklQ1--<_kukfn#wU-G+{Ux!sLc&EgAZ;I_u(t)Bdwr@nqY>VxD7N_p8WWt^dD@>ayuT-mRz}m-4CqvvwL9WZgxMoaxc3F zSMI~TBYXXLTpigPwVO}7ZPjkuwc8Hu=GSh!>E_8k9LU9J2nt#>N1bU1hBnX<7_OCO zp7!R<7|#$2`KlKDphjNRhI>~!WT16(s60v!+>1suNg^ee@rSnsWQD zk9sR-{vm_Zn8;37Vu(4lj01Nf5L)c(&&D?mrAKi@9MT2>^|aI3*wiG%V2y&E!*GUE zu>QU7_vG|N^5)_3t?TYJ0!ey1N69LpHo1(C?ExAELClhQ_yREepHo?(V0IqP> zdT~elJDcCR>x+H;gMZ9I3nu%E)K{O6EAwO@e5dN*2X}S8Q}u-xT^vvQqz_VXiWUa% z8*KaU2=31gzW@3DF3rCmz0;ZcmXUnK<_mUV)3bNGf7=p*(X7hujM{weuI^9X8>u{p zleji_ztGasGb{(^m-2W}{gQ67TTS*9lRe91&o$XIO!hRBJ=tWpo9s5hK0~=w&|fw^ zr6T)aTW^}43jBzAf-Dti-w_`m*VT&i0?Hc-bl-h22Ib{|Mc9=G;~19u^8=rwKh>eo zUV_*TWh;3_O=Wc9asCgM(R@WM8|sr&CVB>*d;Vd}Ki+ZJ^q~1yJtt0_II?Hxw+laV z;c|8z+2V3x*y@bUpIfj~p7NIaojxPpX?|cd`4gWM*w&Z&N!ToU5w#I9Y!K7jmZI~x z3h!JS$c6MWs{6n{#ir+V`jTc-7Z!UM*$qOyi5xAe>q%YuO z3ZF*_2^rAQUbv_Bq<&5COu&KP155S2L`60BJn|-iYxBhTGLM_)C-9l?L&Xz@}k%Zlq1F+3i7YgHJ|L$nH|kNrHj6W3gj?5)hS)K!mf*78}Ff_15+Z@ zSqi9(4rFNQ4p_7e_vXC#aSstA=lOwX_7ngA zr9~Xl8*V&qijHl-!&?Tt@Ym-2emz=jG>6#u_77eb6%WVYo<>7>YmC zDAtRS$Up)k=W=)g4>+V{z|se_2j`5ykv=?+cvacl-LJCtO<)cS3nfeUi-9|tg(BMh zlom@<{8GOT&_-rFgF7z^^E-{Wm-O-H2u;?8nV?i-}T#&?8pW%~1JgcNsH^3!LL^20G!^(y7vS(PO$zEu(A2r!a zOm?Tq-eR)PFxd~9><3JCzsbJCWbZWDlTH1N^``gFo9wYB`k?8(VtRkr^nR3yrouA1l*P4*a*J>FzrZSrrU$?h=O+f4RlCVPs>|Kq0j`%LyV zCVRkSx0w9fZhF7hWM6KwH<;`$lfBVoUu3eUoA{TT?71ep&19cpvQIbJOHB3*lRe*L z&oS8xO?JDIK-e9sXibkDE^)B6La_ZHLp!>0FfruVTXd!osH z+~i&{y^k^351QyZP4=M4epIldeSSyRXL-l?G8U?<+RzoJi=NrTe}Dch35v-t8mMLQb3jNUFZrliaNCDXrF>BWD6|4QJ$68NtK3=-hw$AB3&1UuT#43Tlci5Q!R5w}i>_FNV7_b(?K-X@-f_Sz9 zTX<*KZ3~{);R~MK1}uo@Hee$P!gO{#uZG({8?blrY?-OiD7a!^dXvvrplhr8Zn^=5 zpeqvT;AO8D?Kn9t_apArEX4v750e0s z2&2NJ!_c)&`AG5G2h6+urS?Dk;pl5OuP^Kvb-Z)akISyS(J>_@>1{S?KA1vjo?crg*?5tt8QwvfbnxoBA(jZV`95!@*jMX?RX z?Gi=l{4xAYgkM0nL^v;9==|99R|$>@SHmXIQ+!m)NmGx_WVwcWVhij=+Cg4b%OYSZqw+D;bdbJ_KP zPT!kf-;IU+=6r+KPGQ&IB!4L$J>Tu6KtW}m@nU`$evI#ai09sd=-Tl8`<4_29z0`s zxSZ&2G)5ZZbJUhTZ1R&~aL`-0I6cXf8x+;b_tzEfgLdaUcv!`^VOz(BwX2@k)ZTMw z&xQ@|4I6rvY}i2mJslf1ZQ8ViL(=waEQ`44|LG5gvVUt|2q9r$;U zKW^slA>za6*=-NAuU-2P`L~CH&h8-XaUVN!=mQGp<8--udNzG<=*TgwZ~clc*eRww zQG0su>4tVOHa&-W_UzfifIWNM_}kNSsQuZF?j?tM9{&yeeeSEC51xJY0}3bcq6^G6 zfkh9P90Ti~Lu)$@b*#m^Lx&J_MuNu==z*B)7hbS%;wzC2&#nCp;(2H%g`flWW1q3` zA3O3H#sA1>dtP)O!OpXrmN2<~{J|z93FJcVKlp&;M*nngKX&Ao@E>7dTyO_pk_IFI z1Tw)dNdp+@k05x5dSWe=CypOqP>K6Jixy3;M6F%uXsEpIL{_rJlAM1+iH>QqtEzJ1 z__t%9dH;RT9^bb@`R)5B6#7$6SXA2yn@XC>u6zrw2lLY{mh}7w=@~TaijI!Hc;<;h z74F%!Jt2KTdP3~i!>#GZ)2-_J(E}|f8q)_xM-NPIJYg9~MFn$8%TaKhu*Alkh>5i* z`A=zo`Ym5+yoX+c{5V)3xcX&*H;w5Q%@g>Qocx9I1x^+_5gk2xGzgim_|arT0_!-| z4t<82L&cWBP8!}0eQt-no!)P7!~WTOA1ooclN}Q8(C9Znl9Yf*ub$72969phPGp`J ze+fM%l<=M&WPr7#dE`Ic;U4M6?8pJ&NB%)mS3M5Kz}t}lmh^l;?B4qfc91{!ns$f& zlN}j=?vw#E9N|GaBYE9DAMf1x_|Ballb*8cm!Ez1)n}jmvgfrYKuXuzJ^1VCNzclk zG2ND-Sdz1{8nd#LhO8|5SJJa=Hd|IY*>N=}jW%0@&DN;jZAu1S=VoOncnN3d%Tr=o z(v=vx;4Ul2UTDwBQb2~QQOT;z&nLR9tdjg(qK73*^B?}&m_0uyjqxXU;Ga(ZG%|lJ z#D~$dTQalf=U0+{$rN;U2dUBsB~dAyg>*GSomHrgqBO?Q1v|x*X(apM>Zvd`XdEZA z)8`c28}XN{STgMC@eLNGumt|*#wn`Zu2MLO7hPaxBmD=H7}8G*bU!^G?<^Jsosr;C zr3YfJUwFa7sUV)Y`6Y;_#Y!Pahdm~Ng+C@Xf#M&Vket&P8w7k9;7pp zw^2#7S_`e#MAB1sIT8}$5)vFr+H{c8m7k11+%;uk5dYzA1}Y{v_I>X(REE!r+4Xb$ zl19=+qijE8Pl{5Ed#(OF7xy~-xe#}!{#=B6z5YBCccP=K1V$UTQ0;F)-0c!6EC znvvYlg(ct0H1?#hc5Jr(Onv;x`t!NC=j+cF+;7#NRotiO&llrCdDWqx86tE?k0V@`KXU~<@##)FUlCIcf`(?!EI zx$FrWkKq2Y{`?c%-`AfhtR!o?roxoKkUNrnDGa3vW#2Lwa+eK5dQ2DT5y_pdGhl9G zPl|FT?&O9p(ici^x+tBA2VG~wT*scEN4S$*=o$rc6MIsW%W&VQKVOdfU-ah`+&AgZ zKgFHC1fYxLR|G@pLV7`YnB+maPz*!5KzV}n=3KbB3U?ak8VE!A;{h0+=Ttn?bv4W| zyr=6L7+T3mR|d>a^k>q?LKuq2co-T#BSW&M-4*Gga*baa68^4 zu`LGF(W9@rBK4|N1en}~se5^{$(UbXk0Za)5bh_xpN#Im`2W5HRoZ>53?O+FU$d$!!WUD4ObFil3~(ea$)#21J4c^7tB(a6)@{yw!-X#IS3O2z2et@ z_29pHFkQI;+kMd%h&9!jHPz1An#wxTk2nPzTU}R4%|WzvGHXk*u@u#9Ma~NBHxS#{N{gKpHK-`tX=jBzCw3XVW#(*vPqGA4m55 z(gp;BAvZ*k1)FhE1+0uODH-pqslxMEogZyyN3YyUc0&br?5ZioP7bgyQ?ADj92)Uv z3I{#jTvSEGJIPMbWIH`lm|$lfIi0l?GwZRZCFAyE!fE?fY!*qOyNv8N)s)m%mgW>y zmoUcnMNO!znORgho;KV9-(k^w|3I{e0- zAv}Zz+mYe@W6^n)rKJw#)9BFdduTfr6qlD&FnOJc=gOKoYSJNX3d(46TzVd^6wJa_ zmGh|GH(DvEtSc>L&AV|*0quf@Hcx>A5v`t!_tz@e{Jf|HZRi5#e5O)RUya>t$w9Tk zb_Zns|3oPuPicRYqS{$?XhRhgI0~?<#N3KnN^kf{_OdE$2?(cX`xRirGG{@N!%;v- ze-Snp;Vnf<(epz}0d^3qrtX9CB*KoQWR|Dsxw<42ueF-JtfID#xqDi(S3@z-pJBVV zLl?`@_ARKWLF3RKRZxSMj7fbI1wjkZ+NgrLb=8jAifU&W@jMY#M4N#seWRh!dYA@9 zYftAzmxcIW5M5SQiCyQ(O=5HzL{O&;jV@zyyg0fnYdd8SUKCwbT2<_z?ub%M&xj2@ zmqb_1VZ?YYj}8SvnH^0*C@&)Am_yG{vg+uc)locu7L8=q^>lu8UB#^GqDu0sF}g0~ zfh)SsS&N1xc`wciOV!ZN1lpQ%M%%d%e?*f#G-J!K| zqamh03O{EzfX6b0AS+2{9J3mSuse(F}OX?@mr`gQIr?BUEDMg`BT_! z4wR@VZn-HlKlh5!qq1_TD}`~7;iohcvTguzNhRq_GHCxDGckMe&Dq3T^A7#J;osX- z)y*xgb!sl{aQA&%L48t3Q8PifXv~MMC`DDGqqJx9Z#)1MhS4YmdWB^RBYKrr7((#CMs{2}(uV*x z?$HV!fU>zkH>6 zfV>HW=8(evd;-KKAm0M<3CLLxs{_MoVOJNDpa&X}%Yg(18D0Gv zNGpa;!#+O&L=|HC0wKeUG+TfKxn_p)dmB(h4|!(}23lW%Equv&haHC*Ccx9_Z*c`%i$_t~18;F!>`O(I|>q1>`~?odR+xkhV;t zKUV{>Wf_qhfY=432#7;KYJs=}#0{iHKpqC-6ObneLE)mMDKFWqET)t?_n)OG4-4|( zsYCmFAi|(g@hgh$bW-O*xYkprrn;<1DQr12#XJ36CbiJg50@}Q7{qky<-j5OB*aR})?35X3Hjj%s=0BI>UBC~;5QH6$S z?gCOc#fY>3u}?E1&jM)^wD%=K?l98q1!9@Z5uQ)|6A7U_m~uU4g(y3QE}l>AAkgyZ zGEAS*%vAU~oqYNnoN4*Aq@vE0Noi1~pt`=wvO*8xN%H9z6pJT#EGQiRqL@BqMEWC? zzCRj~p+M|lAC~GBKx}_DB0mM<+G<2@0%CpLh};IGP(aFoICgNFf|8m7#Em}T(Rmd# z6jc>q$RoHugn$OSYC2j%2*sj~xWB|{2w4ck_M#E-0%_aK5#luq8s`xFc@#A2pEwQq z^91?)0!Iq!&}}c6=?I2s*znd&hvEt$nV^&vtSl-{46p(%honJsMA!MhK<{BV{U?0|~$v`^aG9r~gg1d~!y+B-lGa}2#m4K`UVtLz0 z^E?o{fNTNMCLnJC2@1$ZKx})A{u~10+G|Aq1;qc35gCk*i1l3~G8BkSKrRQ;A|TfQ zX%mnskOaju125DHs zi-5R-Mr1D0d}Txy15pKkehtJfgy$I`)`Lb@TY%UEpZAbIf~(JfSOl6QKsw(s`qK}+ zgf=v^!(qMvh($m~0r3mm#{((c!(D}RmFWiQ>c)!{<#U$${Dh3==L zt0SO)nyyyNtLjBpa}mPeKlKovL|12krt@na3kpUV#q_8VnFqvn%!vGwkbfDG$AMUT zjL5S5W9f%$5?{TVx&m`q6{-4mjiJK$hAPM z$wrzya+PXC%79qV4GL>QJrG-l5xF0T{ijBR#x`6x8Id+1{#+xnmHfHUh`bG?HPeXv z9f-qbMEdqecmzZRQh1AzW;77nL?dDYqW;K;i>Y(!=OX&q!l<`Ip6+y}%r&`9%p zAcX?WpMW?7nhqds{f(~P1QHx#L=FJ44>lrS1F`irB4;C)IL@Sx!$XFPmn~K_i?p%@!&!_vOmsT&x-%57s+!tT zG(}D2OC3U})a~=@&4kL02kWK+f1>(adg<(C+0%9pJBGZ7h2}mW; z6dGw3l0O3S5D+_tSi(O49*AwG5qSwnP(a=U;wm=Md`PZJIfA)iHqG5q&JmLQx1cGU zXGCJ4GA&I;1y8qPi!ZA0B+G32? z9w06O36MVz7-_x*Quv?|>4&IxK4e4^fLIHd!(ttPw%+plK11`9PGHjWk{$);Bmp;|cSMDiq6`Mx@T^P;4QDQg9VqwT2Mp zs-#Nk^c!6j*Ep2c5JIk=AzlKq9*E_2?uuw$C!hanMBV}7dd-M@N;I2{$X7s=okk>j z5O}?4MB;$>1UU~Onx~93qljjW5g8ApFeD#dvISWwK_!4c8|%t@9p9iiDXj#cb37=3 z;p=otw&%koKvhw#lMd`1h2g@`H4!0fc}oxTNlLaEpiy`6cu{&4Uui7~Vt8BA79Aw-=QNs}0cBuv-o zNbG~K#OQoBL0aVPg9u?~P!FLHk}%U&&?sN=SP=dUxjJk_UIxjT zs1f-m(FjPNc=#+J@jx8k7+nnq5)_atfvCrfG!uce9ycP>fGGbmBIQ6F{bCHI#Ls~g z_BSF+f!GHbkyfG^Y(&0HzkPD2+KY{o!G$MTmgZo8BWH1ni zfD8lT8fv7WL#JBLH6nH(ZP>j#Tpr#5M2#~dl|XD~8IfNAu?rGg3dDg)p0Gd5fpiM; zSqsD>r27US{(o{;JQrA*)=@5KPNTI@q*wgnxq#-NwOnwJzY5(?Cl?$PbAi~AfsZ>8 z!op#C+)t7VJ_e04+$bM9*UT;;XPt+*|Af=SWrNI3PepcBDsW&HX;>3TCXr7_W)^2 zGa}1@C|4Shr-Aq|B^cJISAf_ujmUl=>J3ID2&52))P`N1c|H(KB!-b8KpfMI$dy2> z1xDmHAj(W5vIK~|#EAR}h^@?sd`$k78y})I~<*E+9d{p9g@n2=Q78#5ULH>IERadyI%5h+jyrzmu!mjWqo)gexJHhXYab zjWpK*Dalh=l6-Z~T5!nyKCFt`%fLH{H#r_Ck z7F;C|BIK`OK&(P|t|FR{3_~SJGI6Jp2NwF$(5m!1Pqmz z5gzf%0n*7e;Us0|t)K~V8s@x?{8?<2;k`gC0`fQzHH7fEw=jPw?hl9ofsL1SBv{bSJhJ;s=_fh{as2Q*8O6kXnZ$jo#Jw#d?#UAOR*Cy^iTgf@ zyDuW{DH8Y9689An_k$95e?;7AmKW>{`5lG2h@`bh-04(D-Ibo-J0s$5mAJ2wxVK8& zV^Egs-1VwGoOjBc<@NO8r6GUmu?X^5^iosv@;OwB z_D1u4zR}RijnNGV6N^O@ItY-z@#1B#i%TPlD8);sNo(Np>5WF0&k%U8wJK%#gzBdM zT-?)EpDN6Hy|eDS<9=lt*PkdTr0J64bz1dcT3E;Q@NDH_<~3v5MsQ>)$dR!M+M7C} zYm|Z`?oPiJwn^Om68G&A_cV#SB_i$_689Yv_pK6lI#E!JyBZPq6p8yriTm>s_uXJE za<@jr-70bSN!-^<+z(3JZ4q(LlDO}dxbKj-XGxN`N5nl{;=Wzt?vuF3OWX@1;+`yV zUoUZQleljWOI|PQMxLUq<8?vUA6^$2c$K{E zcAI0QIe!+mI|+?#hDQ%hFYdjB`TMj^^-|Pf3=i9FBpjgANek=6d^F?V3r|BRJkAET z)kruvq0yD^BOluj6rOuR;c?WJ)|b?btS!Ztm*GI2i}5HeJiU*L$}&vWwJoe5yvJb= zg*p6=KYgzeAw5l(hQbUTD=2fMTEpQb|59iSjg>8@4zossK1&onO)*_RbeOU5O3xRw zii>Gi95KksScEwwAMCd?%1Qys=MrO~%LI+@6!9XWsh|mR8tkc~jh@;c=i`t(y)=I) z?#JK?%d8BS9Cw=V5t|RElV0Z`%V@neVp4$+hOba~SO_UR;dlIrho_KBBPyD|3f;d? zc!>BelA+EElOVY62hyp_r#J3I^G7|*NJPDdyA6nghlfa%w}4pm_e2L@fiws-2g#pS zEiE*fSPYK3bVQ3)5|Fl)Mw)Rz3jc>Avc&!Yhr<|0{=+2}3Skt5OuS@?sUiVvj@p`; zrMPcn+-Zl;66}^lWcx!%C_FmSCu$@S2p12Ji%X-oRMty%6)u^ad!ZpuZ-z81t8{(t zg@%VG7z)o{;7XG%xu@%g3J>Si#=>)I?frM-F7c9M5gHFy5l2l|`FQwNUU&0$-IyE@ zP+b-pAy2bGngTMm4Ov7-^fsH1$Mm$gKQD1lm$=hc>LT|hiMu}{?&~D(R*5_9=_+z} zNZdOk;=V@Wo+5Fl9g;=vB@*{wMBIH6_biEfhQxi1#9hH)F33n*^gd%qpHHE6+a>O~ z689{L`+AAHB_i(YCGPkvNtAP1n#6sX#9fVudz-{PP2x^F4~yyEC~>z&#C^5IJz3(e zO5CSQ+-(tY-yw0gOWboL?pr19_K3J|l(^d@?&%Wu6=CjrI}=OrzO$bjmLc!w8sw~( znT0$S;Ay_3+|(P*_ox~5a(;9M7%+`GML#!*OXC#%+(a&)-e`3Bq@6-Oyteue#yu_f zRAJWpx%hxamk&uvym(#d=lT=ulCXR%rwdaCmm2McnEvba6PAJG}Ml|4B-_Cf3Ps~(I*z3)2-10TsK1PC>rq~ zT?)6O3b`I~nz0Hxm^zKly(J>xf9&GKu?|ABcOL#GQKLLU_^^N!%NL zAnvge_a=$EOXBYMfw&)((!EmRULtXim$Za2zX)C3;AC$Nskhr@ft+PbLy+q=EK;phn z;$ALsS0mzXm$>^S?%O5qDH3;UMBH)Q7|*$St7(VCeXGP>mAKm?;$A3m@07UjmAKE4 zxZ5M*zDDAnj6zJT<5UbL3CP$K><%NAb%haePnWo_m*UyF=n0l;R$c;@%{2Z;gn%OX5z^6k?ioRN_wi zRp~UmevgQ|Q{sMDiu*x{dyB-~7ZLX?iThTG`$ma7jwUq4-5(M6)e`q4N%D!3)~Ql{ z?~I81a*2C_#N8rsKQ6^R7!mh;iTiFz@;fBSr%T+GwUN~CHi^4W;=W$uPKSw!I&X=H z`%;N}oFw@eN%DIo?rKEbQzY)|q`0q^;=WrdX{`})S0(PP68Gg2_va<q;-ynxG$5q$4lJfq`1=_ zk|0wszQIRMBI2GTabGQI-3lr08zrr4iHLiK#C@a0opyoHW2&`##~ziqw?@RBcGVVq z9^;U>mrLALiF;c_+^tgF+a&I5B<}kp?!Jh)$4lIoN!*u8+*>5>{)o7*leniyI-exz ze43QsJ0s%WC~-e7#r?1p_ccyU5$u)i^Sa`X&p9Z70ZON2PE#+h`8rS+_y_{_epV& zm$=&^;yzvCzE|Szm$+w1-0cx@Pms7Tm$8BD~yQyQK_77khnV}?&%VDM?~Be zDef+bdxOM%y2RZT5%=R#+#4nCPKkSt#JwdV?lDr_7fIY3CGI6*?)prYKQxmie__Pe zHs^=@;d8z-!o2i0QY()IXw8>YiuOix8gssOFkr2VQ_T5J=OOHEK38k)q}h4AdZW?h zGXXFTX>mU&aW9v+7fRe?rSBqr5pnlR+;b)FSrYfPG(~-3O0uuKUiTezR`(cT@ zB_i%ViF<~`Jx$`CFL75R;=Whno-c9FmAJ2$xLYIQzC+@kBXPG$+*>5>wurbNkhm90 z+^0+24@lhY5pmxwakop{b0qF-B<_U~aX%_?cS_tVCGP1`N$ZG+`*w+Ymc%_n;!dY5 zfXq0y6A|~r5_gBhy9uT(XF6sUI1@rrp56# zKS#zUN$WR!T&kzVeTKw6z$M0crF9~{OgA_(wi5j>9ntmK9})MZ688it?iMNTSyJ3P zBjP??;(kDi`#ve|Go-i&BjUbD;%<@R9xKJ&BE?;KCX%*axy1dj6!(Kt+?Pvnw?xF< zC2^0F;vOT#9UnHCv`&qPd!xiXR^m=WsiMvwmf~)Wh$Y;rxm^ zP82WxwFP~keKPrk+DQMoxThuXQuO5U8l&=GthrQ z--EEYtG$0cE$Ie2eN+hE_owmt z7zm#k(U8MHk`&EX4LNhDqEv=rT2SYxt*CaEX*1wF76U=TP z*xB0RBB!FQ1?8^31P$L^P;=GiVra`Qt}VnS0m$@_44FSw4y91wei>+NAsTXJ1F{h( zbw%Tu3{nP2%iBhu%YgVX#~Rk3dLSG1lc6+M3xPOMH<3+4ehZ`xkD4^d=e0l}9)s4s z41}L50#aPB19@KX`CT9lcoWvugFv+JK~$aBQ6O#lX;#t9pMIAp%09uLAwVoBzUaM1 zlL~~lGc{xakfVZprU9{^XUwNgAk_Z~`?CZHA3f0g`8|-9zC#TX+YH3o#~6z@$khm~ zm!!G+2*_?B%m;zkg)m1WyR`~>I1tDhK@Tqi(uwp6hcFEYAIH{s-3(+#C>8~?3TD<8 zRVjYFL?Ctf%m9t=IwLX*NJ+>Q9+de&)(H~356Egk6Iy}Lw^Ukq3W~0nS%j@8{Whb| ze;`*vEPOz$%{(^|FF%kbA?_amDHP=VcOW^S)p(JsZ-Cf^5S~3uQRq~sFwGDkmRklG z;(jR*-tQ(lMX?c$;Lmg*EuR{5$}FPMcc#)@)dPtU>VkWKv~?L>Jxqu`5~#U)l8}l- zLwNoS1Qn4X7wiPW+v+H7=4vIaw$e#uaZ{9!K%>HymZk*-rM0!yHA<^cCj1>VE};a7 z9uEDnaaVAz!~x-JA+!))0Hj=y;cy@pA*N%1qzJWVK9JRdhTjQf9lVSI7tQCN192h1 zVZ;l>vfNmbECw zB&{&A35ZHaln6d}y#P}3b(ICU-oLZ=pm!+bRm z%VoxrZ6c7}fF&YD#qIC$b!oCzxS-7DAmnzC*`q{6Vs{|m0LLN*3ViRI99!QIRYP06*W*`ZI zG>XWdP>Y(i;!rsi))}Q*51OEmmzM(Jvu2vlzX#GL#B@E73?YPDfpiMo-vLqrB&^{F zfvAE%JwS2=9Xt0jl#oJ96M+OjGL|+eK$-;Z=|E_;20&e^Hv*yFI>kVX#Y`Z4EKWn_ z0^uWF8gd``^RbcFV?YW+H4(K2tI@1fh2F#(q7lOUB9M4QJRJ9JMDwZ9=XZf52^!S} z#0ISk$Kqc=T!?{&kp7fb&sDS?Ik^7Bra(S}jP?5vAodtzt0@JDDum~1ApWzBA)ExH zB~*$Ql+`)Wd{(sGemJiJ&{%}rT>*rj_NB?N0SG@eLqi?_Lf^}fO+!`zStNvKBM`qJ zjlDpWkmT{K1b{RNx$;Z$M{uQJ$4z@ZILM5RN89 zNUv-lln2A9b1RS%L3>Mq@O3hpKMg?W3cI=&$a+}Ay73T@Wr8%;0C7BPY}>2{k|?wa zI)Lz9;x%5KK$eU00n#A&96L%24=P7JEiMCM4~3^-YH97vn!3^?L7&sfl~9}8fjG}G zrfCt7mJ5w7{2CwuosSkmHxR!N!e0VWLnS1IZ3U3kLYOxIX?fk)x_BK3pIg^_{tQSi zB1JY0IRPXfq|UjQL#jo*oG+-FwJK$HR8 zA4sFNw64_2cY4%P#|9cl&?t>tfCL0N-$^ue=Nj@(Igng|y9)?kU8DK@OCYXLT2KgA z05jAgiziu4k6ejt$5f;2_|Q9d`i z8V@8V6dv;VCLmTp^0xvxD$vXVQX+(K0gx5v8bf$L5Em*rI7BKI6qHm}78DQzL!0(- z&>R$eUJE2lQ&2Xqw!&Ge_=J4n15LW%>UAIqLU`T>vLZyI)s>F9OX$Z<2SQ^hP(0F>B3N;$<9RtowhE&8 z(#Y!2Z#X$fdt8E5NyNd7zkq$M<_N60E5mSvnfA%6tIPaM{C zV=EBq{e^Yo9U$um8l}-qt^_^&28b%;rr0#pjDl{Q2V{ld>M|gE1vy_0BpuwtX?hco zG{NUvfg}o=Sp|eHO{($#$q)skqJ3ecvb0EJJt^u_hh04l zS0#ehZ35y5g{PpPsCHH{aSZvaHR2R)Z%p!;t~cO{&yi`!=Rnqkq>4T)<8BkU9|H|P z7e;e6a145^gE%kpc^D91sK-G_8jwaI%+~|4hFq0amk=4d!V=2|&GR7|dRY!+S-g?g zFMyx|G3Z7U5Qm_vj{>3D_HYV51w;|r8!rP{D(J>*eXdzqzWVztauYpvCG=bv24#-wP^4ozN4@thDtgN!Wt{jBC1Sr*K zyLJoQ_rTRs!JjT5R33&?=L8VDpg-qaiTXl_*M&g*$;6AN#RwpYA*oWB#{sckZ1g!B zh(+-ERv?8xHI`971ClGm{VpIuK|V`?_;t>j3|9bg2qAouTnW530#QQ<%3+X-!@=~!oKMC^Lf*M0T_33==?*aKF zOKkZ0Lm=zLe*H6$Po#dTO2;)uWB-zv$xeISXta4Er}HoKR6K>^H2iIl7t&Z&Z#=0- z>|nvGpQp`R3i^BnWV7Ie@BVT2qFCvhKsE~g`7t3$vsFex`bjio6~l3t*z?Uf|J=<} z$J0u+s0Y;#-z#tUX9V&CMVt45JY4L>2SC17_@W;Jc|NUOJ^wq9$?SWwo<9ll-a;z> zP;LHo-sX!SFBWaSF60MtZG1Bh+bfBmHP#zI4j1&f17xG%%(EbWzi9KfKt5Y=LKoyq zi8Iyn9>`4vH68~!oc62Qt+p1uUhCn4H$F_8mkQ*cgRqE<4}TeCV%W)t^A|x5|9+0Neu91qw$5rO@T9Pk4bq{Ugw{*OpzYTJ_n9q)o zqUSltEd^EI1M<#dr9TUDoi1q>X821WPZjI>_aK9Us=otr_3!1f{5g=<7j6C*Nc>$_ zpYx4>9nMT`s4q|J`O((XC-Z*3pEmC*`3L04$((!N26C;aGTZ~A6*PR<2DvGX#jVyH z`LA&;v~A(bBid7(gl0pzjd4eF_ngRB&k|4$&_D5(11L0(_9X>DK&cv_TjYTOL+ z)ihSMji*UIe5DxcjkLK?JhcMywPJV9fb2E>v{z{l2>{(SUpkeAX^dSU@` z_}*CWuKK$}p;w>Ccjw)-xwBa5KLRV_;0iYu)2=V|j8KUU0e0eKGO>CffJ zZ-HDWc=ZoJAYn$aKLv@uPwg~pvC12ZReUeV;m_wi|1gM#ZaDmu+MIl2HlLpqaxOM{Dg3eLLAuRTLsJQ@ zR|=i*8QL65ZCGRL^B_k~=aTYekmeLq)$0sMhqoRp{Dg1P=DA{}hfZP#-x1?MJ2gaB zowtDb{OPZT4`l|12;jLK;Vs(4>nQjB%ODSU|{`*axO zY9YCA0NLP_01t+By#?f^Bq_kHw}L!eJaq8Q>y7zXGmx7Ko+_m2Ux2*$yLnds*Fjba`T9eUw-j^!BFJVD-TVc}oz3X=XuHo(-fR~A zyygr&|8(we{AG|^(^J~_zX}q6*VQ@UILP7TnXAoNkZVN*U4y(>(C`w-SBu?wLQiex zD}4s!9{OuI;W@P_`uRYr+#BA`4i@pw_kg@yJoUpM@l7}1_qTz3 zt!Q%r6<`40U2(j2Xakb-f3+V zD_x<@Hwt@k3gneU`D$yty_liv3P1A!+8}V5&K!cgH?2#qjpnU?)Xw+fU9{PJe~vr> zvQq5nhd}gCqm6$7rz=Kp|v zq}Z=RXYuq3f8#HKJe=00ets0><%04*0dgyMv`Sy;Cdf^NG<85;DUd11^$+Ge_PE+4 z#ItIP!A8MjPt%6O57}712=WrcHY@!NkSB|^e;VX59&2d$1&}Wl>-uw$LGjdU|At%q zrsp?-TrJwHgFI8L>m11SV$MGWa_GDAIZr`eC`Nw|$e^I=&wv~+q~M=|yj+a+aga&s zx#}UzGj_Qc{kLgzV__Zsi~1?}`O6@;q<$c8>jr$f!zXi!-3+o(#MDPX^iRX9ckV+j zfLth6(E*thaykRqd@{Ew?*@5iLFcDHZYk*VQIMzaN-+pISn^}7!^PTvgEp-<=al~) zkn05}{5Oydn!!T$Z>#lZATJc!=DRR(hl^Fb3FJ_Ltblx@*wYP=l@H|{eh%bnG1eBy zPO+{%kbhX%!N)-!N>ACZw{YdZ$#o>m`5)8fo}!3r><2Dw_S>kA;)6W3|Z zUk3S;!h-y7kV)Y&e&>B^nQQ*P2J&#RiaS7FDkydqB)+93?rgOxkj;OPOUeY~Getk| z1Nm&x&(DH`M&=th~E8gB<`Cae^fkm=zeyPr<*o!0D1WBQQp<_3dlpnoHsz8Hp)j? zJ_mB0S_q;MB&7{DOk$1$WG@oZduHTuD^(!C` z-JGxDKY%<{$mt(|-16PgepR!}vw6*%6vgg*nKsvom43%2nVbSS1R^8YSgY>?*(i`T z5WS<(v^fhhFV@us*-1}To(5?7?++dcG`vEaR?7cq?T>?8DCYBFkarb&;}=05N4ZqHn{jMxOzk7b(p3WDOR`pFosz2f-zN+2b3V+RZ#=CYo7;ihyI}qck z|Jm+#tBYIRYBqh;fzF_APfJK`^yL%!3mpp?ju*4Kf&96$nPW>0XUdsvU7pu7AJDFk z3h--AoK40fx}LN<7dcvCQ`Z!y_4bO*qk-n_!9~MkSM#bf9`*WRot(_5M)j^IUaTL| z&E2ZAvUC`j<@evy3O@s!rE$IHQQ&4kIf;!$bGTCT-BHOH8Z~qcUM-5%hlWc zvOlXjLuk)4-SO@yfn(p<5})i`p7lHJfi?G;_ybOtN!=#+qgZ0oXm>jGjNVs{hLQWD z&a@sfFWyD0>#n!D)Q9nwdbAm9C3+FcgAJ#eE@3a-V$$A$oebpVN@(1*DjDqBnZkq8 zvMq$}qP{6#?>?VIKCf?*yJ)ObMj{Bb2yI7IvoyF7(aT4Xu#Q>{$b5-?w z>~-DM`Wz4RUt3!S*e-7ox4&tU5ZbU{Z)RWp35;bj#i^eW5mgSQi%VOBW`4$tF!B_3 z_Kl@oZ`+AByU6>I;~@m&{nYNXe+dC_?&bcdo{HVV^~HL7R*l*md9CV4>JH8OJiT?f z8ZFov^~f0WzUc&8_LeB)cZTiDTawdRJ@w}tw&O+i=+3;oRbApgeq(2>VXRLbb!djL zoz}QMkuWMN6E*w^6?lz8e#sFT<2sCWPrJ)J@o~|8yw{sOpc(5ljWy`?_o}%HykZj` zur9mP_O4$x>zvgCC}GLojCo)k4-Fj=Wys@7j%25`JU&@9N#vFoy zPJ=Oe8)1Q#sRLmxOdyG`NPJzarYq})gc~%oKX>Xq4P#ww4fFzL)7fIw-?K|Zj~|89 z-gIFwL~tvgwC|er7UotVI0M--lRF=+vs0s`wm>dU#;lXO%@U7SeU#*Ufw(o`(PP!5 zU!%A8-C12P@5rV(t+I|9aJi%A&T>c1;1%1@T+u^u&2wBg{ghYUy1DDE%~o`(*;ePc z5w+d53r@o!Vtepyv)i+vFEjxZ*s#|A^SAA5yCWGHz&qMyyHY!>8NL$Ekq(4U@qr*P z3IiSs>1H^v6Z+L(6Qn!4oWp1Haa9i|^UH4KIBCGBwA3xQeqg(q&}ea4mKp^cZ(N{j zsnW<}x;8&ce;7;Pws_wzHtEv!@_a9K#{*I-%uLUv!2@PbC(s|B?n#RB-rZDbY*9_7 zw}T2#jch_qo778O5zhsMSW4FCcrNb5mfx(w0D)?z-_o-X00 zb>)HJHN=IIi zU!tS0U@ZM&(%u$@{eowv*y?n#D{1$uK}RDuExTBGi2`1P)T*gVZ^^z8DWOg{MH3!w zpwvNtYVCm!HKjOk*88?1a! zc(AYhjy+<*I;qPw{ut zMUbCkE1F^ODqPRC@R^B#nkh+?jC{@z9-T()9PAbr zIFK-8QU~-VOdfIsJ3IXWLA=doFqWRk zkqL89;ua-Pj|0CM0oto13lKN^cwM|78Od8qfMhP^JBGG=0U&f01o0x&+9s>20NdRU zKKdbzGiej&ijD#0yik`=3d61>@w7Ha+VA21DZXE4_YcC4@5i_IchN;%8~~ef-q)`h zhdaL1Dd_|w)hZ@=~0>bKSU|6>}~^xK?- zwf)vpP_PUiT9PI*iIkah$bJMdaoUp`B2^n3VtOaCoqlh^i)6-oskI@2nPxEc?Ei7Q z=qWxosXHkDcq_27u_h8pPS6JrxJO<#OuXZ|Tq!6-O1@b(TVF5po#NHjOy38MZ6YeR zNsB6G5RB*&Yb2JfwwU0n-aJ^ojMoo(&~Jo?d=Y_06EZ4;sAIzX!YxfbE+^b+RK*U~ zZrk^4sm;8&iJ)zHWUf=m+1$y(qnzVu6|V z_?i#eB0d!^yI2_AYcDXu)7oot1RG0;s&sqUtuCfmxnad$)uisP9X}?oT^UfGrhL;T z7sRdb2@XYq(GO(vhmRc%3Fq(CH-98K>KiY~((;6o8y3%YE z3j|eDBCkXw9`6q)p#E{Fcp1JVsJa8CHT!}pA$#@cqF#`^meUU#SWcQEyfi8$Wx|N< zN+t2F-RQAU?h5`hIJJo_&*yllr*3+p-LQH#uF)qfo9de+yFIOo!F>n%9N2<<>OAtzx{t4+-+2U4KybE?Y z7SDZ+R_c#yR1QR6hSr0DI~5Tb%Y^)x;sTo62aE>&EktiPtlA(I(&cZ=2I^7f<1oTd zWu(r^`cd?7wR$_LZ}!v*WuBestg1AwA}2!Ol!ig>Vfw~*&Lw8VWD6~iq8IE$D)JuE zRIGMFc0}cMqmfqR$2K}+A{?Z#ohKvEo_yNy8PB{Uyc^jQDwsmh}*vRc$igtXmpk0AjzSkpqG$UNtfvK`t@K* zGF^q7**meZZfe9=1w#?TI&WCwA~JQa-=m^1HsvBt7Qy6qxwe5vI9@Sx()cd=43sJ( zsix9C0Ixh(mup_tluK(;0Ga3GS%n}V$OXxT*wbC(U?)7UOaqInXU5;+bZZDJShi_C z<}{B;M*_p;Aa1K{+_&eN>Qv!rAR#6 zf%Vi<9_0E;H70Sl)feBfBU{7SB|Z{g>7bJx0`O+XY1Zo<<)?+oFGW!Q4x&v8!+rc}{k8WiYE5t~}U6HsDBOWd}D0;U6J zJN=$vU4+coLN0L?3j3MzZbHKvFd^p>4Z+qMP$X!~DuLx!Pr@$WYL! zGaoolG3lUa<3@WZC-F9tv4b_v8`p~Ei7()LKU0V9S*t`kDO4p{5w}1#-_>*VHojmz zJ;mH-fn7x&6o~v>W`x^)aW==^$I@Q=4-IEzN0}fQ$y}z!<=kRw285IIl-a z8oGJnaM^e%RQ7aiW6}DqS>URpp1yN=lM|5SBLo~i*ab4i zvjL{+UJe41^mCOo!}F5?B9$0iN2xt?e-C~@OBTs3uuE<2;~Uxj8Jod{Vw}jzsM={{ z=bc)l;HHbpVWgxSf2_1T zF>Sf!Om&(2S<$A5@y$T9ja^PHs&W(P4aWmiBw=D^ zr(y<1-W|8i5JtW1F$kREY=dj&34{;_8w*+GYoEvEivM(d=~R1yrckuN3gL<(8RS7a z{DHw$JdjMT1xW0yo^nMm;ntP(3^p4b$zzs4F~#$$!3F!gYAQTtuZ*_w*dIdeL56r6 z+k$#-Rj2Eo`$?Oefno0KXT?u51|yupA^*y35QBYTh+HMh;F~E&tD*09y6n1==wY^- zh#s-?-FU+|j!q*Aka)RNW64&j;^(aMfE^+BS-FS#>hao{`%Y&un|;->v8#yLq%fRtY^9Oy_*cOum7i;rgv2;GM@cDk+*!a39El-9)Cf(+2j)07O8YPg+QVS^#)z^}7 ztXc)Xs;C>xx`~fF5l%|0C~u*`fl0n{-BWchC$?Ef1Qcp*)7y?#21Jv%=_bndb$3Vd0|_qNrKCLRo3_ zAe~ZAu)j`9V8e)!2+y>M-V3Yere49&8Gu>t0D1%eI-6D>JhgQ{3*&b&z7{ddQ8|kh zFgGRH#~5g6HZe3bbtu4eap#Uq8#6{$)-CC6mcY4_k+l{(?3)zaCf|@tQt5mrCny9H zmKkN8+s%<7th&y* z3*}ugt&oj#v*=?LLQTONw}wilAU9m*+cJe{zZg|+&jGdxPM3HhJndPhPcjfaXooy7 z$%<5zsPr>LUfadza5oTvk|D-rRIDN^>~Ya}qPQ3G1c~bpkKKOUPrNo;nXIwK^TQQQ z;?yI^hRuWRkKwqK3%fC^%$0W=x#TqOwuzmR2jA$q87e~JP6zP6=VBu7+@A5yx6TRj zbhM)3R6bsV%Q#(;dC(WW+gr-R!C9f<{!|CL;Me|GL8xP4d z$<}K<=Ptx#q9=vinQBsDLH>F@&;5mLx$H2z95jy{Iw>ArQP8B_&Dd>ECoY9MyX=g1 z#2i{}ztYl#rZaH>v-dI2q3{Ga5paE%Tl$S9lW%FUj_1WJUbng}T%wtzQ=6u6?Imb9H;)Vu;*ksifu2geTp#k71P_a{3YqkfJ0$SCpWYJ2wg0r_`;(%nM zjlWz3bTdzhOq|(h%_iVkQiqKzDj7AlJ3zhePmG3old9?|Yl2y{px+IPml`71>J_T{ zt+3bdG73qbQwe)wr4tgZk<;06r8)0|5%a#lK$IY}V}&)N2)ad38Lmo2O|1Lsk-PZ+xEo977j5q1Z8uu;d9?ij{ZXQW-COemfK7_H45yJ7nL(IyGl8I_T+hY z=!2&bYu(CdxUZSL3m_|Gv4Ecg#}ei5yEt(=RFjpY)&_ajQZFVQ@Y=moL}lY9-IC_}8^&ZsCS_7qaI0pz7%gvi;C0&tOZCOM+XU^*gC10R$|Bj!#Dt&9 z;qHw0-CS`YfZ5xYF{P*ADa1P#j+q{ahg_0jw@g?P$!y@6*4H z>#%p|Uh`DPzUqzp*D-~Pipakn z;Bkj>yw_}f9QGNf-xlr_e>v2d{}g5uI0#CYIyTWI6-1;Q=UBLCfyK$mu38C7Ymhlp zB(cBv6h?A)l9Hmi9r-a44ZxuVB?jD;;(aN+(vIHX%eg((?kpLamF{8?yp}n~`$MM~ z`s~GAJ*lQx>$A*76k505dst#oafgbQDUkHu0q+n(U$0>66?&&AlQ&jh%0Lj;#r?PR z5?tg73FWoJ%R~w#>?BL1j``mqz;OHLO3~fh=B!BQ*?-cZnTI~>-&~pYN6(P^3KcND z1MWU4iXc>8<$kh(kv*H2Doj5ec+A32mPiAt3|O<$^Y(&%<6RQouZ8q%V=z$;g~2p- z5=9mEa8sv9ny@EDNd79$QovgrS#xS+D>beRCrtuh#`UFc^Ql-w*c{QbUGOi@2Wl>b z?jDy!1r!d?r}IJ(?o~|dQigO!xv#Bvir@`>7{a69F6XNBF0}W7CxZMnN3%@bC>g%8 zwr8@Q$Ms~rqUSc>A$KOh3~_N%VtH_H^-h1$E4FL4E1ZkX>EuT=!>gR(ozfzzW-a@o z$NlUqMdIG56kn((8qt?BK`}>zCoTlBh+;C?naWF4a9O&}D5J%FaM{ zqJ+eXiTL=E1Sj~ap&IF?a=*;FYA!N&&VQ`)Tb(hovqQ^D)}Jiukiq`PV{8@=F2yCm z5%Lsptb3Ry3-O9O)4rA13A8G?sIo+gcc3B`Z%MZ)=ku^_in$6dkg=}YNTk#?Lf!7k4_TINRQRSUwy8Olj{@;;Q(^9WWNF78Y`!CCkie!M)L)eHV4v69y8Jz1qE z@j`Ur^g4p3QaI>nu5g|~>o)%&j-DUn@ck()m|I^nTlf~%bI39^PJCd9@}OcYm|v`? zyq}VvCrbUtLpPokGpEd%-tDe?_m`R@uF?J-&Fmk7Zb7Hz(whW-)rl$oqygo=w)dPk z(P4DX@f1eq7;ll%^U6`&>t4^6s*r_rNeCg?4SV?;jWDx!v*U!;iwSu_K{b|r6^c-F zX$*44&f(qxY)*Mhwz>)>CNeQ3`C@$|ussQW%fOmmDN8eMW&I0r;*0~0908>dFr%ibTvMRJN$cqq$#h&(Z;siyJssnV$BgpS zK$ZrRRM~2l6Tb1xNjh*6)iikp?1n!SK2a>i7gIQtGc>CpJK{jT@)7-`Ci;naCJBz( ziAKi;iOFDb*+93$44mc8JU!0h`Xc>)^VS>B! zs6Z;%4wrgDI(jP7Eo;&JuuPCndcs6Xw;Xun8aqVlAZlN)iSfIeA!n5wo+yWrefLb0 zXi1*jvLnMyYkD=oc9D)*5Cl7&`>Zn6tNkF+5l->N{fJ%1oUR7bc_%!*D0Ir8S*U1o zd-{N*E3TfF4%j$nNgxTAQl;FA^1<3H#S%!4KH%bYvh;QX0!z)^NE;1BBQxI7(s?@v b!>^699C-mweHLv86C*eICsQP)v)2Cw@@GJb diff --git a/src/2mg.icns b/src/2mg.icns new file mode 100644 index 0000000000000000000000000000000000000000..1e612e0d21cddc3d735e7928d8f6fc5d06c6be9e GIT binary patch literal 74738 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�uEWE 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 literal 0 HcmV?d00001 diff --git a/src/525.icns b/src/525.icns new file mode 100644 index 0000000000000000000000000000000000000000..94e5a90d7a8aa4a7f50feaeb45b8d50a5988b561 GIT binary patch literal 76671 zcmeFacbpsL*)A+fD8X%uw`-+c)lnH~M$(L?_fgyGUGKWv*v7qqaRCgg^}68R8>Xc3 zCV_;KLI?>-2pyY10>SBp6q5J62_`vdV4?4l4a9|zH{UtGbIu=G_<1!mlAf98dG7nZ z?&~hQaL%%oj*G%W3+Jr#I2?}bQ2B#?hTi^X*B7o#&<@8XV}|rxXLna`Z{C!2Q8P=9q@VES{h=LP3`a}7N?hdY{#TKZ*Ff%4;b3V4h;x> z>SwOKbAEf9UeMHmk-KPm)k3-Fi+p?9k~?p_Y1IuQj}F~3^VYaOJyDmZ4e)EqX;#s4Y}9N4)v8?mRW3qHxt{=)4Kuig6E z)qc{Rt}VJx-m`he{7>#V`0$L7Jt)sPG_=w>v}5uu^E+CJhWuzkbr7J(&z(29%DRJbl~lK0T8N zhouRVjh^X~r%l|oZ&FuA$w$m7#>DHaMQe7?%gmWERm2SFean=d>*ilSFmrP*f*COS zR%ml(^z<*jdiJ$;*dA1R=1rZbEt;2`)S*l!bKSCBlnAlV#itT+;(uWVyx0Q`l|7I# z4PDbElJK{;o}K|C9ApgI?eaD?yHD={Ux?S(q|@8n<~uzDY}Btw;ZQu>==Y{Am5-6} zXskIz5N+Yg3}_s0$d1}DLsGF2_JGAx31)C?V=Nqt`7r}F=hH&rHY4Ttd81K#y2%q6 zzCGAZhH4@S%z(xEjBrGjJpoU1FlrC#>2Qn|6C4`~lkN~^K-CmY>g*BIDXjUsdm#Uh z_Q1;Y(!~zPMOV;!Ht#q(qGP;|K9NF-?!BH&V12#&itAZ@7;F#!t=MD{`HGb&HU5p7sn5u{`KBJ z$B(}E^7M=6_MdzFwcE};e(=z_$4AI(m*Qvs(xo#NELya1Q7C70LAzXZ#ZbBY_PKAp z;OL)Szu*J^-4jFQ*DKoVpMC#7yZ+xD?t=GK#$ULkq8&$F{-K^+??7Mw@WjBt#EHFK zon3`YHk-@mvbl_DndT%VmP#|pWP*;z6HF@XbvuhK7dJQ5701`rR8@@=O;M9%SrSA+ zmK0Np`hCT=s#a%HQ)5GY-T3OHDjBA!=|#0wmo-yOhKZop+wN+1Ha9mm)>YGn4%KU^ zx>?jlsfxyu1QGE2+T5+h=4DNdb%{QxX3NZFt*ouJo)MMkF5xV!-QYx(N$GZS8Tgp6U2Eh z4VRl9pKteXx+xoq#mP`WnPI4~4IC%Pvfee~XpF_USTvrD#>fbv&$M(cYpB_R$*Gfz zjz#5PIz*94$t*=B<1i%CO;fr4n=d^4(6isXsozmP_2#K^_YIFfxjxeMt-A`LQ2uJn zz4V3OblHRVl=m(ymmTH*F@-$#Le&25opdx7wx$@CA>IG;tRjm~{pXs$eI=nx(3q#c zX}q{ATqK90xoH~a{(+z6EKS<}_Ok!{%_oNYSnkR1AKwt7sdzk+ork?6J@~3+8vMq$ zCoO*Jmw)~13i`2A<&V)69f?H>a}Cqr?*Dnl(9@s!wZRD1z^^|~KKay+@`H4gjFFjH zhG}v4{S?bK{SUX=w-++XD|d#Ucp|vI{3R+x8sXeDMc3>X-dMNxwjUkgdVhDv@=v`` z=={MCJAyZqpRmHA{0v!>`}gfSdU*Tvv}BAta{s|BxBAwt*C!(L_RJ23Iwx>N)!;dn zWdvOn#onAPi-`zHCTYSGj0U?qIP7Un(Xm3R%$tKfodU>P2LplLjf9Qjx zUjz8iw2JiOrXl_9Z4m9|ze~Smo0d_LeqNMg!C*M#^LSl6T`1*tj9% z>)d$D&@Ca?d(to6bj_q`j)_IJMZY;G3=IYQuQlz?z~9ARUen*35g`6rUn)Lpb8O;F zf%OK?68~G)Z`?UuR8)~mQ#ULLPu+6kt|i3Z#b55Xv>P|63dBD(d4vy}R(Rq8)AyeE zOT5fY->M2cm+UEKlXN^5qqlbi-W7jgdT*Lpx{~WD%wY1vR>I8AAPIdVgB@^2{Dr;^ zv*)e0rQ)sg5ANQyVf*AYiw0M9ht3lJ{+SaMN$lUf=&pP2xfMWdTE9q=@5#Tei4yjY zJ^}Kdr1%6)B_SQ}$iJoQmaU5h3qPI&MF7 z(||yF$+ugE?RQnuw&0oJ8|Q>ggA5!K7U63wH2E(MRn+g zt+V!QotU$v^bMmAuE-$-P8hj-bmkQ?MPYvFNHFwo`Tx81 z|3LZIO>Dx`@*j_e1Af1!&E;%4Oa5WvRT=WHN>n%$4hG?-wVoyaW?Nn3c%KRR^Vil? z`=V`CHC5Ga_j~fMG)Gdgo071Ta#Ji`H$K|h(BA55_q=ERmDVIHX^Nr>v2@y7O}Sfr zo?!4S`LBnI5Qh#I0k#{PlWkSw$2A1J@0x#2ii%Qm9YjnNg+MJCBSK{Rn0Del`In2z zq-c$xNNJ9&qd7WBQ{k%i$h-2dL}*oMcS{V-$La!<5cejjKn=FfJL0d<^&!7YP#c0m=+C`Hz{666{2&w9oy zs^lHREpKRbEOp1Z#zvm1bH!t4#NW*L8f?w5ob`H5VNE}q7Mq(B^`2z>UGdNOhU#rw z%f!aewM}H45oKpxgP-}k{M&&B-7?Jh7%tILTQx4KILD50r;_ifSRu7jA#?b z){mzX{xJ=q=xO=a1ZbLIm{VjKIx`{2q~Av*lYX}^QjveyUl=d!JzbH^slDB>5llJ- z9UqNG{=4@7;{SU9V99B>@X{-4ZXRB_X5H}S9s6$k#J!)nYxm)uH;-)HbMW?$e)7nU z-CH)Z9Tzwe=bU(|>zu<24!+ZO!KrgjeD|MRKQZl`w_kAZ$_*EsI_Jdq*PU~C{=tvu ztvvtKImchV9N_i?eoj3!=L4?d(hp{T@b&M^J?DDqk8hpp{GFJ2_Vu67|J9p+JNrcW zr3GglzMdMTCK40=aMr1B-+0!+QLt#(H`{-0@hPda9zyHqZCx_0ye&Oq94_tWe z>@!d7JNxLu*UxRg@Z8yF9^ZWS(S@(S{!gwyyz#=%oPFlAd(S?)@b$erFFbelnLDRRsHf7qR;*^Uf4;Ba7CW2+^o6t33V&BAp3B40~dV9OO zdwY7i*31qBV<`qa(=gQ)i$>wS&=G%IySug7+0xY9)YMQ{S34g6RgbG4H?BJ07fbV8 znq^W9lT0P(WJ=&gF&Xx^yIsy!fJ0|fV|`OyLw!SiO?9zmNS>4gy$yt>Dj=%F3R48T zt))Vs{N3$sZLZeVmd2)*hK9zvhVkQTs?vEzF)FADe!D1Dth=b_87&)hf58gSNtFxOkKx zg7`n+bGNm%I-MA#skynHnF~;D>N&$4nAlV3n%LiuPnec0a=nWdcK}2CStSvV#zk+N z8#mQb&(7E22&$H;9e?9DzxwSTzh`Q=Az8ckRJr`t=eR)owm-f0>Z`x~pB*ij-WF$r zwg5L#G=~)B#2;S#&PzW#W&uFU^0M-0=WThTd{?l2fBDCa+}&y}ga==V zF$h2WsGzA<4wy;T*zK<*N&l_opHR;IuaI63K?gl;ZSHngVfz9duny#g^rIa@-cE}E z=&Hira5J5bPyFkz(%!>Q`{=lA<01fAiNrf2hOj@p!#%PkiPq4d1WmlKQK^eCdf&`5UHyB^M;HIpkN$%fg|1 z%isL$f0ch@wfp?uHlIhEtf(e9cU9d#i%;MD=GzO>vW~4(#dFbh3I8=@`Jtr;S0343tc+G zI-;g>BDQDpi{)!s_?0Y6_W$llon?|yDiNc+OUs{Vj|RMfAYu@zEJ&hgf3}~I1@61Q z&9Y_}$5OeUJsNd0EWLYGBu2LFDbEW;iDK~5cCJ&^igHvGUwlYrQya_cIq|c9JR~mr zW%)lgZ`ty|nw`JOL;^kk^@R`_3IKzkS>g?kzE%3wcV76#-~RN(^4`sk*WP^V)SGXWzZYNe&|k~XZDB)QzkTa-*M}mJ zaA6+g)3&6(lYgD38ku=tE&plL6vwIZn-0g3^064H{^sqg!*TO_e_BTP!BvDZvrV&T zjI;V*|I1uS(PZht@^7!+UOrWHv?&jMJi+E(dutYHzH)LVK}M)(B-Aleu@Sa3`dwt^}o#4b71D=&y*kGz65CS zhaW$>ASo1nUHV;lRe(t(C^AMzBi&1&JfJ=%pZx1w!L&_{`+WI+*4**UpZu;|{`~-( z`*rD!^6wW$5=kl=BIA(>iwwicYBKKU8pX6#Lwm8jDaA3I)^*))$~%+xYkynwt@6;x z>q8WrE;<@5%!leTH5t!~-Jq+&)qneazu2eea#rl)<-L^k+Nmk#Gv&WsAH+@|W6{oQ zRLja(>IBTEXlT6hSb2B4aAJOUXI}qY`P!8E+NtSL@f+nghkTJ(G(vRFku|7SWy+ub zI)~x2GoLKqEpz=tfBwjXtZ~z+$HavGT4`z|n)qV*)QCSEjf8vVK#L&^`bhcIkDh+^ zM}Pd$Fsr5~zh3_S{g40gp**|fp1+m9dP5??e!g7(lo*Z#d#;h8om6w=hU+(O-+c32 zqay0s!CJ*5$rOc%rH2fM{e%5+C`ibZrGRjjR9UUalsGWZ(+Q_kNEef1Q;9^9j>SUZ zXq4~|^iV}L0+k0X31$V>1T4KEP8{g%>Jrj?T1=;t5E>YX3gtq02fC=Dv<_XS*kK40LBLK?ldTP)aAM6f5Y9?(gP{(xnVzh+I*; zG@t37cl_Uw=N!n>`M(eHAWDSr;8pKJp2`9hiHm_@ifywiH2-;!$0`)^nQT6D2JuL| z-qFEFLcstKWh59NfiKQMJeIz0`>mU|>{x#W@kmSd>_51BX@Uq$-mz(9Wb^iPvGs~` z5RW>%{g$DjjqA(`;?XATUs{;D?eH~`z>IzCZd`lwhNSyE#3Qa>1Tn+iR}hadtH{#P zsR!4`Jky3Eeor70@ZyfnMm+M!)c}()VHL!~4^B#@X>-@cWN7A^AQ@@*Ux;}4;?2d) z8x~t~1@Q=oATd<;!PSY#%uTB{Z&;p&u$+TjJcM0dcW{bu2J!G6 zyVkHNgpf%(9-Mq+aqv9E18!Xrxa$t~^P(iMEM;t6BXdkLmVh`0JC4lrpM!WLZCQpx z3QzG?mD4SbO-duzMFYIR%$NY$F);mLjyMPLNYc&M$pSxZ?^ID*w*4A)&X&DP;rXr{ zn7K)!BI=gq=OLaY{L}*@%hujHOVZ?$0UAmNVh=Fpr{5 zUbJ|Y!ApwJecgkOkKFyh1NVP^YG;-&%%4BYMqbDTm-7=g2D&psc^A>$2{7E$vwS&Q>IMr&&XB<^W60DyKevZ$I84h z0a-g;SS3W{)xTpNY3l0Tdo~ZW#$C#ynbP+s+BHp-ak|gL6cyIAua- zK6CAXeon&t(CqaGcMlNJvoMd=v2$0CC|R9199XOf*`b{)`#ZC<_N)T6SRX!W4AvJD5kC zHf7S)bEZ%3(c}u|$u3>9dg%<}%6h-P&%ZIx|6?>y_J14Z88*g3NIV@8i{jD#YsW2>u+ z<3_pL&LMeP6s@tQskyPu$&@@$9It_W$ zP$M9TcXUl8)Hps2X2FL5?zxahZ3yc!Vv(mIj~olborsOCj#JI`k)Yonx`5*m>YE#C z8v|0s2LWdzvJ4X%-ISu8wGB13jcuXx5f4*S)#e;K$^{zl4B|;Ann!yRiIy>Sja8$o z{ovb9b3Dd7B#$QelBOCNJBC5p6d(^sA!3XZj=C=pBSW>LTL32mXLCF}ZbVjFMv=-H z#3NJVnv)D2N2X6a<{sS;IS=vR&5EG3jfw*U0P&<^H4U7=z_|e8iF!vjhtEMgvfxQ0 zzfNqdO$#cY1}9Y0NXAu__Yf&0Qn*I@;L)AM@kmlr8@#~C*r+DAR}qiE)H zilrk}Er{-(&GC$rsnPWw=lCdm#-`DMms@LxYX--B*vnK`Ia{jRKscOB@+eB&=ZmDE zrjc$m$q`ou1_lQc?QuCCaC-oD&IddeQq&YsoU$Z!?gZdjL`RX-hSXg^!vDV{4}`1xSvpodw%J#)hwlKMj9NV| zZRiT;8dasvEqkizV!6JpCCMhM$5K2)jUN|CARhlN;7MiWnksNqhNXG0s_U6Ct_}C} zg3!kCT+P@Rg6Gwd!t*kX zqpSSXIe^FDFaUByG{re8qRI6Iq{(%8M$vMzW^9zB8b^=wk!J%QQ>Yrpfed3>M)~0U zudWgYCv+-fU7*dd0301_9zC`_O1=kpG^1_o*hW`tV|6{r>jGOdsx|7VaY{1fts2u3 zpxH$8m@yEpcL9$k#!_r59*(gH8-UMEaMmgl~-IcxbFISa~CXGem#;V zHg4T@_>PZ#{Ns0Q*t~7mEz4G}T{paG>(0H0ZoBKY;gQY5>((!8jhq{amL)j&Yy5@KX7)_uv1=Eql$0_j!By zYyYCWKY6A~>HWUyeb0U4O!3nDUVFcjkN%VNo%28Q#6L+VI{*ET7tcTQ!N*^@>4UGI zfA!&i@%>-=7vKND`|OAF@8Rs@PkeAX-`Q_H{rc{IasEH{FV6p=e{ueI{EPEbJSTnb zg2%hy#4_PR`~Jsw-}S4P-hFlE_uHkvsFxUBo#*^?=|ll1I`X-kcbs9L{((z@dK=W9 z(jQuQeI?E3{$mxT^I?bM#PM%_{Tp9<^o4I1U!=bCt#3W|{4>u!|Ll{Gf8(*QKl+s~ zKl0GSpa0zb_uX^Pf871iyY9UG@PYjY_w3oVW9RlAd+&MV3lBW-+2TF?f82e~1J55n z{={RCf8%Rkee^3|dg${H+<)J__uPB;$3FVeJMOsc@R5W2_wU`Y=e93A@})0+{{H*! zzyAwgefXg-J@kc#9zIcYcwU}?B%Fp8XEc#S?F&5O2*7(F5JVw~H{fgYdR+dNqHCSM z-HGHNm%G*FbhfoMH8eKWBdw^Z-i6$vme%oJkJH)WZfb;Oh}0f%9!_UnRc&2W zT}?x6O>NcqD*RJZH)`zY>hU$>k!xO4SLa*wjN_==?F~dCp(sP8;>hfXB~lcHXeCJ{ zXz=M2PtoCFay1o2sGP#3Fyg92j1GC*2^8G=!d|D>je@x*Z)-zCQ%jw*vBl|bYIfGu z;|85g4dbhDtF?`I#=6?Nx^Y$2RrNJBRb%nHYJ6SQTF136Upo;^P?QM%K;)8$7Gqr0 zATXGXL~597tz?`dPR~-I7|o0DcoPVs`aN!UyVvV-H5c7=jYv%Lc){=>me$w=j}8OZ zHPsdC$BoCY#)jIu2252|H8SgmtA^@o#v#Xk%$Vw`WsZ3+f~07cW<)NLV31s%pgE2O zQ48uL!Bk3>5>zD)OOgqeM|?ZQmpV#AeI)kn5_Le4Rdo!}OT&?ZirY5Jm z!PQjTR99QujHRiq8DBTPzPe$2ZBu>qcs%r2M{Ti+9ao1%sGj9m;El3ylu`^2dKo1) zEYjC${F_4TBS}##$AFMXFbOiAKq#6{6q!ky#7ha92q6XE>n7Z8ClZueJeYD6Ou zHi;l4(o`!(>d{n3hd5BAbYSerRj;I9;wV3L=qE2As^(_uW`A?V-lKM>X4mQhZA+#X(G!D95^F{$`LMSMY}5_NE%|^GApLy$UF-8JuaVzaC_aYeiu^Pn(+MY zN?6s41UF~P_@-8;%iRD`Xl!aK)?8LsUssumV$GT$JoH3N>tVVbjxS{SJTnrc@9 zowioU!jU!YN_@UkwG`wGXqqi%Q3%D@rl<@Q?JHGL<0*oO5y7Ijqs8lVdfNzBs|#6d zUd%>Iv(xKpYN~VA*EBS{n_V^a;~VN+$m*+WXv9p^RMpm3HH;fw)zsy<&PywHw!707 zb?J3qyz%H8lpHBWU;adD8Dy|f(Rd$pslUF&0X{k zHKPW_)l^xChL#qmtG1!RjV!<>r>h=Yu(qlm)8K5bsjd{^c02kAN;Z*=CR)5zuq9ow zGQ3e>RZ~PJM_x=;DnLbB6IoNU5@{pNWi&0<2QD-XX^A2UBNQaVem4;!P~Ypq47jNw zud~JLYR3&U)HMd2*nUW-Y;?IAnp}{Jx;l4jQ{7k;_@W%8wtpxW;gAYqO343G?e2UI zwK!r2gbX`@#C}1##hz#I{Fz7<&_3H6qs4v z=s;#)S}P!3C|_WaXPHN;k;oyR(8?hI&x&cyM!kMs;xG*&LnRr)i;yl64UkEaaCtqU zaLC`(>-KnD7_~A5^`OJu?S!kjq1jn68Z}L=n1(ut0u)kBRb8iJAeKfUwAtCIS;%JU z1-m56f@SAS11SQEov}euYr}T4CfnHdqH5;lyu_mLPGf24$4~%yrA5LWi~GFZFwy3U z23lNgB!MMxHncWC1e=>1TJYe-mYZRr8o}wqLSYv)HdT$QwH!0Bt1U^&_uGnX%E)69 zk^YoLf*UF;ZQB65r)sj9k+T9MB!}czS<9fVTEe0TJjKVuG!2VDBbCzI=JFA3?X8%7 zZ^-HLy0Iakq8ghUoKS}?u42=NTk5MSnhA?AzF4b4ATo|=ELb{I%XVf(h&q@)(1Uqf zvK6I(Aq+cf8CY^t%&DRQ-aDtsiXp0LF%QKh7wJnws3}5#V<;JI4|#nA2}wltlgI6H zx41*zmNqPZ8*0iC#;A9%o$Rp*9a1kK*y?V!4_;==3pRTE};pcu>g2OFG8V&H;M{kuM3G+ZAdtFBR{#d zwY|mN*x2O6<2M1%@Gz6u7A>$2&Thv{F$-l|=$fuNaw2+8XA`yp43`e~&Z#?X$J*1ED#$rKtTL6Xu8MAIr zo6}n{&UM}v7jC7Ys?pWdiha<~P;e}U3f4reU?B@j%XjBtU|3bks+E*w$;_c;O4`mN zxdT+ECYr2mX+u^H`%|)X(N<(31+c(^w}&}s$FuwV1mPm0bkG|?g0jow1x)g}ob6B% z&CTAH25&213-k~yM60u*dVJ=o=}Aq`=S91aw-qUG*rM8D7@1107g`5&5I>G*7`Q#^^@U)K-Q%4;XQR{C zX2q(T zkKBIeqsN{XH0VXOk{qRUS}fA=P_&pBIQ;U4QrFLpcKXAtm+*xn9#7z*$3L-k`%SZE z&zv?mdDDiiU-;(ZF1No48v$0R$<+q=Zv!4`Xzh6+t(vA>Fl8+d@mB;*GwcF3{jSn@ zv&%+aC}sxqKZk5YSxXC>Pi`rFcx#ZRiJ%Kr?7>|nGDNvr+v+jDKtTkMxx1~Yxz0K9 z+b|jeK9ArUL|TW&>VSHYja{Xh0xYO(BYh7*Ps^wUKApU8d+Ex1qfswGN5WJX-|BRG zuuoc?&URmOYn!vdOd&&!}WOA^Dwwf_uEG)YK%gJ%L-D*RUur-iV%?fH#6T4LU z+L6-5uRr{vY0V5)LiNv=9mAgnH=JvMM zW2W1h$o9r&SIfi~6{B)XqG+W>#j=g8N(-GCO)i$&o;z~g@--_~uexsg!Q1XRc1+3? z3|px*1+X+$0W9K=6iZjk7ocY-njXd@Z4bwb#6^L&Vo7>@`;2+ZXHS_uW$pIucRlqu z>}^vBrLO>iu9gIKP!B{yZlaaeK-I=ri$tjk|qglW%v9rLYA=@TU z9}{lQ=Wqi;_Jh>$(RX`1X&}mGm8abKb(ERaA(SgdhnR{h)#UtYkGC2vfE>5jTmT zq=;P541$iDmVT~O8cL$^0qO?mROd+PGBO+?{1H5Q`}Sxw40D6c4r}KloNWZmpU2(m z^)$MCaE_df4;3BtFLSCb+pL|(xC)C-8j_;Zz`Dg!>=sRfs#6toZP3zY3Tz+}OGO3x z9ut9lYwbkoBw%=o=gBxHB%fYix(wOd6bw8@UmXF&@wK_2So|)yLSEX9<5ss1J2mKa z2VAxHV|3JEhyV{2z*_0|lLnZ`RYV=5UyIHwsww24%M<_%MPU_W2g!zP3cwh^U8T~a zNQ+Wfo{uNk*j9`lrP&}wP{qOdx5+Nh&EmUdVdas{{(Q! z?#{}3XC5h-uy0UYqLtArgWHlKBA*%4%|gp*z*LodXlODdXKOMeu3XlOMim^x2vjUB z?Zx0Bnr71kfk&SeBcgCvVd#K)DJ|%yo&I12{<*v@&9HV2t}kQsA6l6Ae22!uWOXpv z>?AC!Y@{`eex2BLKX7txy>}$w`$`T$X1Qz)>+xrjl`ir6u-};nL+# z@Jxt|l0FPSH!iN+y>t7)kpZZ6H?%~oy*=)AdMFQBf&IWf4`BEot0_bW5k5ABWFAn_ zQab@@1#G&Dwmi785Zktt3~YbXb>GL{4NacA}Yo#7Hvsiv-0cThl5aYj3mR#!(?W=p-@yMk=S0k z^p)92XfKLQ0`$BDYllt)IuwXdvAs0zr5-XC_MnE!9dx?` z*y62Duo1Q|3G3_xTyX&;0J;tS0D#}f_k%S;8aHzA zfqEoSWtXfkU2@{?!_RFjxsHie0cjAdVC&dCvLN$t7g5tC8XO-L>Av-)E9QYGiNlGX zi%-3DaOV>nOR*>81QGQH+X-I?`vs1gE1X1$)uits1kYFpM>^NAe?H4#)!v z^0^f!*O#1+Xi8e=)3PDiCYS<6PAd!+53zezORO6%)xRW?G{qv!OU)~l9+06Wd?A)t z@cR0a@WpUAKt)_pI439;at9(!Etqlpr+H3BOC&5IHcdtryEUO->=3E>t0-juXVD8r z5m$|rS_**O8B;)}Kibm(ejpi^WszSe2V>Ju7E5DZ&(g>-4iQ*idg>yvNL@xm=um)N zJyH@vgcnK2fT2(nUV?0Qy4zfC`}Y~9LMT+M8mbgDqk~WBy3HmeKBZvuYVfmp<+=5x z=4HH~OQM{&Xbl8~$tdu?R1r5oWxiW1HJzN406W%Bgo3C$3DHqV3^MjZ;A)=0W6vbK zz9957L3`0P3W6B{qnH0d25HD>cED#%m|Ng`AlL#&Vw+}Ug=1yFY*pK`zSOh?6#^Uv*#_O`kw*UhJWvHY2OTaq> zBb&C&`-V%+TfoaHtSqw7kEBRPC`OK>u#iHT!XykmI|TUaj}U~r&Etbl4t?0(-tz+m z<$SURydyAT8n^=0ZqW0{rv#i6H3QvzG*MY!YFMst8ivNsMxKSj$22XK z1vp#K(cL9Qhsl`2g1DmzDCHRGr6ZN0-2{bQ9w*@WMq&Xtqs~@e{|Oo63TQlpvJ6d6 zs9Dai*fi1=I88zCE!ZSp<>mFI`Yc*Wq~Y=)bAeCum>1BFn9$+jl5;aa@fnsdNkk(R zdM-(mL^4tF{t0@0iBzKKoEH!KoRy`<7Kb%%^-lRcqsvf0@Rd$iM*=_bR!-tIWmvod zkIe$Rrn?|Jzhsz7;&_Gbg0cbWi6j(oZzIE{+G2!aJ1vGz(`gE(0OcJbA1cN#^AJ=p z6qANa;?K!A5lQfLIM9y7bdL|6aUgqrKTj6YcxosT48qB9+-N~uesFfBkOiAb;E)!^ ztQs!W9j)}tp#dZfEGf!VSO$D6jj>(BprVQ3+LuGFVGww_x-)=0lliV0|Be z)%}GcP5t{!0mprWtFdQG=6Q;mQqm2?>EW$`m1II@o%_#s_{iVaSU{WC2fDBLe|9(bndg@RVdp*jFl_fD-}y zAm|3CWq}JXJ^8gmpExmGy6U^vAk|S44Jflm)|W2&!||fS@z&nbrQbo*8mQDuPd>8e zBd=g%zcN!qC1n)+b;t|l9gIXtFG=}={x;{tr<6{!D2^56d?p9x0V8P@)_F^5^vOFc zIO!m9?V9B*xYbIdPx z?7HWvC!hHEOj_U;-hXmKY1|_lIVRzcCD};SA0%iYRg7Omz~dLFkSoSSyYE3awG0RY z8Ema7%PJHu&;n4VHh0N&3sy|g&>{=Ehh5#9+u2F^qaJDWqV#EhxPjDi9TU@%CT z4$Y@$Gf+R8p5_7VWtN98Z6Db0Sn$)iXt5OzCPYq?X@xad5|{LneZbna=cGiTAjCK?YOFNSoU`>6ti^Gf_s* znHlhXqG*7d2Hz>#@X~~Y0A?O|&=O6VHuDTCWir`)haA_;1x62tWlm)j4&NCgQ(=NfGH71eA5 zt8>YgBxj&s zfh~zqKvI#XQ2NcoY%);&B(gmLa7mQ2(JUG9`oiI>Uq}Lw(`J{*0tz%_p+(KorECbgWW>kr8(y!$A_(UJ3_e zX@U$VP(VTB@n$~Hb^t5qWee&D$>xQ8KAG(VODLigs6WYx`hcyW{by0R94w`Ty1JEz z9pXLx72OW>Qi*dZU@$UNv;uz8BF%tIuB5uASbvZTf;$WP(E-6b?b~ViGho59`J(6r z4iz;MC^4@yMjoZAP()zmvhZv5j!LJ(Y*z=yx$>bt)I&u%&=y6pI>DtvWP(>{9>GM! zHj@bC#jZ%O2weocRH8^+>GzQ{Uqo7UuU@o+qL${m!L)+@MBvBLMC6lZ4CsrTmgzOL zybKo^4U;>rKkT>$nZD)Q@d}ZBN^Jw`7^LW&`D6dTFz}`&ul}H818-?n=U6Ll@LA z%1ybHm=IIwJw^ceQxV*R-wS?#1hfPX5(-e{H7_e>P6MpWSe+R#4ffo%E9T4H1zyJn zS-bYeRco$WdBfU80K#b&@@)5Y&wue&RI#6WbN#7{-+B}J)i{P2?4DY$|=TqBCS6U>+1mT9Kp4wO%vkUdtU~!?wqZGCLrJ{CO z2ZCL;2&-_ZpzS{Py#uAoPae)?2fBL>ZG?TJ%hlL!#4{cRh4zEzzi{NvI}X2aY*Xp7 zH`aAd>|Xfd`pTVxd3fs-T9cl_t1JJE0$z%fk}7zp(XY;hhEdc|TqI)yuMd|3Cx_sv z)BZ4p9-hGv19o!C3ux`E=Mc`Z3i%E@qx9zu9hPwPAp?A51^p8`yH33ZP&BGKgV`qHTTEkN-|9MuY>iSZg=Qphk1K8A`WV=2&I z;RreHC2NwRA)I;@adY$Sxp*6go`xVv(Or4>+i2xSYdT*~Sn9VuP9 zY)XIsij#9-%Hg7m{G zwuKh{7%_IMuQOW!fnr)|NEvP2gaPkRdppqf0KrBLbX>*~^HVY4C;JBmDg*v)#8Lg? zQ#&UjCtXDJi4!Rp+r)BA`TnGkrVT(ma&wemHIhoDB`O())5Z`48^jDJmi`C`7}X_q z7no%;+nquj> z0q$)t7tsKqsgsjw3U-DHp>!eb@d~s*LZTWcBpm4Brn(s!y=dp#trs2e=~-? z&FCm}t6X=tZX>+bZ*@$xCSllRoVb6aRDbW)IW*C>bd{!If<&NdK8fz_Yal3lXaj@N zC+BcU7&Dap!um&Pis3^9?Sm!;=zw5?;YR4PVq+2-FqDnJ79^$SHsm^FvNpmvHaN*b zKBw3+MqO^I3pbX=AOGa`6;_e~-G=aL0&~LVB>^A1c)yJy6W=vZnUJVN`s7Mx3ic6H zG@2ej!IB((_2aCm0DyvQwhJ(2u$a7#57!5`j#n@@!ZzZ z*yHydS(p+m8P*K&PJ=SI=qs-jOUdu*6hnz{#^cF&1dUN+$s{^HP$1(&L^Mv#dnnO~ z5_bW#OfHiX(7v@`<}pFFM-1dr*jYQv)9A2(u0;8)^(=PDwRq>;lRHXRy?U!nsa%T9 z>FmJGV3PdWA0=fpNf=nZdq!8H;v-9o|1~WR)XBIIz3DqG=XTGw6wRdI& zQ_kC*sRM#z7zslj!lL$Vmc)U7@yU zJm@1+u~-1*8S}pYL;ym*vw(6NJzvOynbmK>D0g*hiq!>$kn69+fsv&k+Rs6u3}(T+ zn&yLepeqigX<1B};*u@c7t_GeBxxRj3JF{R1xSe5!V`sqY+BmP7CNY zmD3A1Vqe_eWlF38A_@_Zye7bUr?MlZQF5w^^+N;VgvG5r7(4g`w`$Ws1#LBCK`+ z5Fa(kLKdfA(O4_Pq_s525ws=hTDt3KWrPD1qg%|D5H+bA&E5;WsPF>0FPNuyeQzJ~D8ww*kOeN8DoEMY>r3N5snVc8 z831H>tjO^I4Xdn$>A3tsSvS}u+N!`TC8oi6#aQlK|~`fKrtm)iJJX(KA-E#8eNK+$3wy1tDnT6i%l^Jat)hCM)`K7PeYnZ zV+k&QMpjsx6_!CVjtc2(fC@Y#Hd_h0#o`qk;bk}~h8Vj-2B$rkM&Jq^a4gO$+Ly^P z{)kAnqJWP=V`mEaqIRW?iI-D(HTO#pT(4zP2rL-_CkqV3A!lc01vwv3)R#YtPTp!V z1(W!p!-#>+#ITX|sdyk7kE72kO$CC{Hh(-phNAczBaDE!Gh|%MW4d6G1Y3i^Ro@1; zrb9MB@97$owYa>7nXA9cHoL-vhL0;NieC^!eHgOD;O6v3Hpz|KKR z0N_(*(!}2GuI|o4HZ$20zm72xFhD$*#+X;^18>Rbq=;uFJ`Du}zATm?Vj*8Fgj~Xq zYrz-Mb_Rbs!4L(jknVx=Ve#?g1Xkh7gA}XLK4@$_Yw$BH>4#dwUkFKnGDn}RP-y8x2}R1O zU;*^pWUJd!db)Y#ARyd9yYo!!U4%m@N((UP72oSazyr!PTP%&9If%A!T^$vNvftW- zi+5{093V}^R{HQ>ni1j*mm-s&-B1dAii`(CVCjJDoRSrOMh9M_OXhjc2$8r z0Z*B`bA4&-?TGORpy`m|2H$ku8;Gc!$gzMSl4#DssKb*dPwemM#<oBDYTN$YfGTRKYXGqk8m{t0{og{Y1AJ#P8z_lU7h*t@*javdt<(slq{@C z8V@^aH!aF^D%F;vBJ8~g^*qeRsUqD8g|K5C~CekxOYu zalc<7DIrM#^~4z=f+_ZVM@BMa3REba41|KjvTu@LG!g5@LvmfvPMWpjm-|Yik1dxd zL8`b@EGJjIfIqzOk&k=}&+zJ0F_TAP*Q}M-9XUBt8vVI#3l@ZdY7(qS#W8^Uj3!gI9x%OeYcb6cvtFR{vrf=4ubJDg`7m zO3&aZnM!Lcs)*^(y&Fr}r?4`xA87eRlB*t#A=wB~0)&Ds%|=sc<=C;OKYi!X+Ya9L z_zTY;|JF0lJ$wJr?F;xULS#9baZNpktPg1$|Xi9UxEO6%tVdYF0lMH*}8e(6lZf zA5Eiyv|0Q?fX;41&v%=Me}QBGp_k{=HvUuz{xT0Q%b5;I&r;0nDa%JjhKFvMG}KY( z%OezMvZlo{a+*%TnLt(&vbo8mmZHKqPU`_55dhIfh6px9`UBwiQEKeI@oNbwWgtwU zNd}lMc>Z<|qShHM4GU=(q_hHMj;>k-3CS4>^daE7s-#mY6O*oo%REz&~>)3FgI1{fC#(J?;(*20gVq-V>QThc(57)(W+1W$+j zk3*$GYt z@hC1UClw)&Iq`Ctj1ycA^mICq=A8ny{DB@9}pE-#LWRAcg>L;?OEd;Fo5>?+khUZNrq<}Jz;;Q_ zq9Y#qZz3Bf1D=LOl7?v{MDXIEA7PoaS(Blja0BR#HrNMm0jU*efgsXxE{(tC!7wpF z;L{Y7K=ZL!F+LQd62WLR0K(M|(*vCm3WdF!?x_wTULmTQl?q0s~eG1&_<$?WW}UBWAfzw0rX;pe(ax=g;q_V>l}yWPaxq1t~En* zNwCQkMhu)c$yTB`B!R|~u~3AL6G&0?``p{_tztOzZ{sDIu{6G;1DVh{7G9c=L{t`8 zkE~W?=lp-|-FaNw=Y0oo*(L^z@ndA}8vz1c=)NU{xDRt5#(;^jF$N#RPGVyl+eiYO z*urg}tW95OHg9R0wrMuEUA?+-x};5ZrPuOGyCpliEbEqaU6#1(k+x~FeSW$SAR+w( zs$P3d`~&EBeD%AY=lMO)^L`#ZTJ%ugjGiSZLg3_^)JV#-qeDz)gcH!w+SlHoV}{|> zH=@e4rd4B9DD_gbB?{CswI1WbYK$tLO3c^bpq1iEfkcQLq7psi%C7$5Zh;c%SaqGP zF-L2tYi`GTxPfVM#%+miunqOiX!JMP8s|`JhaAeNsKJ~ZhMER6^Nj9i;$tw{_Pu?5 zS~=2KZH=Z@Cr7tIlg5D76bZ^5cw1A6F@&WV=_(&JgB2ALaY+Tb(3HveXt;9T+>KXe z92%NIQE{(Qp%GTAu{N2F4NbZRR6Z-L4H!}m6-T0WG#ueYzZpa0$t_B)#$q|Jf3UBw z7hj-bZ*Lvi=TX`O1pN>+T4h-T5%7mszh=fTISJwi_>3TDPx-D(L^q1dL(@G z3q;jeV`OGzvTC$iJXvzH%2JJ-xemQ{>Xpo3A9^GDTj-H_s_}f*HydiyMvRkbwGJT# z=tpr2X+T%2N`oOLQ075XlnNaoY7BGo+D3)egyh#`QRB^AjF-47#4VLzFip&qf;KdC zlPv!D7k9}~2s4>cXIPC9u1w%K1~uMe&01y}8ZBN=RP}l*UKG*g0&N+{)3mx)q_cP; zhW8;6?7}11);iiNuS3G4(5aen=hf&{CiNl4&Y(5`m3JBy3O~&3A(cjjfG?Dk^3mr+ zqAf?qi0t3JwM#C;NjKx+g3N5F*Jo%atwx)EPK5>!0V+!{vcE#6MV_ZrNy>%gf^tcj z5Z!g9!U}1@6JOa~A=Mj=I^5MNl=sjB05v5>vmU(wjW{W2yu`>~xc5OcOr}~S5O}>e zn-p5JLO+c1i7O3mYwhbat92L{N{u^6Y(e{}5iQztcx}dE3mC_PHyD{vS%yv;!U~}X zX8Vy8#yY_3Kpc>}U0 z9ao~;3RPTa+Cm=(liH#)G+I!3XvC2rKQd~n z@z#ip8J$uMsJqtc`;iTI+1lsYS{p|9;@Y8?sJyOPfqvqsj?&>p4t1SKbMaSI6<*`e zTN&-R=(vv=NyKXOWJA+^-tFho(FLdh4_QYI>UnWy8=xT2NRL)81NulCw2e(>3zAVo zW1U5_SEp%dMR7!L#eFWa?(atm(9tGpZEBsUGbn46I@BIFn2;Em(RWUZXHloppadsF zX9hkpeP$$GyI@YpE61qRxCziB_3JNWi_qIqgZ5%%w0b;*Xi~Ozs!?mxfNxM=FKb0T zjkU#S!g$rH#%?rjf@z?9uEu)_QXnM2Z7q$xwPvldUW3!4s6%%Fr4jK3RWMD=xZJ4g z*H|%5CR6MvM^+%1 zvC@Qbbuf%D8nOf!*h5|>7S5pygP^jqpd9Cc|K0COj3~9B00a9`t3yRIjvddN!PJb` zY^1&zH5+rfY3tB`iOG_YJgHQu{?-|lRp>`m&CD}rZ9&;oi`sLvf$6pAK7mQ_s#JI@ z(4oasf{ICW+CYo00BtBTjkrqKEGfrhAu25_DC0|BeZEhxZK^~61*;0}TeWS-NKuK5 zj*>0)2Hf~C0Vp8VsBvm)(1ui3!xXa2W|bNvD`{bu6k4>9p+~yO(1_f@tT##JR)s){ zT6DDpSs`kGarm$y=)F^=l$4|9xdI)-%Fu@ecBrhP?Pbm%3*=_h5aQUhrZzJ&Fpa(z zk0A=P==Fy<=+3G)YO7Hcs6i_gniz!wbePBZ(9GRpn$tGHkI3+Zpz+x{@M)@UY_Kp{ zzp(~w8I5RJR*KYks4?_7YBNMCl)m_|5<)R9LP-gqM>(ADW7VTIG-oDm8}Ry>kK0oEjD0{*>xWg-Wk6>e0`}+SIb| z>m1IP5A|RO=vtdKwYJ_^U(bwAiyo4#R+}lk0lWmAol(;2>+kRD8JReC?BvTI#8GM- zrN&We9HqulY8<7;QED8e#!+efJv!aqPsI zixIMfBpjApFfo_!}Cc#thhr2$dui1RAlvCj{sQr0My z212PPmuT|wWt2);qf{CIrS{F!tluE0nLZQ?NO7Hif)YA@{IO9dB)I78?luE0{L!s1JN{4+Y)iO_gD3$VtHilBE zbSM-`wbLa(lzPrVeJGXkdNzhqskAQ?N~QFSA4(lWbT3M!+gdh+QV~29N*(B~^Fyfz z5!{PXDX(s0D3wb4O^pLb#}7`7?+**5-fyRgXS^tt@|tAo&I2PuhX-pSLaB7i=;=jT zeq}5Sl)8w>hrKA3ZaFZuNRVA~rCr8eN%s`sK)y8DumB}(nQPD_@$LZH-R zcA9k7gHoHXQ`t2QJCxe#pxbOGj?6C7qKoUJR2)uHiwC7PVXKP=hR-Zg=~;FtwcAD$ zZ9NQ1tv|d#3y0Q4si*BU`G^;#Hek!kdzor)>HY<}ZGaU@?V$7&w7d(Y_BtK3;QsYc z>Y$xwT~d2dY73?JX*?*k?V5ucPqIU)-Gj?0wR@hfhfV)D3oKA-?|3iT50+6X9^A~yfG8D9iUwAq)aFANcgGK< z;+va>!bhpSls>ourB2yt8q?mj2BkLIDQDkGl-i8+Xa!0gM{rB{D7Dc^X{R4bZCkQY zGVVdC9g~L+w|h`(Gg6e2!Br^LjIB}r^r2KeRx)9dzwlA&X-Y5qq0|W*O}5qJQUIm4 zEg?%9b)(cLA3^j_Eu&QR*uuSoCev|BZGI?q6iLq|B^#95W1~Bc_)sdgPhRTrpw#=2 z>t1o8)Hfgf2;FwB*0>idkNQw*zYUpW6FZb@LwS8>#D!A#-iN(82fQft!aQ}M)Vnt* zO|S!{A{k9OJLp2G#z`BMJJH>X6-vF=K@*&3$B*0XG-a;Shf?o%&@I;)l=|c&G{FIs ziX=6`dH?8y4L9~&3tN=hbd{z$kNct2VF%?r50pw1&H<&?UZvV=ha*6#-KUloX!_Y< z3_0M3Qb%SkUb+pG`ZVXxLoe<6(#Xiv*|TSkF(`HKv~z*(zJEv&AxiD+9BAv^8y-sS z9BgZAZ;YeVI7*G9)Hq7r6qMRO+}qx(bF;X$c& zZC!01l!{4PJAEj%uCt9nsTlfUU6eZcQM%*u^oSoyy?f^>O}zDr3#HCD=`u>4S){uT ztcy~QTy%VlCORi-y(sm?>ooBOgHk7EFI=HJ7cS0vQK}X1KIP7H=l6$1sb^4yws84@ zqbH6}*e+h7+m{BtDE01>sCl^a+Fj1w*X}rI@*^IUszW_g>cYS>O099)X@wJ0>V<() zkrSpKSw^YDCy=GwGv!68x9oJwqi+DE-o1rl!n_xy4mjw}>1C8^M!cL$+VD^+-bi+h z`=iwQqYE_QJ`YNLg$ej3Q0gs8&wEj7yMv~T`cSIwvYiS}Yr;gSBM!Rz6jO#cHsSd%!^Vjh$cK5HcG{rNjtI%rMBUfdHd2RgHm5ZxEnyJ z-=*}R7o~RLQjU61s_v4VipIl7sl5m{xf-SRqFD7HgHk_-Xm?yF^$4YhyeJj#bV&!@ zC{=}n6OXb$sW_Y5@ii#*=sZn02$YJ_6z3&3O0DhbYVxAgHWVuFb)i%}4o@<|2BqTm zmdt{Q#og1jZ(33`eXom|Zj{=G2X<}&8F3Rkl)4|GPOL?#R(xz*iBg-o#;0tEaM+Df5pe5R_qBOE;x+70 zDs$H#U5iqYY-CIaK&gGmIucL0QK~CjQZ^y;l3p8Rg;J3i?m4s;rJh94{y-=dUo!E$ z8>M#R$(So zN}WK|V{Vj+sEMO4l&VG8)ZuVZDsI8F>D4F|8A$d)H%dkEX(dXXLCj${N=3}1F*iz8 zBdB01T$GC2G;MqpN^M7tRn937N=4PwN|bsXQ85uCgHmx7lE*zLRdZ>9Rvr%%rH-Qr zcX%aA?L~<*$-dW%Qt3*RI*f%UJSY{n(vEw5DD~t5tvDJUNj)sj)8UDD0Rq2 zcYbKnhf)t-L512_2ou9pM-_*h0wJ5da*u#r-?)v%r?)9P6QDQ0>Nh*C9z%mvcH&6oJ0)a>+(yn_4^UQvEl4knDx zNY7x4Qb|CRTFJdicI5e?RKgmil0Yc6Xo(~jETdGy8l{o|C{;dBwx(sKFOsBUA43r4n<&#!xD$stAQr z^9hmpP^x5}_)se0;cnT;OsPbQY3SCUDK&?1{ZML-gZNM?;qf6ekipR!M!Mz@Jcp@Qi&9e$e7Iw^Y65oST z%dk~?R$=BMk!G<&sZtwB%$71J)x=*Qh5U6Qu*^_J(Mcp+Q_c7 z%4L))5-y`uY`YPZiUcQ58Wg2!Gi@Z7D+q>CGjZ5Ok)u?hgXD^XqEuYw+{&OR6={{R zFmjY?bdVfnFqB$kCwao)C{=*ayp5n#f?GZCOsRZ3$rrARQW1J1D3xSk@`peum1idf zmFuHa0>=>POsN*;*$IqNOYJ1RcwLk#u@loC7ARF#!3@5=j8fHhk|_>|Qp@b5h_@1@ zmY4Hapj514DhMB?%8;M0K&jY1O&tiOB01rdu0*LwQ*u_IRNRRsN%$zWnoEe-52e;3 z;UJYBlxh~?$UG>u3JXfgR-sfCwwC&#R5?~M6|zC8rG#Yqp;Q!Tld~})1A|iKTx3Z? zH%eW~M)c`rlv-9j#w#9Y?8glp05=ag@3# zD79WM*LhK@4gVvaGk8#{EZ0F&(;JpiDnHFmD!9dAp;Y9Asg=tpRmVq`a*x=HQV-b4mcrXWsc#%W zF`>+hQh5%tvv?V$st_+HLmD1RRXND63V)Pp6fKYhp$DZt&IJ4pQ0f6fa=j=O-!Y}c zhf-ykb|T1?go#oO4zgRe5~XVQ%#%d58>OPm%y}Fr^(N}|yeJigh;3zFl&V2AVNTd6 z6-SpQScOuVSLW^9b_S*1L^ugh>eEa(&rGRRxRfOxlq$=x6H#IKC{>Pd;?*csk75;{ zL8&JYZQ6xWYY8d$qErQ{B1+vTRfK~R3t6C4oK0@U8kCA!*n|$C)DpyVx>2g0nX1q; zQ)(p&l{^23-%7UR(se{}j07}(lF(qXIJCusEyQh3DO0AqH3`)gQzFidrrQ%&1 zr;7ui)B>D7DNt(uHN2J<3H5#` z6^X%?d|XUb7G_joJ5wr7P`WSxO2wtTM-G&#=3XZ$=>i{0l{|zvmF!U}u3&mq0F;X3 z+Ky>5FhL~uLnJxZi&A9|6D3!~8l_qgMHT?1<|9GTxlpRA6bF=4=|QRDtGF*DY*8xn z5J&={RI-dxC1PIARg#4E2-i%hNCi1r3nVd3!VaZs5K6ihrRwl;_DYm$!K8}Wh`@KF zR0P~w#!s8aBhF`sQeAibT9jJhAQ_bbP^th~M7~)2Iit#J5wrC_nzZMsYuTf#73POrGnBjHYk-zfW>Q3Dl(j`oWLj*33Xzw8>LE^ zR1_#xmbO5|r7Tb?9yqRO4NAqC%aR2~sc5-O%yXkuthK$2L8%h7AB!r&N2$19xS};E z74@>&nMM~%#pHV{QK}G8%iSmyQ4@JClqyBo)QWIXDwFfeSEE#Xn5}lBR1}|9qSRu< ztZ<`L#7ru4qf{}13i855skj@`DpsLXC2Fj4cpj9Bs;QMIm1#3lxlt;jCRcb+YE{Mp zsVoQ+rQ+e(&0mR9^-MKcPMsH}l9ed60t@*bl!{wvN2w2`7A=s9obXU8j+IDOpj0t} zCTHtCC{<-6soj1kwKWYTWUj@7QqjhfQnHLva~B9dFD#UbgH09tp;R$a*Bv?4UX-e} zk)0V0K9t&7hzhkmm>0&oZm8%p&q<5*MVu8SiQgIE7Gclp!`ZJ}HG;XPU1xnRsIB~9cDi2D{#ed5vwP2An zXRnV^^YgPsRbmleR9;e8P?VdWS0Wbc*P>KudGR8d+ru*s_)w~-s5rNj#4kuND$~;RoDku2-N}*6(C6y`h4ud&_t1+i}V{>bJS5M!* z{lkYQkDWYq|CyQD*)uceE}Va0u&J%1qq~n;w68;{P+1PoF;X;AC@MQ%h@mXIEF7)mm5I*xYC>=5RRNFaP|#_uv2E{U5*iMhMK?f*y?Q=YHKM!tmi!md4G?1QpRS7G@qf6Zqe2qH`0aT86~^%S>qY#^pM7f5W=zptjf8TurJxyA<{gt?;MYA=v~_51I)|K~SSfB4%E>KE~O5_$Ze zJbs0Fd3xgWcl~zA^3P{e|C!|$-qpWuQ+Yul2@`hhder@@m@c&vucux4M2Ve7cB=LXa3eR~KKab7$em>@T{KIRp^L(Xe zwtqkPmkYM!9CP$*ezrayZ2fgUzg@`w`TOveHL+bE?0$BgKtUGWlD`vVNzjk~F)eU- z4yX3rpc@5S@I~o=1zQyCa~do>hr|8^{81I#_`j?P9{+)0-#O^#pOgG&&}D%ayt*TJ z`~uc5(@%b&} zFL2mb7DC>r=R_Pu*FlR z2ws~0=gDMOv>*6|=j@Lt{%4J>ifi5&f8jdYk1fYfbFfXv+`IaeB7*bp{T4I6_!YOk zpRxS?`&qBD+`@15tM2$I^^Zny6TA2GiOdbezx#>VspAVzyzpzk@5J)YCj>EU|G;;B zTEaTZV0nb=ul}@T1NYzhyAEsV=V~H){=(XKI4eEb8qQkLTj!I5(c5=8d;Wu-aMp_6 zIyWLqwm0ny-PpTnyNYN>e-K%=8Bwf28~tH#pih5$pZ!s1B>Dg5eZQyLVjKT6&6{^D zk?iS{O|eaXZ#2aA{C}b@w#Wad^*51RwoTjSiK5?fc)Q?oGIf zH?WIyF)sgK?ApMW--JzPIyYe_8`#Bk`vx}NgiVjNZNg4Au!|!xF8|)!xPdRf37hV( z-GrTNU>7|#u`PeMSz;T%$r#h}_xomTOv`^imn&l${~cjD+xG7b-0W*N{ZVmJO#Rn4 zQ#kB1z@T^RYjYoAS(-#kQug=n0*|l#d3)_g%qMqWKWKUAAKzYH`u1CI{>u-4_{Qsh z|GmGkayWfo{r2}>ef4ku=5Js1`}y8qe)r{ CFBundleDevelopmentRegion English + CFBundleDocumentTypes + + + CFBundleTypeExtensions + + 2mg + 2MG + + CFBundleTypeIconFile + 2mg.icns + CFBundleTypeName + Apple II 2MG Disk Image + CFBundleTypeOSTypes + + a2mg + + CFBundleTypeRole + None + + + CFBundleTypeExtensions + + kegs + + CFBundleTypeIconFile + 525.icns + CFBundleTypeName + KEGS Configuration File + CFBundleTypeOSTypes + + kegs + + CFBundleTypeRole + None + + CFBundleExecutable KEGSMAC + CFBundleName + KEGSMAC CFBundleIconFile kegsicon.icns CFBundleInfoDictionaryVersion @@ -13,10 +51,14 @@ CFBundlePackageType APPL CFBundleSignature - ???? + KEGS CFBundleVersion - 0.1 - CSResourcesFileMapped - + 0.91 + CFBundleShortVersionString + KEGSMAC version 0.91 + CFBundleGetInfoString + KEGSMAC v0.91, Copyright 2004 Kent Dickey, http://kegs.sourceforge.net + NSHumanReadableCopyright + Copyright 2004 Kent Dickey diff --git a/src/InfoPlist.strings b/src/InfoPlist.strings deleted file mode 100644 index 036ca1e23a43b6c58f15c4bd041c59f6c2bf1217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 520 zcmbu5OKZYV7(~yyzaqF4u_7XZxM;19Vs&A_eSEf5qeNS_@&cHeM`|RJ`b&*ZV-?9^Zm%UF}c{T5RnzVW3 zL-thOjDh+qXF$U@M~@aALi#+&%~8)d6Y{E4qQmG{nouM$Sw-gW+fl8I|nZ#Z?- z-~HU}Kl%j|HBG&-k8{R_cQ`jxHbIGstDatQiaohMxpY^&BpcXC*WOn46*H6@* ../KEGSMAC.app/Contents/PkgInfo cp -f Info.plist ../KEGSMAC.app/Contents/ - cp -f InfoPlist.strings ../KEGSMAC.app/Contents/Resources/English.lproj/ cp -f info.nib ../KEGSMAC.app/Contents/Resources/English.lproj/main.nib cp -f classes.nib ../KEGSMAC.app/Contents/Resources/English.lproj/main.nib cp -f objects.xib ../KEGSMAC.app/Contents/Resources/English.lproj/main.nib cp -f kegsicon.icns ../KEGSMAC.app/Contents/Resources/ + cp -f 525.icns ../KEGSMAC.app/Contents/Resources/ + cp -f 2mg.icns ../KEGSMAC.app/Contents/Resources/ touch '../KEGSMAC.app/Icon?' # Linux for X builds: @@ -49,7 +50,7 @@ kegs.exe: $(OBJECTS) compile_time.o # Mingw32 (native windows) builds: kegswin.exe: $(OBJECTS) compile_time.o - $(CC) $(CCOPTS) $(LDOPTS) $(OBJECTS) compile_time.o $(LDFLAGS) -o $(NAME)$(SUFFIX) $(EXTRA_LIBS) -lwinmm -lgdi32 -ldsound -lcomctl32 + $(CC) $(CCOPTS) $(LDOPTS) $(OBJECTS) compile_time.o $(LDFLAGS) -o $(NAME)$(SUFFIX) $(EXTRA_LIBS) -lwinmm -lgdi32 -ldsound -lcomctl32 -lws2_32 mv $(NAME)$(SUFFIX) .. diff --git a/src/adb.c b/src/adb.c index 0ebb103..86c2d13 100644 --- a/src/adb.c +++ b/src/adb.c @@ -8,12 +8,14 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_adb_c[] = "@(#)$KmKId: adb.c,v 1.63 2004-03-23 18:46:25-05 kentd Exp $"; +const char rcsid_adb_c[] = "@(#)$KmKId: adb.c,v 1.73 2004-11-14 14:05:33-05 kentd Exp $"; /* adb_mode bit 3 and bit 2 (faster repeats for arrows and space/del) not done*/ #include "adb.h" +int g_fullscreen = 0; + extern int Verbose; extern word32 g_vbl_count; extern int g_num_lines_prev_superhires640; @@ -21,11 +23,14 @@ extern int g_num_lines_prev_superhires; extern int g_rom_version; extern int g_fast_disk_emul; extern int g_limit_speed; +extern int g_irq_pending; extern int g_swap_paddles; extern int g_invert_paddles; +extern int g_joystick_type; extern int g_a2vid_palette; extern int g_config_control_panel; extern word32 g_cfg_vbl_count; +extern double g_cur_dcycs; extern byte *g_slow_memory_ptr; extern byte *g_memory_ptr; @@ -84,17 +89,23 @@ int g_warp_pointer = 0; int g_hide_pointer = 0; int g_unhide_pointer = 0; - int g_mouse_a2_x = 0; int g_mouse_a2_y = 0; int g_mouse_a2_button = 0; int g_mouse_fifo_pos = 0; +int g_mouse_raw_x = 0; +int g_mouse_raw_y = 0; #define ADB_MOUSE_FIFO 8 -int g_mouse_fifo_x[ADB_MOUSE_FIFO] = { 0 }; -int g_mouse_fifo_y[ADB_MOUSE_FIFO] = { 0 }; -int g_mouse_fifo_buttons[ADB_MOUSE_FIFO] = { 0 }; +STRUCT(Mouse_fifo) { + double dcycs; + int x; + int y; + int buttons; +}; + +Mouse_fifo g_mouse_fifo[ADB_MOUSE_FIFO] = { { 0, 0, 0, 0 } }; int g_mouse_warp_x = 0; int g_mouse_warp_y = 0; @@ -102,11 +113,6 @@ int g_mouse_warp_y = 0; int g_adb_mouse_valid_data = 0; int g_adb_mouse_coord = 0; -int g_adb_data_int_sent = 0; -int g_adb_mouse_int_sent = 0; -int g_adb_kbd_srq_sent = 0; - - #define MAX_KBD_BUF 8 int g_key_down = 0; @@ -129,6 +135,10 @@ int g_mouse_ctl_addr = 3; /* ADB ucontroller's mouse addr*/ word32 g_virtual_key_up[4]; /* bitmask of all possible 128 a2codes */ /* indicates which keys are up=1 by bit */ +int g_keypad_key_is_down[10] = { 0 };/* List from 0-9 of which keypad */ + /* keys are currently pressed */ + + #define SHIFT_DOWN ( (g_c025_val & 0x01) ) #define CTRL_DOWN ( (g_c025_val & 0x02) ) #define CAPS_LOCK_DOWN ( (g_c025_val & 0x04) ) @@ -171,6 +181,10 @@ adb_init() g_virtual_key_up[i] = -1; } + for(i = 0; i < 10; i++) { + g_keypad_key_is_down[i] = 0; + } + adb_reset(); } @@ -189,9 +203,9 @@ adb_reset() g_kbd_ctl_addr = 2; g_mouse_ctl_addr = 3; - g_adb_data_int_sent = 0; - g_adb_mouse_int_sent = 0; - g_adb_kbd_srq_sent = 0; + adb_clear_data_int(); + adb_clear_mouse_int(); + adb_clear_kbd_srq(); g_adb_data_pending = 0; g_adb_interrupt_byte = 0; @@ -201,6 +215,7 @@ adb_reset() g_kbd_reg0_pos = 0; g_kbd_reg3_16bit = 0x602; + } @@ -250,8 +265,6 @@ show_adb_log(void) printf("kbd: dev: %x, ctl: %x; mouse: dev: %x, ctl: %x\n", g_kbd_dev_addr, g_kbd_ctl_addr, g_mouse_dev_addr, g_mouse_ctl_addr); - printf("adb_data_int_sent: %d, adb_kbd_srq_sent: %d, mouse_int: %d\n", - g_adb_data_int_sent, g_adb_kbd_srq_sent, g_adb_mouse_int_sent); printf("g_adb_state: %d, g_adb_interrupt_byte: %02x\n", g_adb_state, g_adb_interrupt_byte); } @@ -271,11 +284,8 @@ adb_add_kbd_srq() { if(g_kbd_reg3_16bit & 0x200) { /* generate SRQ */ - g_adb_interrupt_byte |= 0x08;; - if(!g_adb_kbd_srq_sent) { - g_adb_kbd_srq_sent = 1; - add_irq(); - } + g_adb_interrupt_byte |= 0x08; + add_irq(IRQ_PENDING_ADB_KBD_SRQ); } else { printf("Got keycode but no kbd SRQ!\n"); } @@ -284,10 +294,7 @@ adb_add_kbd_srq() void adb_clear_kbd_srq() { - if(g_adb_kbd_srq_sent) { - remove_irq(); - g_adb_kbd_srq_sent = 0; - } + remove_irq(IRQ_PENDING_ADB_KBD_SRQ); /* kbd SRQ's are the only ones to handle now, so just clean it out */ g_adb_interrupt_byte &= (~(0x08)); @@ -297,10 +304,7 @@ void adb_add_data_int() { if(g_c027_val & ADB_C027_DATA_INT) { - if(!g_adb_data_int_sent) { - g_adb_data_int_sent = 1; - add_irq(); - } + add_irq(IRQ_PENDING_ADB_DATA); } } @@ -308,31 +312,20 @@ void adb_add_mouse_int() { if(g_c027_val & ADB_C027_MOUSE_INT) { - if(!g_adb_mouse_int_sent) { - /* printf("Mouse int sent\n"); */ - g_adb_mouse_int_sent = 1; - add_irq(); - } + add_irq(IRQ_PENDING_ADB_MOUSE); } } void adb_clear_data_int() { - if(g_adb_data_int_sent) { - remove_irq(); - g_adb_data_int_sent = 0; - } + remove_irq(IRQ_PENDING_ADB_DATA); } void adb_clear_mouse_int() { - if(g_adb_mouse_int_sent) { - remove_irq(); - g_adb_mouse_int_sent = 0; - /* printf("Mouse int clear, button: %d\n", g_mouse_a2_button);*/ - } + remove_irq(IRQ_PENDING_ADB_MOUSE); } @@ -580,7 +573,7 @@ adb_read_c026() case ADB_IDLE: ret = g_adb_interrupt_byte; g_adb_interrupt_byte = 0; - if(g_adb_kbd_srq_sent) { + if(g_irq_pending & IRQ_PENDING_ADB_KBD_SRQ) { g_adb_interrupt_byte |= 0x08; } if(g_adb_data_pending == 0) { @@ -1087,15 +1080,57 @@ write_adb_ram(word32 addr, int val) } } +int +adb_get_keypad_xy(int get_y) +{ + int x, y; + int key; + int num_keys; + int i, j; + + key = 1; + num_keys = 0; + x = 0; + y = 0; + for(i = 0; i < 3; i++) { + for(j = 0; j < 3; j++) { + if(g_keypad_key_is_down[key]) { + num_keys++; + x = x + (j - 1)*32768; + y = y + (1 - i)*32768; + } + key++; + } + } + if(num_keys == 0) { + num_keys = 1; + } + + adb_printf("get_xy=%d, num_keys: %d, x:%d, y:%d\n", get_y, + num_keys, x, y); + + if(get_y) { + return y / num_keys; + } else { + return x / num_keys; + } +} + int update_mouse(int x, int y, int button_states, int buttons_valid) { + double dcycs; int button1_changed; int mouse_moved; int unhide; int pos; int i; + dcycs = g_cur_dcycs; + + g_mouse_raw_x = x; + g_mouse_raw_y = y; + unhide = 0; if(x < 0) { x = 0; @@ -1132,47 +1167,50 @@ update_mouse(int x, int y, int button_states, int buttons_valid) y = y >> 1; } + mouse_compress_fifo(dcycs); + #if 0 printf("Update Mouse called with buttons:%d x,y:%d,%d, fifo:%d,%d, " " a2: %d,%d\n", buttons_valid, x, y, - g_mouse_fifo_x[0], g_mouse_fifo_y[0], + g_mouse_fifo[0].x, g_mouse_fifo[0].y, g_mouse_a2_x, g_mouse_a2_y); #endif if((buttons_valid < 0) && g_warp_pointer) { /* Warping the pointer causes it to jump here...this is not */ /* real motion, just update info and get out */ - g_mouse_a2_x += (x - g_mouse_fifo_x[0]); - g_mouse_a2_y += (y - g_mouse_fifo_y[0]); - g_mouse_fifo_x[0] = x; - g_mouse_fifo_y[0] = y; + g_mouse_a2_x += (x - g_mouse_fifo[0].x); + g_mouse_a2_y += (y - g_mouse_fifo[0].y); + g_mouse_fifo[0].x = x; + g_mouse_fifo[0].y = y; return 0; } #if 0 printf("...real move, warp: %d, %d, new x: %d, %d, a2:%d,%d\n", - g_mouse_warp_x, g_mouse_warp_y, g_mouse_fifo_x[0], - g_mouse_fifo_y[0], g_mouse_a2_x, g_mouse_a2_y); + g_mouse_warp_x, g_mouse_warp_y, g_mouse_fifo[0].x, + g_mouse_fifo[0].y, g_mouse_a2_x, g_mouse_a2_y); #endif - mouse_moved = (g_mouse_fifo_x[0] != x) || (g_mouse_fifo_y[0] != y); + mouse_moved = (g_mouse_fifo[0].x != x) || (g_mouse_fifo[0].y != y); g_mouse_a2_x += g_mouse_warp_x; g_mouse_a2_y += g_mouse_warp_y; - g_mouse_fifo_x[0] = x; - g_mouse_fifo_y[0] = y; + g_mouse_fifo[0].x = x; + g_mouse_fifo[0].y = y; + g_mouse_fifo[0].dcycs = dcycs; g_mouse_warp_x = 0; g_mouse_warp_y = 0; button1_changed = (buttons_valid & 1) && - ((button_states & 1) != (g_mouse_fifo_buttons[0] & 1)); + ((button_states & 1) != (g_mouse_fifo[0].buttons & 1)); - if((button_states & 4) && !(g_mouse_fifo_buttons[0] & 4) && + if((button_states & 4) && !(g_mouse_fifo[0].buttons & 4) && (buttons_valid & 4)) { /* right button pressed */ adb_increment_speed(); } - if((button_states & 2) && !(g_mouse_fifo_buttons[0] & 2) && + if((button_states & 2) && !(g_mouse_fifo[0].buttons & 2) && (buttons_valid & 2)) { /* middle button pressed */ halt2_printf("Middle button pressed\n"); @@ -1185,15 +1223,13 @@ update_mouse(int x, int y, int button_states, int buttons_valid) /* button up/down times. Using a mouse event list where */ /* deltas accumulate until a button change would work, too */ for(i = pos; i >= 0; i--) { - g_mouse_fifo_x[i + 1] = g_mouse_fifo_x[i]; - g_mouse_fifo_y[i + 1] = g_mouse_fifo_y[i]; - g_mouse_fifo_buttons[i + 1] = g_mouse_fifo_buttons[i]&1; + g_mouse_fifo[i + 1] = g_mouse_fifo[i]; /* copy struct*/ } g_mouse_fifo_pos = pos + 1; } - g_mouse_fifo_buttons[0] = (button_states & buttons_valid) | - (g_mouse_fifo_buttons[0] & ~buttons_valid); + g_mouse_fifo[0].buttons = (button_states & buttons_valid) | + (g_mouse_fifo[0].buttons & ~buttons_valid); if(mouse_moved || button1_changed) { if( (g_mouse_ctl_addr == g_mouse_dev_addr) && @@ -1226,10 +1262,12 @@ mouse_read_c024(double dcycs) return 0; } + mouse_compress_fifo(dcycs); + pos = g_mouse_fifo_pos; - target_x = g_mouse_fifo_x[pos]; - target_y = g_mouse_fifo_y[pos]; - mouse_button = (g_mouse_fifo_buttons[pos] & 1); + target_x = g_mouse_fifo[pos].x; + target_y = g_mouse_fifo[pos].y; + mouse_button = (g_mouse_fifo[pos].buttons & 1); delta_x = target_x - g_mouse_a2_x; delta_y = target_y - g_mouse_a2_y; @@ -1253,7 +1291,7 @@ mouse_read_c024(double dcycs) /* peek into next entry's button info if we are not clamped */ /* and we're returning the y-coord */ if(!clamped && g_adb_mouse_coord) { - mouse_button = g_mouse_fifo_buttons[pos - 1] & 1; + mouse_button = g_mouse_fifo[pos - 1].buttons & 1; } } @@ -1351,9 +1389,9 @@ mouse_read_c024(double dcycs) g_slow_memory_ptr[0x10190], g_slow_memory_ptr[0x10192], g_slow_memory_ptr[0x10191], g_slow_memory_ptr[0x10193]); - if((g_mouse_fifo_pos == 0) && (g_mouse_fifo_x[0] == a2_x) && - (g_mouse_fifo_y[0] == a2_y) && - ((g_mouse_fifo_buttons[0] & 1) == g_mouse_a2_button)) { + if((g_mouse_fifo_pos == 0) && (g_mouse_fifo[0].x == a2_x) && + (g_mouse_fifo[0].y == a2_y) && + ((g_mouse_fifo[0].buttons & 1) == g_mouse_a2_button)) { g_adb_mouse_valid_data = 0; adb_clear_mouse_int(); } @@ -1362,6 +1400,29 @@ mouse_read_c024(double dcycs) return ret; } +void +mouse_compress_fifo(double dcycs) +{ + int pos; + + /* The mouse fifo exists so that fast button changes don't get lost */ + /* if the emulator lags behind the mouse events */ + /* But the FIFO means really old mouse events are saved if */ + /* the emulated code isn't looking at the mouse registers */ + /* This routine compresses all mouse events > 0.5 seconds old */ + + for(pos = g_mouse_fifo_pos; pos >= 1; pos--) { + if(g_mouse_fifo[pos].dcycs < (dcycs - 500*1000.0)) { + /* Remove this entry */ + adb_printf("Old mouse FIFO pos %d removed\n", pos); + g_mouse_fifo_pos = pos - 1; + continue; + } + /* Else, stop searching the FIFO */ + break; + } +} + void adb_key_event(int a2code, int is_up) { @@ -1489,7 +1550,8 @@ adb_read_c000() /* got one */ if((g_kbd_read_no_update++ > 5) && (g_kbd_chars_buffered > 1)) { /* read 5 times, keys pending, let's move it along */ - printf("Read %02x 3 times, tossing\n", g_kbd_buf[0]); + printf("Read %02x %d times, tossing\n", g_kbd_buf[0], + g_kbd_read_no_update); adb_access_c010(); } } else { @@ -1583,7 +1645,8 @@ adb_physical_key_update(int a2code, int is_up) { int autopoll; int special; - int tmp; + int ascii_and_type; + int ascii; /* this routine called by xdriver to pass raw codes--handle */ /* ucontroller and ADB bus protocol issues here */ @@ -1599,17 +1662,17 @@ adb_physical_key_update(int a2code, int is_up) return; } - /* Remap 0x7b-0x7e to 0x3b-0x3e (arrow keys on new mac keyboards */ + /* Remap 0x7b-0x7e to 0x3b-0x3e (arrow keys on new mac keyboards) */ if(a2code >= 0x7b && a2code <= 0x7e) { a2code = a2code - 0x40; } /* Now check for special keys (function keys, etc) */ - tmp = a2_key_to_ascii[a2code][1]; + ascii_and_type = a2_key_to_ascii[a2code][1]; special = 0; - if((tmp & 0xf000) == 0x8000) { + if((ascii_and_type & 0xf000) == 0x8000) { /* special function key */ - special = tmp & 0xff; + special = ascii_and_type & 0xff; switch(special) { case 0x01: /* F1 - remap to cmd */ a2code = 0x37; @@ -1643,7 +1706,7 @@ adb_physical_key_update(int a2code, int is_up) if(special && !is_up) { switch(special) { case 0x04: /* F4 - Emulator config panel */ - g_config_control_panel = !g_config_control_panel; + cfg_toggle_config_panel(); break; case 0x06: /* F6 - emulator speed */ if(SHIFT_DOWN) { @@ -1679,13 +1742,38 @@ adb_physical_key_update(int a2code, int is_up) change_a2vid_palette((g_a2vid_palette + 1) & 0xf); break; case 0x0b: /* F11 - full screen */ - /* g_fullscreen = !g_fullscreen; */ - /* x_full_screen(g_full_screen); */ + g_fullscreen = !g_fullscreen; + x_full_screen(g_fullscreen); break; } return; } + /* Handle Keypad Joystick here partly...if keypad key pressed */ + /* while in Keypad Joystick mode, do not pass it on as a key press */ + if((ascii_and_type & 0xff00) == 0x1000) { + /* Keep track of keypad number keys being up or down even */ + /* if joystick mode isn't keypad. This avoid funny cases */ + /* if joystick mode is changed while a key is pressed */ + ascii = ascii_and_type & 0xff; + if(ascii > 0x30 && ascii <= 0x39) { + g_keypad_key_is_down[ascii - 0x30] = !is_up; + } + if(g_joystick_type == 0) { + /* If Joystick type is keypad, then do not let these */ + /* keypress pass on further, except for cmd/opt */ + if(ascii == 0x30) { + /* remap '0' to cmd */ + a2code = 0x37; + } else if(ascii == 0x2e || ascii == 0x2c) { + /* remap '.' and ',' to option */ + a2code = 0x3a; + } else { + /* Just ignore it in this mode */ + return; + } + } + } autopoll = 1; if(g_adb_mode & 1) { @@ -1753,6 +1841,23 @@ adb_virtual_key_update(int a2code, int is_up) } } +void +adb_all_keys_up() +{ + word32 mask; + int i, j; + + for(i = 0; i < 4; i++) { + for(j = 0; j < 32; j++) { + mask = 1 << j; + if((g_virtual_key_up[i] & mask) == 0) { + /* create key-up event */ + adb_physical_key_update(i*32 + j, 1); + } + } + } +} + void adb_kbd_repeat_off() { diff --git a/src/adb.h b/src/adb.h index 857aa33..7f4b4e8 100644 --- a/src/adb.h +++ b/src/adb.h @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_adb_h[] = "@(#)$KmKId: adb.h,v 1.9 2002-11-19 03:10:38-05 kadickey Exp $"; +const char rcsid_adb_h[] = "@(#)$KmKId: adb.h,v 1.11 2004-10-13 23:30:33-04 kentd Exp $"; #include "defc.h" @@ -87,7 +87,7 @@ const int a2_key_to_ascii[][4] = { { 0x3f, -1, -1, -1 }, { 0x40, -1, -1, -1 }, - { 0x41, 0x102e, 0x102e, -1 }, /* keypad . */ + { 0x41, 0x102e, 0x102c, -1 }, /* keypad . */ { 0x42, -1, -1, -1 }, { 0x43, 0x102a, 0x102a, -1 }, /* keypad * */ { 0x44, -1, -1, -1 }, @@ -115,7 +115,7 @@ const int a2_key_to_ascii[][4] = { { 0x58, 0x1036, 0x1036, -1 }, /* keypad 6 */ { 0x59, 0x1037, 0x1037, -1 }, /* keypad 7 */ - { 0x5a, -1, -1, -1 }, + { 0x5a, 'a', 'A', 0x01 }, /* probably not necessary */ { 0x5b, 0x1038, 0x1038, -1 }, /* keypad 8 */ { 0x5c, 0x1039, 0x1039, -1 }, /* keypad 9 */ { 0x5d, -1, -1, -1 }, @@ -137,7 +137,7 @@ const int a2_key_to_ascii[][4] = { { 0x6b, 0x800e, 0x106b, -1 }, /* F14 */ { 0x6c, -1, -1, -1 }, { 0x6d, 0x800a, 0x106d, -1 }, /* F10 */ - { 0x6e, -1, -1, -1 }, + { 0x6e, 0x4000, 0x4000, -1 }, /* windows key alias to option */ { 0x6f, 0x800c, 0x106f, -1 }, /* F12 */ { 0x70, -1, -1, -1 }, diff --git a/src/clock.c b/src/clock.c index 442ed70..27c1f49 100644 --- a/src/clock.c +++ b/src/clock.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_clock_c[] = "@(#)$KmKId: clock.c,v 1.29 2003-10-17 15:07:35-04 kentd Exp $"; +const char rcsid_clock_c[] = "@(#)$KmKId: clock.c,v 1.31 2004-10-19 17:32:07-04 kentd Exp $"; #include "defc.h" #include @@ -34,8 +34,8 @@ int g_clk_mode = CLK_IDLE; int g_clk_read = 0; int g_clk_reg1 = 0; -word32 c033_data = 0; -word32 c034_val = 0; +extern int g_c033_data; +extern int g_c034_val; byte g_bram[2][256]; byte *g_bram_ptr = &(g_bram[0][0]); @@ -173,12 +173,19 @@ update_cur_time() tm_ptr = localtime(&cur_time); secs = mktime(tm_ptr); +#ifdef MAC + /* Mac OS X's mktime function modifies the tm_ptr passed in for */ + /* the CDT timezone and breaks this algorithm. So on a Mac, we */ + /* will use the tm_ptr->gmtoff member to correct the time */ + secs = secs + tm_ptr->tm_gmtoff; +#else secs = (unsigned int)cur_time - (secs2 - secs); if(tm_ptr->tm_isdst) { /* adjust for daylight savings time */ secs += 3600; } +#endif /* add in secs to make date based on Apple Jan 1, 1904 instead of */ /* Unix's Jan 1, 1970 */ @@ -210,28 +217,10 @@ clock_update_if_needed() } } -word32 -clock_read_c033() -{ - return c033_data; -} - -word32 -clock_read_c034() -{ - return c034_val; -} - -void -clock_write_c033(word32 val) -{ - c033_data = val; -} - void clock_write_c034(word32 val) { - c034_val = val & 0x7f; + g_c034_val = val & 0x7f; if((val & 0x80) != 0) { if((val & 0x20) == 0) { printf("c034 write not last = 1\n"); @@ -251,12 +240,12 @@ do_clock_data() clk_printf("In do_clock_data, g_clk_mode: %02x\n", g_clk_mode); - read = c034_val & 0x40; + read = g_c034_val & 0x40; switch(g_clk_mode) { case CLK_IDLE: - g_clk_read = (c033_data >> 7) & 1; - g_clk_reg1 = (c033_data >> 2) & 3; - op = (c033_data >> 4) & 7; + g_clk_read = (g_c033_data >> 7) & 1; + g_clk_reg1 = (g_c033_data >> 2) & 3; + op = (g_c033_data >> 4) & 7; if(!read) { /* write */ switch(op) { @@ -269,7 +258,7 @@ do_clock_data() if(g_clk_reg1 & 0x2) { /* extend BRAM read */ g_clk_mode = CLK_BRAM2; - g_clk_reg1 = (c033_data & 7) << 5; + g_clk_reg1 = (g_c033_data & 7) << 5; } break; case 0x2: /* read/write ram 0x10-0x13 */ @@ -279,11 +268,11 @@ do_clock_data() case 0x4: /* read/write ram 0x00-0x0f */ case 0x5: case 0x6: case 0x7: g_clk_mode = CLK_BRAM1; - g_clk_reg1 = (c033_data >> 2) & 0xf; + g_clk_reg1 = (g_c033_data >> 2) & 0xf; break; default: halt_printf("Bad c033_data in CLK_IDLE: %02x\n", - c033_data); + g_c033_data); } } else { printf("clk read from IDLE mode!\n"); @@ -294,13 +283,13 @@ do_clock_data() case CLK_BRAM2: if(!read) { /* get more bits of bram addr */ - if((c033_data & 0x83) == 0x00) { + if((g_c033_data & 0x83) == 0x00) { /* more address bits */ - g_clk_reg1 |= ((c033_data >> 2) & 0x1f); + g_clk_reg1 |= ((g_c033_data >> 2) & 0x1f); g_clk_mode = CLK_BRAM1; } else { halt_printf("CLK_BRAM2: c033_data: %02x!\n", - c033_data); + g_c033_data); g_clk_mode = CLK_IDLE; } } else { @@ -313,9 +302,9 @@ do_clock_data() if(read) { if(g_clk_read) { /* Yup, read */ - c033_data = g_bram_ptr[g_clk_reg1]; + g_c033_data = g_bram_ptr[g_clk_reg1]; clk_printf("Reading BRAM loc %02x: %02x\n", - g_clk_reg1, c033_data); + g_clk_reg1, g_c033_data); } else { halt_printf("CLK_BRAM1: said wr, now read\n"); } @@ -325,8 +314,8 @@ do_clock_data() } else { /* Yup, write */ clk_printf("Writing BRAM loc %02x with %02x\n", - g_clk_reg1, c033_data); - g_bram_ptr[g_clk_reg1] = c033_data; + g_clk_reg1, g_c033_data); + g_bram_ptr[g_clk_reg1] = g_c033_data; g_config_kegs_update_needed = 1; } } @@ -337,20 +326,21 @@ do_clock_data() if(g_clk_read == 0) { halt_printf("Reading time, but in set mode!\n"); } - c033_data = (g_clk_cur_time >> (g_clk_reg1 * 8)) & 0xff; + g_c033_data = (g_clk_cur_time >> (g_clk_reg1 * 8)) & + 0xff; clk_printf("Returning time byte %d: %02x\n", - g_clk_reg1, c033_data); + g_clk_reg1, g_c033_data); } else { /* Write */ if(g_clk_read) { halt_printf("Write time, but in read mode!\n"); } clk_printf("Writing TIME loc %d with %02x\n", - g_clk_reg1, c033_data); + g_clk_reg1, g_c033_data); mask = 0xff << (8 * g_clk_reg1); g_clk_cur_time = (g_clk_cur_time & (~mask)) | - ((c033_data & 0xff) << (8 *g_clk_reg1)); + ((g_c033_data & 0xff) << (8 * g_clk_reg1)); } g_clk_mode = CLK_IDLE; break; @@ -361,24 +351,24 @@ do_clock_data() } else { switch(g_clk_reg1) { case 0x0: /* test register */ - if(c033_data & 0xc0) { + if(g_c033_data & 0xc0) { printf("Writing test reg: %02x!\n", - c033_data); + g_c033_data); /* set_halt(1); */ } break; case 0x1: /* write protect reg */ clk_printf("Writing clk wr_protect: %02x\n", - c033_data); - if(c033_data & 0x80) { + g_c033_data); + if(g_c033_data & 0x80) { printf("Stop, wr clk wr_prot: %02x\n", - c033_data); + g_c033_data); /* set_halt(1); */ } break; default: halt_printf("Writing int reg: %02x with %02x\n", - g_clk_reg1, c033_data); + g_clk_reg1, g_c033_data); } } g_clk_mode = CLK_IDLE; diff --git a/src/config.c b/src/config.c index b9987b1..b311c59 100644 --- a/src/config.c +++ b/src/config.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_config_c[] = "@(#)$KmKId: config.c,v 1.30 2003-11-21 16:38:53-05 kentd Exp $"; +const char rcsid_config_c[] = "@(#)$KmKId: config.c,v 1.50 2004-12-04 02:05:25-05 kentd Exp $"; #include "defc.h" #include @@ -21,11 +21,15 @@ extern Iwm iwm; extern int g_track_bytes_35[]; extern int g_track_nibs_35[]; -extern int g_apple35_sel; +extern int g_c031_disk35; extern int g_cur_a2_stat; extern byte *g_slow_memory_ptr; +extern byte *g_rom_fc_ff_ptr; +extern byte *g_rom_cards_ptr; extern double g_cur_dcycs; +extern int g_rom_version; +extern int g_fatal_log; extern word32 g_adb_repeat_vbl; @@ -33,8 +37,19 @@ extern int g_limit_speed; extern int g_force_depth; extern int g_raw_serial; extern int g_serial_out_masking; +extern int g_serial_modem[]; +extern word32 g_mem_size_base; extern word32 g_mem_size_exp; extern int g_video_line_update_interval; +extern int g_video_extra_check_inputs; +extern int g_user_halt_bad; +extern int g_joystick_type; +extern int g_joystick_scale_factor_x; +extern int g_joystick_scale_factor_y; +extern int g_joystick_trim_amount_x; +extern int g_joystick_trim_amount_y; +extern int g_swap_paddles; +extern int g_invert_paddles; extern int g_screen_index[]; extern word32 g_full_refresh_needed; @@ -46,7 +61,7 @@ extern int g_key_down; extern const char g_kegs_version_str[]; int g_config_control_panel = 0; -char g_config_kegs_name[256]; +char g_config_kegs_name[1024]; char g_cfg_cwd_str[CFG_PATH_MAX] = { 0 }; int g_config_kegs_auto_update = 1; @@ -58,10 +73,11 @@ const char *g_config_kegs_name_list[] = { int g_highest_smartport_unit = -1; int g_reparse_delay = 0; +int g_user_page2_shadow = 1; -byte g_save_text_screen_bytes[0x800]; -word32 g_save_cur_a2_stat = 0; -char g_cfg_printf_buf[CFG_PRINTF_BUFSIZE]; +byte g_save_text_screen_bytes[0x800]; +int g_save_cur_a2_stat = 0; +char g_cfg_printf_buf[CFG_PRINTF_BUFSIZE]; char g_config_kegs_buf[CONF_BUF_LEN]; word32 g_cfg_vbl_count = 0; @@ -78,6 +94,12 @@ int g_cfg_opts_vals[CFG_MAX_OPTS]; char g_cfg_opts_strs[CFG_MAX_OPTS][CFG_OPT_MAXSTR]; char g_cfg_opt_buf[CFG_OPT_MAXSTR]; +char *g_cfg_rom_path = "ROM"; +char *g_cfg_file_def_name = "Undefined"; +char **g_cfg_file_strptr = 0; +int g_cfg_file_min_size = 1024; +int g_cfg_file_max_size = 2047*1024*1024; + #define MAX_PARTITION_BLK_SIZE 65536 extern Cfg_menu g_cfg_main_menu[]; @@ -108,9 +130,58 @@ Cfg_menu g_cfg_disk_menu[] = { { 0, 0, 0, 0, 0 }, }; +Cfg_menu g_cfg_joystick_menu[] = { +{ "Joystick Configuration", g_cfg_joystick_menu, 0, 0, CFGTYPE_MENU }, +{ "Joystick Emulation,0,Keypad Joystick,1,Mouse Joystick,2,Native Joystick 1," + "3,Native Joystick 2", KNMP(g_joystick_type), CFGTYPE_INT }, +{ "Joystick Scale X,0x100,Standard,0x119,+10%,0x133,+20%," + "0x150,+30%,0xb0,-30%,0xcd,-20%,0xe7,-10%", + KNMP(g_joystick_scale_factor_x), CFGTYPE_INT }, +{ "Joystick Scale Y,0x100,Standard,0x119,+10%,0x133,+20%," + "0x150,+30%,0xb0,-30%,0xcd,-20%,0xe7,-10%", + KNMP(g_joystick_scale_factor_y), CFGTYPE_INT }, +{ "Joystick Trim X", KNMP(g_joystick_trim_amount_x), CFGTYPE_INT }, +{ "Joystick Trim Y", KNMP(g_joystick_trim_amount_y), CFGTYPE_INT }, +{ "Swap Joystick X and Y,0,Normal operation,1,Paddle 1 and Paddle 0 swapped", + KNMP(g_swap_paddles), CFGTYPE_INT }, +{ "Invert Joystick,0,Normal operation,1,Left becomes right and up becomes down", + KNMP(g_invert_paddles), CFGTYPE_INT }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +Cfg_menu g_cfg_rom_menu[] = { +{ "ROM File Selection", g_cfg_rom_menu, 0, 0, CFGTYPE_MENU }, +{ "ROM File", KNMP(g_cfg_rom_path), CFGTYPE_FILE }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + +Cfg_menu g_cfg_serial_menu[] = { +{ "Serial Port Configuration", g_cfg_serial_menu, 0, 0, CFGTYPE_MENU }, +{ "Serial Ports,0,Only use sockets 6501-6502,1,Use real ports if avail", + KNMP(g_raw_serial), CFGTYPE_INT }, +{ "Serial Output,0,Send full 8-bit data,1,Mask off high bit", + KNMP(g_serial_out_masking), CFGTYPE_INT }, +{ "Modem on port 0 (slot 1),0,Simple socket emulation mode,1,Modem with " + "incoming and outgoing emulation", KNMP(g_serial_modem[0]), + CFGTYPE_INT }, +{ "Modem on port 1 (slot 2),0,Simple socket emulation mode,1,Modem with " + "incoming and outgoing emulation", KNMP(g_serial_modem[1]), + CFGTYPE_INT }, +{ "", 0, 0, 0, 0 }, +{ "Back to Main Config", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, +{ 0, 0, 0, 0, 0 }, +}; + Cfg_menu g_cfg_main_menu[] = { { "KEGS Configuration", g_cfg_main_menu, 0, 0, CFGTYPE_MENU }, { "Disk Configuration", g_cfg_disk_menu, 0, 0, CFGTYPE_MENU }, +{ "Joystick Configuration", g_cfg_joystick_menu, 0, 0, CFGTYPE_MENU }, +{ "ROM File Selection", g_cfg_rom_menu, 0, 0, CFGTYPE_MENU }, +{ "Serial Port Configuration", g_cfg_serial_menu, 0, 0, CFGTYPE_MENU }, { "Force X-windows display depth", KNMP(g_force_depth), CFGTYPE_INT }, { "Auto-update config.kegs,0,Manual,1,Immediately", KNMP(g_config_kegs_auto_update), CFGTYPE_INT }, @@ -119,13 +190,16 @@ Cfg_menu g_cfg_main_menu[] = { { "Expansion Mem Size,0,0MB,0x100000,1MB,0x200000,2MB,0x300000,3MB," "0x400000,4MB,0x600000,6MB,0x800000,8MB,0xa00000,10MB,0xc00000,12MB," "0xe00000,14MB", KNMP(g_mem_size_exp), CFGTYPE_INT }, -{ "Serial Ports,0,Only use sockets 6501-6502,1,Use real ports if avail", - KNMP(g_raw_serial), CFGTYPE_INT }, -{ "Serial Output,0,Send full 8-bit data,1,Mask off high bit", - KNMP(g_serial_out_masking), CFGTYPE_INT }, { "3200 Color Enable,0,Auto (Full if fast enough),1,Full (Update every line)," "8,Off (Update video every 8 lines)", KNMP(g_video_line_update_interval), CFGTYPE_INT }, +{ "Keyboard and mouse poll rate,0,60 times per second,1,240 times per second", + KNMP(g_video_extra_check_inputs), CFGTYPE_INT }, +{ "Code Red Halts,0,Do not stop on bad accesses,1,Enter debugger on bad " + "accesses", KNMP(g_user_halt_bad), CFGTYPE_INT }, +{ "Enable Text Page 2 Shadow,0,Disabled on ROM 01 (matches real hardware)," + "1,Enabled on ROM 01 and 03", + KNMP(g_user_page2_shadow), CFGTYPE_INT }, { "Dump text screen to file", (void *)cfg_text_screen_dump, 0, 0, CFGTYPE_FUNC}, { "", 0, 0, 0, 0 }, { "Save changes to config.kegs", (void *)config_write_config_kegs_file, 0, 0, @@ -155,12 +229,68 @@ Cfg_listhdr g_cfg_partitionlist = { 0 }; int g_cfg_file_pathfield = 0; +const char *g_kegs_rom_names[] = { "ROM", "ROM", "ROM.01", "ROM.03", 0 }; + /* First entry is special--it will be overwritten by g_cfg_rom_path */ + +const char *g_kegs_c1rom_names[] = { 0 }; +const char *g_kegs_c2rom_names[] = { 0 }; +const char *g_kegs_c3rom_names[] = { 0 }; +const char *g_kegs_c4rom_names[] = { 0 }; +const char *g_kegs_c5rom_names[] = { 0 }; +const char *g_kegs_c6rom_names[] = { "c600.rom", "controller.rom", "disk.rom", + "DISK.ROM", "diskII.prom", 0 }; +const char *g_kegs_c7rom_names[] = { 0 }; + +const char **g_kegs_rom_card_list[8] = { + 0, g_kegs_c1rom_names, + g_kegs_c2rom_names, g_kegs_c3rom_names, + g_kegs_c4rom_names, g_kegs_c5rom_names, + g_kegs_c6rom_names, g_kegs_c7rom_names }; + +byte g_rom_c600_rom01_diffs[256] = { + 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xe2, 0x00, + 0xd0, 0x50, 0x0f, 0x77, 0x5b, 0xb9, 0xc3, 0xb1, + 0xb1, 0xf8, 0xcb, 0x4e, 0xb8, 0x60, 0xc7, 0x2e, + 0xfc, 0xe0, 0xbf, 0x1f, 0x66, 0x37, 0x4a, 0x70, + 0x55, 0x2c, 0x3c, 0xfc, 0xc2, 0xa5, 0x08, 0x29, + 0xac, 0x21, 0xcc, 0x09, 0x55, 0x03, 0x17, 0x35, + 0x4e, 0xe2, 0x0c, 0xe9, 0x3f, 0x9d, 0xc2, 0x06, + 0x18, 0x88, 0x0d, 0x58, 0x57, 0x6d, 0x83, 0x8c, + 0x22, 0xd3, 0x4f, 0x0a, 0xe5, 0xb7, 0x9f, 0x7d, + 0x2c, 0x3e, 0xae, 0x7f, 0x24, 0x78, 0xfd, 0xd0, + 0xb5, 0xd6, 0xe5, 0x26, 0x85, 0x3d, 0x8d, 0xc9, + 0x79, 0x0c, 0x75, 0xec, 0x98, 0xcc, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x39, 0x00, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, + 0x6c, 0x44, 0xce, 0x4c, 0x01, 0x08, 0x00, 0x00 +}; + + void config_init_menus(Cfg_menu *menuptr) { void *voidptr; const char *name_str; Cfg_defval *defptr; + char **str_ptr; + char *str; int type; int pos; int val; @@ -180,20 +310,30 @@ config_init_menus(Cfg_menu *menuptr) if(name_str != 0) { defptr = &(g_cfg_defvals[g_cfg_defval_index++]); if(g_cfg_defval_index >= CFG_MAX_DEFVALS) { - printf("CFG_MAX_DEFVAL overflow\n"); + fatal_printf("CFG_MAX_DEFVAL overflow\n"); my_exit(5); } defptr->menuptr = menuptr; defptr->intval = 0; + defptr->strval = 0; switch(type) { case CFGTYPE_INT: val = *((int *)voidptr); defptr->intval = val; menuptr->defptr = &(defptr->intval); break; + case CFGTYPE_FILE: + str_ptr = (char **)menuptr->ptr; + str = *str_ptr; + // We need to malloc this string since all + // string values must be dynamically alloced + defptr->strval = str; // this can have a copy + *str_ptr = kegs_malloc_str(str); + menuptr->defptr = &(defptr->strval); + break; default: - printf("name_str is %p = %s, but type: %d\n", - name_str, name_str, type); + fatal_printf("name_str is %p = %s, but type: " + "%d\n", name_str, name_str, type); my_exit(5); } } @@ -208,11 +348,15 @@ config_init_menus(Cfg_menu *menuptr) void config_init() { + int can_create; + config_init_menus(g_cfg_main_menu); // Find the config.kegs file + g_config_kegs_name[0] = 0; + can_create = 1; setup_kegs_file(&g_config_kegs_name[0], sizeof(g_config_kegs_name), 0, - &g_config_kegs_name_list[0]); + can_create, &g_config_kegs_name_list[0]); config_parse_config_kegs_file(); } @@ -221,7 +365,18 @@ void cfg_exit() { /* printf("In cfg exit\n"); */ - g_config_control_panel = 0; + if(g_rom_version >= 1) { + g_config_control_panel = 0; + } +} + +void +cfg_toggle_config_panel() +{ + g_config_control_panel = !g_config_control_panel; + if(g_rom_version < 0) { + g_config_control_panel = 1; /* Stay in config mode */ + } } void @@ -239,7 +394,8 @@ cfg_text_screen_dump() printf("Writing text screen to the file %s\n", filename); ofile = fopen(filename, "w"); if(ofile == 0) { - printf("fopen ret 0, errno: %d\n", errno); + fatal_printf("Could not write to file %s, (%d)\n", filename, + errno); return; } @@ -289,6 +445,7 @@ config_parse_option(char *buf, int pos, int len, int line) Cfg_menu *menuptr; Cfg_defval *defptr; char *nameptr; + char **strptr; int *iptr; int num_equals; int type; @@ -357,6 +514,13 @@ config_parse_option(char *buf, int pos, int len, int line) iptr = (int *)menuptr->ptr; *iptr = val; break; + case CFGTYPE_FILE: + strptr = (char **)menuptr->ptr; + if(strptr && *strptr) { + free(*strptr); + } + *strptr = kegs_malloc_str(&buf[pos]); + break; default: printf("Config file variable %s is unknown type: %d\n", nameptr, type); @@ -372,12 +536,14 @@ config_parse_bram(char *buf, int pos, int len) int val; if((len < (pos+5)) || (buf[pos+1] != '[') || (buf[pos+4] != ']')) { - printf("Malformed bram statement: %s\n", buf); + fatal_printf("While reading config.kegs, found malformed bram " + "statement: %s\n", buf); return; } bram_num = buf[pos] - '0'; if(bram_num != 1 && bram_num != 3) { - printf("Malformed bram number: %s\n", buf); + fatal_printf("While reading config.kegs, found bad bram " + "num: %s\n", buf); return; } @@ -397,6 +563,210 @@ config_parse_bram(char *buf, int pos, int len) } } +void +config_load_roms() +{ + struct stat stat_buf; + const char **names_ptr; + int more_than_8mb; + int changed_rom; + int len; + int fd; + int ret; + int i; + + g_rom_version = -1; + + /* set first entry of g_kegs_rom_names[] to g_cfg_rom_path so that */ + /* it becomes the first place searched. */ + g_kegs_rom_names[0] = g_cfg_rom_path; + setup_kegs_file(&g_cfg_tmp_path[0], CFG_PATH_MAX, -1, 0, + &g_kegs_rom_names[0]); + + if(g_cfg_tmp_path[0] == 0) { + // Just get out, let config interface select ROM + g_config_control_panel = 1; + return; + } + fd = open(&g_cfg_tmp_path[0], O_RDONLY | O_BINARY); + if(fd < 0) { + fatal_printf("Open ROM file %s failed:%d, errno:%d\n", + &g_cfg_tmp_path[0], fd, errno); + g_config_control_panel = 1; + return; + } + + ret = fstat(fd, &stat_buf); + if(ret != 0) { + fatal_printf("fstat returned %d on fd %d, errno: %d\n", + ret, fd, errno); + g_config_control_panel = 1; + return; + } + + len = stat_buf.st_size; + if(len == 128*1024) { + g_rom_version = 1; + g_mem_size_base = 256*1024; + memset(&g_rom_fc_ff_ptr[0], 0, 2*65536); + /* Clear banks fc and fd to 0 */ + ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len); + } else if(len == 256*1024) { + g_rom_version = 3; + g_mem_size_base = 1024*1024; + ret = read(fd, &g_rom_fc_ff_ptr[0], len); + } else { + fatal_printf("The ROM size should be 128K or 256K, this file " + "is %d bytes\n", len); + g_config_control_panel = 1; + return; + } + + printf("Read: %d bytes of ROM\n", ret); + if(ret != len) { + fatal_printf("errno: %d\n", errno); + g_config_control_panel = 1; + return; + } + close(fd); + + memset(&g_rom_cards_ptr[0], 0, 256*16); + + /* initialize c600 rom to be diffs from the real ROM, to build-in */ + /* Apple II compatibility without distributing ROMs */ + for(i = 0; i < 256; i++) { + g_rom_cards_ptr[0x600 + i] = g_rom_fc_ff_ptr[0x3c600 + i] ^ + g_rom_c600_rom01_diffs[i]; + } + if(g_rom_version >= 3) { + /* some patches */ + g_rom_cards_ptr[0x61b] ^= 0x40; + g_rom_cards_ptr[0x61c] ^= 0x33; + g_rom_cards_ptr[0x632] ^= 0xc0; + g_rom_cards_ptr[0x633] ^= 0x33; + } + + for(i = 1; i < 8; i++) { + names_ptr = g_kegs_rom_card_list[i]; + if(names_ptr == 0) { + continue; + } + if(*names_ptr == 0) { + continue; + } + + setup_kegs_file(&g_cfg_tmp_path[0], CFG_PATH_MAX, 1, 0, + names_ptr); + + if(g_cfg_tmp_path[0] != 0) { + fd = open(&(g_cfg_tmp_path[0]), O_RDONLY | O_BINARY); + if(fd < 0) { + fatal_printf("Open card ROM file %s failed: %d " + "err:%d\n", &g_cfg_tmp_path[0], fd, + errno); + continue; + } + + len = 256; + ret = read(fd, &g_rom_cards_ptr[i*0x100], len); + + if(ret != len) { + fatal_printf("While reading card ROM %s, file " + "is too short. (%d) Expected %d bytes, " + "read %d bytes\n", errno, len, ret); + continue; + } + close(fd); + } + } + + more_than_8mb = (g_mem_size_exp > 0x800000); + /* Only do the patch if users wants more than 8MB of expansion mem */ + + changed_rom = 0; + if(g_rom_version == 1) { + /* make some patches to ROM 01 */ +#if 0 + /* 1: Patch ROM selftest to not do speed test */ + printf("Patching out speed test failures from ROM 01\n"); + g_rom_fc_ff_ptr[0x3785a] = 0x18; + changed_rom = 1; +#endif + +#if 0 + /* 2: Patch ROM selftests not to do tests 2,4 */ + /* 0 = skip, 1 = do it, test 1 is bit 0 of LSByte */ + g_rom_fc_ff_ptr[0x371e9] = 0xf5; + g_rom_fc_ff_ptr[0x371ea] = 0xff; + changed_rom = 1; +#endif + + if(more_than_8mb) { + /* Geoff Weiss patch to use up to 14MB of RAM */ + g_rom_fc_ff_ptr[0x30302] = 0xdf; + g_rom_fc_ff_ptr[0x30314] = 0xdf; + g_rom_fc_ff_ptr[0x3031c] = 0x00; + changed_rom = 1; + } + + /* Patch ROM selftest to not do ROM cksum if any changes*/ + if(changed_rom) { + g_rom_fc_ff_ptr[0x37a06] = 0x18; + g_rom_fc_ff_ptr[0x37a07] = 0x18; + } + } else if(g_rom_version == 3) { + /* patch ROM 03 */ + printf("Patching ROM 03 smartport bug\n"); + /* 1: Patch Smartport code to fix a stupid bug */ + /* that causes it to write the IWM status reg into c036, */ + /* which is the system speed reg...it's "safe" since */ + /* IWM status reg bit 4 must be 0 (7MHz)..., otherwise */ + /* it might have turned on shadowing in all banks! */ + g_rom_fc_ff_ptr[0x357c9] = 0x00; + changed_rom = 1; + +#if 0 + /* patch ROM 03 to not to speed test */ + /* skip fast speed test */ + g_rom_fc_ff_ptr[0x36ad7] = 0x18; + g_rom_fc_ff_ptr[0x36ad8] = 0x18; + changed_rom = 1; +#endif + +#if 0 + /* skip slow speed test */ + g_rom_fc_ff_ptr[0x36ae7] = 0x18; + g_rom_fc_ff_ptr[0x36ae8] = 0x6b; + changed_rom = 1; +#endif + +#if 0 + /* 4: Patch ROM 03 selftests not to do tests 1-4 */ + g_rom_fc_ff_ptr[0x364a9] = 0xf0; + g_rom_fc_ff_ptr[0x364aa] = 0xff; + changed_rom = 1; +#endif + + /* ROM tests are in ff/6403-642x, where 6403 = addr of */ + /* test 1, etc. */ + + if(more_than_8mb) { + /* Geoff Weiss patch to use up to 14MB of RAM */ + g_rom_fc_ff_ptr[0x30b] = 0xdf; + g_rom_fc_ff_ptr[0x31d] = 0xdf; + g_rom_fc_ff_ptr[0x325] = 0x00; + changed_rom = 1; + } + + if(changed_rom) { + /* patch ROM 03 selftest to not do ROM cksum */ + g_rom_fc_ff_ptr[0x36cb0] = 0x18; + g_rom_fc_ff_ptr[0x36cb1] = 0x18; + } + + } +} + void config_parse_config_kegs_file() { @@ -433,10 +803,11 @@ config_parse_config_kegs_file() /* In any case, copy the directory path to g_cfg_cwd_str */ (void)getcwd(&g_cfg_cwd_str[0], CFG_PATH_MAX); - fconf = fopen(g_config_kegs_name, "rt"); + fconf = fopen(g_config_kegs_name, "r"); if(fconf == 0) { - printf("cannot open disk_conf! Stopping!\n"); - exit(3); + fatal_printf("cannot open config.kegs at %s! Stopping!\n", + g_config_kegs_name); + my_exit(3); } line = 0; @@ -553,8 +924,9 @@ config_parse_config_kegs_file() ret = fclose(fconf); if(ret != 0) { - printf("Closing disk_conf ret: %d, errno: %d\n", ret, errno); - exit(4); + fatal_printf("Closing config.kegs ret: %d, errno: %d\n", ret, + errno); + my_exit(4); } iwm_printf("Done parsing disk_conf file\n"); @@ -623,6 +995,7 @@ config_write_config_kegs_file() Disk *dsk; Cfg_defval *defptr; Cfg_menu *menuptr; + char *curstr, *defstr; int defval, curval; int type; int slot, drive; @@ -673,13 +1046,20 @@ config_write_config_kegs_file() menuptr = defptr->menuptr; defval = defptr->intval; type = menuptr->cfgtype; - if(type != CFGTYPE_INT) { - /* skip it */ - continue; + if(type == CFGTYPE_INT) { + curval = *((int *)menuptr->ptr); + if(curval != defval) { + fprintf(fconf, "%s = %d\n", menuptr->name_str, + curval); + } } - curval = *((int *)menuptr->ptr); - if(curval != defval) { - fprintf(fconf, "%s = %d\n", menuptr->name_str, curval); + if(type == CFGTYPE_FILE) { + curstr = *((char **)menuptr->ptr); + defstr = *((char **)menuptr->defptr); + if(strcmp(curstr, defstr) != 0) { + fprintf(fconf, "%s = %s\n", menuptr->name_str, + curstr); + } } } @@ -721,13 +1101,13 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, g_config_kegs_update_needed = 1; if((slot < 5) || (slot > 7)) { - printf("insert_disk: Invalid slot: %d\n", slot); + fatal_printf("Invalid slot for insertiing disk: %d\n", slot); return; } if(drive < 0 || ((slot == 7) && (drive >= MAX_C7_DISKS)) || ((slot < 7) && (drive > 1))) { - printf("insert_disk: Invalid drive: %d\n", drive); - return; + fatal_printf("Invalid drive for inserting disk: %d\n", drive); + return; } dsk = cfg_get_dsk_from_slot_drive(slot, drive); @@ -761,9 +1141,9 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, free(dsk->name_ptr); } - name_len = strlen(name) + 1; - name_ptr = (char *)malloc(name_len); - strncpy(name_ptr, name, name_len); + name_len = strlen(name); + name_ptr = (char *)malloc(name_len + 1); + strncpy(name_ptr, name, name_len + 1); dsk->name_ptr = name_ptr; dsk->partition_name = 0; @@ -786,22 +1166,24 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, dsk->fd = -1; can_write = 1; - if((name_len > 4) && (strcmp(&name_ptr[name_len - 4], ".gz") == 0)) { + if((name_len > 3) && (strcmp(&name_ptr[name_len - 3], ".gz") == 0)) { /* it's gzip'ed, try to gunzip it, then unlink the */ /* uncompressed file */ can_write = 0; - uncomp_ptr = (char *)malloc(name_len); - strncpy(uncomp_ptr, name_ptr, name_len); - uncomp_ptr[name_len - 4] = 0; + uncomp_ptr = (char *)malloc(name_len + 1); + strncpy(uncomp_ptr, name_ptr, name_len + 1); + uncomp_ptr[name_len - 3] = 0; - system_len = name_len + 200; + system_len = 2*name_len + 100; system_str = (char *)malloc(system_len + 1); snprintf(system_str, system_len, - "set -o noclobber;gunzip -c %s > %s", name_ptr, - uncomp_ptr); + "set -o noclobber;gunzip -c %c%s%c > %c%s%c", + 0x22, name_ptr, 0x22, + 0x22, uncomp_ptr, 0x22); + /* 0x22 are " to allow spaces in filenames */ printf("I am uncompressing %s into %s for mounting\n", name_ptr, uncomp_ptr); ret = system(system_str); @@ -816,6 +1198,9 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, } free(system_str); free(uncomp_ptr); + /* Reduce name_len by 3 so that subsequent compares for .po */ + /* look at the correct chars */ + name_len -= 3; } if(dsk->fd < 0 && can_write) { @@ -832,7 +1217,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, iwm_printf("open returned: %d\n", dsk->fd); if(dsk->fd < 0) { - printf("Disk image %s does not exist!\n", name_ptr); + fatal_printf("Disk image %s does not exist!\n", name_ptr); return; } @@ -846,6 +1231,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, save_track = dsk->cur_qtr_track; /* save arm position */ dsk->image_type = DSK_TYPE_PRODOS; + dsk->image_start = 0; /* See if it is in 2IMG format */ ret = read(dsk->fd, (char *)&buf_2img[0], 512); @@ -853,6 +1239,13 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, if(size <= 0) { size = cfg_get_fd_size(dsk->fd); } + + /* Try to guess that there is a Mac Binary header of 128 bytes */ + /* See if image size & 0xfff = 0x080 which indicates extra 128 bytes */ + if((size & 0xfff) == 0x080) { + printf("Assuming Mac Binary header on %s\n", dsk->name_ptr); + dsk->image_start += 0x80; + } image_identified = 0; if(buf_2img[0] == '2' && buf_2img[1] == 'I' && buf_2img[2] == 'M' && buf_2img[3] == 'G') { @@ -883,16 +1276,6 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, // Byte reversed 0x0c8000 size = 0x0c8000; } - if(size == 0) { - /* From KEGS-OS-X: Gilles Tschopp: */ - /* deal with corrupted 2IMG files */ - printf("Bernie corrupted size to 0...working around\n"); - - /* Just get the full size, and subtract 64, and */ - /* then round down to lower 0x1000 boundary */ - size = cfg_get_fd_size(dsk->fd) - 64; - size = size & -0x1000; - } dsk->image_start = unix_pos; dsk->image_size = size; } @@ -909,32 +1292,31 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, printf("Image named %s is in Mac diskcopy format\n", dsk->name_ptr); image_identified = 1; - dsk->image_start = 0x54; + dsk->image_start += 0x54; dsk->image_size = exp_size; dsk->image_type = DSK_TYPE_PRODOS; /* ProDOS */ } } if(!image_identified) { /* Assume raw image */ - dsk->image_start = 0; dsk->image_size = size; dsk->image_type = DSK_TYPE_PRODOS; if(dsk->disk_525) { dsk->image_type = DSK_TYPE_DOS33; - if(name_len >= 5) { - cmp_o = dsk->name_ptr[name_len-2]; - cmp_p = dsk->name_ptr[name_len-3]; - cmp_dot = dsk->name_ptr[name_len-4]; + if(name_len >= 4) { + cmp_o = dsk->name_ptr[name_len-1]; + cmp_p = dsk->name_ptr[name_len-2]; + cmp_dot = dsk->name_ptr[name_len-3]; if(cmp_dot == '.' && (cmp_p == 'p' || cmp_p == 'P') && (cmp_o == 'o' || cmp_o == 'O')) { dsk->image_type = DSK_TYPE_PRODOS; } - cmp_b = dsk->name_ptr[name_len-2]; - cmp_i = dsk->name_ptr[name_len-3]; - cmp_n = dsk->name_ptr[name_len-4]; - cmp_dot = dsk->name_ptr[name_len-5]; + cmp_b = dsk->name_ptr[name_len-1]; + cmp_i = dsk->name_ptr[name_len-2]; + cmp_n = dsk->name_ptr[name_len-3]; + cmp_dot = dsk->name_ptr[name_len-4]; if(cmp_dot == '.' && (cmp_n == 'n' || cmp_n == 'N') && (cmp_i == 'i' || cmp_i == 'I') && @@ -949,6 +1331,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, dsk->disk_dirty = 0; dsk->nib_pos = 0; + dsk->trks = 0; if(dsk->smartport) { g_highest_smartport_unit = MAX(dsk->drive, @@ -967,12 +1350,12 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, } } iwm_printf("adding smartport device[%d], size:%08x, " - "img_sz:%08x\n", dsk->drive, dsk->tracks[0].unix_len, + "img_sz:%08x\n", dsk->drive, dsk->trks[0].unix_len, dsk->image_size); } else if(dsk->disk_525) { unix_pos = dsk->image_start; size = dsk->image_size; - dsk->num_tracks = 4*35; + disk_set_num_tracks(dsk, 4*35); len = 0x1000; nibs = NIB_LEN_525; if(dsk->image_type == DSK_TYPE_NIB) { @@ -980,8 +1363,8 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, nibs = len; } if(size != 35*len) { - printf("Disk 5.25 error: size is %d, not %d\n",size, - 35*len); + fatal_printf("Disk 5.25 error: size is %d, not 140K. " + "Will try to mount anyway\n", size, 35*len); } for(i = 0; i < 35; i++) { iwm_move_to_track(dsk, 4*i); @@ -993,9 +1376,10 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, unix_pos = dsk->image_start; size = dsk->image_size; if(size != 800*1024) { - printf("Disk 3.5 error: size is %d, not 800K\n", size); + fatal_printf("Disk 3.5 error: size is %d, not 800K. " + "Will try to mount anyway\n", size); } - dsk->num_tracks = 2*80; + disk_set_num_tracks(dsk, 2*80); for(i = 0; i < 2*80; i++) { iwm_move_to_track(dsk, i); len = g_track_bytes_35[i >> 5]; @@ -1005,7 +1389,7 @@ insert_disk(int slot, int drive, const char *name, int ejected, int force_size, disk_unix_to_nib(dsk, i, unix_pos, len, nibs); unix_pos += len; - iwm_printf(" trk_len:%05x\n",dsk->tracks[i].track_len); + iwm_printf(" trk_len:%05x\n", dsk->trks[i].track_len); } } @@ -1059,7 +1443,7 @@ eject_disk(Disk *dsk) g_config_kegs_update_needed = 1; motor_on = iwm.motor_on; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { motor_on = iwm.motor_on35; } if(motor_on) { @@ -1073,14 +1457,18 @@ eject_disk(Disk *dsk) /* Free all memory, close file */ /* free the tracks first */ - for(i = 0; i < dsk->num_tracks; i++) { - if(dsk->tracks[i].nib_area) { - free(dsk->tracks[i].nib_area); + if(dsk->trks != 0) { + for(i = 0; i < dsk->num_tracks; i++) { + if(dsk->trks[i].nib_area) { + free(dsk->trks[i].nib_area); + } + dsk->trks[i].nib_area = 0; + dsk->trks[i].track_len = 0; } - dsk->tracks[i].nib_area = 0; - dsk->tracks[i].track_len = 0; + free(dsk->trks); } dsk->num_tracks = 0; + dsk->trks = 0; /* close file, clean up dsk struct */ close(dsk->fd); @@ -1232,7 +1620,8 @@ cfg_partition_make_list(int fd) GET_BE_WORD32(part_map_ptr->map_blk_cnt)); } if(sig != 0x504d) { - printf("Partition entry %d bad sig\n", cur_blk); + printf("Partition entry %d bad signature:%04x\n", + cur_blk, sig); free(blk_bufptr); return g_cfg_partitionlist.last; } @@ -1279,7 +1668,7 @@ cfg_maybe_insert_disk(int slot, int drive, const char *namestr) fd = open(namestr, O_RDONLY | O_BINARY, 0x1b6); if(fd < 0) { - printf("Cannot open: %s\n", namestr); + fatal_printf("Cannot open disk image: %s\n", namestr); return 0; } @@ -1485,10 +1874,12 @@ cfg_get_disk_name(char *outstr, int maxlen, int type_ext, int with_extras) } void -cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change) +cfg_parse_menu(Cfg_menu *menuptr, int menu_pos, int highlight_pos, int change) { char valbuf[CFG_OPT_MAXSTR]; + char **str_ptr; const char *menustr; + char *curstr, *defstr; char *str; char *outstr; int *iptr; @@ -1511,10 +1902,10 @@ cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change) opt_get_str = 0; separator = ','; - menu_ptr += menu_pos; /* move forward to entry menu_pos */ + menuptr += menu_pos; /* move forward to entry menu_pos */ - menustr = menu_ptr->str; - type = menu_ptr->cfgtype; + menustr = menuptr->str; + type = menuptr->cfgtype; type_ext = (type >> 4); type = type & 0xf; len = strlen(menustr) + 1; @@ -1594,21 +1985,40 @@ cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change) // Figure out if we should get a checkmark curval = -1; defval = -1; + curstr = 0; if(type == CFGTYPE_INT) { - iptr = menu_ptr->ptr; + iptr = menuptr->ptr; curval = *iptr; - iptr = menu_ptr->defptr; + iptr = menuptr->defptr; defval = *iptr; if(curval == defval) { g_cfg_opt_buf[3] = 'D'; /* checkmark */ g_cfg_opt_buf[4] = '\t'; } } + if(type == CFGTYPE_FILE) { + str_ptr = (char **)menuptr->ptr; + curstr = *str_ptr; + str_ptr = (char **)menuptr->defptr; + defstr = *str_ptr; + if(strcmp(curstr,defstr) == 0) { + g_cfg_opt_buf[3] = 'D'; /* checkmark */ + g_cfg_opt_buf[4] = '\t'; + } + } + + // If it's a menu, give it a special menu indicator + if(type == CFGTYPE_MENU) { + g_cfg_opt_buf[1] = '\t'; + g_cfg_opt_buf[2] = 'M'; /* return-like symbol */ + g_cfg_opt_buf[3] = '\t'; + g_cfg_opt_buf[4] = ' '; + } // Decide what to display on the "right" side str = 0; opt_num = -1; - if(type == CFGTYPE_INT) { + if(type == CFGTYPE_INT || type == CFGTYPE_FILE) { g_cfg_opt_buf[bufpos++] = ' '; g_cfg_opt_buf[bufpos++] = '='; g_cfg_opt_buf[bufpos++] = ' '; @@ -1636,7 +2046,7 @@ cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change) curval += change; /* HACK: min_val, max_val testing here */ } - iptr = (int *)menu_ptr->ptr; + iptr = (int *)menuptr->ptr; *iptr = curval; } g_config_kegs_update_needed = 1; @@ -1657,7 +2067,11 @@ cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change) } else if (type == CFGTYPE_DISK) { str = &(g_cfg_opts_strs[0][0]), cfg_get_disk_name(str, CFG_OPT_MAXSTR, type_ext, 1); - str = cfg_shorten_filename(str, 70); + str = cfg_shorten_filename(str, 68); + } else if (type == CFGTYPE_FILE) { + str = &(g_cfg_opts_strs[0][0]); + snprintf(str, CFG_OPT_MAXSTR, "%s", curstr); + str = cfg_shorten_filename(str, 68); } else { str = ""; } @@ -1776,25 +2190,32 @@ cfg_file_init() int slot, drive; int i; - cfg_get_disk_name(&g_cfg_tmp_path[0], CFG_PATH_MAX, g_cfg_slotdrive, 0); - - slot = g_cfg_slotdrive >> 8; - drive = g_cfg_slotdrive & 1; - for(i = 0; i < 6; i++) { - if(g_cfg_tmp_path[0] != 0) { - break; - } - /* try to get a starting path from some mounted drive */ - drive = !drive; - if(i & 1) { - slot++; - if(slot >= 8) { - slot = 5; - } - } + if(g_cfg_slotdrive < 0xfff) { cfg_get_disk_name(&g_cfg_tmp_path[0], CFG_PATH_MAX, + g_cfg_slotdrive, 0); + + slot = g_cfg_slotdrive >> 8; + drive = g_cfg_slotdrive & 1; + for(i = 0; i < 6; i++) { + if(g_cfg_tmp_path[0] != 0) { + break; + } + /* try to get a starting path from some mounted drive */ + drive = !drive; + if(i & 1) { + slot++; + if(slot >= 8) { + slot = 5; + } + } + cfg_get_disk_name(&g_cfg_tmp_path[0], CFG_PATH_MAX, (slot << 8) + drive, 0); + } + } else { + // Just use g_cfg_file_def_name + strncpy(&g_cfg_tmp_path[0], g_cfg_file_def_name, CFG_PATH_MAX); } + cfg_get_base_path(&g_cfg_file_curpath[0], &g_cfg_tmp_path[0], 0); g_cfg_dirlist.invalid = 1; } @@ -1861,11 +2282,17 @@ int cfg_dirent_sortfn(const void *obj1, const void *obj2) { const Cfg_dirent *direntptr1, *direntptr2; + int ret; /* Called by qsort to sort directory listings */ direntptr1 = (const Cfg_dirent *)obj1; direntptr2 = (const Cfg_dirent *)obj2; - return strcmp(direntptr1->name, direntptr2->name); +#if defined(MAC) || defined(_WIN32) + ret = strcasecmp(direntptr1->name, direntptr2->name); +#else + ret = strcmp(direntptr1->name, direntptr2->name); +#endif + return ret; } int @@ -1906,6 +2333,7 @@ cfg_file_readdir(const char *pathptr) mode_t fmt; char *str; const char *tmppathptr; + int size; int ret; int is_dir, is_gz; int len; @@ -1989,15 +2417,25 @@ cfg_file_readdir(const char *pathptr) printf("stat %s ret %d, errno:%d\n", &g_cfg_tmp_path[0], ret, errno); stat_buf.st_size = 0; + continue; /* skip it */ } else { fmt = stat_buf.st_mode & S_IFMT; + size = stat_buf.st_size; if(fmt == S_IFDIR) { /* it's a directory */ is_dir = 1; - } else if((fmt == S_IFREG) && (is_gz == 0) && - (stat_buf.st_size < 140*1024)) { - /* skip it */ - continue; + } else if((fmt == S_IFREG) && (is_gz == 0)) { + if(g_cfg_slotdrive < 0xfff) { + if(size < 140*1024) { + continue; /* skip it */ + } + } else { + /* see if there are size limits */ + if((size < g_cfg_file_min_size) || + (size > g_cfg_file_max_size)) { + continue; /* skip it */ + } + } } } cfg_file_add_dirent(&g_cfg_dirlist, direntptr->d_name, is_dir, @@ -2097,7 +2535,7 @@ cfg_file_draw() for(y = 0; y < 21; y++) { cfg_htab_vtab(0, y); cfg_printf("\tZ\t"); - for(x = 1; x < 72; x++) { + for(x = 1; x < 79; x++) { cfg_htab_vtab(x, y); cfg_putchar(' '); } @@ -2110,17 +2548,23 @@ cfg_file_draw() for(x = 1; x < 79; x++) { cfg_putchar(' '); } - cfg_htab_vtab(30, 0); - cfg_printf("\bSelect image for s%dd%d\b", (g_cfg_slotdrive >> 8), - (g_cfg_slotdrive & 0xff) + 1); + if(g_cfg_slotdrive < 0xfff) { + cfg_htab_vtab(30, 0); + cfg_printf("\bSelect image for s%dd%d\b", + (g_cfg_slotdrive >> 8), (g_cfg_slotdrive & 0xff) + 1); + } else { + cfg_htab_vtab(5, 0); + cfg_printf("\bSelect file to use as %-40s\b", + cfg_shorten_filename(g_cfg_file_def_name, 40)); + } cfg_htab_vtab(2, 1); - cfg_printf("Current KEGS directory: %-50s", - cfg_shorten_filename(&g_cfg_cwd_str[0], 50)); + cfg_printf("config.kegs path: %-56s", + cfg_shorten_filename(&g_config_kegs_name[0], 56)); cfg_htab_vtab(2, 2); - cfg_printf("config.kegs path: %-50s", - cfg_shorten_filename(&g_config_kegs_name[0], 50)); + cfg_printf("Current KEGS directory: %-50s", + cfg_shorten_filename(&g_cfg_cwd_str[0], 50)); cfg_htab_vtab(2, 3); @@ -2129,7 +2573,7 @@ cfg_file_draw() str = "\b \b"; } cfg_printf("Path: %s%s", - cfg_shorten_filename(&g_cfg_file_curpath[0], 64), str); + cfg_shorten_filename(&g_cfg_file_curpath[0], 68), str); cfg_htab_vtab(0, 4); cfg_printf(" \t"); @@ -2184,7 +2628,7 @@ cfg_file_draw() } } - cfg_htab_vtab(1, 21); + cfg_htab_vtab(1, 5 + CFG_NUM_SHOWENTS); cfg_putchar('\t'); for(x = 1; x < 79; x++) { cfg_putchar('L'); @@ -2226,6 +2670,28 @@ cfg_partition_selected() g_cfg_select_partition = -1; } +void +cfg_file_update_ptr(char *str) +{ + char *newstr; + int len; + + len = strlen(str) + 1; + newstr = malloc(len); + memcpy(newstr, str, len); + if(g_cfg_file_strptr) { + if(*g_cfg_file_strptr) { + free(*g_cfg_file_strptr); + } + } + *g_cfg_file_strptr = newstr; + if(g_cfg_file_strptr == &(g_cfg_rom_path)) { + printf("Updated ROM file\n"); + load_roms_init_memory(); + } + g_config_kegs_update_needed = 1; +} + void cfg_file_selected() { @@ -2272,15 +2738,22 @@ cfg_file_selected() CFG_PATH_MAX); } else { /* select it */ - ret = cfg_maybe_insert_disk(g_cfg_slotdrive >> 8, - g_cfg_slotdrive & 0xff, &g_cfg_file_path[0]); - if(ret > 0) { + if(g_cfg_slotdrive < 0xfff) { + ret = cfg_maybe_insert_disk(g_cfg_slotdrive>>8, + g_cfg_slotdrive & 0xff, + &g_cfg_file_path[0]); + if(ret > 0) { + g_cfg_slotdrive = -1; + } + } else { + cfg_file_update_ptr(&g_cfg_file_path[0]); g_cfg_slotdrive = -1; } } } } + void cfg_file_handle_key(int key) { @@ -2312,7 +2785,10 @@ cfg_file_handle_key(int key) switch(key) { case 0x1b: - eject_disk_by_num(g_cfg_slotdrive >> 8, g_cfg_slotdrive & 0xff); + if(g_cfg_slotdrive < 0xfff) { + eject_disk_by_num(g_cfg_slotdrive >> 8, + g_cfg_slotdrive & 0xff); + } g_cfg_slotdrive = -1; g_cfg_select_partition = -1; g_cfg_dirlist.invalid = 1; @@ -2330,6 +2806,7 @@ cfg_file_handle_key(int key) } break; case 0x0d: /* return */ + printf("handling return press\n"); cfg_file_selected(); break; case 0x09: /* tab */ @@ -2359,7 +2836,7 @@ config_control_panel() { void (*fn_ptr)(); const char *str; - Cfg_menu *menu_ptr; + Cfg_menu *menuptr; void *ptr; int print_eject_help; int line; @@ -2371,7 +2848,7 @@ config_control_panel() int key; int i, j; - // First, save key text info + // First, save important text screen state g_save_cur_a2_stat = g_cur_a2_stat; for(i = 0; i < 0x400; i++) { g_save_text_screen_bytes[i] = g_slow_memory_ptr[0x400+i]; @@ -2386,6 +2863,7 @@ config_control_panel() cfg_printf("In config_control_panel\n"); for(i = 0; i < 20; i++) { + // Toss any queued-up keypresses if(adb_read_c000() & 0x80) { (void)adb_access_c010(); } @@ -2400,30 +2878,37 @@ config_control_panel() cfg_home(); j = 0; - menu_ptr = g_cfg_main_menu; + menuptr = g_cfg_main_menu; + if(g_rom_version < 0) { + /* Must select ROM file */ + menuptr = g_cfg_rom_menu; + } menu_line = 1; menu_inc = 1; g_cfg_slotdrive = -1; g_cfg_select_partition = -1; while(g_config_control_panel) { + if(g_fatal_log > 0) { + x_show_alert(0, 0); + } cfg_home(); line = 1; max_line = 1; match_found = 0; print_eject_help = 0; - cfg_printf("%s\n\n", menu_ptr[0].str); + cfg_printf("%s\n\n", menuptr[0].str); while(line < 24) { - str = menu_ptr[line].str; - type = menu_ptr[line].cfgtype; - ptr = menu_ptr[line].ptr; + str = menuptr[line].str; + type = menuptr[line].cfgtype; + ptr = menuptr[line].ptr; if(str == 0) { break; } if((type & 0xf) == CFGTYPE_DISK) { print_eject_help = 1; } - cfg_parse_menu(menu_ptr, line, menu_line, 0); + cfg_parse_menu(menuptr, line, menu_line, 0); if(line == menu_line) { if(type != 0) { match_found = 1; @@ -2447,6 +2932,11 @@ config_control_panel() menu_line = max_line; } + if(g_rom_version < 0) { + cfg_htab_vtab(0, 21); + cfg_printf("\bYOU MUST SELECT A VALID ROM FILE\b\n"); + } + cfg_htab_vtab(0, 23); cfg_printf("Move: \tJ\t \tK\t Change: \tH\t \tU\t \tM\t"); if(print_eject_help) { @@ -2501,17 +2991,17 @@ config_control_panel() } break; case 0x15: /* right arrow */ - cfg_parse_menu(menu_ptr, menu_line,menu_line,1); + cfg_parse_menu(menuptr, menu_line,menu_line,1); break; case 0x08: /* left arrow */ - cfg_parse_menu(menu_ptr,menu_line,menu_line,-1); + cfg_parse_menu(menuptr,menu_line,menu_line,-1); break; case 0x0d: - type = menu_ptr[menu_line].cfgtype; - ptr = menu_ptr[menu_line].ptr; + type = menuptr[menu_line].cfgtype; + ptr = menuptr[menu_line].ptr; switch(type & 0xf) { case CFGTYPE_MENU: - menu_ptr = (Cfg_menu *)ptr; + menuptr = (Cfg_menu *)ptr; menu_line = 1; break; case CFGTYPE_DISK: @@ -2522,6 +3012,11 @@ config_control_panel() fn_ptr = (void (*)())ptr; (*fn_ptr)(); break; + case CFGTYPE_FILE: + g_cfg_slotdrive = 0xfff; + g_cfg_file_def_name = *((char **)ptr); + g_cfg_file_strptr = (char **)ptr; + cfg_file_init(); } break; case 0x1b: @@ -2530,7 +3025,7 @@ config_control_panel() break; case 'e': case 'E': - type = menu_ptr[menu_line].cfgtype; + type = menuptr[menu_line].cfgtype; if((type & 0xf) == CFGTYPE_DISK) { eject_disk_by_num(type >> 12, (type >> 4) & 0xff); diff --git a/src/config.h b/src/config.h index 06106dc..9fa04fd 100644 --- a/src/config.h +++ b/src/config.h @@ -1,6 +1,6 @@ /************************************************************************/ /* KEGS: Apple //gs Emulator */ -/* Copyright 2003 by Kent Dickey */ +/* Copyright 2003-2004 by Kent Dickey */ /* */ /* This code is covered by the GNU GPL */ /* */ @@ -9,7 +9,7 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_config_h[] = "@(#)$KmKId: config.h,v 1.8 2003-10-17 15:09:58-04 kentd Exp $"; +const char rcsid_config_h[] = "@(#)$KmKId: config.h,v 1.9 2004-11-12 23:10:28-05 kentd Exp $"; #endif #define CONF_BUF_LEN 1024 @@ -24,6 +24,7 @@ const char rcsid_config_h[] = "@(#)$KmKId: config.h,v 1.8 2003-10-17 15:09:58-04 #define CFGTYPE_INT 2 #define CFGTYPE_DISK 3 #define CFGTYPE_FUNC 4 +#define CFGTYPE_FILE 5 /* CFGTYPE limited to just 4 bits: 0-15 */ /* Cfg_menu, Cfg_dirent and Cfg_listhdr are defined in defc.h */ @@ -31,4 +32,5 @@ const char rcsid_config_h[] = "@(#)$KmKId: config.h,v 1.8 2003-10-17 15:09:58-04 STRUCT(Cfg_defval) { Cfg_menu *menuptr; int intval; + char *strval; }; diff --git a/src/defc.h b/src/defc.h index 1596fe9..1afeb13 100644 --- a/src/defc.h +++ b/src/defc.h @@ -9,7 +9,7 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_defc_h[] = "@(#)$KmKId: defc.h,v 1.91 2003-11-03 01:29:38-05 kentd Exp $"; +const char rcsid_defc_h[] = "@(#)$KmKId: defc.h,v 1.100 2004-11-09 02:02:07-05 kentd Exp $"; #endif #include "defcomm.h" @@ -34,7 +34,10 @@ void U_STACK_TRACE(); #define DCYCS_1_MHZ ((DCYCS_28_MHZ/28.0)*(65.0*7/(65.0*7+1.0))) #define CYCS_1_MHZ ((int)DCYCS_1_MHZ) -#define DCYCS_IN_16MS_RAW (DCYCS_1_MHZ / 60.0) +/* #define DCYCS_IN_16MS_RAW (DCYCS_1_MHZ / 60.0) */ +#define DCYCS_IN_16MS_RAW (262.0 * 65.0) +/* Use precisely 17030 instead of forcing 60 Hz since this is the number of */ +/* 1MHz cycles per screen */ #define DCYCS_IN_16MS ((double)((int)DCYCS_IN_16MS_RAW)) #define DRECIP_DCYCS_IN_16MS (1.0 / (DCYCS_IN_16MS)) @@ -70,6 +73,7 @@ void U_STACK_TRACE(); #include #include #include +#include #ifdef HPUX # include /* for GET_ITIMER */ #endif @@ -93,6 +97,13 @@ STRUCT(Pc_log) { word32 pad; }; +STRUCT(Data_log) { + double dcycs; + word32 addr; + word32 val; + word32 size; +}; + STRUCT(Event) { double dcycs; int type; @@ -167,6 +178,21 @@ STRUCT(Cfg_listhdr) { int num_to_show; }; +STRUCT(Emustate_intlist) { + const char *str; + int *iptr; +}; + +STRUCT(Emustate_dbllist) { + const char *str; + double *dptr; +}; + +STRUCT(Emustate_word32list) { + const char *str; + word32 *wptr; +}; + #ifdef __LP64__ # define PTR2WORD(a) ((unsigned long)(a)) #else @@ -174,14 +200,38 @@ STRUCT(Cfg_listhdr) { #endif -#define ALTZP (statereg & 0x80) -#define PAGE2 (statereg & 0x40) -#define RAMRD (statereg & 0x20) -#define RAMWRT (statereg & 0x10) -#define RDROM (statereg & 0x08) -#define LCBANK2 (statereg & 0x04) -#define ROMB (statereg & 0x02) -#define INTCX (statereg & 0x01) +#define ALTZP (g_c068_statereg & 0x80) +/* #define PAGE2 (g_c068_statereg & 0x40) */ +#define RAMRD (g_c068_statereg & 0x20) +#define RAMWRT (g_c068_statereg & 0x10) +#define RDROM (g_c068_statereg & 0x08) +#define LCBANK2 (g_c068_statereg & 0x04) +#define ROMB (g_c068_statereg & 0x02) +#define INTCX (g_c068_statereg & 0x01) + +#define C041_EN_25SEC_INTS 0x10 +#define C041_EN_VBL_INTS 0x08 +#define C041_EN_SWITCH_INTS 0x04 +#define C041_EN_MOVE_INTS 0x02 +#define C041_EN_MOUSE 0x01 + +/* WARNING: SCC1 and SCC0 interrupts must be in this order for scc.c */ +/* This order matches the SCC hardware */ +#define IRQ_PENDING_SCC1_ZEROCNT 0x00001 +#define IRQ_PENDING_SCC1_TX 0x00002 +#define IRQ_PENDING_SCC1_RX 0x00004 +#define IRQ_PENDING_SCC0_ZEROCNT 0x00008 +#define IRQ_PENDING_SCC0_TX 0x00010 +#define IRQ_PENDING_SCC0_RX 0x00020 +#define IRQ_PENDING_C023_SCAN 0x00100 +#define IRQ_PENDING_C023_1SEC 0x00200 +#define IRQ_PENDING_C046_25SEC 0x00400 +#define IRQ_PENDING_C046_VBL 0x00800 +#define IRQ_PENDING_ADB_KBD_SRQ 0x01000 +#define IRQ_PENDING_ADB_DATA 0x02000 +#define IRQ_PENDING_ADB_MOUSE 0x04000 +#define IRQ_PENDING_DOC 0x08000 + #define EXTRU(val, pos, len) \ ( ( (len) >= (pos) + 1) ? ((val) >> (31-(pos))) : \ diff --git a/src/defcomm.h b/src/defcomm.h index 7de1042..68d8092 100644 --- a/src/defcomm.h +++ b/src/defcomm.h @@ -9,11 +9,9 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsdif_defcomm_h[] = "@(#)$KmKId: defcomm.h,v 1.93 2002-11-19 03:10:38-05 kadickey Exp $"; +const char rcsdif_defcomm_h[] = "@(#)$KmKId: defcomm.h,v 1.94 2004-10-13 21:53:44-04 kentd Exp $"; #endif -#define USE_XIMAGE_CHANGED - #if 0 # define CHECK_BREAKPOINTS #endif @@ -61,25 +59,6 @@ const char rcsdif_defcomm_h[] = "@(#)$KmKId: defcomm.h,v 1.93 2002-11-19 03:10:3 #define BANK_BAD_MEM (&g_dummy_memory1_ptr[0xff]) -#define LEN_FIFO_BUF 160 -#define LEN_KBD_BUF 160 - -#define FIFO_OK 0x1 -#define FIFO_INIT 0x2 -#define FIFO_END 0x3 -#define FIFO_40COLS 0x4 -#define FIFO_80COLS 0x5 -#define FIFO_SENDCHAR 0x6 -#define FIFO_SENDKEY 0x7 -#define FIFO_REFRESH 0x8 - -#define B_OP_SIZE 2 -#define B_OP_D_SIZE 5 -#define B_OP_DTYPE 12 -#define SIZE_OP_DTYPE 7 - - - #define ENGINE_FCYCLES 0x00 #define ENGINE_REG_KPC 0x08 #define ENGINE_REG_ACC 0x0c @@ -189,12 +168,3 @@ const char rcsdif_defcomm_h[] = "@(#)$KmKId: defcomm.h,v 1.93 2002-11-19 03:10:3 #define A2_BORDER_COLOR_NUM 0xfe -#if 0 -#define A2_TEXT_COLOR_ALT_NUM 0x01 -#define A2_BG_COLOR_ALT_NUM 0x00 -#define A2_TEXT_COLOR_PRIM_NUM 0x02 -#define A2_BG_COLOR_PRIM_NUM 0x00 -#define A2_TEXT_COLOR_FLASH_NUM 0x0c -#define A2_BG_COLOR_FLASH_NUM 0x08 -#endif - diff --git a/src/dis.c b/src/dis.c index 352f135..75b9a27 100644 --- a/src/dis.c +++ b/src/dis.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_dis_c[] = "@(#)$KmKId: dis.c,v 1.90 2003-11-18 17:35:30-05 kentd Exp $"; +const char rcsid_dis_c[] = "@(#)$KmKId: dis.c,v 1.103 2004-11-24 16:41:41-05 kentd Exp $"; #include #include "defc.h" @@ -20,19 +20,16 @@ const char rcsid_dis_c[] = "@(#)$KmKId: dis.c,v 1.90 2003-11-18 17:35:30-05 kent extern byte *g_memory_ptr; extern byte *g_slow_memory_ptr; -extern byte *g_rom_fc_ff_ptr; -extern byte *g_rom_cards_ptr; -extern word32 g_mem_size_base, g_mem_size_exp; extern int halt_sim; extern int enter_debug; -extern int statereg; +extern int g_c068_statereg; extern word32 stop_run_at; -extern int stop_on_c03x; extern int Verbose; extern int Halt_on; -extern int g_rom_version; extern int g_testing_enabled; +extern int g_fullscreen; +extern int g_config_control_panel; int g_num_breakpoints = 0; word32 g_breakpts[MAX_BREAK_POINTS]; @@ -48,8 +45,9 @@ int g_stepping = 0; word32 list_kpc; int hex_line_len; -word32 a1,a2,a3,a4; -int a1bank, a2bank, a3bank, a4bank; +word32 a1,a2,a3; +word32 g_a4, g_a4bank; +int a1bank, a2bank, a3bank; char *line_ptr; int mode,old_mode; int got_num; @@ -154,9 +152,11 @@ do_debug_intfc() int done; int ret_val; + g_config_control_panel = 1; + hex_line_len = 0x10; - a1 = 0; a2 = 0; a3 = 0; a4 = 0; - a1bank = 0; a2bank = 0; a3bank = 0; a4bank = 0; + a1 = 0; a2 = 0; a3 = 0; g_a4 = 0; + a1bank = 0; a2bank = 0; a3bank = 0; g_a4bank = 0; list_kpc = engine.kpc; g_stepping = 0; mode = 0; old_mode = 0; @@ -164,6 +164,8 @@ do_debug_intfc() stop_run_at = -1; x_auto_repeat_on(0); + g_fullscreen = 0; + x_full_screen(0); if(g_quit_sim_now) { printf("Exiting immediately\n"); @@ -229,10 +231,14 @@ do_debug_intfc() } break; case 'v': - video_show_debug_info(); + if(got_num) { + dis_do_compare(); + } else { + video_show_debug_info(); + } break; case 'V': - printf("g_irq_pending: %d\n", g_irq_pending); + printf("g_irq_pending: %05x\n", g_irq_pending); printf("Setting Verbose ^= %04x\n", a1); Verbose ^= a1; printf("Verbose is now: %04x\n", Verbose); @@ -256,8 +262,13 @@ do_debug_intfc() if(engine.psr & 0x100) { engine.psr |= 0x30; } + } else { + dis_do_memmove(); } break; + case 'p': + dis_do_pattern_search(); + break; case 'x': if(old_mode == '=') { if(!a1) { @@ -361,6 +372,10 @@ do_debug_intfc() } do_blank(); break; + case '<': + g_a4 = a2; + g_a4bank = a2bank; + break; case 0x05: /* ctrl-e */ show_regs(); break; @@ -383,10 +398,6 @@ do_debug_intfc() case 'w': read_line(w_buff, W_BUF_LEN); break; - case 'X': - stop_on_c03x = !stop_on_c03x; - printf("stop_on_c03x set to %d\n",stop_on_c03x); - break; default: printf("\nUnrecognized command: %s\n",linebuf); *line_ptr = 0; @@ -437,7 +448,7 @@ show_toolset_tables(word32 a2bank, word32 addr) addr = (a2bank << 16) + (addr & 0xffff); - toolfile = fopen("tool_set_info", "wt"); + toolfile = fopen("tool_set_info", "w"); if(toolfile == 0) { fprintf(stderr, "fopen of tool_set_info failed: %d\n", errno); exit(2); @@ -573,10 +584,14 @@ do_blank() void do_go() { + /* also called by do_step */ + + g_config_control_panel = 0; clear_halt(); run_prog(); show_regs(); + g_config_control_panel = 1; } void @@ -585,11 +600,8 @@ do_step() int size; int size_mem_imm, size_x_imm; - clear_halt(); + do_go(); - run_prog(); - - show_regs(); size_mem_imm = 2; if(engine.psr & 0x20) { size_mem_imm = 1; @@ -651,26 +663,59 @@ show_hex_mem(int startbank, word32 start, int endbank, word32 end, int count) int read_line(char *buf, int len) { - int space_left; - int ret; + int space_left; + int ret; +#ifndef _WIN32 + int flags, flags_save; + /* Unix */ + flags = fcntl(0, F_GETFL, 0); + flags_save = flags; + if(flags == -1) { + return 0; + } + ret = fcntl(0, F_SETFL, flags | O_NONBLOCK); + if(ret == -1) { + return 0; + } +#endif space_left = len; - ret = 0; buf[0] = 0; + ret = 0; while(space_left > 0) { - ret = read(0,buf,1); +#ifdef _WIN32 + ret = win_nonblock_read_stdin(0, buf, 1); +#else + /* Unix */ + ret = read(0, buf, 1); +#endif if(ret <= 0) { - printf("read <= 0\n"); - return(len-space_left); + micro_sleep(15.0/60.0); + if(errno == EAGAIN) { + /* it would block, so no chars--do update */ + video_update(); + ret = 0; + continue; + } + printf("read ret %d, errno: %d\n", ret, errno); + if(errno == EAGAIN || errno == EINTR) { + ret = 0; + continue; + } + break; } space_left -= ret; if(buf[ret-1] == 0x0a) { - return(len-space_left); + break; } buf = &buf[ret]; } - return(len-space_left); +#ifndef _WIN32 + (void)fcntl(0, F_SETFL, flags_save); +#endif + + return (len-space_left); } void @@ -684,7 +729,7 @@ do_debug_list() list_kpc = (a2bank << 16) + (a2 & 0xffff); } printf("%d=m %d=x %d=LCBANK\n", (engine.psr >> 5)&1, - (engine.psr >> 4) & 1, (statereg & 0x4) >> 2); + (engine.psr >> 4) & 1, (g_c068_statereg & 0x4) >> 2); size_mem_imm = 2; if(engine.psr & 0x20) { @@ -701,242 +746,45 @@ do_debug_list() } } -const char *g_kegs_rom_names[] = { "ROM", "ROM.01", "ROM.03", 0 }; +void +dis_do_memmove() +{ + word32 val; -const char *g_kegs_c1rom_names[] = { 0 }; -const char *g_kegs_c2rom_names[] = { 0 }; -const char *g_kegs_c3rom_names[] = { 0 }; -const char *g_kegs_c4rom_names[] = { 0 }; -const char *g_kegs_c5rom_names[] = { 0 }; -const char *g_kegs_c6rom_names[] = { "c600.rom", "controller.rom", "disk.rom", - "DISK.ROM", "diskII.prom", 0 }; -const char *g_kegs_c7rom_names[] = { 0 }; - -const char **g_kegs_rom_card_list[8] = { - 0, g_kegs_c1rom_names, - g_kegs_c2rom_names, g_kegs_c3rom_names, - g_kegs_c4rom_names, g_kegs_c5rom_names, - g_kegs_c6rom_names, g_kegs_c7rom_names }; - -byte g_rom_c600_rom01_diffs[256] = { - 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xe2, 0x00, - 0xd0, 0x50, 0x0f, 0x77, 0x5b, 0xb9, 0xc3, 0xb1, - 0xb1, 0xf8, 0xcb, 0x4e, 0xb8, 0x60, 0xc7, 0x2e, - 0xfc, 0xe0, 0xbf, 0x1f, 0x66, 0x37, 0x4a, 0x70, - 0x55, 0x2c, 0x3c, 0xfc, 0xc2, 0xa5, 0x08, 0x29, - 0xac, 0x21, 0xcc, 0x09, 0x55, 0x03, 0x17, 0x35, - 0x4e, 0xe2, 0x0c, 0xe9, 0x3f, 0x9d, 0xc2, 0x06, - 0x18, 0x88, 0x0d, 0x58, 0x57, 0x6d, 0x83, 0x8c, - 0x22, 0xd3, 0x4f, 0x0a, 0xe5, 0xb7, 0x9f, 0x7d, - 0x2c, 0x3e, 0xae, 0x7f, 0x24, 0x78, 0xfd, 0xd0, - 0xb5, 0xd6, 0xe5, 0x26, 0x85, 0x3d, 0x8d, 0xc9, - 0x79, 0x0c, 0x75, 0xec, 0x98, 0xcc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x39, 0x00, 0x35, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, - 0x6c, 0x44, 0xce, 0x4c, 0x01, 0x08, 0x00, 0x00 -}; + printf("Memory move from %02x/%04x.%04x to %02x/%04x\n", a1bank, a1, a2, g_a4bank, g_a4); + while(a1 <= (a2 & 0xffff)) { + val = get_memory_c((a1bank << 16) + a1, 0); + set_memory_c((g_a4bank << 16) + g_a4, val, 0); + a1++; + g_a4++; + } + a1 = a1 & 0xffff; + g_a4 = g_a4 & 0xffff; +} void -load_roms() +dis_do_pattern_search() { - char name_buf[256]; - struct stat stat_buf; - const char **names_ptr; - int more_than_8mb; - int changed_rom; - int len; - int fd; - int ret; - int i; + printf("Memory pattern search for %04x in %02x/%04x.%04x\n", g_a4, a1bank, a1, a2); +} - g_rom_version = 0; - setup_kegs_file(&name_buf[0], (int)sizeof(name_buf), 0, - &g_kegs_rom_names[0]); - fd = open(name_buf, O_RDONLY | O_BINARY); - if(fd < 0) { - printf("Open ROM file %s failed:%d, errno:%d\n", name_buf, fd, - errno); - my_exit(-3); - } +void +dis_do_compare() +{ + word32 val1, val2; - ret = fstat(fd, &stat_buf); - if(ret != 0) { - fprintf(stderr, "fstat returned %d on fd %d, errno: %d\n", - ret, fd, errno); - my_exit(2); - } - - len = stat_buf.st_size; - if(len == 128*1024) { - g_rom_version = 1; - g_mem_size_base = 256*1024; - ret = read(fd, &g_rom_fc_ff_ptr[2*65536], len); - } else if(len == 256*1024) { - g_rom_version = 3; - g_mem_size_base = 1024*1024; - ret = read(fd, &g_rom_fc_ff_ptr[0], len); - } else { - fprintf(stderr, "ROM size %d not 128K or 256K\n", len); - my_exit(4); - } - - printf("Read: %d bytes of ROM\n", ret); - if(ret != len) { - printf("errno: %d\n", errno); - my_exit(-3); - } - close(fd); - - memset(&g_rom_cards_ptr[0], 0, 256*16); - - /* initialize c600 rom to be diffs from the real ROM, to build-in */ - /* Apple II compatibility without distributing ROMs */ - for(i = 0; i < 256; i++) { - g_rom_cards_ptr[0x600 + i] = g_rom_fc_ff_ptr[0x3c600 + i] ^ - g_rom_c600_rom01_diffs[i]; - } - if(g_rom_version >= 3) { - /* some patches */ - g_rom_cards_ptr[0x61b] ^= 0x40; - g_rom_cards_ptr[0x61c] ^= 0x33; - g_rom_cards_ptr[0x632] ^= 0xc0; - g_rom_cards_ptr[0x633] ^= 0x33; - } - - for(i = 1; i < 8; i++) { - names_ptr = g_kegs_rom_card_list[i]; - if(names_ptr == 0) { - continue; - } - if(*names_ptr == 0) { - continue; - } - - setup_kegs_file(&name_buf[0], (int)sizeof(name_buf), 1, - names_ptr); - - if(name_buf[0] != 0) { - fd = open(name_buf, O_RDONLY | O_BINARY); - if(fd < 0) { - printf("Open card ROM file %s failed: %d " - "err:%d\n", name_buf, fd, errno); - my_exit(-3); - } - - len = 256; - ret = read(fd, &g_rom_cards_ptr[i*0x100], len); - - if(ret != len) { - printf("errno: %d, expected %d, got %d\n", - errno, len, ret); - my_exit(-3); - } - close(fd); + printf("Memory Compare from %02x/%04x.%04x with %02x/%04x\n", a1bank, a1, a2, g_a4bank, g_a4); + while(a1 <= (a2 & 0xffff)) { + val1 = get_memory_c((a1bank << 16) + a1, 0); + val2 = get_memory_c((g_a4bank << 16) + g_a4, 0); + if(val1 != val2) { + printf("%02x/%04x: %02x vs %02x\n", a1bank, a1, val1, val2); } + a1++; + g_a4++; } - - more_than_8mb = (g_mem_size_exp > 0x800000); - /* Only do the patch if users wants more than 8MB of expansion mem */ - - changed_rom = 0; - if(g_rom_version == 1) { - /* make some patches to ROM 01 */ -#if 0 - /* 1: Patch ROM selftest to not do speed test */ - printf("Patching out speed test failures from ROM 01\n"); - g_rom_fc_ff_ptr[0x3785a] = 0x18; - changed_rom = 1; -#endif - -#if 0 - /* 2: Patch ROM selftests not to do tests 2,4 */ - /* 0 = skip, 1 = do it, test 1 is bit 0 of LSByte */ - g_rom_fc_ff_ptr[0x371e9] = 0xf5; - g_rom_fc_ff_ptr[0x371ea] = 0xff; - changed_rom = 1; -#endif - - if(more_than_8mb) { - /* Geoff Weiss patch to use up to 14MB of RAM */ - g_rom_fc_ff_ptr[0x30302] = 0xdf; - g_rom_fc_ff_ptr[0x30314] = 0xdf; - g_rom_fc_ff_ptr[0x3031c] = 0x00; - changed_rom = 1; - } - - /* Patch ROM selftest to not do ROM cksum if any changes*/ - if(changed_rom) { - g_rom_fc_ff_ptr[0x37a06] = 0x18; - g_rom_fc_ff_ptr[0x37a07] = 0x18; - } - } else if(g_rom_version == 3) { - /* patch ROM 03 */ - printf("Patching ROM 03 smartport bug\n"); - /* 1: Patch Smartport code to fix a stupid bug */ - /* that causes it to write the IWM status reg into c036, */ - /* which is the system speed reg...it's "safe" since */ - /* IWM status reg bit 4 must be 0 (7MHz)..., otherwise */ - /* it might have turned on shadowing in all banks! */ - g_rom_fc_ff_ptr[0x357c9] = 0x00; - changed_rom = 1; - -#if 0 - /* patch ROM 03 to not to speed test */ - /* skip fast speed test */ - g_rom_fc_ff_ptr[0x36ad7] = 0x18; - g_rom_fc_ff_ptr[0x36ad8] = 0x18; - changed_rom = 1; -#endif - -#if 0 - /* skip slow speed test */ - g_rom_fc_ff_ptr[0x36ae7] = 0x18; - g_rom_fc_ff_ptr[0x36ae8] = 0x6b; - changed_rom = 1; -#endif - -#if 0 - /* 4: Patch ROM 03 selftests not to do tests 1-4 */ - g_rom_fc_ff_ptr[0x364a9] = 0xf0; - g_rom_fc_ff_ptr[0x364aa] = 0xff; - changed_rom = 1; -#endif - - /* ROM tests are in ff/6403-642x, where 6403 = addr of */ - /* test 1, etc. */ - - if(more_than_8mb) { - /* Geoff Weiss patch to use up to 14MB of RAM */ - g_rom_fc_ff_ptr[0x30b] = 0xdf; - g_rom_fc_ff_ptr[0x31d] = 0xdf; - g_rom_fc_ff_ptr[0x325] = 0x00; - changed_rom = 1; - } - - if(changed_rom) { - /* patch ROM 03 selftest to not do ROM cksum */ - g_rom_fc_ff_ptr[0x36cb0] = 0x18; - g_rom_fc_ff_ptr[0x36cb1] = 0x18; - } - - } + a1 = a1 & 0xffff; + g_a4 = g_a4 & 0xffff; } void diff --git a/src/engine_c.c b/src/engine_c.c index cbeedec..09a2f46 100644 --- a/src/engine_c.c +++ b/src/engine_c.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_engine_c_c[] = "@(#)$KmKId: engine_c.c,v 1.51 2004-01-10 15:50:15-05 kentd Exp $"; +const char rcsid_engine_c_c[] = "@(#)$KmKId: engine_c.c,v 1.57 2004-12-03 23:51:01-05 kentd Exp $"; #include "defc.h" #include "protos_engine_c.h" @@ -28,8 +28,10 @@ const char rcsid_engine_c_c[] = "@(#)$KmKId: engine_c.c,v 1.51 2004-01-10 15:50: extern int halt_sim; extern int g_code_red; extern int g_ignore_halts; +extern int g_user_halt_bad; extern double g_fcycles_stop; extern double g_last_vbl_dcycs; +extern double g_cur_dcycs; extern int g_wait_pending; extern int g_irq_pending; extern int g_testing; @@ -44,9 +46,13 @@ extern byte *g_dummy_memory1_ptr; extern int g_num_breakpoints; extern word32 g_breakpts[]; -extern Pc_log *log_pc_ptr; -extern Pc_log *log_pc_start_ptr; -extern Pc_log *log_pc_end_ptr; +extern Pc_log *g_log_pc_ptr; +extern Pc_log *g_log_pc_start_ptr; +extern Pc_log *g_log_pc_end_ptr; + +extern Data_log *g_log_data_ptr; +extern Data_log *g_log_data_start_ptr; +extern Data_log *g_log_data_end_ptr; int size_tab[] = { #include "size_c.h" @@ -75,8 +81,9 @@ int bogus[] = { #define FCYCLES_ROUND fcycles = (int)(fcycles + fplus_x_m1); -#define LOG_PC_MACRO() \ - tmp_pc_ptr = log_pc_ptr++; \ +#ifdef LOG_PC +# define LOG_PC_MACRO() \ + tmp_pc_ptr = g_log_pc_ptr++; \ tmp_pc_ptr->dbank_kpc = (dbank << 24) + kpc; \ tmp_pc_ptr->instr = (opcode << 24) + arg_ptr[1] + \ (arg_ptr[2] << 8) + (arg_ptr[3] << 16); \ @@ -85,11 +92,28 @@ int bogus[] = { tmp_pc_ptr->xreg_yreg = (xreg << 16) + yreg; \ tmp_pc_ptr->stack_direct = (stack << 16) + direct; \ tmp_pc_ptr->dcycs = fcycles + g_last_vbl_dcycs - fplus_2; \ - if(log_pc_ptr >= log_pc_end_ptr) { \ + if(g_log_pc_ptr >= g_log_pc_end_ptr) { \ /*halt2_printf("log_pc oflow %f\n", tmp_pc_ptr->dcycs);*/ \ - log_pc_ptr = log_pc_start_ptr; \ + g_log_pc_ptr = g_log_pc_start_ptr; \ } +# define LOG_DATA_MACRO(in_addr, in_val, in_size) \ + g_log_data_ptr->dcycs = fcycles + g_last_vbl_dcycs; \ + g_log_data_ptr->addr = in_addr; \ + g_log_data_ptr->val = in_val; \ + g_log_data_ptr->size = in_size; \ + g_log_data_ptr++; \ + if(g_log_data_ptr >= g_log_data_end_ptr) { \ + g_log_data_ptr = g_log_data_start_ptr; \ + } + +#else +# define LOG_PC_MACRO() +# define LOG_DATA_MACRO(addr, val, size) +/* Just do nothing */ +#endif + + #define GET_1BYTE_ARG arg = arg_ptr[1]; #define GET_2BYTE_ARG arg = arg_ptr[1] + (arg_ptr[2] << 8); #define GET_3BYTE_ARG arg = arg_ptr[1] + (arg_ptr[2] << 8) + (arg_ptr[3]<<16); @@ -270,6 +294,7 @@ extern word32 slow_mem_changed[]; } #define SET_MEMORY8(addr, val) \ + LOG_DATA_MACRO(addr, val, 8); \ CYCLES_PLUS_1; \ stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ wstat = PTR2WORD(stat) & 0xff; \ @@ -284,17 +309,15 @@ extern word32 slow_mem_changed[]; } - - - #define SET_MEMORY16(addr, val, in_bank) \ + LOG_DATA_MACRO(addr, val, 16); \ stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ wstat = PTR2WORD(stat) & 0xff; \ ptr = stat - wstat + ((addr) & 0xff); \ - if((wstat) || (((addr) & 0xff) == 0xff)) { \ + if((wstat) || (((addr) & 0xff) == 0xff)) { \ fcycles_tmp1 = fcycles; \ set_memory16_pieces_stub((addr), (val), \ - &fcycles_tmp1, fplus_ptr, in_bank); \ + &fcycles_tmp1, fplus_1, fplus_x_m1, in_bank); \ fcycles = fcycles_tmp1; \ } else { \ CYCLES_PLUS_2; \ @@ -303,6 +326,7 @@ extern word32 slow_mem_changed[]; } #define SET_MEMORY24(addr, val, in_bank) \ + LOG_DATA_MACRO(addr, val, 24); \ stat = GET_PAGE_INFO_WR(((addr) >> 8) & 0xffff); \ wstat = PTR2WORD(stat) & 0xff; \ ptr = stat - wstat + ((addr) & 0xff); \ @@ -326,7 +350,7 @@ check_breakpoints(word32 addr) count = g_num_breakpoints; for(i = 0; i < count; i++) { - if(g_breakpts[i] == addr) { + if((g_breakpts[i] & 0xffffff) == addr) { halt2_printf("Hit breakpoint at %06x\n", addr); } } @@ -464,19 +488,15 @@ set_memory8_io_stub(word32 addr, word32 val, byte *stat, double *fcycs_ptr, void set_memory16_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, - Fplus *fplus_ptr, int in_bank) + double fplus_1, double fplus_x_m1, int in_bank) { byte *ptr; byte *stat; double fcycles, fcycles_tmp1; - double fplus_1; - double fplus_x_m1; word32 addrp1; word32 wstat; fcycles = *fcycs_ptr; - fplus_1 = fplus_ptr->plus_1; - fplus_x_m1 = fplus_ptr->plus_x_minus_1; SET_MEMORY8(addr, val); addrp1 = addr + 1; if(in_bank) { @@ -536,14 +556,6 @@ get_memory_c(word32 addr, int cycs) GET_MEMORY8(addr, ret); return ret; } -#if 0 - stat = page_info[(addr>>8) & 0xffff].rd; - ptr = (byte *)((stat & 0xffffff00) | (addr & 0xff)); - if(stat & (1 << (31 -BANK_IO_BIT))) { - return get_memory_io(addr, &in_fcycles); - } - return *ptr; -#endif word32 get_memory16_c(word32 addr, int cycs) @@ -576,16 +588,27 @@ set_memory_c(word32 addr, word32 val, int cycs) double fplus_x_m1; word32 wstat; - fcycles = 0; + fcycles = g_cur_dcycs - g_last_vbl_dcycs; fplus_1 = 0; fplus_x_m1 = 0; SET_MEMORY8(addr, val); } + void set_memory16_c(word32 addr, word32 val, int cycs) { - set_memory_c(addr, val, 0); - set_memory_c(addr + 1, val >> 8, 0); + byte *stat; + byte *ptr; + double fcycles, fcycles_tmp1; + double fplus_1, fplus_2; + double fplus_x_m1; + word32 wstat; + + fcycles = g_cur_dcycs - g_last_vbl_dcycs; + fplus_1 = 0; + fplus_2 = 0; + fplus_x_m1 = 0; + SET_MEMORY16(addr, val, 0); } void @@ -706,10 +729,10 @@ fixed_memory_ptrs_init() /* set g_slow_memory_ptr, g_rom_fc_ff_ptr, g_dummy_memory1_ptr, */ /* and rom_cards_ptr */ - g_slow_memory_ptr = memalloc_align(128*1024, 0); - g_dummy_memory1_ptr = memalloc_align(256, 1024); - g_rom_fc_ff_ptr = memalloc_align(256*1024, 1024); - g_rom_cards_ptr = memalloc_align(16*256, 1024); + g_slow_memory_ptr = memalloc_align(128*1024, 0, 0); + g_dummy_memory1_ptr = memalloc_align(256, 1024, 0); + g_rom_fc_ff_ptr = memalloc_align(256*1024, 512, 0); + g_rom_cards_ptr = memalloc_align(16*256, 256, 0); #if 0 printf("g_memory_ptr: %08x, dummy_mem: %08x, slow_mem_ptr: %08x\n", @@ -757,7 +780,7 @@ get_itimer() void set_halt_act(int val) { - if(val == 1 && g_ignore_halts) { + if(val == 1 && g_ignore_halts && !g_user_halt_bad) { g_code_red++; } else { halt_sim |= val; @@ -938,9 +961,7 @@ recalc_accsize: FETCH_OPCODE; -#ifdef LOG_PC LOG_PC_MACRO(); -#endif switch(opcode) { default: @@ -957,9 +978,7 @@ recalc_accsize: } else { while(fcycles <= g_fcycles_stop) { FETCH_OPCODE; -#ifdef LOG_PC LOG_PC_MACRO(); -#endif switch(opcode) { default: diff --git a/src/instable.h b/src/instable.h index d350611..fbbd49e 100644 --- a/src/instable.h +++ b/src/instable.h @@ -10,7 +10,7 @@ #ifdef ASM # ifdef INCLUDE_RCSID_S - .stringz "@(#)$KmKId: instable.h,v 1.103 2004-01-10 15:50:50-05 kentd Exp $" + .stringz "@(#)$KmKId: instable.h,v 1.104 2004-10-05 20:12:08-04 kentd Exp $" # endif #endif @@ -2353,9 +2353,8 @@ instdb_SYM /* STP */ b dispatch_done depi RET_STP,3,4,ret0 #else - GET_1BYTE_ARG; - CYCLES_PLUS_1 - FINISH(RET_STP, arg); + CYCLES_FINISH + FINISH(RET_STP, 0); #endif instdc_SYM /* JML (Abs) */ diff --git a/src/iwm.c b/src/iwm.c index 0625d8a..8742978 100644 --- a/src/iwm.c +++ b/src/iwm.c @@ -8,14 +8,13 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_iwm_c[] = "@(#)$KmKId: iwm.c,v 1.111 2003-11-03 22:14:10-05 kentd Exp $"; +const char rcsid_iwm_c[] = "@(#)$KmKId: iwm.c,v 1.119 2004-11-21 17:44:14-05 kentd Exp $"; #include "defc.h" extern int Verbose; extern int g_vbl_count; -extern int speed_fast; -extern word32 g_slot_motor_detect; +extern int g_c036_val_speed; const byte phys_to_dos_sec[] = { 0x00, 0x07, 0x0e, 0x06, 0x0d, 0x05, 0x0c, 0x04, @@ -72,8 +71,8 @@ int from_disk_byte_valid = 0; Iwm iwm; -int g_apple35_sel = 0; -int head_35 = 0; +extern int g_c031_disk35; + int g_iwm_motor_on = 0; int g_check_nibblization = 0; @@ -87,11 +86,6 @@ void iwm_write_data_525(Disk *dsk, word32 val, int fast_disk_emul,double dcycs); void iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525) { - int num_tracks; - int i; - - num_tracks = MAX_TRACKS; - dsk->dcycs_last_read = 0.0; dsk->name_ptr = 0; dsk->partition_name = 0; @@ -113,15 +107,31 @@ iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525) dsk->last_phase = 0; dsk->nib_pos = 0; dsk->num_tracks = 0; + dsk->trks = 0; + +} + +void +disk_set_num_tracks(Disk *dsk, int num_tracks) +{ + int i; + + if(dsk->trks != 0) { + /* This should not be necessary! */ + free(dsk->trks); + halt_printf("Needed to free dsk->trks: %p\n", dsk->trks); + } + dsk->num_tracks = num_tracks; + dsk->trks = (Trk *)malloc(num_tracks * sizeof(Trk)); for(i = 0; i < num_tracks; i++) { - dsk->tracks[i].dsk = dsk; - dsk->tracks[i].nib_area = 0; - dsk->tracks[i].track_dirty = 0; - dsk->tracks[i].overflow_size = 0; - dsk->tracks[i].track_len = 0; - dsk->tracks[i].unix_pos = -1; - dsk->tracks[i].unix_len = -1; + dsk->trks[i].dsk = dsk; + dsk->trks[i].nib_area = 0; + dsk->trks[i].track_dirty = 0; + dsk->trks[i].overflow_size = 0; + dsk->trks[i].track_len = 0; + dsk->trks[i].unix_pos = -1; + dsk->trks[i].unix_len = -1; } } @@ -179,21 +189,23 @@ iwm_reset() iwm.previous_write_bits = 0; g_iwm_motor_on = 0; - g_apple35_sel = 0; + g_c031_disk35 = 0; } void draw_iwm_status(int line, char *buf) { char *flag[2][2]; + int apple35_sel; flag[0][0] = " "; flag[0][1] = " "; flag[1][0] = " "; flag[1][1] = " "; + apple35_sel = (g_c031_disk35 >> 6) & 1; if(g_iwm_motor_on) { - flag[g_apple35_sel][iwm.drive_select] = "*"; + flag[apple35_sel][iwm.drive_select] = "*"; } sprintf(buf, "s6d1:%2d%s s6d2:%2d%s s5d1:%2d/%d%s " @@ -204,12 +216,12 @@ draw_iwm_status(int line, char *buf) iwm.drive35[0].cur_qtr_track & 1, flag[1][0], iwm.drive35[1].cur_qtr_track >> 1, iwm.drive35[1].cur_qtr_track & 1, flag[1][1], - g_fast_disk_emul, g_slow_525_emul_wr, - (speed_fast << 7) + g_slot_motor_detect); + g_fast_disk_emul, g_slow_525_emul_wr, g_c036_val_speed); video_update_status_line(line, buf); } + void iwm_flush_disk_to_unix(Disk *dsk) { @@ -253,8 +265,8 @@ iwm_flush_disk_to_unix(Disk *dsk) num_dirty++; /* Write it out */ - unix_pos = dsk->tracks[j].unix_pos; - unix_len = dsk->tracks[j].unix_len; + unix_pos = dsk->trks[j].unix_pos; + unix_len = dsk->trks[j].unix_len; if(unix_pos < 0 || unix_len < 0x1000) { halt_printf("Disk:%s trk:%d, unix_pos:%08x, len:%08x\n", dsk->name_ptr, j, unix_pos, unix_len); @@ -303,7 +315,7 @@ iwm_vbl_update(int doit_3_persec) } motor_on = iwm.motor_on; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { motor_on = iwm.motor_on35; } @@ -327,11 +339,11 @@ iwm_show_stats() { printf("IWM stats: q7,q6: %d, %d, reset,enable2: %d,%d, mode: %02x\n", iwm.q7, iwm.q6, iwm.reset, iwm.enable2, iwm.iwm_mode); - printf("motor: %d,%d, motor35:%d drive: %d, on: %d, head35: %d " + printf("motor: %d,%d, motor35:%d drive: %d, c031:%02x " "phs: %d %d %d %d\n", iwm.motor_on, iwm.motor_off, g_iwm_motor_on, - iwm.drive_select, g_apple35_sel, - head_35, iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2], + iwm.drive_select, g_c031_disk35, + iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2], iwm.iwm_phase[3]); printf("iwm.drive525[0].fd: %d, [1].fd: %d\n", iwm.drive525[0].fd, iwm.drive525[1].fd); @@ -355,7 +367,7 @@ iwm_touch_switches(int loc, double dcycs) on = loc & 1; drive = iwm.drive_select; phase = loc >> 1; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { dsk = &(iwm.drive35[drive]); } else { dsk = &(iwm.drive525[drive]); @@ -366,9 +378,12 @@ iwm_touch_switches(int loc, double dcycs) /* phase adjustments. See if motor is on */ iwm.iwm_phase[phase] = on; + iwm_printf("Iwm phase %d=%d, all phases: %d %d %d %d (%f)\n", + phase, on, iwm.iwm_phase[0], iwm.iwm_phase[1], + iwm.iwm_phase[2], iwm.iwm_phase[3], dcycs); if(iwm.motor_on) { - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { if(phase == 3 && on) { iwm_do_action35(dcycs); } @@ -527,7 +542,7 @@ iwm525_phase_change(int drive, int phase) last_phase = 0; } if(qtr_track > 4*34) { - printf("Disk arm moved past track 0x21, moving it back\n"); + printf("Disk arm moved past track 34, moving it back\n"); qtr_track = 4*34; last_phase = 0; } @@ -536,9 +551,9 @@ iwm525_phase_change(int drive, int phase) dsk->last_phase = last_phase; - iwm_printf("Moving drive to qtr track: %04x, %d, %d, %d, " - "%d %d %d %d\n", - qtr_track, phase, delta, last_phase, iwm.iwm_phase[0], + iwm_printf("Moving drive to qtr track: %04x (trk:%d.%02d), %d, %d, %d, " + "%d %d %d %d\n", qtr_track, qtr_track>>2, 25*(qtr_track & 3), + phase, delta, last_phase, iwm.iwm_phase[0], iwm.iwm_phase[1], iwm.iwm_phase[2], iwm.iwm_phase[3]); /* sanity check stepping algorithm */ @@ -564,7 +579,7 @@ iwm_read_status35(double dcycs) if(iwm.motor_on) { /* Read status */ state = (iwm.iwm_phase[1] << 3) + (iwm.iwm_phase[0] << 2) + - (head_35 << 1) + iwm.iwm_phase[2]; + ((g_c031_disk35 >> 6) & 2) + iwm.iwm_phase[2]; iwm_printf("Iwm status read state: %02x\n", state); @@ -666,7 +681,7 @@ iwm_do_action35(double dcycs) if(iwm.motor_on) { /* Perform action */ state = (iwm.iwm_phase[1] << 3) + (iwm.iwm_phase[0] << 2) + - (head_35 << 1) + iwm.iwm_phase[2]; + ((g_c031_disk35 >> 6) & 2) + iwm.iwm_phase[2]; switch(state) { case 0x00: /* Set step direction inward */ /* towards higher tracks */ @@ -715,17 +730,6 @@ iwm_do_action35(double dcycs) } } -void -iwm_set_apple35_sel(int newval) -{ - if(g_apple35_sel != newval) { - /* Handle speed changes */ - set_halt(HALT_EVENT); - } - - g_apple35_sel = newval; -} - int iwm_read_c0ec(double dcycs) { @@ -736,7 +740,7 @@ iwm_read_c0ec(double dcycs) if(iwm.q7 == 0 && iwm.enable2 == 0 && iwm.motor_on) { drive = iwm.drive_select; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { dsk = &(iwm.drive35[drive]); return iwm_read_data_35(dsk, g_fast_disk_emul, dcycs); } else { @@ -773,7 +777,7 @@ read_iwm(int loc, double dcycs) state = (iwm.q7 << 1) + iwm.q6; drive = iwm.drive_select; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { dsk = &(iwm.drive35[drive]); } else { dsk = &(iwm.drive525[drive]); @@ -806,7 +810,7 @@ read_iwm(int loc, double dcycs) iwm_printf("Read status under enable2: 1\n"); status = 1; } else { - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { status = iwm_read_status35(dcycs); } else { status = dsk->write_prot; @@ -868,7 +872,7 @@ write_iwm(int loc, int val, double dcycs) state = (iwm.q7 << 1) + iwm.q6; drive = iwm.drive_select; fast_writes = g_fast_disk_emul; - if(g_apple35_sel) { + if(g_c031_disk35 & 0x40) { dsk = &(iwm.drive35[drive]); } else { dsk = &(iwm.drive525[drive]); @@ -899,8 +903,11 @@ write_iwm(int loc, int val, double dcycs) if(iwm.enable2) { iwm_write_enable2(val, dcycs); } else { +#if 0 +// Flobynoid writes to 0xc0e9 causing these messages... printf("Write iwm1, st: %02x, loc: %x: %02x\n", state, loc, val); +#endif } } return; @@ -915,10 +922,7 @@ write_iwm(int loc, int val, double dcycs) return; } - halt_printf("Got to end of write_iwm, loc:%02x, val: %02x\n", loc, val); - return; - } @@ -1064,7 +1068,7 @@ disk_unnib_4x4(Disk *dsk) } int -iwm_denib_track525(Disk *dsk, Track *trk, int qtr_track, byte *outbuf) +iwm_denib_track525(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf) { byte aux_buf[0x80]; byte *buf; @@ -1274,7 +1278,7 @@ iwm_denib_track525(Disk *dsk, Track *trk, int qtr_track, byte *outbuf) } int -iwm_denib_track35(Disk *dsk, Track *trk, int qtr_track, byte *outbuf) +iwm_denib_track35(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf) { word32 buf_c00[0x100]; word32 buf_d00[0x100]; @@ -1601,17 +1605,14 @@ iwm_denib_track35(Disk *dsk, Track *trk, int qtr_track, byte *outbuf) int disk_track_to_unix(Disk *dsk, int qtr_track, byte *outbuf) { - Track *trk; + Trk *trk; int disk_525; disk_525 = dsk->disk_525; - trk = &(dsk->tracks[qtr_track]); + trk = &(dsk->trks[qtr_track]); if(trk->track_len == 0 || trk->track_dirty == 0) { -#if 0 - printf("disk_track_to_unix: dirty: %d\n", trk->track_dirty); -#endif return 0; } @@ -1652,7 +1653,7 @@ void disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size) { byte buffer[0x3000]; - Track *trk; + Trk *trk; int ret, ret2; int i; @@ -1665,7 +1666,7 @@ disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size) buffer[i] = 0; } - trk = &(dsk->tracks[qtr_track]); + trk = &(dsk->trks[qtr_track]); if(dsk->disk_525) { ret = iwm_denib_track525(dsk, trk, qtr_track, &(buffer[0])); @@ -1688,7 +1689,7 @@ disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size) ret, ret2, qtr_track); show_hex_data(buf, 0x1000); show_hex_data(buffer, 0x1000); - iwm_show_a_track(&(dsk->tracks[qtr_track])); + iwm_show_a_track(&(dsk->trks[qtr_track])); exit(2); } @@ -1702,7 +1703,7 @@ disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, int nib_len) { byte track_buf[TRACK_BUF_LEN]; - Track *trk; + Trk *trk; int must_clear_track; int ret; int len; @@ -1763,7 +1764,7 @@ disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, dsk->nib_pos = 0; /* for consistency */ - trk = &(dsk->tracks[qtr_track]); + trk = &(dsk->trks[qtr_track]); trk->track_dirty = 0; trk->overflow_size = 0; trk->track_len = 2*nib_len; @@ -1784,7 +1785,7 @@ disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, } void -iwm_nibblize_track_nib525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track) +iwm_nibblize_track_nib525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) { byte *nib_ptr; byte *trk_ptr; @@ -1803,7 +1804,7 @@ iwm_nibblize_track_nib525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track) } void -iwm_nibblize_track_525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track) +iwm_nibblize_track_525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) { byte partial_nib_buf[0x300]; word32 *word_ptr; @@ -1895,7 +1896,7 @@ iwm_nibblize_track_525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track) } void -iwm_nibblize_track_35(Disk *dsk, Track *trk, byte *track_buf, int qtr_track) +iwm_nibblize_track_35(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track) { int phys_to_log_sec[16]; word32 buf_c00[0x100]; @@ -2150,7 +2151,7 @@ disk_4x4_nib_out(Disk *dsk, word32 val) void disk_nib_out(Disk *dsk, byte val, int size) { - Track *trk; + Trk *trk; int pos; int old_size; int track_len; @@ -2160,9 +2161,12 @@ disk_nib_out(Disk *dsk, byte val, int size) qtr_track = dsk->cur_qtr_track; - trk = &(dsk->tracks[qtr_track]); - - track_len = trk->track_len; + track_len = 0; + trk = 0; + if(dsk->trks != 0) { + trk = &(dsk->trks[qtr_track]); + track_len = trk->track_len; + } if(track_len <= 10) { printf("Writing to an invalid qtr track: %02x!\n", qtr_track); @@ -2234,7 +2238,7 @@ disk_nib_end_track(Disk *dsk) dsk->nib_pos = 0; qtr_track = dsk->cur_qtr_track; - dsk->tracks[qtr_track].track_dirty = 0; + dsk->trks[qtr_track].track_dirty = 0; dsk->disk_dirty = 0; } @@ -2243,14 +2247,14 @@ void iwm_show_track(int slot_drive, int track) { Disk *dsk; - Track *trk; + Trk *trk; int drive; int sel35; int qtr_track; if(slot_drive < 0) { drive = iwm.drive_select; - sel35 = g_apple35_sel; + sel35 = (g_c031_disk35 >> 6) & 1; } else { drive = slot_drive & 1; sel35 = !((slot_drive >> 1) & 1); @@ -2267,22 +2271,25 @@ iwm_show_track(int slot_drive, int track) } else { qtr_track = track; } - trk = &(dsk->tracks[qtr_track]); + if(dsk->trks == 0) { + return; + } + trk = &(dsk->trks[qtr_track]); if(trk->track_len <= 0) { printf("Track_len: %d\n", trk->track_len); - printf("No track for type: %d, drive: %d, qtrk: %02x\n", - g_apple35_sel, drive, qtr_track); + printf("No track for type: %d, drive: %d, qtrk: 0x%02x\n", + sel35, drive, qtr_track); return; } - printf("Current drive: %d, q_track: %02x\n", drive, qtr_track); + printf("Current drive: %d, q_track: 0x%02x\n", drive, qtr_track); iwm_show_a_track(trk); } void -iwm_show_a_track(Track *trk) +iwm_show_a_track(Trk *trk) { int sum; int len; diff --git a/src/iwm.h b/src/iwm.h index e9a6587..1bff6bf 100644 --- a/src/iwm.h +++ b/src/iwm.h @@ -9,7 +9,7 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.13 2003-07-08 23:29:48-04 kentd Exp $"; +const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.14 2004-10-20 17:29:38-04 kentd Exp $"; #endif #define MAX_TRACKS (2*80) @@ -24,7 +24,7 @@ const char rcsid_iwm_h[] = "@(#)$KmKId: iwm.h,v 1.13 2003-07-08 23:29:48-04 kent typedef struct _Disk Disk; -STRUCT(Track) { +STRUCT(Trk) { Disk *dsk; byte *nib_area; int track_dirty; @@ -56,7 +56,7 @@ struct _Disk { int last_phase; int nib_pos; int num_tracks; - Track tracks[MAX_TRACKS]; + Trk *trks; }; diff --git a/src/iwm_35_525.h b/src/iwm_35_525.h index 2604c42..10b6fda 100644 --- a/src/iwm_35_525.h +++ b/src/iwm_35_525.h @@ -1,12 +1,12 @@ #ifdef INCLUDE_IWM_RCSID_C -const char rcsdif_iwm_35_525_h[] = "@(#)$KmKId: iwm_35_525.h,v 1.9 2002-11-14 01:03:16-05 kadickey Exp $"; +const char rcsdif_iwm_35_525_h[] = "@(#)$KmKId: iwm_35_525.h,v 1.14 2004-12-01 19:45:02-05 kentd Exp $"; #endif int IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs) { - Track *trk; + Trk *trk; double dcycs_last_read; int pos; int pos2; @@ -30,12 +30,28 @@ IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs) qtr_track = dsk->cur_qtr_track; - trk = &(dsk->tracks[qtr_track]); - track_len = trk->track_len; +#if IWM_DISK_525 + qtr_track = qtr_track & -4; /* round to nearest whole trk! */ +#endif + + trk = 0; + track_len = 0; + if(dsk->trks) { + trk = &(dsk->trks[qtr_track]); + track_len = trk->track_len; + } dcycs_last_read = dsk->dcycs_last_read; dcycs_passed = dcycs - dcycs_last_read; + cycs_passed = (int)dcycs_passed; + + if(track_len == 0) { + ret = (cycs_passed & 0x7f) + 0x80; + iwm_printf("Reading c0ec, track_len 0, returning %02x\n", ret); + return ret; + } + pos = dsk->nib_pos; if(pos >= track_len) { /* Arm may have moved from inner 3.5 track to outer one, */ @@ -43,11 +59,6 @@ IWM_READ_ROUT (Disk *dsk, int fast_disk_emul, double dcycs) pos = 0; } - cycs_passed = (int)dcycs_passed; - - if(track_len == 0) { - return (cycs_passed & 0x7f) + 0x80; - } size = trk->nib_area[pos]; while(size == 0) { @@ -207,9 +218,9 @@ IWM_WRITE_ROUT (Disk *dsk, word32 val, int fast_disk_emul, double dcycs) int sdiff; int prev_bits; - if(dsk->fd < 0) { + if(dsk->fd < 0 || dsk->trks == 0) { halt_printf("Tried to write to type: %d, drive: %d, fd: %d!\n", - IWM_DISK_525, dsk->drive, dsk->fd); + IWM_DISK_525, dsk->drive, dsk->fd, dsk->trks); return; } diff --git a/src/joystick_driver.c b/src/joystick_driver.c index 35c106f..53f64e2 100644 --- a/src/joystick_driver.c +++ b/src/joystick_driver.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_joystick_driver_c[] = "@(#)$KmKId: joystick_driver.c,v 1.7 2002-11-19 03:09:59-05 kadickey Exp $"; +const char rcsid_joystick_driver_c[] = "@(#)$KmKId: joystick_driver.c,v 1.12 2004-10-17 21:28:48-04 kentd Exp $"; #include "defc.h" #include @@ -22,20 +22,23 @@ const char rcsid_joystick_driver_c[] = "@(#)$KmKId: joystick_driver.c,v 1.7 2002 # include #endif -extern int g_joystick_type; /* in paddles.c */ -extern int g_paddle_button[]; +extern int g_joystick_native_type1; /* in paddles.c */ +extern int g_joystick_native_type2; /* in paddles.c */ +extern int g_joystick_native_type; /* in paddles.c */ +extern int g_paddle_buttons; extern int g_paddle_val[]; const char *g_joystick_dev = "/dev/js0"; /* default joystick dev file */ #define MAX_JOY_NAME 128 -int g_joystick_fd = -1; +int g_joystick_native_fd = -1; int g_joystick_num_axes = 0; int g_joystick_num_buttons = 0; #ifdef __linux__ +# define JOYSTICK_DEFINED void joystick_init() { @@ -64,22 +67,24 @@ joystick_init() joy_name, g_joystick_num_axes, g_joystick_num_buttons, version); - g_joystick_type = JOYSTICK_LINUX; - g_joystick_fd = fd; + g_joystick_native_type1 = 1; + g_joystick_native_type2 = -1; + g_joystick_native_fd = fd; for(i = 0; i < 4; i++) { - g_paddle_val[i] = 280; - g_paddle_button[i] = 1; + g_paddle_val[i] = 32767; } + g_paddle_buttons = 0xc; - joystick_update(); + joystick_update(0.0); } /* joystick_update_linux() called from paddles.c. Update g_paddle_val[] */ -/* and g_paddle_button[] arrays with current information */ +/* and g_paddle_buttons with current information */ void -joystick_update() +joystick_update(double dcycs) { struct js_event js; /* the linux joystick event record */ + int mask; int val; int num; int type; @@ -90,35 +95,42 @@ joystick_update() /* suck up to 20 events, then give up */ len = sizeof(struct js_event); for(i = 0; i < 20; i++) { - ret = read(g_joystick_fd, &js, len); + ret = read(g_joystick_native_fd, &js, len); if(ret != len) { /* just get out */ - return; + break; } type = js.type & ~JS_EVENT_INIT; val = js.value; num = js.number & 3; /* clamp to 0-3 */ switch(type) { case JS_EVENT_BUTTON: - g_paddle_button[num] = val; + mask = 1 << num; + if(val) { + val = mask; + } + g_paddle_buttons = (g_paddle_buttons & ~mask) | val; break; case JS_EVENT_AXIS: - /* val is -32767 to +32767, convert to 0->280 */ - /* want just 255, but go a little over for robustness*/ - g_paddle_val[num] = ((val + 32767) * 9) >> 11; + /* val is -32767 to +32767 */ + g_paddle_val[num] = val; break; } } + + if(i > 0) { + paddle_update_trigger_dcycs(dcycs); + } } void -joystick_update_button() +joystick_update_buttons() { } +#endif /* LINUX */ -#else /* !__linux__ */ - -# ifdef _WIN32 +#ifdef _WIN32 +# define JOYSTICK_DEFINED void joystick_init() { @@ -129,99 +141,120 @@ joystick_init() // Check that there is a joystick device if(joyGetNumDevs() <= 0) { - printf("--No joystick hardware detected\n"); + printf("No joystick hardware detected\n"); + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; return; } + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; + // Check that at least joystick 1 or joystick 2 is available ret1 = joyGetPos(JOYSTICKID1, &info); ret2 = joyGetDevCaps(JOYSTICKID1, &joycap, sizeof(joycap)); if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { - g_joystick_type = JOYSTICK_WIN32_1; - printf("--Joystick #1 = %s\n", joycap.szPname); - } else { - ret1 = joyGetPos(JOYSTICKID2, &info); - ret2 = joyGetDevCaps(JOYSTICKID2, &joycap, sizeof(joycap)); - if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { - g_joystick_type = JOYSTICK_WIN32_2; - printf("--Joystick #2 = %s\n", joycap.szPname); - } else { - printf("No joysticks found...\n"); - g_joystick_type = JOYSTICK_MOUSE; - return; + g_joystick_native_type1 = JOYSTICKID1; + printf("Joystick #1 = %s\n", joycap.szPname); + g_joystick_native_type = JOYSTICKID1; + } + ret1 = joyGetPos(JOYSTICKID2, &info); + ret2 = joyGetDevCaps(JOYSTICKID2, &joycap, sizeof(joycap)); + if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { + g_joystick_native_type2 = JOYSTICKID2; + printf("Joystick #2 = %s\n", joycap.szPname); + if(g_joystick_native_type < 0) { + g_joystick_native_type = JOYSTICKID2; } - } for(i = 0; i < 4; i++) { - g_paddle_val[i] = 280; - g_paddle_button[i] = 1; + g_paddle_val[i] = 32767; } + g_paddle_buttons = 0xc; - joystick_update(); + joystick_update(0.0); } void -joystick_update() +joystick_update(double dcycs) { JOYCAPS joycap; JOYINFO info; UINT id; MMRESULT ret1, ret2; - id = JOYSTICKID1; - if(g_joystick_type == JOYSTICK_WIN32_2) { - id = JOYSTICKID2; - } + id = g_joystick_native_type; ret1 = joyGetDevCaps(id, &joycap, sizeof(joycap)); ret2 = joyGetPos(id, &info); if(ret1 == JOYERR_NOERROR && ret2 == JOYERR_NOERROR) { - g_paddle_val[0] = (info.wXpos - joycap.wXmin) * 280 / + g_paddle_val[0] = (info.wXpos - joycap.wXmin) * 32768 / (joycap.wXmax - joycap.wXmin); - g_paddle_val[1] = (info.wYpos - joycap.wYmin) * 280 / + g_paddle_val[1] = (info.wYpos - joycap.wYmin) * 32768 / (joycap.wYmax - joycap.wYmin); - g_paddle_button[0] = ((info.wButtons & JOY_BUTTON1) ? 1 : 0); - g_paddle_button[1] = ((info.wButtons & JOY_BUTTON2) ? 1 : 0); + if(info.wButtons & JOY_BUTTON1) { + g_paddle_buttons = g_paddle_buttons | 1; + } else { + g_paddle_buttons = g_paddle_buttons & (~1); + } + if(info.wButtons & JOY_BUTTON2) { + g_paddle_buttons = g_paddle_buttons | 2; + } else { + g_paddle_buttons = g_paddle_buttons & (~2); + } + paddle_update_trigger_dcycs(dcycs); } } void -joystick_update_button() +joystick_update_buttons() { JOYINFOEX info; UINT id; - id = JOYSTICKID1; - if(g_joystick_type == JOYSTICK_WIN32_2) { - id = JOYSTICKID2; - } + id = g_joystick_native_type; info.dwSize = sizeof(JOYINFOEX); info.dwFlags = JOY_RETURNBUTTONS; if(joyGetPosEx(id, &info) == JOYERR_NOERROR) { - g_paddle_button[0] = ((info.dwButtons & JOY_BUTTON1) ? 1 : 0); - g_paddle_button[1] = ((info.dwButtons & JOY_BUTTON2) ? 1 : 0); + if(info.dwButtons & JOY_BUTTON1) { + g_paddle_buttons = g_paddle_buttons | 1; + } else { + g_paddle_buttons = g_paddle_buttons & (~1); + } + if(info.dwButtons & JOY_BUTTON2) { + g_paddle_buttons = g_paddle_buttons | 2; + } else { + g_paddle_buttons = g_paddle_buttons & (~2); + } } } -# else +#endif +#ifndef JOYSTICK_DEFINED /* stubs for the routines */ void joystick_init() { - printf("No joy with joystick\n"); + g_joystick_native_type1 = -1; + g_joystick_native_type2 = -1; + g_joystick_native_type = -1; } void -joystick_update() +joystick_update(double dcycs) { + int i; + + for(i = 0; i < 4; i++) { + g_paddle_val[i] = 32767; + } + g_paddle_buttons = 0xc; } void -joystick_update_button() +joystick_update_buttons() { } - -# endif /* !WIN32 */ #endif diff --git a/src/macdriver.c b/src/macdriver.c index bc113f4..6084a84 100644 --- a/src/macdriver.c +++ b/src/macdriver.c @@ -1,6 +1,6 @@ /************************************************************************/ /* KEGS: Apple //gs Emulator */ -/* Copyright 2002 by Kent Dickey */ +/* Copyright 2002-2004 by Kent Dickey */ /* */ /* This code is covered by the GNU GPL */ /* */ @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_macdriver_c[] = "@(#)$KmKId: macdriver.c,v 1.19 2004-03-23 17:27:56-05 kentd Exp $"; +const char rcsid_macdriver_c[] = "@(#)$KmKId: macdriver.c,v 1.24 2004-11-14 10:23:29-05 kentd Exp $"; // Quartz: CreateCGContextForPort vs QDBeginCGContext @@ -16,6 +16,7 @@ const char rcsid_macdriver_c[] = "@(#)$KmKId: macdriver.c,v 1.19 2004-03-23 17:2 // Use CGPointMake to get a point #include +#include #include "defc.h" #include "protos_macdriver.h" @@ -25,6 +26,9 @@ const char rcsid_macdriver_c[] = "@(#)$KmKId: macdriver.c,v 1.19 2004-03-23 17:2 #define MAX_MAC_ARGS 128 WindowRef g_main_window; +WindowRef g_main_window_saved; +Rect g_main_window_saved_rect; +Ptr g_mac_fullscreen_state = 0; int g_quit_seen = 0; EventHandlerUPP g_quit_handler_UPP; EventHandlerUPP g_dummy_event_handler_UPP; @@ -32,6 +36,7 @@ RgnHandle g_event_rgnhandle = 0; int g_ignore_next_click = 0; int g_mainwin_active = 0; GDHandle g_gdhandle = 0; + int g_mac_mouse_x = 0; int g_mac_mouse_y = 0; @@ -43,6 +48,8 @@ int g_mac_argc = 0; char *g_mac_argv[MAX_MAC_ARGS]; word32 g_mac_shift_control_state = 0; extern char g_argv0_path[]; +extern char *g_fatal_log_strs[]; +extern int g_fatal_log; extern word32 g_red_mask; extern word32 g_green_mask; @@ -68,6 +75,13 @@ extern int g_send_sound_to_file; extern int g_quit_sim_now; extern int g_config_control_panel; +extern int g_video_act_width; +extern int g_video_act_height; +extern int g_video_act_margin_left; +extern int g_video_act_margin_right; +extern int g_video_act_margin_top; +extern int g_video_act_margin_bottom; + int g_auto_repeat_on = -1; int g_x_shift_control_state = 0; @@ -99,8 +113,7 @@ extern char *g_status_ptrs[MAX_STATUS_LINES]; extern const char g_kegs_version_str[]; #if 0 -char g_printf_buf[4096]; -int g_debug_file_fd = -1; +extern int g_debug_file_fd; /* HACK to debug startup issues when launched from Finder */ int @@ -110,7 +123,6 @@ printf(const char *fmt, ...) int ret; va_start(ap, fmt); - ret = vsnprintf(g_printf_buf, 4090, fmt, ap); if(g_debug_file_fd < 0) { g_debug_file_fd = open("/tmp/kegs.out", @@ -118,8 +130,7 @@ printf(const char *fmt, ...) fprintf(stdout, "g_debug_file_fd = %d, %d\n", g_debug_file_fd, errno); } - write(1, g_printf_buf, strlen(g_printf_buf)); - write(g_debug_file_fd, g_printf_buf, strlen(g_printf_buf)); + ret = kegs_vprintf(fmt, ap); va_end(ap); @@ -140,27 +151,103 @@ quit_event_handler(EventHandlerCallRef call_ref, EventRef event, void *ignore) } void -show_alert(const char *str1, const char *str2, const char *str3, int num) +show_simple_alert(char *str1, char *str2, char *str3, int num) { char buf[256]; - DialogRef alert; - DialogItemIndex out_item_hit; - CFStringRef cfstrref; + g_fatal_log_strs[0] = kegs_malloc_str(str1); + g_fatal_log_strs[1] = kegs_malloc_str(str2); + g_fatal_log_strs[2] = kegs_malloc_str(str3); + g_fatal_log = 3; if(num != 0) { - snprintf(buf, 250, "%s%s%s: %d", str1, str2, str3, num); - } else { - snprintf(buf, 250, "%s%s%s", str1, str2, str3); + snprintf(buf, 250, ": %d", num); + g_fatal_log_strs[g_fatal_log++] = kegs_malloc_str(buf); } - - cfstrref = CFStringCreateWithCString(NULL, buf, - kCFStringEncodingMacRoman); - - CreateStandardAlert(kAlertStopAlert, cfstrref, CFSTR("Click OK"), - NULL, &alert); - RunStandardAlert(alert, NULL, &out_item_hit); + x_show_alert(0, 0); } +void +x_dialog_create_kegs_conf(const char *str) +{ + char *path; + char tmp_buf[512]; + int ret; + + ret = x_show_alert(1, str); + if(ret) { + // Create empty file + path = "~/Library/KEGS"; + snprintf(tmp_buf, 500, "mkdir -p %s", path); + system(tmp_buf); + snprintf(tmp_buf, 500, "touch %s/%s", path, str); + system(tmp_buf); + } +} + +int +x_show_alert(int is_fatal, const char *str) +{ + DialogRef alert; + DialogItemIndex out_item_hit; + CFStringRef cfstrref, cfstrref2; + CFStringRef okstrref; + AlertStdCFStringAlertParamRec alert_param; + OSStatus osstat; + char *bufptr, *buf2ptr; + int sum, len; + int i; + + /* The dialog eats all events--including key-up events */ + /* Call adb_all_keys_up() to prevent annoying key-repeat problems */ + /* for instance, a key-down causes a dialog to appear--and the */ + /* eats the key-up event...then as soon as the dialog goes, adb.c */ + /* auto-repeat will repeat the key, and the dialog re-appears...*/ + adb_all_keys_up(); + + sum = 20; + for(i = 0; i < g_fatal_log; i++) { + sum += strlen(g_fatal_log_strs[i]); + } + bufptr = malloc(sum); + buf2ptr = bufptr; + for(i = 0; i < g_fatal_log; i++) { + len = strlen(g_fatal_log_strs[i]); + len = MIN(len, sum); + len = MAX(len, 0); + memcpy(bufptr, g_fatal_log_strs[i], MIN(len, sum)); + bufptr += len; + bufptr[0] = 0; + sum = sum - len; + } + + cfstrref = CFStringCreateWithCString(NULL, buf2ptr, + kCFStringEncodingMacRoman); + + printf("buf2ptr: :%s:\n", buf2ptr); + + osstat = GetStandardAlertDefaultParams(&alert_param, + kStdCFStringAlertVersionOne); + + if(str) { + // Provide an extra option--create a file + cfstrref2 = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, + CFSTR("Create ~/Library/KEGS/%s"), str); + alert_param.otherText = cfstrref2; + } + okstrref = CFSTR("Click OK to continue"); + if(is_fatal) { + okstrref = CFSTR("Clock OK to exit KEGS"); + } + CreateStandardAlert(kAlertStopAlert, cfstrref, okstrref, + &alert_param, &alert); + out_item_hit = -1; + RunStandardAlert(alert, NULL, &out_item_hit); + printf("out_item_hit: %d\n", out_item_hit); + free(buf2ptr); + + clear_fatal_logs(); /* free the fatal_log string memory */ + return (out_item_hit >= 3); +} pascal OSStatus @@ -182,13 +269,13 @@ my_cmd_handler( EventHandlerCallRef handlerRef, EventRef event, void *userdata) osresult = noErr; break; case 'abou': - show_alert("KEGSMAC v", g_kegs_version_str, + show_simple_alert("KEGSMAC v", (char *)g_kegs_version_str, ", Copyright 2004 Kent Dickey\n" "Latest version at http://kegs.sourceforge.net/\n", 0); osresult = noErr; break; case 'KCFG': - g_config_control_panel = !g_config_control_panel; + cfg_toggle_config_panel(); osresult = noErr; break; case 'quit': @@ -386,7 +473,7 @@ check_input_events() break; } if(err != noErr) { - printf("err: %d\n", (int)err); + printf("ReceiveNextEvent err: %d\n", (int)err); break; } @@ -488,8 +575,10 @@ check_input_events() } mac_warp_mouse(); } else { - g_mac_mouse_x = mouse_point.h -BASE_MARGIN_LEFT; - g_mac_mouse_y = mouse_point.v -BASE_MARGIN_TOP; + g_mac_mouse_x = mouse_point.h - + g_video_act_margin_left; + g_mac_mouse_y = mouse_point.v - + g_video_act_margin_top; } #if 0 @@ -723,6 +812,8 @@ main(int argc, char* argv[]) } // show_alert("About to show window", (int)g_main_window); + update_main_window_size(); + update_window(); // The window was created hidden so show it. @@ -742,7 +833,7 @@ main(int argc, char* argv[]) CantCreateWindow: CantSetMenuBar: CantGetNibRef: - show_alert("ending", "", "error code", err); + show_simple_alert("ending", "", "error code", err); return err; } @@ -773,6 +864,9 @@ xdriver_end() { printf("xdriver_end\n"); + if(g_fatal_log >= 0) { + x_show_alert(1, 0); + } } void @@ -932,6 +1026,12 @@ x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, void x_push_done() { + CGrafPtr window_port; + + SetPortWindowPort(g_main_window); + window_port = GetWindowPort(g_main_window); + + QDFlushPortBuffer(window_port, 0); } void @@ -953,3 +1053,73 @@ x_hide_pointer(int do_hide) ShowCursor(); } } + +void +x_full_screen(int do_full) +{ + WindowRef new_window; + short width, height; + OSErr ret; + + width = 640; + height = 480; + if(do_full && (g_mac_fullscreen_state == 0)) { + g_main_window_saved = g_main_window; + + GetWindowBounds(g_main_window, kWindowContentRgn, + &g_main_window_saved_rect); + ret = BeginFullScreen(&g_mac_fullscreen_state, 0, + &width, &height, &new_window, 0, 0); + printf("Ret beginfullscreen: %d\n", (int)ret); + printf("New width: %d, new height: %d\n", width, height); + if(ret == noErr) { + g_main_window = new_window; + } else { + g_mac_fullscreen_state = 0; + } + } else if(!do_full && (g_mac_fullscreen_state != 0)) { + ret = EndFullScreen(g_mac_fullscreen_state, 0); + printf("ret endfullscreen: %d\n", (int)ret); + g_main_window = g_main_window_saved; + g_mac_fullscreen_state = 0; + //InitCursor(); + SetWindowBounds(g_main_window, kWindowContentRgn, + &g_main_window_saved_rect); + } + + update_main_window_size(); + + ShowWindow(g_main_window); + BringToFront(g_main_window); + update_window(); +} + +void +update_main_window_size() +{ + Rect win_rect; + int width, height; + int left, excess_height; + int top, bottom; + + GetPortBounds(GetWindowPort(g_main_window), &win_rect); + width = win_rect.right - win_rect.left; + height = win_rect.bottom - win_rect.top; + g_video_act_width = width; + g_video_act_height = height; + + left = MAX(0, (width - A2_WINDOW_WIDTH) / 2); + left = MIN(left, BASE_MARGIN_LEFT); + g_video_act_margin_left = left; + g_video_act_margin_right = left; + + + excess_height = (height - A2_WINDOW_HEIGHT) / 2; + bottom = MAX(0, excess_height / 2); // No less than 0 + bottom = MIN(BASE_MARGIN_BOTTOM, bottom); // No more than 30 + g_video_act_margin_bottom = bottom; + excess_height -= bottom; + top = MAX(0, excess_height); + top = MIN(BASE_MARGIN_TOP, top); + g_video_act_margin_top = top; +} diff --git a/src/moremem.c b/src/moremem.c index 30425e7..d4235f8 100644 --- a/src/moremem.c +++ b/src/moremem.c @@ -8,12 +8,10 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_moremem_c[] = "@(#)$KmKId: moremem.c,v 1.233 2004-03-23 17:27:14-05 kentd Exp $"; +const char rcsid_moremem_c[] = "@(#)$KmKId: moremem.c,v 1.251 2004-11-19 01:55:50-05 kentd Exp $"; #include "defc.h" -extern int daylight; - extern char g_kegs_version_str[]; extern byte *g_memory_ptr; @@ -21,34 +19,46 @@ extern byte *g_dummy_memory1_ptr; extern byte *g_slow_memory_ptr; extern byte *g_rom_fc_ff_ptr; extern byte *g_rom_cards_ptr; -extern word32 g_mem_size_total; extern word32 slow_mem_changed[]; extern int g_num_breakpoints; extern word32 g_breakpts[]; -extern int halt_sim; -extern double g_last_vbl_dcycs; - extern Page_info page_info_rd_wr[]; -extern int scr_mode; - extern int Verbose; -extern int Halt_on; -extern double g_paddle_trig_dcycs; extern int g_rom_version; +extern int g_user_page2_shadow; -extern int g_paddle_button[4]; - -extern Fplus *g_cur_fplus_ptr; /* from iwm.c */ -extern int head_35; -extern int g_apple35_sel; -extern int cur_drive; +int g_num_shadow_all_banks = 0; +#define IOR(val) ( (val) ? 0x80 : 0x00 ) + + +extern int g_cur_a2_stat; + +int g_em_emubyte_cnt = 0; +int g_paddle_buttons = 0; +int g_irq_pending = 0; + +int g_c023_val = 0; +int g_c029_val_some = 0x41; +int g_c02b_val = 0x08; +int g_c02d_int_crom = 0; +int g_c031_disk35 = 0; +int g_c033_data = 0; +int g_c034_val = 0; +int g_c035_shadow_reg = 0x08; +int g_c036_val_speed = 0x80; +int g_c03ef_doc_ptr = 0; +int g_c041_val = 0; /* C041_EN_25SEC_INTS, C041_EN_MOVE_INTS */ +int g_c046_val = 0; +int g_c05x_annuncs = 0; +int g_c068_statereg = 0; +int g_c08x_wrdefram = 0; int g_zipgs_unlock = 0; int g_zipgs_reg_c059 = 0x5f; // 7=LC cache dis, 6==5ms paddle del en, 5==5ms ext del en, @@ -63,62 +73,52 @@ int g_zipgs_reg_c05b = 0x40; int g_zipgs_reg_c05c = 0x00; // 7:1==slot delay enable (for 52-54ms), 0==speaker 5ms delay -int g_emubyte_cnt = 0; +#define EMUSTATE(a) { #a, &a } -int statereg; -int halt_on_c02a = 0; -int g_shadow_all_banks = 0; -int g_num_shadow_all_banks = 0; +Emustate_intlist g_emustate_intlist[] = { + EMUSTATE(g_cur_a2_stat), + EMUSTATE(g_paddle_buttons), -extern Engine_reg engine; + EMUSTATE(g_em_emubyte_cnt), + EMUSTATE(g_irq_pending), + EMUSTATE(g_c023_val), + EMUSTATE(g_c029_val_some), + EMUSTATE(g_c02b_val), + EMUSTATE(g_c02d_int_crom), + EMUSTATE(g_c031_disk35), + EMUSTATE(g_c033_data), + EMUSTATE(g_c034_val), + EMUSTATE(g_c035_shadow_reg), + EMUSTATE(g_c036_val_speed), + EMUSTATE(g_c03ef_doc_ptr), + EMUSTATE(g_c041_val), + EMUSTATE(g_c046_val), + EMUSTATE(g_c05x_annuncs), + EMUSTATE(g_c068_statereg), + EMUSTATE(g_c08x_wrdefram), + EMUSTATE(g_zipgs_unlock), + EMUSTATE(g_zipgs_reg_c059), + EMUSTATE(g_zipgs_reg_c05a), + EMUSTATE(g_zipgs_reg_c05b), + EMUSTATE(g_zipgs_reg_c05c), + { 0, 0, } +}; -#define IOR(val) ( (val) ? 0x80 : 0x00 ) +extern double g_paddle_trig_dcycs; +extern double g_last_vbl_dcycs; -int linear_vid = 1; -int bank1latch = 0; +Emustate_dbllist g_emustate_dbllist[] = { + EMUSTATE(g_paddle_trig_dcycs), + EMUSTATE(g_last_vbl_dcycs), + { 0, 0, } +}; -int wrdefram = 0; -int int_crom[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +extern word32 g_mem_size_total; -extern int g_cur_a2_stat; - -int annunc_0 = 0; -int annunc_1 = 0; -int annunc_2 = 0; - -int shadow_reg = 0x08; - -int stop_on_c03x = 0; - -extern int doc_ptr; - -int shadow_text = 1; - -int g_border_color = 0; - -int speed_fast = 1; -word32 g_slot_motor_detect = 0; -int power_on_clear = 0; - - -int g_c023_val = 0; -int c023_scan_int_irq_pending = 0; -int c023_1sec_int_irq_pending = 0; - -int c02b_val = 0x08; - -int c039_write_val = 0; - -int c041_en_25sec_ints = 0; -int c041_en_vbl_ints = 0; -int c041_en_switch_ints = 0; -int c041_en_move_ints = 0; -int c041_en_mouse = 0; - -int g_c046_val = 0; - -int c046_25sec_irq_pend = 0; -int c046_vbl_irq_pending = 0; +Emustate_word32list g_emustate_word32list[] = { + EMUSTATE(g_mem_size_total), + { 0, 0, } +}; #define UNIMPL_READ \ @@ -135,15 +135,19 @@ fixup_brks() word32 page; word32 tmp, tmp2; Pg_info val; + int is_wr_only; int i, num; num = g_num_breakpoints; for(i = 0; i < num; i++) { page = (g_breakpts[i] >> 8) & 0xffff; - val = GET_PAGE_INFO_RD(page); - tmp = PTR2WORD(val) & 0xff; - tmp2 = tmp | BANK_IO_TMP | BANK_BREAK; - SET_PAGE_INFO_RD(page, val - tmp + tmp2); + is_wr_only = (g_breakpts[i] >> 24) & 1; + if(!is_wr_only) { + val = GET_PAGE_INFO_RD(page); + tmp = PTR2WORD(val) & 0xff; + tmp2 = tmp | BANK_IO_TMP | BANK_BREAK; + SET_PAGE_INFO_RD(page, val - tmp + tmp2); + } val = GET_PAGE_INFO_WR(page); tmp = PTR2WORD(val) & 0xff; tmp2 = tmp | BANK_IO_TMP | BANK_BREAK; @@ -171,13 +175,14 @@ fixup_bank0_2000_4000() mem0rd = &(g_memory_ptr[0x2000]); mem0wr = mem0rd; if((g_cur_a2_stat & ALL_STAT_ST80) && (g_cur_a2_stat & ALL_STAT_HIRES)){ - if(PAGE2) { + if(g_cur_a2_stat & ALL_STAT_PAGE2) { mem0rd += 0x10000; mem0wr += 0x10000; - if((shadow_reg & 0x12) == 0 || (shadow_reg & 0x8) == 0){ + if((g_c035_shadow_reg & 0x12) == 0 || + (g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } - } else if((shadow_reg & 0x02) == 0) { + } else if((g_c035_shadow_reg & 0x02) == 0) { mem0wr += BANK_SHADOW; } @@ -187,10 +192,11 @@ fixup_bank0_2000_4000() } if(RAMWRT) { mem0wr += 0x10000; - if((shadow_reg & 0x12) == 0 || (shadow_reg & 0x8) == 0){ + if((g_c035_shadow_reg & 0x12) == 0 || + (g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } - } else if((shadow_reg & 0x02) == 0) { + } else if((g_c035_shadow_reg & 0x02) == 0) { mem0wr += BANK_SHADOW; } } @@ -209,7 +215,7 @@ fixup_bank0_0400_0800() mem0wr = mem0rd; shadow = BANK_SHADOW; if(g_cur_a2_stat & ALL_STAT_ST80) { - if(PAGE2) { + if(g_cur_a2_stat & ALL_STAT_PAGE2) { shadow = BANK_SHADOW2; mem0rd += 0x10000; mem0wr += 0x10000; @@ -223,7 +229,7 @@ fixup_bank0_0400_0800() mem0rd += 0x10000; } } - if((shadow_reg & 0x01) == 0) { + if((g_c035_shadow_reg & 0x01) == 0) { mem0wr += shadow; } @@ -256,12 +262,12 @@ fixup_intcx() int no_io_shadow; int off; int start_k; - int indx; + word32 mask; int j, k; rom10000 = &(g_rom_fc_ff_ptr[0x30000]); - no_io_shadow = (shadow_reg & 0x40); + no_io_shadow = (g_c035_shadow_reg & 0x40); start_k = 0; if(no_io_shadow) { @@ -280,10 +286,10 @@ fixup_intcx() SET_PAGE_INFO_RD(0xc0 + off, SET_BANK_IO); for(j = 0xc1; j < 0xc8; j++) { - indx = j & 0xf; + mask = 1 << (j & 0xf); if(j < 0xc8) { rom_inc = SET_BANK_IO; - if((int_crom[indx] == 0) || INTCX) { + if(((g_c02d_int_crom & mask) == 0) || INTCX) { rom_inc = rom10000 + (j << 8); } else { // User-slot rom @@ -295,7 +301,7 @@ fixup_intcx() } for(j = 0xc8; j < 0xd0; j++) { /* c800 - cfff */ - if(int_crom[3] == 0 || INTCX) { + if(((g_c02d_int_crom & (1 << 3)) == 0) || INTCX) { rom_inc = rom10000 + (j << 8); } else { /* c800 space not necessarily mapped */ @@ -323,9 +329,9 @@ fixup_wrdefram(int new_wrdefram) byte *wrptr; int j; - wrdefram = new_wrdefram; + g_c08x_wrdefram = new_wrdefram; - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { /* do nothing */ return; } @@ -390,7 +396,7 @@ fixup_st80col(double dcycs) fixup_bank0_2000_4000(); } - if(PAGE2) { + if(cur_a2_stat & ALL_STAT_PAGE2) { change_display_mode(dcycs); } @@ -401,6 +407,7 @@ void fixup_altzp() { byte *mem0rd, *mem0wr; + int rdrom, c08x_wrdefram; int altzp; altzp = ALTZP; @@ -415,15 +422,19 @@ fixup_altzp() mem0rd = &(g_memory_ptr[0xd000]); mem0wr = mem0rd; + c08x_wrdefram = g_c08x_wrdefram; + rdrom = RDROM; - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { if(ALTZP) { mem0rd += 0x10000; } fixup_any_bank_any_page(0xd0, 0x10, mem0rd - 0x1000, mem0rd - 0x1000); + c08x_wrdefram = 1; + rdrom = 0; } else { - if(!wrdefram) { + if(!c08x_wrdefram) { mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); } if(ALTZP) { @@ -434,7 +445,7 @@ fixup_altzp() mem0rd -= 0x1000; mem0wr -= 0x1000; } - if(RDROM) { + if(rdrom) { mem0rd = &(g_rom_fc_ff_ptr[0x3d000]); } fixup_any_bank_any_page(0xd0, 0x10, mem0rd, mem0wr); @@ -442,17 +453,19 @@ fixup_altzp() mem0rd = &(g_memory_ptr[0xe000]); mem0wr = mem0rd; - if(!wrdefram) { + if(!c08x_wrdefram) { mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); } if(ALTZP) { mem0rd += 0x10000; mem0wr += 0x10000; } - if(RDROM) { + if(rdrom) { mem0rd = &(g_rom_fc_ff_ptr[0x3e000]); } fixup_any_bank_any_page(0xe0, 0x20, mem0rd, mem0wr); + + /* No need for fixup_brks since called from set_statereg() */ } void @@ -500,6 +513,8 @@ fixup_ramrd() for(j = 0x40; j < 0xc0; j++) { SET_PAGE_INFO_RD(j, mem0rd + j*0x100); } + + /* No need for fixup_brks since only called from set_statereg() */ } void @@ -534,7 +549,8 @@ fixup_ramwrt() if(ramwrt) { shadow = BANK_SHADOW2; } - if(((shadow_reg & 0x20) != 0) || g_rom_version < 3) { + if( ((g_c035_shadow_reg & 0x20) != 0) || + ((g_rom_version < 3) && !g_user_page2_shadow)) { shadow = 0; } for(j = 8; j < 0x0c; j++) { @@ -547,10 +563,11 @@ fixup_ramwrt() shadow = 0; if(ramwrt) { - if((shadow_reg & 0x14) == 0 || (shadow_reg & 0x08) == 0) { + if((g_c035_shadow_reg & 0x14) == 0 || + (g_c035_shadow_reg & 0x08) == 0) { shadow = BANK_SHADOW2; } - } else if((shadow_reg & 0x04) == 0) { + } else if((g_c035_shadow_reg & 0x04) == 0) { shadow = BANK_SHADOW; } for(j = 0x40; j < 0x60; j++) { @@ -558,7 +575,7 @@ fixup_ramwrt() } shadow = 0; - if(ramwrt && (shadow_reg & 0x08) == 0) { + if(ramwrt && (g_c035_shadow_reg & 0x08) == 0) { /* shr shadowing */ shadow = BANK_SHADOW2; } @@ -569,12 +586,15 @@ fixup_ramwrt() for(j = 0xa0; j < 0xc0; j++) { SET_PAGE_INFO_WR(j, mem0wr + j*0x100); } + + /* No need for fixup_brks() since only called from set_statereg() */ } void fixup_lcbank2() { byte *mem0rd, *mem0wr; + int lcbank2, c08x_wrdefram, rdrom; int off; int k; @@ -593,19 +613,30 @@ fixup_lcbank2() if((k == 0) && ALTZP) { mem0rd += 0x10000; } - if(! LCBANK2) { + lcbank2 = LCBANK2; + c08x_wrdefram = g_c08x_wrdefram; + rdrom = RDROM; + if((k < 2) && (g_c035_shadow_reg & 0x40)) { + lcbank2 = 0; + c08x_wrdefram = 1; + rdrom = 0; + } + if(! lcbank2) { mem0rd -= 0x1000; /* lcbank1, use 0xc000-cfff */ } mem0wr = mem0rd; - if((k < 2) && !wrdefram) { + if((k < 2) && !c08x_wrdefram) { mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); } - if((k < 2) && RDROM) { + if((k < 2) && rdrom) { mem0rd = &(g_rom_fc_ff_ptr[0x30000]); } fixup_any_bank_any_page(off*0x100 + 0xd0, 0x10, mem0rd + 0xd000, mem0wr + 0xd000); } + + /* No need for fixup_brks() since only called from set_statereg(), */ + /* or from other routines which will handle it */ } void @@ -623,7 +654,7 @@ fixup_rdrom() if((k == 0) && ALTZP) { mem0rd += 0x10000; } - if((shadow_reg & 0x40) == 0) { + if((g_c035_shadow_reg & 0x40) == 0) { if(RDROM) { mem0rd = &(g_rom_fc_ff_ptr[0x30000]); } @@ -633,6 +664,7 @@ fixup_rdrom() } } + /* No need for fixup_brks() since only called from set_statereg() */ } void @@ -640,8 +672,8 @@ set_statereg(double dcycs, int val) { int xor; - xor = val ^ statereg; - statereg = val; + xor = val ^ g_c068_statereg; + g_c068_statereg = val; if(xor == 0) { return; } @@ -652,6 +684,8 @@ set_statereg(double dcycs, int val) } if(xor & 0x40) { /* page2 */ + g_cur_a2_stat = (g_cur_a2_stat & ~ALL_STAT_PAGE2) | + (val & ALL_STAT_PAGE2); fixup_page2(dcycs); } @@ -698,7 +732,7 @@ fixup_shadow_txt1() fixup_bank0_0400_0800(); mem0wr = &(g_memory_ptr[0x10000]); - if((shadow_reg & 0x01) == 0) { + if((g_c035_shadow_reg & 0x01) == 0) { mem0wr += BANK_SHADOW2; } for(j = 4; j < 8; j++) { @@ -720,7 +754,8 @@ fixup_shadow_txt2() mem0wr += 0x10000; shadow = BANK_SHADOW2; } - if(((shadow_reg & 0x20) == 0) && (g_rom_version >= 3)) { + if(((g_c035_shadow_reg & 0x20) == 0) && + ((g_rom_version >= 3) || g_user_page2_shadow)) { mem0wr += shadow; } for(j = 8; j < 0xc; j++) { @@ -729,7 +764,8 @@ fixup_shadow_txt2() /* and bank 1 */ mem0wr = &(g_memory_ptr[0x10000]); - if(((shadow_reg & 0x20) == 0) && (g_rom_version >= 3)) { + if(((g_c035_shadow_reg & 0x20) == 0) && + ((g_rom_version >= 3) || g_user_page2_shadow)) { mem0wr += BANK_SHADOW2; } for(j = 8; j < 0xc; j++) { @@ -747,7 +783,7 @@ fixup_shadow_hires1() /* and bank 1 */ mem0wr = &(g_memory_ptr[0x10000]); - if((shadow_reg & 0x12) == 0 || (shadow_reg & 0x8) == 0) { + if((g_c035_shadow_reg & 0x12) == 0 || (g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } for(j = 0x20; j < 0x40; j++) { @@ -765,10 +801,11 @@ fixup_shadow_hires2() mem0wr = &(g_memory_ptr[0x00000]); if(RAMWRT) { mem0wr += 0x10000; - if((shadow_reg & 0x14) == 0 || (shadow_reg & 0x8) == 0) { + if((g_c035_shadow_reg & 0x14) == 0 || + (g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } - } else if((shadow_reg & 0x04) == 0) { + } else if((g_c035_shadow_reg & 0x04) == 0) { mem0wr += BANK_SHADOW; } for(j = 0x40; j < 0x60; j++) { @@ -777,7 +814,7 @@ fixup_shadow_hires2() /* and bank 1 */ mem0wr = &(g_memory_ptr[0x10000]); - if((shadow_reg & 0x14) == 0 || (shadow_reg & 0x8) == 0) { + if((g_c035_shadow_reg & 0x14) == 0 || (g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } for(j = 0x40; j < 0x60; j++) { @@ -795,7 +832,7 @@ fixup_shadow_shr() mem0wr = &(g_memory_ptr[0x00000]); if(RAMWRT) { mem0wr += 0x10000; - if((shadow_reg & 0x8) == 0) { + if((g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } } @@ -805,7 +842,7 @@ fixup_shadow_shr() /* and bank 1, only pages 0x60 - 0xa0 */ mem0wr = &(g_memory_ptr[0x10000]); - if((shadow_reg & 0x8) == 0) { + if((g_c035_shadow_reg & 0x8) == 0) { mem0wr += BANK_SHADOW2; } for(j = 0x60; j < 0xa0; j++) { @@ -816,12 +853,13 @@ fixup_shadow_shr() void fixup_shadow_iolc() { - byte *mem0rd, *mem0wr; + byte *mem0rd; int k; - for(k = 0; k < 2; k++) { - mem0rd = &(g_memory_ptr[k << 16]); - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { + /* Disable language card area */ + for(k = 0; k < 2; k++) { + mem0rd = &(g_memory_ptr[k << 16]); fixup_any_bank_any_page((k << 8) + 0xc0, 0x10, mem0rd + 0xd000, mem0rd + 0xd000); if(k == 0 && ALTZP) { @@ -831,26 +869,19 @@ fixup_shadow_iolc() mem0rd + 0xc000, mem0rd + 0xc000); fixup_any_bank_any_page((k << 8) + 0xe0, 0x20, mem0rd + 0xe000, mem0rd + 0xe000); - } else { - /* 0xc000 area */ - fixup_intcx(); - - /* 0xd000 area */ - fixup_lcbank2(); - - if(k == 0 && ALTZP) { - mem0rd += 0x10000; - } - mem0wr = mem0rd; - if(!wrdefram) { - mem0wr += (BANK_IO_TMP | BANK_IO2_TMP); - } - if(RDROM) { - mem0rd = &(g_rom_fc_ff_ptr[0x30000]); - } - fixup_any_bank_any_page((k << 8) + 0xe0, 0x20, - mem0rd + 0xe000, mem0wr + 0xe000); } + } else { + /* 0xc000 area */ + fixup_intcx(); + + /* 0xd000 area */ + /* fixup_lcbank2(); -- not needed since fixup_rdrom does it */ + + /* Fix 0xd000-0xffff for reads, banks 0 and 1 */ + fixup_rdrom(); /* which calls fixup_lcbank2 */ + + /* Fix 0xd000-0xffff for writes, banks 0 and 1 */ + fixup_wrdefram(g_c08x_wrdefram); } } @@ -859,12 +890,12 @@ update_shadow_reg(int val) { int xor; - if(shadow_reg == val) { + if(g_c035_shadow_reg == val) { return; } - xor = shadow_reg ^ val; - shadow_reg = val; + xor = g_c035_shadow_reg ^ val; + g_c035_shadow_reg = val; if(xor & 8) { fixup_shadow_hires1(); @@ -886,12 +917,15 @@ update_shadow_reg(int val) if(xor & 1) { fixup_shadow_txt1(); } - if((xor & 0x20) && g_rom_version >= 3) { + if((xor & 0x20) && ((g_rom_version >= 3) || g_user_page2_shadow)) { fixup_shadow_txt2(); } if(xor & 0x40) { fixup_shadow_iolc(); } + if(xor) { + fixup_brks(); + } } void @@ -906,7 +940,7 @@ fixup_shadow_all_banks() /* only do banks 3 - num_banks by 2, shadowing into e1 */ shadow = 0; - if(g_shadow_all_banks && ((shadow_reg & 0x08) == 0)) { + if((g_c036_val_speed & 0x10) && ((g_c035_shadow_reg & 0x08) == 0)) { shadow = BANK_SHADOW2; } num_banks = g_mem_size_total >> 16; @@ -917,6 +951,8 @@ fixup_shadow_all_banks() mem0rd += 0x100; } } + + fixup_brks(); } void @@ -966,7 +1002,7 @@ setup_pageinfo() fixup_bank0_2000_4000(); fixup_bank0_0400_0800(); - fixup_wrdefram(wrdefram); + fixup_wrdefram(g_c08x_wrdefram); fixup_altzp(); fixup_ramrd(); fixup_ramwrt(); @@ -987,7 +1023,7 @@ show_bankptrs_bank0rdwr() show_bankptrs(1); show_bankptrs(0xe0); show_bankptrs(0xe1); - printf("statereg: %02x\n", statereg); + printf("statereg: %02x\n", g_c068_statereg); } void @@ -1039,20 +1075,10 @@ show_addr(byte *ptr) } -#if 0 -#define CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc) \ - fcyc = *cyc_ptr; \ - new_fcyc = (int)(fcyc + g_cur_fplus_ptr->plus_x_minus_1); \ - *cyc_ptr = new_fcyc; \ - dcycs = g_last_vbl_dcycs + new_fcyc; -#endif - #define CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc) \ dcycs = g_last_vbl_dcycs + *cyc_ptr; -int dummy = 0; - int io_read(word32 loc, double *cyc_ptr) { @@ -1061,10 +1087,10 @@ io_read(word32 loc, double *cyc_ptr) #if 0 double fcyc, new_fcyc; #endif + word32 mask; int new_lcbank2; int new_wrdefram; int tmp; - int slot; int i; CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc); @@ -1096,7 +1122,7 @@ io_read(word32 loc, double *cyc_ptr) case 0x16: /* c016: ALTZP */ return IOR(ALTZP); case 0x17: /* c017: rdc3rom */ - return IOR(int_crom[3]); + return IOR(g_c02d_int_crom & (1 << 3)); case 0x18: /* c018: rd80c0l */ return IOR((g_cur_a2_stat & ALL_STAT_ST80)); case 0x19: /* c019: rdvblbar */ @@ -1107,7 +1133,7 @@ io_read(word32 loc, double *cyc_ptr) case 0x1b: /* c01b: rdmix */ return IOR(g_cur_a2_stat & ALL_STAT_MIX_T_GR); case 0x1c: /* c01c: rdpage2 */ - return IOR(PAGE2); + return IOR(g_cur_a2_stat & ALL_STAT_PAGE2); case 0x1d: /* c01d: rdhires */ return IOR(g_cur_a2_stat & ALL_STAT_HIRES); case 0x1e: /* c01e: altcharset on? */ @@ -1120,7 +1146,8 @@ io_read(word32 loc, double *cyc_ptr) /* Click cassette port */ return 0x00; case 0x21: /* 0xc021 */ - UNIMPL_READ; + /* Not documented, but let's return COLOR_C021 */ + return IOR(g_cur_a2_stat & ALL_STAT_COLOR_C021); case 0x22: /* 0xc022 */ return (g_cur_a2_stat >> BIT_ALL_STAT_BG_COLOR) & 0xff; case 0x23: /* 0xc023 */ @@ -1136,23 +1163,19 @@ io_read(word32 loc, double *cyc_ptr) case 0x28: /* 0xc028 */ UNIMPL_READ; case 0x29: /* 0xc029 */ - return((g_cur_a2_stat & 0xa0) | (linear_vid<<6) | - (bank1latch)); + return((g_cur_a2_stat & 0xa0) | g_c029_val_some); case 0x2a: /* 0xc02a */ #if 0 printf("Reading c02a...returning 0\n"); #endif return 0; case 0x2b: /* 0xc02b */ - return c02b_val; + return g_c02b_val; case 0x2c: /* 0xc02c */ /* printf("reading c02c, returning 0\n"); */ return 0; case 0x2d: /* 0xc02d */ - tmp = 0; - for(i = 0; i < 8; i++) { - tmp = tmp | (int_crom[i] << i); - } + tmp = g_c02d_int_crom; return tmp; case 0x2e: /* 0xc02e */ case 0x2f: /* 0xc02f */ @@ -1164,20 +1187,18 @@ io_read(word32 loc, double *cyc_ptr) return doc_read_c030(dcycs); case 0x31: /* 0xc031 */ /* 3.5" control */ - return (head_35 << 7) | (g_apple35_sel << 6); + return g_c031_disk35; case 0x32: /* 0xc032 */ /* scan int */ return 0; case 0x33: /* 0xc033 = CLOCKDATA*/ - return clock_read_c033(); + return g_c033_data; case 0x34: /* 0xc034 = CLOCKCTL */ - return clock_read_c034(); + return g_c034_val; case 0x35: /* 0xc035 */ - return shadow_reg; + return g_c035_shadow_reg; case 0x36: /* 0xc036 = CYAREG */ - tmp = (speed_fast << 7) + (power_on_clear << 6) + - (g_shadow_all_banks << 4) + g_slot_motor_detect; - return tmp; + return g_c036_val_speed; case 0x37: /* 0xc037 */ return 0; case 0x38: /* 0xc038 */ @@ -1194,20 +1215,16 @@ io_read(word32 loc, double *cyc_ptr) case 0x3d: /* 0xc03d */ return doc_read_c03d(dcycs); case 0x3e: /* 0xc03e */ - return (doc_ptr & 0xff); + return (g_c03ef_doc_ptr & 0xff); case 0x3f: /* 0xc03f */ - return (doc_ptr >> 8); + return (g_c03ef_doc_ptr >> 8); /* 0xc040 - 0xc04f */ case 0x40: /* 0xc040 */ /* cassette */ return 0; case 0x41: /* 0xc041 */ - tmp = ((c041_en_25sec_ints << 4) + - (c041_en_vbl_ints << 3) + - (c041_en_switch_ints << 2) + - (c041_en_move_ints << 1) + (c041_en_mouse) ); - return tmp; + return g_c041_val; case 0x45: /* 0xc045 */ halt_printf("Mega II mouse read: c045\n"); return 0; @@ -1216,14 +1233,8 @@ io_read(word32 loc, double *cyc_ptr) g_c046_val = (tmp & 0xbf) + ((tmp & 0x80) >> 1); return tmp; case 0x47: /* 0xc047 */ - if(c046_vbl_irq_pending) { - remove_irq(); - c046_vbl_irq_pending = 0; - } - if(c046_25sec_irq_pend) { - remove_irq(); - c046_25sec_irq_pend = 0; - } + remove_irq(IRQ_PENDING_C046_25SEC | + IRQ_PENDING_C046_VBL); g_c046_val &= 0xe7; /* clear vbl_int, 1/4sec int*/ return 0; case 0x42: /* 0xc042 */ @@ -1235,17 +1246,17 @@ io_read(word32 loc, double *cyc_ptr) /* write to $c04f to start. Then read $c04f to get */ /* emulator ($16=sweet16, $fe=bernie II). */ /* Then read again to get version: $21 == 2.1 */ - switch(g_emubyte_cnt) { + switch(g_em_emubyte_cnt) { case 1: - g_emubyte_cnt = 2; + g_em_emubyte_cnt = 2; return 'K'; case 2: - g_emubyte_cnt = 0; + g_em_emubyte_cnt = 0; tmp = g_kegs_version_str[0] - '0'; i = g_kegs_version_str[2] - '0'; return ((tmp & 0xf) << 4) + (i & 0xf); default: - g_emubyte_cnt = 0; + g_em_emubyte_cnt = 0; return 0; } case 0x44: /* 0xc044 */ @@ -1264,62 +1275,62 @@ io_read(word32 loc, double *cyc_ptr) g_cur_a2_stat &= (~ALL_STAT_TEXT); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x51: /* 0xc051 */ if((g_cur_a2_stat & ALL_STAT_TEXT) == 0) { g_cur_a2_stat |= (ALL_STAT_TEXT); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x52: /* 0xc052 */ if(g_cur_a2_stat & ALL_STAT_MIX_T_GR) { g_cur_a2_stat &= (~ALL_STAT_MIX_T_GR); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x53: /* 0xc053 */ if((g_cur_a2_stat & ALL_STAT_MIX_T_GR) == 0) { g_cur_a2_stat |= (ALL_STAT_MIX_T_GR); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x54: /* 0xc054 */ - set_statereg(dcycs, statereg & (~0x40)); - return 0; + set_statereg(dcycs, g_c068_statereg & (~0x40)); + return float_bus(dcycs); case 0x55: /* 0xc055 */ - set_statereg(dcycs, statereg | 0x40); - return 0; + set_statereg(dcycs, g_c068_statereg | 0x40); + return float_bus(dcycs); case 0x56: /* 0xc056 */ if(g_cur_a2_stat & ALL_STAT_HIRES) { g_cur_a2_stat &= (~ALL_STAT_HIRES); fixup_hires_on(); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x57: /* 0xc057 */ if((g_cur_a2_stat & ALL_STAT_HIRES) == 0) { g_cur_a2_stat |= (ALL_STAT_HIRES); fixup_hires_on(); change_display_mode(dcycs); } - return 0; + return float_bus(dcycs); case 0x58: /* 0xc058 */ if(g_zipgs_unlock < 4) { - annunc_0 = 0; + g_c05x_annuncs &= (~1); } return 0; case 0x59: /* 0xc059 */ if(g_zipgs_unlock >= 4) { return g_zipgs_reg_c059; } else { - annunc_0 = 1; + g_c05x_annuncs |= 1; } return 0; case 0x5a: /* 0xc05a */ if(g_zipgs_unlock >= 4) { return g_zipgs_reg_c05a; } else { - annunc_1 = 0; + g_c05x_annuncs &= (~2); } return 0; case 0x5b: /* 0xc05b */ @@ -1328,21 +1339,21 @@ io_read(word32 loc, double *cyc_ptr) tmp = (word64_tmp >> 9) & 1; return (tmp << 7) + (g_zipgs_reg_c05b & 0x7f); } else { - annunc_1 = 1; + g_c05x_annuncs |= 2; } return 0; case 0x5c: /* 0xc05c */ if(g_zipgs_unlock >= 4) { return g_zipgs_reg_c05c; } else { - annunc_2 = 0; + g_c05x_annuncs &= (~4); } return 0; case 0x5d: /* 0xc05d */ if(g_zipgs_unlock >= 4) { halt_printf("Reading ZipGS $c05d!\n"); } else { - annunc_2 = 1; + g_c05x_annuncs |= 4; } return 0; case 0x5e: /* 0xc05e */ @@ -1365,24 +1376,25 @@ io_read(word32 loc, double *cyc_ptr) /* 0xc060 - 0xc06f */ case 0x60: /* 0xc060 */ - return IOR(g_paddle_button[3]); + return IOR(g_paddle_buttons & 8); case 0x61: /* 0xc061 */ - return IOR(adb_is_cmd_key_down() || g_paddle_button[0]); + return IOR(adb_is_cmd_key_down() || + g_paddle_buttons & 1); case 0x62: /* 0xc062 */ return IOR(adb_is_option_key_down() || - g_paddle_button[1]); + g_paddle_buttons & 2); case 0x63: /* 0xc063 */ - return IOR(g_paddle_button[2]); + return IOR(g_paddle_buttons & 4); case 0x64: /* 0xc064 */ - return read_paddles(0, dcycs); + return read_paddles(dcycs, 0); case 0x65: /* 0xc065 */ - return read_paddles(1, dcycs); + return read_paddles(dcycs, 1); case 0x66: /* 0xc066 */ - return read_paddles(2, dcycs); + return read_paddles(dcycs, 2); case 0x67: /* 0xc067 */ - return read_paddles(3, dcycs); + return read_paddles(dcycs, 3); case 0x68: /* 0xc068 = STATEREG */ - return statereg; + return g_c068_statereg; case 0x69: /* 0xc069 */ /* Reserved reg, return 0 */ return 0; @@ -1412,24 +1424,24 @@ io_read(word32 loc, double *cyc_ptr) case 0x8c: case 0x8d: case 0x8e: case 0x8f: new_lcbank2 = ((loc & 0x8) >> 1) ^ 0x4; new_wrdefram = (loc & 1); - if(new_wrdefram != wrdefram) { + if(new_wrdefram != g_c08x_wrdefram) { fixup_wrdefram(new_wrdefram); } switch(loc & 0x3) { case 0x1: /* 0xc081 */ case 0x2: /* 0xc082 */ /* Read rom, set lcbank2 */ - set_statereg(dcycs, (statereg & ~(0x04)) | + set_statereg(dcycs, (g_c068_statereg & ~(0x04))| (new_lcbank2 | 0x08)); break; case 0x0: /* 0xc080 */ case 0x3: /* 0xc083 */ /* Read ram (clear RDROM), set lcbank2 */ - set_statereg(dcycs, (statereg & ~(0x0c)) | + set_statereg(dcycs, (g_c068_statereg & ~(0x0c))| (new_lcbank2)); break; } - return 0xa0; + return float_bus(dcycs); /* 0xc090 - 0xc09f */ case 0x90: case 0x91: case 0x92: case 0x93: case 0x94: case 0x95: case 0x96: case 0x97: @@ -1493,14 +1505,14 @@ io_read(word32 loc, double *cyc_ptr) } case 1: case 2: case 3: case 4: case 5: case 6: /* c100 - c6ff */ - slot = ((loc >> 8) & 7); - if(INTCX || (int_crom[slot] == 0)) { + mask = (1 << ((loc >> 8) & 7)); + if(INTCX || ((g_c02d_int_crom & mask) == 0)) { return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); } - return (dummy++) & 0xff; + return float_bus(dcycs); case 7: /* c700 */ - if(INTCX || (int_crom[7] == 0)) { + if(INTCX || ((g_c02d_int_crom & (1 << 7)) == 0)) { return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); } tmp = g_rom_fc_ff_ptr[0x3c500 + (loc & 0xff)]; @@ -1509,12 +1521,12 @@ io_read(word32 loc, double *cyc_ptr) } return tmp; case 8: case 9: case 0xa: case 0xb: case 0xc: case 0xd: case 0xe: - if(INTCX || (int_crom[3] == 0)) { + if(INTCX || ((g_c02d_int_crom & (1 << 3)) == 0)) { return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); } UNIMPL_READ; case 0xf: - if(INTCX || (int_crom[3] == 0)) { + if(INTCX || ((g_c02d_int_crom & (1 << 3)) == 0)) { return(g_rom_fc_ff_ptr[0x3c000 + (loc & 0xfff)]); } if((loc & 0xfff) == 0xfff) { @@ -1538,8 +1550,7 @@ io_write(word32 loc, int val, double *cyc_ptr) int new_tmp; int new_lcbank2; int new_wrdefram; - int i; - int tmp, tmp2; + int tmp; int fixup; CALC_DCYCS_FROM_CYC_PTR(dcycs, cyc_ptr, fcyc, new_fcyc); @@ -1562,38 +1573,40 @@ io_write(word32 loc, int val, double *cyc_ptr) } return; case 0x02: /* 0xc002 */ - set_statereg(dcycs, statereg & ~0x20); + set_statereg(dcycs, g_c068_statereg & ~0x20); return; case 0x03: /* 0xc003 */ - set_statereg(dcycs, statereg | 0x20); + set_statereg(dcycs, g_c068_statereg | 0x20); return; case 0x04: /* 0xc004 */ - set_statereg(dcycs, statereg & ~0x10); + set_statereg(dcycs, g_c068_statereg & ~0x10); return; case 0x05: /* 0xc005 */ - set_statereg(dcycs, statereg | 0x10); + set_statereg(dcycs, g_c068_statereg | 0x10); return; case 0x06: /* 0xc006 */ - set_statereg(dcycs, statereg & ~0x01); + set_statereg(dcycs, g_c068_statereg & ~0x01); return; case 0x07: /* 0xc007 */ - set_statereg(dcycs, statereg | 0x01); + set_statereg(dcycs, g_c068_statereg | 0x01); return; case 0x08: /* 0xc008 */ - set_statereg(dcycs, statereg & ~0x80); + set_statereg(dcycs, g_c068_statereg & ~0x80); return; case 0x09: /* 0xc009 */ - set_statereg(dcycs, statereg | 0x80); + set_statereg(dcycs, g_c068_statereg | 0x80); return; case 0x0a: /* 0xc00a */ - if(int_crom[3] != 0) { - int_crom[3] = 0; + tmp = 1 << 3; + if((g_c02d_int_crom & tmp) != 0) { + g_c02d_int_crom &= ~tmp; fixup_intcx(); } return; case 0x0b: /* 0xc00b */ - if(int_crom[3] == 0) { - int_crom[3] = 1; + tmp = 1 << 3; + if((g_c02d_int_crom & tmp) == 0) { + g_c02d_int_crom |= tmp; fixup_intcx(); } return; @@ -1653,28 +1666,24 @@ io_write(word32 loc, int val, double *cyc_ptr) return; case 0x23: /* 0xc023 */ if((val & 0x19) != 0) { - halt_printf("c023 write of %02x!!!\n",val); + halt_printf("c023 write of %02x!!!\n", val); } tmp = (g_c023_val & 0x70) | (val & 0x0f); - if(((tmp & 0x22)==0x22) && !c023_scan_int_irq_pending){ - c023_scan_int_irq_pending = 1; - add_irq(); + if((tmp & 0x22) == 0x22) { + add_irq(IRQ_PENDING_C023_SCAN); } - if(!(tmp & 2) && c023_scan_int_irq_pending) { - c023_scan_int_irq_pending = 0; - remove_irq(); + if(!(tmp & 2)) { + remove_irq(IRQ_PENDING_C023_SCAN); } - if(((tmp & 0x44)==0x44)&& !c023_1sec_int_irq_pending){ - c023_1sec_int_irq_pending = 1; - add_irq(); + if((tmp & 0x44) == 0x44) { + add_irq(IRQ_PENDING_C023_1SEC); } - if(!(tmp & 0x4) && c023_1sec_int_irq_pending) { - c023_1sec_int_irq_pending = 0; - remove_irq(); + if(!(tmp & 0x4)) { + remove_irq(IRQ_PENDING_C023_1SEC); } - if(c023_1sec_int_irq_pending || - c023_scan_int_irq_pending) { + if(g_irq_pending & (IRQ_PENDING_C023_SCAN | + IRQ_PENDING_C023_1SEC)) { tmp |= 0x80; } g_c023_val = tmp; @@ -1689,12 +1698,11 @@ io_write(word32 loc, int val, double *cyc_ptr) adb_write_c027(val); return; case 0x29: /* 0xc029 */ - bank1latch = val & 1; - linear_vid = (val >> 6) & 1; - new_tmp = val & 0xa0; - if(bank1latch == 0) { + g_c029_val_some = val & 0x41; + if((val & 1) == 0) { halt_printf("c029: %02x\n", val); } + new_tmp = val & 0xa0; if(new_tmp != (g_cur_a2_stat & 0xa0)) { g_cur_a2_stat = (g_cur_a2_stat & (~0xa0)) + new_tmp; @@ -1707,7 +1715,7 @@ io_write(word32 loc, int val, double *cyc_ptr) #endif return; case 0x2b: /* 0xc02b */ - c02b_val = val; + g_c02b_val = val; if(val != 0x08 && val != 0x00) { printf("Writing c02b with %02x\n", val); } @@ -1716,14 +1724,8 @@ io_write(word32 loc, int val, double *cyc_ptr) if((val & 0x9) != 0) { halt_printf("Illegal c02d write: %02x!\n", val); } - fixup = 0; - for(i = 0; i < 8; i++) { - tmp = ((val & (1 << i)) != 0); - if(int_crom[i] != tmp) { - fixup = 1; - int_crom[i] = tmp; - } - } + fixup = (val != g_c02d_int_crom); + g_c02d_int_crom = val; if(fixup) { vid_printf("Write c02d of %02x\n", val); fixup_intcx(); @@ -1748,37 +1750,29 @@ io_write(word32 loc, int val, double *cyc_ptr) (void)doc_read_c030(dcycs); return; case 0x31: /* 0xc031 */ - tmp = ((val & 0x80) != 0); - tmp2 = ((val & 0x40) != 0); - head_35 = tmp; - iwm_set_apple35_sel(tmp2); - iwm_printf("write c031: %02x, h: %d, 35: %d\n", - val, head_35, g_apple35_sel); + tmp = val ^ g_c031_disk35; + if(tmp & 0x40) { + /* apple35_sel changed, maybe speed change */ + set_halt(HALT_EVENT); + } + g_c031_disk35 = val & 0xc0; return; case 0x32: /* 0xc032 */ tmp = g_c023_val & 0x7f; if(((val & 0x40) == 0) && (tmp & 0x40)) { /* clear 1 sec int */ - irq_printf("Clear 1sec int\n"); - if(c023_1sec_int_irq_pending) { - remove_irq(); - } + remove_irq(IRQ_PENDING_C023_1SEC); tmp &= 0xbf; g_c023_val = tmp; - c023_1sec_int_irq_pending = 0; } if(((val & 0x20) == 0) && (tmp & 0x20)) { /* clear scan line int */ - irq_printf("Clear scn int1\n"); - if(c023_scan_int_irq_pending) { - remove_irq(); - } - c023_scan_int_irq_pending = 0; + remove_irq(IRQ_PENDING_C023_SCAN); g_c023_val = tmp & 0xdf; check_for_new_scan_int(dcycs); } - if(c023_1sec_int_irq_pending || - c023_scan_int_irq_pending) { + if(g_irq_pending & (IRQ_PENDING_C023_1SEC | + IRQ_PENDING_C023_SCAN)) { g_c023_val |= 0x80; } if((val & 0x9f) != 0x9f) { @@ -1786,12 +1780,12 @@ io_write(word32 loc, int val, double *cyc_ptr) } return; case 0x33: /* 0xc033 = CLOCKDATA*/ - clock_write_c033(val); + g_c033_data = val; return; case 0x34: /* 0xc034 = CLOCKCTL */ + tmp = val ^ g_c034_val; clock_write_c034(val); - if((val & 0xf) != g_border_color) { - g_border_color = val & 0xf; + if(tmp & 0xf) { change_border_color(dcycs, val & 0xf); } return; @@ -1799,28 +1793,31 @@ io_write(word32 loc, int val, double *cyc_ptr) update_shadow_reg(val); return; case 0x36: /* 0xc036 = CYAREG */ - tmp = (val>>7) & 1; - if(speed_fast != tmp) { - /* to recalculate times */ + tmp = val ^ g_c036_val_speed; + g_c036_val_speed = (val & ~0x20); /* clr bit 5 */ + if(tmp & 0x80) { + /* to recalculate times since speed changing */ set_halt(HALT_EVENT); } - speed_fast = tmp; - if((val & 0xf) != (int)g_slot_motor_detect) { + if(tmp & 0xf) { + /* slot_motor_detect changed */ set_halt(HALT_EVENT); } - g_slot_motor_detect = (val & 0xf); - power_on_clear = (val >> 6) & 1; if((val & 0x60) != 0) { - halt_printf("c036: %2x\n", val); + /* for ROM 03, 0x40 is the power-on status */ + /* and can be read/write */ + if(((val & 0x60) != 0x40) || + (g_rom_version < 3)) { + g_c036_val_speed &= (~0x60); + halt_printf("c036: %2x\n", val); + } } - tmp = (val >> 4) & 1; - if(tmp != g_shadow_all_banks) { + if(tmp & 0x10) { /* shadow in all banks! */ if(g_num_shadow_all_banks++ == 0) { printf("Shadowing all banks...This " "must be the NFC Megademo\n"); } - g_shadow_all_banks = tmp; fixup_shadow_all_banks(); } return; @@ -1848,46 +1845,33 @@ io_write(word32 loc, int val, double *cyc_ptr) doc_write_c03d(val, dcycs); return; case 0x3e: /* 0xc03e */ - doc_write_c03e(val); + g_c03ef_doc_ptr = (g_c03ef_doc_ptr & 0xff00) + val; return; case 0x3f: /* 0xc03f */ - doc_write_c03f(val); + g_c03ef_doc_ptr = (g_c03ef_doc_ptr & 0xff) + (val << 8); return; /* 0xc040 - 0xc04f */ case 0x41: /* c041 */ - c041_en_25sec_ints = ((val & 0x10) != 0); - c041_en_vbl_ints = ((val & 0x8) != 0); - c041_en_switch_ints = ((val & 0x4) != 0); - c041_en_move_ints = ((val & 0x2) != 0); - c041_en_mouse = ((val & 0x1) != 0); + g_c041_val = val & 0x1f; if((val & 0xe7) != 0) { halt_printf("write c041: %02x\n", val); } - if(!c041_en_vbl_ints && c046_vbl_irq_pending) { - /* there was an interrupt, but no more*/ - remove_irq(); - c046_vbl_irq_pending = 0; + if(!(val & C041_EN_VBL_INTS)) { + /* no more vbl interrupt */ + remove_irq(IRQ_PENDING_C046_VBL); } - if(!c041_en_25sec_ints && c046_25sec_irq_pend) { - /* there was an interrupt, but no more*/ - remove_irq(); - c046_25sec_irq_pend = 0; + if(!(val & C041_EN_25SEC_INTS)) { + remove_irq(IRQ_PENDING_C046_25SEC); } return; case 0x46: /* c046 */ /* ignore writes to c046 */ return; case 0x47: /* c047 */ - if(c046_vbl_irq_pending) { - remove_irq(); - c046_vbl_irq_pending = 0; - } - if(c046_25sec_irq_pend) { - remove_irq(); - c046_25sec_irq_pend = 0; - } + remove_irq(IRQ_PENDING_C046_VBL | + IRQ_PENDING_C046_25SEC); g_c046_val &= 0xe7; /* clear vblint, 1/4sec int*/ return; case 0x48: /* c048 */ @@ -1897,7 +1881,7 @@ io_write(word32 loc, int val, double *cyc_ptr) case 0x43: /* c043 */ return; case 0x4f: /* c04f */ - g_emubyte_cnt = 1; + g_em_emubyte_cnt = 1; return; case 0x40: /* c040 */ case 0x44: /* c044 */ @@ -1936,10 +1920,10 @@ io_write(word32 loc, int val, double *cyc_ptr) } return; case 0x54: /* 0xc054 */ - set_statereg(dcycs, statereg & (~0x40)); + set_statereg(dcycs, g_c068_statereg & (~0x40)); return; case 0x55: /* 0xc055 */ - set_statereg(dcycs, statereg | 0x40); + set_statereg(dcycs, g_c068_statereg | 0x40); return; case 0x56: /* 0xc056 */ if(g_cur_a2_stat & ALL_STAT_HIRES) { @@ -1959,7 +1943,7 @@ io_write(word32 loc, int val, double *cyc_ptr) if(g_zipgs_unlock >= 4) { g_zipgs_reg_c059 &= 0x4; /* last reset cold */ } else { - annunc_0 = 0; + g_c05x_annuncs &= (~1); } return; case 0x59: /* 0xc059 */ @@ -1967,11 +1951,11 @@ io_write(word32 loc, int val, double *cyc_ptr) g_zipgs_reg_c059 = (val & 0xf8) | (g_zipgs_reg_c059 & 0x7); } else { - annunc_0 = 1; + g_c05x_annuncs |= 1; } return; case 0x5a: /* 0xc05a */ - annunc_1 = 0; + g_c05x_annuncs &= (~2); if((val & 0xf0) == 0x50) { g_zipgs_unlock++; } else if((val & 0xf0) == 0xa0) { @@ -1992,14 +1976,14 @@ io_write(word32 loc, int val, double *cyc_ptr) } g_zipgs_reg_c05b &= (~0x10); // enable } else { - annunc_1 = 1; + g_c05x_annuncs |= 2; } return; case 0x5c: /* 0xc05c */ if(g_zipgs_unlock >= 4) { g_zipgs_reg_c05c = val; } else { - annunc_2 = 0; + g_c05x_annuncs &= (~4); } return; case 0x5d: /* 0xc05d */ @@ -2010,7 +1994,7 @@ io_write(word32 loc, int val, double *cyc_ptr) } g_zipgs_reg_c05a = val | 0xf; } else { - annunc_2 = 1; + g_c05x_annuncs |= 4; } return; case 0x5e: /* 0xc05e */ @@ -2084,9 +2068,9 @@ io_write(word32 loc, int val, double *cyc_ptr) case 0x84: case 0x85: case 0x86: case 0x87: case 0x88: case 0x89: case 0x8a: case 0x8b: case 0x8c: case 0x8d: case 0x8e: case 0x8f: - new_lcbank2 = ((loc & 0x8) >> 1) ^ 0x4; + new_lcbank2 = ((loc >> 1) & 0x4) ^ 0x4; new_wrdefram = (loc & 1); - if(new_wrdefram != wrdefram) { + if(new_wrdefram != g_c08x_wrdefram) { fixup_wrdefram(new_wrdefram); } switch(loc & 0xf) { @@ -2099,7 +2083,7 @@ io_write(word32 loc, int val, double *cyc_ptr) case 0xd: /* 0xc08d */ case 0xe: /* 0xc08e */ /* Read rom, set lcbank2 */ - set_statereg(dcycs, (statereg & ~(0x04)) | + set_statereg(dcycs, (g_c068_statereg & ~(0x04))| (new_lcbank2 | 0x08)); break; case 0x0: /* 0xc080 */ @@ -2111,7 +2095,7 @@ io_write(word32 loc, int val, double *cyc_ptr) case 0xc: /* 0xc08c */ case 0xf: /* 0xc08f */ /* Read ram (clear RDROM), set lcbank2 */ - set_statereg(dcycs, (statereg & ~(0x0c)) | + set_statereg(dcycs, (g_c068_statereg & ~(0x0c))| (new_lcbank2)); break; } @@ -2125,11 +2109,12 @@ io_write(word32 loc, int val, double *cyc_ptr) UNIMPL_WRITE; /* 0xc0a0 - 0xc0af */ - case 0xa0: case 0xa1: case 0xa2: case 0xa3: + case 0xa0: case 0xa1: case 0xa3: case 0xa4: case 0xa5: case 0xa6: case 0xa7: case 0xa9: case 0xaa: case 0xab: case 0xac: case 0xad: case 0xae: case 0xaf: UNIMPL_WRITE; + case 0xa2: /* Burger Times writes here on error */ case 0xa8: /* Kurzweil SMP writes to 0xc0a8, ignore it */ return; @@ -2277,9 +2262,9 @@ get_lines_since_vbl(double dcycs) dcycs_since_last_vbl = dcycs - g_last_vbl_dcycs; - dlines_since_vbl = (262.0/DCYCS_IN_16MS) * dcycs_since_last_vbl; + dlines_since_vbl = dcycs_since_last_vbl * (1.0 / 65.0); lines_since_vbl = (int)dlines_since_vbl; - dcyc_line_start = (double)lines_since_vbl * (DCYCS_IN_16MS/262.0); + dcyc_line_start = (double)lines_since_vbl * 65.0; offset = ((int)(dcycs_since_last_vbl - dcyc_line_start)) & 0xff; diff --git a/src/paddles.c b/src/paddles.c index ec62a0e..0fcfe26 100644 --- a/src/paddles.c +++ b/src/paddles.c @@ -8,25 +8,52 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_paddles_c[] = "@(#)$KmKId: paddles.c,v 1.7 2004-03-23 17:28:06-05 kentd Exp $"; +const char rcsid_paddles_c[] = "@(#)$KmKId: paddles.c,v 1.14 2004-10-19 14:52:36-04 kentd Exp $"; #include "defc.h" -extern int g_mouse_fifo_x[]; /* from adb.c */ -extern int g_mouse_fifo_y[]; +extern int g_mouse_raw_x; /* from adb.c */ +extern int g_mouse_raw_y; double g_paddle_trig_dcycs = 0.0; int g_swap_paddles = 0; int g_invert_paddles = 0; +int g_joystick_scale_factor_x = 0x100; +int g_joystick_scale_factor_y = 0x100; +int g_joystick_trim_amount_x = 0; +int g_joystick_trim_amount_y = 0; -int g_joystick_type = JOYSTICK_MOUSE; +int g_joystick_type = 0; /* 0 = Keypad Joystick */ +int g_joystick_native_type1 = -1; +int g_joystick_native_type2 = -1; +int g_joystick_native_type = -1; -int g_paddle_button[4] = { 0, 0, 0, 0 }; - /* g_paddle_button[0] = button 0, etc */ +extern int g_paddle_buttons; int g_paddle_val[4] = { 0, 0, 0, 0 }; /* g_paddle_val[0]: Joystick X coord, [1]:Y coord */ +double g_paddle_dcycs[4] = { 0.0, 0.0, 0.0, 0.0 }; + /* g_paddle_dcycs are the dcycs the paddle goes to 0 */ + + +void +paddle_fixup_joystick_type() +{ + /* If g_joystick_type points to an illegal value, change it */ + if(g_joystick_type == 2) { + g_joystick_native_type = g_joystick_native_type1; + if(g_joystick_native_type1 < 0) { + g_joystick_type = 0; + } + } + if(g_joystick_type == 3) { + g_joystick_native_type = g_joystick_native_type2; + if(g_joystick_native_type2 < 0) { + g_joystick_type = 0; + } + } +} void paddle_trigger(double dcycs) @@ -35,75 +62,117 @@ paddle_trigger(double dcycs) g_paddle_trig_dcycs = dcycs; /* Determine what all the paddle values are right now */ + paddle_fixup_joystick_type(); switch(g_joystick_type) { - case JOYSTICK_MOUSE: + case 0: /* Keypad Joystick */ + paddle_trigger_keypad(dcycs); + break; + case 1: /* Mouse Joystick */ paddle_trigger_mouse(dcycs); break; - case JOYSTICK_LINUX: - case JOYSTICK_WIN32_1: - case JOYSTICK_WIN32_2: - joystick_update(); + default: + joystick_update(dcycs); } } void paddle_trigger_mouse(double dcycs) { - int val_x; - int val_y; + int val_x, val_y; + int mouse_x, mouse_y; val_x = 0; - /* mous_phys_x is 0->560, convert that to 0-255 cyc */ - /* so, mult by 117 then divide by 256 */ - if(g_mouse_fifo_x[0] > BASE_MARGIN_LEFT) { - val_x = (g_mouse_fifo_x[0] - BASE_MARGIN_LEFT) * 117; - val_x = val_x >> 8; - } - /* mous_phys_y is 0->384, convert that to 0-255 cyc */ - /* so, mult by 170 then divide by 256 (shift right by 8) */ - val_y = 0; - if(g_mouse_fifo_y[0] > BASE_MARGIN_TOP) { - val_y = ((g_mouse_fifo_y[0] - BASE_MARGIN_TOP) * 170) >> 8; - } + mouse_x = g_mouse_raw_x; + mouse_y = g_mouse_raw_y; + /* mous_phys_x is 0->560, convert that to -32768 to + 32767 cyc */ + /* So subtract 280 then mult by 117 */ + val_x = (mouse_x - 280) * 117; - if(val_x > 280) { - val_x = 280; - } - if(val_y > 280) { - val_y = 280; - } + /* mous_phys_y is 0->384, convert that to -32768 to + 32767 cyc */ + /* so subtract 192 then mult by 180 to overscale it a bit */ + val_y = (mouse_y - 192) * 180; g_paddle_val[0] = val_x; g_paddle_val[1] = val_y; - g_paddle_val[2] = 255; - g_paddle_val[3] = 255; - g_paddle_button[2] = 1; - g_paddle_button[3] = 1; + g_paddle_val[2] = 32767; + g_paddle_val[3] = 32767; + g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); } -int -read_paddles(int paddle, double dcycs) +void +paddle_trigger_keypad(double dcycs) +{ + int get_y; + int val_x, val_y; + + + val_x = adb_get_keypad_xy(get_y=0); + val_y = adb_get_keypad_xy(get_y=1); + /* val_x and val_y are already scale -32768 to +32768 */ + + g_paddle_val[0] = val_x; + g_paddle_val[1] = val_y; + g_paddle_val[2] = 32767; + g_paddle_val[3] = 32767; + g_paddle_buttons |= 0xc; + paddle_update_trigger_dcycs(dcycs); +} + +void +paddle_update_trigger_dcycs(double dcycs) { double trig_dcycs; int val; + int paddle_num; + int scale, trim; + int i; - /* This routine is called by any read to $c064-$c067 */ - if(g_swap_paddles) { - paddle = paddle ^ 1; + for(i = 0; i < 4; i++) { + paddle_num = i; + if(g_swap_paddles) { + paddle_num = i ^ 1; + } + val = g_paddle_val[paddle_num]; + if(g_invert_paddles) { + val = -val; + } + /* convert -32768 to +32768 into 0->2816.0 cycles (the */ + /* paddle delay const) */ + /* First multiply by the scale factor to adjust range */ + if(paddle_num & 1) { + scale = g_joystick_scale_factor_y; + trim = g_joystick_trim_amount_y; + } else { + scale = g_joystick_scale_factor_x; + trim = g_joystick_trim_amount_x; + } +#if 0 + if(i == 0) { + printf("val was %04x(%d) * scale %03x = %d\n", + val, val, scale, (val*scale)>>16); + } +#endif + val = val * scale >> 16; + /* Val is now from -128 to + 128 since scale is */ + /* 256=1.0, 128 = 0.5 */ + val = val + 128 + trim; + if(val >= 255) { + val = 280; /* increase range */ + } + trig_dcycs = dcycs + (val * 11.04); + g_paddle_dcycs[i] = trig_dcycs; } +} - paddle = paddle & 3; +int +read_paddles(double dcycs, int paddle) +{ + double trig_dcycs; - val = g_paddle_val[paddle]; - - if(g_invert_paddles) { - val = 255 - val; - } - - /* convert 0->255 into 0->2816.0 cycles (the paddle delay const) */ - trig_dcycs = g_paddle_trig_dcycs + (val * 11.0); + trig_dcycs = g_paddle_dcycs[paddle & 3]; if(dcycs < trig_dcycs) { return 0x80; @@ -112,3 +181,9 @@ read_paddles(int paddle, double dcycs) } } +void +paddle_update_buttons() +{ + paddle_fixup_joystick_type(); + joystick_update_buttons(); +} diff --git a/src/protos.h b/src/protos.h index 680ced2..cf1d9d8 100644 --- a/src/protos.h +++ b/src/protos.h @@ -9,10 +9,13 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_protos_h[] = "@(#)$KmKId: protos.h,v 1.173 2004-03-23 17:26:19-05 kentd Exp $"; +const char rcsid_protos_h[] = "@(#)$KmKId: protos.h,v 1.188 2004-12-06 19:08:34-05 kentd Exp $"; #endif /* xdriver.c and macdriver.c and windriver.c */ +int x_show_alert(int is_fatal, const char *str); +int win_nonblock_read_stdin(int fd, char *bufptr, int len); +void x_dialog_create_kegs_conf(const char *str); void update_color_array(int col_num, int a2_color); void set_border_color(int val); void x_update_physical_colormap(void); @@ -31,6 +34,7 @@ void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, void x_push_done(); void x_hide_pointer(int); void x_get_kimage(Kimage *kimage_ptr); +void x_full_screen(int do_full); /* test65.c */ void do_gen_test(int got_num, int base_seed); @@ -52,6 +56,7 @@ int get_memory16_act_stub_asm(word32 addr, int cycs); void set_memory_c(word32 addr, word32 val, int cycs); void set_memory16_c(word32 addr, word32 val, int cycs); +void set_memory24_c(word32 addr, word32 val, int cycs); int enter_engine(Engine_reg *ptr); void clr_halt_act(void); @@ -60,19 +65,19 @@ void set_halt_act(int val); /* special scc_macdriver.c prototypes */ int scc_serial_mac_init(int port); void scc_serial_mac_change_params(int port); -void scc_serial_mac_fill_readbuf(int port, double dcycs); +void scc_serial_mac_fill_readbuf(int port, int space_left, double dcycs); void scc_serial_mac_empty_writebuf(int port); /* special scc_windriver.c prototypes */ int scc_serial_win_init(int port); void scc_serial_win_change_params(int port); -void scc_serial_win_fill_readbuf(int port, double dcycs); +void scc_serial_win_fill_readbuf(int port, int space_left, double dcycs); void scc_serial_win_empty_writebuf(int port); /* special joystick_driver.c prototypes */ void joystick_init(void); -void joystick_update(void); -void joystick_update_button(void); +void joystick_update(double dcycs); +void joystick_update_buttons(void); /* END_HDR */ @@ -103,8 +108,10 @@ int adb_read_c027(void); void adb_write_c027(int val); int read_adb_ram(word32 addr); void write_adb_ram(word32 addr, int val); +int adb_get_keypad_xy(int get_y); int update_mouse(int x, int y, int button_states, int buttons_valid); int mouse_read_c024(double dcycs); +void mouse_compress_fifo(double dcycs); void adb_key_event(int a2code, int is_up); word32 adb_read_c000(void); word32 adb_access_c010(void); @@ -114,6 +121,7 @@ int adb_is_option_key_down(void); void adb_increment_speed(void); void adb_physical_key_update(int a2code, int is_up); void adb_virtual_key_update(int a2code, int is_up); +void adb_all_keys_up(void); void adb_kbd_repeat_off(void); @@ -127,9 +135,6 @@ void clk_write_bram(FILE *fconf); void update_cur_time(void); void clock_update(void); void clock_update_if_needed(void); -word32 clock_read_c033(void); -word32 clock_read_c034(void); -void clock_write_c033(word32 val); void clock_write_c034(word32 val); void do_clock_data(void); @@ -141,10 +146,12 @@ void do_clock_data(void); void config_init_menus(Cfg_menu *menuptr); void config_init(void); void cfg_exit(void); +void cfg_toggle_config_panel(void); void cfg_text_screen_dump(void); void config_vbl_update(int doit_3_persec); void config_parse_option(char *buf, int pos, int len, int line); void config_parse_bram(char *buf, int pos, int len); +void config_load_roms(void); void config_parse_config_kegs_file(void); Disk *cfg_get_dsk_from_slot_drive(int slot, int drive); void config_generate_config_kegs_name(char *outstr, int maxlen, Disk *dsk, int with_extras); @@ -166,7 +173,7 @@ void cfg_putchar(int c); void cfg_printf(const char *fmt, ...); void cfg_print_num(int num, int max_len); void cfg_get_disk_name(char *outstr, int maxlen, int type_ext, int with_extras); -void cfg_parse_menu(Cfg_menu *menu_ptr, int menu_pos, int highlight_pos, int change); +void cfg_parse_menu(Cfg_menu *menuptr, int menu_pos, int highlight_pos, int change); void cfg_get_base_path(char *pathptr, const char *inptr, int go_up); void cfg_file_init(void); void cfg_free_alldirents(Cfg_listhdr *listhdrptr); @@ -178,6 +185,7 @@ char *cfg_shorten_filename(const char *in_ptr, int maxlen); void cfg_fix_topent(Cfg_listhdr *listhdrptr); void cfg_file_draw(void); void cfg_partition_selected(void); +void cfg_file_update_ptr(char *str); void cfg_file_selected(void); void cfg_file_handle_key(int key); void config_control_panel(void); @@ -200,7 +208,9 @@ void xam_mem(int count); void show_hex_mem(int startbank, word32 start, int endbank, word32 end, int count); int read_line(char *buf, int len); void do_debug_list(void); -void load_roms(void); +void dis_do_memmove(void); +void dis_do_pattern_search(void); +void dis_do_compare(void); void do_debug_unix(void); void do_debug_load(void); int do_dis(FILE *outfile, word32 kpc, int accsize, int xsize, int op_provided, word32 instr); @@ -216,7 +226,7 @@ void scc_hard_reset_port(int port); void scc_reset_port(int port); void scc_regen_clocks(int port); void scc_port_init(int port); -void scc_try_to_empty_writebuf(int port); +void scc_try_to_empty_writebuf(int port, double dcycs); void scc_try_fill_readbuf(int port, double dcycs); void scc_update(double dcycs); void do_scc_event(int type, double dcycs); @@ -236,6 +246,8 @@ void scc_clr_tx_int(int port); void scc_set_zerocnt_int(int port); void scc_clr_zerocnt_int(int port); void scc_add_to_readbuf(int port, word32 val, double dcycs); +void scc_add_to_readbufv(int port, double dcycs, const char *fmt, ...); +void scc_transmit(int port, word32 val, double dcycs); void scc_add_to_writebuf(int port, word32 val, double dcycs); word32 scc_read_data(int port, double dcycs); void scc_write_data(int port, word32 val, double dcycs); @@ -243,10 +255,23 @@ void scc_write_data(int port, word32 val, double dcycs); /* scc_socket_driver.c */ void scc_socket_init(int port); +void scc_socket_maybe_open_incoming(int port, double dcycs); +void scc_socket_open_outgoing(int port, double dcycs); +void scc_socket_make_nonblock(int port, double dcycs); void scc_socket_change_params(int port); -void scc_accept_socket(int port); -void scc_socket_fill_readbuf(int port, double dcycs); -void scc_socket_empty_writebuf(int port); +void scc_socket_close(int port, int full_close, double dcycs); +void scc_accept_socket(int port, double dcycs); +void scc_socket_telnet_reqs(int port, double dcycs); +void scc_socket_fill_readbuf(int port, int space_left, double dcycs); +void scc_socket_recvd_char(int port, int c, double dcycs); +void scc_socket_empty_writebuf(int port, double dcycs); +void scc_socket_modem_write(int port, int c, double dcycs); +void scc_socket_do_cmd_str(int port, double dcycs); +void scc_socket_send_modem_code(int port, int code, double dcycs); +void scc_socket_modem_hangup(int port, double dcycs); +void scc_socket_modem_connect(int port, double dcycs); +void scc_socket_modem_do_ring(int port, double dcycs); +void scc_socket_do_answer(int port, double dcycs); /* scc_windriver.c */ @@ -257,6 +282,7 @@ void scc_socket_empty_writebuf(int port); /* iwm.c */ void iwm_init_drive(Disk *dsk, int smartport, int drive, int disk_525); +void disk_set_num_tracks(Disk *dsk, int num_tracks); void iwm_init(void); void iwm_reset(void); void draw_iwm_status(int line, char *buf); @@ -268,7 +294,6 @@ void iwm_move_to_track(Disk *dsk, int new_track); void iwm525_phase_change(int drive, int phase); int iwm_read_status35(double dcycs); void iwm_do_action35(double dcycs); -void iwm_set_apple35_sel(int newval); int iwm_read_c0ec(double dcycs); int read_iwm(int loc, double dcycs); void write_iwm(int loc, int val, double dcycs); @@ -279,20 +304,20 @@ int iwm_read_data(Disk *dsk, int fast_disk_emul, double dcycs); void iwm_write_data(Disk *dsk, word32 val, int fast_disk_emul, double dcycs); void sector_to_partial_nib(byte *in, byte *nib_ptr); int disk_unnib_4x4(Disk *dsk); -int iwm_denib_track525(Disk *dsk, Track *trk, int qtr_track, byte *outbuf); -int iwm_denib_track35(Disk *dsk, Track *trk, int qtr_track, byte *outbuf); +int iwm_denib_track525(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf); +int iwm_denib_track35(Disk *dsk, Trk *trk, int qtr_track, byte *outbuf); int disk_track_to_unix(Disk *dsk, int qtr_track, byte *outbuf); void show_hex_data(byte *buf, int count); void disk_check_nibblization(Disk *dsk, int qtr_track, byte *buf, int size); void disk_unix_to_nib(Disk *dsk, int qtr_track, int unix_pos, int unix_len, int nib_len); -void iwm_nibblize_track_nib525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track); -void iwm_nibblize_track_525(Disk *dsk, Track *trk, byte *track_buf, int qtr_track); -void iwm_nibblize_track_35(Disk *dsk, Track *trk, byte *track_buf, int qtr_track); +void iwm_nibblize_track_nib525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); +void iwm_nibblize_track_525(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); +void iwm_nibblize_track_35(Disk *dsk, Trk *trk, byte *track_buf, int qtr_track); void disk_4x4_nib_out(Disk *dsk, word32 val); void disk_nib_out(Disk *dsk, byte val, int size); void disk_nib_end_track(Disk *dsk); void iwm_show_track(int slot_drive, int track); -void iwm_show_a_track(Track *trk); +void iwm_show_a_track(Trk *trk); /* joystick_driver.c */ @@ -334,9 +359,13 @@ int read_vid_counters(int loc, double dcycs); /* paddles.c */ +void paddle_fixup_joystick_type(void); void paddle_trigger(double dcycs); void paddle_trigger_mouse(double dcycs); -int read_paddles(int paddle, double dcycs); +void paddle_trigger_keypad(double dcycs); +void paddle_update_trigger_dcycs(double dcycs); +int read_paddles(double dcycs, int paddle); +void paddle_update_buttons(void); /* sim65816.c */ @@ -351,11 +380,12 @@ void show_regs(void); void my_exit(int ret); void do_reset(void); void check_engine_asm_defines(void); -byte *memalloc_align(int size, int skip_amt); +byte *memalloc_align(int size, int skip_amt, void **alloc_ptr); void memory_ptr_init(void); int kegsmain(int argc, char **argv); +void load_roms_init_memory(void); void kegs_expand_path(char *out_ptr, const char *in_ptr, int maxlen); -void setup_kegs_file(char *outname, int maxlen, int ok_if_missing, const char **name_ptr); +void setup_kegs_file(char *outname, int maxlen, int ok_if_missing, int can_create_file, const char **name_ptr); void initialize_events(void); void check_for_one_event_type(int type); void add_event_entry(double dcycs, int type); @@ -371,8 +401,8 @@ void show_all_events(void); void show_pmhz(void); void setup_zip_speeds(void); void run_prog(void); -void add_irq(void); -void remove_irq(void); +void add_irq(word32 irq_mask); +void remove_irq(word32 irq_mask); void take_irq(int is_it_brk); void show_dtime_array(void); void update_60hz(double dcycs, double dtime_now); @@ -388,6 +418,11 @@ void do_wdm(word32 arg); void do_wai(void); void do_stp(void); void size_fail(int val, word32 v1, word32 v2); +int fatal_printf(const char *fmt, ...); +int kegs_vprintf(const char *fmt, va_list ap); +void must_write(int fd, char *bufptr, int len); +void clear_fatal_logs(void); +char *kegs_malloc_str(char *in_str); /* smartport.c */ @@ -433,8 +468,6 @@ int doc_read_c03c(double dcycs); int doc_read_c03d(double dcycs); void doc_write_c03c(int val, double dcycs); void doc_write_c03d(int val, double dcycs); -void doc_write_c03e(int val); -void doc_write_c03f(int val); void doc_show_ensoniq_state(int osc); @@ -474,6 +507,7 @@ int video_rebuild_super_hires_palette(word32 scan_info, int line, int reparse); void redraw_changed_super_hires(int start_offset, int start_line, int num_lines, int in_reparse, byte *screen_data); void display_screen(void); void video_update_event_line(int line); +void video_check_input_events(void); void video_update_through_line(int line); void video_refresh_lines(int st_line, int num_lines, int must_reparse); void refresh_border(void); @@ -492,4 +526,5 @@ void video_update_color_array(int col_num, int a2_color); void video_update_colormap(void); void video_update_status_line(int line, const char *string); void video_show_debug_info(void); +word32 float_bus(double dcycs); diff --git a/src/protos_engine_c.h b/src/protos_engine_c.h index 195f3f3..50bb265 100644 --- a/src/protos_engine_c.h +++ b/src/protos_engine_c.h @@ -9,7 +9,7 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_protos_engine_c_h[] = "@(#)$KmKId: protos_engine_c.h,v 1.10 2004-01-10 15:50:02-05 kentd Exp $"; +const char rcsid_protos_engine_c_h[] = "@(#)$KmKId: protos_engine_c.h,v 1.11 2004-10-11 22:48:16-04 kentd Exp $"; #endif /* END_HDR */ @@ -20,7 +20,7 @@ word32 get_memory8_io_stub(word32 addr, byte *stat, double *fcycs_ptr, double fp word32 get_memory16_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); word32 get_memory24_pieces_stub(word32 addr, byte *stat, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); void set_memory8_io_stub(word32 addr, word32 val, byte *stat, double *fcycs_ptr, double fplus_x_m1); -void set_memory16_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); +void set_memory16_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, double fplus_1, double fplus_x_m1, int in_bank); void set_memory24_pieces_stub(word32 addr, word32 val, double *fcycs_ptr, Fplus *fplus_ptr, int in_bank); word32 get_memory_c(word32 addr, int cycs); word32 get_memory16_c(word32 addr, int cycs); diff --git a/src/protos_macdriver.h b/src/protos_macdriver.h index 3fd840f..756cb9e 100644 --- a/src/protos_macdriver.h +++ b/src/protos_macdriver.h @@ -8,13 +8,15 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_protos_mac_h[] = "@(#)$KmKId: protos_macdriver.h,v 1.6 2004-03-23 17:27:31-05 kentd Exp $"; +const char rcsid_protos_mac_h[] = "@(#)$KmKId: protos_macdriver.h,v 1.11 2004-11-14 10:24:03-05 kentd Exp $"; /* END_HDR */ /* macdriver.c */ pascal OSStatus quit_event_handler(EventHandlerCallRef call_ref, EventRef event, void *ignore); -void show_alert(const char *str1, const char *str2, const char *str3, int num); +void show_simple_alert(char *str1, char *str2, char *str3, int num); +void x_dialog_create_kegs_conf(const char *str); +int x_show_alert(int is_fatal, const char *str); pascal OSStatus my_cmd_handler(EventHandlerCallRef handlerRef, EventRef event, void *userdata); void update_window(void); void show_event(UInt32 event_class, UInt32 event_kind, int handled); @@ -37,4 +39,6 @@ void x_push_done(void); void x_auto_repeat_on(int must); void x_auto_repeat_off(int must); void x_hide_pointer(int do_hide); +void x_full_screen(int do_full); +void update_main_window_size(void); diff --git a/src/protos_xdriver.h b/src/protos_xdriver.h index f43bf8d..ad72407 100644 --- a/src/protos_xdriver.h +++ b/src/protos_xdriver.h @@ -8,29 +8,38 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_protos_x_h[] = "@(#)$KmKId: protos_xdriver.h,v 1.18 2002-11-19 03:10:38-05 kadickey Exp $"; +const char rcsid_protos_x_h[] = "@(#)$KmKId: protos_xdriver.h,v 1.19 2004-11-15 16:24:13-05 kentd Exp $"; /* END_HDR */ /* xdriver.c */ int main(int argc, char **argv); +void x_dialog_create_kegs_conf(const char *str); +int x_show_alert(int is_fatal, const char *str); +void x_update_color(int col_num, int red, int green, int blue, word32 rgb); void x_update_physical_colormap(void); void show_xcolor_array(void); int my_error_handler(Display *display, XErrorEvent *ev); void xdriver_end(void); void show_colormap(char *str, Colormap cmap, int index1, int index2, int index3); +void x_badpipe(int signum); void dev_video_init(void); Visual *x_try_find_visual(int depth, int screen_num, XVisualInfo **visual_list_ptr); void x_set_mask_and_shift(word32 x_mask, word32 *mask_ptr, int *shift_left_ptr, int *shift_right_ptr); int xhandle_shm_error(Display *display, XErrorEvent *event); +void x_get_kimage(Kimage *kimage_ptr); int get_shm(Kimage *kimage_ptr); void get_ximage(Kimage *kimage_ptr); -void update_status_line(int line, const char *string); -void redraw_status_lines(void); +void x_redraw_status_lines(void); +void x_push_kimage(Kimage *kimage_ptr, int destx, int desty, int srcx, int srcy, int width, int height); +void x_push_done(void); +int x_update_mouse(int raw_x, int raw_y, int button_states, int buttons_valid); void check_input_events(void); +void x_hide_pointer(int do_hide); void handle_keysym(XEvent *xev_in); int x_keysym_to_a2code(int keysym, int is_up); void x_update_modifier_state(int state); void x_auto_repeat_on(int must); void x_auto_repeat_off(int must); +void x_full_screen(int do_full); diff --git a/src/scc.c b/src/scc.c index b21f5fd..91e482f 100644 --- a/src/scc.c +++ b/src/scc.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_scc_c[] = "@(#)$KmKId: scc.c,v 1.38 2003-11-20 23:50:32-05 kentd Exp $"; +const char rcsid_scc_c[] = "@(#)$KmKId: scc.c,v 1.44 2004-12-03 17:33:40-05 kentd Exp $"; #include "defc.h" @@ -17,9 +17,10 @@ extern int g_code_yellow; extern double g_cur_dcycs; extern int g_raw_serial; extern int g_serial_out_masking; +extern int g_irq_pending; -/* my scc port 0 == channel A = slot 1 */ -/* port 1 == channel B = slot 2 */ +/* my scc port 0 == channel A = slot 1 = c039/c03b */ +/* port 1 == channel B = slot 2 = c038/c03a */ #include "scc.h" #define SCC_R14_DPLL_SOURCE_BRG 0x100 @@ -45,23 +46,39 @@ void scc_init() { Scc *scc_ptr; - int i; + int i, j; for(i = 0; i < 2; i++) { scc_ptr = &(scc_stat[i]); scc_ptr->accfd = -1; + scc_ptr->sockfd = -1; + scc_ptr->socket_state = -1; scc_ptr->rdwrfd = -1; scc_ptr->state = 0; scc_ptr->host_handle = 0; scc_ptr->host_handle2 = 0; - scc_ptr->int_pending_rx = 0; - scc_ptr->int_pending_tx = 0; - scc_ptr->int_pending_zerocnt = 0; scc_ptr->br_event_pending = 0; scc_ptr->rx_event_pending = 0; scc_ptr->tx_event_pending = 0; scc_ptr->char_size = 8; scc_ptr->baud_rate = 9600; + scc_ptr->telnet_mode = 0; + scc_ptr->telnet_iac = 0; + scc_ptr->out_char_dcycs = 0.0; + scc_ptr->socket_num_rings = 0; + scc_ptr->socket_last_ring_dcycs = 0; + scc_ptr->modem_mode = 0; + scc_ptr->modem_dial_or_acc_mode = 0; + scc_ptr->modem_plus_mode = 0; + scc_ptr->modem_s0_val = 0; + scc_ptr->modem_cmd_len = 0; + scc_ptr->modem_cmd_str[0] = 0; + for(j = 0; j < 2; j++) { + scc_ptr->telnet_local_mode[j] = 0; + scc_ptr->telnet_remote_mode[j] = 0; + scc_ptr->telnet_reqwill_mode[j] = 0; + scc_ptr->telnet_reqdo_mode[j] = 0; + } } scc_reset(); @@ -83,6 +100,7 @@ scc_reset() scc_ptr->in_wrptr = 0; scc_ptr->out_rdptr = 0; scc_ptr->out_wrptr = 0; + scc_ptr->dcd = 0; scc_ptr->wantint_rx = 0; scc_ptr->wantint_tx = 0; scc_ptr->wantint_zerocnt = 0; @@ -308,7 +326,7 @@ scc_port_init(int port) } void -scc_try_to_empty_writebuf(int port) +scc_try_to_empty_writebuf(int port, double dcycs) { Scc *scc_ptr; int state; @@ -329,7 +347,7 @@ scc_try_to_empty_writebuf(int port) scc_serial_win_empty_writebuf(port); #endif } else if(state == 1) { - scc_socket_empty_writebuf(port); + scc_socket_empty_writebuf(port, dcycs); } } @@ -337,10 +355,22 @@ void scc_try_fill_readbuf(int port, double dcycs) { Scc *scc_ptr; + int space_used, space_left; int state; scc_ptr = &(scc_stat[port]); state = scc_ptr->state; + + space_used = scc_ptr->in_wrptr - scc_ptr->in_rdptr; + if(space_used < 0) { + space_used += SCC_INBUF_SIZE; + } + space_left = (7*SCC_INBUF_SIZE/8) - space_used; + if(space_left < 1) { + /* Buffer is pretty full, don't try to get more */ + return; + } + #if 0 if(scc_ptr->read_called_this_vbl) { return; @@ -351,13 +381,13 @@ scc_try_fill_readbuf(int port, double dcycs) if(state == 2) { #if defined(MAC) - scc_serial_mac_fill_readbuf(port, dcycs); + scc_serial_mac_fill_readbuf(port, space_left, dcycs); #endif #if defined(_WIN32) - scc_serial_win_fill_readbuf(port, dcycs); + scc_serial_win_fill_readbuf(port, space_left, dcycs); #endif } else if(state == 1) { - scc_socket_fill_readbuf(port, dcycs); + scc_socket_fill_readbuf(port, space_left, dcycs); } } @@ -370,8 +400,8 @@ scc_update(double dcycs) scc_stat[0].read_called_this_vbl = 0; scc_stat[1].read_called_this_vbl = 0; - scc_try_to_empty_writebuf(0); - scc_try_to_empty_writebuf(1); + scc_try_to_empty_writebuf(0, dcycs); + scc_try_to_empty_writebuf(1, dcycs); scc_try_fill_readbuf(0, dcycs); scc_try_fill_readbuf(1, dcycs); @@ -423,6 +453,9 @@ show_scc_state() scc_ptr->reg[j], scc_ptr->reg[j+1], scc_ptr->reg[j+2], scc_ptr->reg[j+3]); } + printf("state: %d, accfd: %d, rdwrfd: %d, host:%p, host2:%p\n", + scc_ptr->state, scc_ptr->accfd, scc_ptr->rdwrfd, + scc_ptr->host_handle, scc_ptr->host_handle2); printf("in_rdptr: %04x, in_wr:%04x, out_rd:%04x, out_wr:%04x\n", scc_ptr->in_rdptr, scc_ptr->in_wrptr, scc_ptr->out_rdptr, scc_ptr->out_wrptr); @@ -430,9 +463,6 @@ show_scc_state() scc_ptr->rx_queue_depth, scc_ptr->rx_queue[0], scc_ptr->rx_queue[1], scc_ptr->rx_queue[2], scc_ptr->rx_queue[3]); - printf("int_pendings: rx:%d, tx:%d, zc:%d\n", - scc_ptr->int_pending_rx, scc_ptr->int_pending_tx, - scc_ptr->int_pending_zerocnt); printf("want_ints: rx:%d, tx:%d, zc:%d\n", scc_ptr->wantint_rx, scc_ptr->wantint_tx, scc_ptr->wantint_zerocnt); @@ -446,6 +476,18 @@ show_scc_state() printf("char_size: %d, baud_rate: %d, mode: %d\n", scc_ptr->char_size, scc_ptr->baud_rate, scc_ptr->mode); + printf("modem_dial_mode:%d, telnet_mode:%d iac:%d, " + "modem_cmd_len:%d\n", scc_ptr->modem_dial_or_acc_mode, + scc_ptr->telnet_mode, scc_ptr->telnet_iac, + scc_ptr->modem_cmd_len); + printf("telnet_loc_modes:%08x %08x, telnet_rem_motes:" + "%08x %08x\n", scc_ptr->telnet_local_mode[0], + scc_ptr->telnet_local_mode[1], + scc_ptr->telnet_remote_mode[0], + scc_ptr->telnet_remote_mode[1]); + printf("modem_mode:%08x plus_mode: %d, out_char_dcycs: %f\n", + scc_ptr->modem_mode, scc_ptr->modem_plus_mode, + scc_ptr->out_char_dcycs); } } @@ -518,7 +560,11 @@ scc_read_reg(int port, double dcycs) switch(regnum) { case 0: case 4: - ret = 0x68; /* 0x44 = no dcd, no cts,0x6c = dcd ok, cts ok*/ + ret = 0x60; /* 0x44 = no dcd, no cts,0x6c = dcd ok, cts ok*/ + if(scc_ptr->dcd) { + ret |= 0x08; + } + ret |= 0x8; /* HACK HACK */ if(scc_ptr->rx_queue_depth) { ret |= 0x01; } @@ -559,12 +605,7 @@ scc_read_reg(int port, double dcycs) case 3: case 7: if(port == 0) { - ret = (scc_stat[1].int_pending_zerocnt) | - (scc_stat[1].int_pending_tx << 1) | - (scc_stat[1].int_pending_rx << 2) | - (scc_stat[0].int_pending_zerocnt << 3) | - (scc_stat[0].int_pending_tx << 4) | - (scc_stat[0].int_pending_rx << 5); + ret = (g_irq_pending & 0x3f); } else { ret = 0; } @@ -608,6 +649,7 @@ scc_write_reg(int port, word32 val, double dcycs) Scc *scc_ptr; word32 old_val; word32 changed_bits; + word32 irq_mask; int regnum; int mode; int tmp1; @@ -654,11 +696,16 @@ scc_write_reg(int port, word32 val, double dcycs) case 0x6: /* reset rr1 bits */ break; case 0x7: /* reset highest pri int pending */ - if(scc_ptr->int_pending_rx) { + irq_mask = g_irq_pending; + if(port == 0) { + /* Move SCC0 ints into SCC1 positions */ + irq_mask = irq_mask >> 3; + } + if(irq_mask & IRQ_PENDING_SCC1_RX) { scc_clr_rx_int(port); - } else if(scc_ptr->int_pending_tx) { + } else if(irq_mask & IRQ_PENDING_SCC1_TX) { scc_clr_tx_int(port); - } else if(scc_ptr->int_pending_zerocnt) { + } else if(irq_mask & IRQ_PENDING_SCC1_ZEROCNT) { scc_clr_zerocnt_int(port); } break; @@ -673,7 +720,7 @@ scc_write_reg(int port, word32 val, double dcycs) break; case 0x1: /* reset rx crc */ case 0x2: /* reset tx crc */ - halt_printf("Wr c03%x to wr0 of %02x!\n", 8+port, val); + printf("Wr c03%x to wr0 of %02x!\n", 8+port, val); break; case 0x3: /* reset tx underrun/eom latch */ /* if no extern status pending, or being reset now */ @@ -850,34 +897,48 @@ void scc_evaluate_ints(int port) { Scc *scc_ptr; + word32 irq_add_mask, irq_remove_mask; int mie; scc_ptr = &(scc_stat[port]); mie = scc_stat[0].reg[9] & 0x8; /* Master int en */ - if(mie && scc_ptr->wantint_rx && !scc_ptr->int_pending_rx) { - scc_ptr->int_pending_rx = 1; - add_irq(); + if(!mie) { + /* There can be no interrupts if MIE=0 */ + remove_irq(IRQ_PENDING_SCC1_RX | IRQ_PENDING_SCC1_TX | + IRQ_PENDING_SCC1_ZEROCNT | + IRQ_PENDING_SCC0_RX | IRQ_PENDING_SCC0_TX | + IRQ_PENDING_SCC0_ZEROCNT); + return; } - if(scc_ptr->int_pending_rx && (!mie || !scc_ptr->wantint_rx)) { - scc_ptr->int_pending_rx = 0; - remove_irq(); + + irq_add_mask = 0; + irq_remove_mask = 0; + if(scc_ptr->wantint_rx) { + irq_add_mask |= IRQ_PENDING_SCC1_RX; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_RX; } - if(mie && scc_ptr->wantint_tx && !scc_ptr->int_pending_tx) { - scc_ptr->int_pending_tx = 1; - add_irq(); + if(scc_ptr->wantint_tx) { + irq_add_mask |= IRQ_PENDING_SCC1_TX; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_TX; } - if(scc_ptr->int_pending_tx && (!mie || !scc_ptr->wantint_tx)) { - scc_ptr->int_pending_tx = 0; - remove_irq(); + if(scc_ptr->wantint_zerocnt) { + irq_add_mask |= IRQ_PENDING_SCC1_ZEROCNT; + } else { + irq_remove_mask |= IRQ_PENDING_SCC1_ZEROCNT; } - if(mie && scc_ptr->wantint_zerocnt && !scc_ptr->int_pending_zerocnt) { - scc_ptr->int_pending_zerocnt = 1; - add_irq(); + if(port == 0) { + /* Port 1 is in bits 0-2 and port 0 is in bits 3-5 */ + irq_add_mask = irq_add_mask << 3; + irq_remove_mask = irq_remove_mask << 3; } - if(scc_ptr->int_pending_zerocnt && (!mie || !scc_ptr->wantint_zerocnt)){ - scc_ptr->int_pending_zerocnt = 0; - remove_irq(); + if(irq_add_mask) { + add_irq(irq_add_mask); + } + if(irq_remove_mask) { + remove_irq(irq_remove_mask); } } @@ -1044,11 +1105,33 @@ scc_add_to_readbuf(int port, word32 val, double dcycs) } void -scc_add_to_writebuf(int port, word32 val, double dcycs) +scc_add_to_readbufv(int port, double dcycs, const char *fmt, ...) +{ + va_list ap; + char *bufptr; + int ret, len, c; + int i; + + va_start(ap, fmt); + bufptr = malloc(4096); + bufptr[0] = 0; + ret = vsnprintf(bufptr, 4090, fmt, ap); + len = strlen(bufptr); + for(i = 0; i < len; i++) { + c = bufptr[i]; + if(c == 0x0a) { + scc_add_to_readbuf(port, 0x0d, dcycs); + } + scc_add_to_readbuf(port, c, dcycs); + } + va_end(ap); +} + +void +scc_transmit(int port, word32 val, double dcycs) { Scc *scc_ptr; int out_wrptr; - int out_wrptr_next; int out_rdptr; scc_ptr = &(scc_stat[port]); @@ -1081,6 +1164,31 @@ scc_add_to_writebuf(int port, word32 val, double dcycs) val = val & 0x7f; } + scc_add_to_writebuf(port, val, dcycs); +} + +void +scc_add_to_writebuf(int port, word32 val, double dcycs) +{ + Scc *scc_ptr; + int out_wrptr; + int out_wrptr_next; + int out_rdptr; + + scc_ptr = &(scc_stat[port]); + + /* See if port initialized, if not, do so now */ + if(scc_ptr->state == 0) { + scc_port_init(port); + } + if(scc_ptr->state < 0) { + /* No working serial port, just toss it and go */ + return; + } + + out_wrptr = scc_ptr->out_wrptr; + out_rdptr = scc_ptr->out_rdptr; + out_wrptr_next = (out_wrptr + 1) & (SCC_OUTBUF_SIZE - 1); if(out_wrptr_next != out_rdptr) { scc_ptr->out_buf[out_wrptr] = val; @@ -1144,9 +1252,9 @@ scc_write_data(int port, word32 val, double dcycs) /* local loopback! */ scc_add_to_readbuf(port, val, dcycs); } else { - scc_add_to_writebuf(port, val, dcycs); + scc_transmit(port, val, dcycs); } - scc_try_to_empty_writebuf(port); + scc_try_to_empty_writebuf(port, dcycs); scc_maybe_tx_event(port, dcycs); } diff --git a/src/scc.h b/src/scc.h index ace256c..33804ae 100644 --- a/src/scc.h +++ b/src/scc.h @@ -9,30 +9,41 @@ /************************************************************************/ #ifdef INCLUDE_RCSID_C -const char rcsid_scc_h[] = "@(#)$KmKId: scc.h,v 1.12 2003-11-21 00:27:00-05 kentd Exp $"; +const char rcsid_scc_h[] = "@(#)$KmKId: scc.h,v 1.17 2004-12-03 14:03:12-05 kentd Exp $"; #endif +#include + #ifdef _WIN32 -# include +# include #else # include # include +# include #endif -#if defined(HPUX) || defined(__linux__) || defined(SOLARIS) || defined(MAC) || defined(__MACH__) +#if defined(HPUX) || defined(__linux__) || defined(SOLARIS) || defined(MAC) || defined(__MACH__) || defined(_WIN32) # define SCC_SOCKETS #endif /* my scc port 0 == channel A, port 1 = channel B */ -#define SCC_INBUF_SIZE 4096 /* must be a power of 2 */ -#define SCC_OUTBUF_SIZE 4096 /* must be a power of 2 */ +#define SCC_INBUF_SIZE 512 /* must be a power of 2 */ +#define SCC_OUTBUF_SIZE 512 /* must be a power of 2 */ + +#define SCC_MODEM_MAX_CMD_STR 128 + +#ifndef SOCKET +# define SOCKET word32 /* for non-windows */ +#endif STRUCT(Scc) { int port; int state; int accfd; + SOCKET sockfd; + int socket_state; int rdwrfd; void *host_handle; void *host_handle2; @@ -60,9 +71,7 @@ STRUCT(Scc) { int wantint_rx; int wantint_tx; int wantint_zerocnt; - int int_pending_rx; - int int_pending_tx; - int int_pending_zerocnt; + int dcd; double br_dcycs; double tx_dcycs; @@ -74,5 +83,24 @@ STRUCT(Scc) { int char_size; int baud_rate; + double out_char_dcycs; + + int socket_num_rings; + int socket_last_ring_dcycs; + word32 modem_mode; + int modem_dial_or_acc_mode; + int modem_plus_mode; + int modem_s0_val; + int telnet_mode; + int telnet_iac; + word32 telnet_local_mode[2]; + word32 telnet_remote_mode[2]; + word32 telnet_reqwill_mode[2]; + word32 telnet_reqdo_mode[2]; + int modem_cmd_len; + byte modem_cmd_str[SCC_MODEM_MAX_CMD_STR + 5]; }; +#define SCCMODEM_NOECHO 0x0001 +#define SCCMODEM_NOVERBOSE 0x0002 + diff --git a/src/scc_macdriver.c b/src/scc_macdriver.c index 11c4184..23f3bf6 100644 --- a/src/scc_macdriver.c +++ b/src/scc_macdriver.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_scc_macdriver_c[] = "@(#)$KmKId: scc_macdriver.c,v 1.3 2003-11-03 01:52:49-05 kentd Exp $"; +const char rcsid_scc_macdriver_c[] = "@(#)$KmKId: scc_macdriver.c,v 1.5 2004-11-25 13:32:51-05 kentd Exp $"; /* This file contains the Mac serial calls */ @@ -35,7 +35,8 @@ scc_serial_mac_init(int port) scc_ptr->state = 0; /* mark as uninitialized */ - sprintf(&str_buf[0], "/dev/tty.USA19QW11P1.1"); + /*sprintf(&str_buf[0], "/dev/tty.USA19QW11P1.1"); */ + sprintf(&str_buf[0], "/dev/tty.USA19H181P1.1"); /* HACK: fix this... */ fd = open(&str_buf[0], O_RDWR | O_NONBLOCK); @@ -129,7 +130,7 @@ scc_serial_mac_change_params(int port) } void -scc_serial_mac_fill_readbuf(int port, double dcycs) +scc_serial_mac_fill_readbuf(int port, int space_left, double dcycs) { byte tmp_buf[256]; Scc *scc_ptr; @@ -145,7 +146,8 @@ scc_serial_mac_fill_readbuf(int port, double dcycs) } /* Try reading some bytes */ - ret = read(fd, tmp_buf, 256); + space_left = MIN(space_left, 256); + ret = read(fd, tmp_buf, space_left); if(ret > 0) { for(i = 0; i < ret; i++) { diff --git a/src/scc_socket_driver.c b/src/scc_socket_driver.c index 1decca5..f2ebf5c 100644 --- a/src/scc_socket_driver.c +++ b/src/scc_socket_driver.c @@ -1,6 +1,6 @@ /************************************************************************/ /* KEGS: Apple //gs Emulator */ -/* Copyright 2002 by Kent Dickey */ +/* Copyright 2002-2004 by Kent Dickey */ /* */ /* This code is covered by the GNU GPL */ /* */ @@ -8,41 +8,95 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_scc_socket_driver_c[] = "@(#)$KmKId: scc_socket_driver.c,v 1.4 2003-11-20 23:43:41-05 kentd Exp $"; +const char rcsid_scc_socket_driver_c[] = "@(#)$KmKId: scc_socket_driver.c,v 1.11 2004-12-06 19:42:09-05 kentd Exp $"; -/* This file contains the Unix socket calls */ +/* This file contains the socket calls */ #include "defc.h" #include "scc.h" #include extern Scc scc_stat[2]; +extern int g_serial_modem[]; + +extern int h_errno; +int g_wsastartup_called = 0; + +/* Usage: scc_socket_init() called to init socket mode */ +/* At all times, we try to have a listen running on the incoming socket */ +/* If we want to dial out, we close the incoming socket and create a new */ +/* outgoing socket. Any hang-up causes the socket to be closed and it will */ +/* then re-open on a subsequent call to scc_socket_open */ void scc_socket_init(int port) { -#ifdef SCC_SOCKETS + Scc *scc_ptr; + +#ifdef _WIN32 + WSADATA wsadata; + int ret; + + if(g_wsastartup_called == 0) { + ret = WSAStartup(MAKEWORD(2,0), &wsadata); + printf("WSAStartup ret: %d\n", ret); + g_wsastartup_called = 1; + } +#endif + scc_ptr = &(scc_stat[port]); + scc_ptr->state = 1; /* successful socket */ + scc_ptr->sockfd = -1; /* Indicate no socket open yet */ + scc_ptr->accfd = -1; /* Indicate no socket open yet */ + scc_ptr->rdwrfd = -1; /* Indicate no socket open yet */ + scc_ptr->socket_state = -2; /* 0 means talk to "modem" */ + /* 1 connected */ + scc_ptr->socket_num_rings = 0; + scc_ptr->socket_last_ring_dcycs = 0; + scc_ptr->dcd = 0; /* 0 means no carrier */ + scc_ptr->modem_s0_val = 0; + scc_ptr->host_aux1 = sizeof(struct sockaddr_in); + scc_ptr->host_handle = malloc(scc_ptr->host_aux1); + /* Real init will be done when bytes need to be read/write from skt */ +} + +void +scc_socket_maybe_open_incoming(int port, double dcycs) +{ Scc *scc_ptr; struct sockaddr_in sa_in; int on; - int flags; int ret; - int sockfd; + SOCKET sockfd; int inc; inc = 0; scc_ptr = &(scc_stat[port]); - scc_ptr->state = -1; /* mark as failed for now */ - scc_ptr->host_aux1 = sizeof(struct sockaddr_in); - scc_ptr->host_handle = malloc(scc_ptr->host_aux1); + if(scc_ptr->sockfd != -1) { + /* it's already open, get out */ + return; + } + if(scc_ptr->socket_state < 0) { + /* not initialized, get out */ + return; + } + + printf("scc socket close being called from socket_open_out\n"); + scc_socket_close(port, 0, dcycs); + + scc_ptr->socket_state = 0; + scc_ptr->socket_num_rings = 0; + memset(scc_ptr->host_handle, 0, scc_ptr->host_aux1); while(1) { sockfd = socket(AF_INET, SOCK_STREAM, 0); - if(sockfd < 0) { + printf("sockfd ret: %d\n", sockfd); + if(sockfd == -1) { printf("socket ret: %d, errno: %d\n", sockfd, errno); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; return; } /* printf("socket ret: %d\n", sockfd); */ @@ -53,6 +107,8 @@ scc_socket_init(int port) if(ret < 0) { printf("setsockopt REUSEADDR ret: %d, err:%d\n", ret, errno); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; return; } @@ -63,65 +119,239 @@ scc_socket_init(int port) ret = bind(sockfd, (struct sockaddr *)&sa_in, sizeof(sa_in)); - if(ret < 0) { - printf("bind ret: %d, errno: %d\n", ret, errno); - inc++; - close(sockfd); - printf("Trying next port: %d\n", 6501 + port + inc); - if(inc >= 10) { - printf("Too many retries, quitting\n"); - return; - } - } else { + if(ret >= 0) { + ret = listen(sockfd, 1); break; } + /* else ret to bind was < 0 */ + printf("bind ret: %d, errno: %d\n", ret, errno); + inc++; + close(sockfd); + printf("Trying next port: %d\n", 6501 + port + inc); + if(inc >= 10) { + printf("Too many retries, quitting\n"); + scc_socket_close(port, 0, dcycs); + scc_ptr->socket_state = -1; + return; + } } printf("SCC port %d is at unix port %d\n", port, 6501 + port + inc); - ret = listen(sockfd, 1); + scc_ptr->sockfd = sockfd; + scc_ptr->state = 1; /* successful socket */ + scc_socket_make_nonblock(port, dcycs); + +} + +void +scc_socket_open_outgoing(int port, double dcycs) +{ + Scc *scc_ptr; + struct sockaddr_in sa_in; + struct hostent *hostentptr; + int on; + int ret; + SOCKET sockfd; + + scc_ptr = &(scc_stat[port]); + + printf("scc socket close being called from socket_open_out\n"); + scc_socket_close(port, 0, dcycs); + + scc_ptr->socket_state = 0; + + memset(scc_ptr->host_handle, 0, scc_ptr->host_aux1); + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + printf("sockfd ret: %d\n", sockfd); + if(sockfd == -1) { + printf("socket ret: %d, errno: %d\n", sockfd, errno); + scc_socket_close(port, 1, dcycs); + return; + } + /* printf("socket ret: %d\n", sockfd); */ + + on = 1; + ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, + (char *)&on, sizeof(on)); + if(ret < 0) { + printf("setsockopt REUSEADDR ret: %d, err:%d\n", + ret, errno); + scc_socket_close(port, 1, dcycs); + return; + } + + memset(&sa_in, 0, sizeof(sa_in)); + sa_in.sin_family = AF_INET; + sa_in.sin_port = htons(23); + hostentptr = gethostbyname(&scc_ptr->modem_cmd_str[0]); + if(hostentptr == 0) { +#ifdef _WIN32 + fatal_printf("Lookup host %s failed\n", + &scc_ptr->modem_cmd_str[0]); +#else + fatal_printf("Lookup host %s failed, herrno: %d\n", + &scc_ptr->modem_cmd_str[0], h_errno); +#endif + close(sockfd); + scc_socket_close(port, 1, dcycs); + x_show_alert(0, 0); + return; + } + memcpy(&sa_in.sin_addr.s_addr, hostentptr->h_addr, + hostentptr->h_length); + /* The above copies the 32-bit internet address into */ + /* sin_addr.s_addr. It's in correct network format */ + + ret = connect(sockfd, (struct sockaddr *)&sa_in, sizeof(sa_in)); + if(ret < 0) { + printf("connect ret: %d, errno: %d\n", ret, errno); + close(sockfd); + scc_socket_close(port, 1, dcycs); + return; + } + scc_socket_modem_connect(port, dcycs); + scc_ptr->dcd = 1; /* carrier on */ + scc_ptr->socket_state = 1; /* talk to socket */ + scc_ptr->socket_num_rings = 0; + + printf("SCC port %d is now outgoing to %s\n", port, + &scc_ptr->modem_cmd_str[0]); + + scc_ptr->sockfd = sockfd; + scc_ptr->state = 1; /* successful socket */ + + scc_socket_make_nonblock(port, dcycs); + scc_ptr->rdwrfd = scc_ptr->sockfd; +} + +void +scc_socket_make_nonblock(int port, double dcycs) +{ + Scc *scc_ptr; + SOCKET sockfd; + int ret; +#ifdef _WIN32 + u_long flags; +#else + int flags; +#endif + + scc_ptr = &(scc_stat[port]); + sockfd = scc_ptr->sockfd; + +#ifdef _WIN32 + flags = 1; + ret = ioctlsocket(sockfd, FIONBIO, &flags); + if(ret != 0) { + printf("ioctlsocket ret: %d\n", ret); + } +#else flags = fcntl(sockfd, F_GETFL, 0); if(flags == -1) { printf("fcntl GETFL ret: %d, errno: %d\n", flags, errno); + scc_socket_close(port, 1, dcycs); + scc_ptr->socket_state = -1; return; } ret = fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); if(ret == -1) { printf("fcntl SETFL ret: %d, errno: %d\n", ret, errno); + scc_socket_close(port, 1, dcycs); + scc_ptr->socket_state = -1; return; } - - scc_ptr->accfd = sockfd; - scc_ptr->state = 1; /* successful socket */ -#endif /* SCC_SOCKETS */ +#endif } void scc_socket_change_params(int port) { -#ifdef SCC_SOCKETS -#endif } void -scc_accept_socket(int port) +scc_socket_close(int port, int full_close, double dcycs) +{ + Scc *scc_ptr; + int rdwrfd; + SOCKET sockfd; + int i; + + scc_ptr = &(scc_stat[port]); + + printf("In scc_socket_close, %d, %d, %f\n", port, full_close, dcycs); + + rdwrfd = scc_ptr->rdwrfd; + if(rdwrfd >= 0) { + printf("socket_close: rdwrfd=%d, closing\n", rdwrfd); + close(rdwrfd); + } + sockfd = scc_ptr->sockfd; + if(sockfd != -1) { + printf("socket_close: sockfd=%d, closing\n", sockfd); + close(sockfd); + } + + scc_ptr->modem_cmd_len = 0; + scc_ptr->telnet_mode = 0; + scc_ptr->telnet_iac = 0; + for(i = 0; i < 2; i++) { + scc_ptr->telnet_local_mode[i] = 0; + scc_ptr->telnet_remote_mode[i] = 0; + scc_ptr->telnet_reqwill_mode[i] = 0; + scc_ptr->telnet_reqdo_mode[i] = 0; + } + scc_ptr->rdwrfd = -1; + scc_ptr->sockfd = -1; + scc_ptr->dcd = 0; + scc_ptr->socket_num_rings = 0; + + if(!full_close) { + return; + } + + scc_socket_modem_hangup(port, dcycs); + + /* and go back to modem mode */ + scc_ptr->socket_state = 0; + if(g_serial_modem[port]) { + scc_ptr->modem_dial_or_acc_mode = 0; + } else { + scc_ptr->modem_dial_or_acc_mode = 2; /* always accept */ + } +} + +void +scc_accept_socket(int port, double dcycs) { #ifdef SCC_SOCKETS Scc *scc_ptr; int flags; + int num_rings; int rdwrfd; int ret; scc_ptr = &(scc_stat[port]); - if(scc_ptr->rdwrfd <= 0) { - rdwrfd = accept(scc_ptr->accfd, scc_ptr->host_handle, - &(scc_ptr->host_aux1)); + if(scc_ptr->sockfd == -1) { + printf("in accept_socket, call socket_open\n"); + scc_socket_maybe_open_incoming(port, dcycs); + } + if(scc_ptr->sockfd == -1) { + return; /* just give up */ + } + if(scc_ptr->rdwrfd == -1) { + rdwrfd = accept(scc_ptr->sockfd, scc_ptr->host_handle, + &(scc_ptr->host_aux1)); if(rdwrfd < 0) { return; } + flags = 0; + ret = 0; +#ifndef _WIN32 /* For Linux, we need to set O_NONBLOCK on the rdwrfd */ flags = fcntl(rdwrfd, F_GETFL, 0); if(flags == -1) { @@ -133,70 +363,312 @@ scc_accept_socket(int port) printf("fcntl SETFL ret: %d, errno: %d\n", ret, errno); return; } - +#endif scc_ptr->rdwrfd = rdwrfd; + printf("Set port[%d].rdwrfd = %d\n", port, rdwrfd); + + num_rings = 4; + if(scc_ptr->modem_s0_val > 0) { + num_rings = scc_ptr->modem_s0_val; + } + scc_ptr->socket_num_rings = num_rings; + scc_ptr->socket_last_ring_dcycs = 0; /* do ring now*/ + scc_socket_modem_do_ring(port, dcycs); + + /* and send some telnet codes */ + scc_ptr->telnet_reqwill_mode[0] = 0xa; /* 3=GO_AH and 1=ECHO */ + scc_ptr->telnet_reqdo_mode[0] = 0xa; /* 3=GO_AH and 1=ECHO */ +#if 0 + scc_ptr->telnet_reqdo_mode[1] = 0x4; /* 34=LINEMODE */ +#endif } #endif } void -scc_socket_fill_readbuf(int port, double dcycs) +scc_socket_telnet_reqs(int port, double dcycs) +{ + Scc *scc_ptr; + word32 mask, willmask, domask; + int i, j; + + scc_ptr = &(scc_stat[port]); + + for(i = 0; i < 64; i++) { + j = i >> 5; + mask = 1 << (i & 31); + willmask = scc_ptr->telnet_reqwill_mode[j]; + if(willmask & mask) { + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfb, dcycs); /* WILL */ + scc_add_to_writebuf(port, i, dcycs); + } + domask = scc_ptr->telnet_reqdo_mode[j]; + if(domask & mask) { + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfd, dcycs); /* DO */ + scc_add_to_writebuf(port, i, dcycs); + } + } +} + +void +scc_socket_fill_readbuf(int port, int space_left, double dcycs) { #ifdef SCC_SOCKETS byte tmp_buf[256]; Scc *scc_ptr; int rdwrfd; - int i; int ret; + int i; scc_ptr = &(scc_stat[port]); - /* Accept socket if not already open */ - scc_accept_socket(port); + scc_accept_socket(port, dcycs); + scc_socket_modem_do_ring(port, dcycs); + if(scc_ptr->socket_state == 0 && g_serial_modem[port]) { + /* Just get out, this is modem mode */ + /* The transmit function stuffs any bytes in receive buf */ + return; + } rdwrfd = scc_ptr->rdwrfd; if(rdwrfd < 0) { - return; + return; /* just get out */ } /* Try reading some bytes */ - ret = read(rdwrfd, tmp_buf, 256); + space_left = MIN(space_left, 256); + ret = recv(rdwrfd, tmp_buf, space_left, 0); if(ret > 0) { for(i = 0; i < ret; i++) { if(tmp_buf[i] == 0) { /* Skip null chars */ continue; } - scc_add_to_readbuf(port, tmp_buf[i], dcycs); + scc_socket_recvd_char(port, tmp_buf[i], dcycs); } } else if(ret == 0) { /* assume socket close */ - close(rdwrfd); - scc_ptr->rdwrfd = -1; + printf("recv got 0 from rdwrfd=%d, closing\n", rdwrfd); + scc_socket_close(port, 1, dcycs); } #endif } +int g_scc_dbg_print_cnt = 50; + void -scc_socket_empty_writebuf(int port) +scc_socket_recvd_char(int port, int c, double dcycs) +{ + Scc *scc_ptr; + word32 locmask, remmask, mask; + word32 reqwillmask, reqdomask; + int telnet_mode, telnet_iac; + int eff_c, cpos; + int reply; + + scc_ptr = &(scc_stat[port]); + + scc_socket_maybe_open_incoming(port, dcycs); + + telnet_mode = scc_ptr->telnet_mode; + telnet_iac = scc_ptr->telnet_iac; + if(c >= 0xf0 || telnet_mode || telnet_iac) { + g_scc_dbg_print_cnt = 50; + } +#if 0 + if(g_scc_dbg_print_cnt) { + printf("Recv: %02x mode: %d\n", c, telnet_mode); + g_scc_dbg_print_cnt--; + } +#endif + + eff_c = c; + if(telnet_iac == 0) { + if(c == 0xff) { + scc_ptr->telnet_iac = 0xff; + return; /* and just get out */ + } + } else { + /* last char was 0xff, see if this is 0xff */ + if(c != 0xff) { + /* this is some kind of command */ + eff_c = eff_c | 0x100; /* indicate prev char IAC */ + } + } + scc_ptr->telnet_iac = 0; + + mask = 1 << (c & 31); + cpos = (c >> 5) & 1; + locmask = scc_ptr->telnet_local_mode[cpos] & mask; + remmask = scc_ptr->telnet_remote_mode[cpos] & mask; + reqwillmask = scc_ptr->telnet_reqwill_mode[cpos] & mask; + reqdomask = scc_ptr->telnet_reqdo_mode[cpos] & mask; + switch(telnet_mode) { + case 0: /* just passing through bytes */ + switch(eff_c) { + case 0x1fe: /* DON'T */ + case 0x1fd: /* DO */ + case 0x1fc: /* WON'T */ + case 0x1fb: /* WILL */ + case 0x1fa: /* SB */ + telnet_mode = c; + break; + default: + if(eff_c < 0x100) { + scc_add_to_readbuf(port, c, dcycs); + } + break; + } + break; + case 3: /* LINEMODE SB SLC, octet 0 */ + if(eff_c == 0x1f0) { + /* SE, the end */ + telnet_mode = 0; + } + printf("LINEMODE SLC octet 0: %02x\n", c); + telnet_mode = 4; + break; + case 4: /* LINEMODE SB SLC, octet 1 */ + printf("LINEMODE SLC octet 1: %02x\n", c); + telnet_mode = 5; + if(eff_c == 0x1f0) { + /* SE, the end */ + printf("Got SE at octet 1...\n"); + telnet_mode = 0; + } + break; + case 5: /* LINEMODE SB SLC, octet 2 */ + printf("LINEMODE SLC octet 2: %02x\n", c); + telnet_mode = 3; + if(eff_c == 0x1f0) { + /* SE, the end */ + printf("Got SE at octet 2...\n"); + telnet_mode = 0; + } + break; + case 34: /* LINEMODE SB beginning */ + switch(c) { + case 3: /* SLC */ + telnet_mode = 3; + break; + default: + telnet_mode = 0xee; /* go to SB eat */ + break; + } + break; + case 0xfa: /* in 0xfa = SB mode, eat up subcommands */ + switch(c) { + case 34: /* LINEMODE */ + telnet_mode = 34; + break; + default: + telnet_mode = 0xee; /* SB eat mode */ + break; + } + break; + case 0xee: /* in SB eat mode */ + if(eff_c == 0x1f0) { /* SE, end of sub-command */ + telnet_mode = 0; + } else { + /* just stay in eat mode */ + } + break; + case 0xfe: /* previous char was "DON'T" */ + if(locmask && (reqwillmask == 0)) { + /* it's a mode change */ + /* always OK to turn off a mode that we had on */ + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfc, dcycs); /* WON'T */ + scc_add_to_writebuf(port, c, dcycs); + } + scc_ptr->telnet_local_mode[cpos] &= ~mask; + scc_ptr->telnet_reqwill_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfd: /* previous char was "DO" */ + reply = 0xfc; + if(locmask == 0 && (reqwillmask == 0)) { + /* it's a mode change, send some response */ + reply = 0xfc; /* nack it with WON'T */ + if(c == 0x03 || c == 0x01) { + reply = 0xfb; /* Ack with WILL */ + } + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, reply, dcycs); + scc_add_to_writebuf(port, c, dcycs); + } + if(reqwillmask || (reply == 0xfb)) { + scc_ptr->telnet_local_mode[cpos] |= mask; + } + scc_ptr->telnet_reqwill_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfc: /* previous char was "WON'T" */ + if(remmask && (reqdomask == 0)) { + /* it's a mode change, ack with DON'T */ + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, 0xfe, dcycs); /* DON'T */ + scc_add_to_writebuf(port, c, dcycs); + } + scc_ptr->telnet_remote_mode[cpos] &= ~mask; + scc_ptr->telnet_reqdo_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + case 0xfb: /* previous char was "WILL" */ + reply = 0xfe; /* nack it with DON'T */ + if(remmask == 0 && (reqdomask == 0)) { + /* it's a mode change, send some response */ + if(c == 0x03 || c == 0x01) { + reply = 0xfd; /* Ack with DO */ + } + scc_add_to_writebuf(port, 0xff, dcycs); + scc_add_to_writebuf(port, reply, dcycs); + scc_add_to_writebuf(port, c, dcycs); + } + if(reqdomask || (reply == 0xfd)) { + scc_ptr->telnet_remote_mode[cpos] |= mask; + } + scc_ptr->telnet_reqdo_mode[cpos] &= ~mask; + telnet_mode = 0; + break; + default: + telnet_mode = 0; + break; + } + scc_ptr->telnet_mode = telnet_mode; +} + +void +scc_socket_empty_writebuf(int port, double dcycs) { #ifdef SCC_SOCKETS +# ifndef _WIN32 struct sigaction newact, oldact; +# endif Scc *scc_ptr; + double diff_dcycs; + int plus_mode; int rdptr; int wrptr; int rdwrfd; int done; int ret; int len; + int c; + int i; scc_ptr = &(scc_stat[port]); - scc_accept_socket(port); - - rdwrfd = scc_ptr->rdwrfd; - if(rdwrfd < 0) { - return; + /* See if +++ done and we should go to command mode */ + diff_dcycs = dcycs - scc_ptr->out_char_dcycs; + if((diff_dcycs > 900.0*1000) && (scc_ptr->modem_plus_mode == 3) && + (scc_ptr->socket_state >= 1) && + (g_serial_modem[port] != 0)) { + scc_ptr->socket_state = 0; /* go modem mode, stay connect*/ + scc_ptr->modem_plus_mode = 0; + scc_socket_send_modem_code(port, 0, dcycs); } /* Try writing some bytes */ @@ -208,6 +680,7 @@ scc_socket_empty_writebuf(int port) done = 1; break; } + rdwrfd = scc_ptr->rdwrfd; len = wrptr - rdptr; if(len < 0) { len = SCC_OUTBUF_SIZE - rdptr; @@ -220,26 +693,73 @@ scc_socket_empty_writebuf(int port) break; } - /* ignore SIGPIPE around writes to the socket, so we can */ - /* catch a closed socket and prepare to re-accept a new */ - /* connection. Otherwise, SIGPIPE kills KEGS */ - sigemptyset(&newact.sa_mask); - newact.sa_handler = SIG_IGN; - newact.sa_flags = 0; - sigaction(SIGPIPE, &newact, &oldact); - - ret = write(rdwrfd, &(scc_ptr->out_buf[rdptr]), len); + if(scc_ptr->socket_state < 1 && g_serial_modem[port]) { + len = 1; + scc_socket_modem_write(port, scc_ptr->out_buf[rdptr], + dcycs); + ret = 1; + } else { + if(rdwrfd == -1) { + if(g_serial_modem[port]) { + printf("socket_state: %d, ser_mod: %d, " + "rdwrfd: %d\n", + scc_ptr->socket_state, + g_serial_modem[port], rdwrfd); + } + scc_ptr->socket_state = 0; + scc_socket_maybe_open_incoming(port, dcycs); + return; + } + for(i = 0; i < len; i++) { + c = scc_ptr->out_buf[rdptr + i]; + plus_mode = scc_ptr->modem_plus_mode; + diff_dcycs = dcycs - scc_ptr->out_char_dcycs; + if(c == '+' && plus_mode == 0) { + if(diff_dcycs > 500*1000) { + scc_ptr->modem_plus_mode = 1; + } + } else if(c == '+') { + if(diff_dcycs < 800.0*1000) { + plus_mode++; + scc_ptr->modem_plus_mode = + plus_mode; + } + } else { + scc_ptr->modem_plus_mode = 0; + } + scc_ptr->out_char_dcycs = dcycs; + } - sigaction(SIGPIPE, &oldact, 0); +# ifdef _WIN32 + ret = send(rdwrfd, &(scc_ptr->out_buf[rdptr]), len, 0); +# else + /* ignore SIGPIPE around writes to the socket, so we */ + /* can catch a closed socket and prepare to accept */ + /* a new connection. Otherwise, SIGPIPE kills KEGS */ + sigemptyset(&newact.sa_mask); + newact.sa_handler = SIG_IGN; + newact.sa_flags = 0; + sigaction(SIGPIPE, &newact, &oldact); + + ret = send(rdwrfd, &(scc_ptr->out_buf[rdptr]), len, 0); + + sigaction(SIGPIPE, &oldact, 0); /* restore previous SIGPIPE behavior */ +# endif /* WIN32 */ + +#if 0 + printf("sock output: %02x\n", scc_ptr->out_buf[rdptr]); +#endif + + } if(ret == 0) { done = 1; /* give up for now */ break; } else if(ret < 0) { /* assume socket is dead */ - close(rdwrfd); - scc_ptr->rdwrfd = -1; + printf("socket write failed, resuming modem mode\n"); + scc_socket_close(port, 1, dcycs); done = 1; break; } else { @@ -253,3 +773,360 @@ scc_socket_empty_writebuf(int port) #endif } +void +scc_socket_modem_write(int port, int c, double dcycs) +{ + Scc *scc_ptr; + char *str; + word32 modem_mode; + int do_echo; + int got_at; + int len; + + scc_ptr = &(scc_stat[port]); + + if(scc_ptr->sockfd == -1) { + scc_ptr->socket_state = 0; + scc_socket_maybe_open_incoming(port, dcycs); + } + + modem_mode = scc_ptr->modem_mode; + str = &(scc_ptr->modem_cmd_str[0]); + +#if 0 + printf("M: %02x\n", c); +#endif + do_echo = ((modem_mode & SCCMODEM_NOECHO) == 0); + len = scc_ptr->modem_cmd_len; + got_at = 0; + if(len >= 2 && str[0] == 'a' && str[1] == 't') { + /* we've got an 'at', do not back up past it */ + got_at = 1; + } + if(c == 0x0d) { + if(do_echo) { + scc_add_to_readbuf(port, c, dcycs); /* echo cr */ + scc_add_to_readbuf(port, 0x0a, dcycs); /* echo lf */ + } + do_echo = 0; /* already did the echo */ + scc_socket_do_cmd_str(port, dcycs); + scc_ptr->modem_cmd_len = 0; + len = 0; + str[0] = 0; + } else if(c == 0x08) { + if(len <= 0) { + do_echo = 0; /* do not go past left margin */ + } else if(len == 2 && got_at) { + do_echo = 0; /* do not erase "AT" */ + } else { + /* erase a character */ + len--; + str[len] = 0; + } + } else if(c < 0x20) { + /* ignore all control characters, don't echo */ + /* includes line feeds and nulls */ + do_echo = 0; + } else { + /* other characters */ + if(len < SCC_MODEM_MAX_CMD_STR) { + str[len] = tolower(c); + str[len+1] = 0; + len++; + } + } + scc_ptr->modem_cmd_len = len; + if(do_echo) { + scc_add_to_readbuf(port, c, dcycs); /* echo */ + } +} + +void +scc_socket_do_cmd_str(int port, double dcycs) +{ + Scc *scc_ptr; + char *str; + int pos, len; + int ret_val; + int reg, reg_val; + int was_amp; + int c; + int i; + + scc_ptr = &(scc_stat[port]); + + str = &(scc_ptr->modem_cmd_str[0]); + printf("Got modem string :%s:=%02x %02x %02x\n", str, str[0], str[1], + str[2]); + + len = scc_ptr->modem_cmd_len; + str[len] = 0; + str[len+1] = 0; + str[len+2] = 0; + pos = -1; + if(len < 2) { + /* just ignore it */ + return; + } + if(str[0] != 'a' || str[1] != 't') { + return; + } + + /* Some AT command received--make sure socket 6501/6502 is open */ + printf("Some AT command received, sockfd=%d\n", scc_ptr->sockfd); + + pos = 2 - 1; + ret_val = 0; /* "OK" */ + was_amp = 0; + while(++pos < len) { + c = str[pos] + was_amp; + was_amp = 0; + switch(c) { + case '&': /* at& */ + was_amp = 0x100; + break; + case 'z': /* atz */ + scc_ptr->modem_mode = 0; + scc_ptr->modem_s0_val = 0; + pos = len; /* ignore any other commands */ + break; + case 'e': /* ate = echo */ + c = str[pos+1]; + if(c == '1') { + scc_ptr->modem_mode &= ~SCCMODEM_NOECHO; + pos++; + } else { + scc_ptr->modem_mode |= SCCMODEM_NOECHO; + pos++; + } + break; + case 'v': /* atv = verbose */ + c = str[pos+1]; + if(c == '1') { + scc_ptr->modem_mode &= ~SCCMODEM_NOVERBOSE; + pos++; + } else { + scc_ptr->modem_mode |= SCCMODEM_NOVERBOSE; + pos++; + } + break; + case 'o': /* ato = go online */ + printf("ato\n"); + if(scc_ptr->dcd && (scc_ptr->rdwrfd != -1) && + (scc_ptr->socket_state == 0)) { + printf("Going back online\n"); + scc_ptr->socket_state = 1; + scc_socket_modem_connect(port, dcycs); + ret_val = -1; + } + break; + case 'h': /* ath = hang up */ + printf("ath, hanging up\n"); + scc_socket_close(port, (scc_ptr->rdwrfd != -1), dcycs); + /* scc_socket_maybe_open_incoming(port, dcycs); */ + /* reopen listen */ + break; + case 'a': /* ata */ + printf("Doing ATA\n"); + scc_socket_do_answer(port, dcycs); + ret_val = -1; + break; + case 'd': /* atd */ + pos++; + c = str[pos]; + if(c == 't' || c == 'p') { + /* skip tone or pulse */ + pos++; + } + /* see if it is 111 */ + if(strcmp(&str[pos], "111") == 0) { + /* Do PPP! */ + } else { + /* get string to connect to */ + /* Shift string so hostname moves to str[0] */ + for(i = 0; i < len; i++) { + str[i] = str[pos]; + if(pos >= len) { + break; + } + pos++; + } + + } + scc_ptr->modem_dial_or_acc_mode = 1; + scc_socket_open_outgoing(port, dcycs); + ret_val = -1; + pos = len; /* always eat rest of the line */ + break; + case 's': /* atsnn=yy */ + pos++; + reg = 0; + while(1) { + c = str[pos]; + if(c < '0' || c > '9') { + break; + } + reg = (reg * 10) + c - '0'; + pos++; + } + if(c == '?') { + /* display S-register */ + if(reg == 0) { + scc_add_to_readbufv(port, dcycs, + "S0=%d\n", + scc_ptr->modem_s0_val); + } + break; + } + if(c != '=') { + break; + } + pos++; + reg_val = 0; + while(1) { + c = str[pos]; + if(c < '0' || c >'9') { + break; + } + reg_val = (reg_val * 10) + c - '0'; + pos++; + } + printf("ats%d = %d\n", reg, reg_val); + if(reg == 0) { + scc_ptr->modem_s0_val = reg_val; + } + pos--; + break; + default: + /* some command--peek into next chars to finish it */ + while(1) { + c = str[pos+1]; + if(c >= '0' && c <= '9') { + /* eat numbers */ + pos++; + continue; + } + if(c == '=') { + /* eat this as well */ + pos++; + continue; + } + /* else get out */ + break; + } + } + } + + if(ret_val >= 0) { + scc_socket_send_modem_code(port, ret_val, dcycs); + } +} + +void +scc_socket_send_modem_code(int port, int code, double dcycs) +{ + Scc *scc_ptr; + char *str; + word32 modem_mode; + + scc_ptr = &(scc_stat[port]); + + switch(code) { + case 0: str = "OK"; break; + case 1: str = "CONNECT"; break; + case 2: str = "RING"; break; + case 3: str = "NO CARRIER"; break; + case 4: str = "ERROR"; break; + case 5: str = "CONNECT 1200"; break; + case 13: str = "CONNECT 9600"; break; + case 16: str = "CONNECT 19200"; break; + case 25: str = "CONNECT 14400"; break; + case 85: str = "CONNECT 19200"; break; + default: + str = "ERROR"; + } + + printf("Sending modem code %d = %s\n", code, str); + + modem_mode = scc_ptr->modem_mode; + if(modem_mode & SCCMODEM_NOVERBOSE) { + /* just the number */ + scc_add_to_readbufv(port, dcycs, "%d", code); + scc_add_to_readbuf(port, 0x0d, dcycs); + } else { + scc_add_to_readbufv(port, dcycs, "%s\n", str); + } +} + +void +scc_socket_modem_hangup(int port, double dcycs) +{ + scc_socket_send_modem_code(port, 3, dcycs); +} + +void +scc_socket_modem_connect(int port, double dcycs) +{ + /* decide which code to send. Default to 1 if needed */ + scc_socket_send_modem_code(port, 13, dcycs); /*13=9600*/ +} + +void +scc_socket_modem_do_ring(int port, double dcycs) +{ + Scc *scc_ptr; + double diff_dcycs; + int num_rings; + + scc_ptr = &(scc_stat[port]); + num_rings = scc_ptr->socket_num_rings; + if(num_rings > 0 && scc_ptr->socket_state == 0) { + num_rings--; + diff_dcycs = dcycs - scc_ptr->socket_last_ring_dcycs; + if(diff_dcycs < 2.0*1000*1000 && g_serial_modem[port]) { + return; /* nothing more to do */ + } + printf("In modem_do_ring, ringing at %f\n", dcycs); + if(g_serial_modem[port]) { + scc_socket_send_modem_code(port, 2, dcycs); /* RING */ + } else { + num_rings = 0; + } + scc_ptr->socket_num_rings = num_rings; + scc_ptr->socket_last_ring_dcycs = dcycs; + if(num_rings <= 0) { + /* decide on answering */ + if(scc_ptr->modem_s0_val || (g_serial_modem[port]==0)) { + scc_socket_do_answer(port, dcycs); + } else { + printf("No answer, closing socket\n"); + scc_socket_close(port, 0, dcycs); + } + } + } +} + +void +scc_socket_do_answer(int port, double dcycs) +{ + Scc *scc_ptr; + + scc_ptr = &(scc_stat[port]); + scc_ptr->modem_dial_or_acc_mode = 2; + scc_accept_socket(port, dcycs); + if(scc_ptr->rdwrfd == -1) { + printf("Answer when rdwrfd=-1, closing\n"); + scc_socket_close(port, 1, dcycs); + /* send NO CARRIER message */ + } else { + scc_ptr->socket_state = 1; + scc_socket_telnet_reqs(port, dcycs); + printf("Send telnet reqs, rdwrfd=%d\n", scc_ptr->rdwrfd); + if(g_serial_modem[port]) { + scc_socket_modem_connect(port, dcycs); + } + scc_ptr->dcd = 1; /* carrier on */ + scc_ptr->socket_state = 1; /* talk to socket */ + scc_ptr->socket_num_rings = 0; + } +} diff --git a/src/scc_windriver.c b/src/scc_windriver.c index 57efd0b..34aeff7 100644 --- a/src/scc_windriver.c +++ b/src/scc_windriver.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_scc_windriver_c[] = "@(#)$KmKId: scc_windriver.c,v 1.3 2003-09-20 15:05:15-04 kentd Exp $"; +const char rcsid_scc_windriver_c[] = "@(#)$KmKId: scc_windriver.c,v 1.4 2004-11-19 02:00:46-05 kentd Exp $"; /* This file contains the Win32 COM1/COM2 calls */ @@ -151,7 +151,7 @@ scc_serial_win_change_params(int port) } void -scc_serial_win_fill_readbuf(int port, double dcycs) +scc_serial_win_fill_readbuf(int port, int space_left, double dcycs) { byte tmp_buf[256]; Scc *scc_ptr; @@ -168,7 +168,8 @@ scc_serial_win_fill_readbuf(int port, double dcycs) } /* Try reading some bytes */ - ret = ReadFile(host_handle, tmp_buf, 256, &bytes_read, NULL); + space_left = MIN(256, space_left); + ret = ReadFile(host_handle, tmp_buf, space_left, &bytes_read, NULL); if(ret == 0) { printf("ReadFile ret 0\n"); diff --git a/src/sim65816.c b/src/sim65816.c index 0f38d36..484e691 100644 --- a/src/sim65816.c +++ b/src/sim65816.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_sim65816_c[] = "@(#)$KmKId: sim65816.c,v 1.346 2004-03-23 17:26:10-05 kentd Exp $"; +const char rcsid_sim65816_c[] = "@(#)$KmKId: sim65816.c,v 1.367 2004-11-22 02:39:26-05 kentd Exp $"; #include @@ -16,13 +16,16 @@ const char rcsid_sim65816_c[] = "@(#)$KmKId: sim65816.c,v 1.346 2004-03-23 17:26 #include "defc.h" #undef INCLUDE_RCSID_C +#define PC_LOG_LEN (8*1024) + + char g_argv0_path[256] = "./"; const char *g_kegs_default_paths[] = { "", "./", "${HOME}/", + "${HOME}/Library/KEGS/", "${0}/Contents/Resources/", "/usr/local/lib/", "/usr/local/kegs/", "/usr/local/lib/kegs/", "/usr/share/kegs/", - "/usr/share/", "/var/lib/", "/usr/lib/", "/lib/", "/etc/", - "/etc/kegs/", "${0}/", 0 }; + "/var/lib/", "/usr/lib/kegs/", "${0}/", 0 }; #define MAX_EVENTS 64 @@ -38,26 +41,18 @@ const char *g_kegs_default_paths[] = { "", "./", "${HOME}/", extern int g_stepping; -extern int statereg; +extern int g_c068_statereg; extern int g_cur_a2_stat; -extern int wrdefram; -extern int int_crom[8]; +extern int g_c08x_wrdefram; +extern int g_c02d_int_crom; -extern int shadow_text; - -extern int shadow_reg; -extern int speed_fast; -extern word32 g_slot_motor_detect; +extern int g_c035_shadow_reg; +extern int g_c036_val_speed; extern int g_c023_val; -extern int c023_1sec_int_irq_pending; -extern int c023_scan_int_irq_pending; -extern int c041_en_25sec_ints; -extern int c041_en_vbl_ints; +extern int g_c041_val; extern int g_c046_val; -extern int c046_25sec_irq_pend; -extern int c046_vbl_irq_pending; extern int g_zipgs_reg_c059; extern int g_zipgs_reg_c05a; extern int g_zipgs_reg_c05b; @@ -71,9 +66,6 @@ extern int defs_instr_end_16; extern int op_routs_start; extern int op_routs_end; -extern int updated_mod_latch; -extern int capslock_key_down; - Engine_reg engine; extern word32 table8[]; extern word32 table16[]; @@ -83,7 +75,7 @@ extern byte doc_ram[]; extern int g_iwm_motor_on; extern int g_fast_disk_emul; extern int g_slow_525_emul_wr; -extern int g_apple35_sel; +extern int g_c031_disk35; extern int g_config_control_panel; extern int g_audio_enable; @@ -94,7 +86,8 @@ void U_STACK_TRACE(); double g_fcycles_stop = 0.0; int halt_sim = 0; int enter_debug = 0; -int g_rom_version = 0; +int g_rom_version = -1; +int g_user_halt_bad = 0; int g_halt_on_bad_read = 0; int g_ignore_bad_acc = 1; int g_ignore_halts = 1; @@ -102,15 +95,12 @@ int g_code_red = 0; int g_code_yellow = 0; int g_use_alib = 0; int g_raw_serial = 1; +int g_iw2_emul = 0; int g_serial_out_masking = 0; +int g_serial_modem[2] = { 0, 1 }; int g_config_iwm_vbl_count = 0; -const char g_kegs_version_str[] = "0.86"; - -#if 0 -const double g_drecip_cycles_in_16ms = (1.0/(DCYCS_IN_16MS)); -const double g_dcycles_in_16ms = DCYCS_IN_16MS; -#endif +const char g_kegs_version_str[] = "0.91"; #define START_DCYCS (0.0) @@ -122,7 +112,8 @@ double g_dadjcycs = 0.0; int g_wait_pending = 0; -int g_irq_pending = 0; +int g_stp_pending = 0; +extern int g_irq_pending; int g_num_irq = 0; int g_num_brk = 0; @@ -137,6 +128,11 @@ int g_engine_doc_int = 0; int g_testing = 0; int g_testing_enabled = 0; +#define MAX_FATAL_LOGS 20 + +int g_debug_file_fd = -1; +int g_fatal_log = -1; +char *g_fatal_log_strs[MAX_FATAL_LOGS]; word32 stop_run_at; @@ -161,25 +157,28 @@ byte *g_dummy_memory1_ptr = 0; byte *g_rom_fc_ff_ptr = 0; byte *g_rom_cards_ptr = 0; +void *g_memory_alloc_ptr = 0; /* for freeing memory area */ + Page_info page_info_rd_wr[2*65536 + PAGE_INFO_PAD_SIZE]; -int kbd_in_end = 0; -byte kbd_in_buf[LEN_KBD_BUF]; +Pc_log g_pc_log_array[PC_LOG_LEN + 2]; +Data_log g_data_log_array[PC_LOG_LEN + 2]; +Pc_log *g_log_pc_ptr = &(g_pc_log_array[0]); +Pc_log *g_log_pc_start_ptr = &(g_pc_log_array[0]); +Pc_log *g_log_pc_end_ptr = &(g_pc_log_array[PC_LOG_LEN]); -#define PC_LOG_LEN (8*1024) - -Pc_log pc_log_array[PC_LOG_LEN + 2]; - -Pc_log *log_pc_ptr = &(pc_log_array[0]); -Pc_log *log_pc_start_ptr = &(pc_log_array[0]); -Pc_log *log_pc_end_ptr = &(pc_log_array[PC_LOG_LEN]); +Data_log *g_log_data_ptr = &(g_data_log_array[0]); +Data_log *g_log_data_start_ptr = &(g_data_log_array[0]); +Data_log *g_log_data_end_ptr = &(g_data_log_array[PC_LOG_LEN]); void show_pc_log() { FILE *pcfile; + Pc_log *log_pc_ptr; + Data_log *log_data_ptr; double dcycs; double start_dcycs; word32 instr; @@ -188,23 +187,52 @@ show_pc_log() word32 stack, direct; word32 dbank; word32 kpc; + int data_wrap; int accsize, xsize; int num; int i; - pcfile = fopen("pc_log_out", "wt"); + pcfile = fopen("pc_log_out", "w"); if(pcfile == 0) { fprintf(stderr,"fopen failed...errno: %d\n", errno); exit(2); } + + log_pc_ptr = g_log_pc_ptr; + log_data_ptr = g_log_data_ptr; #if 0 fprintf(pcfile, "current pc_log_ptr: %p, start: %p, end: %p\n", log_pc_ptr, log_pc_start_ptr, log_pc_end_ptr); #endif start_dcycs = log_pc_ptr->dcycs; + dcycs = start_dcycs; + + data_wrap = 0; + /* find first data entry */ + while(data_wrap < 2 && (log_data_ptr->dcycs < dcycs)) { + log_data_ptr++; + if(log_data_ptr >= g_log_data_end_ptr) { + log_data_ptr = g_log_data_start_ptr; + data_wrap++; + } + } + fprintf(pcfile, "start_dcycs: %9.2f\n", start_dcycs); for(i = 0; i < PC_LOG_LEN; i++) { + dcycs = log_pc_ptr->dcycs; + while((data_wrap < 2) && (log_data_ptr->dcycs <= dcycs) && + (log_data_ptr->dcycs >= start_dcycs)) { + fprintf(pcfile, "DATA set %06x = %06x (%d) %9.2f\n", + log_data_ptr->addr, log_data_ptr->val, + log_data_ptr->size, + log_data_ptr->dcycs - start_dcycs); + log_data_ptr++; + if(log_data_ptr >= g_log_data_end_ptr) { + log_data_ptr = g_log_data_start_ptr; + data_wrap++; + } + } dbank = (log_pc_ptr->dbank_kpc >> 24) & 0xff; kpc = log_pc_ptr->dbank_kpc & 0xffffff; instr = log_pc_ptr->instr; @@ -214,9 +242,8 @@ show_pc_log() yreg = log_pc_ptr->xreg_yreg & 0xffff;; stack = (log_pc_ptr->stack_direct >> 16) & 0xffff;; direct = log_pc_ptr->stack_direct & 0xffff;; - dcycs = log_pc_ptr->dcycs; - num = log_pc_ptr - log_pc_start_ptr; + num = log_pc_ptr - g_log_pc_start_ptr; accsize = 2; xsize = 2; @@ -234,8 +261,8 @@ show_pc_log() do_dis(pcfile, kpc, accsize, xsize, 1, instr); log_pc_ptr++; - if(log_pc_ptr >= log_pc_end_ptr) { - log_pc_ptr = log_pc_start_ptr; + if(log_pc_ptr >= g_log_pc_end_ptr) { + log_pc_ptr = g_log_pc_start_ptr; } } @@ -380,7 +407,7 @@ get_memory_io(word32 loc, double *cyc_ptr) } g_code_yellow++; - if(g_ignore_bad_acc) { + if(g_ignore_bad_acc && !g_user_halt_bad) { /* print no message, just get out. User doesn't want */ /* to be bothered by buggy programs */ return 0; @@ -389,7 +416,7 @@ get_memory_io(word32 loc, double *cyc_ptr) printf("get_memory_io for addr: %06x\n", loc); printf("stat for addr: %06x = %p\n", loc, GET_PAGE_INFO_RD((loc >> 8) & 0xffff)); - set_halt(g_halt_on_bad_read); + set_halt(g_halt_on_bad_read | g_user_halt_bad); return 0; } @@ -498,7 +525,7 @@ set_memory_io(word32 loc, int val, double *cyc_ptr) return; } - if(g_ignore_bad_acc) { + if(g_ignore_bad_acc && !g_user_halt_bad) { /* print no message, just get out. User doesn't want */ /* to be bothered by buggy programs */ return; @@ -579,15 +606,14 @@ my_exit(int ret) void do_reset() { - int i; - statereg = 0x08 + 0x04 + 0x01; /* rdrom, lcbank2, intcx */ + g_c068_statereg = 0x08 + 0x04 + 0x01; /* rdrom, lcbank2, intcx */ + g_c035_shadow_reg = 0; - wrdefram = 1; - for(i = 1; i < 7; i++) { - int_crom[i] = 0; - } - int_crom[7] = 0; + g_c08x_wrdefram = 1; + g_c02d_int_crom = 0; + g_c023_val = 0; + g_c041_val = 0; engine.psr = (engine.psr | 0x134) & ~(0x08); engine.stack = 0x100 + (engine.stack & 0xff); @@ -596,6 +622,7 @@ do_reset() engine.xreg &= 0xff; engine.yreg &= 0xff; g_wait_pending = 0; + g_stp_pending = 0; video_reset(); @@ -606,6 +633,8 @@ do_reset() setup_pageinfo(); change_display_mode(g_cur_dcycs); + g_irq_pending = 0; + engine.kpc = get_memory16_c(0x00fffc, 0); g_stepping = 0; @@ -665,14 +694,18 @@ check_engine_asm_defines() } byte * -memalloc_align(int size, int skip_amt) +memalloc_align(int size, int skip_amt, void **alloc_ptr) { byte *bptr; word32 addr; word32 offset; skip_amt = MAX(256, skip_amt); - bptr = malloc(size + skip_amt); + bptr = calloc(size + skip_amt, 1); + if(alloc_ptr) { + /* Save allocation address */ + *alloc_ptr = bptr; + } addr = PTR2WORD(bptr) & 0xff; @@ -681,11 +714,7 @@ memalloc_align(int size, int skip_amt) offset = ((addr + skip_amt - 1) & (~0xff)) - addr; - bptr += offset; - - /* Gilles Tschopp recommended zeroing memory, this is a good idea */ - memset(bptr, 0, size); - return bptr; + return (bptr + offset); } void @@ -693,9 +722,15 @@ memory_ptr_init() { word32 mem_size; + /* This routine may be called several times--each time the ROM file */ + /* changes this will be called */ mem_size = MIN(0xdf0000, g_mem_size_base + g_mem_size_exp); g_mem_size_total = mem_size; - g_memory_ptr = memalloc_align(mem_size, 3*1024); + if(g_memory_alloc_ptr) { + free(g_memory_alloc_ptr); + g_memory_alloc_ptr = 0; + } + g_memory_ptr = memalloc_align(mem_size, 256, &g_memory_alloc_ptr); printf("RAM size is 0 - %06x (%.2fMB)\n", mem_size, (double)mem_size/(1024.0*1024.0)); @@ -807,8 +842,7 @@ kegsmain(int argc, char **argv) printf("Not using X shared memory\n"); g_use_shmem = 0; } else if(!strcmp("-joystick", argv[i])) { - printf("Trying to use joystick\n"); - joystick_init(); + printf("Ignoring -joystick option\n"); } else if(!strcmp("-dhr140", argv[i])) { printf("Using simple dhires color map\n"); g_use_dhr140 = 1; @@ -854,8 +888,7 @@ kegsmain(int argc, char **argv) iwm_init(); config_init(); - load_roms(); - memory_ptr_init(); + load_roms_init_memory(); init_reg(); clear_halt(); @@ -870,8 +903,11 @@ kegsmain(int argc, char **argv) sound_init(); scc_init(); - clk_setup_bram_version(); /* load_roms must be called first! */ adb_init(); + joystick_init(); + if(g_rom_version >= 3) { + g_c036_val_speed |= 0x40; /* set power-on bit */ + } do_reset(); g_stepping = 0; @@ -884,6 +920,27 @@ kegsmain(int argc, char **argv) return 0; } +void +load_roms_init_memory() +{ + config_load_roms(); + memory_ptr_init(); + clk_setup_bram_version(); /* Must be after config_load_roms */ + if(g_rom_version >= 3) { + g_c036_val_speed |= 0x40; /* set power-on bit */ + } else { + g_c036_val_speed &= (~0x40); /* clear the bit */ + } + do_reset(); + + /* if user booted ROM 01, switches to ROM 03, then switches back */ + /* to ROM 01, then the reset routines call to Tool $0102 looks */ + /* at uninitialized $e1/15fe and if it is negative it will JMP */ + /* through $e1/1688 which ROM 03 left pointing to fc/0199 */ + /* So set e1/15fe = 0 */ + set_memory16_c(0xe115fe, 0, 0); +} + void kegs_expand_path(char *out_ptr, const char *in_ptr, int maxlen) { @@ -952,7 +1009,7 @@ kegs_expand_path(char *out_ptr, const char *in_ptr, int maxlen) void setup_kegs_file(char *outname, int maxlen, int ok_if_missing, - const char **name_ptr) + int can_create_file, const char **name_ptr) { char local_path[256]; struct stat stat_buf; @@ -984,20 +1041,41 @@ setup_kegs_file(char *outname, int maxlen, int ok_if_missing, path_ptr++; } - if(ok_if_missing) { - outname[0] = 0; + outname[0] = 0; + if(ok_if_missing > 0) { return; } /* couldn't find it, print out all the attempts */ path_ptr = save_path_ptr; - printf("Could not find %s in any of these directories:\n", *name_ptr); + fatal_printf("Could not find required file \"%s\" in any of these " + "directories:\n", *name_ptr); while(*path_ptr) { - printf(" %s\n", *path_ptr++); + fatal_printf(" %s\n", *path_ptr++); } + + if(can_create_file) { + // Ask user if it's OK to create the file + x_dialog_create_kegs_conf(*name_ptr); + can_create_file = 0; + + // But clear out the fatal_printfs first + clear_fatal_logs(); + setup_kegs_file(outname, maxlen, ok_if_missing, + can_create_file, name_ptr); + // It's one-level of recursion--it cannot loop since we + // clear can_create_file. + // If it returns, then there was succes and we should get out + return; + } else if(ok_if_missing) { + /* Just show an alert and return if ok_if_missing < 0 */ + x_show_alert(0, 0); + return; + } + system("pwd"); - exit(2); + my_exit(2); } Event g_event_list[MAX_EVENTS]; @@ -1248,14 +1326,11 @@ Fplus g_recip_projected_pmhz_fast; Fplus g_recip_projected_pmhz_zip; Fplus g_recip_projected_pmhz_unl; -Fplus *g_cur_fplus_ptr = 0; - void show_pmhz() { - printf("Pmhz: %f, plus_1: %f, fast: %d, limit: %d\n", - g_projected_pmhz, g_cur_fplus_ptr->plus_1, speed_fast, - g_limit_speed); + printf("Pmhz: %f, c036:%02x, limit: %d\n", + g_projected_pmhz, g_c036_val_speed, g_limit_speed); } @@ -1329,12 +1404,15 @@ run_prog() zip_speed_0tof = g_zipgs_reg_c05a & 0xf0; setup_zip_speeds(); - if(g_cur_fplus_ptr == 0) { + if(engine.fplus_ptr == 0) { g_recip_projected_pmhz_unl = g_recip_projected_pmhz_slow; } while(1) { fflush(stdout); + if(g_config_control_panel) { + config_control_panel(); + } if(g_irq_pending && !(engine.psr & 0x4)) { irq_printf("taking an irq!\n"); @@ -1344,11 +1422,11 @@ run_prog() motor_on = g_iwm_motor_on; limit_speed = g_limit_speed; - apple35_sel = g_apple35_sel; + apple35_sel = g_c031_disk35 & 0x40; zip_en = ((g_zipgs_reg_c05b & 0x10) == 0); zip_follow_cps = ((g_zipgs_reg_c059 & 0x8) != 0); zip_speed_0tof_new = g_zipgs_reg_c05a & 0xf0; - fast = speed_fast || (zip_en && !zip_follow_cps); + fast = (g_c036_val_speed & 0x80) || (zip_en && !zip_follow_cps); if(zip_speed_0tof_new != zip_speed_0tof) { zip_speed_0tof = zip_speed_0tof_new; @@ -1356,7 +1434,7 @@ run_prog() } iwm_1 = motor_on && !apple35_sel && - (g_slot_motor_detect & 0x4) && + (g_c036_val_speed & 0x4) && (g_slow_525_emul_wr || !g_fast_disk_emul); iwm_25 = (motor_on && apple35_sel) && !g_fast_disk_emul; faster_than_28 = fast && (!iwm_1 && !iwm_25) && zip_en && @@ -1381,7 +1459,6 @@ run_prog() fplus_ptr = &g_recip_projected_pmhz_slow; } - g_cur_fplus_ptr = fplus_ptr; engine.fplus_ptr = fplus_ptr; this_type = g_event_start.next->type; @@ -1514,9 +1591,6 @@ run_prog() if(g_stepping) { break; } - if(g_config_control_panel) { - config_control_panel(); - } } if(!g_testing) { @@ -1527,19 +1601,20 @@ run_prog() } void -add_irq() +add_irq(word32 irq_mask) { - g_irq_pending++; + if(g_irq_pending & irq_mask) { + /* Already requested, just get out */ + return; + } + g_irq_pending |= irq_mask; set_halt(HALT_EVENT); } void -remove_irq() +remove_irq(word32 irq_mask) { - g_irq_pending--; - if(g_irq_pending < 0) { - halt_printf("remove_irq: g_irq_pending: %d\n", g_irq_pending); - } + g_irq_pending = g_irq_pending & (~irq_mask); } void @@ -1559,10 +1634,6 @@ take_irq(int is_it_brk) g_wait_pending = 0; } - if(g_irq_pending < 0) { - halt_printf("g_irq_pending: %d!\n", g_irq_pending); - } - if(engine.psr & 0x100) { /* Emulation */ set_memory_c(engine.stack, (engine.kpc >> 8) & 0xff, 0); @@ -1577,7 +1648,7 @@ take_irq(int is_it_brk) engine.stack = ((engine.stack -1) & 0xff) + 0x100; va = 0xfffffe; - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { /* I/O shadowing off...use ram locs */ va = 0x00fffe; } @@ -1599,13 +1670,13 @@ take_irq(int is_it_brk) if(is_it_brk) { /* break */ va = 0xffffe6; - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { va = 0xffe6; } } else { /* irq */ va = 0xffffee; - if(shadow_reg & 0x40) { + if(g_c035_shadow_reg & 0x40) { va = 0xffee; } } @@ -1967,19 +2038,18 @@ update_60hz(double dcycs, double dtime_now) g_dtime_eff_pmhz_array[prev_vbl_index] = eff_pmhz; - if(c041_en_vbl_ints) { + if(g_c041_val & C041_EN_VBL_INTS) { add_event_vbl(); } g_25sec_cntr++; if(g_25sec_cntr >= 16) { g_25sec_cntr = 0; - if(c041_en_25sec_ints && !c046_25sec_irq_pend) { + if(g_c041_val & C041_EN_25SEC_INTS) { + add_irq(IRQ_PENDING_C046_25SEC); g_c046_val |= 0x10; - c046_25sec_irq_pend = 1; - add_irq(); - irq_printf("Setting c046 .25 sec int to 1, " - "g_irq_pend: %d\n", g_irq_pending); + irq_printf("Setting c046 .25 sec int, g_irq_pend:%d\n", + g_irq_pending); } } @@ -1988,10 +2058,9 @@ update_60hz(double dcycs, double dtime_now) g_1sec_cntr = 0; tmp = g_c023_val; tmp |= 0x40; /* set 1sec int */ - if((tmp & 0x04) && !c023_1sec_int_irq_pending) { - c023_1sec_int_irq_pending = 1; + if(tmp & 0x04) { tmp |= 0x80; - add_irq(); + add_irq(IRQ_PENDING_C023_1SEC); irq_printf("Setting c023 to %02x irq_pend: %d\n", tmp, g_irq_pending); } @@ -2017,16 +2086,15 @@ update_60hz(double dcycs, double dtime_now) sound_update(dcycs); clock_update(); scc_update(dcycs); - joystick_update_button(); + paddle_update_buttons(); } void do_vbl_int() { - if(c041_en_vbl_ints && !c046_vbl_irq_pending) { + if(g_c041_val & C041_EN_VBL_INTS) { g_c046_val |= 0x08; - c046_vbl_irq_pending = 1; - add_irq(); + add_irq(IRQ_PENDING_C046_VBL); irq_printf("Setting c046 vbl_int_status to 1, irq_pend: %d\n", g_irq_pending); } @@ -2045,12 +2113,12 @@ do_scan_int(double dcycs, int line) } /* make sure scan int is still enabled for this line */ - if(g_slow_memory_ptr[0x19d00 + line] & 0x40) { + if((g_slow_memory_ptr[0x19d00 + line] & 0x40) && + (g_cur_a2_stat & ALL_STAT_SUPER_HIRES)) { /* valid interrupt, do it */ c023_val |= 0xa0; /* vgc_int and scan_int */ - if((c023_val & 0x02) && !c023_scan_int_irq_pending) { - add_irq(); - c023_scan_int_irq_pending = 1; + if(c023_val & 0x02) { + add_irq(IRQ_PENDING_C023_SCAN); irq_printf("Setting c023 to %02x, irq_pend: %d\n", c023_val, g_irq_pending); } @@ -2063,7 +2131,6 @@ do_scan_int(double dcycs, int line) } } - void check_scan_line_int(double dcycs, int cur_video_line) { @@ -2128,6 +2195,7 @@ init_reg() engine.stack = 0x1ff; engine.direct = 0; engine.psr = 0x134; + engine.fplus_ptr = 0; } @@ -2174,6 +2242,9 @@ handle_action(word32 ret) case RET_WDM: do_wdm(ret & 0xff); break; + case RET_STP: + do_stp(); + break; default: halt_printf("Unknown special action: %08x!\n", ret); } @@ -2274,7 +2345,11 @@ do_wai() void do_stp() { - halt_printf("Hit do_stp at addr: %06x\n", engine.kpc); + if(!g_stp_pending) { + g_stp_pending = 1; + halt_printf("Hit STP instruction at: %06x, press RESET to " + "continue\n", engine.kpc); + } } void @@ -2283,3 +2358,86 @@ size_fail(int val, word32 v1, word32 v2) halt_printf("Size failure, val: %08x, %08x %08x\n", val, v1, v2); } +int +fatal_printf(const char *fmt, ...) +{ + va_list ap; + int ret; + + va_start(ap, fmt); + + if(g_fatal_log < 0) { + g_fatal_log = 0; + } + ret = kegs_vprintf(fmt, ap); + va_end(ap); + + return ret; +} + +int +kegs_vprintf(const char *fmt, va_list ap) +{ + char *bufptr, *buf2ptr; + int len; + int ret; + + bufptr = malloc(4096); + ret = vsnprintf(bufptr, 4090, fmt, ap); + + len = strlen(bufptr); + if(g_fatal_log >= 0 && g_fatal_log < MAX_FATAL_LOGS) { + buf2ptr = malloc(len+1); + memcpy(buf2ptr, bufptr, len+1); + g_fatal_log_strs[g_fatal_log++] = buf2ptr; + } + must_write(1, bufptr, len); + if(g_debug_file_fd >= 0) { + must_write(g_debug_file_fd, bufptr, len); + } + free(bufptr); + + return ret; +} + +void +must_write(int fd, char *bufptr, int len) +{ + int ret; + + while(len > 0) { + ret = write(fd, bufptr, len); + if(ret >= 0) { + len -= ret; + bufptr += ret; + } else if(errno != EAGAIN && errno != EINTR) { + return; // just get out + } + } +} + +void +clear_fatal_logs() +{ + int i; + + for(i = 0; i < g_fatal_log; i++) { + free(g_fatal_log_strs[i]); + g_fatal_log_strs[i] = 0; + } + g_fatal_log = -1; +} + +char * +kegs_malloc_str(char *in_str) +{ + char *str; + int len; + + len = strlen(in_str) + 1; + str = malloc(len); + memcpy(str, in_str, len); + + return str; +} + diff --git a/src/smartport.c b/src/smartport.c index 24ca31e..86b98aa 100644 --- a/src/smartport.c +++ b/src/smartport.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_smartport_c[] = "@(#)$KmKId: smartport.c,v 1.29 2003-11-17 15:44:44-05 kentd Exp $"; +const char rcsid_smartport_c[] = "@(#)$KmKId: smartport.c,v 1.31 2004-11-12 23:10:50-05 kentd Exp $"; #include "defc.h" @@ -195,12 +195,9 @@ do_c70d(word32 arg0) /* see technotes/smpt/tn-smpt-002 */ set_memory_c(status_ptr, g_highest_smartport_unit+1, 0); set_memory_c(status_ptr+1, 0xff, 0); /* interrupt stat*/ - set_memory_c(status_ptr+2, 0x02, 0); /* vendor id */ - set_memory_c(status_ptr+3, 0x00, 0); /* vendor id */ - set_memory_c(status_ptr+4, 0x00, 0); /* version lo */ - set_memory_c(status_ptr+5, 0x10, 0); /* version hi */ - set_memory_c(status_ptr+6, 0x00, 0); - set_memory_c(status_ptr+7, 0x00, 0); + set_memory16_c(status_ptr+2, 0x0002, 0); /* vendor id */ + set_memory16_c(status_ptr+4, 0x1000, 0); /* version */ + set_memory16_c(status_ptr+6, 0x0000, 0); engine.xreg = 8; engine.yreg = 0; @@ -219,9 +216,7 @@ do_c70d(word32 arg0) size = (size+511) / 512; } set_memory_c(status_ptr, stat_val, 0); - set_memory_c(status_ptr +1, size & 0xff, 0); - set_memory_c(status_ptr +2, (size >> 8) & 0xff, 0); - set_memory_c(status_ptr +3, (size >> 16) & 0xff, 0); + set_memory24_c(status_ptr +1, size, 0); engine.xreg = 4; if(cmd & 0x40) { set_memory_c(status_ptr + 4, @@ -249,9 +244,7 @@ do_c70d(word32 arg0) } /* DIB for unit 1 */ set_memory_c(status_ptr, stat_val, 0); - set_memory_c(status_ptr +1, size & 0xff, 0); - set_memory_c(status_ptr +2, (size >> 8) & 0xff, 0); - set_memory_c(status_ptr +3, (size >> 16) & 0xff, 0); + set_memory24_c(status_ptr +1, size, 0); if(cmd & 0x40) { set_memory_c(status_ptr + 4, (size >> 24) & 0xff, 0); @@ -267,11 +260,8 @@ do_c70d(word32 arg0) set_memory_c(status_ptr +8, 'S', 0); /* hard disk supporting extended calls */ - set_memory_c(status_ptr + 21, 0x02, 0); - set_memory_c(status_ptr + 22, 0xa0, 0); - - set_memory_c(status_ptr + 23, 0x00, 0); - set_memory_c(status_ptr + 24, 0x00, 0); + set_memory16_c(status_ptr + 21, 0xa002, 0); + set_memory16_c(status_ptr + 23, 0x0000, 0); if(cmd & 0x40) { engine.xreg = 26; @@ -766,18 +756,15 @@ do_c700(word32 ret) ret = do_read_c7(0, 0x800, 0); set_memory_c(0x7f8, 7, 0); - set_memory_c(0x42, 0x01, 0); - set_memory_c(0x43, 0x70, 0); - set_memory_c(0x44, 0x0, 0); - set_memory_c(0x45, 0x8, 0); - set_memory_c(0x46, 0x0, 0); - set_memory_c(0x47, 0x0, 0); + set_memory16_c(0x42, 0x7001, 0); + set_memory16_c(0x44, 0x0800, 0); + set_memory16_c(0x46, 0x0000, 0); engine.xreg = 0x70; engine.kpc = 0x801; if(ret != 0) { printf("Failure reading boot disk in s7d1!\n"); - engine.kpc = 0xe000; + engine.kpc = 0xff59; /* Jump to monitor, fix $36-$39 */ } } diff --git a/src/sound.c b/src/sound.c index 2ba8d06..4d5ea51 100644 --- a/src/sound.c +++ b/src/sound.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_sound_c[] = "@(#)$KmKId: sound.c,v 1.103 2003-10-17 15:07:47-04 kentd Exp $"; +const char rcsid_sound_c[] = "@(#)$KmKId: sound.c,v 1.108 2004-10-31 00:56:07-04 kentd Exp $"; #include "defc.h" @@ -25,6 +25,7 @@ extern int g_use_shmem; extern word32 g_vbl_count; extern int g_preferred_rate; +extern int g_c03ef_doc_ptr; extern double g_last_vbl_dcycs; @@ -34,7 +35,6 @@ byte doc_ram[0x10000 + 16]; word32 doc_sound_ctl = 0; word32 doc_saved_val = 0; -word32 doc_ptr = 0; int g_doc_num_osc_en = 1; double g_dcycs_per_doc_update = 1.0; double g_dupd_per_dcyc = 1.0; @@ -154,7 +154,7 @@ show_doc_log(void) int pos; int i; - docfile = fopen("doc_log_out", "wt"); + docfile = fopen("doc_log_out", "w"); if(docfile == 0) { printf("fopen failed, errno: %d\n", errno); return; @@ -397,10 +397,12 @@ sound_reset(double dcycs) halt_printf("reset: has_irq[%02x] = %d\n", i, g_doc_regs[i].has_irq_pending); } + g_doc_regs[i].has_irq_pending = 0; } if(g_num_osc_interrupting) { halt_printf("reset: num_osc_int:%d\n", g_num_osc_interrupting); } + g_num_osc_interrupting = 0; g_doc_num_osc_en = 1; UPDATE_G_DCYCS_PER_DOC_UPDATE(1); @@ -1212,7 +1214,7 @@ add_sound_irq(int osc) g_doc_regs[osc].has_irq_pending = num_osc_interrupting; g_num_osc_interrupting = num_osc_interrupting; - add_irq(); + add_irq(IRQ_PENDING_DOC); if(num_osc_interrupting == 1) { doc_reg_e0 = 0x00 + (osc << 1); } @@ -1238,7 +1240,9 @@ remove_sound_irq(int osc, int must) g_num_osc_interrupting--; g_doc_regs[osc].has_irq_pending = 0; DOC_LOG("rem_irq", osc, g_cur_dcycs * g_dsamps_per_dcyc, 0); - remove_irq(); + if(g_num_osc_interrupting == 0) { + remove_irq(IRQ_PENDING_DOC); + } first = 0x40 | (doc_reg_e0 >> 1); /* if none found, then def = no ints */ @@ -1641,13 +1645,13 @@ doc_read_c03d(double dcycs) if(doc_sound_ctl & 0x40) { /* Read RAM */ - doc_saved_val = doc_ram[doc_ptr]; + doc_saved_val = doc_ram[g_c03ef_doc_ptr]; } else { /* Read DOC */ doc_saved_val = 0; - osc = doc_ptr & 0x1f; - type = (doc_ptr >> 5) & 0x7; + osc = g_c03ef_doc_ptr & 0x1f; + type = (g_c03ef_doc_ptr >> 5) & 0x7; rptr = &(g_doc_regs[osc]); switch(type) { @@ -1698,24 +1702,24 @@ doc_read_c03d(double dcycs) default: doc_saved_val = 0; halt_printf("Reading bad doc_reg[%04x]: %02x\n", - doc_ptr, doc_saved_val); + g_c03ef_doc_ptr, doc_saved_val); } break; default: doc_saved_val = 0; halt_printf("Reading bad doc_reg[%04x]: %02x\n", - doc_ptr, doc_saved_val); + g_c03ef_doc_ptr, doc_saved_val); } } doc_printf("read c03d, doc_ptr: %04x, ret: %02x, saved: %02x\n", - doc_ptr, ret, doc_saved_val); + g_c03ef_doc_ptr, ret, doc_saved_val); - DOC_LOG("read c03d", -1, dsamps, (doc_ptr << 16) + + DOC_LOG("read c03d", -1, dsamps, (g_c03ef_doc_ptr << 16) + (doc_saved_val << 8) + ret); if(doc_sound_ctl & 0x20) { - doc_ptr = (doc_ptr + 1) & 0xffff; + g_c03ef_doc_ptr = (g_c03ef_doc_ptr + 1) & 0xffff; } @@ -1758,17 +1762,17 @@ doc_write_c03d(int val, double dcycs) dsamps = dcycs * g_dsamps_per_dcyc; eff_dsamps = dsamps; doc_printf("write c03d, doc_ptr: %04x, val: %02x\n", - doc_ptr, val); + g_c03ef_doc_ptr, val); - DOC_LOG("write c03d", -1, dsamps, (doc_ptr << 16) + val); + DOC_LOG("write c03d", -1, dsamps, (g_c03ef_doc_ptr << 16) + val); if(doc_sound_ctl & 0x40) { /* RAM */ - doc_ram[doc_ptr] = val; + doc_ram[g_c03ef_doc_ptr] = val; } else { /* DOC */ - osc = doc_ptr & 0x1f; - type = (doc_ptr >> 5) & 0x7; + osc = g_c03ef_doc_ptr & 0x1f; + type = (g_c03ef_doc_ptr >> 5) & 0x7; rptr = &(g_doc_regs[osc]); ctl = rptr->ctl; @@ -1777,7 +1781,7 @@ doc_write_c03d(int val, double dcycs) if(type < 2 || type == 4 || type == 6) { halt_printf("Osc %d is running, old ctl: %02x, " "but write reg %02x=%02x\n", - osc, ctl, doc_ptr & 0xff, val); + osc, ctl, g_c03ef_doc_ptr & 0xff, val); } } #endif @@ -1901,35 +1905,23 @@ doc_write_c03d(int val, double dcycs) /* and apparently TaskForce, OOTW, etc */ /* writes to e2-ff, for no apparent reason */ doc_printf("Writing doc 0x%x with %02x\n", - doc_ptr, val); + g_c03ef_doc_ptr, val); break; } break; default: halt_printf("Writing %02x into bad doc_reg[%04x]\n", - val, doc_ptr); + val, g_c03ef_doc_ptr); } } if(doc_sound_ctl & 0x20) { - doc_ptr = (doc_ptr + 1) & 0xffff; + g_c03ef_doc_ptr = (g_c03ef_doc_ptr + 1) & 0xffff; } doc_saved_val = val; } -void -doc_write_c03e(int val) -{ - doc_ptr = (doc_ptr & 0xff00) + val; -} - -void -doc_write_c03f(int val) -{ - doc_ptr = (doc_ptr & 0xff) + (val << 8); -} - void doc_show_ensoniq_state(int osc) { @@ -1939,8 +1931,8 @@ doc_show_ensoniq_state(int osc) printf("Ensoniq state\n"); printf("c03c doc_sound_ctl: %02x, doc_saved_val: %02x\n", doc_sound_ctl, doc_saved_val); - printf("doc_ptr: %04x, num_osc_en: %02x, e0: %02x\n", doc_ptr, - g_doc_num_osc_en, doc_reg_e0); + printf("doc_ptr: %04x, num_osc_en: %02x, e0: %02x\n", + g_c03ef_doc_ptr, g_doc_num_osc_en, doc_reg_e0); for(i = 0; i < 32; i += 8) { printf("irqp: %02x: %04x %04x %04x %04x %04x %04x %04x %04x\n", diff --git a/src/sound_driver.c b/src/sound_driver.c index 30f9b61..c36d8ad 100644 --- a/src/sound_driver.c +++ b/src/sound_driver.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.16 2004-03-22 19:08:08-05 kentd Exp $"; +const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.17 2004-09-21 10:37:15-04 kentd Exp $"; #include "defc.h" #include "sound.h" @@ -17,10 +17,6 @@ const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.16 2004-03-2 # include #endif -#ifdef SOLARIS -# include -#endif - #if defined(__linux__) || defined(OSS) # include #endif @@ -33,7 +29,6 @@ const char rcsid_sound_driver_c[] = "@(#)$KmKId: sound_driver.c,v 1.16 2004-03-2 extern int Verbose; -extern int g_use_alib; extern int g_audio_rate; @@ -57,7 +52,6 @@ word32 *g_childsnd_shm_addr = 0; void child_sound_init_linux(); void child_sound_init_hpdev(); -void child_sound_init_solaris(); void child_sound_init_win32(); void child_sound_init_mac(); @@ -137,9 +131,6 @@ child_sound_loop(int read_fd, int write_fd, word32 *shm_addr) #ifdef HPUX child_sound_init_hpdev(); #endif -#ifdef SOLARIS - child_sound_init_solaris(); -#endif #if defined(__linux__) || defined(OSS) child_sound_init_linux(); #endif @@ -360,37 +351,6 @@ child_sound_init_hpdev() } #endif /* HPUX */ -#ifdef SOLARIS -void -child_sound_init_solaris() -{ - struct audio_info audioi; - int ret; - - g_audio_socket = open("/dev/audio", O_WRONLY, 0); - if(g_audio_socket < 0) { - printf("open /dev/audio failed, ret: %d, errno:%d\n", - g_audio_socket, errno); - exit(1); - } - - ret = ioctl(g_audio_socket, AUDIO_GETINFO, &audioi); - if(ret < 0) { - printf("ioctl audio getinfo ret: %d, errno:%d\n", ret, errno); - exit(1); - } - audioi.play.sample_rate = g_preferred_rate; - audioi.play.encoding = AUDIO_ENCODING_LINEAR; - audioi.play.precision = 16; - audioi.play.channels = 2; - ret = ioctl(g_audio_socket, AUDIO_SETINFO, &audioi); - if(ret < 0) { - printf("ioctl audio setinfo ret: %d, errno:%d\n", ret, errno); - exit(1); - } -} -#endif /* SOLARIS */ - #if defined(__linux__) || defined(OSS) void child_sound_init_linux() diff --git a/src/vars_x86solaris b/src/vars_x86solaris index 69d8671..778cb85 100644 --- a/src/vars_x86solaris +++ b/src/vars_x86solaris @@ -3,7 +3,7 @@ TARGET = xkegs OBJECTS = $(OBJECTS1) xdriver.o CC = gcc CCOPTS = -O -OPTS = -DNDEBUG -DSOLARIS -DKEGS_LITTLE_ENDIAN -DOSS +OPTS = -DNDEBUG -DSOLARIS -DKEGS_LITTLE_ENDIAN -DSOLARISSOUND SUFFIX = NAME = xkegs LDFLAGS = diff --git a/src/video.c b/src/video.c index b7a4055..37afc98 100644 --- a/src/video.c +++ b/src/video.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_video_c[] = "@(#)$KmKId: video.c,v 1.125 2004-03-23 17:25:50-05 kentd Exp $"; +const char rcsid_video_c[] = "@(#)$KmKId: video.c,v 1.135 2004-11-12 23:09:44-05 kentd Exp $"; #include @@ -41,12 +41,11 @@ extern byte *g_slow_memory_ptr; extern int g_screen_depth; extern int g_screen_mdepth; -extern int statereg; extern double g_cur_dcycs; extern int g_line_ref_amt; -extern int g_border_color; +extern int g_c034_val; extern int g_config_control_panel; typedef byte Change; @@ -72,6 +71,15 @@ Kimage g_mainwin_kimage; extern double g_last_vbl_dcycs; +double g_video_dcycs_check_input = 0.0; +int g_video_extra_check_inputs = 0; +int g_video_act_margin_left = BASE_MARGIN_LEFT; +int g_video_act_margin_right = BASE_MARGIN_RIGHT; +int g_video_act_margin_top = BASE_MARGIN_TOP; +int g_video_act_margin_bottom = BASE_MARGIN_BOTTOM; +int g_video_act_width = X_A2_WINDOW_WIDTH; +int g_video_act_height = X_A2_WINDOW_HEIGHT; + int g_need_redraw = 1; int g_palette_change_summary = 0; word32 g_palette_change_cnt[16]; @@ -98,6 +106,7 @@ int g_expanded_col_2[16]; int g_cur_a2_stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 | (0xf << BIT_ALL_STAT_TEXT_COLOR); +extern int g_save_cur_a2_stat; /* from config.c */ int g_a2vid_palette = 0xe; int g_installed_full_superhires_colormap = 0; @@ -445,8 +454,6 @@ video_init() video_reset(); display_screen(); - vid_printf("Done with display_screen\n"); - fflush(stdout); } @@ -463,7 +470,8 @@ show_a2_line_stuff() g_a2_line_right_edge[i]); } - printf("new_a2_stat_cur_line: %d\n", g_new_a2_stat_cur_line); + printf("new_a2_stat_cur_line: %d, cur_a2_stat:%04x\n", + g_new_a2_stat_cur_line, g_cur_a2_stat); for(i = 0; i < 200; i++) { printf("cur_all[%d]: %03x new_all: %03x\n", i, g_a2_cur_all_stat[i], g_a2_new_all_stat[i]); @@ -476,13 +484,20 @@ int g_flash_count = 0; void video_reset() { + int stat; int i; g_installed_full_superhires_colormap = (g_screen_depth != 8); - g_cur_a2_stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 | - (0xf << BIT_ALL_STAT_TEXT_COLOR); + stat = ALL_STAT_TEXT | ALL_STAT_ANNUNC3 | + (0xf << BIT_ALL_STAT_TEXT_COLOR); if(g_use_bw_hires) { - g_cur_a2_stat |= ALL_STAT_COLOR_C021; + stat |= ALL_STAT_COLOR_C021; + } + if(g_config_control_panel) { + /* Don't update cur_a2_stat when in configuration panel */ + g_save_cur_a2_stat = stat; + } else { + g_cur_a2_stat = stat; } g_palette_change_summary = 0; @@ -502,17 +517,11 @@ word32 g_cycs_in_check_input = 0; void video_update() { - register word32 start_time; - register word32 end_time; int did_video; update_border_info(); - GET_ITIMER(start_time); - check_input_events(); - GET_ITIMER(end_time); - - g_cycs_in_check_input += (end_time - start_time); + video_check_input_events(); g_screen_redraw_skip_count--; did_video = 0; @@ -536,8 +545,7 @@ video_update() if(did_video) { g_new_a2_stat_cur_line = 0; - g_a2_new_all_stat[0] = (g_cur_a2_stat & (~ALL_STAT_PAGE2)) + - PAGE2; + g_a2_new_all_stat[0] = g_cur_a2_stat; g_vid_update_last_line = 0; video_update_through_line(0); } @@ -740,8 +748,7 @@ change_display_mode(double dcycs) video_update_all_stat_through_line(tmp_line); if(line < 200) { - g_a2_new_all_stat[line] = - (g_cur_a2_stat & (~ALL_STAT_PAGE2)) + PAGE2; + g_a2_new_all_stat[line] = g_cur_a2_stat; } /* otherwise, g_cur_a2_stat is covered at the end of vbl */ } @@ -813,12 +820,12 @@ update_border_info() color_now = g_vbl_border_color; - dlines_per_dcyc = (double)(262.0 / DCYCS_IN_16MS); + dlines_per_dcyc = (double)(1.0 / 65.0); limit = g_num_border_changes; if(g_border_last_vbl_changes || limit) { /* add a dummy entry */ g_border_changes[limit].fcycs = DCYCS_IN_16MS + 21.0; - g_border_changes[limit].val = g_border_color; + g_border_changes[limit].val = (g_c034_val & 0xf); limit++; } last_line_offset = (-1 << 8) + 44; @@ -826,7 +833,7 @@ update_border_info() dcycs = g_border_changes[i].fcycs; dline = dcycs * dlines_per_dcyc; new_line = (int)dline; - dcyc_line_start = (double)new_line * (DCYCS_IN_16MS/262.0); + dcyc_line_start = (double)new_line * 65.0; offset = ((int)(dcycs - dcyc_line_start)) & 0xff; /* here comes the tricky part */ @@ -880,7 +887,7 @@ update_border_info() } g_num_border_changes = 0; - g_vbl_border_color = g_border_color; + g_vbl_border_color = (g_c034_val & 0xf); } void @@ -943,8 +950,8 @@ update_border_line(int st_line_offset, int end_line_offset, int color) right = MIN(4, end_offset - 44); video_border_pixel_write(&g_kimage_border_sides, 2*line, 2, val, - 32 + (left * EFF_BORDER_WIDTH/4), - 32 + (right * EFF_BORDER_WIDTH/4)); + BORDER_WIDTH + (left * EFF_BORDER_WIDTH/4), + BORDER_WIDTH + (right * EFF_BORDER_WIDTH/4)); g_border_sides_refresh_needed = 1; } } @@ -2638,6 +2645,26 @@ video_update_event_line(int line) add_event_vid_upd(1); /* add event for new screen */ } } + + if(g_video_extra_check_inputs) { + if(g_video_dcycs_check_input < g_cur_dcycs) { + video_check_input_events(); + } + } +} + +void +video_check_input_events() +{ + word32 start_time, end_time; + + g_video_dcycs_check_input = g_cur_dcycs + 4000.0; + + GET_ITIMER(start_time); + check_input_events(); + GET_ITIMER(end_time); + + g_cycs_in_check_input += (end_time - start_time); } void @@ -2654,7 +2681,7 @@ video_update_through_line(int line) int i; #if 0 - vid_printf("\nvideo_upd for line %d, lines: %06x\n\n", line, + vid_printf("\nvideo_upd for line %d, lines: %06x\n", line, get_lines_since_vbl(g_cur_dcycs)); #endif @@ -3062,9 +3089,8 @@ video_push_lines(Kimage *kimage_ptr, int start_line, int end_line, int left_pix, g_refresh_bytes_xfer += 2*(end_line - start_line) * (right_pix - left_pix); - - x_push_kimage(kimage_ptr, BASE_MARGIN_LEFT + left_pix, - BASE_MARGIN_TOP + srcy, left_pix, srcy, + x_push_kimage(kimage_ptr, g_video_act_margin_left + left_pix, + g_video_act_margin_top + srcy, left_pix, srcy, (right_pix - left_pix), 2*(end_line - start_line)); } @@ -3087,8 +3113,30 @@ video_push_border_sides_lines(int src_x, int dest_x, int width, int start_line, g_refresh_bytes_xfer += 2 * (end_line - start_line) * width; srcy = 2 * start_line; - x_push_kimage(kimage_ptr, dest_x, BASE_MARGIN_TOP + srcy, + + // Adjust dext_x to accound for changed margins + dest_x = dest_x + g_video_act_margin_left - BASE_MARGIN_LEFT; + if(dest_x < BASE_MARGIN_LEFT) { + src_x = src_x + g_video_act_margin_left - BASE_MARGIN_LEFT; + // Don't adjust src_x if doing right border + } + if(dest_x < 0) { + width = width + dest_x; + src_x = src_x - dest_x; + dest_x = 0; + } + if(src_x < 0) { + width = width + src_x; + dest_x = dest_x - src_x; + src_x = 0; + } + if(dest_x + width > g_video_act_width) { + width = g_video_act_width - dest_x; + } + if(width > 0) { + x_push_kimage(kimage_ptr, dest_x, g_video_act_margin_top + srcy, src_x, srcy, width, 2*(end_line - start_line)); + } } void @@ -3134,18 +3182,39 @@ video_push_border_special() { Kimage *kimage_ptr; int width, height; - - width = X_A2_WINDOW_WIDTH; - height = BASE_MARGIN_TOP; + int src_x, src_y; + int dest_x, dest_y; kimage_ptr = &g_kimage_border_special; + width = g_video_act_width; g_refresh_bytes_xfer += width * (BASE_MARGIN_TOP + BASE_MARGIN_BOTTOM); - x_push_kimage(kimage_ptr, 0, BASE_MARGIN_TOP + A2_WINDOW_HEIGHT, - 0, 0, width, BASE_MARGIN_BOTTOM); - x_push_kimage(kimage_ptr, 0, 0, - 0, BASE_MARGIN_BOTTOM, width, BASE_MARGIN_TOP); - + // First do bottom border: dest_x from 0 to 640+MARGIN_LEFT+MARGIN_RIGHT + // and dest_y of BASE_MARGIN_BOTTOM starting at TOP+A2_HEIGHT + // src_x is dest_x, and src_y is 0. + dest_y = g_video_act_margin_top + A2_WINDOW_HEIGHT; + height = g_video_act_margin_bottom; + src_y = BASE_MARGIN_BOTTOM - height; + + dest_x = 0; + src_x = BASE_MARGIN_LEFT - g_video_act_margin_left; + + if(width > 0 && height > 0) { + x_push_kimage(kimage_ptr, dest_x, dest_y, src_x, src_y, + width, height); + } + + // Then fix top border: dest_x from 0 to 640+LEFT+RIGHT and + // dest_y from 0 to TOP. src_x is dest_x, but src_y is + // BOTTOM to BOTTOM+TOP + // Just use src_x and dest_x from earlier. + height = g_video_act_margin_top; + dest_y = 0; + src_y = BASE_MARGIN_BOTTOM; + if(width > 0 && height > 0) { + x_push_kimage(kimage_ptr, dest_x, dest_y, src_x, src_y, + width, height); + } } void @@ -3352,3 +3421,70 @@ video_show_debug_info() printf("lines since vbl: %06x\n", tmp1); printf("Last line updated: %d\n", g_vid_update_last_line); } + +word32 +float_bus(double dcycs) +{ + word32 val; + int lines_since_vbl; + int line, eff_line, line24; + int all_stat; + int byte_offset; + int hires, page2; + int addr; + + lines_since_vbl = get_lines_since_vbl(dcycs); + +/* For floating bus, model hires style: Visible lines 0-191 are simply the */ +/* data being displayed at that time. Lines 192-255 are lines 0 - 63 again */ +/* and lines 256-261 are lines 58-63 again */ +/* For each line, figure out starting byte at -25 mod 128 bytes from this */ +/* line's start */ +/* This emulates an Apple II style floating bus. A reall IIgs does not */ +/* drive anything meaningful during the 25 horizontal blanking lines, */ +/* nor during veritical blanking. The data seems to be 0 or related to */ +/* the instruction fetches on a real IIgs during blankings */ + + line = lines_since_vbl >> 8; + byte_offset = lines_since_vbl & 0xff; + /* byte offset is from 0 to 65, where the visible screen is drawn */ + /* from 25 to 65 */ + + eff_line = line; + if(line >= 192) { + eff_line = line - 192; + if(line >= 256) { + eff_line = line - 262 + 64; + } + } + all_stat = g_cur_a2_stat; + hires = all_stat & ALL_STAT_HIRES; + if((all_stat & ALL_STAT_MIX_T_GR) && (line >= 160)) { + hires = 0; + } + page2 = EXTRU(all_stat, 31 - BIT_ALL_STAT_PAGE2, 1); + if(all_stat & ALL_STAT_ST80) { + page2 = 0; + } + + line24 = (eff_line >> 3) & 0x1f; + addr = g_screen_index[line24] & 0x3ff; + addr = (addr & 0x380) + (((addr & 0x7f) - 25 + byte_offset) & 0x7f); + if(hires) { + addr = 0x2000 + addr + ((eff_line & 7) << 10) + (page2 << 13); + } else { + addr = 0x400 + addr + (page2 << 10); + } + + val = g_slow_memory_ptr[addr]; + if(byte_offset < 10) { + /* Bob Bishop's sample program seems to get confused by */ + /* these bytes--so mask some off to prevent seeing some */ + val = 0; + } +#if 0 + printf("For %04x (%d) addr=%04x, val=%02x, dcycs:%9.2f\n", + lines_since_vbl, eff_line, addr, val, dcycs - g_last_vbl_dcycs); +#endif + return val; +} diff --git a/src/windriver.c b/src/windriver.c index 787c9b6..c929656 100644 --- a/src/windriver.c +++ b/src/windriver.c @@ -8,7 +8,10 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_windriver_c[] = "@(#)$KmKId: windriver.c,v 1.8 2004-03-23 17:25:37-05 kentd Exp $"; +const char rcsid_windriver_c[] = "@(#)$KmKId: windriver.c,v 1.11 2004-11-24 16:43:46-05 kentd Exp $"; + +/* Based on code from Chea Chee Keong from KEGS32, which is available at */ +/* http://www.geocities.com/akilgard/kegs32 */ #define WIN32_LEAN_AND_MEAN /* Tell windows we want less header gunk */ #define STRICT /* Tell Windows we want compile type checks */ @@ -187,6 +190,34 @@ int g_a2_key_to_wsym[][3] = { { -1, -1, -1 } }; +int +win_nonblock_read_stdin(int fd, char *bufptr, int len) +{ + HANDLE oshandle; + DWORD dwret; + int ret; + + errno = EAGAIN; + oshandle = (HANDLE)_get_osfhandle(fd); // get stdin handle + dwret = WaitForSingleObject(oshandle, 1); // wait 1msec for data + ret = -1; + if(dwret == WAIT_OBJECT_0) { + ret = read(fd, bufptr, len); + } + return ret; +} + +void +x_dialog_create_kegs_conf(const char *str) +{ +} + +int +x_show_alert(int is_fatal, const char *str) +{ + return 0; +} + int win_update_mouse(int x, int y, int button_states, int buttons_valid) { @@ -635,3 +666,9 @@ x_hide_pointer(int do_hide) ShowCursor(1); } } + +void +x_full_screen(int do_full) +{ + return; +} diff --git a/src/xdriver.c b/src/xdriver.c index 7e5f7be..8d77b43 100644 --- a/src/xdriver.c +++ b/src/xdriver.c @@ -8,7 +8,7 @@ /* You may contact the author at: kadickey@alumni.princeton.edu */ /************************************************************************/ -const char rcsid_xdriver_c[] = "@(#)$KmKId: xdriver.c,v 1.181 2004-03-23 17:25:25-05 kentd Exp $"; +const char rcsid_xdriver_c[] = "@(#)$KmKId: xdriver.c,v 1.187 2004-11-15 16:24:19-05 kentd Exp $"; # if !defined(__CYGWIN__) && !defined(__POWERPC__) /* No shared memory on Cygwin */ @@ -136,7 +136,7 @@ int g_num_a2_keycodes = 0; int a2_key_to_xsym[][3] = { { 0x35, XK_Escape, 0 }, { 0x7a, XK_F1, 0 }, - { 0x7b, XK_F2, 0 }, + { 0x78, XK_F2, 0 }, { 0x63, XK_F3, 0 }, { 0x76, XK_F4, 0 }, { 0x60, XK_F5, 0 }, @@ -165,7 +165,7 @@ int a2_key_to_xsym[][3] = { { 0x1b, '-', '_' }, { 0x18, '=', '+' }, { 0x33, XK_BackSpace, 0 }, - { 0x72, XK_Insert, 0 }, /* Help? */ + { 0x72, XK_Insert, XK_Help }, /* Help? */ /* { 0x73, XK_Home, 0 }, alias XK_Home to be XK_KP_Equal! */ { 0x74, XK_Page_Up, 0 }, { 0x47, XK_Num_Lock, XK_Clear }, /* Clear */ @@ -248,6 +248,23 @@ main(int argc, char **argv) return kegsmain(argc, argv); } +void +x_dialog_create_kegs_conf(const char *str) +{ + /* do nothing -- not implemented yet */ + return; +} + +int +x_show_alert(int is_fatal, const char *str) +{ + /* Not implemented yet */ + adb_all_keys_up(); + + clear_fatal_logs(); + return 0; +} + #define MAKE_2(val) ( (val << 8) + val) @@ -1160,15 +1177,23 @@ handle_keysym(XEvent *xev_in) switch(keysym) { case XK_Alt_R: case XK_Meta_R: + case XK_Super_R: case XK_Mode_switch: case XK_Cancel: keysym = XK_Print; /* option */ break; case XK_Alt_L: case XK_Meta_L: + case XK_Super_L: case XK_Menu: keysym = XK_Scroll_Lock; /* cmd */ break; + case 0x1000003: + if(keycode == 0x3c) { + /* enter key on Mac OS X laptop--make it option */ + keysym = XK_Print; + } + break; case NoSymbol: switch(keycode) { /* 94-95 are for my PC101 kbd + windows keys on HPUX */ @@ -1196,6 +1221,7 @@ handle_keysym(XEvent *xev_in) keysym = XK_Scroll_Lock; break; case 0x0048: + case 0x0076: /* Windows menu key on Mac OS X */ /* menu windows == option */ keysym = XK_Print; break; @@ -1304,3 +1330,9 @@ x_auto_repeat_off(int must) adb_kbd_repeat_off(); } } + +void +x_full_screen(int do_full) +{ + return; +}