imported files

This commit is contained in:
Christian Bauer committed 2003-07-01 15:43:43 +00:00
commit bd3cd939e9
41 files changed
+2892

No files matched your search

BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+203
View File
@@ -0,0 +1,203 @@
Changes from V4.1a to V4.1b:
- Unix: Updated Tcl/Tk preferences editor [Gerard Decatrel]
- Unix: Added SDL display driver which is the default if SDL >= 1.2 is
detected by the configure script
- Unix: Increased number of sound buffers from 4 to 16 (emu10k driver doesn't
work with the smaller value)
- Unix: Fixed some small compilation problems
Changes from V4.1 to V4.1a:
- Fixed bug in IEC::NewPrefs()
- Optimized VIC emulation for speed
- BeOS: Prefs saved in /boot/home/config/settings/Frodo_settings
- BeOS: Directory panel works again
- BeOS: Correct C64/1541 clock frequency ratio (Frodo SC)
- BeOS: Correct audio mixing/clipping
Changes from V4.0a to V4.1:
- Integrated Win32 and RiscOS ports
- Snapshot support
- Added page-crossing and "borrowed" cycles in line-based CPU emulation (Frodo PC)
- Added precise CIA cycles for line-based emulation (Frodo PC)
- Optional fixed-point arithmetic and precomputed filters in SID.cpp
- Optional dynamic alignment checks in VIC.cpp
- Changed typedefs and constants:
BYTE -> int8
UBYTE -> uint8
WORD -> int16
UWORD -> uint16
LONG -> int32
ULONG -> uint32
FALSE -> false
TRUE -> true
- Unix: Better configure script
- Unix: Sound support for Solaris 2.x
- Unix: Joystick can be toggled between port 1/2 with the NumLock key
- Unix: US keyboard layouts supported
- BeOS: Fixed for BeOS AA:DR9
- BeOS: Can now switch between window/screen mode while the emulation is running,
speeded up full screen mode
- BeOS: Prefs saved in /system/settings/Frodo_settings by default
Changes from V4.0 to V4.0a:
- Corrected BRK, ANE, ARR, SBX and DCP instructions
- Frodo SC: Improved the CIA timers
- Frodo SC: MOS6526::EmulateCycle() split into MOS6526::EmulateCycle()
and MOS6526::CheckIRQs()
- Frodo SC: Corrected interrupt behaviour of branch instructions
- BeOS: Sound calculation is now done in stereo
Changes from V3.1c to V4.0:
- The C64 ROM files are now included
- Unix: Added SVGAlib keyboard patches from Bernd
Changes from V3.1b to V3.1c:
- Ported to AmigaOS
- Fixed bug in IEC::Reset()
- Fixed bug when writing to SID registers >24
- The SID noise waveform should now sound the same on all
platforms
- Removed all calls to tolower() in SAM.cpp because of
possible side-effects if tolower() is a macro
- Drive LEDs are only updated once per frame
- .d64/.t64 files are opened with read permissions only
- Fixed bug with read_char buffering in 1541fs.cpp/1541t64.cpp
- Frodo SC: Fixed memory trashing bug in MOS6569::draw_background()
- Unix: Drive LEDs blink on error
- Unix: Added more patches from Bernd
Changes from V3.1a to V3.1b:
- Corrected SID sustain behaviour
- Reading from write-only SID registers returns the last
byte written to the SID
- No more distortions when playing samples
- Removed the "Ignore SID Volume" prefs item again
- Combined SID waveforms now sampled from a 6581R4
- Improved 1541 VIA timer operation
- Fixed bug in 1541 head movement
- Raster IRQs can be triggered by writing to $d011/$d012
- Some changes for the MacOS port
- Included autoconf stuff from Bernd
- Frodo SC: Fixed some CIA timer bugs
Changes from V3.1 to V3.1a:
- Frodo SC ported
- Processor-level 1541 emulation supports reading GCR data,
removed the faked job loop
- Corrected ISB, RRA, SBX and SHA instructions
- The last line of Y expanded sprites wasn't drawn
- Light pen registers work
- Small fixes to 1541d64/1541t64
- CIA 2 PRA write: IEC lines respect DDRA
- Better triangle waveform (12 bits)
- SID emulation can play sampled sounds
- New "Ignore SID Volume" prefs item for better sample playing
- '*' on numerical keypad toggles speed limiter
- BeOS: '/' on numerical keypad toggles processor-level 1541
emulation
- BeOS: Safer quitting
- BeOS: Option to use GameKit (screen)
- BeOS: Replaced srand(system_time()) with srand(real_time_clock())
- Unix: Sun makefile
Changes from V3.0h to V3.1:
- BeOS: Joysticks work again
Changes from V3.0g to V3.0h:
- Implemented SID notch filter, better resonance frequency calculation
- Fixed bug with SID filter option
- CIA timer B one-shot mode stops timer when counting undeflows
of timer A
- Implemented lightpen trigger
- BeOS: Fixed for BeOS DR8, improved the GUI a bit
- Unix: Some fixes to the TkGui (T64, SIDFilters, removed speed
display)
- Unix: Main window no longer resizable
- Unix: SVGALib support works again
Changes from V3.0f to V3.0g:
- New T64/LYNX mode for 1541 emulation
- 1541fs.cpp/match() used to treat the pattern "foo" as "foo*"
- 1541 DIR mode uses tmpfile() for opening temporary directory files
- 1541 D64 mode allows wildcards for selective directory reading
- Increased compatibility of processor-level 1541 emulation in
various places (C64<->1541 communication, VIA registers, memory
map, disk change flag)
- Inlined MOS6526::EmulateLine() and some small public functions of
MOS6502_1541
- New prefs option to enable/disable SID filter emulation
- Joystick calibration is reset when joystick options change
- BeOS: Self-calibrating joystick routines
Changes from V3.0e to V3.0f:
- Improved DIR/D64 drive reset, resetting the C64 resets the drives
- Implemented 'G' command for DIR/D64 drives
- Corrected translation of 0xc1..0xda characters in conv_from_64()
- BeOS: Implemented smart "Insert next disk" menu item
- Unix: Improved the speedometer/LED bar
- Unix: Self-calibrating joystick routines
- Unix: No need to enter path of 'wish' in TkGui.tcl
Changes from V3.0d to V3.0e:
- Removed the CBOOL data type
- Unix: Sound for HP-UX
- Unix: Keyboard layout matches the picture in the docs more
closely
- Unix: Diagonal directions of keypad joystick emulation work
- Unix: +/- on numerical keypad modifies SkipFrames
- Unix: F9 invokes SAM
- Unix: Drive LEDs and speedometer implemented
- Unix: Some changes to the GUI
- Unix: Random number generator is initialized
- Unix: Name of prefs file can be given as an argument
- Unix: Calls XFlush() and XSync() in C64Display::Update()
Changes from V3.0c to V3.0d:
- SID filter emulation implemented
- SID master volume setting works again
- Flags are recalculated in MOS6526::SetState()
- Changed CBOOL->bool in some places
- Fixed bug with char_in in MOS6510::new_config()
- BeOS: Emulation thread priority lowered
- Unix: Some changes for DEC Alpha
- Unix: Joystick support for Linux
Changes from V3.0b to V3.0c:
- 1541 DIR mode can load directory with "$0"
- Rearranged the CPU code (more macros, less inline functions)
- SID envelope generators rewritten, envelopes are now
recalculated for every sample
- SID calc_buffer function now takes pointer to WORD buffer
- Unix: Sound for Linux
- Unix: Prefs window implemented (needs Tcl/Tk)
- Unix: Corrected x64 disk image detection on little-endian systems
- Unix: SVGAlib support works again, accesses frame buffer
directly if possible
- Unix: Added support for SHM under X11
Changes from V3.0a to V3.0b:
- Implemented REU emulation
- Formatting disks with ID possible under processor-level
1541 emulation
- Corrected and optimized SID waveform/envelope calculation
(signed arithmetic)
- Corrected idle state display again (ECM text)
- 1541 D64 mode ignores drive numbers when opening the
directory
- Processor-level 1541 emulation deactivates when idle
- BeOS: Sound output quality is now 16 bits
- Unix: Quits more cleanly, reactivates key repeat
- Unix: Fixed alignment problem with text_chunky_buf in VIC.h
Changes from V3.0 to V3.0a:
- Implemented SID test bits
- Combined SID waveforms respect pulse width
- Corrected idle state graphics display
- Processor-level 1541 emulation respects .d64 error info
- CPU emulation optimized (6510 and 6502 split)
- VIC emulation optimized (raster counter in local variable
in EmulateLine())
- BeOS: Now exiting the audio subscriber with ExitStream(TRUE)
- Unix: Fixed missing thread_func() declaration
- Unix: getcwd(AppDirPath) was missing in main_x.i
- Unix: Speed limiter works
BIN
View File
Binary file not shown.
+48
View File
@@ -0,0 +1,48 @@
<HTML>
<HEAD>
<TITLE>Frodo Manual</TITLE>
</HEAD>
<BODY>
<H1>Frodo V4.1</H1>
<A HREF="whatsnew.html">What's new in V4.1?</A>
<H2>The free, portable Commodore 64 emulator for BeOS/Unix/MacOS/AmigaOS/RiscOS/Win32</H2>
© Copyright 1994-1997,2002 Christian Bauer et al. Freely distributable.
<HR>
<UL>
<LI><A HREF="overview.html">Overview</A>: Why another C64 emulator?
<LI><A HREF="installation.html">Installation</A>: How to install Frodo
</UL>
<UL>
<LI><A HREF="systemspecific.html">System specific notes</A>: Frodo is Frodo is Frodo is Frodo...
<LI><A HREF="settings.html">Settings</A>: You only have to configure...
<LI><A HREF="emulwindow.html">Emulation window</A>: See what's in here
<LI><A HREF="keyboard.html">Keyboard layout</A>: Where the hell is the "any" key?
<LI><A HREF="files.html">File access</A>: A 64 with hard disk
<LI><A HREF="sam.html">SAM</A>: The built-in assembler/monitor
<LI><A HREF="kernal.html">Kernal</A>: Extensions of the included Kernal ROM
</UL>
<UL>
<LI><A HREF="flavours.html">Frodo flavours</A>: Frodo, Frodo PC and Frodo SC
</UL>
<UL>
<LI><A HREF="demoprograms.html">Sample programs</A>: The included demo programs
<LI><A HREF="technicalinfo.html">Technical info</A>: Revealing the secrets
</UL>
<UL>
<LI><A HREF="legalmush.html">Copyright</A>: Legal mush
<LI><A HREF="bugreports.html">Bug reports</A>: Got some problems?
<LI><A HREF="thanks.html">Credits</A>: The author wishes to thank...
<LI><A HREF="author.html">The author</A>: Programmer's address
<LI><A HREF="history.html">History</A>: Revision history of Frodo
<LI><A HREF="future.html">The future</A>: What's on my to-do list
</UL>
</BODY>
</HTML>
+37
View File
@@ -0,0 +1,37 @@
<HTML>
<HEAD>
<TITLE>The author</TITLE>
</HEAD>
<BODY>
<H1>How to reach me:</H1>
<H3>Snail mail:</H3>
<BLOCKQUOTE>
Christian Bauer<BR>
Max-Planck-Str.60<BR>
55124 Mainz<BR>
Germany<P></BLOCKQUOTE>
<H3>EMail:</H3>
<BLOCKQUOTE>
<A HREF="mailto:[email protected]">[email protected]</A><BR>
</BLOCKQUOTE><P>
Questions, criticism, suggestions and <A HREF="bugreports.html">bug
reports</A> are always welcome. EMail is preferred. In fact, the probability
that physical mail to me will be answered is virtually zero (call me lazy
:-).<P>
Questions about the Unix version should go to <A HREF="mailto:[email protected]">Bernd Schmidt</A>
(esp. Linux) and <A HREF="mailto:[email protected]">Lutz Vieweg</A> (esp. HP-UX).<P>
Questions about the Mac version should go to <A HREF="mailto:[email protected]">Richard Bannister</A>.<P>
Questions about the Win32 version should go to <A HREF="mailto:[email protected]">J. Richard Sladkey</A>.<P>
Questions about the Acorn version should go to <A HREF="mailto:[email protected]">Andreas Dehmel</A>.<P>
Frodo is <EM>not</EM> a shareware program, but I won't reject any gifts.
<TT>:-)</TT><P>
</BODY>
</HTML>
+52
View File
@@ -0,0 +1,52 @@
<HTML>
<HEAD>
<TITLE>Bug reports</TITLE>
</HEAD>
<BODY>
<H1>Bug reports</H1>
<HR>
If you find a bug or a misfeature in Frodo, or have an idea how to make
some things better, then please drop me a note so I'll be able to improve
Frodo in the future. However, I'm not interested in reports about programs
that "don't work" unless you have tested them with both Frodo SC and a
real C64. My address can be found <A HREF="author.html">here</A>.
Questions about the Unix version should go to
<A HREF="mailto:[email protected]">Bernd Schmidt</A> (esp. Linux) and
<A HREF="mailto:[email protected]">Lutz Vieweg</A> (esp. HP-UX).
Questions about the Mac version should go to
<A HREF="mailto:[email protected]">Richard Bannister</A>.
Questions about the Win32 version should go to
<A HREF="mailto:[email protected]">J. Richard Sladkey</A>.
Questions about the Acorn version should go to
<A HREF="mailto:[email protected]">Andreas Dehmel</A>.<P>
I don't think the emulation can be made much faster without changing the
concept but I'd be happy to find someone showing me how to do it.<P>
Known bugs of the BeOS version:<P>
<UL>
<LI>Ctrl-C in SAM doesn't work (probably a bug in the signal handling of BeOS)
<LI>The "SAM" menu option should be disabled if Frodo was started from the Tracker, but there is no way I know of to determine whether the program was launched from the Shell or the Tracker
<LI>Frodo SC doesn't work very well in full-screen mode
<LI>Double scan in full-screen mode doesn't work
</UL>
Known bugs of the Unix version:<P>
<UL>
<LI>Only supports german and US keyboards
<LI>Can only use 256 color visuals
</UL>
Known bugs of the AmigaOS version:<P>
<UL>
<LI>Many <TT>:-)</TT>
</UL>
</BODY>
</HTML>
+64
View File
@@ -0,0 +1,64 @@
<HTML>
<HEAD>
<TITLE>Sample programs</TITLE>
</HEAD>
<BODY>
<H1>Sample programs</H1>
<HR>
The directory "64prgs" contains some little sample programs to show the
capabilities of Frodo/Frodo SC. Except for "dadb" and "lrborder" they are all loaded with
<CODE>LOAD"&lt;name&gt;",8,1</CODE> and started with <CODE>SYS49152</CODE>.
To do so, you have to set "Drive 8" in the settings to "Dir" and set the
path to '64prgs' so Frodo will find the programs.<P>
The programs were written by Pasi Ojala, Marko M&auml;kel&auml;, Andreas
Boose and me. If you like, you can try them on other emulators or on a real
C64.<P>
A short description of each program:<P>
<H4>3fff</H4>
Opens the top and bottom border and displays swinging letters ("Cycles per
line (CPU)" should be set to 60 for this one)
<H4>colorbars</H4>
Flickering colors
<H4>d011h3</H4>
8-way soft scrolling without moving a single byte in memory (cursor keys
to scroll left/right, 't' for text mode, 'g' for bitmap mode), requires Frodo SC
<H4>dadb</H4>
A program running in the color RAM (press space), requires Frodo SC
<H4>de00all</H4>
A program running in the address space $de00-$dfff (press space), requires
Frodo SC
<H4>dycp</H4>
Scrolling with different Y character position
<H4>fld</H4>
Demonstrates the FLD effect (flexible line distance)
<H4>lrborder</H4>
Opens the left/right border, requires Frodo SC
<H4>sprsync</H4>
Stable raster routine by synchronizing with a sprite, requires Frodo SC
<H4>stretch</H4>
Variably expanded sprites, requires Frodo SC
<H4>tech-tech</H4>
Horizontal scrolling with large amplitude (use joystick in port 2 to
control)
<H4>text26</H4>
Displays (nearly) 26 lines of text
</BODY>
</HTML>
+41
View File
@@ -0,0 +1,41 @@
<HTML>
<HEAD>
<TITLE>Emulation window</TITLE>
</HEAD>
<BODY>
<H1>Emulation window</H1>
<HR>
The emulation window displays the C64 graphics and receives the keyboard
input. When this window is active and the emulation is running, the main
menu (BeOS/AmigaOS only) offers six commands (apart from About/Quit):<P>
<UL>
<LI><B>"Reset C64"</B> resets the C64 and the 1541 emulation (same as pressing F12)
<LI><B>"Preferences..."</B> re-opens the <A HREF="settings.html">settings window</A>
<LI><B>"SAM..."</B> halts the emulation and activates <A HREF="sam.html">SAM</A> (you can exit from SAM with the "x" command)
<LI><B>"Insert next disk"</B> changes the disk image of drive 8 if in "D64" mode and inserts the "next" disk. Frodo tries to be smart about what the "next" disk is. Your disk images should be named "Foo1.d64", "Foo2.d64"... or "BarA.d64", "BarB.d64"... for this feature to work.
<LI><B>"Load snapshot..."</B> restores the emulator state from a snapshot file saved with "Save snapshot...".
<LI><B>"Save snapshot..."</B> saves the current emulator state to disk.
</UL>
In the bottom left corner of the window, Frodo displays how much percent of
the speed of a real C64 the emulation achieves.<P>
The four items labeled "Drive 8" to "Drive 11" are the disk activity
indicators of the 1541 emulation.<P>
Under <b>RISC OS</b> Frodo can be controlled via Menus and the emulator pane. Some notes on
the pane entries:
<UL>
<LI><B>Drive LEDs 8-11</B> display the drives' state. You can also set the drive paths by dragging files/directories to the corresponding LEDs.
<LI>The <B>Speedometer</B> is clickable, its border type displays the state of the speed limiter. Slab in means off, slab out means on.
<LI>The <B>Pause</B> and <B>Reset</B> icons should be self-explanatory.
<LI>The <B>Size Toggler</B> lets you choose between two display sizes. It shows the one you'll get if you click it, rather than the current one.
</UL>
</BODY>
</HTML>
+85
View File
@@ -0,0 +1,85 @@
<HTML>
<HEAD>
<TITLE>File access</TITLE>
</HEAD>
<BODY>
<H1>File access</H1>
<HR>
Frodo offers four possibilities for the 1541 emulation:
<H3>1. Host system directory, setting "Dir"</H3>
In this mode, the C64 programs and files are stored in a directory on your
hard disk and can be <KBD>LOAD</KBD>ed and <KBD>SAVE</KBD>d as usual from
the emulator. The paths to the directories of the simulated drives are
given in the settings window in the path entry fields of the "Drives"
box.<P>
You can also load the directory with <KBD>LOAD"$",8</KBD>. All files are
displayed as "PRG", all subdirectories as "DIR". To get into a
subdirectory, you have to open the settings window and change the path for
the drive, as the operating system of the C64 doesn't know about
subdirectories. However, it is possible to use a "/" in the C64 file name
to access these subdirectories (e.g. <KBD>LOAD"GAMES/ELITE",8</KBD>),
unless the '/' translation setting is turned on.<P>
For the opening of files, the file types "P" and "S" and the access modes
"R", "W" and "A" are supported. Wildcards (*,?) can be used, but you have
to remember that files in BeOS/Unix/AmigaOS directories have no determined order
and the result of <KBD>LOAD"*",8</KBD> is rather random. Files are always
overwritten even if they are not opened with "@:". Floppy commands other
than "I" and "UJ", relative files and direct block access are not
implemented. You can however read the error channel.<P>
<H3>2. .d64/x64 disk image file, setting "D64"</H3>
Most C64 programs available on the Internet and on CD-ROMs, expecially
demos and games, are stored in files with the ending ".d64". Such a file
holds all 683 blocks of a complete side of a 1541 disk, so that direct
block accesses are possible from within the emulation. However, Frodo only
supports read accesses. The path name of the disk image file must be given
in the settings window in the path entry fields of the "Drives" box.<P>
Apart from .d64 files, Frodo can also use image files of the "x64"
emulator, automatically detecting the file type.<P>
<H3>3. .t64/LYNX archive file, setting "T64"</H3>
.t64 and LYNX (.lnx) files are archive files like "tar". .t64 files are
also often found on the Internet and on CD-ROMs; LYNX is a native C64
archiver. Frodo's .t64 support is a bit special in that it doesn't treat
the .t64 file like a tape image (that's what the .t64 format was designed
for), but rather like a disk image file. .t64's are not accessed with
device number 1 (Frodo doesn't have any tape emulation), but with numbers
8..11 like a disk drive.<P>
When loading the directory with <KBD>LOAD"$",8</KBD>, Frodo creates a
listing of all files within the archive. You cannot write to .t64 or LYNX
files, they are read-only under Frodo.<P>
<H3>4. Processor-level 1541 emulation</H3>
The 1541 is an "intelligent" disk drive bearing its own CPU and memory that
can even be programmed and execute code concurrently to the C64. Frodo is
able to emulate a 1541 on this level, but as this slows down the whole
emulation notably, the 1541 processor emulation can be turned on and off
from the settings.<P>
If the 1541 processor emulation is turned on, the "Dir"/"D64" drives 8..11
are no longer available. They are replaced by a single drive with number 8
that operates in "D64" mode (regardless of the state of the type setting
for drive 8). The path name of the .d64/x64 file to be used must be given
in the path entry field of drive 8.<P>
In contrast to the standard "D64" mode, the 1541 processor emulation is
able to write to the disk. There is no way to "virtually write-protect" the
disk image file, so be careful.
</BODY>
</HTML>
+76
View File
@@ -0,0 +1,76 @@
<HTML>
<HEAD>
<TITLE>Frodo, Frodo PC and Frodo SC</TITLE>
</HEAD>
<BODY>
<H1>Frodo, Frodo PC and Frodo SC</H1>
<HR>
Frodo comes in three 'flavours' that allow you to decide between speed
and accuracy of the emulation.
<H2>The line-based emulation 'Frodo'</H2>
<B>Frodo</B> is a line-based emulation, i.e. the activities that happen
in parallel during one video line in the real C64 are emulated one after
the other for the different chips. This offers a reasonable degree of
precision of the emulation at a decent speed. There are some things that
cannot be emulated with this technique, but it works fine with about
80% of all C64 programs and it is also the fastest of the three Frodo
versions.
<HR>
<H2>The improved line-based emulation 'Frodo PC'</H2>
<B>Frodo PC</B> is also a line-based emulation but it has some improvements
over the standard Frodo:
<UL>
<LI>Code in chip registers can be executed
<LI>Correct calculation of 6510 instruction cycles
<LI>More precise CIA emulation
</UL>
Programs that don't work on the standard Frodo or that produce an
"Illegal jump to I/O space" message might work with Frodo PC. However,
Frodo PC is a bit slower.
<HR>
<H2>The single-cycle emulation 'Frodo SC'</H2>
<B>Frodo SC</B> is a special version of Frodo that doesn't work with a
line-based emulation but instead with a cycle-based one. That means that
the emulator switches between 6510 and VIC in every emulated ø2 clock
phase. By doing this, Frodo SC achieves an extreme precision (nearly all
$d011 and $d016 effects can be emulated), but at the expense of speed.
In the settings options, Frodo SC differs from Frodo/Frodo PC in only
a few points:
<UL>
<LI>The "Cycles per line" settings are not available as the timing of Frodo SC is hardcoded
<LI>The "Clear CIA IRC on write" hack is not necessary
</UL>
Apart from that, Frodo SC is operated in the same way as Frodo and also
uses the same settings. Frodo SC has only a few incompatibilities to a
real C64:
<UL>
<LI>On the left and right side of the screen, sprites are not clipped but blanked out
<LI>Sprite collisions are only detected within the visible screen area (excluding borders)
<LI>The sprite data fetch ignores the state of BA
<LI>On BA low and AEC high, the VIC always reads $f in D8-D11
<LI>Color register modifications are visible 7 pixels too late
<LI>The TOD clock should not be stopped on a read access, but be latched
<LI>The SDR interrupt is faked
<LI>Some small incompatibilities with the CIA timers
<LI>The readable SID registers are not emulated correctly
</UL>
</BODY>
</HTML>
+26
View File
@@ -0,0 +1,26 @@
<HTML>
<HEAD>
<TITLE>The future</TITLE>
</HEAD>
<BODY>
<H1>The future</H1>
<CITE>
"Ai! Palan &uacute; n&aacute; metta eldaloaron!"
</CITE>
<HR>
These are some of the things planned for future versions:<P>
<UL>
<LI>Usage of printers and modems (rather unlikely, as Frodo has not been written to run PrintShop on it <TT>:-)</TT>
<LI>A C128 and a GEOS mode
<LI>A fast, frame-based emulation mode
<LI>Port to more systems (NeXTStep/Rhapsody, Atari ST/TT/Falcon, Amiga PPC, PSX, N64)
</UL>
</PRE>
</BODY>
</HTML>
+224
View File
@@ -0,0 +1,224 @@
<HTML>
<HEAD>
<TITLE>History</TITLE>
</HEAD>
<BODY>
<H1>Revision history</H1>
<CITE>
"Those days, the Third Age of Middle-earth,<BR>
are now long past, and the shape of all lands<BR>
has been changed."
</CITE>
<HR>
This emulator started as a player routine for C64 music on the Amiga.
Versions V1.x were written in 68K assembly language, versions V2.x in a mix
of 68K assembly and C. V3.x/V4.x are portable versions written in C++.<P>
<H3>V1.x/V2.x</H3>
<UL>
<LI>Amiga 68K versions
</UL>
<H3>V3.0</H3>
<UL>
<LI>First release of BeOS/Unix version, features processor-level 1541
emulation and built-in SID emulation
</UL>
<H3>V3.0a</H3>
<UL>
<LI>Implemented SID test bits
<LI>Combined SID waveforms respect pulse width
<LI>Corrected idle state graphics display
<LI>Processor-level 1541 emulation respects .d64 error info
<LI>CPU emulation optimized (6510 and 6502 split)
<LI>VIC emulation optimized (raster counter in local variable in EmulateLine())
<LI>BeOS: Now exiting the audio subscriber with ExitStream(TRUE)
<LI>Unix: Fixed missing thread_func() declaration
<LI>Unix: getcwd(AppDirPath) was missing in main_x.i
<LI>Unix: Speed limiter works
</UL>
<H3>V3.0b</H3>
<UL>
<LI>Implemented REU emulation
<LI>Formatting disks with ID possible under processor-level 1541 emulation
<LI>Corrected and optimized SID waveform/envelope calculation (signed arithmetic)
<LI>Corrected idle state display again (ECM text)
<LI>1541 D64 mode ignores drive numbers when opening the directory
<LI>Processor-level 1541 emulation deactivates when idle
<LI>BeOS: Sound output quality is now 16 bits
<LI>Unix: Quits more cleanly, reactivates key repeat
<LI>Unix: Fixed alignment problem with text_chunky_buf in VIC.h
</UL>
<H3>V3.0c</H3>
<UL>
<LI>1541 DIR mode can load directory with "$0"
<LI>Rearranged the CPU code (more macros, less inline functions)
<LI>SID envelope generators rewritten, envelopes are now recalculated for every sample
<LI>SID calc_buffer function now takes pointer to WORD buffer
<LI>Unix: Sound for Linux
<LI>Unix: Prefs window implemented (needs Tcl/Tk)
<LI>Unix: Corrected x64 disk image detection on little-endian systems
<LI>Unix: SVGAlib support works again, accesses frame buffer directly if possible
<LI>Unix: Added support for SHM under X11
</UL>
<H3>V3.0d</H3>
<UL>
<LI>SID filter emulation implemented
<LI>SID master volume setting works again
<LI>Flags are recalculated in MOS6526::SetState()
<LI>Changed CBOOL-&gt;bool in some places
<LI>Fixed bug with char_in in MOS6510::new_config()
<LI>BeOS: Emulation thread priority lowered
<LI>Unix: Some changes for DEC Alpha
<LI>Unix: Joystick support for Linux
</UL>
<H3>V3.0e</H3>
<UL>
<LI>Removed the CBOOL data type
<LI>Unix: Sound for HP-UX
<LI>Unix: Keyboard layout matches the picture in the docs more closely
<LI>Unix: Diagonal directions of keypad joystick emulation work
<LI>Unix: +/- on numerical keypad modifies SkipFrames
<LI>Unix: F9 invokes SAM
<LI>Unix: Drive LEDs and speedometer implemented
<LI>Unix: Some changes to the GUI
<LI>Unix: Random number generator is initialized
<LI>Unix: Name of prefs file can be given as an argument
<LI>Unix: Calls XFlush() and XSync() in C64Display::Update()
</UL>
<H3>V3.0f</H3>
<UL>
<LI>Improved DIR/D64 drive reset, resetting the C64 resets the drives
<LI>Implemented 'G' command for DIR/D64 drives
<LI>Corrected translation of 0xc1..0xda characters in conv_from_64()
<LI>BeOS: Implemented smart "Insert next disk" menu item
<LI>Unix: Improved the speedometer/LED bar
<LI>Unix: Self-calibrating joystick routines
<LI>Unix: No need to enter path of 'wish' in TkGui.tcl
</UL>
<H3>V3.0g</H3>
<UL>
<LI>New T64/LYNX mode for 1541 emulation
<LI>1541fs.cpp/match() used to treat the pattern "foo" as "foo*"
<LI>1541 DIR mode uses tmpfile() for opening temporary directory files
<LI>1541 D64 mode allows wildcards for selective directory reading
<LI>Increased compatibility of processor-level 1541 emulation in various places (C64&lt;-&gt;1541 communication, VIA registers, memory map, disk change flag)
<LI>Inlined MOS6526::EmulateLine() and some small public functions of MOS6502_1541
<LI>New prefs option to enable/disable SID filter emulation
<LI>Joystick calibration is reset when joystick options change
<LI>BeOS: Self-calibrating joystick routines
</UL>
<H3>V3.0h</H3>
<UL>
<LI>Implemented SID notch filter, better resonance frequency calculation
<LI>Fixed bug with SID filter option
<LI>CIA timer B one-shot mode stops timer when counting undeflows of timer A
<LI>Implemented lightpen trigger
<LI>BeOS: Fixed for BeOS DR8, improved the GUI a bit
<LI>Unix: Some fixes to the TkGui (T64, SIDFilters, removed speed display)
<LI>Unix: Main window no longer resizable
<LI>Unix: SVGALib support works again
</UL>
<H3>V3.1</H3>
<UL>
<LI>BeOS: Joysticks work again
</UL>
<H3>V3.1a</H3>
<UL>
<LI>Frodo SC ported
<LI>Processor-level 1541 emulation supports reading GCR data, removed the faked job loop
<LI>Corrected ISB, RRA, SBX and SHA instructions
<LI>The last line of Y expanded sprites wasn't drawn
<LI>Light pen registers work
<LI>Small fixes to 1541d64/1541t64
<LI>CIA 2 PRA write: IEC lines respect DDRA
<LI>Better triangle waveform (12 bits)
<LI>SID emulation can play sampled sounds
<LI>New "Ignore SID Volume" prefs item for better sample playing
<LI>'*' on numerical keypad toggles speed limiter
<LI>BeOS: '/' on numerical keypad toggles processor-level 1541 emulation
<LI>BeOS: Safer quitting
<LI>BeOS: Option to use GameKit (screen)
<LI>BeOS: Replaced srand(system_time()) with srand(real_time_clock())
<LI>Unix: Sun makefile
</UL>
<H3>V3.1b</H3>
<UL>
<LI>Corrected SID sustain behaviour
<LI>Reading from write-only SID registers returns the last byte written to the SID
<LI>No more distortions when playing samples
<LI>Removed the "Ignore SID Volume" prefs item again
<LI>Combined SID waveforms now sampled from a 6581R4
<LI>Improved 1541 VIA timer operation
<LI>Fixed bug in 1541 head movement
<LI>Raster IRQs can be triggered by writing to $d011/$d012
<LI>Some changes for the MacOS port
<LI>Included autoconf stuff from Bernd
<LI>Frodo SC: Fixed some CIA timer bugs
</UL>
<H3>V3.1c</H3>
<UL>
<LI>Ported to AmigaOS
<LI>Fixed bug in IEC::Reset()
<LI>Fixed bug when writing to SID registers >24
<LI>The SID noise waveform should now sound the same on all platforms
<LI>Removed all calls to tolower() in SAM.cpp because of possible side-effects if tolower() is a macro
<LI>Drive LEDs are only updated once per frame
<LI>.d64/.t64 files are opened with read permissions only
<LI>Fixed bug with read_char buffering in 1541fs.cpp/1541t64.cpp
<LI>Frodo SC: Fixed memory trashing bug in MOS6569::draw_background()
<LI>Unix: Drive LEDs blink on error
<LI>Unix: Added more patches from Bernd
</UL>
<H3>V4.0</H3>
<UL>
<LI>The C64 ROM files are now included
<LI>Unix: Added SVGAlib keyboard patches from Bernd
</UL>
<H3>V4.0a</H3>
<UL>
<LI>Corrected BRK, ANE, ARR, SBX and DCP instructions
<LI>Frodo SC: Improved the CIA timers
<LI>Frodo SC: MOS6526::EmulateCycle() split into MOS6526::EmulateCycle() and MOS6526::CheckIRQs()
<LI>Frodo SC: Corrected interrupt behaviour of branch instructions
<LI>BeOS: Sound calculation is now done in stereo
</UL>
<H3>V4.1</H3>
<UL>
<LI>Integrated Win32 and RiscOS ports
<LI>Snapshot support
<LI>Added page-crossing and "borrowed" cycles in line-based CPU emulation (Frodo PC)
<LI>Added precise CIA cycles for line-based emulation (Frodo PC)
<LI>Optional fixed-point arithmetic and precomputed filters in SID.cpp
<LI>Optional dynamic alignment checks in VIC.cpp
<LI>Changed typedefs and constants (BYTE, WORD etc.)
<LI>Unix: Better configure script
<LI>Unix: Sound support for Solaris 2.x
<LI>Unix: Joystick can be toggled between port 1/2 with the NumLock key
<LI>Unix: US keyboard layouts supported
<LI>BeOS: Fixed for BeOS AA:DR9
<LI>BeOS: Can now switch between window/screen mode while the emulation is running, speeded up full screen mode
<LI>BeOS: Prefs saved in /system/settings/Frodo_settings by default
</UL>
</BODY>
</HTML>
+64
View File
@@ -0,0 +1,64 @@
<HTML>
<HEAD>
<TITLE>Installation</TITLE>
</HEAD>
<BODY>
<H1>Installation</H1>
<HR>
There are two kinds of Frodo distributions. The source distributions ("FrodoV?_?.Src.*")
contain source code that has to be compiled on your system. The binary distributions
("FrodoV?_?.<system name>.*") contain an executable that can be started directly.
<H2>Compiling under BeOS</H2>
There are BeIDE project files for Frodo ("Frodo.proj"), Frodo PC ("FrodoPC.proj")
and Frodo SC ("FrodoSC.proj"). You must rename (or copy) Src/sysconfig.h.Be
to Src/sysconfig.h first. Compilation requires the unlimited Metrowerks
linker.
<H2>Compiling under Unix</H2>
First you have to run the program "configure". This can be done simply with
the following command:<P>
<KBD>cd Src<BR>
./configure</KBD><P>
You might want to give configure optional arguments. To use SVGAlib on Linux
systems, you have to do<P>
<KBD>cd Src<BR>
./configure --without-x</KBD><P>
To select a german keyboard layout in the X11 version instead of the usual
US keyboard, do<P>
<KBD>cd Src<BR>
./configure --enable-kbd-lang-de</KBD><P>
After running configure, you may want to edit the generated Makefile. To use the SHM
extension (highly recommended for speed), add "-DX_USE_SHM" to the definition of
CFLAGS. To get sound under Solaris 2.x, add "-DSUN". Next, type<P>
<KBD>make all</KBD><P>
<H2>Compiling under AmigaOS</H2>
The makefile was written for the ADE with GCC. Other compilers have not been tested.
You must rename (or copy) Src/sysconfig.h.Amiga to Src/sysconfig.h first. Then type<P>
<KBD>cd Src<BR>
make -fMakefile.Amiga all</KBD><P>
<H2>The C64 ROM files (all systems)</H2>
Frodo looks for four ROM files named "Basic ROM", "Kernal ROM", "Char ROM"
and "1541 ROM" in the same directory Frodo is in. These files are included
in the source and binary distributions of Frodo. "Kernal ROM" is an
<A HREF="kernal.html">extended</A> version of the C64 Kernal.
</BODY>
</HTML>
+55
View File
@@ -0,0 +1,55 @@
<HTML>
<HEAD>
<TITLE>Kernal extensions</TITLE>
</HEAD>
<BODY>
<H1>Extensions of the included Kernal ROM</H1>
<HR>
The included "Kernal ROM" has some improvements/changes as compared to
an original C64 kernal:
<UL>
<LI>RAM at $fd30-$fd4f is not overwritten during reset
<LI>Default device address is 8
<LI>Default secondary address is 1
<LI>Start and end address are displayed when loading
<LI>C= key stops scrolling
<LI>Faster key repeat
<LI>Tape and RS232 routines removed
<LI>Key commands:
<UL>
<LI>F1 : <KBD>&lt;CLS&gt; LIST &lt;CR&gt;</KBD>
<LI>F2 : <KBD>SYS32768 &lt;CR&gt;</KBD>
<LI>F3 : <KBD>RUN &lt;CR&gt;</KBD>
<LI>F4 : <KBD>SYS4096*12</KBD>
<LI>F5 : <KBD>LOAD"</KBD>
<LI>F6 : <KBD>SAVE"</KBD>
<LI>F7 : <KBD>LOAD"$",8 &lt;CR&gt;</KBD>
<LI>F8 : <KBD>CLOSE7:OPEN7,8,15,"</KBD>
<LI>SHIFT-Run: <KBD>LOAD":*",8,1:RUN &lt;CR&gt;</KBD>
<LI>CTRL-D : Display directory of drive 8
<LI>CTRL-K : Read error channel of drive 8
<LI>CTRL-L : Load Basic program from RAM disk
<LI>CTRL-O : UNNEW
<LI>CTRL-U : Modifies the SAVE routine so that the RAM at $a000-$bfff can be <KBD>SAVE</KBD>d
<LI>CTRL-V : Swap Basic program with RAM disk
<LI>CTRL-W : Save Basic program to RAM disk
<LI>CTRL-X : Continue LIST command
<LI>CTRL-Z : Continue LIST command 50 lines earlier
<LI>CTRL-F1 : Swap screen with buffer 1
<LI>CTRL-F3 : Swap screen with buffer 2
<LI>CTRL-F5 : Swap screen with buffer 3
<LI>CTRL-F7 : Swap screen with buffer 4
<LI>CBM-F1 : Write screen to buffer 3
<LI>CBM-F3 : Write screen to buffer 4
<LI>CBM-F5 : Get screen from buffer 3
<LI>CBM-F7 : Get screen from buffer 4
</UL>
<LI>Startup message shows "BASIC X2"
</UL>
</BODY>
</HTML>
+140
View File
@@ -0,0 +1,140 @@
<HTML>
<HEAD>
<TITLE>Keyboard layout</TITLE>
</HEAD>
<BODY>
<H1>Keyboard layout</H1>
<HR>
The keyboard layout closely resembles that of a real C64. The individual
rows of the keyboard are mapped as follows (american keyboard):
<PRE>
&lt;- 1 2 3 4 5 6 7 8 9 0 + -
Q W E R T Y U I O P @ *
A S D F G H J K L : ;
Z X C V B N M , . /
</PRE><P>
In addition, the following keys are used:
<PRE>
Esc - RUN/STOP
Backspace - INS/DEL
Return - RETURN
Enter - RETURN
Shift keys - SHIFT
Caps lock - SHIFT LOCK
F1-F8 - F1-F8
</PRE><P>
Special keys under BeOS:
<PRE>
\ - ^
Insert - Shift-INS/DEL
Delete - INS/DEL
Home - CLR/HOME
End - &pound;
Page Up - &pound;
Page Down - =
Menu Keys - C=
Ctrl Left - CTRL
Ctrl Right - C=
F11 - RESTORE
F12 - C64 Reset
</PRE><P>
Special keys under Unix:
<PRE>
\ - ^
Insert - Shift-INS/DEL
Delete - INS/DEL
Home - CLR/HOME
End - &pound;
Page Up - ^
Page Down - =
Alt Keys - C=
Ctrl Left - CTRL
Ctrl Right - C=
F9 - Start SAM
F10 - Quit Frodo
F11 - RESTORE
F12 - C64 Reset
</PRE><P>
Special keys under AmigaOS:
<PRE>
\ - &pound;
Delete - CLR/HOME
( (keypad) - ^
) (keypad) - =
Alt Keys - C=
Ctrl - CTRL
F9 - RESTORE
F10 - C64 Reset
</PRE><P>
Special keys under RISC OS:
<PRE>
F5 - Toggle sound emulation mode
F6 - Enter SAM
F7 - RESTORE
F8 - Reset
Copy - Toggle pause
PageUp - Increase SkipFrames
PageDown - Decrease SkipFrames
num/ - Toggle 1541 emulation mode
num* - Toggle speed limiter
num+/- - +/-
Alt - CBM
ScrollLock - On: force single tasking, else multitasking
</PRE><P>
Apart from that the function keys are mapped differently under RISC OS. (F1,F2,F3,F4) maps
to the C64's (F1,F3,F5,F7), you get (F2,F4,F6,F8) by pressing shift like on a real C64.<P>
So the famous key combination RUN/STOP-RESTORE must be typed as Esc-F11 (Esc-F9 under AmigaOS).
But you don't have to thrash the F11 key the same way as the RESTORE key on
the original C64. <TT>:-)</TT><P>
The cursor (arrow) keys work as expected. I.e. "cursor up" corresponds to
"Shift-cursor down" on the C64. The same applies to the function keys F2,
F4, F6 and F8.
The numerical keypad emulates a joystick in port 1 or 2, depending on the
state of the Num Lock (Num Lock off: port 2, Num Lock on: port 1):<P>
<PRE>
7 8 9
^
|
4 5 6
&lt;-- Fire --&gt;
|
v
1 2 3
0
Fire
</PRE><P>
Keyboard joysticks are handled differently under RISC OS:
<UL>
<LI>NumLock on: only joystick 1 active, mapped to port 2. NumLock off: both joysticks active, 1 mapped to port 1, 2 mapped to port 2.
<LI>Joystick keys can be defined freely. Defaults are: joystick 1: (1 2 3 . enter) on the numerical keypad, joystick 2: (z x f c g).
</UL><P>
The '+' and '-' keys on the numerical keypad increase and decrease the
"Draw every n-th frame" setting on the fly. The '*' on the numerical keypad
toggles the "Limit Speed" option. The '/' on the numerical keypad toggles
the processor-level 1541 emulation.
</BODY>
</HTML>
+37
View File
@@ -0,0 +1,37 @@
<HTML>
<HEAD>
<TITLE>Copyright and distribution</TITLE>
</HEAD>
<BODY>
<H1>Copyright and distribution</H1>
<HR>
The program "Frodo", this manual and the source code may be freely
distributed as long as they remain unchanged (archiving and packing is
allowed) and all files are included. You must not make any profit by
selling Frodo, especially the price of a disk containing Frodo may not
exceed US$ 5,- (or equivalent amounts in other currencies). Please feel
free to distribute Frodo via bulletin board systems and networks and as
part of shareware/freeware CD-ROMs.<P>
Anyone using this program agrees to incur the risk of using it for himself.
In no way can the author be held responsible for any damage directly or
indirectly caused by the use or misuse of this manual and/or the program.<P>
The rights on the source code remain at the author. It may not - not even
in parts - used for commercial purposes without explicit written permission
by the author. Permission to use it for non-commercial purposes is hereby
granted als long as my copyright notice remains in the program. You are not
allowed to use the source to create and distribute a modified version of
Frodo.<P>
Frodo is not designed, intended, or authorized for use as a component in
systems intended for surgical implant within the body, or other
applications intended to support or sustain life, or for any other
application in which the failure of Frodo could create a situation where
personal injury or death may occur.<P>
</BODY>
</HTML>
+50
View File
@@ -0,0 +1,50 @@
<HTML>
<HEAD>
<TITLE>Overview</TITLE>
</HEAD>
<BODY>
<H1>Overview</H1>
<CITE>
"&Uacute;-queta i y&eacute;ni av&aacute;nier alye,<BR>
&uacute;-queta i cirya n&aacute; vanwa!"
</CITE>
<HR>
<STRONG>Frodo</STRONG> is a freeware C64 emulator for BeOS, Unix, MacOS, AmigaOS,
Win32 and RiscOS systems and the world's first C64 emulator not bearing a
"64" in its name. <TT>:-)</TT> (No, it has absolutely nothing to do with
frodo.hiof.no, that's a pure coincidence.)<P>
Frodo was developed to reproduce the graphics of games and demos better
than the existing C64 emulators. Therefore Frodo has relatively high system
requirements: It should only be run on systems with at least a
PowerPC/Pentium/68060. But on the other hand, Frodo can display raster
effects correctly that only result in a flickering mess with other
emulators.<P>
Frodo comes in three <A HREF="flavours.html">flavours</A>: The "normal" Frodo
with a line-based emulation, the improved line-based emulation "Frodo PC",
and the single-cycle emulation Frodo SC that is slower but far more
compatible.<P>
In addition to a precise 6510/VIC emulation, Frodo features a processor-level
1541 emulation that is even able to handle about 95% of all fast loaders.
There is also a faster 1541 emulation for four drives in .d64/x64 disk
images, .t64/LYNX archives, or directories of the host system.<P>
Frodo runs on these systems:<P>
<UL>
<LI>BeBox or PowerMac with BeOS Preview Release
<LI>Unix systems with X11R6 or Linux/SVGAlib (sound only under Linux, HP-UX and Solaris 2.x)
<LI>68k or PPC Macintosh with System 7.5
<LI>Amiga/DraCo with 68040/68060, AmigaOS 3.0 and a graphics card (AHI V3 required for sound)
<LI>Intel x86 system running Windows NT/95
<LI>Acorn computers with RiscOS 3
</UL>
</BODY>
</HTML>
+282
View File
@@ -0,0 +1,282 @@
<HTML>
<HEAD>
<TITLE>SAM</TITLE>
</HEAD>
<BODY>
<H1>SAM</H1>
<CITE>
"Frodo! Mr.Frodo, my dear!" cried Sam,<BR>
tears almost blinding him. "It's Sam, I've come!"
</CITE>
<HR>
Frodo has a built-in machine language monitor that can be activated at any
time by pressing F9 (Unix) or selecting the appropriate menu item (BeOS/AmigaOS/MacOS):
SAM (Simple Assembler and Monitor). It provides full access to the memory
and hardware of the emulated C64 and 1541 (under BeOS, you must only start
SAM if you launched Frodo from the Shell).<P>
SAM is controlled by a command-based interface, all numbers are in hex.
With the command "h" you can display a list of all commands. The command
"x" quits SAM and returns to Frodo.<P>
SAM has two modes of operation, indicated by the prompt "C64>" or "1541>".
You can switch between them with the "64" and "1541" commands. In "C64"
mode, all commands that access memory or the CPU operate on the memory/CPU
of the emulated C64. In "1541" mode, they operate on the emulated 1541
(this is only useful if the processor-level 1541 emulation is turned
on).<P>
All commands that access the C64 memory use the memory configuration set
with the "k" command. On starting up SAM, the configuration is set to the
one the processor is in. Accesses from within SAM have the same effect as
accesses of the emulated processor. This affects especially the I/O
registers: a memory dump of $dc00-$de00 clears pending CIA interrupts as
SAM reads from $dc0d and $dd0d. With the "v" commands, you can examine the
state of the I/O chips without modifying the state of the emulation.<P>
In all places where SAM expects a number (except in the assembler) you can
also enter an expression of hex numbers containing '+', '-', '*', '/' and
parens. Commands that create a longer output can be interrupted with
Ctrl-C.<P>
Here is a description of all commands ('[]' marks a parameter than can be
left out, '{}' marks a parameter that can be repeated many times. If a
[start] parameter is left out, SAM continues at the address where the last
command stopped):<P>
<PRE>
a [start] Assemble
</PRE><P>
starts the assembler at the address "start". SAM always prints the address
where the next instruction will be written to. The syntax of the
instructions conforms to the standard except for shift/rotation
instructions in the "accumulator" addressing mode. Those have to be entered
without operand, e.g. "lsr" instead of "lsr a". Entering a blank line quits
the assembler and returns to the command mode of SAM.<P>
<PRE>
b [start] [end] Binary dump
</PRE><P>
displays the memory from "start" to "end" byte-wise binary. With this
command, you can view character sets.<P>
<PRE>
c start end dest Compare memory
</PRE><P>
compares the memory in the range from "start" to (and including) "end"
with the memory at "dest". The addresses of all different bytes and the
total number of differences (decimal) are printed.<P>
<PRE>
d [start] [end] Disassemble
</PRE><P>
disassembles the memory from "start" to "end". Undocumented opcodes are
markes with a star '*'.<P>
<PRE>
e Show interrupt vectors
</PRE><P>
shows the currently active interrupt vectors of the 6510 (C64) or 6502
(1541) and (in C64 mode, if the Kernal ROM is mapped in) of the Kernal.<P>
<PRE>
f start end byte Fill memory
</PRE><P>
fills the memory in the range from "start" to (and including) "end" with
the value "byte".<P>
<PRE>
i [start] [end] ASCII/PETSCII dump
</PRE><P>
shows the memory from "start" to "end" as ASCII/PETSCII characters.<P>
<PRE>
k [config] Show/set C64 memory configuration
</PRE><P>
"k" without parameters shows the memory configuration that is set for SAM,
"k" with parameter modifies it. On exiting SAM, the configuration set with
the processor port is reactivated. The memory configuration has no effect
in 1541 mode. The 8 possible configurations are:
<PRE>
# $a000-$bfff $d000-$dfff $e000-$ffff
----------------------------------------
0 RAM RAM RAM
1 RAM Char ROM RAM
2 RAM Char ROM Kernal ROM
3 Basic ROM Char ROM Kernal ROM
4 RAM RAM RAM
5 RAM I/O RAM
6 RAM I/O Kernal ROM
7 Basic ROM I/O Kernal ROM
</PRE>
<PRE>
l start "file" Load data
</PRE><P>
loads the contents of the specified file into memory starting from address
"start". The file name must be enclosed in quotation marks even if it
contains no spaces. This command cannot be used to load C64 programs as
it doesn't respect the embedded load address in the programs.<P>
<PRE>
m [start] [end] Memory dump
</PRE><P>
displays the memory from "start" to "end" as hexadecimal numbers and ASCII
characters.<P>
<PRE>
n [start] [end] Screen code dump
</PRE><P>
displays the memory from "start" to "end" as ASCII characters, interpreting
each byte as a screen code of the standard character set.<P>
<PRE>
o ["file"] Redirect output
</PRE><P>
When a file name is specified, all following output is redirected to this
file. The file name must be enclosed in quotation marks even if it contains
no spaces. Entering "o" without parameters closes the file and directs the
output into the window of SAM again.<P>
<PRE>
p [start] [end] Sprite dump
</PRE><P>
displays the memory from "start" to "end" binary with three bytes per line.
With this command, you can display sprite data.<P>
<PRE>
r [reg value] Show/set CPU registers
</PRE><P>
"r" without parameters shows all 6510 (C64) or 6502 (1541) registers and
flags and the instruction at the address specified by the program counter.
For the 6510, "DR" and "PR" are the data direction register and data
register of the processor port. To modify a register, give its name ("reg")
and the new value ("value") as parameters.<P>
<PRE>
s start end "file" Save data
</PRE><P>
writes the memory from "start" to (and including) "end" to the specified
file. The file name must be enclosed in quotation marks even if it contains
no spaces. This command cannot be used to save C64 programs as it doesn't
save a load address in the file.<P>
<PRE>
t start end dest Transfer memory
</PRE><P>
transfers the memory from "start" to (and including) "end" to "dest".
Source and destination may overlap.<P>
<PRE>
vc1 View CIA 1 state
</PRE><P>
shows the state of CIA 1 ($dc00).<P>
<PRE>
vc2 View CIA 2 state
</PRE><P>
shows the state of CIA 2 ($dd00).<P>
<PRE>
vf View floppy state
</PRE><P>
shows the state of the processor-level 1541 emulation.<P>
<PRE>
vs View SID state
</PRE><P>
shows the state of the SID.<P>
<PRE>
vv View VIC state
</PRE><P>
shows the state of the VIC.<P>
<PRE>
x Return to Frodo
</PRE><P>
quits SAM and returns to Frodo.<P>
<PRE>
: addr {byte} Modify memory
</PRE><P>
writes the space-separated values "byte" into memory starting at "addr".<P>
<PRE>
1541 Switch to 1541 mode
</PRE><P>
switches to 1541 mode. All commands that access memory or the CPU will then
operate on the emulated 1541 (processor-level).<P>
<PRE>
64 Switch to C64 mode
</PRE><P>
switches to C64 mode. All commands that access memory or the CPU will then
operate on the emulated C64.<P>
<PRE>
? expression Calculate expression
</PRE><P>
calculates the value of the given expression and displays it in decimal
and hexadecimal.<P>
</BODY>
</HTML>
+167
View File
@@ -0,0 +1,167 @@
<HTML>
<HEAD>
<TITLE>Settings</TITLE>
</HEAD>
<BODY>
<H1>Settings</H1>
<HR>
Under BeOS, the settings window appears directly after starting Frodo, or
by selecting the "Settings..." menu item in the running emulation. Under
Unix, the settings window is permanently visible.<P>
With <B>"Sprite display"</B>, you can switch the display of sprites on and
off. Turning them off speeds up the emulation a little when there are a lot
of sprites on the screen.<P>
<B>"Sprite collisions"</B> determines whether collisions between sprites
and between sprites and graphics should be detected. Turning off collisions
will make you invincible in some games (sadly, your enemies are likely to
become invincible, too <TT>:-/</TT>.<P>
<B>"Joystick on Port 1/2"</B> specifies on which ports you have real
joysticks connected (as opposed to the <A HREF="keyboard.html">joystick
emulation</A> on the numerical keypad). Joysticks are only supported under
BeOS, Linux, RiscOS and AmigaOS (only one joystick). The port numbers relate
to the host machine ports. On the BeBox, port 1 is the upper one and port 2
the lower one. You should only turn on the ports to which you have actually
joysticks connected, or the keyboard will behave erratically. Frodo has an
automatic joystick calibration. If you plug in a new joystick or change the
joystick settings, you should first move the joystick once in each direction.<P>
With <B>"Swap joysticks"</B> you can swap the assignment of the joystick
ports of the host machine to the C64 ports without having to plug out and
in your joysticks. E.g. if a C64 game is using a joystick on C64 port 1 you
can simply activate "Swap joysticks" and use a joystick in port 2 on your
machine to play the game.<P>
When the field <B>"Limit speed"</B> is active, the emulation is slowed down
when its relative speed exceeds 100%. If you set the value in "Every (n)th
frame" so that the speed is just over 100% and activate the speed limiter,
the emulation always runs at the original C64 speed, with the highest
possible precision.<P>
With the setting <B>"Fast Reset"</B> you can disable the memory test that
is normally performed by the C64 on a reset. Under emulation, the memory
test is not necessary and the reset (F12) becomes much faster when it is
disabled.<P>
The setting <B>"Clear CIA ICR on write"</B> is necessary to make some
programs (such as the games "Gyruss" and "Motos") run that would otherwise
hang in an endless interrupt loop because they use an unusual technique to
acknowledge CIA interrupts (sometimes even without the programmer knowing
it). It should normally be turned off.<P>
The <B>"SID Filters"</B> field enables the emulation of the SID filters.
The sound emulation is slightly faster, but worse, when the filters are
disabled.<P>
<B>"Doublescan lines"</B> is only available under BeOS for the "Screen"
display type. It removes the black lines between scanlines, but makes
the emulation a bit slower.<P>
<B>"Cycles per line (CPU)"</B> and <B>"Cycles per Bad Line (CPU)"</B> set
the number of clock cycles available to the CPU per normal raster line and
per Bad Line. If a program is showing flickering lines or graphical flaws
you should try to slightly alter both values. For "Bruce Lee" you must
enter "62" for the "Cycles per line (CPU)".<P>
With <B>"Cycles per line (CIA)"</B> you can control the speed of the CIA
timers. Entering a higher value increases the frequency of cursor blinking
and key repeat. Some programs don't run correcly with the default value
(e.g. "Ballblazer" which needs a value of 65).<P>
<B>"Cycles per line (1541)"</B> sets the number of cycles available to the
1541 processor emulation per raster line. There is normally no need to
change this value. This setting has no effect if 1541 processor emulation
is turned off.<P>
The settings for the four "cycles" coming closest to an original PAL C64
are (63, 23, 63, 64).<P>
With <B>"Draw every n-th frame"</B> you can select if Frodo should skip
frames when displaying the C64 graphics. The normal setting is "1", that
is, every frame (every simulated raster beam sweep) is recalculated. If you
change this to "2", for example, then only every second frame is
calculated, immensely speeding up the display, though some raster effects
may look a bit jerky. This setting can also be changed while the emulation
is running with the '+' and '-' keys on the numerical keypad.<P>
<B>"Display type"</B> is only available under BeOS. You can choose between
running the emulation in a window or in full-screen mode (using the
Game Kit).<P>
The <B>"SID emulation type"</B> controls the sound emulation and has two
settings: <EM>"None"</EM> and <EM>"Digital"</EM>. <EM>"None"</EM> means no
sound (faster), <EM>"Digital"</EM> turns on the digital sound emulation
(only available under BeOS, Linux and HP-UX). Future versions of Frodo may
support more emulation types such as the use of a real SID chip on an
expansion card or across a network.<P>
<B>"REU size"</B> sets the size of the REU (RAM Expansion Unit) emulated by
Frodo or turns the REU emulation off ("None"). Only few programs actually
use the REU (operating systems like ACE and GEOS, and some utilities).<P>
In the box <B>"Drives"</B>, there are four rows, each corresponding to one
of four emulated 1541 drives with the drive numbers 8, 9, 10 and 11. For
every drive, there is a <EM>popup control</EM>, a <EM>path entry field</EM>
and a <EM>button</EM>:<P>
With the <B>popup control</B>, you select the emulation mode of the
respective disk drive (for more detailed information, see <A
HREF="files.html">here</A>). There are three choices: <EM>"Dir"</EM>,
<EM>"D64"</EM> and <EM>"T64"</EM>. <B>"Dir"</B> emulates the drive in a
directory of the BeOS/Unix file system. <B>"D64"</B> accesses a .d64 or x64
disk image file. <B>"T64"</B> is the setting for accessing a .t64 or C64
LYNX archive file.<P>
The <B>path entry field</B> holds either the path name of the directory for
the "Dir" mode, the path name of the .d64/x64 image file for the "D64"
mode, or the path name of the .t64/LYNX archive file for the "T64" mode.
Under BeOS, you may also drop Tracker icons to the entry field.<P>
The <B>button labeled "B"</B> opens a file panel/requester for a more
comfortable selection of directories and .d64/x64/.t64/LYNX files.<P>
With <B>"Map '/' &lt;-&gt; '\' in file names"</B> you control whether the
'/' in C64 filenames will be translated to '\' and vice versa for "Dir"
mode drives. The '/' character is used to access subdirectories under
BeOS/Unix, but as the C64 doesn't have subdirectories, it's a valid part of
a C64 file name. This is a problem if a program wants to create a file with
'/' in it as BeOS/Unix would interpret the part before the '/' as a
directory name and, finding no such directory, would return an error and
the operation would fail. Now simply activate this gadget and all '/'s will
transparently be translated into '\', so in directory listings the '/' will
still appear. If you turn off this option, you can of course use the '/' to
access files in subdirectories from the C64.<P>
If <B>"Enable 1541 processor emulation"</B> is turned on, the four emulated
1541s are disabled and replaced by a single 1541 emulation (drive 8) that
only operates on .d64/x64 files, but emulates the 1541 processor and is
compatible with about 50% of all fast loaders. However, it slows down the
emulation considerably. If you have a .d64 with a program that doesn't load
with the normal emulation (see above), you may have better luck with the
1541 processor emulation instead. The path name of the disk image file to
be used must be entered into the path entry field of drive 8.<P>
<H2>BeOS/AmigaOS</H2>
Clicking <B>"Start"/"OK"</B> will start the actual emulation (resp. return
to it) and <B>"Quit"/"Cancel"</b> will discard your changes to the settings
and quit Frodo (resp. discard the changes and return to the emulation).<P>
With the menu items <B>"Open..."</B>, <B>"Save"</B>, <B>"Save As..."</B>
and <B>"Revert"</B> you can load and save the settings from and to
arbitrary files.<P>
<H2>Unix</H2>
Clicking <B>"Apply"</B> applies the settings of the "Cycles" controls to
the running emulation (all other settings are applied automatically).
<B>"Defaults"</B> reverts to the default settings, <B>"Quit"</B> quits
Frodo and <B>"Reset"</B> resets the emulation.<P>
</BODY>
</HTML>
+102
View File
@@ -0,0 +1,102 @@
<HTML>
<HEAD>
<TITLE>System specific notes</TITLE>
</HEAD>
<BODY>
<H1>System specific notes</H1>
<HR>
<H2>BeOS</H2>
Frodo may be started from the shell or from the Tracker. When started from
the shell, Frodo accepts a single argument: The name of a preferences file
to load instead of the default "Frodo Prefs".<P>
At first, the window for the emulation <A HREF="settings.html">settings</A>
appears. The actual emulation is started by a click on "Start". Then the <A
HREF="emulwindow.html">emulation</A> window appears in which the C64
startup message is displayed.<P>
You can quit from the running emulation by selecting the "Quit" menu
item.<P>
Frodo should be run in a 256-color workspace for maximum speed.<P>
Sampled sounds are only played correctly if "Limit Speed" is on and "Draw every
n-th frame" is set to "1" and if the emulation can sustain 100% speed.<P>
<H2>Unix</H2>
Frodo accepts a single argument when started from the shell: The name of a
preferences file to load instead of the default "~/.frodorc".<P>
First the <A HREF="emulwindow.html">emulation</A> window appears in which
the C64 startup message is displayed. If you have Tcl/Tk 4.1 installed
and the file "TkGui.tcl" is in the current directory, a second window opens
for the emulation <A HREF="settings.html">settings</A>.<P>
If you have no Tcl/Tk or are using the SVGAlib version under Linux, you
have to copy the included "Frodo Prefs" file to "~/.frodorc" and edit it manually
(read "Prefs.cpp" to find out about the syntax of the settings file).
You can quit from the running emulation by pressing F10.<P>
Sound is currently only supported under Linux, HP-UX and Solaris 2.x. Sampled
sounds are only played correctly if "Limit Speed" is on and "Draw every n-th frame"
is set to "1" and if the emulation can sustain 100% speed.<P>
<H2>MacOS</H2>
Frodo is started by double-clicking its icon.<P>
You can quit from the running emulation by selecting the "Quit" menu
item.<P>
Frodo should be run with 8-bit color depth. The "DIR" 1541 emulation mode
and SAM are currently not implemented.<P>
See the file "MacFrodo Notes" for more information.<P>
<H2>AmigaOS</H2>
Frodo should be started from the shell. When started from the shell, Frodo
accepts a single argument: The name of a preferences file to load instead
of the default "Frodo Prefs".<P>
At first, the window for the emulation <A HREF="settings.html">settings</A>
appears. The actual emulation is started by a click on "OK". Then the <A
HREF="emulwindow.html">emulation</A> window appears in which the C64
startup message is displayed.<P>
You can quit from the running emulation by selecting the "Quit" menu
item.<P>
Frodo opens its windows on the default public screen. This screen should
be a 256-color screen on a graphics card, otherwise the emulation will
be very slow.<P>
The AmigaOS version is somewhat experimental. You need AHI to get sound,
but the sound emulation is not very good. It might be better to leave the
SID emulation turned of for now. Only one joystick (on port 2) is supported.<P>
<H2>RISC OS</H2>
Frodo is started by double-clicking its icon. The shared resources stored in
!FrodoRsrc must have been seen by the filer first, otherwise the program will
abort with an error. Frodo and FrodoPC need 1344kB, FrodoSC 832kB to run.<p>
Frodo can be controlled with the menus and the <a href="emulwindow.html">emulator
pane</a>. You can load snapshots and native C64-files (which usually have the
filetype &64) by dragging them to the emulator window.<p>
Frodo can be run in any colour-depth, although 16bpp and especially 32bpp are
noticably slower than the others. You can toggle between two display sizes
using the pane.<p>
For a lot more information see the file !Help supplied in the RISC OS
distribution.
</BODY>
</HTML>
+61
View File
@@ -0,0 +1,61 @@
<HTML>
<HEAD>
<TITLE>Technical info</TITLE>
</HEAD>
<BODY>
<H1>Technical info</H1>
<CITE>
"Known?" said Gandalf.<BR>
"I have known much that only the Wise know, Frodo."
</CITE>
<HR>
Frodo tries to exactly imitate C64 hardware features. Now the 64's hardware
(esp. the graphics chip "VIC-II") has a rather simple design resulting in
many of the internal processes coming to the "outside". So there are lots
of "undocumented features" you can do effects with the designers never
dared to dream about.<P>
Frodo uses a line-by-line emulation, i.e. the function of the VIC and the
processor (6510) are emulated for one raster line of the C64 screen at
times. In practice, Frodo runs VIC and 6510 alternately for 63 simulated
cycles each (corresponding to one raster line). At first, it emulates the
processor for 63 cycles, then switches over to the VIC that paints one
pixel row to the screen, then again 63 cycles processor, and so on... If
the 1541 processor emulation is turned on, 6510 and 6502 (in the 1541)
instructions are executed by Frodo in an interleaved fashion.<P>
Even though this is a heavy simplification of the processes in a real C64,
it lets you perfectly emulate many graphical effects possible on the C64,
e.g. FLD, DYCP, hyperscreen and many more. But this method has one big
disadvantage: Changes made to VIC registers by the processor in the middle
of a raster line will only take effect at the start of the next line. E.g.
you can't change the border color in the middle of a line, the color change
takes place in the next line. Therefore, very sophisticated techniques
depending on the exact position of a register change can't be emulated. For
instance, it is no problem to open the top and bottom border, but opening
the left and right border is impossible (and therefore not implemented in
the emulation).<P>
Frodo SC goes one step further by switching between VIC and 6510 in every
cycle and precisely emulating the internal functions. Modifications to
VIC registers become visible immediately in the next clock phase and
therefore it can even emulate effects that depend on the exact position
of a register change within a raster line, e.g. special FLI routines,
opening the left/right border, linecrunch, DMA delay, multiple repeated
sprite lines and executing programs in open address spaces ($de00-$dfff)
and in the color RAM. The 6510 emulation is also more precise and does
the same memory accesses as the real 6510, even the "unnecessary" ones
that come from design weaknesses of the 6510 and are not needed for the
function of single opcodes (e.g. in an instruction sequence like
INX:INX:INX:INX, the 6510 reads every opcode twice).<P>
A detailed technical description of the VIC-II can be found in an
<A HREF="http://www.uni-mainz.de/~bauec002/VIC-Article.gz">article</A>
I wrote (32k gzipped).
</BODY>
</HTML>
+36
View File
@@ -0,0 +1,36 @@
<HTML>
<HEAD>
<TITLE>Credits</TITLE>
</HEAD>
<BODY>
<H1>Credits</H1>
<CITE>
"The Silmaril as lantern light<BR>
And banner bright with living flame<BR>
To gleam thereon by Elbereth<BR>
Herself was set, who thither came."
</CITE>
<HR>
The following persons deserve special thanks from me as they made a
significant contribution to the development of Frodo:<P>
<UL>
<LI><A HREF="mailto:[email protected]">Andreas Boose</A> and <A HREF="mailto:[email protected]">Marko M&auml;kel&auml;</A> who provided me with precious information on the VIC and on the C64 in general
<LI><A HREF="mailto:[email protected]">Bernd Schmidt</A> and <A HREF="mailto:[email protected]">Lutz Vieweg</A> who ported Frodo to Unix systems
<LI><A HREF="mailto:[email protected]">Richard Bannister</A>, <A HREF="mailto:[email protected]">Ernesto Corvi</A> and <A HREF="mailto:[email protected]">Andreas Varga</A> who ported Frodo to MacOS
<LI><A HREF="mailto:[email protected]">J. Richard Sladkey</A> who ported Frodo to Windows NT/95
<LI><A HREF="mailto:[email protected]">Andreas Dehmel</A> who ported Frodo to RISC OS
<LI><A HREF="mailto:[email protected]">Marc Chabanas</A> for the Solaris sound routines
<LI><A HREF="mailto:[email protected]">Peter Stegemann</A> and <A HREF="mailto:[email protected]">J&ouml;rg Stegemann</A> who did extensive beta-testing
<LI><A HREF="mailto:[email protected]">Tinic Urou</A> for designing the Frodo logo and for the GameKit code
<LI><A HREF="mailto:[email protected]">Jake Hamby</A>, Wolfgang Lorenz and <A HREF="mailto:[email protected]">Erik Lindberg</A> for bugfixes and improvements
<LI>J.R.R.Tolkien for the suggestion for the name of the emulator
<LI>All the people who have sent me suggestions and comments
</UL>
</BODY>
</HTML>
+24
View File
@@ -0,0 +1,24 @@
<HTML>
<HEAD>
<TITLE>What's new?</TITLE>
</HEAD>
<BODY>
<H1>What's new in V4.1?</H1>
<HR>
The most important changes from V4.0 are:
<UL>
<LI>Ability to save/load the emulator state to/from snapshot files
<LI>Ported to Win32 and Acorn RiscOS
<LI>Added <A HREF="flavours.html">Frodo PC</A>, an improved line-based emulation
<LI>Sound support for Solaris 2.x
<LI>Fixed several bugs in the 6510/6526 emulation
</UL>
For the tons of other small changes and bug fixes, please look <A HREF="history.html">here</A>.<P>
</BODY>
</HTML>
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Executable
+1018
View File
File diff suppressed because it is too large. Load diff