mirror of
https://github.com/mauiaaron/apple2.git
synced 2024-06-26 00:29:27 +00:00
Remove ancient text files
This commit is contained in:
parent
1bf328795a
commit
c22ad4c1e9
14
ASM
14
ASM
|
@ -1,14 +0,0 @@
|
||||||
Begin3
|
|
||||||
Title: Apple //ix
|
|
||||||
Author: alexb@csd.uu.se (Alexander Jean-Claude Bottema)
|
|
||||||
sl14@cornell.edu (Stephen Lee)
|
|
||||||
michael@talamasca.ocis.net (Michael Deutschmann)
|
|
||||||
ASC _at_ BITR0T (Aaron Culliney)
|
|
||||||
Version: 0.8
|
|
||||||
Entered-date: 2014-02-27
|
|
||||||
Description: Apple //e emulator for POSIX systems
|
|
||||||
Keywords: emulator, linux, posix
|
|
||||||
Uploader: ASC _at_ BITR0T (Aaron Culliney)
|
|
||||||
Primary-site: https://github.com/mauiaaron/apple2
|
|
||||||
Platform: Linux i386
|
|
||||||
End
|
|
277
NEWS
277
NEWS
|
@ -1,277 +0,0 @@
|
||||||
Changed in 0.8:
|
|
||||||
|
|
||||||
Upgraded to modern-ish times...X11 now uses 32bit color!
|
|
||||||
|
|
||||||
Audio is now OpenAL instead of raw PC speaker access. We are indebted to
|
|
||||||
AppleWin for much of the sound code including preliminary suport for
|
|
||||||
Mockingboard emulation.
|
|
||||||
|
|
||||||
Bugfix and simplification for PC Joystick. Joystick emulation is now
|
|
||||||
bug-for-bug compatible with original Apple ][. Better calibration routines and
|
|
||||||
better "feel" for emulation of joystick on keypad/arrow-keys.
|
|
||||||
|
|
||||||
Better emulation fidelity overall by counting 6502 CPU cycles. This was
|
|
||||||
necessary for proper output of stream digital audio in OpenAL.
|
|
||||||
|
|
||||||
Significant interface and preferences changes and simplifications.
|
|
||||||
|
|
||||||
Changed in 0.7.4:
|
|
||||||
|
|
||||||
Many bugs have been fixed, including a calling-convention mistake that
|
|
||||||
could cause unpredictable behavior on reboot. Potential buffer overflows
|
|
||||||
have also been corrected.
|
|
||||||
|
|
||||||
Some key assignments have changed. Joystick buttons are now Left-Alt,
|
|
||||||
Right-Alt & Insert. Delete, formerly a joystick button, now produces the
|
|
||||||
DEL ascii code. Reboot is now Break (Ctrl-Pause), and Reset is now
|
|
||||||
Ctrl-Printscreen. (This is reversed from 0.7.3)
|
|
||||||
|
|
||||||
Some significant optimizations were also made in the assembly code. The
|
|
||||||
large memory-access indirection table is now compressed using virtual
|
|
||||||
memory tricks, to slightly reduce cache load and swap requirements.
|
|
||||||
|
|
||||||
Also many cleanups have been made in the internal code. This is
|
|
||||||
user-invisible, and far from complete. When done, it will become easier to
|
|
||||||
add new interface cards, video drivers, and other stuff, as well as port
|
|
||||||
to other unixes.
|
|
||||||
|
|
||||||
Changed in 0.7.3:
|
|
||||||
|
|
||||||
More makefile/configuration bugs were fixed.
|
|
||||||
|
|
||||||
The `Mystery House' sample disk, which was accidently omitted from my
|
|
||||||
distributions, has been reinstated. Also, I've added a new sample
|
|
||||||
disk image - William Night's emulator performance tests.
|
|
||||||
|
|
||||||
Changed in 0.7.2:
|
|
||||||
|
|
||||||
The configure script will now react to absence of X Windows or SVGAlib by
|
|
||||||
only building an emulator for the remaining graphics system.
|
|
||||||
|
|
||||||
A makefile bug that caused xapple-80col not to depend on
|
|
||||||
all it's source files was fixed. Also, the alternate character set is now
|
|
||||||
correctly restored on exit from the <F10> menu.
|
|
||||||
|
|
||||||
Some major cleanups were done to the assembly-language files. This is
|
|
||||||
invisible to the user, but should make further enhancement a little saner.
|
|
||||||
|
|
||||||
The banners on the source code have been synchronized.
|
|
||||||
|
|
||||||
Changed in 0.7.1:
|
|
||||||
|
|
||||||
1. Fixed a makefile bug that caused xapple-80col to be miscompiled.
|
|
||||||
|
|
||||||
2. Put sample .apple2 (config file) back in. It was accidentally excluded
|
|
||||||
from 0.7.
|
|
||||||
|
|
||||||
3. The SVGA emulator is again named `apple2', not `sapple2'.
|
|
||||||
|
|
||||||
Changed in 0.7: (Sep 98)
|
|
||||||
|
|
||||||
Version 0.7 - Michael Deutschmann <michael@talamasca.wkpowerlink.com>
|
|
||||||
|
|
||||||
1. Replaced "character.rom" and Aaron's MouseText table in misc.c with
|
|
||||||
a single file, font.txt, which is converted into a packed c table by a
|
|
||||||
generator utility.
|
|
||||||
|
|
||||||
2. Overhauled Makefile system. We now use GNU autoconf/automake.
|
|
||||||
|
|
||||||
Note: This hasn't been tested extensively. Also, there are a few automake
|
|
||||||
tricks I haven't bothered with - I added them to TODO.
|
|
||||||
|
|
||||||
Changed is 0.06: (Aug 98)
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Version 0.06 - Aaron Culliney <chernabog@baldmountain.bbn.com,
|
|
||||||
aculline@bbn.com>
|
|
||||||
My code changes have nothing to do with my employer, GTE
|
|
||||||
Internetworking, BBN Technologies. They were written completely on my
|
|
||||||
own time and on my own machine.
|
|
||||||
|
|
||||||
1) Separated SVGAlib specific stuff into svideo.c. Added X Windows
|
|
||||||
frontend support in xvideo.c. The X frontend works by doing an
|
|
||||||
X(Shm)PutImage() of the emulator's framebuffer around 30 times a
|
|
||||||
second. This saves us from changing the internal video routines (they
|
|
||||||
assume direct access to an 8bit framebuffer), and it's a heck of a lot
|
|
||||||
faster than trying to do an XPutPixels() on each change. The X
|
|
||||||
frontend only currently works for 8bit displays. Make sure you run it
|
|
||||||
using a mode (specified in XF86Config) that has a bit depth of 8 (not
|
|
||||||
16 or greater).
|
|
||||||
|
|
||||||
2) We now build three versions of the emulator: svideo_320x200,
|
|
||||||
xvideo_320x200, xvideo_640x400. The last one really isn't 640x400 for
|
|
||||||
optimization reasons (568x384) although it probably should be...
|
|
||||||
Sorry, but there's no support for switching resolutions on the fly, we
|
|
||||||
ifdef it in with a new define "_640x400".
|
|
||||||
|
|
||||||
3) Provided 80column support for the 640x400 X version. Now you
|
|
||||||
can PR#3 (running as //e) and get 80 columns. This change required
|
|
||||||
a resolution of at least 560 horizontal pixels (Apple //e specs).
|
|
||||||
|
|
||||||
4) Both SVGA and X versions need to be suid root (for PC speaker port
|
|
||||||
access and SVGA stuff). But both versions now give up root access
|
|
||||||
during video initialization. This means that disk access is now done
|
|
||||||
as *you* (not root) even when g(un)zipping images for loading.
|
|
||||||
Before images would be g(un)zipped as root. There was something about
|
|
||||||
this that made me uneasy... Now it's up to you to give the
|
|
||||||
appropriate user/group permissions to your disk image repository.
|
|
||||||
I make no claim about the security fitness of this emulator. See the
|
|
||||||
other READMEs and files for more information/disclaimers.
|
|
||||||
|
|
||||||
5) Did a 180 on the disk image selection menu. <RET> now tries
|
|
||||||
to open disk images as read-only, 'W' for both read-write.
|
|
||||||
Of course this will only work if you have the correct
|
|
||||||
file permissions set (see 5 above). I find this more convenient b/c
|
|
||||||
I play alot of the arcade games where you don't ever save game state.
|
|
||||||
|
|
||||||
6) Removed the disk "Information" submenu. I never use it. Do you?
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes in 0.05: (Feb 98)
|
|
||||||
-------------------------
|
|
||||||
|
|
||||||
Version 0.05 - Aaron Culliney <chernabog@baldmountain.bbn.com,
|
|
||||||
aculline@bbn.com>
|
|
||||||
My code changes have nothing to do with my employer, GTE
|
|
||||||
Internetworking, BBN Technologies. They were written completely on my
|
|
||||||
own time and on my own machine.
|
|
||||||
|
|
||||||
1) Added support for 65c02 instructions. The programs that
|
|
||||||
I've tested which use them work just fine.
|
|
||||||
|
|
||||||
2) Added support for 128k //e EXCEPT 80 column mode, B/W
|
|
||||||
DHIRES mode, and MouseText character set. The two unimplemented video
|
|
||||||
modes require major changes to current video routines, thus a next
|
|
||||||
version... New supported images are copy ii+ 9.0, diagnostics //e,
|
|
||||||
marble madness, airheart, legend of blacksilver, pirates!...
|
|
||||||
|
|
||||||
3) Fixed some old problems with HIRES colors being off around
|
|
||||||
byte edges in interpolated/color modes. but we still give you the
|
|
||||||
option to use these "lazy" modes since emulation is faster with them
|
|
||||||
enabled...
|
|
||||||
|
|
||||||
4) You now have several new options in your .apple2 file. I
|
|
||||||
suggest either copying the distributed one over your existing one, or
|
|
||||||
merging the changes in.
|
|
||||||
|
|
||||||
5) Fixed some potential security bugs where a user could
|
|
||||||
traverse into sensitive directories by using the disk selection
|
|
||||||
interface. The current emulator version is not guaranteed to be
|
|
||||||
foolproof since it has to be installed suid root for normal users to
|
|
||||||
use it. Sysadmins should take extra precautions as they see fit.
|
|
||||||
|
|
||||||
6) Added and deprecated some options in the debugger interface
|
|
||||||
to support the new 128k //e. see the DEBUGGER file for more info.
|
|
||||||
DEBUGGER support is not default compiled in.
|
|
||||||
|
|
||||||
7) added some extra options to the .config file that you build
|
|
||||||
into the emulator. One big one: a way to set the max delay count in
|
|
||||||
the emulator to bring Apple ][ emulation rates down to normal on high
|
|
||||||
end pentiums!... 100 is the default delay rate (which works just fine
|
|
||||||
for low end 386-Pentium100's).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Changes in 0.04: (June 97)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
Version 0.04 - Aaron Culliney <chernabog@baldmountain.bbn.com,
|
|
||||||
aculline@bbn.com>
|
|
||||||
My code changes have nothing to do with my employer, BBN. They were
|
|
||||||
written completely on my own time and on my own machine.
|
|
||||||
|
|
||||||
1) Added PC Joystick Support. You must have the joystick
|
|
||||||
kernel loadable module 0.8.0 correctly configured and installed to use
|
|
||||||
this feature.
|
|
||||||
|
|
||||||
2) Changed the way the emulator handles the language card
|
|
||||||
memory space. We no longer patch rom/ram on lc_c08x functions. I did
|
|
||||||
this because under certain conditions the previous versions of the
|
|
||||||
emulator would run a lot slower. Now you may notice the emulator
|
|
||||||
running a tad slower in general (because of the range checking), but
|
|
||||||
Ultima 4 and Arctic Fox (formerly unplayable) should now be just fine.
|
|
||||||
|
|
||||||
3) Changed the way the .apple2 preferences file is handled. I
|
|
||||||
Did this mainly to support saving of PC Joystick parameters, and I'd
|
|
||||||
rather let flex do the dirty work of regexp matching.
|
|
||||||
|
|
||||||
4) Changed the disk interface and main interface menu. In the
|
|
||||||
disk interface, you can now see which disk is in the drive, and with
|
|
||||||
what permission <rw1> for read/write drive 1. You can eject this disk
|
|
||||||
or force it to be write-protected. In the main menu screen, you have
|
|
||||||
more parameters to play around with (associated with the pc joystick
|
|
||||||
add-on).
|
|
||||||
|
|
||||||
5) Disk image files are now opened with user privileges, not
|
|
||||||
root privileges, even though the program is suid root. gzip'ed disks
|
|
||||||
are still handled as root, but we no longer call the unsecure system()
|
|
||||||
to do the dirty work. Instead we fork and directly exec "/bin/gzip".
|
|
||||||
|
|
||||||
5) General bug fixes and enhancements.
|
|
||||||
|
|
||||||
|
|
||||||
Changes in 0.03: (Jan-Feb 97)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
Version 0.03 - Aaron Culliney <chernabog@baldmountain.bbn.com>
|
|
||||||
My code changes have nothing to do with my employer, BBN. They were
|
|
||||||
written completely on my own time and on my own machine.
|
|
||||||
|
|
||||||
1) Fixed language card initialization bug.
|
|
||||||
|
|
||||||
2) Improved colors. Seems that Greens and purples we're
|
|
||||||
switched around. The colors are still slightly off, and color
|
|
||||||
interpolation seems screwy (TODO).
|
|
||||||
|
|
||||||
3) Added apple II debugger interface. This requires flex
|
|
||||||
version 2.5.2. (You can compile this into the program or leave it
|
|
||||||
out.) Type F7 to get into the debugger and type a '?' to see a
|
|
||||||
command summary. Check out the file DEBUGGER for more info.
|
|
||||||
|
|
||||||
4) Added support for standard 232960 .nib disks.
|
|
||||||
|
|
||||||
5) Added a more intuitive interface to selecting disks. You
|
|
||||||
can now traverse forward and backward in a directory hierarchy with
|
|
||||||
the base directory set by your .apple2 config file.
|
|
||||||
|
|
||||||
6) changed keymap: shift-p = @ and shift-N = ^, just like my
|
|
||||||
old II+ keyboard.
|
|
||||||
|
|
||||||
Changes in 0.02: (8 Dec 1995)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* Ctrl-C will not kill the emulator with newer SVGAlib. Please
|
|
||||||
use SVGAlib > 1.2.9 for best results.
|
|
||||||
|
|
||||||
* Rudimentory REPT key handling. It's too fast though.
|
|
||||||
|
|
||||||
* The assembler files now compiles under ELF.
|
|
||||||
|
|
||||||
* Not every SVGA card can do page-flipping. The emulator now
|
|
||||||
checks for this and fall back to VGA if it can't.
|
|
||||||
|
|
||||||
* Keymap has changed a bit. Backspace and ']' is now <-, '[' is
|
|
||||||
REPT.
|
|
||||||
|
|
||||||
* Disk extension changed to the more common .dsk (and a2d.info to
|
|
||||||
dsk.info).
|
|
||||||
|
|
||||||
|
|
||||||
Changes in 0.01: (9 Oct 1994)
|
|
||||||
-----------------------------
|
|
||||||
|
|
||||||
* Standard VGA support with some performance degradation.
|
|
||||||
(When page flipping occurs, 64K memory banks are swapped;
|
|
||||||
hence the performance degradation.)
|
|
||||||
|
|
||||||
* -vga flag switch added, e.g. "apple2 -vga"; forces standard
|
|
||||||
VGA detection.
|
|
||||||
|
|
||||||
* (Trident) TVGA8900 page flipping bug fixed.
|
|
||||||
|
|
||||||
* File names may now contain any character codes. (The previous
|
|
||||||
version had some problems with compressing/uncompressing file
|
|
||||||
names with extraordinary characters.)
|
|
||||||
|
|
||||||
* Diskette selection retains last cursor position.
|
|
58
PROBLEMS
58
PROBLEMS
|
@ -1,58 +0,0 @@
|
||||||
Known issues with the emulator:
|
|
||||||
|
|
||||||
Emulation Fidelity:
|
|
||||||
|
|
||||||
- Disk emulation. The emulator is not very realistic. It handles almost
|
|
||||||
all non-copyprotected disk access okay, but copyprotected or diagnostic
|
|
||||||
programs may be confused by our drive, which magically spins at precisely
|
|
||||||
the optimal speed. (see Specific Programs, below).
|
|
||||||
|
|
||||||
- Medium Resolution graphics. This is a rarely used //e mode that is to
|
|
||||||
Low-Res what 80 Column text is to 40 column text. We don't support it as
|
|
||||||
yet, although it should be relatively simple.
|
|
||||||
|
|
||||||
- We don't emulate the //e's vertical blanking interval detection feature.
|
|
||||||
This is on the TODO list.
|
|
||||||
|
|
||||||
Graphics:
|
|
||||||
|
|
||||||
- Composite graphics artifacts are not emulated. This is on the TODO list.
|
|
||||||
|
|
||||||
- B/W color setting does not apply to lores or double hires. This
|
|
||||||
generally is not an issue in practice though, as it's really only needed
|
|
||||||
to avoid color fringing in b/w hires images.
|
|
||||||
|
|
||||||
- Double Hires mode is always 140x192 color. Some applications use it as
|
|
||||||
a 560x192 b/w display however. Note that most applications indicate
|
|
||||||
which mode they want using the high bit of the dhires data bytes, so it
|
|
||||||
wouldn't need to be a preferences setting.
|
|
||||||
|
|
||||||
- If an 80-column mode is selected in the low-res emulator, nothing will
|
|
||||||
be written to the display -- the image from the last video mode will
|
|
||||||
remain on the screen. If a menu is brought up it will `stick'. This may
|
|
||||||
make people think the emulator crashed, although it will recover if the
|
|
||||||
application returns to 40-column mode.
|
|
||||||
|
|
||||||
Keyboard:
|
|
||||||
|
|
||||||
- Presently, the Backspace key is interpreted as Left-Arrow (Code 0x88).
|
|
||||||
It could be argued that it should be interpreted as Delete (Code 0xff)
|
|
||||||
instead. Real Apples had no seperate Backspace key, but the //e's Delete
|
|
||||||
key was in an analogous position to the PC's Backspace). The PC
|
|
||||||
keyboard's Delete is assigned to 0xff (in //e mode).
|
|
||||||
|
|
||||||
Specific Programs:
|
|
||||||
|
|
||||||
- Some programs (Computist's Nibbler, Sword of Kadash Master copy for
|
|
||||||
example) lock up. It appears (in debugger) that they are reading the disk
|
|
||||||
with the motor off. Perhaps they pulsed the real Apple's drive motor to make
|
|
||||||
it turn slower?
|
|
||||||
|
|
||||||
- ProDOS will refuse to format disks, claiming that the disk is too slow.
|
|
||||||
|
|
||||||
- ``Alternate Reality: The City'' seems to get jammed, rapidly changing
|
|
||||||
the video mode. I'm not sure if this is a real failure, or just a special
|
|
||||||
effect that takes longer than I'm willing to wait to finish (mode switches
|
|
||||||
would be much faster on a real Apple.) I can get into the program
|
|
||||||
with some nontrivial debugger manipulation to `short out' the offending loops.
|
|
||||||
|
|
408
README
408
README
|
@ -1,408 +0,0 @@
|
||||||
**************************************************************************
|
|
||||||
* Apple II+ Emulator version 0.7 for Linux *
|
|
||||||
* *
|
|
||||||
* Original Author: Alexander Jean-Claude Bottema *
|
|
||||||
* Email : d91a1bo@meryl.csd.uu.se *
|
|
||||||
* *
|
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
|
||||||
* it under the terms of the GNU General Public License as published by *
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or *
|
|
||||||
* (at your option) any later version. *
|
|
||||||
* *
|
|
||||||
* This program is distributed in the hope that it will be useful, *
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
||||||
* GNU General Public License for more details. *
|
|
||||||
* *
|
|
||||||
* You should have received a copy of the GNU General Public License *
|
|
||||||
* along with this program; if not, write to the Free Software *
|
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
|
|
||||||
* *
|
|
||||||
* Modified: Dec 8 1995 by Stephen Lee <sl14@cornell.edu> *
|
|
||||||
* Modified: Jan 97 by Aaron Culliney <aculline@bbn.com> *
|
|
||||||
* <chernabog@baldmountain.bbn.com> *
|
|
||||||
* Modified: Jun 97 by Aaron Culliney <aculline@bbn.com> *
|
|
||||||
* <chernabog@baldmountain.bbn.com> *
|
|
||||||
* Modified: Feb 98 by Aaron Culliney <aculline@bbn.com> *
|
|
||||||
* <chernabog@baldmountain.bbn.com> *
|
|
||||||
* Modified: Aug 98 by Aaron Culliney <aculline@bbn.com> *
|
|
||||||
* <chernabog@baldmountain.bbn.com> *
|
|
||||||
* *
|
|
||||||
* Modified: Sep 98, Dec 98, Jan 98, Jun 99 *
|
|
||||||
* by Michael Deutschmann *
|
|
||||||
* <michael@talamasca.wkpowerlink.com>*
|
|
||||||
* *
|
|
||||||
**************************************************************************
|
|
||||||
|
|
||||||
NOTE:
|
|
||||||
This is basically the original README. See the CHANGES file
|
|
||||||
first for information on this specific version of the emulator. Then
|
|
||||||
read section 0 (installation) in this file for cookbook compilation /
|
|
||||||
installation instructions. Other information in this file may be
|
|
||||||
outdated, so read the manpage for up-to-date runtime instructions.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
|
|
||||||
0. Installation issues (briefly)
|
|
||||||
1. Why did I make an Apple II+ Emulator when there are so many available?
|
|
||||||
2. System Files
|
|
||||||
3. Keyboard & keys
|
|
||||||
4. Diskette database
|
|
||||||
5. Future plans
|
|
||||||
6. Status of the current emulator
|
|
||||||
7. Can you port this to DOS?
|
|
||||||
8. Availability
|
|
||||||
9. Known problems
|
|
||||||
10. Changes since the last
|
|
||||||
11. Final words
|
|
||||||
|
|
||||||
|
|
||||||
0. Installation issues (briefly)
|
|
||||||
================================
|
|
||||||
|
|
||||||
Requirements: SVGA lib version 1.2.9 (or later, see 9.) Tested under 1.2.13.
|
|
||||||
Kernel 2.0.X. Tested under 2.0.36pre12.
|
|
||||||
libc 4.4.4 (or later). Tested under glibc-2.0.6
|
|
||||||
joystick 0.8.0 kernel module for PC Joystick support.
|
|
||||||
flex 2.5.2 (for compiling lex files)
|
|
||||||
|
|
||||||
|
|
||||||
1) Unpack this distribution in a temporary directory.
|
|
||||||
|
|
||||||
2) Run "configure" for a normal build, or "configure --enable-debugger"
|
|
||||||
to add debugger support. (Other GNU autoconf options, such as --prefix,
|
|
||||||
may of course be used.) You may provide optimizations in the enviroment
|
|
||||||
variable CFLAGS.
|
|
||||||
|
|
||||||
3) Type "make" to make the program. As root, type "make install" to
|
|
||||||
install the programs in $(BINDIR) and the man page in $(MANDIR), (both
|
|
||||||
configurable at the configure line). The sysadmin should enable the
|
|
||||||
setuser bit on "apple2" in order for it to use the VGA. Enabling setuser
|
|
||||||
on "xapple2" will allow use of the PC speaker, but is not essential.
|
|
||||||
|
|
||||||
4) Copy the .apple2 configuration file to your home directory, and
|
|
||||||
read the manpage that was installed for further information on how to
|
|
||||||
configure this file. You can configure most of the settings from
|
|
||||||
within the emulator, (F10 for the menu screen), but you need the
|
|
||||||
system path correctly set to point to the rom files before you start
|
|
||||||
the emulator. The emulator won't run without the correct rom files
|
|
||||||
(see the manpage).
|
|
||||||
|
|
||||||
5) After you're done configuring, type "xapple2" to run the
|
|
||||||
emulator under X or "apple2" to run using svgalib. There are two X11
|
|
||||||
versions for different resolutions. Once running, F1 selects disk
|
|
||||||
drive #1, F2 selects disk drive #2, F10 gives you the main menu of
|
|
||||||
runtime parameters, and F5 shows you the keyboard lay out.
|
|
||||||
|
|
||||||
|
|
||||||
1. Why did I make an Apple II+ Emulator when there are so many available?
|
|
||||||
=========================================================================
|
|
||||||
|
|
||||||
For three reasons. The first is that there are no Apple II emulators
|
|
||||||
especially written for Linux; hence they do not take advantages that
|
|
||||||
are commonly provided in Linux systems, e.g. the SVGA library
|
|
||||||
distribution. However, there is an Apple II emulator for X-Windows
|
|
||||||
that easily can be compiled on most UN*X architectures, but the major
|
|
||||||
disadvantage is slow emulation. You cannot obtain a fast emulator by
|
|
||||||
writing it in C, despite the elegant optimizations provided by GNU-C,
|
|
||||||
but of course it becomes more portable if you do that.
|
|
||||||
|
|
||||||
By contrast, this Apple II emulator is partly written in 386 (AT&T)
|
|
||||||
assembler; partly in C. Only those issues that were not time critical
|
|
||||||
were written in C. Especially the CPU emulation was written in
|
|
||||||
optimized assembler to achieve optimum performance. The emulator
|
|
||||||
approximately runs twice as fast as an ordinary Apple II+ computer if
|
|
||||||
it is running on a 486 DX-50.
|
|
||||||
|
|
||||||
The second reason is that there is no Apple II emulator which is 100%
|
|
||||||
usable. Either it is too slow or it is simply too fast (= there is no
|
|
||||||
option to trim the speed of the emulator). Furthermore, many
|
|
||||||
implementors happily avoid implementing mixed text/graphics in high
|
|
||||||
resolution mode; mostly because it complicates the programming. I have
|
|
||||||
never seen an Apple II+ emulator that is entirely complete. I think
|
|
||||||
most emulators fail on implementing the undocumented 6502 instructions
|
|
||||||
(those that are listed as ???), hence some games (or applications) may
|
|
||||||
not work despite they should.
|
|
||||||
|
|
||||||
The third reason is that no emulator support an easy way to switch
|
|
||||||
diskettes given a database of diskettes. With this emulator you can
|
|
||||||
easily switch diskettes through an intuitive interface. You can also
|
|
||||||
add additional information for each diskette (in your database), e.g.
|
|
||||||
which keys to use for a particular game program. The information is
|
|
||||||
kept in a plain text file that can be edited with an ordinary text
|
|
||||||
editor, preferbly GNU-Emacs.
|
|
||||||
(Aaron removed the above feature)
|
|
||||||
|
|
||||||
|
|
||||||
2. System files
|
|
||||||
===============
|
|
||||||
|
|
||||||
Before you can run the emulator, three vital system files must be
|
|
||||||
available. These are:
|
|
||||||
|
|
||||||
apple_II.rom (12k) This file contains the ROM of your Apple II+.
|
|
||||||
It is not distributed due to copyright issues.
|
|
||||||
You have to get this file on your own. If you
|
|
||||||
have been running another emulator, you can
|
|
||||||
probably use its ROM files directly. Technically
|
|
||||||
speaking, this file is a memory dump of the
|
|
||||||
consecutive addresses from D000 to FFFF. This
|
|
||||||
file may also be called by other names such as
|
|
||||||
apple.rom or apple2.rom, but is referenced
|
|
||||||
internally as apple_II.rom.
|
|
||||||
|
|
||||||
appple_IIe.rom Likewise for IIe emulation.
|
|
||||||
|
|
||||||
slot6.rom (256 bytes) Memory dump of the consecutive addresses from
|
|
||||||
C600 to C6FF. This file is not distributed
|
|
||||||
either due to the same reasons as above. This
|
|
||||||
file may also be called by other names such as
|
|
||||||
controller.rom, but is referenced internally
|
|
||||||
as slot6.rom.
|
|
||||||
|
|
||||||
Other important files
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
.apple2 This file is distributed. The file contains default
|
|
||||||
parameter settings. The most important parameter is
|
|
||||||
the setting of the system path, i.e. the directory
|
|
||||||
where the three vital system (ROM) files are
|
|
||||||
stored. Most of the other parameters can be
|
|
||||||
changed during run time via the interface
|
|
||||||
(activated by pressing F10).
|
|
||||||
|
|
||||||
Parameters (that can be set in .apple2):
|
|
||||||
|
|
||||||
speed = <percentage>% Speed of the emulator
|
|
||||||
path = <directory> Diskette database directory
|
|
||||||
color = off Monochrome mode
|
|
||||||
on Plain color mode
|
|
||||||
interpolated Interpolated color mode
|
|
||||||
sound = off Silent mode
|
|
||||||
pc speaker Sound through PC speaker
|
|
||||||
joystick = off Joystick disabled
|
|
||||||
linear Linear joystick mode
|
|
||||||
pc joystick PC Joystick (see CHANGES)
|
|
||||||
digital (Atari) digital joystick mode
|
|
||||||
not yet supported
|
|
||||||
joystick range 1-256 range of joystick
|
|
||||||
origin_x = 0-255 Origin of the joystick (X)
|
|
||||||
origin_y = 0-255 Origin of the joystick (Y)
|
|
||||||
sensitivity <percentage>% Joystick sensitivity
|
|
||||||
system_path = <directory> Directory where the system
|
|
||||||
ROM files are stored.
|
|
||||||
pc joystick parms You don't want to fool
|
|
||||||
around with these, you
|
|
||||||
generate these parms from
|
|
||||||
F10 screen "Calibrate" menu
|
|
||||||
item.
|
|
||||||
|
|
||||||
dsk.info An example is distributed. This file contains
|
|
||||||
information for various diskettes kept in the database.
|
|
||||||
|
|
||||||
Syntax:
|
|
||||||
{<Name of diskette>} i.e. the name is written
|
|
||||||
within curly braces.
|
|
||||||
<Any information...>
|
|
||||||
|
|
||||||
{<Name of another diskette>} ... etc.
|
|
||||||
|
|
||||||
3. Keyboard & keys
|
|
||||||
==================
|
|
||||||
|
|
||||||
F1 To switch diskettes in Drive A, Slot 6
|
|
||||||
F2 To switch diskettes in Drive B, Slot 6
|
|
||||||
F4, also Pause key Pause
|
|
||||||
F5 Keyboard layout
|
|
||||||
F8 Words from the author (removed)
|
|
||||||
F9 Toggle between maximum speed and configured speed.
|
|
||||||
F10 General parameter settings
|
|
||||||
Break (ctrl-Pause) Apple II Reset key
|
|
||||||
Ctrl Printscreen Reboot Apple II emulator
|
|
||||||
|
|
||||||
The numeric keypad is used for joystick emulation.
|
|
||||||
|
|
||||||
Left Alt Joystick button 0
|
|
||||||
Right Alt Joystick button 1
|
|
||||||
Insert Joystick button 2
|
|
||||||
|
|
||||||
F7 Debugger - (if it's compiled into the source).
|
|
||||||
Edit the Makefile if you don't want the
|
|
||||||
debugger. The emulator will run slightly
|
|
||||||
faster without the debugger.
|
|
||||||
|
|
||||||
|
|
||||||
4. Diskette database
|
|
||||||
====================
|
|
||||||
|
|
||||||
The diskettes are provided as plain binary files. These are actually
|
|
||||||
raw dumps, containing the tracks from 0 to 34. For the standard
|
|
||||||
143360 byte .dsk format each track is partitioned into sectors
|
|
||||||
numbered from 0 to 15. Each sector is 256 bytes. Hence, the data is
|
|
||||||
organized as the following:
|
|
||||||
|
|
||||||
File offset (in bytes) Sector Track
|
|
||||||
---------------------- ------ -----
|
|
||||||
0 0 0
|
|
||||||
256 1 0
|
|
||||||
512 2 0
|
|
||||||
. . .
|
|
||||||
. . .
|
|
||||||
. . .
|
|
||||||
3840 15 0
|
|
||||||
4096 0 1
|
|
||||||
4352 1 1
|
|
||||||
. . .
|
|
||||||
. . .
|
|
||||||
. . .
|
|
||||||
143104 15 34
|
|
||||||
|
|
||||||
To transfer Apple II diskettes into this format requires that you own
|
|
||||||
an original Apple II. Since the drives provided by the IBM PC's are
|
|
||||||
not compatible with the original Apple II drives there are no
|
|
||||||
conversion programs directly available. If you have used other Apple
|
|
||||||
II emulators it is most likely that the files will work with this
|
|
||||||
emulator too. It seems to be a common standard to structure the
|
|
||||||
diskettes in the above described way, e.g. the ApplePC and Apl2em
|
|
||||||
emulators for DOS uses the same structure.
|
|
||||||
|
|
||||||
Emulated diskettes MUST have the .dsk or .nib extension (143360 bytes
|
|
||||||
or 232960 bytes respectively), otherwise the emulator will not
|
|
||||||
recognize the file as a valid diskette. However, it is valid to
|
|
||||||
compress them by using gnu-zip (then the extension becomes .dsk.gz or
|
|
||||||
.nib.gz). The emulator will automatically decompress/compress them
|
|
||||||
whenever required (note that it assumes /bin/gzip exists).
|
|
||||||
|
|
||||||
Note that you can add information/documentation for the dsk-diskettes
|
|
||||||
by using an ordinary text editor and edit the file "dsk.info". The
|
|
||||||
name of the diskette is written in curly braces (without the .dsk
|
|
||||||
extension) followed by any information.
|
|
||||||
|
|
||||||
|
|
||||||
5. Future plans
|
|
||||||
===============
|
|
||||||
|
|
||||||
I intend to improve the emulator. Actually, for the next major release
|
|
||||||
(i.e. version 1.00) the emulator will be entirely rewritten. For minor
|
|
||||||
changes, see file CHANGES.
|
|
||||||
|
|
||||||
[Note from Stephen Lee: since this hasn't happened yet, I took to
|
|
||||||
improving the existing emulator until Alexander release a new one.]
|
|
||||||
|
|
||||||
[Note from Aaron Culliney: since this still hasn't happened, I also
|
|
||||||
took the liberty to fix a few things and add some functionality.]
|
|
||||||
|
|
||||||
[v004 note: decided to add in some more features, and fix problems as
|
|
||||||
they've arisen.]
|
|
||||||
|
|
||||||
6. Status of the current emulator
|
|
||||||
=================================
|
|
||||||
|
|
||||||
Works in standard VGA Y
|
|
||||||
Works in SVGA (then using SVGA facilities) Y
|
|
||||||
Disk drive emulation (slot 6) (.dsk & .nib) Y
|
|
||||||
Disk drive emulation (slot 5) N (release 1.00)
|
|
||||||
High resolution emulation Y
|
|
||||||
Low resolution emulation Y
|
|
||||||
Mixed mode (in all resolution modes) Y
|
|
||||||
Correct color emulation (both Low and Hi-res) Y
|
|
||||||
Interpolated color emulation Y
|
|
||||||
Configurable speed Y
|
|
||||||
Diskette switching Y
|
|
||||||
Diskette database Y
|
|
||||||
Interface for parameter settings, etc. Y
|
|
||||||
Sound emulation (PC speaker) Y
|
|
||||||
Flashing text Y
|
|
||||||
Joystick emulation through numeric keypad Y
|
|
||||||
Virtual console switching Y (only when emu. is paused)
|
|
||||||
Raw keyboard mode (reading scancodes) Y
|
|
||||||
Undocumented 6502 instructions Y
|
|
||||||
Language card (i.e. additonal 16k RAM) Y
|
|
||||||
Serial card N (maybe release 1.00)
|
|
||||||
Works on DOS N (AND NEVER WILL)
|
|
||||||
Apple II Debugger Y
|
|
||||||
PC Joystick kernel module support Y
|
|
||||||
|
|
||||||
7. Can you port this to DOS?
|
|
||||||
============================
|
|
||||||
|
|
||||||
No, for two reasons. The first, and probably the most important, is
|
|
||||||
that the current emulator use kernel specific issues that are not, and
|
|
||||||
never will be, available in DOS. Future emulators will be based on the
|
|
||||||
same principles, so the emulator will never run in DOS. The second
|
|
||||||
reason is that DOS is a bad operating system. It is a pain in the neck
|
|
||||||
to write and debug programs in DOS and there is no usable memory
|
|
||||||
management provided by the kernel (if the DOS "interrupts" can be
|
|
||||||
called a "kernel" at all).
|
|
||||||
|
|
||||||
With this free software I hope that more users will switch to Linux
|
|
||||||
(which is a great operating system) and I have a dream that one day,
|
|
||||||
DOS will become a minority.
|
|
||||||
|
|
||||||
8. Availability
|
|
||||||
===============
|
|
||||||
|
|
||||||
This distribution is available at ftp.apple.asimov.net, and
|
|
||||||
tsx-11.mit.edu, and sites mirroring these.
|
|
||||||
|
|
||||||
9. Known problems
|
|
||||||
=================
|
|
||||||
|
|
||||||
Problem: SVGAlib version 1.2.8 and below has a bug in
|
|
||||||
keyboard-handling that makes the '-' key (in the emulator)
|
|
||||||
unusable.
|
|
||||||
|
|
||||||
Solution: Please use SVGAlib version 1.2.9 or above.
|
|
||||||
|
|
||||||
Problem: The REPT (repeat) key repeats too fast.
|
|
||||||
|
|
||||||
Answer: The current implementation is a kludge by me [Stephen]. I
|
|
||||||
might fix it later, but again, I might not.
|
|
||||||
|
|
||||||
Problem: I can't switch virtual consoles while running the program
|
|
||||||
under gdb [Aaron].
|
|
||||||
|
|
||||||
Answer: Actually you do, it's just that the graphic mode stays valid.
|
|
||||||
If you have the svgalib utility "textmode", try a "shell
|
|
||||||
textmode" reset. I haven't played around enough to figure out
|
|
||||||
how/if you can get back to graphic mode after this.
|
|
||||||
|
|
||||||
Problem: Compiling with optimization causes the debugger to choke
|
|
||||||
[Aaron].
|
|
||||||
|
|
||||||
Answer: I'm playing fast and loose with the debugger's assembly hooks.
|
|
||||||
I think it's something to do with -fomit-frame-pointer. And
|
|
||||||
since I don't see much speed gain, I'm ignoring the problem
|
|
||||||
for now.
|
|
||||||
|
|
||||||
10. Changes
|
|
||||||
===========
|
|
||||||
|
|
||||||
see file CHANGES
|
|
||||||
|
|
||||||
|
|
||||||
11. Final words
|
|
||||||
===============
|
|
||||||
|
|
||||||
Note that albeit you can switch between digital and linear joystick
|
|
||||||
emulation, only linear mode is presently supported. I still haven't
|
|
||||||
figured out how the atari (digital) joystick emulation works, so I'll
|
|
||||||
save it to the next release (as I said in the previous release :-) )
|
|
||||||
|
|
||||||
[PC Joystick mode is just another linear mode. In general linear mode
|
|
||||||
seems to work fine for most games. If a game seems to be having
|
|
||||||
trouble with it, change the range from $100 (256) to $80 (128) with
|
|
||||||
center points at $80 and $40 respectively. Switching around ranges
|
|
||||||
often seems to do the trick for most games, but I bet I'm not handling
|
|
||||||
the joystick softswich values correctly. documentation on this is
|
|
||||||
scant. -Aaron]
|
|
||||||
|
|
||||||
I hope you will enjoy this emulator. I do. Many games (that I have
|
|
||||||
ported) works perfectly, even those that use undocumented 6502
|
|
||||||
instructions. Suggestions to improvements are welcome. My email
|
|
||||||
address will be valid at least one more year, i.e. as long as I am a
|
|
||||||
computer science student at the University of Uppsala in Sweden.
|
|
||||||
|
|
||||||
/ Alexander Jean-Claude Bottema (Email: d91a1bo@meryl.csd.uu.se)
|
|
||||||
Oct. 9 1994 15:44:21
|
|
154
README.debugger
154
README.debugger
|
@ -1,154 +0,0 @@
|
||||||
*************************************************************************
|
|
||||||
* *
|
|
||||||
* Apple II debugger routines for the Linux-x86 Apple II emulator. *
|
|
||||||
* by Aaron Culliney - chernabog@baldmountain.bbn.com - (C) 1998 *
|
|
||||||
* *
|
|
||||||
* My code changes have nothing to do with my employer, GTE *
|
|
||||||
* Internetworking, BBN Technologies. They were written completely on my*
|
|
||||||
* own time and on my own machine. *
|
|
||||||
* *
|
|
||||||
*************************************************************************
|
|
||||||
|
|
||||||
The debugger console is a mid-size hack onto the main emulator code.
|
|
||||||
I did it b/c I wanted to fool around with some of my old games while
|
|
||||||
they were running and to debug the emulator itself.
|
|
||||||
The code is kinda ugly in some areas, but seems robust enough; (I've
|
|
||||||
used flex to handle most of the dangerous UI stuff). It runs a bit
|
|
||||||
slower than when you're in unrestricted emulation mode because it's
|
|
||||||
doing a lot of switching between C code and asm, copying state, and
|
|
||||||
checking breakpoints/watchpoints.
|
|
||||||
|
|
||||||
|
|
||||||
KNOWN PROBLEMS:
|
|
||||||
--------------
|
|
||||||
|
|
||||||
When you hit a watchpoint or breakpoint, you have to step over it
|
|
||||||
before you can use the g{o}, f{inish}, or u{ntil} commands again.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
-----
|
|
||||||
|
|
||||||
F7 - enters the debugger. (actually we wait until we've finished with
|
|
||||||
the current 6502 instruction before we enter the debugger so we're all
|
|
||||||
synched up if/when we start stepping the machine).
|
|
||||||
|
|
||||||
ESC - exits the debugger console.
|
|
||||||
|
|
||||||
General Command format:
|
|
||||||
|
|
||||||
command {optional part} <mandatory part> (this | that)
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Disassembling Apple II main memory and language card memory:
|
|
||||||
|
|
||||||
d{is} {language card bank} {/bank/}{addrs} {+}{len}
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
"d" - disassemble from current location
|
|
||||||
"dis +5" - disassemble from current location +5
|
|
||||||
"dis /01/2000" - (128k (//e) specific)
|
|
||||||
"dis lc1 d000 5" - disassemble memory +5 at lang card 1 0xd000
|
|
||||||
|
|
||||||
Note: {addrs} can be (d000 <-> ffff) or (0 <-> 2fff) for the language
|
|
||||||
card.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Dumping memory:
|
|
||||||
|
|
||||||
m{em} {lc1|lc2} {addrs} {+}{len}
|
|
||||||
a{scii} {lc1|lc2} {addrs} {+}{len}
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
"mem" - dump memory at current location
|
|
||||||
"m dead" - dump memory at 0xDEAD
|
|
||||||
"m lc2 2fff 1" - dump memory at lang card 2 0x2FFF +1
|
|
||||||
"ascii /01/400" - (128k (//e) specific)
|
|
||||||
|
|
||||||
Note: {addrs} can be (d000 <-> ffff) or (0 <-> 2fff) for the language
|
|
||||||
card. Also you need to specify the {addrs} if you're examining lc
|
|
||||||
memory.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Setting memory:
|
|
||||||
<addrs> {lc1|lc2} : <byteseq>
|
|
||||||
|
|
||||||
"4000:deadc0de" - set memory at 0x4000 to 0xDEADC0DE
|
|
||||||
"50lc2:def" - set memory at lang bank 2 0x50 to 0xDE0F
|
|
||||||
|
|
||||||
Note: {addrs} can be (d000 <-> ffff) or (0 <-> 2fff) for the language
|
|
||||||
card.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Displaying machine state (registers, language card, drive, softswitches):
|
|
||||||
|
|
||||||
r{egs} - registers
|
|
||||||
l{ang} - language card settings
|
|
||||||
dr{ive} - disk drive settings
|
|
||||||
vm - other virtual machine settings
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Stepping the machine:
|
|
||||||
|
|
||||||
(s{tep} | n{ext}) {len}
|
|
||||||
f{inish}
|
|
||||||
u{ntil}
|
|
||||||
g{o} {addr}
|
|
||||||
|
|
||||||
-*step* or *next* 0-255 instructions.
|
|
||||||
|
|
||||||
-*finish* current stack-frame (stop at RTS).
|
|
||||||
|
|
||||||
-step *until* PC == next instruction (good for finishing loops).
|
|
||||||
|
|
||||||
-*go* or jump to {addr} and continue executing until user hits a key.
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Searching and setting/unsetting memory breakpoints and watchpoints:
|
|
||||||
|
|
||||||
sea{rch} {lc1|lc2} <byteseq>
|
|
||||||
|
|
||||||
"se deadc0de" - search for 0xDEADC0DE
|
|
||||||
"search lc2 def" - search lang bank2 (and lang card) for 0xDEF
|
|
||||||
|
|
||||||
(b{reak} | w{atch}) {addr}
|
|
||||||
br{eak} op <byte>
|
|
||||||
(c{lear} | i{gnore}) {num}
|
|
||||||
c{lear} op <byte>
|
|
||||||
sta{tus} - show status of memory watch/breakpoints
|
|
||||||
op{codes} - show opcodes that we're stopping at
|
|
||||||
|
|
||||||
"w c0e9" - watch memory at C0E9
|
|
||||||
"br" - break at current PC
|
|
||||||
"br op 20" - break on opcode 20
|
|
||||||
"clear 1" - clear breakpoint 1
|
|
||||||
"ig" - ignore all watchpoints
|
|
||||||
"cl op 20" - clear break on opcode 20
|
|
||||||
|
|
||||||
-break or watch addrs. (use in conjunction with g{o})
|
|
||||||
|
|
||||||
-clear breakpoints, ignore watchpoints.
|
|
||||||
|
|
||||||
-show break and watchpoint status.
|
|
||||||
|
|
||||||
Note: breakpoints and watchpoints persist even when you exit the
|
|
||||||
debugger console. They are only reset if you clear/ignore them or
|
|
||||||
virtually reboot.
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Loading and saving state:
|
|
||||||
|
|
||||||
bload <file> <addrs>
|
|
||||||
bsave <file> /<bank>/<addrs> <len>
|
|
||||||
|
|
||||||
bload binary 8000 - load file into memory
|
|
||||||
bsave pic /0/2000 2000 - save memory to file
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------------
|
|
||||||
Miscellaneous:
|
|
||||||
|
|
||||||
fr{esh} - clear screen of graphics
|
|
12
TODO
12
TODO
|
@ -1,12 +0,0 @@
|
||||||
Obviously this emulator could use extension. We could do with support
|
|
||||||
for more disk-image formats, additional interface cards, memory-image
|
|
||||||
save/restore, and other things.
|
|
||||||
|
|
||||||
However, most of these things would require hooking into parts of the code
|
|
||||||
that are likely going to change radically in later versions of the
|
|
||||||
emulator, due to badly needed cleanups. Thus, I do not recommend trying
|
|
||||||
to extend this version alone.
|
|
||||||
|
|
||||||
If you want to work on the emulator, contact us first. We can give you alpha
|
|
||||||
versions of the emulator to work on, and coordinate your efforts with
|
|
||||||
other contributors.
|
|
Loading…
Reference in New Issue
Block a user