mirror of
https://github.com/aufflick/kegs.git
synced 2024-09-07 00:54:29 +00:00
v0.91 sources and binaries from website
This commit is contained in:
parent
cf770f0a3d
commit
f913d80b03
@ -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
|
280
COPYING.txt
Normal file
280
COPYING.txt
Normal file
@ -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
|
@ -4,8 +4,46 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>2mg</string>
|
||||
<string>2MG</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>2mg.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Apple II 2MG Disk Image</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>a2mg</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>None</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>kegs</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>525.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>KEGS Configuration File</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>kegs</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>None</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>KEGSMAC</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>KEGSMAC</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>kegsicon.icns</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@ -13,10 +51,14 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<string>KEGS</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.1</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<string>0.91</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>KEGSMAC version 0.91</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>KEGSMAC v0.91, Copyright 2004 Kent Dickey, http://kegs.sourceforge.net</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 2004 Kent Dickey</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Binary file not shown.
BIN
KEGSMAC.app/Contents/Resources/2mg.icns
Normal file
BIN
KEGSMAC.app/Contents/Resources/2mg.icns
Normal file
Binary file not shown.
BIN
KEGSMAC.app/Contents/Resources/525.icns
Normal file
BIN
KEGSMAC.app/Contents/Resources/525.icns
Normal file
Binary file not shown.
Binary file not shown.
123
README.a2.compatibility.txt
Normal file
123
README.a2.compatibility.txt
Normal file
@ -0,0 +1,123 @@
|
||||
# $Id: README.a2.compatibility,v 1.2 2004/10/18 18:17:21 kentd Exp $
|
||||
|
||||
Flobynoid: Must disable Fast Disk Emul (hit F7 to toggle it off) since
|
||||
game's loader relies on the sector order on the disk (reads 8
|
||||
sectors from the start without checking headers, assumes every other
|
||||
physical sector is skipped due to decode delays).
|
||||
|
||||
Bard's Tale II GS: Doesn't recognize any save disk as a ProDOS disk.
|
||||
It's detecting a "ProDOS" disk by checking for a string on block
|
||||
0 at offset 0x15e. GSOS on system 6 has moved the string to 0x162,
|
||||
so disks inited under GSOS will be detected as "Not a PRODOS disk".
|
||||
Just make a copy of the Bard's Tale disk image to another file and
|
||||
then mount that new image and remove all the files using the Finder.
|
||||
Then rename the volume and you have a working save disk.
|
||||
|
||||
Robotron 2084:
|
||||
Robot Battle:
|
||||
These cracks use a "Fastloader" which is buggy.
|
||||
It tries to JMP $F3D4 and expects to hit an RTS soon.
|
||||
But on a IIgs it will access some illegal memory causing a code
|
||||
yellow. You can just ignore the code yellow.
|
||||
|
||||
Beyond Castle Wolfenstein: Make sure your disk is writeable (not compressed!)
|
||||
|
||||
Breakout: Has trouble loading from the cracked copy.
|
||||
From the BASIC prompt, do: "CALL -151" then "C083 N C083" then
|
||||
"BLOAD INTBASIC" then run breakout. Then it runs fine.
|
||||
|
||||
Burgertime: This is a bad crack. Loader starts the game by writing
|
||||
the game entry point into $0036/$0037, and then executing a BRK
|
||||
instruction. The BRK handler on an old Apple II will try to write
|
||||
out a message by calling through $0036/$0037, and this will start
|
||||
the game. But on a IIgs, the ROM sets the $0036/$0037 vectors
|
||||
back to the default, and so we crash into the monitor instead.
|
||||
Here's a memory fix and a disk-image fix: From the crack screen,
|
||||
press Shift-F6 (or middle mouse button) and in the KEGS debugger
|
||||
window enter: "1d0a:ea 6c 36 0" and then "g". You can make
|
||||
this fix to the disk image using a sector editor and change
|
||||
Track $1E sector $09 offset $0A from "60 78 A9 03" to "EA 6C 36 00"
|
||||
and write it back.
|
||||
|
||||
Caverns of Callisto: Requires old C600 ROM in slot 6 (Slot 6==Your Card).
|
||||
|
||||
Championship Loderunner: Requires disk to be writeable or else it starts
|
||||
the level and then jumps immediately back to the title page.
|
||||
|
||||
Jeopardy: Disk must be writeable or else it displays "DISK ERROR" and
|
||||
then crashes into the monitor.
|
||||
|
||||
|
||||
Drol: Needs slot 6 set to "Your Card" from the IIgs control panel
|
||||
(Ctrl-Cmd-ESC, then choose "Slots").
|
||||
I found Drol hard, so here are some cheats. First, the standard cheat
|
||||
for Drol is to have infinite lives, this cheat is to edit the disk
|
||||
image:
|
||||
Track $0B, Sector $0A, byte $22 to EA EA
|
||||
Track $11, Sector $0A, byte $10 to EA EA
|
||||
Track $17, Sector $09, byte $B2 to EA EA
|
||||
I didn't create those cheats, I got it from textfiles.com.
|
||||
My cheats are for the monsters to never kill you--just run right
|
||||
through them.
|
||||
While playing Drol, press Shift-F6 (or middle mouse button) to
|
||||
enter the KEGS debugger, and then:
|
||||
0/f28:18 18 # Monsters' missiles won't kill you
|
||||
0/e05:90 0c # Monsters won't kill you
|
||||
Continue emulation by type "g" and then enter.
|
||||
Other things, like the bird, axes, swords still kill you.
|
||||
To easily solve the third screen, move your man to the far right
|
||||
side on the top level, so that you are directly above the woman
|
||||
on the bottom row. Fly into the air "A" and then get to the KEGS
|
||||
debugger, and type:
|
||||
0/c:4
|
||||
and then continue with "g". Now press "Z" and you will go all
|
||||
the way down and land on the woman and end the level. It's
|
||||
useful to have made the two above patches so that touching monsters
|
||||
won't kill you.
|
||||
Two more patches that only apply to level 3, and so most be made
|
||||
in memory each time you enter level 3:
|
||||
6cf3:18 18 18 # Axes won't kill you
|
||||
6f70:38 38 # Swords/arrows won't kill you
|
||||
The bird and the guy you can't kill will still kill you. These
|
||||
cheats were enough to make the game easily playable.
|
||||
In the game, your death is indicated by setting location $001E to
|
||||
$FF. Setting breakpoints there can let you find other cheats.
|
||||
|
||||
Moon Patrol: Crashes into the monitor after completing checkpoint E.
|
||||
To fix the Moon Patrol/Dung beetles version, from within KEGS:
|
||||
BLOAD MOON PATROL
|
||||
CALL -151
|
||||
1E15:EA
|
||||
919G
|
||||
and it will work fine.
|
||||
If you have the booting version that just has Moon Patrol on it,
|
||||
then from any point after the crack screen is shown, enter the
|
||||
KEGS debugger (Shift-F6 or middle moust button) and then enter:
|
||||
0/1e15:ea
|
||||
g
|
||||
and then it will play fine.
|
||||
The bug is that the code executes an instruction with opcode $02,
|
||||
which is a NOP on 6502, but is a COP instruction to 65816. The
|
||||
COP instruction acts like BRK and will crash. The patch just
|
||||
makes it a real NOP.
|
||||
|
||||
Microbe: Crashes upon booting.
|
||||
Code at $599E tries to pull a return address off of a location
|
||||
beneath the stack pointer and jump to it, but it doesn't add 1
|
||||
correctly so it jumps to $5917 when it meant to jump to $5918.
|
||||
On a IIgs, this causes a BRK to be executed and the game to crash.
|
||||
This can be patched in memory in two places:
|
||||
0/599e:ba ca 9a 7d 00 01 48 98 7d 01 01 9d 01 01 60
|
||||
0/6f1d:ba ca 9a 7d 00 01 48 98 7d 01 01 9d 01 01 60
|
||||
The original byte sequence for both locations is:
|
||||
00/599e: ba TSX
|
||||
00/599f: 7d ff 00 ADC $00ff,X
|
||||
00/59a2: 85 94 STA $94
|
||||
00/59a4: 98 TYA
|
||||
00/59a5: 7d 00 01 ADC $0100,X
|
||||
00/59a8: 85 95 STA $95
|
||||
00/59aa: 6c 94 00 JMP ($0094)
|
||||
You can also patch the code onto the disk image. I found
|
||||
the $599E version on Track $05, Sector $06, Byte $9E.
|
||||
I found the $6F1D version on the image at Track $0C, Sector $00,
|
||||
at byte $1D.
|
@ -1,5 +1,4 @@
|
||||
|
||||
NOTE: The build process changed as of KEGS v0.70!
|
||||
# $Id: README.compile,v 1.20 2004/10/18 04:05:14 kentd Exp $
|
||||
|
||||
General build instructions:
|
||||
--------------------------
|
||||
@ -39,8 +38,11 @@ Use the vars_x86linux file with:
|
||||
rm vars; ln -s vars_x86linux vars
|
||||
make
|
||||
|
||||
KEGS assumes perl is in your path. If it is somewhere else, you need to edit
|
||||
the "PERL = perl" line in the vars file and make it point to the correct place.
|
||||
The resulting executable is called "xkegs".
|
||||
|
||||
The build scripts assume perl is in your path. If it is somewhere else,
|
||||
you need to edit the "PERL = perl" line in the vars file and make it point
|
||||
to the correct place.
|
||||
|
||||
For audio, KEGS needs access to /dev/dsp. If the permissions do not allow
|
||||
KEGS to access /dev/dsp, it can fail with a cryptic error message. As root,
|
||||
@ -55,11 +57,12 @@ Use the vars_linuxppc vars file by:
|
||||
rm vars; ln -s vars_linuxppc vars
|
||||
make
|
||||
|
||||
KEGS assumes perl is in your path. If it is somewhere else, you need to edit
|
||||
the "PERL = perl" line in the vars file and make it point to the correct place.
|
||||
The build scripts assume perl is in your path. If it is somewhere else,
|
||||
you need to edit the "PERL = perl" line in the vars file and make it point
|
||||
to the correct place.
|
||||
|
||||
Audio is currently disabled by default, but you can try turning it on
|
||||
by runnning "kegs -audio 1". It sounds horrible to me, but sounds do
|
||||
by runnning "xkegs -audio 1". It sounds horrible to me, but sounds do
|
||||
come out.
|
||||
|
||||
Solaris SPARC build instructions:
|
||||
@ -70,11 +73,12 @@ Use the vars_solaris vars file by:
|
||||
rm vars; ln -s vars_solaris vars
|
||||
make
|
||||
|
||||
KEGS assumes perl is in your path. If it is somewhere else, you need to edit
|
||||
the "PERL = perl" line in the vars file and make it point to the correct place.
|
||||
The build scripts assume perl is in your path. If it is somewhere else,
|
||||
you need to edit the "PERL = perl" line in the vars file and make it point
|
||||
to the correct place.
|
||||
|
||||
Audio is currently disabled by default, but you can try turning it on
|
||||
by runnning "kegs -audio 1".
|
||||
by runnning "xkegs -audio 1".
|
||||
|
||||
Solaris x86 build instructions:
|
||||
--------------------------------
|
||||
@ -84,11 +88,12 @@ Use the vars_x86solaris vars file by:
|
||||
rm vars; ln -s vars_x86solaris vars
|
||||
make
|
||||
|
||||
KEGS assumes perl is in your path. If it is somewhere else, you need to edit
|
||||
the "PERL = perl" line in the vars file and make it point to the correct place.
|
||||
The build scripts assume perl is in your path. If it is somewhere else,
|
||||
you need to edit the "PERL = perl" line in the vars file and make it point
|
||||
to the correct place.
|
||||
|
||||
Audio is currently disabled by default, but you can try turning it on
|
||||
by runnning "kegs -audio 1".
|
||||
by runnning "xkegs -audio 1".
|
||||
|
||||
HP-UX assembly-emulation instructions:
|
||||
-------------------------------------
|
||||
@ -100,14 +105,14 @@ rm vars; ln -s vars_hp vars
|
||||
Edit the Makefile, and remove "engine_c.o" from the "OBJECTS1=" line at
|
||||
the top. Then just type "make".
|
||||
|
||||
This version is quite out of date and most likely does not compile any more.
|
||||
|
||||
Other platform "C" build instructions:
|
||||
-------------------------------------
|
||||
|
||||
I don't know--you tell me. If you are porting to an X-windows and
|
||||
Unix-based machine, it should be easy. Start with vars_x86linux if
|
||||
you are a little-endian machine, or vars_linuxppc if you are big
|
||||
endian. Don't define -DKEGS_LITTLE_ENDIAN unless your processor is
|
||||
little-endian (x86, Alpha). Mac, Sun, MIPS, HP, Motorola, and IBM are
|
||||
big-endian.
|
||||
If you are porting to an X-windows and Unix-based machine, it should be
|
||||
easy. Start with vars_x86linux if you are a little-endian machine, or
|
||||
vars_linuxppc if you are big endian. Don't define -DKEGS_LITTLE_ENDIAN
|
||||
unless your processor is little-endian (x86, Alpha). Mac, Sun, MIPS,
|
||||
HP, Motorola, and IBM are big-endian.
|
||||
|
@ -1,18 +1,19 @@
|
||||
|
||||
KEGS: Kent's Emulated GS version 0.86
|
||||
KEGS: Kent's Emulated GS version 0.91
|
||||
http://kegs.sourceforge.net/
|
||||
|
||||
What is this?
|
||||
-------------
|
||||
|
||||
KEGS is an Apple IIgs emulator for Mac OS X, Linux, and Win32.
|
||||
The Apple IIgs was the last released computer in the Apple II line.
|
||||
It first was sold in 1986.
|
||||
The Apple IIgs was the most powerful computer in the Apple II line.
|
||||
It first was sold in 1986. An Apple IIgs has the capability to run almost all
|
||||
Apple II, Apple IIe, and Apple IIc programs.
|
||||
|
||||
KEGS supports all Apple IIgs graphics modes (which include all Apple //e
|
||||
modes), plus plays all Apple IIgs sounds accurately. It supports
|
||||
limited serial port emulation through sockets, or can use real serial ports
|
||||
on Windows and Mac OS X.
|
||||
serial port emulation through TCP/IP connections, or can use real
|
||||
serial ports on Windows and Mac OS X.
|
||||
|
||||
The ROMs and GS/OS (the Apple IIgs operating system) are not included
|
||||
with KEGS since they are not freely distributable. KEGS is a little
|
||||
@ -20,49 +21,53 @@ user-hostile now, so if something doesn't work, let me know what went
|
||||
wrong, and I'll try to help you out. See my email address at the end of
|
||||
this file.
|
||||
|
||||
I'd like to thank Chea Chee Keong who created KEGS32, the first Windows
|
||||
port of KEGS. That version, which has a better Windows-interface but which
|
||||
is based on older core code, is at http://www.geocities.com/akilgard/kegs2.
|
||||
|
||||
KEGS features:
|
||||
-------------
|
||||
|
||||
Fast 65816 emulation:
|
||||
About 80MHz on a P4 1.7GHz or a G4 1GHz.
|
||||
About 80MHz on a Pentium 4 1.7GHz or a Mac G4 1GHz.
|
||||
Emulates low-level 5.25" and 3.5" drive accesses (even nibble-copiers work!).
|
||||
Emulates classic Apple II sound and 32-voice Ensoniq sound.
|
||||
All sound is played in 16-bit stereo at 48KHz (44100 on a Mac).
|
||||
Emulates all Apple IIgs graphics modes, including border effects.
|
||||
Can handle mixed-displays (superhires at the top, lores at the bottom).
|
||||
Always does 60 full screen video updates per second.
|
||||
Even supports 3200-color pictures.
|
||||
Emulates all Apple IIgs and Apple II graphics modes, including border effects.
|
||||
Can handle display changes at any time (superhires at the top, lores
|
||||
at the bottom). Always does 60 full screen video updates per second.
|
||||
Supports 3200-color pictures.
|
||||
Mouse and joystick support.
|
||||
Emulates all Apple IIgs memory "tricks" for full compatibility.
|
||||
Low-level ADB keyboard and mouse emulation enables Wolfenstein 3D to run.
|
||||
Clock chip emulation makes the host time available to the Apple IIgs.
|
||||
Emulated battery RAM remembers control panel settings.
|
||||
Limited SCC (serial port) emulation to enable PR#1/2 IN#1/2 and other
|
||||
serial programs to work.
|
||||
Limited SCC (serial port) emulation to enable PR#1/2 IN#1/2 and Virtual
|
||||
Modem enables standard Apple terminal programs to telnet to any
|
||||
internet address (or receive connections from another telnet).
|
||||
|
||||
KEGS by default emulates a 8MB Apple IIgs, but you can change this with
|
||||
the "-mem" command line option.
|
||||
KEGS by default emulates a 8MB Apple IIgs, but you can change this from
|
||||
the Configuration Panel.
|
||||
|
||||
KEGS is so accurate, even the built-in ROM selftests pass (you must be in
|
||||
2.8MHz speed mode to pass the self-tests).
|
||||
2.8MHz speed mode to pass the self-tests and you must set the Configuration
|
||||
Panel entry "Enable Text Page 2 shadow" to "Disabled on ROM 01" for ROM 01).
|
||||
|
||||
Release info:
|
||||
------------
|
||||
|
||||
Included files:
|
||||
CHANGES - Description of changes since last release
|
||||
README.kegs - you're here
|
||||
README.compile - Describes how to build KEGS
|
||||
README.linux.rpm - Describes how to install KEGS's RPM for Linux
|
||||
README.win32 - Win32 special directions
|
||||
README.mac - Mac OS X special directions
|
||||
INTERNALS.overview - description of how KEGS code works
|
||||
INTERNALS.xdriver - Describes the xdriver.c routines for porting
|
||||
INTERNALS.iwm - Describes the internal 3.5" and 5.25" disk
|
||||
README.kegs.txt - you're here
|
||||
README.compile.txt - Describes how to build KEGS
|
||||
README.linux.rpm.txt - Describes how to install KEGS's RPM for Linux
|
||||
README.win32.txt - Win32 special directions
|
||||
README.mac.txt - Mac OS X special directions
|
||||
README.a2.compatibility.txt - List of programs which need tweaking
|
||||
src/INTERNALS.overview - description of how KEGS code works
|
||||
src/INTERNALS.xdriver - Describes the xdriver.c routines for porting
|
||||
src/INTERNALS.iwm - Describes the internal 3.5" and 5.25" disk
|
||||
handling routines
|
||||
kegs - the executable, for HP-UX 10.20+
|
||||
kegs.spec - The Linux spec file for making an RPM
|
||||
kegs_conf - disk image configuration info
|
||||
KEGSMAC - the Mac OS X executable
|
||||
kegswin.exe - the Windows executable
|
||||
config.kegs - disk image configuration info
|
||||
to_pro - Hard-to-use ProDOS volume creator
|
||||
partls - Lists partitions on Apple-partitioned hard
|
||||
drives or CD-ROMs
|
||||
@ -71,9 +76,10 @@ Included files:
|
||||
You need to provide:
|
||||
|
||||
1) Patience.
|
||||
2) a ROM file called "ROM", "ROM.01" or "ROM.03" in the KEGS directory.
|
||||
It can be either from a ROM 01 (131072 bytes long) or from a
|
||||
ROM 03 machine (262144 bytes long.)
|
||||
2) a ROM file called "ROM", "ROM.01" or "ROM.03" in the KEGS directory
|
||||
(or in your home directory). It can be either from a ROM 01
|
||||
(131072 bytes long) or from a ROM 03 machine (262144 bytes
|
||||
long.)
|
||||
3) A disk image to boot. This can be either "raw" format or 2IMG.
|
||||
See discussion below. GS/OS would be best.
|
||||
|
||||
@ -87,10 +93,11 @@ or fc/0000 - ff/ffff from a ROM 03 GS, and put that in a file called
|
||||
Running KEGS:
|
||||
------------
|
||||
|
||||
The distribution comes in 3 parts: a source-only distribution (kegs.xxx.tar.gz),
|
||||
along with two binary distributions for Mac and Windows.
|
||||
The distribution comes with the full source code for all platforms in
|
||||
the src/ directory, the Windows executable as kegswin.exe, and the Mac OS X
|
||||
executable as KEGSMAC.
|
||||
|
||||
See the README.compile file for more info about compiling for Linux.
|
||||
See the README.compile.txt file for more info about compiling for Linux.
|
||||
|
||||
On all platforms except the Mac, you must start KEGS from a terminal
|
||||
window. KEGS will open a new window and use the window you started it from
|
||||
@ -98,50 +105,68 @@ as a "debug" window.
|
||||
|
||||
On a MAC, you need to place the "config.kegs" file someplace where KEGS
|
||||
can find it. The simplest place is in your home directory, so copy it there
|
||||
with the Finder (or using the Terminal).
|
||||
with the Finder (or using the Terminal). You can also make the directory
|
||||
Library/KEGS from your home directory, and then place config.kegs there
|
||||
along with the ROM file. You do not need a starting config.kegs file
|
||||
on a Mac--KEGS will offer to make it for you if it cannot find one.
|
||||
|
||||
Start kegs by Double-clicking the KEGSMAC icon on a MAC, or by running
|
||||
the executable (kegswin on Windows, and kegs on Linux). KEGSMAC can
|
||||
be run by the Terminal window as well (which enables access to more debug
|
||||
information) by typing: "./KEGSMAC.app/Contents/MacOS/KEGSMAC".
|
||||
be run by the Terminal window on a Mac as well (which enables access to
|
||||
more debug information) by typing: "./KEGSMAC.app/Contents/MacOS/KEGSMAC".
|
||||
|
||||
Assuming all goes well, KEGS will then boot up but probably not find any
|
||||
disk images. See below for how to tell KEGS what disk images to use.
|
||||
Tip: Hitting "F8" locks the mouse in the window (and hides the host cursor)
|
||||
until you hit "F8" again.
|
||||
|
||||
Disk Images:
|
||||
Configuration Panel:
|
||||
-------------------
|
||||
|
||||
You enter the Configuration panel by pressing F4 at any time. You tell
|
||||
KEGS what disk images to use through the Configuration panel. (If KEGS
|
||||
couldn't find a ROM file, you will be forced into the Configuration
|
||||
Panel mode until you select a valid ROM file).
|
||||
|
||||
To select a ROM file, select "ROM File Selection" and then select your
|
||||
ROM file. If you were not forced into the panel at startup, the KEGS
|
||||
found one and you can skip this step.
|
||||
|
||||
Disk Images
|
||||
-----------
|
||||
|
||||
You tell KEGS what disk images to use through the Configuration panel.
|
||||
The primary use of the Configuration Panel is to select disk images. To
|
||||
change disk images being used, select "Disk Configuration". Each slot
|
||||
and drive that can be loaded with an image is listed. "s5d1" means slot
|
||||
5, drive 1. Slot 5 devices are 3.5" 800K disks, and slot 6 devices are
|
||||
5.25" 140K disks. Slot 7 devices are virtual hard drives, and can be
|
||||
any size at all (although ProDOS-formatted images should be less than
|
||||
32MB).
|
||||
|
||||
You enter the Configuration panel by pressing F4 at any time. Then select,
|
||||
"Disk Configuration". Each slot and drive that can be loaded with an image
|
||||
is listed. "s5d1" means slot 5, drive 1. Slot 5 devices are 3.5" 800K disks,
|
||||
and slot 6 devices are 5.25" 140K disks. Slot 7 devices are virtual hard
|
||||
drives, and can be any size at all (although ProDOS-formatted drives
|
||||
should be less than 32MB).
|
||||
|
||||
Just use the arrow keys to navigate to the device entry to change,
|
||||
and then select it by pressing Return. A scrollable file selection
|
||||
interface is presented, letting you located your image files. To
|
||||
save navigation, you can press Tab to toggle between entering a path
|
||||
manually, and using the selector. Press Return on ".." entries to go up
|
||||
a directory level. When you find the image you want, just press Return.
|
||||
Just use the arrow keys to navigate to the device entry to change, and
|
||||
then select it by pressing Return. A scrollable file selection
|
||||
interface is presented, letting you locate your image files. To quickly
|
||||
jump to a particular path, you can press Tab to toggle between entering
|
||||
a path manually, and using the file selector. Press Return on ".."
|
||||
entries to go up a directory level. When you find the image you want,
|
||||
just press Return.
|
||||
|
||||
If the image has partitions that KEGS supports, another selection
|
||||
dialog will have you select which partition to mount. You will probably
|
||||
only have partitions on direct devices you mount. For instance, on a
|
||||
Mac, /dev/disk1 is usually the CDROM drive.
|
||||
only have partitions on direct devices you mount (or on a Mac, of .dmg
|
||||
images of CDs). For instance, on a Mac, /dev/disk1 can sometimes be the
|
||||
CDROM drive.
|
||||
|
||||
KEGS can handle "raw", .dsk, .po, 2IMG, 5.25" ".nib" images, some Mac
|
||||
KEGS can handle "raw", .dsk, .po, 2IMG, 5.25" ".nib" images, most Mac
|
||||
Diskcopy images and partitioned images. The .dsk and .po formats you often
|
||||
find on the web are really "raw" formats, and so they work fine. KEGS uses
|
||||
the host file permissions to encode the read/write status of the image.
|
||||
KEGS can open any image file compressed with gzip (with the extension ".gz")
|
||||
automatically as a read-only disk image.
|
||||
|
||||
An image is the representation of an Apple IIgs disk, but in a file on
|
||||
your computer. For 3.5" disks, for example, a raw image would be exactly
|
||||
800K bytes long (819200 bytes). KEGS intercepts the emulated GS accesses to
|
||||
800K bytes long (819200 bytes). KEGS directs the emulated GS accesses to
|
||||
the image, and does the correct reads and writes of the Unix file instead.
|
||||
|
||||
To do "useful" things with KEGS, you need to get a bootable disk image.
|
||||
@ -150,21 +175,36 @@ get Apple IIgs System 6. Unfortunately, Apple now only has .sea files which
|
||||
are executable files for Macintosh only. You need a macintosh to execute
|
||||
those programs, which creates Disk Copy image files with no special extensions
|
||||
(and with spaces in the names). Once you get those files back to your
|
||||
host machine, you can use them by listing them in kegs_conf.
|
||||
host machine, you can use them by selecting them from the Configuration Panel.
|
||||
|
||||
You can also get Apple II programs in ".dsk" format from a variety of
|
||||
sites on the internet, and these should all work on KEGS as well.
|
||||
|
||||
KEGS also supports partitioned devices. For instance, if you have a CD-ROM
|
||||
on your computer, just pop an Apple II CD in, and KEGS can mount it, if
|
||||
you have a Unix-base system (Linux, any Unix, and Mac OS X).
|
||||
you have a Unix-based system (Linux, any Unix, and Mac OS X).
|
||||
|
||||
If you're on a Mac, be careful letting KEGS use your HFS partitions--
|
||||
GSOS has many HFS bugs when it is writing.
|
||||
GSOS has many HFS bugs when it is writing. Also avoid having KEGS access
|
||||
an image which have mounted on your Mac at the same time (always unmount
|
||||
it from your Mac before letting KEGS access it)!
|
||||
|
||||
If you do not have any disk mounted in s7d1, KEGS will jump into BASIC.
|
||||
If you do not have any disk mounted in s7d1, KEGS will jump into the monitor.
|
||||
To boot slot 6 (or slot 5), use the Apple IIgs Control Panel by pressing
|
||||
Ctrl-Command-ESC.
|
||||
|
||||
Support for 5.25" nibblized images is read-only for now (since the
|
||||
format is kinda simplistic, it's tricky for KEGS to write to it).
|
||||
Just mount your image, like "disk.nib" in the kegs_conf file like
|
||||
any .dsk or .po image.
|
||||
format is kinda simplistic, it's tricky for KEGS to write to it since KEGS
|
||||
has more information than fits in that format). Just select your image,
|
||||
like "disk.nib" in the kegs_conf file like any .dsk or .po image.
|
||||
|
||||
In addition to changing disks, you can also just "eject" and image by
|
||||
moving the cursor to select that slot/drive and then press "E". The
|
||||
emulated IIgs will immediately detect changes to s5d1 and s5d2.
|
||||
|
||||
Care should be taken when changing images in slot 7--KEGS does not notify
|
||||
GSOS that images have changed (or been ejected), and so it's best to make
|
||||
changes when GSOS is not running.
|
||||
|
||||
|
||||
Key summary:
|
||||
@ -180,8 +220,8 @@ F7: Toggle fast_disk_emul on/off
|
||||
F8: Toggle pointer hiding on/off.
|
||||
F9: Invert the sense of the joystick.
|
||||
Shift-F9: Swap x and y joystick/paddle axes.
|
||||
F10: Attempt to change the a2vid_palette (only useful on 8-bit color display)
|
||||
F11: Full screen mode (does not do anything yet).
|
||||
F10: Attempt to change the a2vid_palette (only useful on 256-color displays)
|
||||
F11: Full screen mode (only on Mac OS X).
|
||||
F12: Alias of Pause/Break which is treated as Reset
|
||||
|
||||
F2, Alt_R, Meta_r, Menu, Print, Mode_switch, Option: Option key
|
||||
@ -202,35 +242,15 @@ KEGS hides the host cursor automatically and enables special tracking
|
||||
which forces the emulated cursor to follow the host cursor. If this doesn't
|
||||
work right under some program, just press F8 for better compatibility.
|
||||
|
||||
The default joystick is the mouse position. Upper left is 0,0. Lower right
|
||||
is 255,255. Press Shift-F9 to swap the X and Y axes. Press F9 to reverse
|
||||
the sense of both paddles (so 0 becomes 255, etc). Swapping and
|
||||
reversing are convenient with paddle-based games like "Little Brick Out"
|
||||
so that the mouse will be moving like the paddle on the screen. "Little
|
||||
Brick Out" is on the DOS 3.3 master disk. The joystick does not work
|
||||
properly if the pointer is constrained in the window.
|
||||
|
||||
If you have a real joystick on Linux, start KEGS with "-joystick" and
|
||||
you should be able to use it. Real joysticks should also work on Windows.
|
||||
|
||||
The left mouse button is the mouse button for KEGS. The right mouse
|
||||
button (if you have it) or F6 toggles between four speed modes. Mode 0
|
||||
(the default) means run as fast as possible. Mode 1 means run at 1MHz.
|
||||
Mode 2 means run at 2.8MHz. Mode 3 means run at 8.0MHz (about the speed
|
||||
of a ZipGS accelerator). Most Apple //e (or earlier) games need to be
|
||||
run at 1MHz. Many Apple IIgs demos must run at 2.8MHz or they crash. Try
|
||||
running ornery programs at 2.8MHz. 3200 pictures generally only display
|
||||
correctly at 2.8MHz or sometimes 8.0MHz.
|
||||
|
||||
The middle mouse button or Shift-F6 causes KEGS to stop emulation, and enter
|
||||
the debugger. You can continue with "g" then return in the debug window.
|
||||
You can also disassemble memory, etc. The section "Debugging KEGS"
|
||||
above describes the debugger interface a little more.
|
||||
|
||||
KEGS has no pop-up menus or other interactive interfaces (other than
|
||||
the debug window). Input to the debug window is only acted upon when
|
||||
the emulation is stopped by hitting a breakpoint or pressing the right-most
|
||||
mouse button.
|
||||
the debug window, and the occasional error dialogs on Mac OS X). Input to
|
||||
the debug window is only acted upon when the emulation is stopped
|
||||
(Shift-F6, middle mouse button, or hitting a breakpoint).
|
||||
|
||||
Quitting KEGS:
|
||||
-------------
|
||||
@ -240,6 +260,86 @@ can select Quit from the menu. Or enter ctrl-c in the debugger window.
|
||||
Or press the middle-mouse button in the emulation window, and then type
|
||||
"q" return in the debug window.
|
||||
|
||||
Command/Option keys:
|
||||
-------------------
|
||||
|
||||
If you have a keyboard with the special Windows keys, you can
|
||||
use them as the command/option keys. For those without those keys,
|
||||
there are several alternatives.
|
||||
|
||||
The following keys are Option (closed-apple) (not all keyboards have all
|
||||
keys): F2, Meta_R, Alt_R, Cancel, Print_screen, Mode_switch, Option,
|
||||
or the Windows key just to the right of the spacebar. The following keys are
|
||||
Command (open-apple): F1, Meta_L, Alt_L, Menu, Scroll_lock, Command,
|
||||
the Windows key left of the spacebar, and the Windows key on the far right
|
||||
that looks like a pull-down menu. You can use F1 and F2 if you cannot make
|
||||
anything else work (especially useful if your OS is intercepting some
|
||||
Alt or Command key sequences).
|
||||
|
||||
If you can't get any of these to work on your machine, let me know.
|
||||
Note that X Windows often has other things mapped to Meta- and Alt-
|
||||
key sequences, so they often don't get passed through to KEGS. So it's
|
||||
best to use another key instead of Alt or Meta.
|
||||
|
||||
The joystick/paddle buttons are just the Command and Option keys.
|
||||
|
||||
|
||||
Reset:
|
||||
-----
|
||||
|
||||
The reset key is Pause/Break or F12. You must hit it with Ctrl to get it to
|
||||
take effect (just like a real Apple IIgs). Ctrl-Command-Reset
|
||||
forces a reboot. Ctrl-Command-Option-Reset enters selftests.
|
||||
Selftests will pass if you force speed to 2.8MHz using the middle
|
||||
button or F6 (and also set Enable Text Page 2 shadow = Disabled for ROM 01).
|
||||
Watch out for ctrl-shift-Break--it will likely kill an X Windows session.
|
||||
Also note that the Unix olvwm X window manager interprets ctrl-F12 and will
|
||||
not pass it on to KEGS--you'll need to use Break for reset in that case.
|
||||
|
||||
Full Screen mode (MAC OS X ONLY):
|
||||
----------------
|
||||
|
||||
KEGS can run in full screen mode--which is especially useful when letting
|
||||
small kids use KEGS (but it is not really a lock, so do not let a 2 year
|
||||
old bang on the keyboard while running KEGS).
|
||||
|
||||
Full Screen mode is toggled with F11 (or Ctrl-F11, since Expose on a Mac
|
||||
is intercepting F11). If KEGS stops in the debugger for any reason,
|
||||
full screen mode is toggled off automatically.
|
||||
|
||||
|
||||
Joystick Emulation (Mouse, Keypad, or real native joystick):
|
||||
------------------
|
||||
|
||||
The default joystick is the mouse position. Upper left is 0,0. Lower right
|
||||
is 255,255. Press Shift-F9 to swap the X and Y axes. Press F9 to reverse
|
||||
the sense of both paddles (so 0 becomes 255, etc). Swapping and
|
||||
reversing are convenient with paddle-based games like "Little Brick Out"
|
||||
so that the mouse will be moving like the paddle on the screen. "Little
|
||||
Brick Out" is on the DOS 3.3 master disk. The joystick does not work
|
||||
properly if the pointer is constrained in the window.
|
||||
|
||||
You can also select from a "Keypad Joystick" or a real joystick from
|
||||
the Configuration panel. Press return on the "Joystick Configuration"
|
||||
entry, and then select between Mouse Joystick, Keypad Joystick, or one
|
||||
of two native joysticks. The Keypad Joystick uses your keypad number
|
||||
keys as a joystick, where keypad 7 means move to the upper left, and
|
||||
keypad 3 means move to the lower right. Pressing multiple keys together
|
||||
averages the results, allowing finer control than just 8 directions.
|
||||
Also, joystick scaling is selectable here for games which require
|
||||
a greater range of motion to work correctly, along with trim adjustment
|
||||
which moves the centering point. Adjusting scaling usually means you
|
||||
will need to adjust the trim as well.
|
||||
|
||||
The left mouse button is the mouse button for KEGS. The right mouse
|
||||
button (if you have it) or F6 toggles between four speed modes. Mode 0
|
||||
(the default) means run as fast as possible. Mode 1 means run at 1MHz.
|
||||
Mode 2 means run at 2.8MHz. Mode 3 means run at 8.0MHz (about the speed
|
||||
of a ZipGS accelerator). Most Apple //e (or earlier) games need to be
|
||||
run at 1MHz. Many Apple IIgs demos must run at 2.8MHz or they will not
|
||||
operate correctly. Try running ornery programs at 2.8MHz. 3200 pictures
|
||||
generally only display correctly at 2.8MHz or sometimes 8.0MHz.
|
||||
|
||||
|
||||
Debugging KEGS:
|
||||
--------------
|
||||
@ -272,6 +372,10 @@ type:
|
||||
|
||||
e1/0010B
|
||||
|
||||
The format is "bank/address" then "B", where the B must be in caps and
|
||||
the address must use lower-case hex. For Apple IIe programs, just use a
|
||||
bank of 0.
|
||||
|
||||
To list all breakpoints, just type 'B' with no number in front of it.
|
||||
To delete a breakpoint, enter its address followed by 'D', so
|
||||
|
||||
@ -296,27 +400,17 @@ watchpoints).
|
||||
Frederic Devernay has written a nice help screen available in the
|
||||
debugger when you type "h".
|
||||
|
||||
Useful locations for setting breakpoints:
|
||||
0/3f0B - Break handler
|
||||
0/c000B - Keyboard latch, programs read keys from this address
|
||||
|
||||
|
||||
|
||||
KEGS command-line option summary:
|
||||
--------------------------------
|
||||
|
||||
-mem {mem_amt}: KEGS will use mem_amt as the amount of expansion RAM in
|
||||
the IIgs. This memory is in addition to the 256KB on a ROM 01
|
||||
motherboard, or 1MB on a ROM 03. The memory is in bytes,
|
||||
and it will be rounded down to the nearest 64KB. "-mem 0x800000"
|
||||
will use 8MB of expansion RAM (the default).
|
||||
-badrd: Causes KEGS to halt on any access to invalid memory addresses.
|
||||
Useful for debugging. By default, KEGS allows reads to invalid
|
||||
memory since the Finder does some (especially when you open the
|
||||
About window, and then close it). But KEGS warns you about these
|
||||
accesses in the debug window. In general, these warnings
|
||||
indicate buggy programs. If the warnings get severe, it's
|
||||
a good sign you should quit KEGS and start over before the
|
||||
emulated program crashes. -badrd would be the default for KEGS
|
||||
if it wasn't for the Finder's About window's problem.
|
||||
-ignbadacc: Causes KEGS to allow reads & writes to invalid memory
|
||||
addresses without printing any warnings. Useful for running
|
||||
extremely buggy programs so you don't have to see all the warning
|
||||
messages scroll by.
|
||||
There are others, but the Configuration panel provides a better way to
|
||||
set them so they are no longer listed here.
|
||||
-skip: KEGS will "skip" that many screen redraws between refreshes.
|
||||
-skip 0 will do 60 frames per second, -skip 1 will do 30 fps,
|
||||
-skip 5 will do 10 fps.
|
||||
@ -340,7 +434,6 @@ X-Windows/Linux options
|
||||
-24: KEGS will only look for a 24-bit X-Window display.
|
||||
-display {machine:0.0}: Same as setting the environment variable DISPLAY.
|
||||
Sends X display to {machine:0.0}.
|
||||
-joystick: Will use /dev/js0 as the joystick.
|
||||
-noshm: KEGS will not try to used shared memory for the X graphics display.
|
||||
This will make KEGS much slower on graphics-intensive tasks,
|
||||
by as much as a factor of 10! By default, -noshm causes an
|
||||
@ -348,40 +441,9 @@ X-Windows/Linux options
|
||||
default by specifying a -skip explicitly.
|
||||
|
||||
|
||||
Command/Option keys:
|
||||
-------------------
|
||||
|
||||
If you have a workstation keyboard with the new Windows keys, you can
|
||||
use them as the command/option keys. This is what I use. Since many people
|
||||
don't have the PC keyboard, there are several alternatives.
|
||||
|
||||
The following keys are Option (closed-apple) (not all keyboards have all
|
||||
keys): F2, Meta_R, Alt_R, Cancel, Print_screen, Mode_switch, Option,
|
||||
or the Windows key just to the right of the spacebar. The following keys are
|
||||
Command (open-apple): F1, Meta_L, Alt_L, Menu, Scroll_lock, Command,
|
||||
the Windows key left of the spacebar, and the Windows key on the far right
|
||||
that looks like a pull-down menu. You can use F1 and F2 if you cannot make
|
||||
anything else work.
|
||||
|
||||
If you can't get any of these to work on your machine, let me know.
|
||||
Note that X Windows often has other things mapped to Meta- and Alt-
|
||||
key sequences, so they often don't get passed through to KEGS. So it's
|
||||
best to use another key instead of Alt or Meta.
|
||||
|
||||
The joystick/paddle buttons are just the Command and Option keys.
|
||||
|
||||
Reset:
|
||||
-----
|
||||
|
||||
The reset key is Pause/Break or F12. You must hit it with Ctrl to get it to
|
||||
take effect (just like a real Apple IIgs). Ctrl-Command-Reset
|
||||
forces a reboot. Ctrl-Command-Option-Reset enters selftests.
|
||||
Selftests will pass if you force speed to 2.8MHz using the middle
|
||||
button. Watch out for ctrl-shift-Break--it will likely kill your
|
||||
X Windows session.
|
||||
|
||||
Control Panel:
|
||||
-------------
|
||||
Apple IIgs Control Panel:
|
||||
------------------------
|
||||
|
||||
You can get to the Apple IIgs control panel (unless some application
|
||||
has locked it out) using Ctrl-Command-ESC.
|
||||
@ -453,18 +515,12 @@ to $E0.
|
||||
Details on config.kegs and disk images
|
||||
--------------------------------------
|
||||
|
||||
The file "config.kegs" describes the images KEGS will use. The sample
|
||||
file has all the lines commented out with '#' to show sample uses.
|
||||
Remember, KEGS will boot s7d1 (unless you've changed that using the
|
||||
Apple IIgs control panel), so you must put an image in that slot.
|
||||
The file "config.kegs" describes the images KEGS will use. Although you
|
||||
can edit the file manually, in general you can use the Configuration Panel
|
||||
to make all the changes you need. This information is for reference.
|
||||
|
||||
Changing disks in slot 7 does not work, but you can move around
|
||||
disks in slots 5 and 6. This allows you to "eject" disks and change them.
|
||||
This is especially useful for multi-disk 5.25" programs.
|
||||
|
||||
KEGS uses the Unix permissions on raw disk images to decide how to load
|
||||
it into the emulator. If the file is unreadable, it cannot load the
|
||||
image (duh).
|
||||
KEGS by default will boot s7d1 (unless you've changed that using the
|
||||
Apple IIgs control panel), so you should put an image in that slot.
|
||||
|
||||
KEGS, by default, runs the IWM (3.5" and 5.25" disks) emulation in an
|
||||
"approximate" mode, called "fast_disk_emul". In this mode, KEGS
|
||||
@ -544,14 +600,14 @@ equivalent speed. Many games will be unplayable at the unlimited
|
||||
setting. Setting the IIgs control panel speed to "slow" will slow down
|
||||
to 1MHz.
|
||||
|
||||
Sound output has an interesting relationship to KEGS timing. KEGS must
|
||||
Sound output has an important relationship to KEGS timing. KEGS must
|
||||
play one second of sound per second of emulated time. Normally, this
|
||||
works out exactly right. But as noted above, if KEGS can't maintain the
|
||||
needed speed, it extends the emulated second. If it extends the second
|
||||
to 1.4 real seconds, that means KEGS only produces 1.0 second of sound
|
||||
data every 1.4 seconds--the sound breaks up!
|
||||
|
||||
In all cases, 1MHz to KEGS is 1.024MHz. And 2.8MHz to KEGS is 2.52MHz
|
||||
In all cases, 1MHz to KEGS is 1.024MHz. And 2.8MHz to KEGS is 2.56MHz
|
||||
(trying to approximate the slowdown causes by memory refresh on a real
|
||||
Apple IIgs). It's just easier to say 1MHz and 2.8MHz.
|
||||
|
||||
@ -673,7 +729,9 @@ useful for some games.
|
||||
KEGS: What works:
|
||||
-----------------
|
||||
|
||||
Basically, just about every Apple II program works.
|
||||
Basically, just about every Apple II program works. See the file
|
||||
README.a2.compatibility for directions on how to make certain games/programs
|
||||
work.
|
||||
|
||||
KEGS is EXTREMELY compatible. But, I haven't tested everything. Let
|
||||
me know if you find a program which is not working correctly.
|
||||
@ -696,9 +754,6 @@ the above lets it work fine. This seems to be a bug in the demo.
|
||||
KEGS bugs:
|
||||
---------
|
||||
|
||||
KEGS's serial port emulation is very limited now, and only for
|
||||
adventurous souls.
|
||||
|
||||
On a ROM03, KEGS makes a patch to the ROM image (inside emulation, not
|
||||
to the Unix file) to fix a bug in the ROM code. Both ROM01 and ROM03
|
||||
are patched to enable use of more than 8MB of memory. I then patch the ROM
|
||||
@ -726,39 +781,70 @@ in the debug window. However, when sound restarts, it sometimes
|
||||
If your display is not using shared memory, audio defaults to off unless
|
||||
you override it with "-audio 1".
|
||||
|
||||
SCC emulation:
|
||||
-------------
|
||||
SCC (Serial Port) emulation:
|
||||
---------------------------
|
||||
|
||||
KEGS emulates the two serial ports on a IIgs as being two Unix sockets.
|
||||
Port 1 (printer port) is at socket address 6501, and port 2 (modem)
|
||||
is at socket address 6502.
|
||||
|
||||
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
|
||||
any method you like, but a simple, easy way is to use telnet. In
|
||||
another Unix window, do: "telnet localhost 6501" and then you
|
||||
will see all the output going to the "printer".
|
||||
By default, slot 1 is emulated using a simple receive socket, and slot 2
|
||||
emulates a Virtual Modem.
|
||||
|
||||
A Virtual Modem means KEGS acts as if a modem is on the serial port
|
||||
allowing Apple II communcation programs to fully work, but connected to
|
||||
internet-enabled sockets. KEGS emulates a "Hayes- Compatible" modem,
|
||||
meaning it accepts "AT" commands. You can use KEGS to connect to free
|
||||
telnet-BBSs, or run a BBS program on KEGS and become a telnet BBS yourself.
|
||||
|
||||
The two main AT commands are: ATDT for dialing out, and ATA for receiving
|
||||
calls. To dial out, enter "ATDThostname", or for example,
|
||||
"ATDTboycot.no-ip.com" (which is down at the moment, unfortunately).
|
||||
You can also enter an IP address, like "ATDT127.0.0.1". On a Mac, to
|
||||
create a telnet server to allow telnet connections (do not use over the
|
||||
internet, but on a private network behind a firewall, this should be
|
||||
fine), in a Terminal window type: "sudo /usr/libexec/telnetd -debug".
|
||||
You must then enable telnet on port 23 through your Mac OS X Firewall in
|
||||
the System Preferences->Sharing->Firewall 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.
|
||||
|
9
README.md
Normal file
9
README.md
Normal file
@ -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/]
|
@ -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
|
||||
|
BIN
kegswin.exe
BIN
kegswin.exe
Binary file not shown.
BIN
src/2mg.icns
Normal file
BIN
src/2mg.icns
Normal file
Binary file not shown.
BIN
src/525.icns
Normal file
BIN
src/525.icns
Normal file
Binary file not shown.
@ -4,8 +4,46 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>2mg</string>
|
||||
<string>2MG</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>2mg.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>Apple II 2MG Disk Image</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>a2mg</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>None</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>kegs</string>
|
||||
</array>
|
||||
<key>CFBundleTypeIconFile</key>
|
||||
<string>525.icns</string>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>KEGS Configuration File</string>
|
||||
<key>CFBundleTypeOSTypes</key>
|
||||
<array>
|
||||
<string>kegs</string>
|
||||
</array>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>None</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>KEGSMAC</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>KEGSMAC</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>kegsicon.icns</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
@ -13,10 +51,14 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<string>KEGS</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.1</string>
|
||||
<key>CSResourcesFileMapped</key>
|
||||
<true/>
|
||||
<string>0.91</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>KEGSMAC version 0.91</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>KEGSMAC v0.91, Copyright 2004 Kent Dickey, http://kegs.sourceforge.net</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright 2004 Kent Dickey</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
# $Id: release_makefile_base,v 1.15 2003/11/21 20:00:42 kentd Exp $
|
||||
# $Id: release_makefile_base,v 1.15 2003/11/21 20:00:42 kentd Exp kentd $
|
||||
|
||||
OBJECTS1 = adb.o clock.o config.o dis.o engine_c.o scc.o iwm.o \
|
||||
joystick_driver.o moremem.o paddles.o sim65816.o smartport.o \
|
||||
@ -24,17 +24,18 @@ specials_clean:
|
||||
|
||||
# Mac builds:
|
||||
kegsmac: $(OBJECTS) compile_time.o
|
||||
$(CC) $(CCOPTS) $(LDOPTS) -arch ppc $(OBJECTS) compile_time.o $(LDFLAGS) -o kegsmac $(EXTRA_LIBS) -prebind -framework Carbon
|
||||
$(CC) $(CCOPTS) $(LDOPTS) -arch ppc $(OBJECTS) compile_time.o $(LDFLAGS) -o kegsmac $(EXTRA_LIBS) -prebind -framework Carbon -framework Quicktime
|
||||
mkdir -p ../KEGSMAC.app/Contents/Resources/English.lproj/main.nib
|
||||
mkdir -p ../KEGSMAC.app/Contents/MacOS
|
||||
mv kegsmac ../KEGSMAC.app/Contents/MacOS/KEGSMAC
|
||||
echo "APPL????" > ../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) ..
|
||||
|
||||
|
||||
|
259
src/adb.c
259
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( |