Remove ancient text files

This commit is contained in:
Aaron Culliney 2018-12-08 07:57:09 -08:00
parent 1bf328795a
commit c22ad4c1e9
7 changed files with 0 additions and 2176 deletions

14
ASM
View File

@ -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

1253
ChangeLog

File diff suppressed because it is too large Load Diff

277
NEWS
View File

@ -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.

View File

@ -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
View File

@ -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

View File

@ -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
View File

@ -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.