fuse-for-macosx-commits Mailing List for Fuse for macOS (Page 12)
Brought to you by:
fredm
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(9) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(24) |
Feb
(11) |
Mar
(6) |
Apr
(48) |
May
(9) |
Jun
(38) |
Jul
(33) |
Aug
(15) |
Sep
|
Oct
(3) |
Nov
(6) |
Dec
(3) |
2008 |
Jan
|
Feb
(24) |
Mar
(11) |
Apr
(22) |
May
(7) |
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
(3) |
Nov
(18) |
Dec
(23) |
2009 |
Jan
(16) |
Feb
(1) |
Mar
(1) |
Apr
|
May
|
Jun
(7) |
Jul
(4) |
Aug
(11) |
Sep
(9) |
Oct
|
Nov
(3) |
Dec
(2) |
2010 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
(2) |
May
(8) |
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(9) |
Nov
|
Dec
(8) |
2011 |
Jan
|
Feb
|
Mar
|
Apr
(7) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(5) |
Nov
(2) |
Dec
|
2012 |
Jan
(4) |
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
(10) |
Nov
(13) |
Dec
(11) |
2013 |
Jan
(4) |
Feb
(1) |
Mar
(8) |
Apr
(8) |
May
(16) |
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(4) |
2014 |
Jan
|
Feb
(6) |
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
(6) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(10) |
Jun
(9) |
Jul
(6) |
Aug
(5) |
Sep
(3) |
Oct
(6) |
Nov
(5) |
Dec
|
From: <fr...@us...> - 2008-12-04 20:02:11
|
Revision: 562 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=562&view=rev Author: fredm Date: 2008-12-04 20:02:08 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Remove incorrect release tag. Removed Paths: ------------- tags/Release-0_10_0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 15:42:53
|
Revision: 561 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=561&view=rev Author: fredm Date: 2008-12-04 15:42:30 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Revert confused commit. Added Paths: ----------- vendor/fuse-emulator/0.10.0/ vendor/fuse-emulator/0.10.0/debian/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/changelog vendor/fuse-emulator/0.10.0/debian/fuse-emulator/compat vendor/fuse-emulator/0.10.0/debian/fuse-emulator/control vendor/fuse-emulator/0.10.0/debian/fuse-emulator/copyright vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.docs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.manpages vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/00list vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_configure.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_man.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_noroms.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/rules vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/changelog vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/compat vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/control vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/copyright vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/docs vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/rules vendor/fuse-emulator/0.10.0/debian/lib765/ vendor/fuse-emulator/0.10.0/debian/lib765/changelog vendor/fuse-emulator/0.10.0/debian/lib765/compat vendor/fuse-emulator/0.10.0/debian/lib765/control vendor/fuse-emulator/0.10.0/debian/lib765/copyright vendor/fuse-emulator/0.10.0/debian/lib765/dirs vendor/fuse-emulator/0.10.0/debian/lib765/docs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-3.dirs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-3.install vendor/fuse-emulator/0.10.0/debian/lib765/lib765-dev.dirs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-dev.install vendor/fuse-emulator/0.10.0/debian/lib765/rules vendor/fuse-emulator/0.10.0/debian/libdsk/ vendor/fuse-emulator/0.10.0/debian/libdsk/changelog vendor/fuse-emulator/0.10.0/debian/libdsk/compat vendor/fuse-emulator/0.10.0/debian/libdsk/control vendor/fuse-emulator/0.10.0/debian/libdsk/copyright vendor/fuse-emulator/0.10.0/debian/libdsk/dirs vendor/fuse-emulator/0.10.0/debian/libdsk/docs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk-dev.dirs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk-dev.install vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk3.dirs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk3.install vendor/fuse-emulator/0.10.0/debian/libdsk/rules vendor/fuse-emulator/0.10.0/debian/libspectrum/ vendor/fuse-emulator/0.10.0/debian/libspectrum/changelog vendor/fuse-emulator/0.10.0/debian/libspectrum/compat vendor/fuse-emulator/0.10.0/debian/libspectrum/control vendor/fuse-emulator/0.10.0/debian/libspectrum/copyright vendor/fuse-emulator/0.10.0/debian/libspectrum/dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/docs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.install vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.manpages vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum5.dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum5.install vendor/fuse-emulator/0.10.0/debian/libspectrum/rules vendor/fuse-emulator/0.10.0/fuse/ vendor/fuse-emulator/0.10.0/fuse/AUTHORS vendor/fuse-emulator/0.10.0/fuse/COPYING vendor/fuse-emulator/0.10.0/fuse/ChangeLog vendor/fuse-emulator/0.10.0/fuse/Makefile.am vendor/fuse-emulator/0.10.0/fuse/PORTING vendor/fuse-emulator/0.10.0/fuse/README vendor/fuse-emulator/0.10.0/fuse/THANKS vendor/fuse-emulator/0.10.0/fuse/acinclude.m4 vendor/fuse-emulator/0.10.0/fuse/autogen.sh vendor/fuse-emulator/0.10.0/fuse/ay.c vendor/fuse-emulator/0.10.0/fuse/ay.h vendor/fuse-emulator/0.10.0/fuse/bitmap.h vendor/fuse-emulator/0.10.0/fuse/compat/ vendor/fuse-emulator/0.10.0/fuse/compat/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/amiga/ vendor/fuse-emulator/0.10.0/fuse/compat/amiga/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/amiga/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c vendor/fuse-emulator/0.10.0/fuse/compat/dirname.c vendor/fuse-emulator/0.10.0/fuse/compat/getopt.c vendor/fuse-emulator/0.10.0/fuse/compat/getopt.h vendor/fuse-emulator/0.10.0/fuse/compat/getopt1.c vendor/fuse-emulator/0.10.0/fuse/compat/mkstemp.c vendor/fuse-emulator/0.10.0/fuse/compat/morphos/ vendor/fuse-emulator/0.10.0/fuse/compat/morphos/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/morphos/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/ vendor/fuse-emulator/0.10.0/fuse/compat/unix/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/unix/file.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/paths.c vendor/fuse-emulator/0.10.0/fuse/compat/wii/ vendor/fuse-emulator/0.10.0/fuse/compat/wii/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/wii/file.c vendor/fuse-emulator/0.10.0/fuse/compat/win32/ vendor/fuse-emulator/0.10.0/fuse/compat/win32/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/win32/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/win32/paths.c vendor/fuse-emulator/0.10.0/fuse/compat.h vendor/fuse-emulator/0.10.0/fuse/configure.in vendor/fuse-emulator/0.10.0/fuse/dck.c vendor/fuse-emulator/0.10.0/fuse/dck.h vendor/fuse-emulator/0.10.0/fuse/debugger/ vendor/fuse-emulator/0.10.0/fuse/debugger/Makefile.am vendor/fuse-emulator/0.10.0/fuse/debugger/breakpoint.c vendor/fuse-emulator/0.10.0/fuse/debugger/breakpoint.h vendor/fuse-emulator/0.10.0/fuse/debugger/command.c vendor/fuse-emulator/0.10.0/fuse/debugger/commandl.l vendor/fuse-emulator/0.10.0/fuse/debugger/commandy.y vendor/fuse-emulator/0.10.0/fuse/debugger/debugger.c vendor/fuse-emulator/0.10.0/fuse/debugger/debugger.h vendor/fuse-emulator/0.10.0/fuse/debugger/debugger_internals.h vendor/fuse-emulator/0.10.0/fuse/debugger/disassemble.c vendor/fuse-emulator/0.10.0/fuse/debugger/event.c vendor/fuse-emulator/0.10.0/fuse/debugger/expression.c vendor/fuse-emulator/0.10.0/fuse/debugger/variable.c vendor/fuse-emulator/0.10.0/fuse/disk/ vendor/fuse-emulator/0.10.0/fuse/disk/Makefile.am vendor/fuse-emulator/0.10.0/fuse/disk/beta.c vendor/fuse-emulator/0.10.0/fuse/disk/beta.h vendor/fuse-emulator/0.10.0/fuse/disk/crc.c vendor/fuse-emulator/0.10.0/fuse/disk/crc.h vendor/fuse-emulator/0.10.0/fuse/disk/disk.c vendor/fuse-emulator/0.10.0/fuse/disk/disk.h vendor/fuse-emulator/0.10.0/fuse/disk/fdd.c vendor/fuse-emulator/0.10.0/fuse/disk/fdd.h vendor/fuse-emulator/0.10.0/fuse/disk/plusd.c vendor/fuse-emulator/0.10.0/fuse/disk/plusd.h vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.h vendor/fuse-emulator/0.10.0/fuse/disk/wd_fdc.c vendor/fuse-emulator/0.10.0/fuse/disk/wd_fdc.h vendor/fuse-emulator/0.10.0/fuse/display.c vendor/fuse-emulator/0.10.0/fuse/display.h vendor/fuse-emulator/0.10.0/fuse/divide.c vendor/fuse-emulator/0.10.0/fuse/divide.h vendor/fuse-emulator/0.10.0/fuse/event.c vendor/fuse-emulator/0.10.0/fuse/event.h vendor/fuse-emulator/0.10.0/fuse/fuse.c vendor/fuse-emulator/0.10.0/fuse/fuse.h vendor/fuse-emulator/0.10.0/fuse/hacking/ vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog vendor/fuse-emulator/0.10.0/fuse/hacking/Makefile.am vendor/fuse-emulator/0.10.0/fuse/hacking/coding_style.txt vendor/fuse-emulator/0.10.0/fuse/hacking/cvs-tags vendor/fuse-emulator/0.10.0/fuse/hacking/implementation_notes.txt vendor/fuse-emulator/0.10.0/fuse/hacking/input.txt vendor/fuse-emulator/0.10.0/fuse/hacking/sound.txt vendor/fuse-emulator/0.10.0/fuse/hacking/tc2048_tech_notes.txt vendor/fuse-emulator/0.10.0/fuse/hacking/timer.txt vendor/fuse-emulator/0.10.0/fuse/hacking/ui.txt vendor/fuse-emulator/0.10.0/fuse/ide.c vendor/fuse-emulator/0.10.0/fuse/ide.h vendor/fuse-emulator/0.10.0/fuse/if1.c vendor/fuse-emulator/0.10.0/fuse/if1.h vendor/fuse-emulator/0.10.0/fuse/if2.c vendor/fuse-emulator/0.10.0/fuse/if2.h vendor/fuse-emulator/0.10.0/fuse/input.c vendor/fuse-emulator/0.10.0/fuse/input.h vendor/fuse-emulator/0.10.0/fuse/joystick.c vendor/fuse-emulator/0.10.0/fuse/joystick.h vendor/fuse-emulator/0.10.0/fuse/kempmouse.c vendor/fuse-emulator/0.10.0/fuse/kempmouse.h vendor/fuse-emulator/0.10.0/fuse/keyboard.c vendor/fuse-emulator/0.10.0/fuse/keyboard.h vendor/fuse-emulator/0.10.0/fuse/keysyms.dat vendor/fuse-emulator/0.10.0/fuse/keysyms.pl vendor/fuse-emulator/0.10.0/fuse/lib/ vendor/fuse-emulator/0.10.0/fuse/lib/Makefile.am vendor/fuse-emulator/0.10.0/fuse/lib/cassette.bmp vendor/fuse-emulator/0.10.0/fuse/lib/compressed/ vendor/fuse-emulator/0.10.0/fuse/lib/compressed/disk_plus3.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_128.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_16.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_2048.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_2068.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_48.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_pentagon.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_plus2.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_plus2a.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_plus3.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_plus3e.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_scorpion.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_se.szx vendor/fuse-emulator/0.10.0/fuse/lib/compressed/tape_ts2068.szx vendor/fuse-emulator/0.10.0/fuse/lib/keyboard.scr vendor/fuse-emulator/0.10.0/fuse/lib/microdrive.bmp vendor/fuse-emulator/0.10.0/fuse/lib/plus3disk.bmp vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/ vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/disk_plus3.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_128.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_16.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_2048.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_2068.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_48.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_pentagon.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_plus2.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_plus2a.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_plus3.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_plus3e.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_scorpion.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_se.szx vendor/fuse-emulator/0.10.0/fuse/lib/uncompressed/tape_ts2068.szx vendor/fuse-emulator/0.10.0/fuse/loader.c vendor/fuse-emulator/0.10.0/fuse/loader.h vendor/fuse-emulator/0.10.0/fuse/machine.c vendor/fuse-emulator/0.10.0/fuse/machine.h vendor/fuse-emulator/0.10.0/fuse/machines/ vendor/fuse-emulator/0.10.0/fuse/machines/Makefile.am vendor/fuse-emulator/0.10.0/fuse/machines/machines.h vendor/fuse-emulator/0.10.0/fuse/machines/pentagon.c vendor/fuse-emulator/0.10.0/fuse/machines/pentagon.h vendor/fuse-emulator/0.10.0/fuse/machines/pentagon1024.c vendor/fuse-emulator/0.10.0/fuse/machines/pentagon512.c vendor/fuse-emulator/0.10.0/fuse/machines/scorpion.c vendor/fuse-emulator/0.10.0/fuse/machines/scorpion.h vendor/fuse-emulator/0.10.0/fuse/machines/spec128.c vendor/fuse-emulator/0.10.0/fuse/machines/spec128.h vendor/fuse-emulator/0.10.0/fuse/machines/spec16.c vendor/fuse-emulator/0.10.0/fuse/machines/spec48.c vendor/fuse-emulator/0.10.0/fuse/machines/spec48.h vendor/fuse-emulator/0.10.0/fuse/machines/spec_se.c vendor/fuse-emulator/0.10.0/fuse/machines/specplus2.c vendor/fuse-emulator/0.10.0/fuse/machines/specplus2a.c vendor/fuse-emulator/0.10.0/fuse/machines/specplus3.c vendor/fuse-emulator/0.10.0/fuse/machines/specplus3.h vendor/fuse-emulator/0.10.0/fuse/machines/specplus3e.c vendor/fuse-emulator/0.10.0/fuse/machines/tc2048.c vendor/fuse-emulator/0.10.0/fuse/machines/tc2068.c vendor/fuse-emulator/0.10.0/fuse/machines/tc2068.h vendor/fuse-emulator/0.10.0/fuse/machines/ts2068.c vendor/fuse-emulator/0.10.0/fuse/man/ vendor/fuse-emulator/0.10.0/fuse/man/Makefile.am vendor/fuse-emulator/0.10.0/fuse/man/fuse.1 vendor/fuse-emulator/0.10.0/fuse/memory.c vendor/fuse-emulator/0.10.0/fuse/memory.h vendor/fuse-emulator/0.10.0/fuse/mempool.c vendor/fuse-emulator/0.10.0/fuse/mempool.h vendor/fuse-emulator/0.10.0/fuse/menu.c vendor/fuse-emulator/0.10.0/fuse/menu.h vendor/fuse-emulator/0.10.0/fuse/menu_data.dat vendor/fuse-emulator/0.10.0/fuse/menu_data.pl vendor/fuse-emulator/0.10.0/fuse/module.c vendor/fuse-emulator/0.10.0/fuse/module.h vendor/fuse-emulator/0.10.0/fuse/periph.c vendor/fuse-emulator/0.10.0/fuse/periph.h vendor/fuse-emulator/0.10.0/fuse/perl/ vendor/fuse-emulator/0.10.0/fuse/perl/Fuse/ vendor/fuse-emulator/0.10.0/fuse/perl/Fuse/Dialog.pm vendor/fuse-emulator/0.10.0/fuse/perl/Fuse/Makefile.am vendor/fuse-emulator/0.10.0/fuse/perl/Fuse.pm vendor/fuse-emulator/0.10.0/fuse/perl/Makefile.am vendor/fuse-emulator/0.10.0/fuse/perl/cpp-perl.pl vendor/fuse-emulator/0.10.0/fuse/pokefinder/ vendor/fuse-emulator/0.10.0/fuse/pokefinder/Makefile.am vendor/fuse-emulator/0.10.0/fuse/pokefinder/pokefinder.c vendor/fuse-emulator/0.10.0/fuse/pokefinder/pokefinder.h vendor/fuse-emulator/0.10.0/fuse/printer.c vendor/fuse-emulator/0.10.0/fuse/printer.h vendor/fuse-emulator/0.10.0/fuse/profile.c vendor/fuse-emulator/0.10.0/fuse/profile.h vendor/fuse-emulator/0.10.0/fuse/psg.c vendor/fuse-emulator/0.10.0/fuse/psg.h vendor/fuse-emulator/0.10.0/fuse/roms/ vendor/fuse-emulator/0.10.0/fuse/roms/128-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/128-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/128p-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/128p-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/256s-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/256s-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/256s-2.rom vendor/fuse-emulator/0.10.0/fuse/roms/256s-3.rom vendor/fuse-emulator/0.10.0/fuse/roms/48.rom vendor/fuse-emulator/0.10.0/fuse/roms/Makefile.am vendor/fuse-emulator/0.10.0/fuse/roms/gluck.rom vendor/fuse-emulator/0.10.0/fuse/roms/if1-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/if1-2.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus2-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus2-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3-2.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3-3.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3e-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3e-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3e-2.rom vendor/fuse-emulator/0.10.0/fuse/roms/plus3e-3.rom vendor/fuse-emulator/0.10.0/fuse/roms/plusd.rom vendor/fuse-emulator/0.10.0/fuse/roms/se-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/se-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/tc2048.rom vendor/fuse-emulator/0.10.0/fuse/roms/tc2068-0.rom vendor/fuse-emulator/0.10.0/fuse/roms/tc2068-1.rom vendor/fuse-emulator/0.10.0/fuse/roms/trdos.rom vendor/fuse-emulator/0.10.0/fuse/rzx.c vendor/fuse-emulator/0.10.0/fuse/rzx.h vendor/fuse-emulator/0.10.0/fuse/scld.c vendor/fuse-emulator/0.10.0/fuse/scld.h vendor/fuse-emulator/0.10.0/fuse/screenshot.c vendor/fuse-emulator/0.10.0/fuse/screenshot.h vendor/fuse-emulator/0.10.0/fuse/settings-header.pl vendor/fuse-emulator/0.10.0/fuse/settings.dat vendor/fuse-emulator/0.10.0/fuse/settings.pl vendor/fuse-emulator/0.10.0/fuse/simpleide.c vendor/fuse-emulator/0.10.0/fuse/simpleide.h vendor/fuse-emulator/0.10.0/fuse/slt.c vendor/fuse-emulator/0.10.0/fuse/slt.h vendor/fuse-emulator/0.10.0/fuse/snapshot.c vendor/fuse-emulator/0.10.0/fuse/snapshot.h vendor/fuse-emulator/0.10.0/fuse/sound/ vendor/fuse-emulator/0.10.0/fuse/sound/Makefile.am vendor/fuse-emulator/0.10.0/fuse/sound/alsasound.c vendor/fuse-emulator/0.10.0/fuse/sound/aosound.c vendor/fuse-emulator/0.10.0/fuse/sound/coreaudiosound.c vendor/fuse-emulator/0.10.0/fuse/sound/dxsound.c vendor/fuse-emulator/0.10.0/fuse/sound/hpsound.c vendor/fuse-emulator/0.10.0/fuse/sound/nullsound.c vendor/fuse-emulator/0.10.0/fuse/sound/osssound.c vendor/fuse-emulator/0.10.0/fuse/sound/sdlsound.c vendor/fuse-emulator/0.10.0/fuse/sound/sfifo.c vendor/fuse-emulator/0.10.0/fuse/sound/sfifo.h vendor/fuse-emulator/0.10.0/fuse/sound/sunsound.c vendor/fuse-emulator/0.10.0/fuse/sound/win32sound.c vendor/fuse-emulator/0.10.0/fuse/sound.c vendor/fuse-emulator/0.10.0/fuse/sound.h vendor/fuse-emulator/0.10.0/fuse/spectrum.c vendor/fuse-emulator/0.10.0/fuse/spectrum.h vendor/fuse-emulator/0.10.0/fuse/tape.c vendor/fuse-emulator/0.10.0/fuse/tape.h vendor/fuse-emulator/0.10.0/fuse/timer/ vendor/fuse-emulator/0.10.0/fuse/timer/Makefile.am vendor/fuse-emulator/0.10.0/fuse/timer/sdl.c vendor/fuse-emulator/0.10.0/fuse/timer/timer.c vendor/fuse-emulator/0.10.0/fuse/timer/timer.h vendor/fuse-emulator/0.10.0/fuse/timer/unix.c vendor/fuse-emulator/0.10.0/fuse/timer/win32.c vendor/fuse-emulator/0.10.0/fuse/ui/ vendor/fuse-emulator/0.10.0/fuse/ui/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/fb/ vendor/fuse-emulator/0.10.0/fuse/ui/fb/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbdisplay.c vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbdisplay.h vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbjoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbkeyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbkeyboard.h vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbmouse.c vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbmouse.h vendor/fuse-emulator/0.10.0/fuse/ui/fb/fbui.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/ vendor/fuse-emulator/0.10.0/fuse/ui/gtk/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/gtk/binary.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/browse.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/confirm.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/debugger.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/fileselector.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkdisplay.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkinternals.h vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkjoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkkeyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkmouse.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/gtkui.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/memory.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/options-header.pl vendor/fuse-emulator/0.10.0/fuse/ui/gtk/options.pl vendor/fuse-emulator/0.10.0/fuse/ui/gtk/picture.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/pixmaps.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/pokefinder.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/rollback.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/roms.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/statusbar.c vendor/fuse-emulator/0.10.0/fuse/ui/gtk/stock.c vendor/fuse-emulator/0.10.0/fuse/ui/options.dat vendor/fuse-emulator/0.10.0/fuse/ui/scaler/ vendor/fuse-emulator/0.10.0/fuse/ui/scaler/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scaler.c vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scaler.h vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scaler_hq2x.c vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scaler_hq3x.c vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scaler_internals.h vendor/fuse-emulator/0.10.0/fuse/ui/scaler/scalers.c vendor/fuse-emulator/0.10.0/fuse/ui/sdl/ vendor/fuse-emulator/0.10.0/fuse/ui/sdl/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdldisplay.c vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdldisplay.h vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdljoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdljoystick.h vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdlkeyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdlkeyboard.h vendor/fuse-emulator/0.10.0/fuse/ui/sdl/sdlui.c vendor/fuse-emulator/0.10.0/fuse/ui/svga/ vendor/fuse-emulator/0.10.0/fuse/ui/svga/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgadisplay.c vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgadisplay.h vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgajoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgakeyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgakeyboard.h vendor/fuse-emulator/0.10.0/fuse/ui/svga/svgaui.c vendor/fuse-emulator/0.10.0/fuse/ui/ui.h vendor/fuse-emulator/0.10.0/fuse/ui/uidisplay.h vendor/fuse-emulator/0.10.0/fuse/ui/uijoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/uijoystick.h vendor/fuse-emulator/0.10.0/fuse/ui/widget/ vendor/fuse-emulator/0.10.0/fuse/ui/widget/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/widget/browse.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/debugger.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/error.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/filesel.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/fuse.font.sbf vendor/fuse-emulator/0.10.0/fuse/ui/widget/memory.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/menu.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/mkfusefont.pl vendor/fuse-emulator/0.10.0/fuse/ui/widget/options-header.pl vendor/fuse-emulator/0.10.0/fuse/ui/widget/options.pl vendor/fuse-emulator/0.10.0/fuse/ui/widget/picture.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/pokefinder.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/query.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/roms.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/select.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/text.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/widget.c vendor/fuse-emulator/0.10.0/fuse/ui/widget/widget.h vendor/fuse-emulator/0.10.0/fuse/ui/widget/widget_internals.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/ vendor/fuse-emulator/0.10.0/fuse/ui/win32/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/win32/binary.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/binary.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/binary.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/browse.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/browse.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/browse.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/confirm.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/debugger.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/debugger.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/debugger.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/fileselector.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/ vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/disk_active.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/disk_inactive.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/mdr_active.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/mdr_inactive.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/mouse_active.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/mouse_inactive.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/pause_active.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/pause_inactive.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/tape_active.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/tape_inactive.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/tape_marker.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/icons/tape_marker_mask.bmp vendor/fuse-emulator/0.10.0/fuse/ui/win32/memorybrowser.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/memorybrowser.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/memorybrowser.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/options-header.pl vendor/fuse-emulator/0.10.0/fuse/ui/win32/options-resource.pl vendor/fuse-emulator/0.10.0/fuse/ui/win32/options.pl vendor/fuse-emulator/0.10.0/fuse/ui/win32/picture.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/picture.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/picture.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/pokefinder.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/pokefinder.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/pokefinder.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/rollback.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/rollback.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/rollback.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/roms.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/roms.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/roms.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/select_template.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/select_template.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/statusbar.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/statusbar.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32display.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32internals.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32joystick.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32joystick.h vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32joystick.rc vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32keyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32mouse.c vendor/fuse-emulator/0.10.0/fuse/ui/win32/win32ui.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/ vendor/fuse-emulator/0.10.0/fuse/ui/xlib/Makefile.am vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xdisplay.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xdisplay.h vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xerror.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xjoystick.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xkeyboard.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xkeyboard.h vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xui.c vendor/fuse-emulator/0.10.0/fuse/ui/xlib/xui.h vendor/fuse-emulator/0.10.0/fuse/ui.c vendor/fuse-emulator/0.10.0/fuse/uidisplay.c vendor/fuse-emulator/0.10.0/fuse/ula.c vendor/fuse-emulator/0.10.0/fuse/ula.h vendor/fuse-emulator/0.10.0/fuse/unittests/ vendor/fuse-emulator/0.10.0/fuse/unittests/Makefile.am vendor/fuse-emulator/0.10.0/fuse/unittests/unittests.c vendor/fuse-emulator/0.10.0/fuse/unittests/unittests.h vendor/fuse-emulator/0.10.0/fuse/utils.c vendor/fuse-emulator/0.10.0/fuse/utils.h vendor/fuse-emulator/0.10.0/fuse/windres.rc vendor/fuse-emulator/0.10.0/fuse/winfuse.ico vendor/fuse-emulator/0.10.0/fuse/z80/ vendor/fuse-emulator/0.10.0/fuse/z80/Makefile.am vendor/fuse-emulator/0.10.0/fuse/z80/coretest.c vendor/fuse-emulator/0.10.0/fuse/z80/opcodes_base.dat vendor/fuse-emulator/0.10.0/fuse/z80/opcodes_cb.dat vendor/fuse-emulator/0.10.0/fuse/z80/opcodes_ddfd.dat vendor/fuse-emulator/0.10.0/fuse/z80/opcodes_ddfdcb.dat vendor/fuse-emulator/0.10.0/fuse/z80/opcodes_ed.dat vendor/fuse-emulator/0.10.0/fuse/z80/tests/ vendor/fuse-emulator/0.10.0/fuse/z80/tests/Makefile.am vendor/fuse-emulator/0.10.0/fuse/z80/tests/README vendor/fuse-emulator/0.10.0/fuse/z80/tests/tests.expected vendor/fuse-emulator/0.10.0/fuse/z80/tests/tests.in vendor/fuse-emulator/0.10.0/fuse/z80/z80.c vendor/fuse-emulator/0.10.0/fuse/z80/z80.h vendor/fuse-emulator/0.10.0/fuse/z80/z80.pl vendor/fuse-emulator/0.10.0/fuse/z80/z80_checks.h vendor/fuse-emulator/0.10.0/fuse/z80/z80_macros.h vendor/fuse-emulator/0.10.0/fuse/z80/z80_ops.c vendor/fuse-emulator/0.10.0/fuse/zxatasp.c vendor/fuse-emulator/0.10.0/fuse/zxatasp.h vendor/fuse-emulator/0.10.0/fuse/zxcf.c vendor/fuse-emulator/0.10.0/fuse/zxcf.h vendor/fuse-emulator/0.10.0/fuse-basic/ vendor/fuse-emulator/0.10.0/fuse-basic/COPYING vendor/fuse-emulator/0.10.0/fuse-basic/Makefile.am vendor/fuse-emulator/0.10.0/fuse-basic/autogen.sh vendor/fuse-emulator/0.10.0/fuse-basic/basic.c vendor/fuse-emulator/0.10.0/fuse-basic/basic.h vendor/fuse-emulator/0.10.0/fuse-basic/basicl.l vendor/fuse-emulator/0.10.0/fuse-basic/basicy.y vendor/fuse-emulator/0.10.0/fuse-basic/check vendor/fuse-emulator/0.10.0/fuse-basic/configure.ac vendor/fuse-emulator/0.10.0/fuse-basic/dump.c vendor/fuse-emulator/0.10.0/fuse-basic/dump.h vendor/fuse-emulator/0.10.0/fuse-basic/explist.c vendor/fuse-emulator/0.10.0/fuse-basic/explist.h vendor/fuse-emulator/0.10.0/fuse-basic/line.c vendor/fuse-emulator/0.10.0/fuse-basic/line.h vendor/fuse-emulator/0.10.0/fuse-basic/numexp.c vendor/fuse-emulator/0.10.0/fuse-basic/numexp.h vendor/fuse-emulator/0.10.0/fuse-basic/parse.c vendor/fuse-emulator/0.10.0/fuse-basic/parse.h vendor/fuse-emulator/0.10.0/fuse-basic/printlist.c vendor/fuse-emulator/0.10.0/fuse-basic/printlist.h vendor/fuse-emulator/0.10.0/fuse-basic/program.c vendor/fuse-emulator/0.10.0/fuse-basic/program.h vendor/fuse-emulator/0.10.0/fuse-basic/spectrum-string.c vendor/fuse-emulator/0.10.0/fuse-basic/spectrum-string.h vendor/fuse-emulator/0.10.0/fuse-basic/statement.c vendor/fuse-emulator/0.10.0/fuse-basic/statement.h vendor/fuse-emulator/0.10.0/fuse-basic/strexp.c vendor/fuse-emulator/0.10.0/fuse-basic/strexp.h vendor/fuse-emulator/0.10.0/fuse-basic/tests/ vendor/fuse-emulator/0.10.0/fuse-basic/tests/abs.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/abs.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/acs.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/acs.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/and.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/and.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/asn.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/asn.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/atn.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/atn.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/chrs.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/chrs.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/code.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/code.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/cos.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/cos.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/dim.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/dim.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/divide.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/divide.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/equal.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/equal.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/exp.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/exp.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/for.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/for.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/ge.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/ge.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/gosub.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/gosub.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/goto.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/goto.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/greater.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/greater.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/if.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/if.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/int.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/int.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/le.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/le.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/len.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/len.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/less.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/less.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/let.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/let.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/ln.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/ln.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/minus.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/minus.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/ne.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/ne.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/not.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/not.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/or.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/or.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/pi.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/pi.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/plus.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/plus.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/power.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/power.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/rnd.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/rnd.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/sgn.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/sgn.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/sin.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/sin.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/slicer.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/slicer.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/sqr.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/sqr.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/stop.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/stop.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/tan.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/tan.out vendor/fuse-emulator/0.10.0/fuse-basic/tests/times.bas vendor/fuse-emulator/0.10.0/fuse-basic/tests/times.out vendor/fuse-emulator/0.10.0/fuse-basic/token.h vendor/fuse-emulator/0.10.0/fuse-basic/utils.c vendor/fuse-emulator/0.10.0/fuse-basic/utils.h vendor/fuse-emulator/0.10.0/fuse-basic/val.c vendor/fuse-emulator/0.10.0/fuse-basic/val.h vendor/fuse-emulator/0.10.0/fuse-mgt/ vendor/fuse-emulator/0.10.0/fuse-mgt/COPYING vendor/fuse-emulator/0.10.0/fuse-mgt/Makefile vendor/fuse-emulator/0.10.0/fuse-mgt/README vendor/fuse-emulator/0.10.0/fuse-mgt/fuse-mgt.c vendor/fuse-emulator/0.10.0/fuse-utils/ vendor/fuse-emulator/0.10.0/fuse-utils/AUTHORS vendor/fuse-emulator/0.10.0/fuse-utils/COPYING vendor/fuse-emulator/0.10.0/fuse-utils/ChangeLog vendor/fuse-emulator/0.10.0/fuse-utils/Makefile.am vendor/fuse-emulator/0.10.0/fuse-utils/README vendor/fuse-emulator/0.10.0/fuse-utils/acinclude.m4 vendor/fuse-emulator/0.10.0/fuse-utils/audio2tape.cc vendor/fuse-emulator/0.10.0/fuse-utils/audio2tape.h vendor/fuse-emulator/0.10.0/fuse-utils/autogen.sh vendor/fuse-emulator/0.10.0/fuse-utils/compat.h vendor/fuse-emulator/0.10.0/fuse-utils/configure.in vendor/fuse-emulator/0.10.0/fuse-utils/converter/ vendor/fuse-emulator/0.10.0/fuse-utils/converter/findpilot.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/findpilot.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/findsync1.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/findsync1.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/getpulse1.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/getpulse1.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/getpulse2.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/getpulse2.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/getsync2.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/getsync2.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/romloader.cc vendor/fuse-emulator/0.10.0/fuse-utils/converter/romloader.h vendor/fuse-emulator/0.10.0/fuse-utils/converter/romloaderstate.h vendor/fuse-emulator/0.10.0/fuse-utils/createhdf.c vendor/fuse-emulator/0.10.0/fuse-utils/fuse-utils.qpg.in vendor/fuse-emulator/0.10.0/fuse-utils/hacking/ vendor/fuse-emulator/0.10.0/fuse-utils/hacking/ChangeLog vendor/fuse-emulator/0.10.0/fuse-utils/hacking/Makefile.am vendor/fuse-emulator/0.10.0/fuse-utils/hacking/cvs-tags vendor/fuse-emulator/0.10.0/fuse-utils/ide.c vendor/fuse-emulator/0.10.0/fuse-utils/ide.h vendor/fuse-emulator/0.10.0/fuse-utils/importer/ vendor/fuse-emulator/0.10.0/fuse-utils/importer/interpolator.h vendor/fuse-emulator/0.10.0/fuse-utils/importer/schmitt.h vendor/fuse-emulator/0.10.0/fuse-utils/importer/simple.h vendor/fuse-emulator/0.10.0/fuse-utils/importer/soundfile.cc vendor/fuse-emulator/0.10.0/fuse-utils/importer/soundfile.h vendor/fuse-emulator/0.10.0/fuse-utils/importer/trigger.cc vendor/fuse-emulator/0.10.0/fuse-utils/importer/trigger.h vendor/fuse-emulator/0.10.0/fuse-utils/keys.c vendor/fuse-emulator/0.10.0/fuse-utils/listbasic.c vendor/fuse-emulator/0.10.0/fuse-utils/man/ vendor/fuse-emulator/0.10.0/fuse-utils/man/Makefile.am vendor/fuse-emulator/0.10.0/fuse-utils/man/audio2tape.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/createhdf.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/fuse-utils.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/listbasic.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/profile2map.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/raw2hdf.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/rzxcheck.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/rzxdump.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/rzxtool.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/scl2trd.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/snap2tzx.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/snapconv.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/tape2wav.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/tapeconv.1 vendor/fuse-emulator/0.10.0/fuse-utils/man/tzxlist.1 vendor/fuse-emulator/0.10.0/fuse-utils/profile2map.c vendor/fuse-emulator/0.10.0/fuse-utils/raw2hdf.c vendor/fuse-emulator/0.10.0/fuse-utils/rzxcheck.c vendor/fuse-emulator/0.10.0/fuse-utils/rzxdump.c vendor/fuse-emulator/0.10.0/fuse-utils/rzxtool.c vendor/fuse-emulator/0.10.0/fuse-utils/scl2trd.c vendor/fuse-emulator/0.10.0/fuse-utils/snap2tzx.c vendor/fuse-emulator/0.10.0/fuse-utils/snapconv.c vendor/fuse-emulator/0.10.0/fuse-utils/tape2wav.c vendor/fuse-emulator/0.10.0/fuse-utils/tapeconv.c vendor/fuse-emulator/0.10.0/fuse-utils/tzxlist.c vendor/fuse-emulator/0.10.0/fuse-utils/utils.c vendor/fuse-emulator/0.10.0/fuse-utils/utils.h vendor/fuse-emulator/0.10.0/fusetest/ vendor/fuse-emulator/0.10.0/fusetest/COPYING vendor/fuse-emulator/0.10.0/fusetest/Makefile vendor/fuse-emulator/0.10.0/fusetest/README vendor/fuse-emulator/0.10.0/fusetest/atiming.asm vendor/fuse-emulator/0.10.0/fusetest/contention.asm vendor/fuse-emulator/0.10.0/fusetest/delay.asm vendor/fuse-emulator/0.10.0/fusetest/first.asm vendor/fuse-emulator/0.10.0/fusetest/framelength.asm vendor/fuse-emulator/0.10.0/fusetest/fusetest.asm vendor/fuse-emulator/0.10.0/fusetest/guessmachine.asm vendor/fuse-emulator/0.10.0/fusetest/print.asm vendor/fuse-emulator/0.10.0/fusetest/sync.asm vendor/fuse-emulator/0.10.0/fusetest/tests.asm vendor/fuse-emulator/0.10.0/gdos-tools/ vendor/fuse-emulator/0.10.0/gdos-tools/AUTHORS vendor/fuse-emulator/0.10.0/gdos-tools/COPYING vendor/fuse-emulator/0.10.0/gdos-tools/ChangeLog vendor/fuse-emulator/0.10.0/gdos-tools/Makefile.am vendor/fuse-emulator/0.10.0/gdos-tools/README vendor/fuse-emulator/0.10.0/gdos-tools/autogen.sh vendor/fuse-emulator/0.10.0/gdos-tools/configure.in vendor/fuse-emulator/0.10.0/gdos-tools/gdoscat.c vendor/fuse-emulator/0.10.0/gdos-tools/gdosread.c vendor/fuse-emulator/0.10.0/gdos-tools/hacking/ vendor/fuse-emulator/0.10.0/gdos-tools/hacking/ChangeLog vendor/fuse-emulator/0.10.0/gdos-tools/hacking/Makefile.am vendor/fuse-emulator/0.10.0/gdos-tools/man/ vendor/fuse-emulator/0.10.0/gdos-tools/man/Makefile.am vendor/fuse-emulator/0.10.0/gdos-tools/man/gdos-tools.1 vendor/fuse-emulator/0.10.0/libgdos/ vendor/fuse-emulator/0.10.0/libgdos/AUTHORS vendor/fuse-emulator/0.10.0/libgdos/COPYING vendor/fuse-emulator/0.10.0/libgdos/ChangeLog vendor/fuse-emulator/0.10.0/libgdos/Makefile.am vendor/fuse-emulator/0.10.0/libgdos/README vendor/fuse-emulator/0.10.0/libgdos/THANKS vendor/fuse-emulator/0.10.0/libgdos/TODO vendor/fuse-emulator/0.10.0/libgdos/autogen.sh vendor/fuse-emulator/0.10.0/libgdos/configure.in vendor/fuse-emulator/0.10.0/libgdos/dir.c vendor/fuse-emulator/0.10.0/libgdos/dll.c vendor/fuse-emulator/0.10.0/libgdos/doc/ vendor/fuse-emulator/0.10.0/libgdos/doc/Makefile.am vendor/fuse-emulator/0.10.0/libgdos/doc/libgdos.3 vendor/fuse-emulator/0.10.0/libgdos/file.c vendor/fuse-emulator/0.10.0/libgdos/hacking/ vendor/fuse-emulator/0.10.0/libgdos/hacking/ChangeLog vendor/fuse-emulator/0.10.0/libgdos/hacking/Makefile.am vendor/fuse-emulator/0.10.0/libgdos/image.c vendor/fuse-emulator/0.10.0/libgdos/internals.h vendor/fuse-emulator/0.10.0/libgdos/libgdos.h vendor/fuse-emulator/0.10.0/libspectrum/ vendor/fuse-emulator/0.10.0/libspectrum/AUTHORS vendor/fuse-emulator/0.10.0/libspectrum/COPYING vendor/fuse-emulator/0.10.0/libspectrum/ChangeLog vendor/fuse-emulator/0.10.0/libspectrum/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/README vendor/fuse-emulator/0.10.0/libspectrum/THANKS vendor/fuse-emulator/0.10.0/libspectrum/accessor.pl vendor/fuse-emulator/0.10.0/libspectrum/acinclude.m4 vendor/fuse-emulator/0.10.0/libspectrum/autogen.sh vendor/fuse-emulator/0.10.0/libspectrum/bzip2.c vendor/fuse-emulator/0.10.0/libspectrum/configure.in vendor/fuse-emulator/0.10.0/libspectrum/creator.c vendor/fuse-emulator/0.10.0/libspectrum/crypto.c vendor/fuse-emulator/0.10.0/libspectrum/csw.c vendor/fuse-emulator/0.10.0/libspectrum/dck.c vendor/fuse-emulator/0.10.0/libspectrum/dll.c vendor/fuse-emulator/0.10.0/libspectrum/doc/ vendor/fuse-emulator/0.10.0/libspectrum/doc/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/doc/cvs-tags vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.3 vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.txt vendor/fuse-emulator/0.10.0/libspectrum/generate.pl.in vendor/fuse-emulator/0.10.0/libspectrum/hacking/ vendor/fuse-emulator/0.10.0/libspectrum/hacking/ChangeLog vendor/fuse-emulator/0.10.0/libspectrum/hacking/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/ide.c vendor/fuse-emulator/0.10.0/libspectrum/internals.h vendor/fuse-emulator/0.10.0/libspectrum/libspectrum.c vendor/fuse-emulator/0.10.0/libspectrum/libspectrum.h.in vendor/fuse-emulator/0.10.0/libspectrum/libspectrum.qpg.in vendor/fuse-emulator/0.10.0/libspectrum/make-perl.c vendor/fuse-emulator/0.10.0/libspectrum/memory.c vendor/fuse-emulator/0.10.0/libspectrum/microdrive.c vendor/fuse-emulator/0.10.0/libspectrum/myglib/ vendor/fuse-emulator/0.10.0/libspectrum/myglib/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/myglib/garray.c vendor/fuse-emulator/0.10.0/libspectrum/myglib/ghash.c vendor/fuse-emulator/0.10.0/libspectrum/myglib/gslist.c vendor/fuse-emulator/0.10.0/libspectrum/plusd.c vendor/fuse-emulator/0.10.0/libspectrum/rzx.c vendor/fuse-emulator/0.10.0/libspectrum/sna.c vendor/fuse-emulator/0.10.0/libspectrum/snap_accessors.txt vendor/fuse-emulator/0.10.0/libspectrum/snapshot.c vendor/fuse-emulator/0.10.0/libspectrum/snp.c vendor/fuse-emulator/0.10.0/libspectrum/sp.c vendor/fuse-emulator/0.10.0/libspectrum/symbol_table.c vendor/fuse-emulator/0.10.0/libspectrum/szx.c vendor/fuse-emulator/0.10.0/libspectrum/tap.c vendor/fuse-emulator/0.10.0/libspectrum/tape.c vendor/fuse-emulator/0.10.0/libspectrum/tape_accessors.pl vendor/fuse-emulator/0.10.0/libspectrum/tape_accessors.txt vendor/fuse-emulator/0.10.0/libspectrum/tape_block.c vendor/fuse-emulator/0.10.0/libspectrum/tape_block.h vendor/fuse-emulator/0.10.0/libspectrum/tape_set.pl vendor/fuse-emulator/0.10.0/libspectrum/test/ vendor/fuse-emulator/0.10.0/libspectrum/test/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/test/complete-tzx.pl vendor/fuse-emulator/0.10.0/libspectrum/test/edges.c vendor/fuse-emulator/0.10.0/libspectrum/test/empty-drb.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/empty.csw vendor/fuse-emulator/0.10.0/libspectrum/test/empty.z80 vendor/fuse-emulator/0.10.0/libspectrum/test/invalid-archiveinfo.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/invalid-custominfo.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/invalid-gdb.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/invalid-hardwareinfo.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/invalid-warajevo-blockoffset.tap vendor/fuse-emulator/0.10.0/libspectrum/test/invalid.gz vendor/fuse-emulator/0.10.0/libspectrum/test/invalid.szx vendor/fuse-emulator/0.10.0/libspectrum/test/invalid.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/jump.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/loop.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/loop2.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/loopend.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/sp-2000.sna.gz vendor/fuse-emulator/0.10.0/libspectrum/test/sp-ffff.sna.gz vendor/fuse-emulator/0.10.0/libspectrum/test/test.c vendor/fuse-emulator/0.10.0/libspectrum/test/test.h vendor/fuse-emulator/0.10.0/libspectrum/test/test15.c vendor/fuse-emulator/0.10.0/libspectrum/test/turbo-zeropilot.tzx vendor/fuse-emulator/0.10.0/libspectrum/test/writeprotected.mdr vendor/fuse-emulator/0.10.0/libspectrum/timings.c vendor/fuse-emulator/0.10.0/libspectrum/tzx_read.c vendor/fuse-emulator/0.10.0/libspectrum/tzx_write.c vendor/fuse-emulator/0.10.0/libspectrum/warajevo_read.c vendor/fuse-emulator/0.10.0/libspectrum/wav.c vendor/fuse-emulator/0.10.0/libspectrum/z80.c vendor/fuse-emulator/0.10.0/libspectrum/z80em.c vendor/fuse-emulator/0.10.0/libspectrum/zlib.c vendor/fuse-emulator/0.10.0/libspectrum/zxs.c vendor/fuse-emulator/0.10.0/website/ vendor/fuse-emulator/0.10.0/website/.htaccess vendor/fuse-emulator/0.10.0/website/.inc/ vendor/fuse-emulator/0.10.0/website/.inc/fuse.inc vendor/fuse-emulator/0.10.0/website/COPYING vendor/fuse-emulator/0.10.0/website/README vendor/fuse-emulator/0.10.0/website/fuse.php vendor/fuse-emulator/0.10.0/website/general.css vendor/fuse-emulator/0.10.0/website/images/ vendor/fuse-emulator/0.10.0/website/images/bgnd.png vendor/fuse-emulator/0.10.0/website/images/closed.png vendor/fuse-emulator/0.10.0/website/images/grey.png vendor/fuse-emulator/0.10.0/website/images/open.png vendor/fuse-emulator/0.10.0/website/images/smburn.png vendor/fuse-emulator/0.10.0/website/images/valid-css.png vendor/fuse-emulator/0.10.0/website/images/valid-xhtml10.png vendor/fuse-emulator/0.10.0/website/images/zx.png vendor/fuse-emulator/0.10.0/website/libspectrum.php vendor/fuse-emulator/0.10.0/website/logo/ vendor/fuse-emulator/0.10.0/website/logo/fuse.jpeg vendor/fuse-emulator/0.10.0/website/screens/ vendor/fuse-emulator/0.10.0/website/screens/f-awm.png vendor/fuse-emulator/0.10.0/website/screens/f-large.png vendor/fuse-emulator/0.10.0/website/screens/f-nongtk.png vendor/fuse-emulator/0.10.0/website/screens/f-rzx.png vendor/fuse-emulator/0.10.0/website/spectrum.css Removed Paths: ------------- vendor/fuse-emulator/0.10.0/debian/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/changelog vendor/fuse-emulator/0.10.0/debian/fuse-emulator/compat vendor/fuse-emulator/0.10.0/debian/fuse-emulator/control vendor/fuse-emulator/0.10.0/debian/fuse-emulator/copyright vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.docs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-common.manpages vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-gtk.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-sdl.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.install vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.links vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.menu vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.postinst vendor/fuse-emulator/0.10.0/debian/fuse-emulator/fuse-emulator-x11.prerm vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/00list vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_configure.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_man.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/patches/01_noroms.dpatch vendor/fuse-emulator/0.10.0/debian/fuse-emulator/rules vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/ vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/changelog vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/compat vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/control vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/copyright vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/dirs vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/docs vendor/fuse-emulator/0.10.0/debian/fuse-emulator-utils/rules vendor/fuse-emulator/0.10.0/debian/lib765/ vendor/fuse-emulator/0.10.0/debian/lib765/changelog vendor/fuse-emulator/0.10.0/debian/lib765/compat vendor/fuse-emulator/0.10.0/debian/lib765/control vendor/fuse-emulator/0.10.0/debian/lib765/copyright vendor/fuse-emulator/0.10.0/debian/lib765/dirs vendor/fuse-emulator/0.10.0/debian/lib765/docs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-3.dirs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-3.install vendor/fuse-emulator/0.10.0/debian/lib765/lib765-dev.dirs vendor/fuse-emulator/0.10.0/debian/lib765/lib765-dev.install vendor/fuse-emulator/0.10.0/debian/lib765/rules vendor/fuse-emulator/0.10.0/debian/libdsk/ vendor/fuse-emulator/0.10.0/debian/libdsk/changelog vendor/fuse-emulator/0.10.0/debian/libdsk/compat vendor/fuse-emulator/0.10.0/debian/libdsk/control vendor/fuse-emulator/0.10.0/debian/libdsk/copyright vendor/fuse-emulator/0.10.0/debian/libdsk/dirs vendor/fuse-emulator/0.10.0/debian/libdsk/docs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk-dev.dirs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk-dev.install vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk3.dirs vendor/fuse-emulator/0.10.0/debian/libdsk/libdsk3.install vendor/fuse-emulator/0.10.0/debian/libdsk/rules vendor/fuse-emulator/0.10.0/debian/libspectrum/ vendor/fuse-emulator/0.10.0/debian/libspectrum/changelog vendor/fuse-emulator/0.10.0/debian/libspectrum/compat vendor/fuse-emulator/0.10.0/debian/libspectrum/control vendor/fuse-emulator/0.10.0/debian/libspectrum/copyright vendor/fuse-emulator/0.10.0/debian/libspectrum/dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/docs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.install vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum-dev.manpages vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum5.dirs vendor/fuse-emulator/0.10.0/debian/libspectrum/libspectrum5.install vendor/fuse-emulator/0.10.0/debian/libspectrum/rules vendor/fuse-emulator/0.10.0/fuse/ vendor/fuse-emulator/0.10.0/fuse/AUTHORS vendor/fuse-emulator/0.10.0/fuse/COPYING vendor/fuse-emulator/0.10.0/fuse/ChangeLog vendor/fuse-emulator/0.10.0/fuse/Makefile.am vendor/fuse-emulator/0.10.0/fuse/PORTING vendor/fuse-emulator/0.10.0/fuse/README vendor/fuse-emulator/0.10.0/fuse/THANKS vendor/fuse-emulator/0.10.0/fuse/acinclude.m4 vendor/fuse-emulator/0.10.0/fuse/autogen.sh vendor/fuse-emulator/0.10.0/fuse/ay.c vendor/fuse-emulator/0.10.0/fuse/ay.h vendor/fuse-emulator/0.10.0/fuse/bitmap.h vendor/fuse-emulator/0.10.0/fuse/compat/ vendor/fuse-emulator/0.10.0/fuse/compat/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/amiga/ vendor/fuse-emulator/0.10.0/fuse/compat/amiga/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/amiga/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c vendor/fuse-emulator/0.10.0/fuse/compat/dirname.c vendor/fuse-emulator/0.10.0/fuse/compat/getopt.c vendor/fuse-emulator/0.10.0/fuse/compat/getopt.h vendor/fuse-emulator/0.10.0/fuse/compat/getopt1.c vendor/fuse-emulator/0.10.0/fuse/compat/mkstemp.c vendor/fuse-emulator/0.10.0/fuse/compat/morphos/ vendor/fuse-emulator/0.10.0/fuse/compat/morphos/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/morphos/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/ vendor/fuse-emulator/0.10.0/fuse/compat/unix/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/unix/file.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/unix/paths.c vendor/fuse-emulator/0.10.0/fuse/compat/wii/ vendor/fuse-emulator/0.10.0/fuse/compat/wii/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/wii/file.c vendor/fuse-emulator/0.10.0/fuse/compat/win32/ vendor/fuse-emulator/0.10.0/fuse/compat/win32/Makefile.am vendor/fuse-emulator/0.10.0/fuse/compat/win32/osname.c vendor/fuse-emulator/0.10.0/fuse/compat/win32/paths.c vendor/fuse-emulator/0.10.0/fuse/compat.h vendor/fuse-emulator/0.10.0/fuse/configure.in vendor/fuse-emulator/0.10.0/fuse/dck.c vendor/fuse-emulator/0.10.0/fuse/dck.h vendor/fuse-emulator/0.10.0/fuse/debugger/ vendor/fuse-emulator/0.10.0/fuse/debugger/Makefile.am vendor/fuse-emulator/0.10.0/fuse/debugger/breakpoint.c vendor/fuse-emulator/0.10.0/fuse/debugger/breakpoint.h vendor/fuse-emulator/0.10.0/fuse/debugger/command.c vendor/fuse-emulator/0.10.0/fuse/debugger/commandl.l vendor/fuse-emulator/0.10.0/fuse/debugger/commandy.y vendor/fuse-emulator/0.10.0/fuse/debugger/debugger.c vendor/fuse-emulator/0.10.0/fuse/debugger/debugger.h vendor/fuse-emulator/0.10.0/fuse/debugger/debugger_internals.h vendor/fuse-emulator/0.10.0/fuse/debugger/disassemble.c vendor/fuse-emulator/0.10.0/fuse/debugger/event.c vendor/fuse-emulator/0.10.0/fuse/debugger/expression.c vendor/fuse-emulator/0.10.0/fuse/debugger/variable.c vendor/fuse-emulator/0.10.0/fuse/disk/ vendor/fuse-emulator/0.10.0/fuse/disk/Makefile.am vendor/fuse-emulator/0.10.0/fuse/disk/beta.c vendor/fuse-emulator/0.10.0/fuse/disk/beta.h vendor/fuse-emulator/0.10.0/fuse/disk/crc.c vendor/fuse-emulator/0.10.0/fuse/disk/crc.h vendor/fuse-emulator/0.10.0/fuse/disk/disk.c vendor/fuse-emulator/0.10.0/fuse/disk/disk.h vendor/fuse-emulator/0.10.0/fuse/disk/fdd.c vendor/fuse-emulator/0.10.0/fuse/disk/fdd.h vendor/fuse-emulator/0.10.0/fuse/disk/plusd.c vendor/fuse-emulator/0.10.0/fuse/disk/plusd.h vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.h vendor/fuse-emulator/0.10.0/fuse/disk/wd_fdc.c vendor/fuse-emulator/0.10.0/fuse/disk/wd_fdc.h vendor/fuse-emulator/0.10.0/fuse/display.c vendor/fuse-emulator/0.10.0/fuse/display.h vendor/fuse-emulator/0.10.0/fuse/divide.c vendor/fuse-emulator/0.10.0/fuse/divide.h vendor/fuse-emulator/0.10.0/fuse/event.c vendor/fuse-emulator/0.10.0/fuse/event.h vendor/fuse-emulator/0.10.0/fuse/fuse.c vendor/fuse-emulator/0.10.0/fuse/fuse.h vendor/fuse-emulator/0.10.0/fuse/hacking/ vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog vendor/fuse-emulator/0.10.0/fuse/hacking/Makefile.am vendor/fuse-emulator/0.10.0/fuse/hacking/coding_style.txt vendor/fuse-emulator/0.10.0/fuse/hacking/cvs-tags vendor/fuse-emulator/0.10.0/fuse/hacking/implementation_notes.txt vendor/fuse-emulator/0.10.0/fuse/hacking/input.txt vendor/fuse-emulator/0.10.0/fuse/hacking/sound.txt vendor/fuse-emulator/0.10.0/fuse/hacking/tc2048_tech_notes.txt vendor/fuse-emu... [truncated message content] |
From: <fr...@us...> - 2008-12-04 12:05:12
|
Revision: 560 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=560&view=rev Author: fredm Date: 2008-12-04 12:05:08 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Remove accidental 0.10.0 release tag. Removed Paths: ------------- vendor/fuse-emulator/0.10.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 11:42:06
|
Revision: 558 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=558&view=rev Author: fredm Date: 2008-12-04 11:37:00 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Merge in changes from vendor 0.10.0 release. Modified Paths: -------------- trunk/FuseGenerator/config.h trunk/FuseImporter/config.h trunk/fuse/README trunk/fuse/compat/amiga/paths.c trunk/fuse/configure.in trunk/fuse/disk/disk.c trunk/fuse/disk/upd_fdc.c trunk/fuse/fuse.c trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist trunk/fuse/fusepb/config.h trunk/fuse/hacking/ChangeLog trunk/fuse/man/fuse.1 trunk/fuse/rzx.c trunk/fuse/scld.c trunk/fuse/utils.c trunk/libspectrum/Info.plist trunk/libspectrum/config.h trunk/libspectrum/libspectrum/ChangeLog trunk/libspectrum/libspectrum/Makefile.am trunk/libspectrum/libspectrum/README trunk/libspectrum/libspectrum/configure.in trunk/libspectrum/libspectrum/doc/libspectrum.3 trunk/libspectrum/libspectrum/doc/libspectrum.txt trunk/libspectrum/libspectrum/hacking/ChangeLog trunk/libspectrum/libspectrum/test/Makefile.am trunk/libspectrum/libspectrum/timings.c trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj Property Changed: ---------------- trunk/fuse/ trunk/libspectrum/libspectrum/ Modified: trunk/FuseGenerator/config.h =================================================================== --- trunk/FuseGenerator/config.h 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/FuseGenerator/config.h 2008-12-04 11:37:00 UTC (rev 558) @@ -83,7 +83,7 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "0.2.2" +#define VERSION "0.5.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ Modified: trunk/FuseImporter/config.h =================================================================== --- trunk/FuseImporter/config.h 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/FuseImporter/config.h 2008-12-04 11:37:00 UTC (rev 558) @@ -83,7 +83,7 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "0.2.2" +#define VERSION "0.5.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ Property changes on: trunk/fuse ___________________________________________________________________ Modified: svn:mergeinfo - /vendor/fuse-emulator/0.10.0-pre1/fuse:545-546 /vendor/fuse-emulator/current/fuse:530-538 + /vendor/fuse-emulator/0.10.0/fuse:556-557 /vendor/fuse-emulator/0.10.0-pre1/fuse:545-546 /vendor/fuse-emulator/current/fuse:530-538 Modified: trunk/fuse/README =================================================================== --- trunk/fuse/README 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/README 2008-12-04 11:37:00 UTC (rev 558) @@ -1,5 +1,5 @@ -The Free Unix Spectrum Emulator (Fuse) 0.9.0 -============================================ +The Free Unix Spectrum Emulator (Fuse) 0.10.0 +============================================= Fuse (the Free Unix Spectrum Emulator) was originally, and somewhat unsurprisingly, an emulator of the ZX Spectrum (a popular 1980s home @@ -150,6 +150,6 @@ ( http://www.worldofspectrum.org/faq/index.html ) first! Philip Kendall <phi...@sh...> -5 January 2008 +3 December 2008 -$Id: README 3801 2008-10-31 16:22:13Z pak21 $ +$Id: README 3866 2008-11-29 17:05:40Z pak21 $ Modified: trunk/fuse/compat/amiga/paths.c =================================================================== --- trunk/fuse/compat/amiga/paths.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/compat/amiga/paths.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* paths.c: Path-related compatibility routines Copyright (c) 1999-2007 Philip Kendall - $Id: paths.c 3578 2008-03-22 20:51:36Z zubzero $ + $Id: paths.c 3844 2008-11-19 21:31:07Z fredm $ 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 @@ -42,6 +42,5 @@ int compat_is_absolute_path( const char *path ) { - /* Is this correct? */ - return path[0] == '/'; + return strchr(path,':'); } Modified: trunk/fuse/configure.in =================================================================== --- trunk/fuse/configure.in 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/configure.in 2008-12-04 11:37:00 UTC (rev 558) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 3827 2008-11-17 21:19:48Z pak21 $ +dnl $Id: configure.in 3866 2008-11-29 17:05:40Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ AC_CANONICAL_SYSTEM dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(fuse, 0.10.0-pre1) +AM_INIT_AUTOMAKE(fuse, 0.10.0) dnl Checks for programs. AC_PROG_CC Modified: trunk/fuse/disk/disk.c =================================================================== --- trunk/fuse/disk/disk.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/disk/disk.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* disk.c: Routines for handling disk images Copyright (c) 2007 Gergely Szasz - $Id: disk.c 3815 2008-11-09 19:19:59Z pak21 $ + $Id: disk.c 3858 2008-11-29 11:15:22Z fredm $ 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 @@ -966,6 +966,13 @@ return d->status = DISK_OK; } +#define CPC_ISSUE_NONE 0 +#define CPC_ISSUE_1 1 +#define CPC_ISSUE_2 2 +#define CPC_ISSUE_3 3 +#define CPC_ISSUE_4 4 +#define CPC_ISSUE_5 5 + static int open_cpc( buffer_t *buffer, disk_t *d, int preindex ) { @@ -1009,35 +1016,45 @@ 256 * buff[ 0x1f + 8 * j ] : 0x80 << buff[ 0x1b + 8 * j ]; idlen = 0x80 << buff[ 0x1b + 8 * j ]; /* sector length from ID */ - bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, idlen, gap ); - trlen += seclen; + if( idlen != 0 && idlen <= ( 0x80 << 0x08 ) && /* idlen is o.k. */ + seclen > idlen && seclen % idlen ) /* seclen != N * len */ + return d->status = DISK_OPEN; + + bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, seclen > idlen ? idlen : seclen, gap ); if( i < 84 && d->flag & DISK_FLAG_PLUS3_CPC ) { if( j == 0 && buff[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) - plus3_fix = 4; - else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) - plus3_fix = 1; + plus3_fix = CPC_ISSUE_4; + else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) + plus3_fix = CPC_ISSUE_1; else if( j == 0 && buff[ 0x18 + 8 * j ] == j && buff[ 0x19 + 8 * j ] == j && buff[ 0x1a + 8 * j ] == j && buff[ 0x1b + 8 * j ] == j ) - plus3_fix = 3; - else if( j == 1 && plus3_fix == 1 && buff[ 0x1b + 8 * j ] == 2 ) - plus3_fix = 2; - else if( j > 1 && plus3_fix == 2 && buff[ 0x1b + 8 * j ] != 2 ) - plus3_fix = 0; - else if( j > 0 && plus3_fix == 3 && + plus3_fix = CPC_ISSUE_3; + else if( j == 1 && plus3_fix == CPC_ISSUE_1 && + buff[ 0x1b + 8 * j ] == 2 ) + plus3_fix = CPC_ISSUE_2; + else if( i == 38 && j == 0 && buff[ 0x1b + 8 * j ] == 2 ) + plus3_fix = CPC_ISSUE_5; + else if( j > 1 && plus3_fix == CPC_ISSUE_2 && buff[ 0x1b + 8 * j ] != 2 ) + plus3_fix = CPC_ISSUE_NONE; + else if( j > 0 && plus3_fix == CPC_ISSUE_3 && ( buff[ 0x18 + 8 * j ] != j || buff[ 0x19 + 8 * j ] != j || buff[ 0x1a + 8 * j ] != j || buff[ 0x1b + 8 * j ] != j ) ) - plus3_fix = 0; - else if( j > 10 && plus3_fix == 2 ) - plus3_fix = 0; + plus3_fix = CPC_ISSUE_NONE; + else if( j > 10 && plus3_fix == CPC_ISSUE_2 ) + plus3_fix = CPC_ISSUE_NONE; + else if( i == 38 && j > 0 && plus3_fix == CPC_ISSUE_5 && + buff[ 0x1b + 8 * j ] != 2 - ( j & 1 ) ) + plus3_fix = CPC_ISSUE_NONE; } + trlen += seclen; if( seclen == 0x80 ) /* every 128byte length sector padded */ sector_pad++; } if( i < 84 ) { fix[i] = plus3_fix; - if( fix[i] == 4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ - else if( fix[i] != 0 ) bpt = 6250;/* we assume a standard DD track */ + if( fix[i] == CPC_ISSUE_4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ + else if( fix[i] != CPC_ISSUE_NONE ) bpt = 6250;/* we assume a standard DD track */ } buffer->index += trlen + sector_pad * 128 + 256; if( bpt > max_bpt ) @@ -1064,20 +1081,16 @@ if( preindex) preindex_add( d, gap ); postindex_add( d, gap ); - trlen = 0; + for( j = 0; j < hdrb[0x15]; j++ ) { /* each sector */ seclen = d->type == DISK_ECPC ? hdrb[ 0x1e + 8 * j ] + /* data length in sector */ 256 * hdrb[ 0x1f + 8 * j ] : 0x80 << hdrb[ 0x1b + 8 * j ]; idlen = 0x80 << hdrb[ 0x1b + 8 * j ]; /* sector length from ID */ - trlen += seclen; if( idlen == 0 || idlen > ( 0x80 << 0x08 ) ) /* error in sector length code -> ignore */ idlen = seclen; - if( seclen > idlen && seclen % idlen ) /* seclen != N * len */ - return d->status = DISK_OPEN; - if( i < 84 && fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ d->i = 8; } @@ -1086,35 +1099,49 @@ hdrb[ 0x1c + 8 * j ] & 0x20 && !( hdrb[ 0x1d + 8 * j ] & 0x20 ) ? CRC_ERROR : CRC_OK ); - if( i < 84 && fix[i] == 1 && j == 0 ) { /* 6144 */ + if( i < 84 && fix[i] == CPC_ISSUE_1 && j == 0 ) { /* 6144 */ data_add( d, buffer, NULL, seclen, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - } else if( i < 84 && fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ + } else if( i < 84 && fix[i] == CPC_ISSUE_2 && j == 0 ) { /* 6144, 10x512 */ datamark_add( d, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); gap_add( d, 2, gap ); buffer->index += seclen; - } else if( i < 84 && fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ + } else if( i < 84 && fix[i] == CPC_ISSUE_3 ) { /* 128, 256, 512, ... 4096k */ data_add( d, buffer, NULL, 128, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); buffer->index += seclen - 128; - } else if( i < 84 && fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ + } else if( i < 84 && fix[i] == CPC_ISSUE_4 ) { /* Nx8192 (max 6384 byte ) */ data_add( d, buffer, NULL, 6384, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); buffer->index += seclen - 6384; + } else if( i < 84 && fix[i] == CPC_ISSUE_5 ) { /* 9x512 */ + /* 512 256 512 256 512 256 512 256 512 */ + if( idlen == 256 ) { + data_add( d, NULL, buff, 512, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? + CRC_ERROR : CRC_OK, 0x00 ); + buffer->index += idlen; + } else { + data_add( d, buffer, NULL, idlen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? + CRC_ERROR : CRC_OK, 0x00 ); + } } else { - data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, - hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); if( seclen > idlen ) { /* weak sector with multiple copy */ - buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * - ( 0x80 << hdrb[ 0x1b + 8 * j ] ); + buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * + ( 0x80 << hdrb[ 0x1b + 8 * j ] ); /* ( ( N * len ) / len - 1 ) * len */ } } Modified: trunk/fuse/disk/upd_fdc.c =================================================================== --- trunk/fuse/disk/upd_fdc.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/disk/upd_fdc.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* upd_fdc.c: NEC floppy disk controller emulation Copyright (c) 2007 Gergely Szasz - $Id: upd_fdc.c 3802 2008-11-02 17:06:41Z pak21 $ + $Id: upd_fdc.c 3858 2008-11-29 11:15:22Z fredm $ 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 @@ -905,15 +905,18 @@ f->data_offset++; } } - if( f->data_offset == f->sector_length ) { /* read the CRC */ + if( ( f->cmd->id == UPD_CMD_READ_DIAG && f->data_offset == f->rlen ) || + ( f->cmd->id == UPD_CMD_READ_DATA && f->data_offset == f->sector_length ) ) { /* read the CRC */ fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); if( f->crc != 0x000 ) { f->status_register[2] |= UPD_FDC_ST2_DATA_ERROR; f->status_register[1] |= UPD_FDC_ST1_CRC_ERROR; - f->status_register[0] |= UPD_FDC_ST0_INT_ABNORM; - cmd_result( f ); /* set up result phase */ - return r; + if( f->cmd->id == UPD_CMD_READ_DATA ) { /* READ DIAG not aborted! */ + f->status_register[0] |= UPD_FDC_ST0_INT_ABNORM; + cmd_result( f ); /* set up result phase */ + return r; + } } if( f->cmd->id == UPD_CMD_READ_DATA ) { Modified: trunk/fuse/fuse.c =================================================================== --- trunk/fuse/fuse.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/fuse.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2008 Philip Kendall - $Id: fuse.c 3807 2008-11-08 15:17:00Z pak21 $ + $Id: fuse.c 3868 2008-12-01 21:00:58Z pak21 $ 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 @@ -103,7 +103,7 @@ libspectrum_creator *fuse_creator; /* The earliest version of libspectrum we need */ -static const char *LIBSPECTRUM_MIN_VERSION = "0.2.0.1"; +static const char *LIBSPECTRUM_MIN_VERSION = "0.5.0"; /* The various types of file we may want to run on startup */ typedef struct start_files_t { Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/fusepb/Info-Fuse.plist 2008-12-04 11:37:00 UTC (rev 558) @@ -476,11 +476,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>0.9.0</string> + <string>0.10.0</string> <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>0.10.0-pre1</string> + <string>0.10.0</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> Modified: trunk/fuse/fusepb/config.h =================================================================== --- trunk/fuse/fusepb/config.h 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/fusepb/config.h 2008-12-04 11:37:00 UTC (rev 558) @@ -152,7 +152,7 @@ /* #undef USE_WIDGET */ /* Version number of package */ -#define VERSION "0.10.0-pre1" +#define VERSION "0.10.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/hacking/ChangeLog 2008-12-04 11:37:00 UTC (rev 558) @@ -2936,3 +2936,21 @@ register port (thanks, Mark Woodmass). 20081117 ocnfigure.in: bump version number for 0.10.0-pre1 release (Release_0_10_0-branch). +20081118 rzx.c: don't autosave rzx snapshots when we are recording in compo + mode (Fred). +20081119 disk/{disk.c,upd_fdc.c}: fix READ_DIAG emlation bugs to support + LERM Plus-3-Mate (fixes bug #2312217) (Gergely Szasz). +20081120 compat/amiga/paths.c: implement compat_is_absolute_path for Amiga + (final part of patch #1712260) (Chris Young). +20081120 utils.c: don't switch machine on autoloading a Timex dock cart if we + can already support them (Fred). +20081122 disk/disk.c: fix a track length calculation bug (more of bug #2312217) + (Gergely Szasz). +20081125 scld.c: fix loading of dock/exrom information from snapshots (Fred). +20081129 disk/disk.c: limit weak sector handling to fix Coin-Op Hits (more of + bug #2312217) (Gergely Szasz). +20081129 disk/disk.c: one instance of plus3_fix wasn't updated (thanks, Stuart + Brady) (Fred). +20081129 configure.in,man/fuse.1,README: final tweaks for 0.10.0 release + (Release_0_10_0-branch). +20081201 fuse.c: update libspectrum version needed (Release_0_10_0-branch). Modified: trunk/fuse/man/fuse.1 =================================================================== --- trunk/fuse/man/fuse.1 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/man/fuse.1 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ .\" -*- nroff -*- .\" .\" fuse.1: Fuse man page -.\" Copyright (c) 2001-2007 Russell Marks, Philip Kendall, Darren Salt, +.\" Copyright (c) 2001-2008 Russell Marks, Philip Kendall, Darren Salt, .\" Fredrick Meunier, Stuart Brady .\" .\" This program is free software; you can redistribute it and/or modify @@ -23,7 +23,7 @@ .\" E-mail: phi...@sh... .\" .\" -.TH fuse 1 "5th January, 2008" "Version 0.9.0" "Emulators" +.TH fuse 1 "3rd December, 2008" "Version 0.10.0" "Emulators" .\" .\"------------------------------------------------------------------ .\" Modified: trunk/fuse/rzx.c =================================================================== --- trunk/fuse/rzx.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/rzx.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* rzx.c: .rzx files Copyright (c) 2002-2003 Philip Kendall - $Id: rzx.c 3787 2008-10-22 19:10:25Z pak21 $ + $Id: rzx.c 3836 2008-11-18 04:24:34Z fredm $ 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 @@ -474,7 +474,8 @@ } - if( settings_current.rzx_autosaves ) autosave_frame(); + if( !rzx_competition_mode && settings_current.rzx_autosaves ) + autosave_frame(); return 0; } Modified: trunk/fuse/scld.c =================================================================== --- trunk/fuse/scld.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/scld.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* scld.c: Routines for handling the Timex SCLD Copyright (c) 2002-2006 Fredrick Meunier, Philip Kendall, Witold Filipczyk - $Id: scld.c 3389 2007-12-03 12:54:17Z fredm $ + $Id: scld.c 3849 2008-11-25 02:10:31Z fredm $ 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 @@ -181,6 +181,27 @@ } } +static int +scld_dock_exrom_from_snapshot( memory_page *dest, int page_num, int writable, + void *source ) +{ + dest->offset = 0; + dest->page_num = page_num; + dest->writable = writable; + dest->source = MEMORY_SOURCE_CARTRIDGE; + dest->page = + memory_pool_allocate( MEMORY_PAGE_SIZE * sizeof( libspectrum_byte ) ); + if( !dest->page ) { + ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, + __LINE__ ); + return 1; + } + + memcpy( dest->page, source, MEMORY_PAGE_SIZE ); + + return 0; +} + static void scld_from_snapshot( libspectrum_snap *snap ) { @@ -201,43 +222,17 @@ for( i = 0; i < 8; i++ ) { if( libspectrum_snap_dock_cart( snap, i ) ) { - if( !memory_map_dock[i]->page ) { - memory_map_dock[i]->offset = 0; - memory_map_dock[i]->page_num = 0; - memory_map_dock[i]->writable = libspectrum_snap_dock_ram( snap, i ); - memory_map_dock[i]->source = MEMORY_SOURCE_CARTRIDGE; - memory_map_dock[i]->page = memory_pool_allocate( - MEMORY_PAGE_SIZE * - sizeof( libspectrum_byte ) ); - if( !memory_map_dock[i]->page ) { - ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, - __LINE__ ); - return; - } - } - - memcpy( memory_map_dock[i]->page, libspectrum_snap_dock_cart( snap, i ), - MEMORY_PAGE_SIZE ); + if( scld_dock_exrom_from_snapshot( memory_map_dock[i], i, + libspectrum_snap_dock_ram( snap, i ), + libspectrum_snap_dock_cart( snap, i ) ) ) + return; } if( libspectrum_snap_exrom_cart( snap, i ) ) { - if( !memory_map_dock[i]->page ) { - memory_map_exrom[i]->offset = 0; - memory_map_exrom[i]->page_num = 0; - memory_map_exrom[i]->writable = libspectrum_snap_exrom_ram( snap, i ); - memory_map_exrom[i]->source = MEMORY_SOURCE_CARTRIDGE; - memory_map_exrom[i]->page = memory_pool_allocate( - MEMORY_PAGE_SIZE * - sizeof( libspectrum_byte ) ); - if( !memory_map_exrom[i]->page ) { - ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, - __LINE__ ); - return; - } - } - - memcpy( memory_map_exrom[i]->page, - libspectrum_snap_exrom_cart( snap, i ), MEMORY_PAGE_SIZE ); + if( scld_dock_exrom_from_snapshot( memory_map_exrom[i], i, + libspectrum_snap_exrom_ram( snap, i ), + libspectrum_snap_exrom_cart( snap, i ) ) ) + return; } } @@ -247,6 +242,7 @@ machine_current->memory_map(); } + } static void Modified: trunk/fuse/utils.c =================================================================== --- trunk/fuse/utils.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/fuse/utils.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* utils.c: some useful helper functions Copyright (c) 1999-2008 Philip Kendall, Fredrick Meunier - $Id: utils.c 3807 2008-11-08 15:17:00Z pak21 $ + $Id: utils.c 3846 2008-11-20 07:17:21Z fredm $ 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 @@ -156,7 +156,10 @@ break; case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); if( error ) break; + if( !( machine_current->capabilities & + LIBSPECTRUM_MACHINE_CAPABILITY_TIMEX_DOCK ) ) { + error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); if( error ) break; + } error = dck_insert( filename ); break; Modified: trunk/libspectrum/Info.plist =================================================================== --- trunk/libspectrum/Info.plist 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/Info.plist 2008-12-04 11:37:00 UTC (rev 558) @@ -23,6 +23,6 @@ <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> - <string>0.5.0-pre1</string> + <string>0.5.0</string> </dict> </plist> Modified: trunk/libspectrum/config.h =================================================================== --- trunk/libspectrum/config.h 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/config.h 2008-12-04 11:37:00 UTC (rev 558) @@ -86,7 +86,7 @@ #define STDC_HEADERS 1 /* Version number of package */ -#define VERSION "0.4.0" +#define VERSION "0.5.0" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ Property changes on: trunk/libspectrum/libspectrum ___________________________________________________________________ Modified: svn:mergeinfo - /vendor/fuse-emulator/0.10.0-pre1/libspectrum:545-546 /vendor/fuse-emulator/current/libspectrum:530-538 + /vendor/fuse-emulator/0.10.0/libspectrum:556-557 /vendor/fuse-emulator/0.10.0-pre1/libspectrum:545-546 /vendor/fuse-emulator/current/libspectrum:530-538 Modified: trunk/libspectrum/libspectrum/ChangeLog =================================================================== --- trunk/libspectrum/libspectrum/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/ChangeLog 2008-12-04 11:37:00 UTC (rev 558) @@ -42,6 +42,8 @@ * Remove deprecated functions (Fredrick Meunier). + * Tweak timings for TS2068 (Fredrick Meunier; thanks Philip Kendall). + 2008-01-05 Philip Kendall <phi...@sh...> * libspectrum 0.4.0 released. @@ -269,5 +271,5 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog 3791 2008-10-27 20:20:40Z pak21 $ +$Id: ChangeLog 3867 2008-11-29 23:43:28Z fredm $ Modified: trunk/libspectrum/libspectrum/Makefile.am =================================================================== --- trunk/libspectrum/libspectrum/Makefile.am 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/Makefile.am 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2001-2004 Philip Kendall -## $Id: Makefile.am 3698 2008-06-30 15:12:02Z pak21 $ +## $Id: Makefile.am 3864 2008-11-29 16:45:36Z pak21 $ ## 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 @@ -58,7 +58,7 @@ zlib.c \ zxs.c -libspectrum_la_LDFLAGS = -version-info 6:0:1 -no-undefined +libspectrum_la_LDFLAGS = -version-info 7:0:0 -no-undefined libspectrum_la_LIBADD = @AUDIOFILE_LIBS@ -lm Modified: trunk/libspectrum/libspectrum/README =================================================================== --- trunk/libspectrum/libspectrum/README 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/README 2008-12-04 11:37:00 UTC (rev 558) @@ -1,4 +1,4 @@ -libspectrum 0.4.0 +libspectrum 0.5.0 ================= libspectrum is a library which is designed to make the input and @@ -13,6 +13,8 @@ * Tape images: .tzx, .tap, .spc, .sta and .ltp (read/write) and Warajevo .tap, Z80Em and CSW version 1 (read only). * Input recordings: .rzx (read/write). +* Disk images: .dsk (both plain and extended), .fdi, .sad, .scl, .td0, + .trd and .udi (identification only). * Timex cartridges: .dck (read only). * IDE hard disk images: .hdf (read/write). * Microdrive cartridge images: .mdr (read/write). @@ -50,6 +52,6 @@ running 'configure' for the first time. Philip Kendall <phi...@sh...> -5 January 2008 +3 December 2008 -$Id: README 3795 2008-10-27 21:02:43Z pak21 $ +$Id: README 3864 2008-11-29 16:45:36Z pak21 $ Modified: trunk/libspectrum/libspectrum/configure.in =================================================================== --- trunk/libspectrum/libspectrum/configure.in 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/configure.in 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. -dnl Copyright (c) 1999-2004 Philip Kendall +dnl Copyright (c) 1999-2008 Philip Kendall -dnl $Id: configure.in 3825 2008-11-17 21:10:27Z pak21 $ +dnl $Id: configure.in 3864 2008-11-29 16:45:36Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ AM_CONFIG_HEADER(config.h) dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(libspectrum, 0.5.0-pre1) +AM_INIT_AUTOMAKE(libspectrum, 0.5.0) dnl Checks for programs. AC_PROG_CC @@ -108,6 +108,7 @@ 1.2.0, AC_DEFINE([HAVE_LIB_GLIB], 1, [Defined if we've got glib]) LIBS="$LIBS `glib-config --libs`", + glib=no AC_MSG_WARN(glib not found - using internal replacement) ) fi Modified: trunk/libspectrum/libspectrum/doc/libspectrum.3 =================================================================== --- trunk/libspectrum/libspectrum/doc/libspectrum.3 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/doc/libspectrum.3 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ .\" -*- nroff -*- .\" .\" libspectrum.3: libspectrum summary -.\" Copyright (c) 2004-2007 Philip Kendall +.\" Copyright (c) 2004-2008 Philip Kendall .\" .\" 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 @@ -22,7 +22,7 @@ .\" E-mail: phi...@sh... .\" .\" -.TH libspectrum 3 "5th January, 2008" "Version 0.4.0" "Emulators" +.TH libspectrum 3 "3rd December, 2008" "Version 0.5.0" "Emulators" .\" .\"------------------------------------------------------------------ .\" @@ -50,6 +50,9 @@ .IP \(bu 2 Input recordings: .rzx (read/write). .IP \(bu 2 +Disk images: .dsk (both plain and extended), .fdi, .sad, .scl, .td0, .trd +and .udi (identification only). +.IP \(bu 2 Timex cartridges: .dck (read only). .IP \(bu 2 IDE hard disk images: .hdf (read/write). Modified: trunk/libspectrum/libspectrum/doc/libspectrum.txt =================================================================== --- trunk/libspectrum/libspectrum/doc/libspectrum.txt 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/doc/libspectrum.txt 2008-12-04 11:37:00 UTC (rev 558) @@ -1,4 +1,4 @@ -libspectrum 0.4.0 +libspectrum 0.5.0 ================= libspectrum is a fairly simple library designed to make the handling @@ -1687,4 +1687,4 @@ Write `data' to register `reg' of the IDE channel `chn'. -$Id: libspectrum.txt 3816 2008-11-10 11:13:18Z pak21 $ +$Id: libspectrum.txt 3864 2008-11-29 16:45:36Z pak21 $ Modified: trunk/libspectrum/libspectrum/hacking/ChangeLog =================================================================== --- trunk/libspectrum/libspectrum/hacking/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/hacking/ChangeLog 2008-12-04 11:37:00 UTC (rev 558) @@ -700,3 +700,13 @@ (libspectrum_0_5_0-branch). 20081117 configure.in: bump version number for 0.5.0-pre1 release (libspectrum_0_5_0-branch). +20081118 test/Makefile.am: distribute empty.z80 and writeprotected.mdr test + data files (Fred). +20081118 configure.in: set glib status off if we can't find it (thanks, Chris + Young) (Fred). +20081129 timings.c: correct first contended tstate for TS2068 based on updated + fusetest from Phil (Fred). +20081129 configure.in,doc/libspectrum.{3,txt},hacking/ChangeLog,Makefile.am, + README: final tweaks for 0.5.0 release (libspectrum_0_5_0-branch). +20081130 ChangeLog: add reference to TS2068 timing update + (libspectrum_0_5_0-branch) (Fred). Modified: trunk/libspectrum/libspectrum/test/Makefile.am =================================================================== --- trunk/libspectrum/libspectrum/test/Makefile.am 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/test/Makefile.am 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2007 Philip Kendall -## $Id: Makefile.am 3691 2008-06-25 15:26:10Z pak21 $ +## $Id: Makefile.am 3834 2008-11-18 04:17:15Z fredm $ ## 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 @@ -42,23 +42,25 @@ EXTRA_DIST += \ test/Makefile.am \ test/complete-tzx.pl \ + test/empty-drb.tzx \ test/empty.csw \ - test/empty-drb.tzx \ - test/invalid.gz \ - test/invalid.szx \ - test/invalid.tzx \ + test/empty.z80 \ test/invalid-archiveinfo.tzx \ test/invalid-custominfo.tzx \ test/invalid-gdb.tzx \ test/invalid-hardwareinfo.tzx \ test/invalid-warajevo-blockoffset.tap \ + test/invalid.gz \ + test/invalid.szx \ + test/invalid.tzx \ test/jump.tzx \ test/loop.tzx \ test/loop2.tzx \ test/loopend.tzx \ test/sp-2000.sna.gz \ test/sp-ffff.sna.gz \ - test/turbo-zeropilot.tzx + test/turbo-zeropilot.tzx \ + test/writeprotected.mdr CLEANFILES += \ test/.libs/test \ Modified: trunk/libspectrum/libspectrum/timings.c =================================================================== --- trunk/libspectrum/libspectrum/timings.c 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum/timings.c 2008-12-04 11:37:00 UTC (rev 558) @@ -1,7 +1,7 @@ /* timings.c: Timing routines Copyright (c) 2003 Philip Kendall - $Id: timings.c 3296 2007-11-12 11:45:22Z fredm $ + $Id: timings.c 3859 2008-11-29 11:24:42Z fredm $ 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 @@ -86,7 +86,7 @@ /* SE */ { 3500000, 1750000, 24, 128, 24, 48, 47, 192, 48, 25, 32, 14336 }, /* TS2068 */ - { 3528000, 1764000, 24, 128, 24, 48, 24, 192, 25, 21, 32, 9184 }, + { 3528000, 1764000, 24, 128, 24, 48, 24, 192, 25, 21, 32, 9169 }, /* Pentagon 512K */ { 3584000, 1792000, 36, 128, 28, 32, 64, 192, 48, 16, 36, 17988 }, /* Pentagon 1024K */ Modified: trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj =================================================================== --- trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj 2008-12-04 10:57:47 UTC (rev 557) +++ trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj 2008-12-04 11:37:00 UTC (rev 558) @@ -391,8 +391,8 @@ isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; - DYLIB_COMPATIBILITY_VERSION = 6; - DYLIB_CURRENT_VERSION = 6.0.1; + DYLIB_COMPATIBILITY_VERSION = 7; + DYLIB_CURRENT_VERSION = 7.0.0; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", @@ -402,7 +402,7 @@ FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"$(SRCROOT)/../bzip2/build/Deployment\""; FRAMEWORK_SEARCH_PATHS_QUOTED_2 = "\"$(SRCROOT)/../libgcrypt/build/Deployment\""; FRAMEWORK_SEARCH_PATHS_QUOTED_3 = "\"$(SRCROOT)/../audiofile/build/Deployment\""; - FRAMEWORK_VERSION = "0.5.0-pre1"; + FRAMEWORK_VERSION = 0.5.0; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_GENERATE_DEBUGGING_SYMBOLS = YES; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 11:42:05
|
Revision: 559 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=559&view=rev Author: fredm Date: 2008-12-04 11:41:34 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Add extra information to changelog. Modified Paths: -------------- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-12-04 11:37:00 UTC (rev 558) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-12-04 11:41:34 UTC (rev 559) @@ -89,8 +89,12 @@ protection flag correctly (Philip Kendall).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Allow MDR images with bad checksums to load (the error will be handled by the IF1 ROM) -(Gergely Szasz).<br> - </font></li> +(Gergely Szasz).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Don't switch machine +on autoloading a Timex dock cart if we can already support them in the +current machine (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Fix loading of +DOCK/EXROM information from Timex snapshots (Fredrick Meunier).</font></li> <ul> </ul> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 10:57:52
|
Revision: 557 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=557&view=rev Author: fredm Date: 2008-12-04 10:57:47 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Import vendor 0.10.0 release. Modified Paths: -------------- vendor/fuse-emulator/0.10.0/fuse/README vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c vendor/fuse-emulator/0.10.0/fuse/configure.in vendor/fuse-emulator/0.10.0/fuse/disk/disk.c vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c vendor/fuse-emulator/0.10.0/fuse/fuse.c vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog vendor/fuse-emulator/0.10.0/fuse/man/fuse.1 vendor/fuse-emulator/0.10.0/fuse/rzx.c vendor/fuse-emulator/0.10.0/fuse/scld.c vendor/fuse-emulator/0.10.0/fuse/utils.c vendor/fuse-emulator/0.10.0/libspectrum/ChangeLog vendor/fuse-emulator/0.10.0/libspectrum/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/README vendor/fuse-emulator/0.10.0/libspectrum/configure.in vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.3 vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.txt vendor/fuse-emulator/0.10.0/libspectrum/hacking/ChangeLog vendor/fuse-emulator/0.10.0/libspectrum/test/Makefile.am vendor/fuse-emulator/0.10.0/libspectrum/timings.c Modified: vendor/fuse-emulator/0.10.0/fuse/README =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/README 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/README 2008-12-04 10:57:47 UTC (rev 557) @@ -1,5 +1,5 @@ -The Free Unix Spectrum Emulator (Fuse) 0.9.0 -============================================ +The Free Unix Spectrum Emulator (Fuse) 0.10.0 +============================================= Fuse (the Free Unix Spectrum Emulator) was originally, and somewhat unsurprisingly, an emulator of the ZX Spectrum (a popular 1980s home @@ -150,6 +150,6 @@ ( http://www.worldofspectrum.org/faq/index.html ) first! Philip Kendall <phi...@sh...> -5 January 2008 +3 December 2008 -$Id: README 3801 2008-10-31 16:22:13Z pak21 $ +$Id: README 3866 2008-11-29 17:05:40Z pak21 $ Modified: vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/compat/amiga/paths.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* paths.c: Path-related compatibility routines Copyright (c) 1999-2007 Philip Kendall - $Id: paths.c 3578 2008-03-22 20:51:36Z zubzero $ + $Id: paths.c 3844 2008-11-19 21:31:07Z fredm $ 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 @@ -42,6 +42,5 @@ int compat_is_absolute_path( const char *path ) { - /* Is this correct? */ - return path[0] == '/'; + return strchr(path,':'); } Modified: vendor/fuse-emulator/0.10.0/fuse/configure.in =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/configure.in 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/configure.in 2008-12-04 10:57:47 UTC (rev 557) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 3827 2008-11-17 21:19:48Z pak21 $ +dnl $Id: configure.in 3866 2008-11-29 17:05:40Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ AC_CANONICAL_SYSTEM dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(fuse, 0.10.0-pre1) +AM_INIT_AUTOMAKE(fuse, 0.10.0) dnl Checks for programs. AC_PROG_CC Modified: vendor/fuse-emulator/0.10.0/fuse/disk/disk.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/disk/disk.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/disk/disk.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* disk.c: Routines for handling disk images Copyright (c) 2007 Gergely Szasz - $Id: disk.c 3815 2008-11-09 19:19:59Z pak21 $ + $Id: disk.c 3858 2008-11-29 11:15:22Z fredm $ 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 @@ -966,6 +966,13 @@ return d->status = DISK_OK; } +#define CPC_ISSUE_NONE 0 +#define CPC_ISSUE_1 1 +#define CPC_ISSUE_2 2 +#define CPC_ISSUE_3 3 +#define CPC_ISSUE_4 4 +#define CPC_ISSUE_5 5 + static int open_cpc( buffer_t *buffer, disk_t *d, int preindex ) { @@ -1009,35 +1016,45 @@ 256 * buff[ 0x1f + 8 * j ] : 0x80 << buff[ 0x1b + 8 * j ]; idlen = 0x80 << buff[ 0x1b + 8 * j ]; /* sector length from ID */ - bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, idlen, gap ); - trlen += seclen; + if( idlen != 0 && idlen <= ( 0x80 << 0x08 ) && /* idlen is o.k. */ + seclen > idlen && seclen % idlen ) /* seclen != N * len */ + return d->status = DISK_OPEN; + + bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, seclen > idlen ? idlen : seclen, gap ); if( i < 84 && d->flag & DISK_FLAG_PLUS3_CPC ) { if( j == 0 && buff[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) - plus3_fix = 4; - else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) - plus3_fix = 1; + plus3_fix = CPC_ISSUE_4; + else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) + plus3_fix = CPC_ISSUE_1; else if( j == 0 && buff[ 0x18 + 8 * j ] == j && buff[ 0x19 + 8 * j ] == j && buff[ 0x1a + 8 * j ] == j && buff[ 0x1b + 8 * j ] == j ) - plus3_fix = 3; - else if( j == 1 && plus3_fix == 1 && buff[ 0x1b + 8 * j ] == 2 ) - plus3_fix = 2; - else if( j > 1 && plus3_fix == 2 && buff[ 0x1b + 8 * j ] != 2 ) - plus3_fix = 0; - else if( j > 0 && plus3_fix == 3 && + plus3_fix = CPC_ISSUE_3; + else if( j == 1 && plus3_fix == CPC_ISSUE_1 && + buff[ 0x1b + 8 * j ] == 2 ) + plus3_fix = CPC_ISSUE_2; + else if( i == 38 && j == 0 && buff[ 0x1b + 8 * j ] == 2 ) + plus3_fix = CPC_ISSUE_5; + else if( j > 1 && plus3_fix == CPC_ISSUE_2 && buff[ 0x1b + 8 * j ] != 2 ) + plus3_fix = CPC_ISSUE_NONE; + else if( j > 0 && plus3_fix == CPC_ISSUE_3 && ( buff[ 0x18 + 8 * j ] != j || buff[ 0x19 + 8 * j ] != j || buff[ 0x1a + 8 * j ] != j || buff[ 0x1b + 8 * j ] != j ) ) - plus3_fix = 0; - else if( j > 10 && plus3_fix == 2 ) - plus3_fix = 0; + plus3_fix = CPC_ISSUE_NONE; + else if( j > 10 && plus3_fix == CPC_ISSUE_2 ) + plus3_fix = CPC_ISSUE_NONE; + else if( i == 38 && j > 0 && plus3_fix == CPC_ISSUE_5 && + buff[ 0x1b + 8 * j ] != 2 - ( j & 1 ) ) + plus3_fix = CPC_ISSUE_NONE; } + trlen += seclen; if( seclen == 0x80 ) /* every 128byte length sector padded */ sector_pad++; } if( i < 84 ) { fix[i] = plus3_fix; - if( fix[i] == 4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ - else if( fix[i] != 0 ) bpt = 6250;/* we assume a standard DD track */ + if( fix[i] == CPC_ISSUE_4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ + else if( fix[i] != CPC_ISSUE_NONE ) bpt = 6250;/* we assume a standard DD track */ } buffer->index += trlen + sector_pad * 128 + 256; if( bpt > max_bpt ) @@ -1064,20 +1081,16 @@ if( preindex) preindex_add( d, gap ); postindex_add( d, gap ); - trlen = 0; + for( j = 0; j < hdrb[0x15]; j++ ) { /* each sector */ seclen = d->type == DISK_ECPC ? hdrb[ 0x1e + 8 * j ] + /* data length in sector */ 256 * hdrb[ 0x1f + 8 * j ] : 0x80 << hdrb[ 0x1b + 8 * j ]; idlen = 0x80 << hdrb[ 0x1b + 8 * j ]; /* sector length from ID */ - trlen += seclen; if( idlen == 0 || idlen > ( 0x80 << 0x08 ) ) /* error in sector length code -> ignore */ idlen = seclen; - if( seclen > idlen && seclen % idlen ) /* seclen != N * len */ - return d->status = DISK_OPEN; - if( i < 84 && fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ d->i = 8; } @@ -1086,35 +1099,49 @@ hdrb[ 0x1c + 8 * j ] & 0x20 && !( hdrb[ 0x1d + 8 * j ] & 0x20 ) ? CRC_ERROR : CRC_OK ); - if( i < 84 && fix[i] == 1 && j == 0 ) { /* 6144 */ + if( i < 84 && fix[i] == CPC_ISSUE_1 && j == 0 ) { /* 6144 */ data_add( d, buffer, NULL, seclen, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - } else if( i < 84 && fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ + } else if( i < 84 && fix[i] == CPC_ISSUE_2 && j == 0 ) { /* 6144, 10x512 */ datamark_add( d, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); gap_add( d, 2, gap ); buffer->index += seclen; - } else if( i < 84 && fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ + } else if( i < 84 && fix[i] == CPC_ISSUE_3 ) { /* 128, 256, 512, ... 4096k */ data_add( d, buffer, NULL, 128, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); buffer->index += seclen - 128; - } else if( i < 84 && fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ + } else if( i < 84 && fix[i] == CPC_ISSUE_4 ) { /* Nx8192 (max 6384 byte ) */ data_add( d, buffer, NULL, 6384, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); buffer->index += seclen - 6384; + } else if( i < 84 && fix[i] == CPC_ISSUE_5 ) { /* 9x512 */ + /* 512 256 512 256 512 256 512 256 512 */ + if( idlen == 256 ) { + data_add( d, NULL, buff, 512, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? + CRC_ERROR : CRC_OK, 0x00 ); + buffer->index += idlen; + } else { + data_add( d, buffer, NULL, idlen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? + CRC_ERROR : CRC_OK, 0x00 ); + } } else { - data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, - hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); if( seclen > idlen ) { /* weak sector with multiple copy */ - buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * - ( 0x80 << hdrb[ 0x1b + 8 * j ] ); + buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * + ( 0x80 << hdrb[ 0x1b + 8 * j ] ); /* ( ( N * len ) / len - 1 ) * len */ } } Modified: vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/disk/upd_fdc.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* upd_fdc.c: NEC floppy disk controller emulation Copyright (c) 2007 Gergely Szasz - $Id: upd_fdc.c 3802 2008-11-02 17:06:41Z pak21 $ + $Id: upd_fdc.c 3858 2008-11-29 11:15:22Z fredm $ 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 @@ -905,15 +905,18 @@ f->data_offset++; } } - if( f->data_offset == f->sector_length ) { /* read the CRC */ + if( ( f->cmd->id == UPD_CMD_READ_DIAG && f->data_offset == f->rlen ) || + ( f->cmd->id == UPD_CMD_READ_DATA && f->data_offset == f->sector_length ) ) { /* read the CRC */ fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); fdd_read_write_data( &d->fdd, FDD_READ ); crc_add( f, d ); if( f->crc != 0x000 ) { f->status_register[2] |= UPD_FDC_ST2_DATA_ERROR; f->status_register[1] |= UPD_FDC_ST1_CRC_ERROR; - f->status_register[0] |= UPD_FDC_ST0_INT_ABNORM; - cmd_result( f ); /* set up result phase */ - return r; + if( f->cmd->id == UPD_CMD_READ_DATA ) { /* READ DIAG not aborted! */ + f->status_register[0] |= UPD_FDC_ST0_INT_ABNORM; + cmd_result( f ); /* set up result phase */ + return r; + } } if( f->cmd->id == UPD_CMD_READ_DATA ) { Modified: vendor/fuse-emulator/0.10.0/fuse/fuse.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/fuse.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/fuse.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2008 Philip Kendall - $Id: fuse.c 3807 2008-11-08 15:17:00Z pak21 $ + $Id: fuse.c 3868 2008-12-01 21:00:58Z pak21 $ 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 @@ -103,7 +103,7 @@ libspectrum_creator *fuse_creator; /* The earliest version of libspectrum we need */ -static const char *LIBSPECTRUM_MIN_VERSION = "0.2.0.1"; +static const char *LIBSPECTRUM_MIN_VERSION = "0.5.0"; /* The various types of file we may want to run on startup */ typedef struct start_files_t { Modified: vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/hacking/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) @@ -2936,3 +2936,21 @@ register port (thanks, Mark Woodmass). 20081117 ocnfigure.in: bump version number for 0.10.0-pre1 release (Release_0_10_0-branch). +20081118 rzx.c: don't autosave rzx snapshots when we are recording in compo + mode (Fred). +20081119 disk/{disk.c,upd_fdc.c}: fix READ_DIAG emlation bugs to support + LERM Plus-3-Mate (fixes bug #2312217) (Gergely Szasz). +20081120 compat/amiga/paths.c: implement compat_is_absolute_path for Amiga + (final part of patch #1712260) (Chris Young). +20081120 utils.c: don't switch machine on autoloading a Timex dock cart if we + can already support them (Fred). +20081122 disk/disk.c: fix a track length calculation bug (more of bug #2312217) + (Gergely Szasz). +20081125 scld.c: fix loading of dock/exrom information from snapshots (Fred). +20081129 disk/disk.c: limit weak sector handling to fix Coin-Op Hits (more of + bug #2312217) (Gergely Szasz). +20081129 disk/disk.c: one instance of plus3_fix wasn't updated (thanks, Stuart + Brady) (Fred). +20081129 configure.in,man/fuse.1,README: final tweaks for 0.10.0 release + (Release_0_10_0-branch). +20081201 fuse.c: update libspectrum version needed (Release_0_10_0-branch). Modified: vendor/fuse-emulator/0.10.0/fuse/man/fuse.1 =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/man/fuse.1 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/man/fuse.1 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ .\" -*- nroff -*- .\" .\" fuse.1: Fuse man page -.\" Copyright (c) 2001-2007 Russell Marks, Philip Kendall, Darren Salt, +.\" Copyright (c) 2001-2008 Russell Marks, Philip Kendall, Darren Salt, .\" Fredrick Meunier, Stuart Brady .\" .\" This program is free software; you can redistribute it and/or modify @@ -23,7 +23,7 @@ .\" E-mail: phi...@sh... .\" .\" -.TH fuse 1 "5th January, 2008" "Version 0.9.0" "Emulators" +.TH fuse 1 "3rd December, 2008" "Version 0.10.0" "Emulators" .\" .\"------------------------------------------------------------------ .\" Modified: vendor/fuse-emulator/0.10.0/fuse/rzx.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/rzx.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/rzx.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* rzx.c: .rzx files Copyright (c) 2002-2003 Philip Kendall - $Id: rzx.c 3787 2008-10-22 19:10:25Z pak21 $ + $Id: rzx.c 3836 2008-11-18 04:24:34Z fredm $ 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 @@ -474,7 +474,8 @@ } - if( settings_current.rzx_autosaves ) autosave_frame(); + if( !rzx_competition_mode && settings_current.rzx_autosaves ) + autosave_frame(); return 0; } Modified: vendor/fuse-emulator/0.10.0/fuse/scld.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/scld.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/scld.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* scld.c: Routines for handling the Timex SCLD Copyright (c) 2002-2006 Fredrick Meunier, Philip Kendall, Witold Filipczyk - $Id: scld.c 3389 2007-12-03 12:54:17Z fredm $ + $Id: scld.c 3849 2008-11-25 02:10:31Z fredm $ 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 @@ -181,6 +181,27 @@ } } +static int +scld_dock_exrom_from_snapshot( memory_page *dest, int page_num, int writable, + void *source ) +{ + dest->offset = 0; + dest->page_num = page_num; + dest->writable = writable; + dest->source = MEMORY_SOURCE_CARTRIDGE; + dest->page = + memory_pool_allocate( MEMORY_PAGE_SIZE * sizeof( libspectrum_byte ) ); + if( !dest->page ) { + ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, + __LINE__ ); + return 1; + } + + memcpy( dest->page, source, MEMORY_PAGE_SIZE ); + + return 0; +} + static void scld_from_snapshot( libspectrum_snap *snap ) { @@ -201,43 +222,17 @@ for( i = 0; i < 8; i++ ) { if( libspectrum_snap_dock_cart( snap, i ) ) { - if( !memory_map_dock[i]->page ) { - memory_map_dock[i]->offset = 0; - memory_map_dock[i]->page_num = 0; - memory_map_dock[i]->writable = libspectrum_snap_dock_ram( snap, i ); - memory_map_dock[i]->source = MEMORY_SOURCE_CARTRIDGE; - memory_map_dock[i]->page = memory_pool_allocate( - MEMORY_PAGE_SIZE * - sizeof( libspectrum_byte ) ); - if( !memory_map_dock[i]->page ) { - ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, - __LINE__ ); - return; - } - } - - memcpy( memory_map_dock[i]->page, libspectrum_snap_dock_cart( snap, i ), - MEMORY_PAGE_SIZE ); + if( scld_dock_exrom_from_snapshot( memory_map_dock[i], i, + libspectrum_snap_dock_ram( snap, i ), + libspectrum_snap_dock_cart( snap, i ) ) ) + return; } if( libspectrum_snap_exrom_cart( snap, i ) ) { - if( !memory_map_dock[i]->page ) { - memory_map_exrom[i]->offset = 0; - memory_map_exrom[i]->page_num = 0; - memory_map_exrom[i]->writable = libspectrum_snap_exrom_ram( snap, i ); - memory_map_exrom[i]->source = MEMORY_SOURCE_CARTRIDGE; - memory_map_exrom[i]->page = memory_pool_allocate( - MEMORY_PAGE_SIZE * - sizeof( libspectrum_byte ) ); - if( !memory_map_exrom[i]->page ) { - ui_error( UI_ERROR_ERROR, "Out of memory at %s:%d", __FILE__, - __LINE__ ); - return; - } - } - - memcpy( memory_map_exrom[i]->page, - libspectrum_snap_exrom_cart( snap, i ), MEMORY_PAGE_SIZE ); + if( scld_dock_exrom_from_snapshot( memory_map_exrom[i], i, + libspectrum_snap_exrom_ram( snap, i ), + libspectrum_snap_exrom_cart( snap, i ) ) ) + return; } } @@ -247,6 +242,7 @@ machine_current->memory_map(); } + } static void Modified: vendor/fuse-emulator/0.10.0/fuse/utils.c =================================================================== --- vendor/fuse-emulator/0.10.0/fuse/utils.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/fuse/utils.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* utils.c: some useful helper functions Copyright (c) 1999-2008 Philip Kendall - $Id: utils.c 3807 2008-11-08 15:17:00Z pak21 $ + $Id: utils.c 3846 2008-11-20 07:17:21Z fredm $ 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 @@ -159,7 +159,10 @@ break; case LIBSPECTRUM_CLASS_CARTRIDGE_TIMEX: - error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); if( error ) break; + if( !( machine_current->capabilities & + LIBSPECTRUM_MACHINE_CAPABILITY_TIMEX_DOCK ) ) { + error = machine_select( LIBSPECTRUM_MACHINE_TC2068 ); if( error ) break; + } error = dck_insert( filename ); break; Modified: vendor/fuse-emulator/0.10.0/libspectrum/ChangeLog =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/ChangeLog 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) @@ -42,6 +42,8 @@ * Remove deprecated functions (Fredrick Meunier). + * Tweak timings for TS2068 (Fredrick Meunier; thanks Philip Kendall). + 2008-01-05 Philip Kendall <phi...@sh...> * libspectrum 0.4.0 released. @@ -269,5 +271,5 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog 3791 2008-10-27 20:20:40Z pak21 $ +$Id: ChangeLog 3867 2008-11-29 23:43:28Z fredm $ Modified: vendor/fuse-emulator/0.10.0/libspectrum/Makefile.am =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/Makefile.am 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/Makefile.am 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2001-2004 Philip Kendall -## $Id: Makefile.am 3698 2008-06-30 15:12:02Z pak21 $ +## $Id: Makefile.am 3864 2008-11-29 16:45:36Z pak21 $ ## 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 @@ -58,7 +58,7 @@ zlib.c \ zxs.c -libspectrum_la_LDFLAGS = -version-info 6:0:1 -no-undefined +libspectrum_la_LDFLAGS = -version-info 7:0:0 -no-undefined libspectrum_la_LIBADD = @AUDIOFILE_LIBS@ -lm Modified: vendor/fuse-emulator/0.10.0/libspectrum/README =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/README 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/README 2008-12-04 10:57:47 UTC (rev 557) @@ -1,4 +1,4 @@ -libspectrum 0.4.0 +libspectrum 0.5.0 ================= libspectrum is a library which is designed to make the input and @@ -13,6 +13,8 @@ * Tape images: .tzx, .tap, .spc, .sta and .ltp (read/write) and Warajevo .tap, Z80Em and CSW version 1 (read only). * Input recordings: .rzx (read/write). +* Disk images: .dsk (both plain and extended), .fdi, .sad, .scl, .td0, + .trd and .udi (identification only). * Timex cartridges: .dck (read only). * IDE hard disk images: .hdf (read/write). * Microdrive cartridge images: .mdr (read/write). @@ -50,6 +52,6 @@ running 'configure' for the first time. Philip Kendall <phi...@sh...> -5 January 2008 +3 December 2008 -$Id: README 3795 2008-10-27 21:02:43Z pak21 $ +$Id: README 3864 2008-11-29 16:45:36Z pak21 $ Modified: vendor/fuse-emulator/0.10.0/libspectrum/configure.in =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/configure.in 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/configure.in 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. -dnl Copyright (c) 1999-2004 Philip Kendall +dnl Copyright (c) 1999-2008 Philip Kendall -dnl $Id: configure.in 3825 2008-11-17 21:10:27Z pak21 $ +dnl $Id: configure.in 3864 2008-11-29 16:45:36Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ AM_CONFIG_HEADER(config.h) dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(libspectrum, 0.5.0-pre1) +AM_INIT_AUTOMAKE(libspectrum, 0.5.0) dnl Checks for programs. AC_PROG_CC @@ -108,6 +108,7 @@ 1.2.0, AC_DEFINE([HAVE_LIB_GLIB], 1, [Defined if we've got glib]) LIBS="$LIBS `glib-config --libs`", + glib=no AC_MSG_WARN(glib not found - using internal replacement) ) fi Modified: vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.3 =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.3 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.3 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ .\" -*- nroff -*- .\" .\" libspectrum.3: libspectrum summary -.\" Copyright (c) 2004-2007 Philip Kendall +.\" Copyright (c) 2004-2008 Philip Kendall .\" .\" 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 @@ -22,7 +22,7 @@ .\" E-mail: phi...@sh... .\" .\" -.TH libspectrum 3 "5th January, 2008" "Version 0.4.0" "Emulators" +.TH libspectrum 3 "3rd December, 2008" "Version 0.5.0" "Emulators" .\" .\"------------------------------------------------------------------ .\" @@ -50,6 +50,9 @@ .IP \(bu 2 Input recordings: .rzx (read/write). .IP \(bu 2 +Disk images: .dsk (both plain and extended), .fdi, .sad, .scl, .td0, .trd +and .udi (identification only). +.IP \(bu 2 Timex cartridges: .dck (read only). .IP \(bu 2 IDE hard disk images: .hdf (read/write). Modified: vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.txt =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.txt 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/doc/libspectrum.txt 2008-12-04 10:57:47 UTC (rev 557) @@ -1,4 +1,4 @@ -libspectrum 0.4.0 +libspectrum 0.5.0 ================= libspectrum is a fairly simple library designed to make the handling @@ -1687,4 +1687,4 @@ Write `data' to register `reg' of the IDE channel `chn'. -$Id: libspectrum.txt 3816 2008-11-10 11:13:18Z pak21 $ +$Id: libspectrum.txt 3864 2008-11-29 16:45:36Z pak21 $ Modified: vendor/fuse-emulator/0.10.0/libspectrum/hacking/ChangeLog =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/hacking/ChangeLog 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/hacking/ChangeLog 2008-12-04 10:57:47 UTC (rev 557) @@ -700,3 +700,13 @@ (libspectrum_0_5_0-branch). 20081117 configure.in: bump version number for 0.5.0-pre1 release (libspectrum_0_5_0-branch). +20081118 test/Makefile.am: distribute empty.z80 and writeprotected.mdr test + data files (Fred). +20081118 configure.in: set glib status off if we can't find it (thanks, Chris + Young) (Fred). +20081129 timings.c: correct first contended tstate for TS2068 based on updated + fusetest from Phil (Fred). +20081129 configure.in,doc/libspectrum.{3,txt},hacking/ChangeLog,Makefile.am, + README: final tweaks for 0.5.0 release (libspectrum_0_5_0-branch). +20081130 ChangeLog: add reference to TS2068 timing update + (libspectrum_0_5_0-branch) (Fred). Modified: vendor/fuse-emulator/0.10.0/libspectrum/test/Makefile.am =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/test/Makefile.am 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/test/Makefile.am 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in ## Copyright (c) 2007 Philip Kendall -## $Id: Makefile.am 3691 2008-06-25 15:26:10Z pak21 $ +## $Id: Makefile.am 3834 2008-11-18 04:17:15Z fredm $ ## 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 @@ -42,23 +42,25 @@ EXTRA_DIST += \ test/Makefile.am \ test/complete-tzx.pl \ + test/empty-drb.tzx \ test/empty.csw \ - test/empty-drb.tzx \ - test/invalid.gz \ - test/invalid.szx \ - test/invalid.tzx \ + test/empty.z80 \ test/invalid-archiveinfo.tzx \ test/invalid-custominfo.tzx \ test/invalid-gdb.tzx \ test/invalid-hardwareinfo.tzx \ test/invalid-warajevo-blockoffset.tap \ + test/invalid.gz \ + test/invalid.szx \ + test/invalid.tzx \ test/jump.tzx \ test/loop.tzx \ test/loop2.tzx \ test/loopend.tzx \ test/sp-2000.sna.gz \ test/sp-ffff.sna.gz \ - test/turbo-zeropilot.tzx + test/turbo-zeropilot.tzx \ + test/writeprotected.mdr CLEANFILES += \ test/.libs/test \ Modified: vendor/fuse-emulator/0.10.0/libspectrum/timings.c =================================================================== --- vendor/fuse-emulator/0.10.0/libspectrum/timings.c 2008-12-04 10:47:44 UTC (rev 556) +++ vendor/fuse-emulator/0.10.0/libspectrum/timings.c 2008-12-04 10:57:47 UTC (rev 557) @@ -1,7 +1,7 @@ /* timings.c: Timing routines Copyright (c) 2003 Philip Kendall - $Id: timings.c 3296 2007-11-12 11:45:22Z fredm $ + $Id: timings.c 3859 2008-11-29 11:24:42Z fredm $ 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 @@ -86,7 +86,7 @@ /* SE */ { 3500000, 1750000, 24, 128, 24, 48, 47, 192, 48, 25, 32, 14336 }, /* TS2068 */ - { 3528000, 1764000, 24, 128, 24, 48, 24, 192, 25, 21, 32, 9184 }, + { 3528000, 1764000, 24, 128, 24, 48, 24, 192, 25, 21, 32, 9169 }, /* Pentagon 512K */ { 3584000, 1792000, 36, 128, 28, 32, 64, 192, 48, 16, 36, 17988 }, /* Pentagon 1024K */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 10:47:50
|
Revision: 556 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=556&view=rev Author: fredm Date: 2008-12-04 10:47:44 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Prepare for vendor 0.10.0 import. Added Paths: ----------- vendor/fuse-emulator/0.10.0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-12-04 10:43:22
|
Revision: 555 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=555&view=rev Author: fredm Date: 2008-12-04 10:43:16 +0000 (Thu, 04 Dec 2008) Log Message: ----------- Prepare to import vendor 0.10.0 files. Added Paths: ----------- tags/Release-0_10_0/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-30 01:19:39
|
Revision: 554 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=554&view=rev Author: fredm Date: 2008-11-30 01:19:33 +0000 (Sun, 30 Nov 2008) Log Message: ----------- Add user-visible libspectrum updates to changelog. Modified Paths: -------------- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-27 01:53:41 UTC (rev 553) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-30 01:19:33 UTC (rev 554) @@ -48,6 +48,10 @@ unHALT (Philip Kendall; thanks, Simon Owen).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Emulate C, H and P/V flags on repeated IO instructions (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">IDE improvements +to allow DivIDE to support FATware (Philip Kendall; thanks, +http://www.dusky.sk/zxs/).<br> + </font></li> </ul> </li> <li><font face="Lucida Grande,Helvetica,Arial">Debugger improvements:</font></li> @@ -64,7 +68,8 @@ <ul> <li><font face="Lucida Grande,Helvetica,Arial">Loader detection now works with the Digital Integration loader (Philip Kendall).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">New HQ2X and HQ3x + <li><font face="Lucida Grande,Helvetica,Arial">Updated HQ2X and +HQ3x scalers (Gergely Szasz).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Revert Pentagon 128 to being the "base" machine without extra ROMs (Fredrick Meunier).</font></li> @@ -74,7 +79,17 @@ ROMs, Kempston mouse status and Simple 8-bit IDE interface to be saved in snapshots (Fredrick Meunier).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Better (but probably -not perfect) TS2068 contention (Philip Kendall).<br> +not perfect) TS2068 contention (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">128K SNA files are +now treated as being for the Pentagon 128 rather than the Spectrum 128 +(Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">SNA files now +written out correctly (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Handle MDR write +protection flag correctly (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Allow MDR images +with bad checksums to load (the error will be handled by the IF1 ROM) +(Gergely Szasz).<br> </font></li> <ul> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-27 01:53:47
|
Revision: 553 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=553&view=rev Author: fredm Date: 2008-11-27 01:53:41 +0000 (Thu, 27 Nov 2008) Log Message: ----------- Mask off irrelevant bits from Timex DEC port. Modified Paths: -------------- trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h trunk/FuseGenerator/LibspectrumSCRExtractor.m Modified: trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m =================================================================== --- trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m 2008-11-23 06:56:30 UTC (rev 552) +++ trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m 2008-11-27 01:53:41 UTC (rev 553) @@ -238,6 +238,9 @@ } else if(mode == ScreenModeTimexHiRes) { int outValue = bitmapBytes[SCREEN_TIMEX_HI_RES_BYTES - 1]; + // Mask out the non-colour related bits + outValue &= 0x38; + switch(outValue) { case TimexHiResBlackWhite: data.ink = spectrumIndexFromRGB(SPEC_BLACK); @@ -272,6 +275,7 @@ data.paper = spectrumIndexFromRGB(SPEC_BLACK); break; default: + NSLog(@"JWSpectrumScreen: unknown attribute:%d\n", outValue); assert(0); } } else { Modified: trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h =================================================================== --- trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h 2008-11-23 06:56:30 UTC (rev 552) +++ trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h 2008-11-27 01:53:41 UTC (rev 553) @@ -30,14 +30,15 @@ -// OUT 255 value for the various Timex High Res colour modes. +// OUT 255 value for the various Timex High Res colour modes masked for just the +// colour bits. typedef enum TimexHiResMode { - TimexHiResBlackWhite = 6, - TimexHiResBlueYellow = 14, - TimexHiResRedCyan = 22, - TimexHiResMagentaGreen = 30, - TimexHiResGreenMagenta = 38, - TimexHiResCyanRed = 46, - TimexHiResYellowBlue = 54, - TimexHiResWhiteBlack = 62 + TimexHiResBlackWhite = 0, + TimexHiResBlueYellow = 8, + TimexHiResRedCyan = 16, + TimexHiResMagentaGreen = 24, + TimexHiResGreenMagenta = 32, + TimexHiResCyanRed = 40, + TimexHiResYellowBlue = 48, + TimexHiResWhiteBlack = 56 } TimexHiResMode; Modified: trunk/FuseGenerator/LibspectrumSCRExtractor.m =================================================================== --- trunk/FuseGenerator/LibspectrumSCRExtractor.m 2008-11-23 06:56:30 UTC (rev 552) +++ trunk/FuseGenerator/LibspectrumSCRExtractor.m 2008-11-27 01:53:41 UTC (rev 553) @@ -414,11 +414,9 @@ - (void) process_snap_timex:(libspectrum_snap *)snap inPage:(int)page { // Check which screen mode and pages are active and copy as appropriate - libspectrum_byte scr_data[HIRES_SCR_SIZE]; + libspectrum_byte* scr_data = calloc( HIRES_SCR_SIZE, 1 ); int scr_length; - memset( scr_data, 0, HIRES_SCR_SIZE ); - if( libspectrum_snap_out_scld_dec( snap ) & 0x04 ) { memcpy( scr_data, libspectrum_snap_pages( snap, page ), @@ -444,7 +442,7 @@ scr_length ); } - scrData = [NSData dataWithBytes:(const void *)scr_data length:scr_length]; + scrData = [NSData dataWithBytesNoCopy:(const void *)scr_data length:scr_length]; image_type = TYPE_SCR; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-23 06:56:35
|
Revision: 552 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=552&view=rev Author: fredm Date: 2008-11-23 06:56:30 +0000 (Sun, 23 Nov 2008) Log Message: ----------- Stop display link when fiddling with windowed and fullscreen mode. Modified Paths: -------------- trunk/fuse/fusepb/views/DisplayOpenGLView.m Modified: trunk/fuse/fusepb/views/DisplayOpenGLView.m =================================================================== --- trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-11-19 03:14:20 UTC (rev 551) +++ trunk/fuse/fusepb/views/DisplayOpenGLView.m 2008-11-23 06:56:30 UTC (rev 552) @@ -77,6 +77,11 @@ -(IBAction) fullscreen:(id)sender { + /* don't want to get a callback to display the screen while we are + * fiddling with the window to draw into! + */ + [self displayLinkStop]; + if( settings_current.full_screen ) { /* we need to go back to non-full screen */ [fullscreenWindow close]; @@ -112,6 +117,8 @@ } } + [self displayLinkStart]; + [view_lock lock]; statusbar_updated = YES; [view_lock unlock]; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-19 03:14:29
|
Revision: 551 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=551&view=rev Author: fredm Date: 2008-11-19 03:14:20 +0000 (Wed, 19 Nov 2008) Log Message: ----------- Bump version number to 0.10.0-pre1. Modified Paths: -------------- trunk/fuse/fusepb/config.h Modified: trunk/fuse/fusepb/config.h =================================================================== --- trunk/fuse/fusepb/config.h 2008-11-18 12:37:22 UTC (rev 550) +++ trunk/fuse/fusepb/config.h 2008-11-19 03:14:20 UTC (rev 551) @@ -152,7 +152,7 @@ /* #undef USE_WIDGET */ /* Version number of package */ -#define VERSION "0.9.0" +#define VERSION "0.10.0-pre1" /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-18 12:37:27
|
Revision: 550 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=550&view=rev Author: fredm Date: 2008-11-18 12:37:22 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Add GNU style changelog. Added Paths: ----------- tags/Release-0_10_0-pre1/ChangeLog Added: tags/Release-0_10_0-pre1/ChangeLog =================================================================== --- tags/Release-0_10_0-pre1/ChangeLog (rev 0) +++ tags/Release-0_10_0-pre1/ChangeLog 2008-11-18 12:37:22 UTC (rev 550) @@ -0,0 +1,7237 @@ +2008-11-18 12:25 fredm + + * .: Create Release-0_10_0-pre1 tag. + +2008-11-18 12:21 fredm + + * trunk/fuse/fusepb/Credits.html: Add some additional credits from + the Fuse version of the file. + +2008-11-18 12:05 fredm + + * trunk/FuseGenerator/libspectrum.h, + trunk/FuseImporter/libspectrum.h, trunk/fuse, + trunk/fuse/ChangeLog, trunk/fuse/Makefile.am, + trunk/fuse/configure.in, trunk/fuse/disk/disk.c, + trunk/fuse/fuse.c, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html, + trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html, + trunk/fuse/hacking/ChangeLog, trunk/fuse/hacking/Makefile.am, + trunk/fuse/hacking/cvs-tags, trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/man/fuse.1, + trunk/fuse/ui/win32/Makefile.am, trunk/fuse/utils.c, + trunk/libspectrum/Info.plist, trunk/libspectrum/libspectrum, + trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/doc/cvs-tags, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in: Merge up to + vendor 0.10.0-pre1 release. + +2008-11-07 12:14 fredm + + * trunk/FuseGenerator/LibspectrumSCRExtractor.m, + trunk/FuseImporter/LibspectrumMetadataImporter.m: Correct + reporting of unknown classes, log name of tape being scanned for + metadata. + +2008-11-05 11:41 fredm + + * trunk/README: Remove old reference to lib765. + +2008-11-05 11:38 fredm + + * trunk/fuse/TODO, trunk/fuse/fusepb/resources/Fuse + Help/html/changelog.html, trunk/fuse/fusepb/resources/Fuse + Help/html/compressed.html, trunk/fuse/fusepb/resources/Fuse + Help/html/formats.html, trunk/fuse/fusepb/resources/Fuse + Help/html/monitor.html, trunk/fuse/fusepb/resources/Fuse + Help/html/preferences.html: Update manual for changes from + vendor. + +2008-11-05 11:33 fredm + + * trunk/fuse/debugger/commandl.l: Remove exit command as it causes + a ruckus when the main thread + doesn't know that the emulator thread is gone. + +2008-11-05 11:32 fredm + + * trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Add + setting for create autosaves in RZX dialog. + +2008-11-03 12:27 fredm + + * trunk/FuseGenerator/libspectrum.h, + trunk/FuseImporter/libspectrum.h, trunk/fuse, + trunk/fuse/ChangeLog, trunk/fuse/README, + trunk/fuse/compat/unix/file.c, trunk/fuse/configure.in, + trunk/fuse/disk/fdd.c, trunk/fuse/disk/upd_fdc.c, + trunk/fuse/fuse.c, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/man/fuse.1, + trunk/fuse/menu.c, trunk/fuse/rzx.c, trunk/fuse/settings.dat, + trunk/fuse/ui/options.dat, trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32joystick.c, + trunk/fuse/ui/win32/win32joystick.h, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/z80/tests/README, + trunk/libspectrum/libspectrum, trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum/ChangeLog, + trunk/libspectrum/libspectrum/README, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/rzx.c, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/tap.c, + trunk/libspectrum/libspectrum/tape_block.c, + trunk/libspectrum/libspectrum/test/empty.z80, + trunk/libspectrum/libspectrum/test/test.c, + trunk/libspectrum/libspectrum/tzx_read.c, + trunk/libspectrum/libspectrum/tzx_write.c, + trunk/libspectrum/libspectrum/warajevo_read.c, + trunk/libspectrum/libspectrum/z80.c: Merge up to vendor revision + 3804. + +2008-10-28 13:18 fredm + + * trunk/fuse/fuse.c: Don't deallocate memory and similar arrays + 'till we've had a chance + to use them when writing settings back to the prefs database. + +2008-10-28 11:37 fredm + + * trunk/FuseImporter/LibspectrumMetadataImporter.m: Log filename + that causes an error. + +2008-10-21 12:05 fredm + + * trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj, + trunk/FuseGenerator/LibspectrumSCRExtractor.m, + trunk/FuseGenerator/generate.pl, + trunk/FuseGenerator/libspectrum.h, + trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj, + trunk/FuseImporter/LibspectrumMetadataImporter.m, + trunk/FuseImporter/generate.pl, trunk/FuseImporter/libspectrum.h, + trunk/fuse, trunk/fuse/Makefile.am, trunk/fuse/PORTING, + trunk/fuse/README, trunk/fuse/compat.h, + trunk/fuse/compat/amiga/Makefile.am, + trunk/fuse/compat/morphos/Makefile.am, + trunk/fuse/compat/unix/Makefile.am, + trunk/fuse/compat/unix/file.c, trunk/fuse/compat/unix/osname.c, + trunk/fuse/compat/wii, trunk/fuse/compat/wii/Makefile.am, + trunk/fuse/compat/wii/file.c, + trunk/fuse/compat/win32/Makefile.am, trunk/fuse/configure.in, + trunk/fuse/dck.c, trunk/fuse/debugger/Makefile.am, + trunk/fuse/debugger/breakpoint.c, + trunk/fuse/debugger/breakpoint.h, trunk/fuse/debugger/command.c, + trunk/fuse/debugger/commandl.l, trunk/fuse/debugger/commandy.y, + trunk/fuse/debugger/debugger.c, trunk/fuse/debugger/debugger.h, + trunk/fuse/debugger/debugger_internals.h, + trunk/fuse/debugger/event.c, trunk/fuse/debugger/expression.c, + trunk/fuse/debugger/variable.c, trunk/fuse/disk/beta.c, + trunk/fuse/disk/beta.h, trunk/fuse/disk/disk.c, + trunk/fuse/disk/fdd.c, trunk/fuse/disk/fdd.h, + trunk/fuse/disk/plusd.c, trunk/fuse/disk/plusd.h, + trunk/fuse/disk/upd_fdc.c, trunk/fuse/disk/upd_fdc.h, + trunk/fuse/disk/wd_fdc.c, trunk/fuse/disk/wd_fdc.h, + trunk/fuse/divide.c, trunk/fuse/event.c, trunk/fuse/event.h, + trunk/fuse/fuse.c, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/controllers/DebuggerController.m, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/if1.c, + trunk/fuse/input.c, trunk/fuse/input.h, trunk/fuse/keysyms.pl, + trunk/fuse/loader.c, trunk/fuse/machine.c, + trunk/fuse/machines/specplus3.h, trunk/fuse/memory.c, + trunk/fuse/mempool.c, trunk/fuse/mempool.h, trunk/fuse/menu.c, + trunk/fuse/menu.h, trunk/fuse/menu_data.dat, + trunk/fuse/menu_data.pl, trunk/fuse/periph.c, + trunk/fuse/periph.h, trunk/fuse/profile.c, trunk/fuse/rzx.c, + trunk/fuse/rzx.h, trunk/fuse/screenshot.c, + trunk/fuse/settings.dat, trunk/fuse/simpleide.c, + trunk/fuse/snapshot.c, trunk/fuse/sound/alsasound.c, + trunk/fuse/sound/dxsound.c, trunk/fuse/sound/win32sound.c, + trunk/fuse/spectrum.c, trunk/fuse/spectrum.h, trunk/fuse/tape.c, + trunk/fuse/tape.h, trunk/fuse/timer/timer.c, + trunk/fuse/timer/timer.h, trunk/fuse/ui/cocoa/cocoajoystick.c, + trunk/fuse/ui/fb/fbdisplay.c, trunk/fuse/ui/gtk/debugger.c, + trunk/fuse/ui/gtk/gtkjoystick.c, trunk/fuse/ui/gtk/gtkkeyboard.c, + trunk/fuse/ui/gtk/gtkui.c, trunk/fuse/ui/options.dat, + trunk/fuse/ui/scaler/scalers.c, trunk/fuse/ui/sdl/sdldisplay.c, + trunk/fuse/ui/sdl/sdljoystick.c, + trunk/fuse/ui/svga/svgadisplay.c, + trunk/fuse/ui/svga/svgajoystick.c, trunk/fuse/ui/uidisplay.h, + trunk/fuse/ui/uijoystick.c, trunk/fuse/ui/widget/Makefile.am, + trunk/fuse/ui/widget/browse.c, trunk/fuse/ui/widget/debugger.c, + trunk/fuse/ui/widget/error.c, trunk/fuse/ui/widget/filesel.c, + trunk/fuse/ui/widget/memory.c, trunk/fuse/ui/widget/menu.c, + trunk/fuse/ui/widget/options.pl, trunk/fuse/ui/widget/picture.c, + trunk/fuse/ui/widget/pokefinder.c, trunk/fuse/ui/widget/query.c, + trunk/fuse/ui/widget/roms.c, trunk/fuse/ui/widget/select.c, + trunk/fuse/ui/widget/text.c, trunk/fuse/ui/widget/widget.c, + trunk/fuse/ui/widget/widget.h, + trunk/fuse/ui/widget/widget_internals.h, + trunk/fuse/ui/win32/Makefile.am, trunk/fuse/ui/win32/binary.c, + trunk/fuse/ui/win32/binary.rc, trunk/fuse/ui/win32/browse.c, + trunk/fuse/ui/win32/browse.h, trunk/fuse/ui/win32/browse.rc, + trunk/fuse/ui/win32/confirm.c, trunk/fuse/ui/win32/debugger.c, + trunk/fuse/ui/win32/debugger.h, trunk/fuse/ui/win32/debugger.rc, + trunk/fuse/ui/win32/error.c, trunk/fuse/ui/win32/fileselector.c, + trunk/fuse/ui/win32/memorybrowser.c, + trunk/fuse/ui/win32/memorybrowser.h, + trunk/fuse/ui/win32/memorybrowser.rc, + trunk/fuse/ui/win32/options-header.pl, + trunk/fuse/ui/win32/options-resource.pl, + trunk/fuse/ui/win32/options.pl, trunk/fuse/ui/win32/picture.c, + trunk/fuse/ui/win32/picture.h, trunk/fuse/ui/win32/picture.rc, + trunk/fuse/ui/win32/pokefinder.c, + trunk/fuse/ui/win32/pokefinder.h, + trunk/fuse/ui/win32/pokefinder.rc, + trunk/fuse/ui/win32/rollback.c, trunk/fuse/ui/win32/rollback.rc, + trunk/fuse/ui/win32/roms.c, trunk/fuse/ui/win32/roms.rc, + trunk/fuse/ui/win32/select_template.rc, + trunk/fuse/ui/win32/statusbar.c, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/win32/win32display.h, + trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32joystick.c, + trunk/fuse/ui/win32/win32joystick.rc, + trunk/fuse/ui/win32/win32keyboard.c, + trunk/fuse/ui/win32/win32keyboard.h, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/ui/xlib/xdisplay.c, + trunk/fuse/ui/xlib/xui.c, trunk/fuse/unittests/unittests.c, + trunk/fuse/utils.c, trunk/fuse/z80/coretest.c, + trunk/fuse/z80/tests/tests.expected, + trunk/fuse/z80/tests/tests.in, trunk/fuse/z80/z80.c, + trunk/fuse/z80/z80.h, trunk/fuse/z80/z80.pl, + trunk/fuse/z80/z80_ops.c, trunk/fuse/zxatasp.c, + trunk/fuse/zxcf.c, trunk/libspectrum/generate.pl, + trunk/libspectrum/libspectrum, trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj, + trunk/libspectrum/libspectrum/Makefile.am, + trunk/libspectrum/libspectrum/accessor.pl, + trunk/libspectrum/libspectrum/bzip2.c, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/creator.c, + trunk/libspectrum/libspectrum/crypto.c, + trunk/libspectrum/libspectrum/csw.c, + trunk/libspectrum/libspectrum/dck.c, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/ide.c, + trunk/libspectrum/libspectrum/internals.h, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/make-perl.c, + trunk/libspectrum/libspectrum/memory.c, + trunk/libspectrum/libspectrum/microdrive.c, + trunk/libspectrum/libspectrum/myglib/Makefile.am, + trunk/libspectrum/libspectrum/myglib/garray.c, + trunk/libspectrum/libspectrum/myglib/ghash.c, + trunk/libspectrum/libspectrum/myglib/gslist.c, + trunk/libspectrum/libspectrum/plusd.c, + trunk/libspectrum/libspectrum/rzx.c, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/snapshot.c, + trunk/libspectrum/libspectrum/sp.c, + trunk/libspectrum/libspectrum/szx.c, + trunk/libspectrum/libspectrum/tap.c, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/tape_block.c, + trunk/libspectrum/libspectrum/tape_block.h, + trunk/libspectrum/libspectrum/test/Makefile.am, + trunk/libspectrum/libspectrum/test/edges.c, + trunk/libspectrum/libspectrum/test/test.c, + trunk/libspectrum/libspectrum/test/test.h, + trunk/libspectrum/libspectrum/test/test15.c, + trunk/libspectrum/libspectrum/test/writeprotected.mdr, + trunk/libspectrum/libspectrum/tzx_read.c, + trunk/libspectrum/libspectrum/tzx_write.c, + trunk/libspectrum/libspectrum/warajevo_read.c, + trunk/libspectrum/libspectrum/wav.c, + trunk/libspectrum/libspectrum/z80.c, + trunk/libspectrum/libspectrum/z80em.c, + trunk/libspectrum/libspectrum/zlib.c, + trunk/libspectrum/libspectrum/zxs.c: Merge up to vendor revision + 3775. + +2008-05-10 23:53 fredm + + * trunk/FuseGenerator/libspectrum.h, + trunk/FuseImporter/libspectrum.h, trunk/README, + trunk/fuse/ChangeLog, trunk/fuse/Makefile.am, trunk/fuse/README, + trunk/fuse/ay.c, trunk/fuse/compat/amiga/Makefile.am, + trunk/fuse/compat/amiga/osname.c, + trunk/fuse/compat/amiga/paths.c, trunk/fuse/configure.in, + trunk/fuse/dck.c, trunk/fuse/debugger/commandl.l, + trunk/fuse/debugger/commandy.y, trunk/fuse/debugger/debugger.c, + trunk/fuse/debugger/debugger_internals.h, + trunk/fuse/disk/Makefile.am, trunk/fuse/disk/beta.c, + trunk/fuse/disk/disk.c, trunk/fuse/disk/disk.h, + trunk/fuse/disk/fdd.c, trunk/fuse/disk/fdd.h, + trunk/fuse/disk/plusd.c, trunk/fuse/disk/upd_fdc.c, + trunk/fuse/disk/upd_fdc.h, trunk/fuse/disk/wd_fdc.c, + trunk/fuse/disk/wd_fdc.h, trunk/fuse/display.c, + trunk/fuse/divide.c, trunk/fuse/event.c, trunk/fuse/event.h, + trunk/fuse/fuse.c, trunk/fuse/fuse.cpp, trunk/fuse/fuse.h, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/main.m, trunk/fuse/fusepb/main.mm, + trunk/fuse/fusepb/models/Emulator.h, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/scaler/hq2x.cpp, + trunk/fuse/fusepb/scaler/hq2x.h, + trunk/fuse/fusepb/scaler/hq3x.cpp, + trunk/fuse/fusepb/scaler/hq3x.h, + trunk/fuse/fusepb/scaler/intern.h, + trunk/fuse/fusepb/scaler/scalers16.c, + trunk/fuse/fusepb/scaler/scalers16.cpp, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/hacking/cvs-tags, + trunk/fuse/hacking/win32_todo.txt, trunk/fuse/if1.c, + trunk/fuse/input.c, trunk/fuse/kempmouse.c, + trunk/fuse/kempmouse.h, trunk/fuse/keysyms.pl, + trunk/fuse/loader.c, trunk/fuse/loader.h, trunk/fuse/machine.c, + trunk/fuse/machine.h, trunk/fuse/machines/pentagon.c, + trunk/fuse/machines/pentagon.h, + trunk/fuse/machines/pentagon1024.c, + trunk/fuse/machines/pentagon512.c, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/spec128.h, trunk/fuse/machines/spec16.c, + trunk/fuse/machines/spec48.c, trunk/fuse/machines/spec48.h, + trunk/fuse/machines/spec_se.c, trunk/fuse/machines/specplus2.c, + trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/machines/specplus3.h, + trunk/fuse/machines/specplus3e.c, trunk/fuse/machines/tc2048.c, + trunk/fuse/machines/tc2068.c, trunk/fuse/machines/tc2068.h, + trunk/fuse/machines/ts2068.c, trunk/fuse/man/fuse.1, + trunk/fuse/memory.c, trunk/fuse/memory.h, trunk/fuse/menu.c, + trunk/fuse/menu_data.dat, trunk/fuse/periph.c, + trunk/fuse/roms/plus3e-0.rom, trunk/fuse/roms/plus3e-1.rom, + trunk/fuse/roms/plus3e-2.rom, trunk/fuse/settings.dat, + trunk/fuse/settings.pl, trunk/fuse/simpleide.c, + trunk/fuse/sound/Makefile.am, trunk/fuse/sound/aosound.c, + trunk/fuse/sound/win32sound.c, trunk/fuse/spectrum.c, + trunk/fuse/spectrum.h, trunk/fuse/tape.c, trunk/fuse/tape.h, + trunk/fuse/timer/Makefile.am, trunk/fuse/ui.c, + trunk/fuse/ui/Makefile.am, trunk/fuse/ui/fb/fbkeyboard.c, + trunk/fuse/ui/gtk/Makefile.am, trunk/fuse/ui/gtk/fileselector.c, + trunk/fuse/ui/gtk/gtkdisplay.c, trunk/fuse/ui/options.dat, + trunk/fuse/ui/scaler/Makefile.am, trunk/fuse/ui/scaler/scaler.c, + trunk/fuse/ui/scaler/scaler.h, + trunk/fuse/ui/scaler/scaler_hq2x.c, + trunk/fuse/ui/scaler/scaler_hq3x.c, + trunk/fuse/ui/scaler/scaler_internals.h, + trunk/fuse/ui/scaler/scalers.c, trunk/fuse/ui/scaler/scalers.cpp, + trunk/fuse/ui/sdl/Makefile.am, trunk/fuse/ui/sdl/sdldisplay.c, + trunk/fuse/ui/sdl/sdlkeyboard.c, + trunk/fuse/ui/svga/svgakeyboard.c, trunk/fuse/ui/ui.h, + trunk/fuse/ui/widget, trunk/fuse/ui/widget/Makefile.am, + trunk/fuse/ui/widget/browse.c, trunk/fuse/ui/widget/debugger.c, + trunk/fuse/ui/widget/error.c, trunk/fuse/ui/widget/filesel.c, + trunk/fuse/ui/widget/fuse.font.sbf, + trunk/fuse/ui/widget/memory.c, trunk/fuse/ui/widget/menu.c, + trunk/fuse/ui/widget/mkfusefont.pl, + trunk/fuse/ui/widget/options-header.pl, + trunk/fuse/ui/widget/options.pl, trunk/fuse/ui/widget/picture.c, + trunk/fuse/ui/widget/pokefinder.c, trunk/fuse/ui/widget/query.c, + trunk/fuse/ui/widget/roms.c, trunk/fuse/ui/widget/select.c, + trunk/fuse/ui/widget/text.c, trunk/fuse/ui/widget/widget.c, + trunk/fuse/ui/widget/widget.h, + trunk/fuse/ui/widget/widget_internals.h, + trunk/fuse/ui/win32/Makefile.am, trunk/fuse/ui/win32/binary.c, + trunk/fuse/ui/win32/binary.h, trunk/fuse/ui/win32/binary.rc, + trunk/fuse/ui/win32/browse.c, trunk/fuse/ui/win32/browse.h, + trunk/fuse/ui/win32/browse.rc, trunk/fuse/ui/win32/debugger.c, + trunk/fuse/ui/win32/debugger.h, trunk/fuse/ui/win32/debugger.rc, + trunk/fuse/ui/win32/del_o.bat, trunk/fuse/ui/win32/error.c, + trunk/fuse/ui/win32/icons/Makefile.am, + trunk/fuse/ui/win32/icons/mdr_active.bmp, + trunk/fuse/ui/win32/icons/mdr_inactive.bmp, + trunk/fuse/ui/win32/icons/mouse_active.bmp, + trunk/fuse/ui/win32/icons/mouse_inactive.bmp, + trunk/fuse/ui/win32/icons/tape_marker_mask.bmp, + trunk/fuse/ui/win32/memorybrowser.c, + trunk/fuse/ui/win32/memorybrowser.h, + trunk/fuse/ui/win32/memorybrowser.rc, + trunk/fuse/ui/win32/menu_data.c, trunk/fuse/ui/win32/menu_data.h, + trunk/fuse/ui/win32/menu_data.rc, + trunk/fuse/ui/win32/options-header.pl, + trunk/fuse/ui/win32/options-resource.pl, + trunk/fuse/ui/win32/options.pl, trunk/fuse/ui/win32/picture.c, + trunk/fuse/ui/win32/picture.h, trunk/fuse/ui/win32/picture.rc, + trunk/fuse/ui/win32/pokefinder.c, + trunk/fuse/ui/win32/pokefinder.h, + trunk/fuse/ui/win32/pokefinder.rc, + trunk/fuse/ui/win32/rollback.c, trunk/fuse/ui/win32/rollback.h, + trunk/fuse/ui/win32/rollback.rc, trunk/fuse/ui/win32/roms.c, + trunk/fuse/ui/win32/roms.h, trunk/fuse/ui/win32/roms.rc, + trunk/fuse/ui/win32/select_template.h, + trunk/fuse/ui/win32/select_template.rc, + trunk/fuse/ui/win32/statusbar.c, + trunk/fuse/ui/win32/statusbar.rc, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/win32/win32display.h, + trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32joystick.c, + trunk/fuse/ui/win32/win32joystick.h, + trunk/fuse/ui/win32/win32joystick.rc, + trunk/fuse/ui/win32/win32keyboard.h, + trunk/fuse/ui/win32/win32mouse.c, trunk/fuse/ui/win32/win32ui.c, + trunk/fuse/ui/win32/win32ui.rc, trunk/fuse/ui/xlib/xdisplay.c, + trunk/fuse/ui/xlib/xerror.c, trunk/fuse/ui/xlib/xkeyboard.c, + trunk/fuse/ula.c, trunk/fuse/unittests, + trunk/fuse/unittests/Makefile.am, + trunk/fuse/unittests/unittests.c, + trunk/fuse/unittests/unittests.h, trunk/fuse/utils.c, + trunk/fuse/widget, trunk/fuse/windres.rc, trunk/fuse/winfuse.ico, + trunk/fuse/z80/z80.c, trunk/fuse/z80/z80_ops.c, trunk/lib765, + trunk/libspectrum/config.h, trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum/ChangeLog, + trunk/libspectrum/libspectrum/README, + trunk/libspectrum/libspectrum/TODO, + trunk/libspectrum/libspectrum/accessor.pl, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/ide.c, + trunk/libspectrum/libspectrum/internals.h, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/snap_accessors.txt, + trunk/libspectrum/libspectrum/snapshot.c, + trunk/libspectrum/libspectrum/szx.c, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/test/Makefile.am, + trunk/libspectrum/libspectrum/test/edges.c, + trunk/libspectrum/libspectrum/test/test.h, + trunk/libspectrum/libspectrum/test/test15.c, + trunk/libspectrum/libspectrum/z80.c: Merge up to vendor revision + 3612. + +2008-05-07 11:35 fredm + + * trunk/fuse/TODO: Update TODO. + +2008-05-04 10:38 fredm + + * trunk/FuseGenerator/LibspectrumSCRExtractor.m: Have inlay images + take priority over loading screens. + +2008-05-04 09:11 fredm + + * trunk/FuseGenerator/GeneratePreviewForURL.m, + trunk/FuseGenerator/GenerateThumbnailForURL.m, + trunk/FuseGenerator/LibspectrumSCRExtractor.h, + trunk/FuseGenerator/LibspectrumSCRExtractor.m, trunk/fuse/TODO: + Add support for TZX custom screenshot and tape inlay blocks. + +2008-04-29 12:59 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings: Bump version + to 0.9.0.2. + +2008-04-29 12:44 fredm + + * trunk/fuse/fusepb/controllers/FuseController.m: Fix betaFileTypes + declaration. + +2008-04-29 12:24 fredm + + * trunk/fuse/TODO, trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Add UI + support for .udi, .fdi and .scl files for Beta disk images. + +2008-04-28 13:55 fredm + + * trunk/FuseGenerator/GeneratePreviewForURL.m: Generate previews + for all docs, not just screenshots. + +2008-04-28 13:21 fredm + + * trunk/FuseImporter/COPYING, trunk/FuseImporter/Howto build.rtf, + trunk/FuseImporter/README.rtf: Remove obsolete files. + +2008-04-28 13:15 fredm + + * trunk/fuse/fusepb/resources/Fuse Help/Fuse Help idx, + trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html, + trunk/fuse/fusepb/resources/Fuse Help/html/quicklook.html, + trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html: Add + Quick Look generator documentation, update index. + +2008-04-28 13:14 fredm + + * trunk/fuse/settings.dat: Change thumbnail icon generation default + to be off as it is superceded by Quick + Look on Mac OS X 10.5 and up. + +2008-04-28 11:32 fredm + + * trunk/FuseImporter/English.lproj/InfoPlist.strings, + trunk/FuseImporter/Info.plist: Bump version to 1.1, add + references for img, mgt and raw file formats. + +2008-04-28 10:45 fredm + + * trunk/fuse/TODO: Update TODO list. + +2008-04-28 10:42 fredm + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj: Distribute + QuickLook generator. + +2008-04-28 10:17 fredm + + * trunk/FuseImporter/LibspectrumMetadataImporter.h: Add declaration + of process_tape. + +2008-04-28 10:14 fredm + + * trunk/FuseImporter/English.lproj/schema.strings: Add display name + for graphics mode. + +2008-04-09 21:13 fredm + + * trunk/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c: Don't report + errors back to the user when we fail to open a joystick device + that already has exclusive access given to someone else (e.g. a + Wacom tablet + and it's associated driver) (James Weatherley). + +2008-04-08 13:38 fredm + + * trunk/fuse/ui/cocoa/cocoadisplay.m: Move lock allocation and + initialisation to DisplayOpenGLView. + +2008-04-08 13:36 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings: Update version + strings to 0.9.0.1. + +2008-04-08 13:34 fredm + + * trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html, + trunk/fuse/fusepb/resources/Fuse Help/html/menus.html: Add + references for new menu options, update ChangeLog for recent + changes. + +2008-04-08 13:31 fredm + + * trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Add 4x and 5x zoom + options for those with big screens. + +2008-04-08 12:08 fredm + + * trunk/fuse/ui/cocoa/SDL_joystick/SDL_sysjoystick.c: Merge up to + revision 3524 of SDL_sysjoystick.c, in hope of fixing errors + starting Fuse with a Wacom graphics tablet attached. + +2008-03-31 12:46 fredm + + * trunk/fuse/TODO, trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/models/Emulator.h, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Add +D and Beta disk + insert menu entries. Allow +D to save .img images. + +2008-03-31 11:51 fredm + + * trunk/fuse/TODO, trunk/fuse/fusepb/controllers/FuseController.m: + Allow .img files to be opened as +D images. + +2008-03-29 03:19 fredm + + * trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Add + preferences support for Beta 128 interface. + +2008-03-29 03:18 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings: Change + additional copyright date to 2008. + +2008-03-28 13:01 fredm + + * trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, trunk/fuse/fusepb/config.h, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Move + version to Fuse for Mac OS X 0.9.0. + +2008-03-27 12:04 fredm + + * trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/models/Emulator.h, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Add +D and Beta disk + write protect support. Fix Microdrive cartridge menus. + Add command key release for keyboard joystick binding shortcut. + +2008-03-27 12:03 fredm + + * trunk/fuse/fusepb/Info-Fuse.plist: Fix mdr type info, round out + mgt and img type exports. + +2008-03-26 10:36 fredm + + * trunk/fuse/TODO, trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/resources/Fuse Help/html/menus.html, + trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html: Move + Emulate keyboard joystick option to to Bind Keys to Joystick + option in + Machine menu + +2008-03-26 08:46 fredm + + * trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib: Fix + keyboard joystick enabled preference binding. + +2008-02-18 09:48 fredm + + * trunk/README: Remove reference to bzip2 framework. + +2008-02-18 08:45 fredm + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/FuseMenus.m: Don't use standard Fuse menu.c, + move only function we use + (menu_select_roms_with_title) to FuseMenus.m. + +2008-02-18 07:25 fredm + + * trunk/fuse/fusepb/controllers/FuseController.m: Ignore any + shortcuts that raise dialogs in fullscreen mode. + +2008-02-18 07:20 fredm + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj: Remove + pentagon.h from distribution binaries and remove references to + obsolete + SDL and bzip2 frameworks. + +2008-02-18 04:00 fredm + + * trunk/libgcrypt/Info-gcrypt.plist, + trunk/libgcrypt/libgcrypt.xcodeproj/project.pbxproj, + trunk/libgcrypt/libgcrypt/AUTHORS, + trunk/libgcrypt/libgcrypt/ChangeLog, + trunk/libgcrypt/libgcrypt/INSTALL, + trunk/libgcrypt/libgcrypt/Makefile.am, + trunk/libgcrypt/libgcrypt/Makefile.in, + trunk/libgcrypt/libgcrypt/NEWS, trunk/libgcrypt/libgcrypt/README, + trunk/libgcrypt/libgcrypt/README.CVS, + trunk/libgcrypt/libgcrypt/README.SVN, + trunk/libgcrypt/libgcrypt/THANKS, trunk/libgcrypt/libgcrypt/TODO, + trunk/libgcrypt/libgcrypt/VERSION, + trunk/libgcrypt/libgcrypt/acinclude.m4, + trunk/libgcrypt/libgcrypt/aclocal.m4, + trunk/libgcrypt/libgcrypt/autogen.sh, + trunk/libgcrypt/libgcrypt/cipher/ChangeLog, + trunk/libgcrypt/libgcrypt/cipher/Makefile.in, + trunk/libgcrypt/libgcrypt/cipher/ac.c, + trunk/libgcrypt/libgcrypt/cipher/blowfish.c, + trunk/libgcrypt/libgcrypt/cipher/cast5.c, + trunk/libgcrypt/libgcrypt/cipher/cipher.c, + trunk/libgcrypt/libgcrypt/cipher/crc.c, + trunk/libgcrypt/libgcrypt/cipher/des.c, + trunk/libgcrypt/libgcrypt/cipher/dsa.c, + trunk/libgcrypt/libgcrypt/cipher/elgamal.c, + trunk/libgcrypt/libgcrypt/cipher/md.c, + trunk/libgcrypt/libgcrypt/cipher/primegen.c, + trunk/libgcrypt/libgcrypt/cipher/pubkey.c, + trunk/libgcrypt/libgcrypt/cipher/random.c, + trunk/libgcrypt/libgcrypt/cipher/random.h, + trunk/libgcrypt/libgcrypt/cipher/rfc2268.c, + trunk/libgcrypt/libgcrypt/cipher/rijndael.c, + trunk/libgcrypt/libgcrypt/cipher/rmd160.c, + trunk/libgcrypt/libgcrypt/cipher/rndlinux.c, + trunk/libgcrypt/libgcrypt/cipher/rndw32.c, + trunk/libgcrypt/libgcrypt/cipher/rsa.c, + trunk/libgcrypt/libgcrypt/cipher/serpent.c, + trunk/libgcrypt/libgcrypt/cipher/sha256.c, + trunk/libgcrypt/libgcrypt/cipher/sha512.c, + trunk/libgcrypt/libgcrypt/cipher/tiger.c, + trunk/libgcrypt/libgcrypt/cipher/twofish.c, + trunk/libgcrypt/libgcrypt/compile, + trunk/libgcrypt/libgcrypt/config.guess, + trunk/libgcrypt/libgcrypt/config.h.in, + trunk/libgcrypt/libgcrypt/config.sub, + trunk/libgcrypt/libgcrypt/configure, + trunk/libgcrypt/libgcrypt/configure.ac, + trunk/libgcrypt/libgcrypt/depcomp, + trunk/libgcrypt/libgcrypt/doc/ChangeLog, + trunk/libgcrypt/libgcrypt/doc/Makefile.in, + trunk/libgcrypt/libgcrypt/doc/gcrypt.info, + trunk/libgcrypt/libgcrypt/doc/gcrypt.texi, + trunk/libgcrypt/libgcrypt/doc/mdate-sh, + trunk/libgcrypt/libgcrypt/doc/stamp-vti, + trunk/libgcrypt/libgcrypt/doc/texinfo.tex, + trunk/libgcrypt/libgcrypt/doc/version.texi, + trunk/libgcrypt/libgcrypt/install-sh, + trunk/libgcrypt/libgcrypt/ltmain.sh, + trunk/libgcrypt/libgcrypt/m4, + trunk/libgcrypt/libgcrypt/m4/ChangeLog, + trunk/libgcrypt/libgcrypt/m4/Makefile.am, + trunk/libgcrypt/libgcrypt/m4/Makefile.in, + trunk/libgcrypt/libgcrypt/m4/libtool.m4, + trunk/libgcrypt/libgcrypt/m4/onceonly.m4, + trunk/libgcrypt/libgcrypt/m4/socklen.m4, + trunk/libgcrypt/libgcrypt/m4/sys_socket_h.m4, + trunk/libgcrypt/libgcrypt/missing, + trunk/libgcrypt/libgcrypt/mkinstalldirs, + trunk/libgcrypt/libgcrypt/mpi/ChangeLog, + trunk/libgcrypt/libgcrypt/mpi/Makefile.am, + trunk/libgcrypt/libgcrypt/mpi/Makefile.in, + trunk/libgcrypt/libgcrypt/mpi/config.links, + trunk/libgcrypt/libgcrypt/mpi/hppa1.1/udiv-qrnnd.S, + trunk/libgcrypt/libgcrypt/mpi/mpi-bit.c, + trunk/libgcrypt/libgcrypt/mpi/mpi-pow.c, + trunk/libgcrypt/libgcrypt/mpi/mpicoder.c, + trunk/libgcrypt/libgcrypt/mpi/mpiutil.c, + trunk/libgcrypt/libgcrypt/src/ChangeLog, + trunk/libgcrypt/libgcrypt/src/Makefile.am, + trunk/libgcrypt/libgcrypt/src/Makefile.in, + trunk/libgcrypt/libgcrypt/src/ath.c, + trunk/libgcrypt/libgcrypt/src/ath.h, + trunk/libgcrypt/libgcrypt/src/g10lib.h, + trunk/libgcrypt/libgcrypt/src/gcrypt-module.h, + trunk/libgcrypt/libgcrypt/src/gcrypt.h, + trunk/libgcrypt/libgcrypt/src/gcrypt.h.in, + trunk/libgcrypt/libgcrypt/src/global.c, + trunk/libgcrypt/libgcrypt/src/libgcrypt.m4, + trunk/libgcrypt/libgcrypt/src/missing-string.c, + trunk/libgcrypt/libgcrypt/src/secmem.c, + trunk/libgcrypt/libgcrypt/src/secmem.h, + trunk/libgcrypt/libgcrypt/src/sexp.c, + trunk/libgcrypt/libgcrypt/src/types.h, + trunk/libgcrypt/libgcrypt/tests/ChangeLog, + trunk/libgcrypt/libgcrypt/tests/Makefile.am, + trunk/libgcrypt/libgcrypt/tests/Makefile.in, + trunk/libgcrypt/libgcrypt/tests/ac.c, + trunk/libgcrypt/libgcrypt/tests/basic.c, + trunk/libgcrypt/libgcrypt/tests/benchmark.c, + trunk/libgcrypt/libgcrypt/tests/pubkey.c, + trunk/libgcrypt/libgcrypt/tests/random.c, + trunk/libgcrypt/libgcrypt/tests/t-mpi-bit.c, + trunk/libgcrypt/libgcrypt/tests/tsexp.c, + trunk/libgcrypt/libgcrypt/w32-dll/Makefile.in: Merge up to vendor + libgcrypt version 1.2.4. + +2008-02-17 22:06 fredm + + * trunk/FuseImporter/Info.plist, trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Add + entries for newly-supported tape and snap formats. + +2008-02-17 02:02 fredm + + * trunk/fuse/ChangeLog, trunk/fuse/Makefile.am, trunk/fuse/README, + trunk/fuse/ay.c, trunk/fuse/compat/Makefile.am, + trunk/fuse/compat/win32/osname.c, trunk/fuse/configure.in, + trunk/fuse/disk/beta.c, trunk/fuse/disk/beta.h, + trunk/fuse/disk/disk.c, trunk/fuse/disk/disk.h, + trunk/fuse/disk/fdd.c, trunk/fuse/disk/fdd.h, + trunk/fuse/disk/plusd.c, trunk/fuse/disk/plusd.h, + trunk/fuse/disk/wd_fdc.c, trunk/fuse/disk/wd_fdc.h, + trunk/fuse/display.c, trunk/fuse/divide.c, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Info-Fuse.plist, + trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/models/Emulator.h, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/resources/Fuse Help/Fuse Help idx, + trunk/fuse/fusepb/resources/Fuse Help/Fuse Help.helpindex, + trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html, + trunk/fuse/fusepb/resources/Fuse Help/html/formats.html, + trunk/fuse/fusepb/resources/Fuse Help/html/menus.html, + trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html, + trunk/fuse/fusepb/resources/Fuse Help/html/tocstart.html, + trunk/fuse/fusepb/resources/Fuse Help/html/trdos.html, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/hacking/cvs-tags, + trunk/fuse/hacking/tc2048_tech_notes.txt, trunk/fuse/if1.c, + trunk/fuse/if1.h, trunk/fuse/if2.c, trunk/fuse/input.c, + trunk/fuse/joystick.c, trunk/fuse/kempmouse.c, + trunk/fuse/keyboard.c, trunk/fuse/machine.c, + trunk/fuse/machines/Makefile.am, trunk/fuse/machines/machines.h, + trunk/fuse/machines/pentagon.c, trunk/fuse/machines/pentagon.h, + trunk/fuse/machines/pentagon1024.c, + trunk/fuse/machines/pentagon512.c, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/spec128.c, + trunk/fuse/machines/spec16.c, trunk/fuse/machines/spec48.c, + trunk/fuse/machines/spec48.h, trunk/fuse/machines/spec_se.c, + trunk/fuse/machines/specplus2.c, + trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/machines/specplus3.h, + trunk/fuse/machines/specplus3e.c, trunk/fuse/machines/tc2048.c, + trunk/fuse/machines/tc2068.c, trunk/fuse/machines/ts2068.c, + trunk/fuse/man/fuse.1, trunk/fuse/memory.c, trunk/fuse/menu.c, + trunk/fuse/menu.h, trunk/fuse/menu_data.dat, + trunk/fuse/menu_data.pl, trunk/fuse/module.c, + trunk/fuse/module.h, trunk/fuse/periph.c, trunk/fuse/periph.h, + trunk/fuse/printer.c, trunk/fuse/profile.c, trunk/fuse/scld.c, + trunk/fuse/settings.dat, trunk/fuse/settings.pl, + trunk/fuse/simpleide.c, trunk/fuse/slt.c, trunk/fuse/snapshot.c, + trunk/fuse/sound/alsasound.c, trunk/fuse/sound/sdlsound.c, + trunk/fuse/spectrum.c, trunk/fuse/spectrum.h, trunk/fuse/tape.c, + trunk/fuse/tape.h, trunk/fuse/ui.c, + trunk/fuse/ui/cocoa/cocoaui.m, trunk/fuse/ui/fb/fbdisplay.c, + trunk/fuse/ui/fb/fbmouse.c, trunk/fuse/ui/gtk/binary.c, + trunk/fuse/ui/gtk/confirm.c, trunk/fuse/ui/gtk/fileselector.c, + trunk/fuse/ui/gtk/gtkjoystick.c, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/gtk/pokefinder.c, trunk/fuse/ui/gtk/rollback.c, + trunk/fuse/ui/gtk/roms.c, trunk/fuse/ui/options.dat, + trunk/fuse/ui/sdl/sdlui.c, trunk/fuse/ui/ui.h, + trunk/fuse/ui/win32/Makefile.am, trunk/fuse/ui/win32/error.c, + trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/ula.c, + trunk/fuse/utils.c, trunk/fuse/widget/browse.c, + trunk/fuse/widget/filesel.c, trunk/fuse/widget/menu.c, + trunk/fuse/widget/options.pl, trunk/fuse/widget/roms.c, + trunk/fuse/widget/widget.c, trunk/fuse/widget/widget.h, + trunk/fuse/widget/widget_internals.h, trunk/fuse/z80/coretest.c, + trunk/fuse/z80/tests/Makefile.am, trunk/fuse/z80/z80.c, + trunk/fuse/z80/z80.pl, trunk/fuse/z80/z80_macros.h, + trunk/fuse/z80/z80_ops.c, trunk/fuse/zxatasp.c, + trunk/fuse/zxcf.c: Merge up to vendor Fuse 0.9.0. + +2008-02-14 13:00 fredm + + * trunk/FuseGenerator/libspectrum.h, + trunk/FuseImporter/GetMetadataForFile.m, + trunk/FuseImporter/LibspectrumMetadataImporter.m, + trunk/FuseImporter/libspectrum.h, trunk/libspectrum/Info.plist, + trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj, + trunk/libspectrum/libspectrum/COPYING, + trunk/libspectrum/libspectrum/ChangeLog, + trunk/libspectrum/libspectrum/Makefile.am, + trunk/libspectrum/libspectrum/README, + trunk/libspectrum/libspectrum/accessor.pl, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/csw.c, + trunk/libspectrum/libspectrum/dll.c, + trunk/libspectrum/libspectrum/doc/cvs-tags, + trunk/libspectrum/libspectrum/doc/libspectrum.3, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/internals.h, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/plusd.c, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/snap_accessors.txt, + trunk/libspectrum/libspectrum/snapshot.c, + trunk/libspectrum/libspectrum/szx.c, + trunk/libspectrum/libspectrum/tap.c, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/tape_block.c, + trunk/libspectrum/libspectrum/test/Makefile.am, + trunk/libspectrum/libspectrum/test/empty.csw, + trunk/libspectrum/libspectrum/test/sp-2000.sna.gz, + trunk/libspectrum/libspectrum/test/sp-ffff.sna.gz, + trunk/libspectrum/libspectrum/test/test.c, + trunk/libspectrum/libspectrum/timings.c, + trunk/libspectrum/libspectrum/z80.c: Merge up to vendor version + 0.4.0. + +2008-02-13 12:54 fredm + + * trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Fix the blocked + keyboard from Command-q (quit), Command-h (hide) and Command-m + (minimise) (fixes bug #1842577). + +2008-02-11 12:16 fredm + + * trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Clear stuck shortcut + keys for Command-{0,1,2,3,f,s,z,b,o,p,period}, still need + to handle Command-q (quit), Command-h (hide) and Command-m + (minimise). + +2008-02-10 20:47 fredm + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m: Make application + quit menu use performClose on the window, and switch exit + confirm dialog to windowShouldClose in DisplayOpenGLView (partial + fix to + bug #1842576). + +2007-12-21 02:42 fredm + + * trunk/FuseGenerator/LibspectrumSCRExtractor.m: Some SCREEN$ were + saved from places other than 16384 (presumably due to art + packages and the like). + +2007-12-21 00:16 fredm + + * trunk/FuseGenerator, trunk/FuseGenerator/English.lproj, + trunk/FuseGenerator/English.lproj/InfoPlist.strings, + trunk/FuseGenerator/FuseGenerator.xcodeproj, + trunk/FuseGenerator/FuseGenerator.xcodeproj/project.pbxproj, + trunk/FuseGenerator/GeneratePreviewForURL.m, + trunk/FuseGenerator/GenerateThumbnailForURL.m, + trunk/FuseGenerator/Info.plist, + trunk/FuseGenerator/JWSpectrumScreen, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.h, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlock.m, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.h, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockIterator.m, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.h, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimex.m, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimexHiRes.h, + trunk/FuseGenerator/JWSpectrumScreen/AttributeBlockTimexHiRes.m, + trunk/FuseGenerator/JWSpectrumScreen/AttributeManager.c, + trunk/FuseGenerator/JWSpectrumScreen/AttributeManager.h, + trunk/FuseGenerator/JWSpectrumScreen/ColourMacros.c, + trunk/FuseGenerator/JWSpectrumScreen/ColourMacros.h, + trunk/FuseGenerator/JWSpectrumScreen/English.lproj, + trunk/FuseGenerator/JWSpectrumScreen/English.lproj/InfoPlist.strings, + trunk/FuseGenerator/JWSpectrumScreen/Info.plist, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.h, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.m, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.xcodeproj, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen.xcodeproj/project.pbxproj, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreenConstants.h, + trunk/FuseGenerator/JWSpectrumScreen/JWSpectrumScreen_Prefix.pch, + trunk/FuseGenerator/JWSpectrumScreen/PixelData.h, + trunk/FuseGenerator/JWSpectrumScreen/README, + trunk/FuseGenerator/LibspectrumSCRExtractor.h, + trunk/FuseGenerator/LibspectrumSCRExtractor.m, + trunk/FuseGenerator/config.h, trunk/FuseGenerator/generate.pl, + trunk/FuseGenerator/libspectrum, + trunk/FuseGenerator/libspectrum.h, trunk/FuseGenerator/main.c, + trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj, + trunk/README, trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj: + Add QuickLook generator for Speccy-related files, thanks to James + Weatherley for + JWSpectrumScreen that makes it all possible. + +2007-12-20 11:04 fredm + + * trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj: Spotlight + importer should be in Contents/Library/Spotlight, not PlugIns + +2007-11-17 11:17 fredm + + * trunk/fuse/fusepb/resources/Fuse.icns: Add 512x512px icon for + Fuse. + +2007-11-17 07:49 fredm + + * trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html: Add + some extra change entries. + +2007-11-16 23:51 fredm + + * trunk/fuse/fusepb/Info-Fuse.plist: Increment version number to + reflect merge state. + +2007-11-16 23:49 fredm + + * trunk/FuseImporter/libspectrum.h, + trunk/audiofile/audiofile.xcodeproj/project.pbxproj, + trunk/fuse/ChangeLog, trunk/fuse/Makefile.am, trunk/fuse/ay.c, + trunk/fuse/bitmap.h, trunk/fuse/compat.h, + trunk/fuse/compat/Makefile.am, + trunk/fuse/compat/amiga/Makefile.am, + trunk/fuse/compat/amiga/paths.c, + trunk/fuse/compat/morphos/Makefile.am, + trunk/fuse/compat/morphos/osname.c, + trunk/fuse/compat/unix/Makefile.am, + trunk/fuse/compat/unix/osname.c, trunk/fuse/compat/unix/paths.c, + trunk/fuse/compat/win32/Makefile.am, + trunk/fuse/compat/win32/osname.c, + trunk/fuse/compat/win32/paths.c, trunk/fuse/configure.in, + trunk/fuse/debugger/Makefile.am, + trunk/fuse/debugger/breakpoint.c, trunk/fuse/debugger/command.c, + trunk/fuse/debugger/commandy.y, trunk/fuse/debugger/debugger.c, + trunk/fuse/debugger/debugger_internals.h, + trunk/fuse/debugger/disassemble.c, + trunk/fuse/debugger/expression.c, trunk/fuse/disk/Makefile.am, + trunk/fuse/disk/beta.c, trunk/fuse/disk/beta.h, + trunk/fuse/disk/crc.c, trunk/fuse/disk/crc.h, + trunk/fuse/disk/disk.c, trunk/fuse/disk/disk.h, + trunk/fuse/disk/fdd.c, trunk/fuse/disk/fdd.h, + trunk/fuse/disk/plusd.c, trunk/fuse/disk/plusd.h, + trunk/fuse/disk/wd1770.c, trunk/fuse/disk/wd1770.h, + trunk/fuse/disk/wd_fdc.c, trunk/fuse/disk/wd_fdc.h, + trunk/fuse/divide.c, trunk/fuse/event.c, trunk/fuse/event.h, + trunk/fuse/fuse.cpp, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Makefile, + trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m, + trunk/fuse/fusepb/models/Emulator.h, + trunk/fuse/fusepb/models/Emulator.m, + trunk/fuse/fusepb/nibs/MainMenu.nib/classes.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/classes.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/info.nib, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m, + trunk/fuse/hacking/ChangeLog, trunk/fuse/hacking/cvs-tags, + trunk/fuse/if1.c, trunk/fuse/if2.c, trunk/fuse/keyboard.h, + trunk/fuse/keysyms.pl, trunk/fuse/lib/Makefile.am, + trunk/fuse/machine.c, trunk/fuse/machines/Makefile.am, + trunk/fuse/machines/machines.h, trunk/fuse/machines/pentagon.c, + trunk/fuse/machines/pentagon1024.c, + trunk/fuse/machines/pentagon512.c, + trunk/fuse/machines/scorpion.c, trunk/fuse/machines/scorpion.h, + trunk/fuse/machines/spec128.c, trunk/fuse/machines/spec128.h, + trunk/fuse/machines/spec16.c, trunk/fuse/machines/spec48.c, + trunk/fuse/machines/spec48.h, trunk/fuse/machines/spec_se.c, + trunk/fuse/machines/specplus2.c, + trunk/fuse/machines/specplus2a.c, + trunk/fuse/machines/specplus3.c, trunk/fuse/machines/specplus3.h, + trunk/fuse/machines/specplus3e.c, trunk/fuse/machines/tc2048.c, + trunk/fuse/machines/tc2068.c, trunk/fuse/machines/tc2068.h, + trunk/fuse/machines/ts2068.c, trunk/fuse/man/fuse.1, + trunk/fuse/memory.h, trunk/fuse/menu.c, trunk/fuse/menu_data.dat, + trunk/fuse/menu_data.pl, trunk/fuse/periph.c, + trunk/fuse/periph.h, trunk/fuse/pokefinder/Makefile.am, + trunk/fuse/pokefinder/pokefinder.c, trunk/fuse/printer.c, + trunk/fuse/profile.c, trunk/fuse/profile.h, + trunk/fuse/roms/Makefile.am, trunk/fuse/roms/gluck.rom, + trunk/fuse/roms/plus3e-0.rom, trunk/fuse/roms/plus3e-1.rom, + trunk/fuse/roms/plus3e-2.rom, trunk/fuse/rzx.c, + trunk/fuse/settings.dat, trunk/fuse/settings.pl, + trunk/fuse/snapshot.c, trunk/fuse/sound.c, + trunk/fuse/sound/Makefile.am, trunk/fuse/sound/alsasound.c, + trunk/fuse/sound/aosound.c, trunk/fuse/sound/dxsound.c, + trunk/fuse/sound/hpsound.c, trunk/fuse/sound/nullsound.c, + trunk/fuse/sound/osssound.c, trunk/fuse/sound/sdlsound.c, + trunk/fuse/sound/sfifo.c, trunk/fuse/sound/sunsound.c, + trunk/fuse/spectrum.h, trunk/fuse/tape.c, + trunk/fuse/timer/Makefile.am, trunk/fuse/timer/timer.c, + trunk/fuse/timer/unix.c, trunk/fuse/trdos.c, trunk/fuse/trdos.h, + trunk/fuse/ui.c, trunk/fuse/ui/Makefile.am, + trunk/fuse/ui/cocoa/cocoaui.m, trunk/fuse/ui/fb/Makefile.am, + trunk/fuse/ui/fb/fbdisplay.c, trunk/fuse/ui/fb/fbjoystick.c, + trunk/fuse/ui/fb/fbkeyboard.c, trunk/fuse/ui/fb/fbmouse.c, + trunk/fuse/ui/fb/fbui.c, trunk/fuse/ui/ggi, + trunk/fuse/ui/gtk/Makefile.am, trunk/fuse/ui/gtk/binary.c, + trunk/fuse/ui/gtk/browse.c, trunk/fuse/ui/gtk/confirm.c, + trunk/fuse/ui/gtk/debugger.c, trunk/fuse/ui/gtk/fileselector.c, + trunk/fuse/ui/gtk/gtkdisplay.c, trunk/fuse/ui/gtk/gtkjoystick.c, + trunk/fuse/ui/gtk/gtkkeyboard.c, trunk/fuse/ui/gtk/gtkmouse.c, + trunk/fuse/ui/gtk/gtkui.c, trunk/fuse/ui/gtk/memory.c, + trunk/fuse/ui/gtk/options-header.pl, + trunk/fuse/ui/gtk/options.pl, trunk/fuse/ui/gtk/picture.c, + trunk/fuse/ui/gtk/pokefinder.c, trunk/fuse/ui/gtk/rollback.c, + trunk/fuse/ui/gtk/roms.c, trunk/fuse/ui/gtk/statusbar.c, + trunk/fuse/ui/options.dat, trunk/fuse/ui/scaler/Makefile.am, + trunk/fuse/ui/scaler/scaler.c, trunk/fuse/ui/scaler/scalers.cpp, + trunk/fuse/ui/sdl/Makefile.am, trunk/fuse/ui/sdl/sdldisplay.c, + trunk/fuse/ui/sdl/sdljoystick.c, trunk/fuse/ui/sdl/sdlkeyboard.c, + trunk/fuse/ui/sdl/sdlui.c, trunk/fuse/ui/svga/Makefile.am, + trunk/fuse/ui/svga/svgadisplay.c, + trunk/fuse/ui/svga/svgajoystick.c, + trunk/fuse/ui/svga/svgakeyboard.c, trunk/fuse/ui/svga/svgaui.c, + trunk/fuse/ui/ui.h, trunk/fuse/ui/uijoystick.c, + trunk/fuse/ui/win32/Makefile.am, trunk/fuse/ui/win32/debugger.c, + trunk/fuse/ui/win32/error.c, trunk/fuse/ui/win32/menu_data.c, + trunk/fuse/ui/win32/menu_data.h, + trunk/fuse/ui/win32/menu_data.rc, + trunk/fuse/ui/win32/options-header.pl, + trunk/fuse/ui/win32/options-resource.pl, + trunk/fuse/ui/win32/options.pl, trunk/fuse/ui/win32/pokefinder.c, + trunk/fuse/ui/win32/statusbar.c, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/win32/win32display.h, + trunk/fuse/ui/win32/win32internals.h, + trunk/fuse/ui/win32/win32keyboard.c, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/ui/xlib/Makefile.am, + trunk/fuse/ui/xlib/xdisplay.c, trunk/fuse/ui/xlib/xerror.c, + trunk/fuse/ui/xlib/xjoystick.c, trunk/fuse/ui/xlib/xkeyboard.c, + trunk/fuse/ui/xlib/xui.c, trunk/fuse/utils.c, trunk/fuse/utils.h, + trunk/fuse/widget/Makefile.am, trunk/fuse/widget/browse.c, + trunk/fuse/widget/debugger.c, trunk/fuse/widget/error.c, + trunk/fuse/widget/filesel.c, trunk/fuse/widget/memory.c, + trunk/fuse/widget/menu.c, trunk/fuse/widget/options.pl, + trunk/fuse/widget/picture.c, trunk/fuse/widget/pokefinder.c, + trunk/fuse/widget/query.c, trunk/fuse/widget/roms.c, + trunk/fuse/widget/select.c, trunk/fuse/widget/text.c, + trunk/fuse/widget/widget.c, trunk/fuse/widget/widget.h, + trunk/fuse/widget/widget_internals.h, trunk/fuse/z80/Makefile.am, + trunk/fuse/z80/coretest.c, trunk/fuse/z80/z80.c, + trunk/fuse/z80/z80.pl, trunk/fuse/z80/z80_checks.h, + trunk/fuse/z80/z80_ops.c, trunk/libspectrum/libspectrum.h, + trunk/libspectrum/libspectrum/ChangeLog, + trunk/libspectrum/libspectrum/Makefile.am, + trunk/libspectrum/libspectrum/configure.in, + trunk/libspectrum/libspectrum/csw.c, + trunk/libspectrum/libspectrum/doc/libspectrum.txt, + trunk/libspectrum/libspectrum/generate.pl.in, + trunk/libspectrum/libspectrum/hacking/ChangeLog, + trunk/libspectrum/libspectrum/libspectrum.c, + trunk/libspectrum/libspectrum/libspectrum.h.in, + trunk/libspectrum/libspectrum/plusd.c, + trunk/libspectrum/libspectrum/rzx.c, + trunk/libspectrum/libspectrum/sna.c, + trunk/libspectrum/libspectrum/szx.c, + trunk/libspectrum/libspectrum/tape.c, + trunk/libspectrum/libspectrum/test/Makefile.am, + trunk/libspectrum/libspectrum/test/complete-tzx.pl, + trunk/libspectrum/libspectrum/test/edges.c, + trunk/libspectrum/libspectrum/test/invalid-warajevo-blockoffset.tap, + trunk/libspectrum/libspectrum/test/jump.tzx, + trunk/libspectrum/libspectrum/test/loop2.tzx, + trunk/libspectrum/libspectrum/test/test.c, + trunk/libspectrum/libspectrum/test/test.h, + trunk/libspectrum/libspectrum/test/test15.c, + trunk/libspectrum/libspectrum/timings.c, + trunk/libspectrum/libspectrum/z80.c: Merge up to vendor r3254. + +2007-11-09 23:10 fredm + + * trunk/FuseImporter/FuseImporter.xcodeproj/project.pbxproj, + trunk/audiofile/audiofile.xcodeproj/project.pbxproj, trunk/bzip2, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/lib765/lib765.xcodeproj/project.pbxproj, + trunk/libgcrypt/libgcrypt.xcodeproj/project.pbxproj, + trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj: Move to + XCode 2.5 and 10.4 target for all frameworks. Link to libbz2 in + /usr/lib instead of framework. + +2007-11-09 22:38 fredm + + * trunk/fuse/TODO: Update for last few changes. + +2007-08-15 23:23 fredm + + * trunk/fuse/fusepb/nibs/MainMenu.nib/info.nib, + trunk/fuse/fusepb/nibs/MainMenu.nib/keyedobjects.nib: Disable + Tape->Record menu item when tape traps are enabled. + +2007-08-14 14:04 fredm + + * trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m, + trunk/fuse/settings.dat: Refactor display link starting and + stopping and try to only stop and start the + display link at appropriate times, add support for panoramic + fullscreen mode. + +2007-08-12 05:49 fredm + + * trunk/fuse/fusepb/controllers/PreferencesController.m, + trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib, + trunk/fuse/fusepb/views/DisplayOpenGLView.h, + trunk/fuse/fusepb/views/DisplayOpenGLView.m, + trunk/fuse/settings.dat, trunk/fuse/ui/cocoa/cocoadisplay.m: + Rollback revision 434 now we understand what was causing the + texture + distortion. + +2007-08-12 00:30 fredm + + * trunk/fuse/fusepb/views/DisplayOpenGLView.m: Use correct offset + for emulator top right texture. + +2007-08-06 02:39 fredm + + * trunk/lib765/lib765/config.h, trunk/lib765/libdsk/config.h: Bump + version numbers in config.h headers. + +2007-08-06 02:24 fredm + + * trunk/fuse/Makefile.am, trunk/fuse/compat.h, + trunk/fuse/compat/Makefile.am, trunk/fuse/compat/amiga, + trunk/fuse/compat/amiga/Makefile.am, + trunk/fuse/compat/amiga/paths.c, trunk/fuse/compat/dirname.c, + trunk/fuse/compat/getopt.c, trunk/fuse/compat/getopt1.c, + trunk/fuse/compat/mkstemp.c, trunk/fuse/compat/morphos, + trunk/fuse/compat/morphos/Makefile.am, + trunk/fuse/compat/morphos/osname.c, trunk/fuse/compat/unix, + trunk/fuse/compat/unix/Makefile.am, + trunk/fuse/compat/unix/osname.c, trunk/fuse/compat/unix/paths.c, + trunk/fuse/compat/win32, trunk/fuse/compat/win32/Makefile.am, + trunk/fuse/compat/win32/osname.c, + trunk/fuse/compat/win32/paths.c, trunk/fuse/configure.in, + trunk/fuse/event.c, trunk/fuse/fuse.cpp, + trunk/fuse/fusepb/Fuse.xcodeproj/project.pbxproj, + trunk/fuse/fusepb/Info-Fuse.plist, trunk/fuse/fusepb/config.h, + trunk/fuse/hacking/ChangeLog, trunk/fuse/machines/tc2048.c, + trunk/fuse/menu_data.pl, trunk/fuse/printer.c, trunk/fuse/rzx.c, + trunk/fuse/settings.pl, trunk/fuse/sound.c, + trunk/fuse/sound/Makefile.am, trunk/fuse/sound/alsasound.c, + trunk/fuse/sound/aosound.c, trunk/fuse/sound/coreaudiosound.c, + trunk/fuse/sound/dxsound.c, trunk/fuse/sound/hpsound.c, + trunk/fuse/sound/lowlevel.h, trunk/fuse/sound/nullsound.c, + trunk/fuse/sound/osssound.c, trunk/fuse/sound/sdlsound.c, + trunk/fuse/sound/sfifo.c, trunk/fuse/sound/sunsound.c, + trunk/fuse/spectrum.c, trunk/fuse/tape.c, trunk/fuse/tape.h, + trunk/fuse/timer, trunk/fuse/timer.c, trunk/fuse/timer.h, + trunk/fuse/timer/Makefile.am, trunk/fuse/timer/sdl.c, + trunk/fuse/timer/timer.c, trunk/fuse/timer/timer.h, + trunk/fuse/timer/unix.c, trunk/fuse/timer/win32.c, + trunk/fuse/trdos.c, trunk/fuse/ui/gtk/debugger.c, + trunk/fuse/ui/gtk/gtkjoystick.c, trunk/fuse/ui/gtk/gtkmouse.c, + trunk/fuse/ui/gtk/gtkui.c, trunk/fuse/ui/gtk/pokefinder.c, + trunk/fuse/ui/gtk/stock.c, trunk/fuse/ula.c, trunk/fuse/utils.c, + trunk/fuse/widget/widget.c, trunk/fuse/z80/coretest.c: Merge up + to vendor revision 3095. + +2007-08-06 01:11 fredm + + * trunk/lib765/Info.plist, trunk/lib765/config.h, + trunk/lib765/lib765.xcodeproj/project.pbxproj, + trunk/lib765/lib765/ChangeLog, trunk/lib765/lib765/configure, + trunk/lib765/lib765/configure.in, + trunk/lib765/lib765/lib/765ldsk.c, + trunk/lib765/lib765/lib/Makefile.am, + trunk/lib765/lib765/lib/Makefile.in, + trunk/lib765/libdsk/ChangeLog, trunk/lib765/libdsk/configure, + trunk/lib765/libdsk/configure.in, + trunk/lib765/libdsk/doc/libdsk.lyx, + trunk/lib765/libdsk/doc/libdsk.pdf, + trunk/lib765/libdsk/doc/libdsk.txt, + trunk/lib765/libdsk/dos16ppd/Makefile, + trunk/lib765/libdsk/dos32gcc/Makefile, + trunk/lib765/libdsk/include/libdsk.h, + trunk/lib765/libdsk/lib/Makefile.am, + trunk/lib765/libdsk/lib/Makefile.in, + trunk/lib765/libdsk/lib/drivers.h, + trunk/lib765/libdsk/lib/drivers.inc, + trunk/lib765/libdsk/lib/drvlogi.c, + trunk/lib765/libdsk/lib/drvlogi.h, + trunk/lib765/libdsk/lib/drvtele.c, + trunk/lib765/libdsk/lib/drvtele.h, + trunk/lib765/libdsk/lib/dsksgeom.c, + trunk/lib765/libdsk/man/apriboot.1, + trunk/lib765/libdsk/man/dskdump.1, + trunk/lib765/libdsk/man/dskform.1, + trunk/lib765/libdsk/man/dskid.1, + trunk/lib765/libdsk/man/dskscan.1, + trunk/lib765/libdsk/man/dsktrans.1, + trunk/lib765/libdsk/man/dskutil.1, + trunk/lib765/libdsk/man/md3serial.1, + trunk/lib765/libdsk/tools/dsktrans.c, + trunk/lib765/libdsk/win16bc5/libdsk.ide, + trunk/lib765/libdsk/win16vc1/LIBDSK16.MAK, + trunk/lib765/libdsk/win32bc5/libdsk.ide, + trunk/lib765/libdsk/win32vc6/atlibdsk.dsp, + trunk/lib765/libdsk/win32vc6/atlibdsk.h, + trunk/lib765/libdsk/win32vc6/atlibdsk_i.c, + trunk/lib765/libdsk/win32vc6/atlibdsk_p.c, + trunk/lib765/libdsk/win32vc6/libdsk.dsp: Merge up to vendor + libdsk-1.1.14 and lib765-0.4.1. + +2007-08-03 10:15 fredm + + * trunk/fuse/fusepb/controllers/FuseController.h, + trunk/fuse/fusepb/controllers/FuseController.m: Remove obsolete + key release methods. + +2007-07-28 12:44 fredm + + * trunk/fuse/fusepb/views/DisplayOpenGLView.m: Don't run the + display link when the emulator is paused or we don't have a + screen + texture initialised. + +2007-07-28 03:39 fredm + + * trunk/fuse/ChangeLog, trunk/fuse/configure.in, + trunk/fuse/disk/Makefile.am, trunk/fuse/disk/plusd.c, + trunk/fuse/disk/plusd.h, trunk/fuse/disk/wd1770.c, + trunk/fuse/disk/wd1770.h, trunk/fuse/divide.c, + trunk/fuse/fusepb/English.lproj/InfoPlist.strings, + trunk/fuse/fusepb/Info-Fuse.plist, trunk/fuse/fusepb/config.h, + trunk/fuse/hacking/ChangeLog, trunk/fuse/if1.c, trunk/fuse/if2.c, + trunk/fuse/joystick.c, trunk/fuse/kempmouse.c, + trunk/fuse/keyboard.c, trunk/fuse/machines/specplus3.c, + trunk/fuse/memory.c, trunk/fuse/module.c, trunk/fuse/module.h, + trunk/fuse/periph.c, trunk/fuse/printer.c, trunk/fuse/scld.c, + trunk/fuse/simpleide.c, trunk/fuse/sound/alsasound.c, + trunk/fuse/sound/sfifo.c, trunk/fuse/tape.c, + trunk/fuse/ui/ggi/ggi_internals.h, + trunk/fuse/ui/ggi/ggidisplay.c, trunk/fuse/ui/ggi/ggikeyboard.c, + trunk/fuse/ui/ggi/ggiui.c, trunk/fuse/ui/gtk/browse.c, + trunk/fuse/ui/gtk/debugger.c, trunk/fuse/ui/gtk/gtkjoystick.c, + trunk/fuse/ui/gtk/gtkmouse.c, trunk/fuse/ui/gtk/gtkui.c, + trunk/fuse/ui/gtk/pokefinder.c, trunk/fuse/ui/gtk/rollback.c, + trunk/fuse/ui/win32/debugger.c, trunk/fuse/ui/win32/error.c, + trunk/fuse/ui/win32/icons/Makefile.am, + trunk/fuse/ui/win32/menu_data.c, trunk/fuse/ui/win32/menu_data.h, + trunk/fuse/ui/win32/menu_data.rc, + trunk/fuse/ui/win32/statusbar.c, + trunk/fuse/ui/win32/win32display.c, + trunk/fuse/ui/win32/win32display.h, + trunk/fuse/ui/win32/win32ui.c, trunk/fuse/utils.c, + trunk/fuse/utils.h, trunk/fuse/z80/Makefile.am, + trunk/fuse/z80/coretest.c, trunk/fuse/z80/harness.pl, + trunk/fuse/z80/tests/00.in, trunk/fuse/z80/tests/00.out, + trunk/fuse/z80/tests/01.in, trunk/fuse/z80/tests/01.out, + trunk/fuse/z80/tests/02.in, trunk/fuse/z80/tests/02.out, + trunk/fuse/z80/tests/03.in, trunk/fuse/z80/tests/03.out, + trunk/fuse/z80/tests/04.in, trunk/fuse/z80/tests/04.out, + trunk/fuse/z80/tests/05.in, trunk/fuse/z80/tests/05.out, + trunk/fuse/z80/tests/06.in, trunk/fuse/z80/tests/06.out, + trunk/fuse/z80/tests/07.in, trunk/fuse/z80/tests/07.out, + trunk/fuse/z80/tests/08.in, trunk/fuse/z80/tests/08.out, + trunk/fuse/z80/tests/09.in, trunk/fuse/z80/tests/09.out, + tr... [truncated message content] |
From: <fr...@us...> - 2008-11-18 12:25:44
|
Revision: 549 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=549&view=rev Author: fredm Date: 2008-11-18 12:25:34 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Create Release-0_10_0-pre1 tag. Added Paths: ----------- tags/Release-0_10_0-pre1/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-18 12:21:54
|
Revision: 548 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=548&view=rev Author: fredm Date: 2008-11-18 12:21:50 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Add some additional credits from the Fuse version of the file. Modified Paths: -------------- trunk/fuse/fusepb/Credits.html Modified: trunk/fuse/fusepb/Credits.html =================================================================== --- trunk/fuse/fusepb/Credits.html 2008-11-18 12:05:21 UTC (rev 547) +++ trunk/fuse/fusepb/Credits.html 2008-11-18 12:21:50 UTC (rev 548) @@ -35,7 +35,8 @@ <li><span style="font-family: Helvetica;" lang="EN-US">Ian Collier: the original ZX Printer emulation (for xz80).</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">John Elliott: -for lib765, which provides Fuse's emulation of the +3's FDC, and libdsk +for lib765, which once provided Fuse's emulation of the +3's FDC, and +libdsk which provides support for more disk image formats see <a href="http://www.seasip.demon.co.uk/Unix/LibDsk/">here</a>.</span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Darren Salt: @@ -82,6 +83,25 @@ the Interface I and microdrive emulation, the PAL TV scalers, the TV 3x scaler, the movie logging code, the libao sound code, and made many improvements to the widget code.</span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">Boris Donko: +for various Z80 core fixes: missing memory contention on LD (nnnn),A +instruction, flags on SCF and FLAG_V on DEC, and timing of INC SP.</span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">Ivan Ruiz +Etxabe: for helping test RZX competition mode recording.</span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">David Muriel: +for helping test RZX competition mode recording.<br> + </span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">Ian Greenway: +for information about reading from unattached ports. If you've got an +Amiga, you may well like to check out Ian's Spectrum Emulator, <a + href="http://www.greew.freeserve.co.uk/ASp.html">ASp</a></span></li> + <li><span style="font-family: Helvetica;" lang="EN-US">Mark Woodmass: +for putting me on the track of (and finding the solution to) bugs with +regard to Fuse's R register emulation during HALTs and interrupts and +Fuse's mask for the memory control port on the 128K/+2 machines. Mark's +another one who's written an emulator: see '<a + href="http://www.worldofspectrum.org/emulators.html#pcwin">SPIN</a>'<br> + </span></li> <li><span style="font-family: Helvetica;" lang="EN-US">Joystick support frm the </span><span style="font-family: Helvetica;" lang="EN-US"><a href="http://www.libsdl.org">Simple DirectMedia Layer</a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-18 12:05:29
|
Revision: 547 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=547&view=rev Author: fredm Date: 2008-11-18 12:05:21 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Merge up to vendor 0.10.0-pre1 release. Modified Paths: -------------- trunk/FuseGenerator/libspectrum.h trunk/FuseImporter/libspectrum.h trunk/fuse/ChangeLog trunk/fuse/Makefile.am trunk/fuse/configure.in trunk/fuse/disk/disk.c trunk/fuse/fuse.c trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html trunk/fuse/hacking/ChangeLog trunk/fuse/hacking/Makefile.am trunk/fuse/hacking/cvs-tags trunk/fuse/machines/specplus2a.c trunk/fuse/machines/specplus3.c trunk/fuse/man/fuse.1 trunk/fuse/ui/win32/Makefile.am trunk/fuse/utils.c trunk/libspectrum/Info.plist trunk/libspectrum/libspectrum/configure.in trunk/libspectrum/libspectrum/doc/cvs-tags trunk/libspectrum/libspectrum/doc/libspectrum.txt trunk/libspectrum/libspectrum/hacking/ChangeLog trunk/libspectrum/libspectrum/libspectrum.c trunk/libspectrum/libspectrum/libspectrum.h.in trunk/libspectrum/libspectrum.h trunk/libspectrum/libspectrum.xcodeproj/project.pbxproj Property Changed: ---------------- trunk/fuse/ trunk/libspectrum/libspectrum/ Modified: trunk/FuseGenerator/libspectrum.h =================================================================== --- trunk/FuseGenerator/libspectrum.h 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/FuseGenerator/libspectrum.h 2008-11-18 12:05:21 UTC (rev 547) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in 3792 2008-10-27 20:49:34Z specu $ + $Id: libspectrum.h.in 3806 2008-11-08 10:42:38Z pak21 $ 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 @@ -286,7 +286,10 @@ /* Below here, present only in 0.1.1 and later */ + /* The next entry is deprecated in favour of the more specific + LIBSPECTRUM_ID_DISK_CPC and LIBSPECTRUM_ID_DISK_ECPC */ LIBSPECTRUM_ID_DISK_DSK, /* .dsk +3 disk image */ + LIBSPECTRUM_ID_DISK_SCL, /* .scl TR-DOS disk image */ LIBSPECTRUM_ID_DISK_TRD, /* .trd TR-DOS disk image */ LIBSPECTRUM_ID_CARTRIDGE_DCK, /* .dck Timex cartridge image */ @@ -318,6 +321,7 @@ LIBSPECTRUM_ID_TAPE_Z80EM, /* Z80Em tape image */ /* Below here, present only in 0.4.0 and later */ + LIBSPECTRUM_ID_TAPE_WAV, /* .wav tape image */ LIBSPECTRUM_ID_TAPE_SPC, /* SP-style .spc tape image */ LIBSPECTRUM_ID_TAPE_STA, /* Speculator-style .sta tape image */ @@ -326,6 +330,15 @@ LIBSPECTRUM_ID_DISK_IMG, /* .img DISCiPLE/+D disk image */ LIBSPECTRUM_ID_DISK_MGT, /* .mgt DISCiPLE/+D disk image */ + /* Below here, present only in 0.5.0 and later */ + + LIBSPECTRUM_ID_DISK_UDI, /* .udi generic disk image */ + LIBSPECTRUM_ID_DISK_FDI, /* .fdi generic disk image */ + LIBSPECTRUM_ID_DISK_CPC, /* .dsk plain CPC +3 disk image */ + LIBSPECTRUM_ID_DISK_ECPC, /* .dsk extended CPC +3 disk image */ + LIBSPECTRUM_ID_DISK_SAD, /* .sad generic disk image */ + LIBSPECTRUM_ID_DISK_TD0, /* .td0 generic disk image */ + LIBSPECTRUM_ID_SCREEN_SCR, /* .scr screen file */ } libspectrum_id_t; @@ -359,6 +372,10 @@ LIBSPECTRUM_CLASS_DISK_PLUSD, /* DISCiPLE/+D disk image */ + /* Below here, present only in 0.5.0 and later */ + + LIBSPECTRUM_CLASS_DISK_GENERIC, /* generic disk image */ + LIBSPECTRUM_CLASS_SCREENSHOT, /* Screenshot */ } libspectrum_class_t; Modified: trunk/FuseImporter/libspectrum.h =================================================================== --- trunk/FuseImporter/libspectrum.h 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/FuseImporter/libspectrum.h 2008-11-18 12:05:21 UTC (rev 547) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in 3792 2008-10-27 20:49:34Z specu $ + $Id: libspectrum.h.in 3806 2008-11-08 10:42:38Z pak21 $ 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 @@ -286,7 +286,10 @@ /* Below here, present only in 0.1.1 and later */ + /* The next entry is deprecated in favour of the more specific + LIBSPECTRUM_ID_DISK_CPC and LIBSPECTRUM_ID_DISK_ECPC */ LIBSPECTRUM_ID_DISK_DSK, /* .dsk +3 disk image */ + LIBSPECTRUM_ID_DISK_SCL, /* .scl TR-DOS disk image */ LIBSPECTRUM_ID_DISK_TRD, /* .trd TR-DOS disk image */ LIBSPECTRUM_ID_CARTRIDGE_DCK, /* .dck Timex cartridge image */ @@ -318,6 +321,7 @@ LIBSPECTRUM_ID_TAPE_Z80EM, /* Z80Em tape image */ /* Below here, present only in 0.4.0 and later */ + LIBSPECTRUM_ID_TAPE_WAV, /* .wav tape image */ LIBSPECTRUM_ID_TAPE_SPC, /* SP-style .spc tape image */ LIBSPECTRUM_ID_TAPE_STA, /* Speculator-style .sta tape image */ @@ -326,6 +330,15 @@ LIBSPECTRUM_ID_DISK_IMG, /* .img DISCiPLE/+D disk image */ LIBSPECTRUM_ID_DISK_MGT, /* .mgt DISCiPLE/+D disk image */ + /* Below here, present only in 0.5.0 and later */ + + LIBSPECTRUM_ID_DISK_UDI, /* .udi generic disk image */ + LIBSPECTRUM_ID_DISK_FDI, /* .fdi generic disk image */ + LIBSPECTRUM_ID_DISK_CPC, /* .dsk plain CPC +3 disk image */ + LIBSPECTRUM_ID_DISK_ECPC, /* .dsk extended CPC +3 disk image */ + LIBSPECTRUM_ID_DISK_SAD, /* .sad generic disk image */ + LIBSPECTRUM_ID_DISK_TD0, /* .td0 generic disk image */ + LIBSPECTRUM_ID_SCREEN_SCR, /* .scr screen file */ } libspectrum_id_t; @@ -359,6 +372,10 @@ LIBSPECTRUM_CLASS_DISK_PLUSD, /* DISCiPLE/+D disk image */ + /* Below here, present only in 0.5.0 and later */ + + LIBSPECTRUM_CLASS_DISK_GENERIC, /* generic disk image */ + LIBSPECTRUM_CLASS_SCREENSHOT, /* Screenshot */ } libspectrum_class_t; Property changes on: trunk/fuse ___________________________________________________________________ Modified: svn:mergeinfo - /vendor/fuse-emulator/current/fuse:530-538 + /vendor/fuse-emulator/0.10.0-pre1/fuse:545-546 /vendor/fuse-emulator/current/fuse:530-538 Modified: trunk/fuse/ChangeLog =================================================================== --- trunk/fuse/ChangeLog 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/ChangeLog 2008-11-18 12:05:21 UTC (rev 547) @@ -16,6 +16,8 @@ * Reading from the 128K's memory control port causes that byte to be written back to the port (Philip Kendall; thanks, Marat Fayzullin). + * Reading the AY data port on the +2A/+3 is the same as reading + the register port (Philip Kendall; thanks, Mark Woodmass). * NMI causes Z80 to unHALT (Philip Kendall; thanks, Simon Owen). * Emulate C, H and P/V flags on repeated IO instructions (Philip Kendall). @@ -929,4 +931,4 @@ * Version 0.1.0 released. -$Id: ChangeLog 3787 2008-10-22 19:10:25Z pak21 $ +$Id: ChangeLog 3823 2008-11-16 17:32:18Z pak21 $ Modified: trunk/fuse/Makefile.am =================================================================== --- trunk/fuse/Makefile.am 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/Makefile.am 2008-11-18 12:05:21 UTC (rev 547) @@ -1,7 +1,7 @@ # Process this file with automake to produce Makefile.in ## Copyright (c) 1999-2008 Philip Kendall -## $Id: Makefile.am 3617 2008-05-17 08:09:47Z pak21 $ +## $Id: Makefile.am 3818 2008-11-15 13:28:08Z pak21 $ ## 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 @@ -173,6 +173,7 @@ loader.h \ machine.h \ memory.h \ + mempool.h \ menu.h \ module.h \ periph.h \ Modified: trunk/fuse/configure.in =================================================================== --- trunk/fuse/configure.in 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/configure.in 2008-11-18 12:05:21 UTC (rev 547) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 3796 2008-10-28 20:44:45Z specu $ +dnl $Id: configure.in 3827 2008-11-17 21:19:48Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ AC_CANONICAL_SYSTEM dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(fuse, 0.9.0) +AM_INIT_AUTOMAKE(fuse, 0.10.0-pre1) dnl Checks for programs. AC_PROG_CC Modified: trunk/fuse/disk/disk.c =================================================================== --- trunk/fuse/disk/disk.c 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/disk/disk.c 2008-11-18 12:05:21 UTC (rev 547) @@ -1,7 +1,7 @@ /* disk.c: Routines for handling disk images Copyright (c) 2007 Gergely Szasz - $Id: disk.c 3748 2008-08-15 09:04:33Z pak21 $ + $Id: disk.c 3815 2008-11-09 19:19:59Z pak21 $ 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 @@ -35,6 +35,7 @@ #include "bitmap.h" #include "crc.h" #include "disk.h" +#include "utils.h" /* The ordering of these strings must match the order of the * disk_error_t enumeration in disk.h */ @@ -90,6 +91,15 @@ #define GAP_MINIMAL_FM 4 #define GAP_MINIMAL_MFM 5 +#define buffavail(buffer) ( buffer->file.length - buffer->index ) +/* data buffer */ +#define buff ( buffer->file.buffer + buffer->index ) + +typedef struct buffer_t { /* to store buffer data */ + utils_file file; /* buffer, length */ + size_t index; +} buffer_t; + const char * disk_strerror( int error ) { @@ -99,6 +109,27 @@ } static int +buffread( void *data, size_t len, buffer_t *buffer ) +{ + if( len > buffer->file.length - buffer->index ) + return 0; + memcpy( data, buffer->file.buffer + buffer->index, len ); + buffer->index += len; + return 1; +} + +static int +buffseek( buffer_t *buffer, long offset, int whence ) +{ + if( whence == SEEK_CUR ) + offset += buffer->index; + if( offset >= buffer->file.length ) + return -1; + buffer->index = offset; + return 0; +} + +static int id_read( disk_t *d, int *head, int *track, int *sector, int *length ) { int a1mark = 0; @@ -462,9 +493,11 @@ #define NO_DDAM 0 #define DDAM 1 #define NO_AUTOFILL -1 -/* if 'file' == NULL, then copy data bytes from 'data' */ +/* copy data from *buffer and update *buffer->index */ +/* if 'buffer' == NULL, then copy data bytes from 'data' */ static int -data_add( disk_t *d, FILE *file, unsigned char *data, int len, int ddam, int gaptype, int crc_error, int autofill ) +data_add( disk_t *d, buffer_t *buffer, unsigned char *data, int len, int ddam, + int gaptype, int crc_error, int autofill ) { int length; libspectrum_word crc = 0xffff; @@ -484,13 +517,15 @@ if( d->i + len + 2 >= d->bpt ) /* too many data bytes */ return 1; /*------------------------------ data ------------------------------*/ - if( file == NULL ) { + if( buffer == NULL ) { memcpy( d->track + d->i, data, len ); length = len; } else { - length = fread( d->track + d->i, 1, len, file ); + length = buffavail( buffer ); + if( length > len ) length = len; + buffread( d->track + d->i, length, buffer ); } - if( length != len ) { /* autofill with 'autofill' */ + if( length < len ) { /* autofill with 'autofill' */ if( autofill < 0 ) return 1; while( length < len ) { @@ -536,7 +571,7 @@ #define PREINDEX 1 static int -trackgen( disk_t *d, FILE *file, int head, int track, +trackgen( disk_t *d, buffer_t *buffer, int head, int track, int sector_base, int sectors, int sector_length, int preindex, int gap, int interleave, int autofill ) { @@ -544,7 +579,7 @@ int slen = calc_sectorlen( ( d->density != DISK_SD && d->density != DISK_8_SD ), sector_length, gap ); int idx; - + d->i = 0; d->track = d->data + ( ( d->sides * track + head ) * d->tlen ); d->clocks = d->track + d->bpt; @@ -559,7 +594,7 @@ d->i = idx + ( pos + i ) * slen; if( id_add( d, head, track, s, sector_length >> 8, gap, CRC_OK ) ) return 1; - if( data_add( d, file, NULL, sector_length, NO_DDAM, gap, CRC_OK, autofill ) ) + if( data_add( d, buffer, NULL, sector_length, NO_DDAM, gap, CRC_OK, autofill ) ) return 1; pos += interleave; if( pos >= sectors ) { @@ -592,7 +627,7 @@ disk_alloc( disk_t *d ) { size_t dlen; - + if( d->density != DISK_DENS_AUTO ) { d->bpt = disk_bpt[ d->density ]; } else if( d->bpt > 12500 ) { @@ -642,7 +677,7 @@ d->density = density == DISK_DENS_AUTO ? DISK_DD : density; d->sides = sides; d->cylinders = cylinders; - + if( disk_alloc( d ) != DISK_OK ) return d->status; @@ -655,13 +690,12 @@ alloc_uncompress_buffer( unsigned char **buffer, int length ) { unsigned char *b; - + if( *buffer != NULL ) /* return if allocated */ return 0; b = calloc( length, 1 ); if( b == NULL ) return 1; - memset( b, 0, length ); *buffer = b; return 0; } @@ -672,27 +706,27 @@ d->cylinders < 1 || d->cylinders > 85 ) return d->status = DISK_GEOM static int -open_udi( FILE *file, disk_t *d ) +open_udi( buffer_t *buffer, disk_t *d ) { int i, j, bpt; - d->sides = head[10] + 1; - d->cylinders = head[9] + 1; + d->sides = buff[10] + 1; + d->cylinders = buff[9] + 1; GEOM_CHECK; d->density = DISK_DENS_AUTO; - fseek( file, 16, SEEK_SET ); + buffer->index = 16; d->bpt = 0; /* scan file for the longest track */ for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( fread( head, 3, 1, file ) != 1 ) + if( buffavail( buffer ) < 3 ) return d->status = DISK_OPEN; - bpt = head[1] + 256 * head[2]; /* current track len... */ - if( head[0] != 0x00 ) + if( buff[0] != 0x00 ) return d->status = DISK_UNSUP; + bpt = buff[1] + 256 * buff[2]; /* current track len... */ if( bpt > d->bpt ) d->bpt = bpt; - if( fseek( file, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), SEEK_CUR ) == -1 ) + if( buffseek( buffer, 3 + bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), SEEK_CUR ) == -1 ) return d->status = DISK_OPEN; } @@ -705,27 +739,21 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; d->bpt = bpt; /* restore the maximal byte per track */ - fseek( file, 16, SEEK_SET ); + buffer->index = 16; d->track = d->data; for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( fread( head, 3, 1, file ) != 1 ) - return d->status = DISK_OPEN; - bpt = head[1] + 256 * head[2]; /* current track len... */ - if( head[0] != 0x00 ) - return d->status = DISK_UNSUP; - /* read track + clocks */ + bpt = buff[1] + 256 * buff[2]; /* current track len... */ + buffer->index += 3; + /* read track + clocks */ if( d->bpt == bpt ) { /* if udi track length equal with the maximal track length */ - if( fread( d->track, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), 1, file ) != 1 ) - return d->status = DISK_OPEN; + buffread( d->track, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), buffer ); } else { - if( fread( d->track, bpt , 1, file ) != 1 ) /* first the data */ - return d->status = DISK_OPEN; + buffread( d->track, bpt, buffer ); /* first the data */ d->track += bpt; for( j = d->bpt - bpt; j > 0; j--, d->track++ ) *d->track = 0x4e; /* fill track data with 0x4e */ - if( fread( d->track, bpt / 8 + ( bpt % 8 ? 1 : 0 ), 1, file ) != 1 ) - return d->status = DISK_OPEN; /* next the clock marks */ + buffread( d->track, bpt / 8 + ( bpt % 8 ? 1 : 0 ), buffer ); d->track += bpt / 8 + ( bpt % 8 ? 1 : 0 ); for( j = ( d->bpt / 8 + ( d->bpt % 8 ? 1 : 0 ) ) - ( bpt / 8 + ( bpt % 8 ? 1 : 0 ) ); j > 0; j--, d->track++ ) @@ -738,21 +766,21 @@ } static int -open_mgt_img( FILE *file, disk_t *d, size_t file_length, disk_type_t type ) +open_mgt_img( buffer_t *buffer, disk_t *d ) { int i, j, sectors, seclen; - fseek( file, 0, SEEK_SET ); + buffer->index = 0; /* guess geometry of disk: * 2*80*10*512, 1*80*10*512 or 1*40*10*512 */ - if( file_length == 2*80*10*512 ) { + if( buffer->file.length == 2*80*10*512 ) { d->sides = 2; d->cylinders = 80; sectors = 10; seclen = 512; - } else if( file_length == 1*80*10*512 ) { + } else if( buffer->file.length == 1*80*10*512 ) { /* we cannot distinguish between a single sided 80 track image * and a double sided 40 track image (2*40*10*512) */ d->sides = 1; d->cylinders = 80; sectors = 10; seclen = 512; - } else if( file_length == 1*40*10*512 ) { + } else if( buffer->file.length == 1*40*10*512 ) { d->sides = 1; d->cylinders = 40; sectors = 10; seclen = 512; } else { return d->status = DISK_GEOM; @@ -763,17 +791,17 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; - if( type == DISK_IMG ) { /* IMG out-out */ + if( d->type == DISK_IMG ) { /* IMG out-out */ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, NO_PREINDEX, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } } } else { /* MGT alt */ for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( trackgen( d, file, i % 2, i / 2, 1, sectors, seclen, + if( trackgen( d, buffer, i % 2, i / 2, 1, sectors, seclen, NO_PREINDEX, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } @@ -783,16 +811,16 @@ } static int -open_sad( FILE *file, disk_t *d, int preindex ) +open_sad( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, sectors, seclen; - fseek( file, 22, SEEK_SET ); - d->sides = head[18]; - d->cylinders = head[19]; + d->sides = buff[18]; + d->cylinders = buff[19]; GEOM_CHECK; - sectors = head[20]; - seclen = head[21] * 64; + sectors = buff[20]; + seclen = buff[21] * 64; + buffer->index = 22; /* create a DD disk */ d->density = DISK_DD; @@ -801,7 +829,7 @@ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, preindex, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, preindex, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } @@ -811,20 +839,21 @@ } static int -open_trd( FILE *file, disk_t *d ) +open_trd( buffer_t *buffer, disk_t *d ) { int i, j, sectors, seclen; - fseek( file, 8*256, SEEK_SET ); - if( fread( head, 256, 1, file ) != 1 ) + if( buffseek( buffer, 8*256, SEEK_CUR ) == -1 ) + return d->status = DISK_OPEN; + if( buffavail( buffer ) < 256 ) return d->status = DISK_OPEN; - if( head[231] != 0x10 || head[227] < 0x16 || head[227] > 0x19 ) + if( buff[231] != 0x10 || buff[227] < 0x16 || buff[227] > 0x19 ) return d->status = DISK_OPEN; /*?*/ /* guess geometry of disk */ - d->sides = head[227] & 0x08 ? 1 : 2; - d->cylinders = head[227] & 0x01 ? 40 : 80; + d->sides = buff[227] & 0x08 ? 1 : 2; + d->cylinders = buff[227] & 0x01 ? 40 : 80; sectors = 16; seclen = 256; /* create a DD disk */ @@ -832,10 +861,10 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; - fseek( file, 0, SEEK_SET ); + buffer->index = 0; for( i = 0; i < d->cylinders; i++ ) { for( j = 0; j < d->sides; j++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, NO_PREINDEX, GAP_TRDOS, INTERLEAVE_2, 0x00 ) ) return d->status = DISK_GEOM; } @@ -844,25 +873,25 @@ } static int -open_fdi( FILE *file, disk_t *d, int preindex ) +open_fdi( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, h, gap; int bpt, bpt_fm, max_bpt = 0, max_bpt_fm = 0; int data_offset, track_offset, head_offset, sector_offset; - d->wrprot = head[0x03] == 1 ? 1 : 0; - d->sides = head[0x06] + 256 * head[0x07]; - d->cylinders = head[0x04] + 256 * head[0x05]; + d->wrprot = buff[0x03] == 1 ? 1 : 0; + d->sides = buff[0x06] + 256 * buff[0x07]; + d->cylinders = buff[0x04] + 256 * buff[0x05]; GEOM_CHECK; - data_offset = head[0x0a] + 256 * head[0x0b]; - h = 0x0e + head[0x0c] + 256 * head[0x0d]; /* save head start */ + data_offset = buff[0x0a] + 256 * buff[0x0b]; + h = 0x0e + buff[0x0c] + 256 * buff[0x0d]; /* save head start */ head_offset = h; /* first determine the longest track */ d->bpt = 0; for( i = 0; i < d->cylinders * d->sides; i++ ) { /* ALT */ - fseek( file, head_offset, SEEK_SET ); - if( fread( head, 7, 1, file ) != 1 ) /* 7 := track head */ + buffer->index = head_offset; + if( buffread( head, 7, buffer ) != 1 ) /* 7 := track head */ return d->status = DISK_OPEN; bpt = postindex_len( d, GAP_MINIMAL_MFM ) + ( preindex ? preindex_len( d, GAP_MINIMAL_MFM ) : 0 ) + 6; /* +gap4 */ @@ -870,7 +899,7 @@ ( preindex ? preindex_len( d, GAP_MINIMAL_FM ) : 0 ) + 3; /* +gap4 */ for( j = 0; j < head[0x06]; j++ ) { /* calculate track len */ if( j % 35 == 0 ) { /* 35-sector header */ - if( fread( head + 7, 245, 1, file ) != 1 ) /* 7*35 := max 35 sector head */ + if( buffread( head + 7, 245, buffer ) != 1 ) /* 7*35 := max 35 sector head */ return d->status = DISK_OPEN; } if( ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) != 0 ) { @@ -885,7 +914,7 @@ head_offset += 7 + 7 * head[ 0x06 ]; } - + if( max_bpt == 0 || max_bpt_fm == 0 ) return d->status = DISK_GEOM; @@ -903,9 +932,8 @@ head_offset = h; /* restore head start */ for( i = 0; i < d->cylinders * d->sides; i++ ) { /* ALT */ - fseek( file, head_offset, SEEK_SET ); - if( fread( head, 7, 1, file ) != 1 ) /* 7 = track head */ - return d->status = DISK_OPEN; + buffer->index = head_offset; + buffread( head, 7, buffer ); /* 7 = track head */ track_offset = head[0x00] + 256 * head[0x01] + 65536 * head[0x02] + 16777216 * head[0x03]; d->track = d->data + i * d->tlen; d->clocks = d->track + d->bpt; @@ -918,17 +946,16 @@ if( j % 35 == 0 ) { /* if we have more than 35 sector in a track, we have to seek back to the next sector headers and read it ( max 35 sector header */ - fseek( file, head_offset + 7 *( j + 1 ), SEEK_SET ); - if( fread( head + 7, 245, 1, file ) != 1 ) /* 7*35 := max 35 sector head */ - return d->status = DISK_OPEN; + buffer->index = head_offset + 7 *( j + 1 ); + buffread( head + 7, 245, buffer ); /* 7*35 := max 35 sector head */ } id_add( d, head[ 0x08 + 7 * ( j % 35 ) ], head[ 0x07 + 7*( j % 35 ) ], head[ 0x09 + 7*( j % 35 ) ], head[ 0x0a + 7*( j % 35 ) ], gap, ( head[ 0x0b + 7*( j % 35 ) ] & 0x3f ) ? CRC_OK : CRC_ERROR ); sector_offset = head[ 0x0c + 7 * ( j % 35 ) ] + 256 * head[ 0x0d + 7 * ( j % 35 ) ]; - fseek( file, data_offset + track_offset + sector_offset, SEEK_SET ); - data_add( d, file, NULL, ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) == 0 ? + buffer->index = data_offset + track_offset + sector_offset; + data_add( d, buffer, NULL, ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) == 0 ? -1 : 0x80 << head[ 0x0a + 7 * ( j % 35 ) ], head[ 0x0b + 7 * ( j % 35 ) ] & 0x80 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ); @@ -940,70 +967,79 @@ } static int -open_cpc( FILE *file, disk_t *d, disk_type_t type, int preindex ) +open_cpc( buffer_t *buffer, disk_t *d, int preindex ) { - int i, j, seclen, idlen, gap; + int i, j, seclen, idlen, gap, sector_pad; int bpt, max_bpt = 0, trlen; - int fix[42], plus3_fix; + int fix[84], plus3_fix; + unsigned char *hdrb; - d->sides = head[0x31]; - d->cylinders = head[0x30]; /* maximum number of tracks */ + d->sides = buff[0x31]; + d->cylinders = buff[0x30]; /* maximum number of tracks */ GEOM_CHECK; + buffer->index = 256; +/* first scan for the longest track */ for( i = 0; i < d->sides*d->cylinders; i++ ) { /* sometimes in the header there are more track than in the file */ - if( fread( head, 1, 1, file ) != 1 && feof( file ) ) { + if( buffavail( buffer ) == 0 ) { /* no more data */ d->cylinders = i / d->sides + i % d->sides; /* the real cylinder number */ break; } - if( fread( head + 1, 255, 1, file ) != 1 || - memcmp( head, "Track-Info\r\n", 12 ) ) /* read track header */ + if( buffavail( buffer ) < 256 || + memcmp( buff, "Track-Info\r\n", 12 ) ) /* check track header */ return d->status = DISK_OPEN; - gap = (unsigned char)head[0x16] == 0xff ? GAP_MINIMAL_FM : + gap = (unsigned char)buff[0x16] == 0xff ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; plus3_fix = trlen = 0; - while( i < head[0x10] * d->sides + head[0x11] ) { - if( i < 42 ) fix[i] = 0; + while( i < buff[0x10] * d->sides + buff[0x11] ) { + if( i < 84 ) fix[i] = 0; i++; } + if( i >= d->sides*d->cylinders || + i != buff[0x10] * d->sides + buff[0x11] ) /* problem with track idx. */ + return d->status = DISK_OPEN; + bpt = postindex_len( d, gap ) + ( preindex ? preindex_len( d, gap ) : 0 ) + ( gap == GAP_MINIMAL_MFM ? 6 : 3 ); /* gap4 */ - for( j = 0; j < head[0x15]; j++ ) { /* each sector */ - seclen = type == DISK_ECPC ? head[ 0x1e + 8 * j ] + - 256 * head[ 0x1f + 8 * j ] - : 0x80 << head[ 0x1b + 8 * j ]; - bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, seclen, gap ); + sector_pad = 0; + for( j = 0; j < buff[0x15]; j++ ) { /* each sector */ + seclen = d->type == DISK_ECPC ? buff[ 0x1e + 8 * j ] + + 256 * buff[ 0x1f + 8 * j ] + : 0x80 << buff[ 0x1b + 8 * j ]; + idlen = 0x80 << buff[ 0x1b + 8 * j ]; /* sector length from ID */ + bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, idlen, gap ); trlen += seclen; - if( i < 42 && d->flag & DISK_FLAG_PLUS3_CPC ) { - if( j == 0 && head[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) + if( i < 84 && d->flag & DISK_FLAG_PLUS3_CPC ) { + if( j == 0 && buff[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) plus3_fix = 4; - else if( j == 0 && head[ 0x1b + 8 * j ] == 6 ) + else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) plus3_fix = 1; else if( j == 0 && - head[ 0x18 + 8 * j ] == j && head[ 0x19 + 8 * j ] == j && - head[ 0x1a + 8 * j ] == j && head[ 0x1b + 8 * j ] == j ) + buff[ 0x18 + 8 * j ] == j && buff[ 0x19 + 8 * j ] == j && + buff[ 0x1a + 8 * j ] == j && buff[ 0x1b + 8 * j ] == j ) plus3_fix = 3; - else if( j == 1 && plus3_fix == 1 && head[ 0x1b + 8 * j ] == 2 ) + else if( j == 1 && plus3_fix == 1 && buff[ 0x1b + 8 * j ] == 2 ) plus3_fix = 2; - else if( j > 1 && plus3_fix == 2 && head[ 0x1b + 8 * j ] != 2 ) + else if( j > 1 && plus3_fix == 2 && buff[ 0x1b + 8 * j ] != 2 ) plus3_fix = 0; else if( j > 0 && plus3_fix == 3 && - ( head[ 0x18 + 8 * j ] != j || head[ 0x19 + 8 * j ] != j || - head[ 0x1a + 8 * j ] != j || head[ 0x1b + 8 * j ] != j ) ) + ( buff[ 0x18 + 8 * j ] != j || buff[ 0x19 + 8 * j ] != j || + buff[ 0x1a + 8 * j ] != j || buff[ 0x1b + 8 * j ] != j ) ) plus3_fix = 0; else if( j > 10 && plus3_fix == 2 ) plus3_fix = 0; } if( seclen == 0x80 ) /* every 128byte length sector padded */ - fseek( file, 0x80, SEEK_CUR ); + sector_pad++; } - if( i < 42 ) { + if( i < 84 ) { fix[i] = plus3_fix; if( fix[i] == 4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ else if( fix[i] != 0 ) bpt = 6250;/* we assume a standard DD track */ } - fseek( file, trlen, SEEK_CUR ); + buffer->index += trlen + sector_pad * 128 + 256; if( bpt > max_bpt ) max_bpt = bpt; } @@ -1016,28 +1052,25 @@ return d->status; d->track = d->data; d->clocks = d->track + d->bpt; - fseek( file, 256, SEEK_SET ); /* rewind to first track */ + buffer->index = 256; /* rewind to first track */ for( i = 0; i < d->sides*d->cylinders; i++ ) { - if( fread( head, 256, 1, file ) != 1 || - memcmp( head, "Track-Info\r\n", 12 ) ) /* read track header */ - return d->status = DISK_OPEN; + hdrb = buff; + buffer->index += 256; /* skip to data */ + gap = (unsigned char)hdrb[0x16] == 0xff ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; - gap = (unsigned char)head[0x16] == 0xff ? GAP_MINIMAL_FM : - GAP_MINIMAL_MFM; - - i = head[0x10] * d->sides + head[0x11]; /* adjust track No. */ + i = hdrb[0x10] * d->sides + hdrb[0x11]; /* adjust track No. */ d->track = d->data + i * d->tlen; d->clocks = d->track + d->bpt; d->i = 0; if( preindex) preindex_add( d, gap ); postindex_add( d, gap ); trlen = 0; - for( j = 0; j < head[0x15]; j++ ) { /* each sector */ - seclen = type == DISK_ECPC ? head[ 0x1e + 8 * j ] + /* data length in sector */ - 256 * head[ 0x1f + 8 * j ] - : 0x80 << head[ 0x1b + 8 * j ]; - idlen = 0x80 << head[ 0x1b + 8 * j ]; /* sector length from ID */ - + for( j = 0; j < hdrb[0x15]; j++ ) { /* each sector */ + seclen = d->type == DISK_ECPC ? hdrb[ 0x1e + 8 * j ] + /* data length in sector */ + 256 * hdrb[ 0x1f + 8 * j ] + : 0x80 << hdrb[ 0x1b + 8 * j ]; + idlen = 0x80 << hdrb[ 0x1b + 8 * j ]; /* sector length from ID */ + trlen += seclen; if( idlen == 0 || idlen > ( 0x80 << 0x08 ) ) /* error in sector length code -> ignore */ idlen = seclen; @@ -1045,48 +1078,48 @@ if( seclen > idlen && seclen % idlen ) /* seclen != N * len */ return d->status = DISK_OPEN; - if( fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ + if( i < 84 && fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ d->i = 8; } - id_add( d, head[ 0x19 + 8 * j ], head[ 0x18 + 8 * j ], - head[ 0x1a + 8 * j ], head[ 0x1b + 8 * j ], gap, - head[ 0x1c + 8 * j ] & 0x20 && !( head[ 0x1d + 8 * j ] & 0x20 ) ? - CRC_ERROR : CRC_OK ); + id_add( d, hdrb[ 0x19 + 8 * j ], hdrb[ 0x18 + 8 * j ], + hdrb[ 0x1a + 8 * j ], hdrb[ 0x1b + 8 * j ], gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && !( hdrb[ 0x1d + 8 * j ] & 0x20 ) ? + CRC_ERROR : CRC_OK ); - if( fix[i] == 1 && j == 0 ) { /* 6144 */ - data_add( d, file, NULL, seclen, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + if( i < 84 && fix[i] == 1 && j == 0 ) { /* 6144 */ + data_add( d, buffer, NULL, seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - } else if( fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ - datamark_add( d, head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); + } else if( i < 84 && fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ + datamark_add( d, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); gap_add( d, 2, gap ); - fseek( file, seclen, SEEK_CUR ); - } else if( fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ - data_add( d, file, NULL, 128, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + buffer->index += seclen; + } else if( i < 84 && fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ + data_add( d, buffer, NULL, 128, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - fseek( file, seclen - 128, SEEK_CUR ); - } else if( fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ - data_add( d, file, NULL, 6384, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + buffer->index += seclen - 128; + } else if( i < 84 && fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ + data_add( d, buffer, NULL, 6384, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - fseek( file, seclen - 6384, SEEK_CUR ); + buffer->index += seclen - 6384; } else { - data_add( d, file, NULL, seclen > idlen ? idlen : seclen, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); if( seclen > idlen ) { /* weak sector with multiple copy */ - fseek( file, ( seclen / ( 0x80 << head[ 0x1b + 8 * j ] ) - 1 ) * - ( 0x80 << head[ 0x1b + 8 * j ] ), SEEK_CUR ); + buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * + ( 0x80 << hdrb[ 0x1b + 8 * j ] ); /* ( ( N * len ) / len - 1 ) * len */ } } if( seclen == 0x80 ) /* every 128byte length sector padded */ - fseek( file, 0x80, SEEK_CUR ); + buffer->index += 0x80; } gap4_add( d, gap ); } @@ -1094,7 +1127,7 @@ } static int -open_scl( FILE *file, disk_t *d ) +open_scl( buffer_t *buffer, disk_t *d ) { int i, j, s, sectors, seclen; int scl_deleted, scl_files, scl_i; @@ -1116,25 +1149,25 @@ */ - if( ( scl_files = head[8] ) > 128 || scl_files < 1 ) /* number of files */ + if( ( scl_files = buff[8] ) > 128 || scl_files < 1 ) /* number of files */ return d->status = DISK_GEOM; /* too many file */ - fseek( file, 9, SEEK_SET ); /* read SCL entries */ + buffer->index = 9; /* read SCL entries */ d->track = d->data; /* track 0 */ d->clocks = d->track + d->bpt; d->i = 0; postindex_add( d, GAP_TRDOS ); scl_i = d->i; /* the position of first sector */ - s = 1; /* start sector number */ - scl_deleted = 0; /* deleted files */ + s = 1; /* start sector number */ + scl_deleted = 0; /* deleted files */ sectors = 0; /* allocated sectors */ - /* we use 'head[]' to build - TR-DOS directory */ - j = 0; /* index for head[] */ + /* we use 'head[]' to build + TR-DOS directory */ + j = 0; /* index for head[] */ memset( head, 0, 256 ); seclen = calc_sectorlen( 1, 256, GAP_TRDOS ); /* one sector raw length */ for( i = 0; i < scl_files; i++ ) { /* read all entry and build TR-DOS dir */ - if( fread( head + j, 14, 1, file ) != 1 ) + if( buffread( head + j, 14, buffer ) != 1 ) return d->status = DISK_OPEN; head[ j + 14 ] = sectors % 16; /* ( sectors + 16 ) % 16 := sectors % 16 starting sector */ @@ -1185,10 +1218,10 @@ memset( head, 0, 256 ); /* clear sector data... */ } gap4_add( d, GAP_TRDOS ); - + /* now we continue with the data */ for( i = 1; i < d->sides * d->cylinders; i++ ) { - if( trackgen( d, file, i % 2, i / 2, 1, 16, 256, + if( trackgen( d, buffer, i % 2, i / 2, 1, 16, 256, NO_PREINDEX, GAP_TRDOS, INTERLEAVE_2, 0x00 ) ) return d->status = DISK_OPEN; } @@ -1196,61 +1229,61 @@ } static int -open_td0( FILE *file, disk_t *d, int preindex ) +open_td0( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, s, sectors, seclen, bpt, gap, mfm, mfm_old; int data_offset, track_offset, sector_offset; - unsigned char *buff; + unsigned char *uncomp_buff, *hdrb; - if( head[0] == 't' ) /* signature "td" -> advanced compression */ + if( buff[0] == 't' ) /* signature "td" -> advanced compression */ return d->status = DISK_IMPL; /* not implemented */ - buff = NULL; /* we may use this buffer */ - mfm_old = head[5] & 0x80 ? 0 : 1; /* td0notes say: may older teledisk + uncomp_buff = NULL; /* we may use this buffer */ + mfm_old = buff[5] & 0x80 ? 0 : 1; /* td0notes say: may older teledisk indicate the SD on high bit of data rate */ - d->sides = head[9]; /* 1 or 2 */ + d->sides = buff[9]; /* 1 or 2 */ if( d->sides < 1 || d->sides > 2 ) return d->status = DISK_GEOM; /* skip comment block if any */ - data_offset = track_offset = 12 + ( head[7] & 0x80 ? - 10 + head[14] + 256 * head[15] : 0 ); + data_offset = track_offset = 12 + ( buff[7] & 0x80 ? + 10 + buff[14] + 256 * buff[15] : 0 ); /* determine the greatest track length */ d->bpt = 0; d->cylinders = 0; seclen = 0; while( 1 ) { - fseek( file, track_offset, SEEK_SET ); - if( fread( head, 1, 1, file ) != 1 ) + buffer->index = track_offset; + if( buffavail( buffer ) < 1 ) return d->status = DISK_OPEN; - if( ( sectors = head[0] ) == 255 ) /* sector number 255 => end of tracks */ + if( ( sectors = buff[0] ) == 255 ) /* sector number 255 => end of tracks */ break; - if( fread( head + 1, 3, 1, file ) != 1 ) /* finish to read track header */ + if( buffavail( buffer ) < 4 ) /* check track header is avail. */ return d->status = DISK_OPEN; - if( head[1] + 1 > d->cylinders ) /* find the biggest cylinder number */ - d->cylinders = head[1] + 1; + if( buff[1] + 1 > d->cylinders ) /* find the biggest cylinder number */ + d->cylinders = buff[1] + 1; bpt = 0; sector_offset = track_offset + 4; - mfm = head[2] & 0x80 ? 0 : 1; /* 0x80 == 1 => SD track */ + mfm = buff[2] & 0x80 ? 0 : 1; /* 0x80 == 1 => SD track */ bpt = postindex_len( d, mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ) + ( preindex ? preindex_len( d, mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ) : 0 ) + mfm_old || mfm ? 6 : 3; for( s = 0; s < sectors; s++ ) { - fseek( file, sector_offset, SEEK_SET ); - if( fread( head, 6, 1, file ) != 1 ) + buffer->index = sector_offset; + if( buffavail( buffer ) < 6 ) /* check sector header is avail. */ return d->status = DISK_OPEN; - if( !( head[4] & 0x30 ) ) { /* only if we have data */ - if( fread( head + 6, 3, 1, file ) != 1 ) /* read data header */ + if( !( buff[4] & 0x30 ) ) { /* only if we have data */ + if( buffavail( buffer ) < 9 ) /* check data header is avail. */ return d->status = DISK_OPEN; - bpt += calc_sectorlen( mfm_old || mfm, 0x80 << head[3], + bpt += calc_sectorlen( mfm_old || mfm, 0x80 << buff[3], mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ); - if( head[3] > seclen ) - seclen = head[3]; /* biggest sector */ - sector_offset += head[6] + 256 * head[7] - 1; + if( buff[3] > seclen ) + seclen = buff[3]; /* biggest sector */ + sector_offset += buff[6] + 256 * buff[7] - 1; } sector_offset += 9; } @@ -1268,138 +1301,122 @@ d->track = d->data; d->clocks = d->track + d->bpt; - fseek( file, data_offset, SEEK_SET ); /* first track header */ + buffer->index = data_offset; /* first track header */ while( 1 ) { - if( fread( head, 1, 1, file ) != 1 ) - return d->status = DISK_OPEN; - if( ( sectors = head[0] ) == 255 ) /* sector number 255 => end of tracks */ + if( ( sectors = buff[0] ) == 255 ) /* sector number 255 => end of tracks */ break; - if( fread( head + 1, 3, 1, file ) != 1 ) { /* finish to read track header */ - if( buff ) - free( buff ); - fclose( file ); - return d->status = DISK_OPEN; - } - d->track = d->data + ( d->sides * head[1] + ( head[2] & 0x01 ) ) * d->tlen; + d->track = d->data + ( d->sides * buff[1] + ( buff[2] & 0x01 ) ) * d->tlen; d->clocks = d->track + d->bpt; d->i = 0; - /* later teledisk -> if head[2] & 0x80 -> FM track */ - gap = mfm_old || head[2] & 0x80 ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; + /* later teledisk -> if buff[2] & 0x80 -> FM track */ + gap = mfm_old || buff[2] & 0x80 ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; postindex_add( d, gap ); + buffer->index += 4; /* sector header*/ for( s = 0; s < sectors; s++ ) { - if( fread( head, 6, 1, file ) != 1 ) { /* sector head */ - if( buff ) - free( buff ); - fclose( file ); - return d->status = DISK_OPEN; - } - if( !( head[4] & 0x40 ) ) /* if we have id we add */ - id_add( d, head[1], head[0], head[2], head[3], gap, - head[4] & 0x02 ? CRC_ERROR : CRC_OK ); - if( !( head[4] & 0x30 ) ) { /* only if we have data */ - if( fread( head + 6, 3, 1, file ) != 1 ) { /* read data header */ - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - } - if( head[4] & 0x40 ) { /* if we have _no_ id we drop data... */ - fseek( file, head[6] + 256 * head[7] - 1, SEEK_CUR ); + hdrb = buff; + buffer->index += 9; /* skip to data */ + if( !( hdrb[4] & 0x40 ) ) /* if we have id we add */ + id_add( d, hdrb[1], hdrb[0], hdrb[2], hdrb[3], gap, + hdrb[4] & 0x02 ? CRC_ERROR : CRC_OK ); + if( hdrb[4] & 0x40 ) { /* if we have _no_ id we drop data... */ + buffer->index += hdrb[6] + 256 * hdrb[7] - 1; continue; /* next sector */ } - seclen = 0x80 << head[3]; + if( !( hdrb[4] & 0x30 ) ) { /* only if we have data */ + seclen = 0x80 << hdrb[3]; - switch( head[8] ) { - case 0: /* raw sector data */ - if( head[6] + 256 * head[7] - 1 != seclen ) { - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - if( data_add( d, file, NULL, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - break; - case 1: /* Repeated 2-byte pattern */ - if( buff == NULL && alloc_uncompress_buffer( &buff, 8192 ) ) - return d->status = DISK_MEM; - for( i = 0; i < seclen; ) { /* fill buffer */ - if( fread( head + 9, 4, 1, file ) != 1 ) { /* read block header */ - free( buff ); + switch( hdrb[8] ) { + case 0: /* raw sector data */ + if( hdrb[6] + 256 * hdrb[7] - 1 != seclen ) { + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; } - if( i + 2 * ( head[9] + 256*head[10] ) > seclen ) { - /* too many data bytes */ - free( buff ); + if( data_add( d, buffer, NULL, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; } - /* ab ab ab ab ab ab ab ab ab ab ab ... */ - for( j = 1; j < head[9] + 256 * head[10]; j++ ) - memcpy( buff + i + j * 2, &head[11], 2 ); - i += 2 * ( head[9] + 256 * head[10] ); - } - if( data_add( d, NULL, buff, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - free( buff ); - return d->status = DISK_OPEN; - } - break; - case 2: /* Run Length Encoded data */ - if( buff == NULL && alloc_uncompress_buffer( &buff, 8192 ) ) - return d->status = DISK_MEM; - for( i = 0; i < seclen; ) { /* fill buffer */ - if( fread( head + 9, 2, 1, file ) != 1 ) {/* read block header */ - free( buff ); - return d->status = DISK_OPEN; - } - if( head[9] == 0 ) { /* raw bytes */ - if( i + head[10] > seclen || /* too many data bytes */ - fread( buff + i, head[10], 1, file ) != 1 ) { - free( buff ); + break; + case 1: /* Repeated 2-byte pattern */ + if( uncomp_buff == NULL && alloc_uncompress_buffer( &uncomp_buff, 8192 ) ) + return d->status = DISK_MEM; + for( i = 0; i < seclen; ) { /* fill buffer */ + if( buffavail( buffer ) < 13 ) { /* check block header is avail. */ + free( uncomp_buff ); return d->status = DISK_OPEN; } - i += head[10]; - } else { /* repeated samples */ - if( i + 2 * head[9] * head[10] > seclen || /* too many data bytes */ - fread( buff + i, 2 * head[9], 1, file ) != 1 ) { - free( buff ); + if( i + 2 * ( hdrb[9] + 256*hdrb[10] ) > seclen ) { + /* too many data bytes */ + free( uncomp_buff ); return d->status = DISK_OPEN; } + /* ab ab ab ab ab ab ab ab ab ab ab ... */ + for( j = 1; j < hdrb[9] + 256 * hdrb[10]; j++ ) + memcpy( uncomp_buff + i + j * 2, &hdrb[11], 2 ); + i += 2 * ( hdrb[9] + 256 * hdrb[10] ); + } + if( data_add( d, NULL, uncomp_buff, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + break; + case 2: /* Run Length Encoded data */ + if( uncomp_buff == NULL && alloc_uncompress_buffer( &uncomp_buff, 8192 ) ) + return d->status = DISK_MEM; + for( i = 0; i < seclen; ) { /* fill buffer */ + if( buffavail( buffer ) < 11 ) { /* check block header is avail */ + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + if( hdrb[9] == 0 ) { /* raw bytes */ + if( i + hdrb[10] > seclen || /* too many data bytes */ + buffread( uncomp_buff + i, hdrb[10], buffer ) != 1 ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + i += hdrb[10]; + } else { /* repeated samples */ + if( i + 2 * hdrb[9] * hdrb[10] > seclen || /* too many data bytes */ + buffread( uncomp_buff + i, 2 * hdrb[9], buffer ) != 1 ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } /* abcdefgh abcdefg abcdefg abcdefg ... \--v---/ - 2*head[9] + 2*hdrb[9] | | | | | - +- 0 +- 1 +- 2 +- 3 ... +- head[10]-1 + +- 0 +- 1 +- 2 +- 3 ... +- hdrb[10]-1 */ - for( j = 1; j < head[10]; j++ ) /* repeat 'n' times */ - memcpy( buff + i + j * 2 * head[9], buff + i, 2 * head[9] ); - i += 2 * head[9] * head[10]; + for( j = 1; j < hdrb[10]; j++ ) /* repeat 'n' times */ + memcpy( uncomp_buff + i + j * 2 * hdrb[9], uncomp_buff + i, 2 * hdrb[9] ); + i += 2 * hdrb[9] * hdrb[10]; + } } - } - if( data_add( d, NULL, buff, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - free( buff ); + if( data_add( d, NULL, uncomp_buff, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + break; + default: + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; + break; } - break; - default: - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - break; } } gap4_add( d, gap ); } - if( buff ) - free( buff ); + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OK; } @@ -1409,107 +1426,72 @@ int disk_open( disk_t *d, const char *filename, int preindex ) { - FILE *file; - disk_type_t type; - struct stat file_info; - const char *ext; - size_t namelen; + buffer_t buffer; + libspectrum_id_t type; + int error; - if( filename == NULL || *filename == '\0' ) - return d->status = DISK_OPEN; - - if( ( file = fopen( filename, "rb" ) ) == NULL ) - return d->status = DISK_OPEN; - - if( stat( filename, &file_info) ) { - fclose( file ); - return d->status = DISK_OPEN; - } - - if( fread( head, 256, 1, file ) != 1 ) { - fclose( file ); - return d->status = DISK_OPEN; - } - - namelen = strlen( filename ); - if( namelen < 4 ) - ext = NULL; - else - ext = filename + namelen - 4; - - type = DISK_TYPE_NONE; - - if( memcmp( head, "UDI!", 4 ) == 0 ) - type = DISK_UDI; - else if( memcmp( head, "EXTENDED", 8 ) == 0 ) - type = DISK_ECPC; - else if( memcmp( head, "MV - CPC", 8 ) == 0 ) - type = DISK_CPC; - else if( memcmp( head, "FDI", 3 ) == 0 ) - type = DISK_FDI; - else if( memcmp( head, "Aley's disk backup", 18 ) == 0 ) - type = DISK_SAD; - else if( memcmp( head, "SINCLAIR", 8 ) == 0 ) - type = DISK_SCL; - else if( memcmp( head, "TD", 2 ) == 0 || memcmp( head, "td", 2 ) == 0 ) - type = DISK_TD0; - else { - if( ext == NULL ) { - fclose( file ); - return d->status = DISK_OPEN; - } - if( !strcasecmp( ext, ".mgt" ) || !strcasecmp( ext, ".dsk" ) ) - type = DISK_MGT; /* ALT side */ - else if( !strcasecmp( ext, ".img" ) ) /* out-out */ - type = DISK_IMG; - else if( !strcasecmp( ext, ".trd" ) ) /* out-out */ - type = DISK_TRD; - } - if( access( filename, W_OK ) == -1 ) /* file read only */ d->wrprot = 1; else d->wrprot = 0; - + + if( utils_read_file( filename, &buffer.file ) ) + return d->status = DISK_OPEN; + + buffer.index = 0; + + error = libspectrum_identify_file_raw( &type, filename, + buffer.file.buffer, buffer.file.length ); + if( error ) return d->status = DISK_OPEN; + d->type = DISK_TYPE_NONE; switch ( type ) { - case DISK_UDI: - open_udi( file, d ); + case LIBSPECTRUM_ID_DISK_UDI: + d->type = DISK_UDI; + open_udi( &buffer, d ); break; - case DISK_MGT: - case DISK_IMG: - open_mgt_img( file, d, file_info.st_size, type ); + case LIBSPECTRUM_ID_DISK_MGT: + d->type = DISK_MGT; + case LIBSPECTRUM_ID_DISK_IMG: + if( d->type == DISK_TYPE_NONE) d->type = DISK_IMG; + open_mgt_img( &buffer, d ); break; - case DISK_SAD: - open_sad( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_SAD: + d->type = DISK_SAD; + open_sad( &buffer, d, preindex ); break; - case DISK_TRD: - open_trd( file, d ); + case LIBSPECTRUM_ID_DISK_TRD: + d->type = DISK_TRD; + open_trd( &buffer, d ); break; - case DISK_FDI: - open_fdi( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_FDI: + d->type = DISK_FDI; + open_fdi( &buffer, d, preindex ); break; - case DISK_CPC: - case DISK_ECPC: - open_cpc( file, d, type, preindex ); + case LIBSPECTRUM_ID_DISK_CPC: + d->type = DISK_CPC; + case LIBSPECTRUM_ID_DISK_ECPC: + if( d->type == DISK_TYPE_NONE) d->type = DISK_ECPC; + open_cpc( &buffer, d, preindex ); break; - case DISK_SCL: - open_scl( file, d ); + case LIBSPECTRUM_ID_DISK_SCL: + d->type = DISK_SCL; + open_scl( &buffer, d ); break; - case DISK_TD0: - open_td0( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_TD0: + d->type = DISK_TD0; + open_td0( &buffer, d, preindex ); break; default: - fclose( file ); + utils_close_file( &buffer.file ); return d->status = DISK_OPEN; } if( d->status != DISK_OK ) { if( d->data != NULL ) free( d->data ); - fclose( file ); + utils_close_file( &buffer.file ); return d->status; } - fclose( file ); - d->type = type; + utils_close_file( &buffer.file ); d->dirty = 0; return d->status = DISK_OK; } @@ -1517,7 +1499,7 @@ /*--------------------- start of write section ----------------*/ static int -write_udi( FILE * file, disk_t * d ) +write_udi( FILE *file, disk_t *d ) { int i, j; size_t len; @@ -1568,7 +1550,7 @@ } static int -write_img_mgt( FILE * file, disk_t * d, disk_type_t type ) +write_img_mgt( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1576,7 +1558,7 @@ sbase != 1 || seclen != 2 || sectors != 10 ) return d->status = DISK_GEOM; - if( type == DISK_IMG ) { /* out-out */ + if( d->type == DISK_IMG ) { /* out-out */ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { if( savetrack( d, file, j, i, 1, sectors, seclen ) ) @@ -1595,7 +1577,7 @@ } static int -write_trd( FILE * file, disk_t * d ) +write_trd( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1612,7 +1594,7 @@ } static int -write_sad( FILE * file, disk_t * d ) +write_sad( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1637,7 +1619,7 @@ } static int -write_fdi( FILE * file, disk_t * d ) +write_fdi( FILE *file, disk_t *d ) { int i, j, k, sbase, sectors, seclen, mfm, del; int h, t, s, b; @@ -1680,7 +1662,7 @@ head[0x05] = 0; guess_track_geom( d, j, i, &sbase, §ors, &seclen, &mfm ); head[0x06] = sectors; - if( fwrite( head, 7, 1, file ) != 1 ) + if( fwrite( head, 7, 1, file ) != 1 ) /* track header */ return d->status = DISK_WRPART; d->track = d->data + ( ( d->sides * i + j ) * d->tlen ); @@ -1703,7 +1685,7 @@ soff += 0x80 << b; } k++; - } /* Track header */ + } /* Sector header */ if( fwrite( head, 7 * k, 1, file ) != 1 ) return d->status = DISK_WRPART; @@ -1727,7 +1709,7 @@ } static int -write_cpc( FILE * file, disk_t * d ) +write_cpc( FILE *file, disk_t *d ) { int i, j, k, sbase, sectors, seclen, mfm; int h, t, s, b; @@ -1785,7 +1767,7 @@ } static int -write_scl( FILE * file, disk_t * d ) +write_scl( FILE *file, disk_t *d ) { int i, j, k, l, t, s, sbase, sectors, seclen, mfm, del; int entries; @@ -1902,7 +1884,7 @@ } static int -write_log( FILE * file, disk_t * d ) +write_log( FILE *file, disk_t *d ) { int i, j, k, del, rev; int h, t, s, b; @@ -1943,7 +1925,7 @@ k = 0; while( k < b ) { if( !( k % 16 ) ) - fprintf( file, "0x%08x:", d->i ); + fprintf( file, "0x%08x:", k ); fprintf( file, " 0x%02x", d->track[ d->i ] ); k++; if( !( k % 16 ) ) @@ -2027,25 +2009,25 @@ break; case DISK_IMG: case DISK_MGT: - write_img_mgt( file, d, d->type ); + write_img_mgt( file, d ); break; case DISK_TRD: - write_trd( file, d ); + write_trd( file, d ); break; case DISK_SAD: - write_sad( file, d ); + write_sad( file, d ); break; case DISK_FDI: - write_fdi( file, d ); + write_fdi( file, d ); break; case DISK_SCL: - write_scl( file, d ); + write_scl( file, d ); break; case DISK_CPC: - write_cpc( file, d ); + write_cpc( file, d ); break; case DISK_LOG: - write_log( file, d ); + write_log( file, d ); break; default: return d->status = DISK_WRFILE; Modified: trunk/fuse/fuse.c =================================================================== --- trunk/fuse/fuse.c 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/fuse.c 2008-11-18 12:05:21 UTC (rev 547) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2008 Philip Kendall - $Id: fuse.c 3797 2008-10-29 12:04:34Z fredm $ + $Id: fuse.c 3807 2008-11-08 15:17:00Z pak21 $ 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 @@ -544,6 +544,23 @@ case LIBSPECTRUM_CLASS_DISK_TRDOS: start_files->disk_beta = filename; break; + case LIBSPECTRUM_CLASS_DISK_GENERIC: + if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 || + machine_current->machine == LIBSPECTRUM_MACHINE_PLUS2A ) + start_files->disk_plus3 = filename; + else if( machine_current->machine == LIBSPECTRUM_MACHINE_PENT || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT512 || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT1024 || + machine_current->machine == LIBSPECTRUM_MACHINE_SCORP ) + start_files->disk_beta = filename; + else { + if( periph_beta128_active ) + start_files->disk_beta = filename; + else if( periph_plusd_active ) + start_files->disk_plusd = filename; + } + break; + case LIBSPECTRUM_CLASS_RECORDING: start_files->playback = filename; break; Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/fusepb/Info-Fuse.plist 2008-11-18 12:05:21 UTC (rev 547) @@ -480,7 +480,7 @@ <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>3804</string> + <string>0.10.0-pre1</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-18 12:05:21 UTC (rev 547) @@ -40,8 +40,10 @@ option to emulate machines with 1 tstate later timings (Philip Kendall).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Reading from the 128K's memory control port causes that byte to be written back to the -port (Philip Kendall; thanks, Marat Fayzullin).<br> - </font></li> +port (Philip Kendall; thanks, Marat Fayzullin).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Reading the AY +data port on the +2A/+3 is the same as reading the register port +(Philip Kendall; thanks, Mark Woodmass).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">NMI causes Z80 to unHALT (Philip Kendall; thanks, Simon Owen).</font></li> <li><font face="Lucida Grande,Helvetica,Arial">Emulate C, H and Modified: trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html 2008-11-18 12:05:21 UTC (rev 547) @@ -240,8 +240,12 @@ value of the Z80 register <span class="emphasis"><em>register</em></span> to <span class="emphasis"><em>value</em></span>.</font></p> -<p> -<font face="Lucida Grande,Helvetica,Arial">s{tep} Equivalent to the <span +<p><font face="Lucida Grande,Helvetica,Arial">se{t} <span + class="emphasis"><em>$variable +value</em></span> Set the value of the debugger variable +<span class="emphasis"><em>variable</em></span> to <span + class="emphasis"><em>value</em></span>.</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">s{tep} Equivalent to the <span class="emphasis"><em>Single Step</em></span> button.</font></p> @@ -279,9 +283,10 @@ which uses a restricted version of C's syntax; exactly the same syntax is used for conditional breakpoints, with `0' being false and any other value being true. In numeric expressions, you can use -integer constants (all calculations is done in integers), register +integer constants (all calculations are done in integers), register names (which simply evaluate to the value of the register), -parentheses, the standard four numeric operations (`+', `-', `*' +debugger variables, parentheses, the standard four numeric operations +(`+', `-', `*' and `/'), the (non-)equality operators `==' and `!=', the comparision operators `>', `<', `>=' and `<=', bitwise and (`&'), or (`|') and exclusive or (`^') and logical and Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2008-11-18 11:02:52 UTC (rev 546) +++ trunk/fuse/hacking/ChangeLog 2008-11-18 12:05:21 UTC (rev 547) @@ -2921,3 +2921,18 @@ 20081102 ui/win32/{win32ui.c,win32internals.h,win32joystick.[ch}: Win32: Implemented joystick handling using mmsystem API (and tested using PPJoy joystick emulator, hope it works with real hardware) (Marek). +20081108 disk/disk.c: prevent array overrun (bug #2240211) (Gergely Szasz). +20081108 disk/disk.c,fuse.c,utils.c: use libspectrum's ability to + identify more disk image formats (patch #2233744) (Gergely Szasz). +20081109 hacking/cvs-tags: document 0.10.0 branch. +20081109 disk/disk.c: stop buffer overrun from malformed .dsk (fixes bug + #2248067) (Gergely Szasz). +20081115 man/fuse.1: add debugger variables and print command + (Release-0_10_0-branch). +20081115 Makefile.am,hacking/Makefile.am,ui/win32/Makefile.am: make sure + all files are distributed (Release-0_10_0-bran... [truncated message content] |
From: <fr...@us...> - 2008-11-18 11:02:57
|
Revision: 546 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=546&view=rev Author: fredm Date: 2008-11-18 11:02:52 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Import vendor 0.10.0-pre1 files. Modified Paths: -------------- vendor/fuse-emulator/0.10.0-pre1/fuse/ChangeLog vendor/fuse-emulator/0.10.0-pre1/fuse/Makefile.am vendor/fuse-emulator/0.10.0-pre1/fuse/configure.in vendor/fuse-emulator/0.10.0-pre1/fuse/disk/disk.c vendor/fuse-emulator/0.10.0-pre1/fuse/fuse.c vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/ChangeLog vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/Makefile.am vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/cvs-tags vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus2a.c vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus3.c vendor/fuse-emulator/0.10.0-pre1/fuse/man/fuse.1 vendor/fuse-emulator/0.10.0-pre1/fuse/ui/win32/Makefile.am vendor/fuse-emulator/0.10.0-pre1/fuse/utils.c vendor/fuse-emulator/0.10.0-pre1/libspectrum/configure.in vendor/fuse-emulator/0.10.0-pre1/libspectrum/doc/cvs-tags vendor/fuse-emulator/0.10.0-pre1/libspectrum/doc/libspectrum.txt vendor/fuse-emulator/0.10.0-pre1/libspectrum/hacking/ChangeLog vendor/fuse-emulator/0.10.0-pre1/libspectrum/libspectrum.c vendor/fuse-emulator/0.10.0-pre1/libspectrum/libspectrum.h.in Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/ChangeLog =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/ChangeLog 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/ChangeLog 2008-11-18 11:02:52 UTC (rev 546) @@ -16,6 +16,8 @@ * Reading from the 128K's memory control port causes that byte to be written back to the port (Philip Kendall; thanks, Marat Fayzullin). + * Reading the AY data port on the +2A/+3 is the same as reading + the register port (Philip Kendall; thanks, Mark Woodmass). * NMI causes Z80 to unHALT (Philip Kendall; thanks, Simon Owen). * Emulate C, H and P/V flags on repeated IO instructions (Philip Kendall). @@ -929,4 +931,4 @@ * Version 0.1.0 released. -$Id: ChangeLog 3787 2008-10-22 19:10:25Z pak21 $ +$Id: ChangeLog 3823 2008-11-16 17:32:18Z pak21 $ Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/Makefile.am =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/Makefile.am 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/Makefile.am 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ # Process this file with automake to produce Makefile.in ## Copyright (c) 1999-2008 Philip Kendall -## $Id: Makefile.am 3617 2008-05-17 08:09:47Z pak21 $ +## $Id: Makefile.am 3818 2008-11-15 13:28:08Z pak21 $ ## 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 @@ -173,6 +173,7 @@ loader.h \ machine.h \ memory.h \ + mempool.h \ menu.h \ module.h \ periph.h \ Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/configure.in =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/configure.in 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/configure.in 2008-11-18 11:02:52 UTC (rev 546) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 3796 2008-10-28 20:44:45Z specu $ +dnl $Id: configure.in 3827 2008-11-17 21:19:48Z pak21 $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -24,7 +24,7 @@ AC_CANONICAL_SYSTEM dnl Use automake to produce `Makefile.in' -AM_INIT_AUTOMAKE(fuse, 0.9.0) +AM_INIT_AUTOMAKE(fuse, 0.10.0-pre1) dnl Checks for programs. AC_PROG_CC Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/disk/disk.c =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/disk/disk.c 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/disk/disk.c 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ /* disk.c: Routines for handling disk images Copyright (c) 2007 Gergely Szasz - $Id: disk.c 3748 2008-08-15 09:04:33Z pak21 $ + $Id: disk.c 3815 2008-11-09 19:19:59Z pak21 $ 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 @@ -35,6 +35,7 @@ #include "bitmap.h" #include "crc.h" #include "disk.h" +#include "utils.h" /* The ordering of these strings must match the order of the * disk_error_t enumeration in disk.h */ @@ -90,6 +91,15 @@ #define GAP_MINIMAL_FM 4 #define GAP_MINIMAL_MFM 5 +#define buffavail(buffer) ( buffer->file.length - buffer->index ) +/* data buffer */ +#define buff ( buffer->file.buffer + buffer->index ) + +typedef struct buffer_t { /* to store buffer data */ + utils_file file; /* buffer, length */ + size_t index; +} buffer_t; + const char * disk_strerror( int error ) { @@ -99,6 +109,27 @@ } static int +buffread( void *data, size_t len, buffer_t *buffer ) +{ + if( len > buffer->file.length - buffer->index ) + return 0; + memcpy( data, buffer->file.buffer + buffer->index, len ); + buffer->index += len; + return 1; +} + +static int +buffseek( buffer_t *buffer, long offset, int whence ) +{ + if( whence == SEEK_CUR ) + offset += buffer->index; + if( offset >= buffer->file.length ) + return -1; + buffer->index = offset; + return 0; +} + +static int id_read( disk_t *d, int *head, int *track, int *sector, int *length ) { int a1mark = 0; @@ -462,9 +493,11 @@ #define NO_DDAM 0 #define DDAM 1 #define NO_AUTOFILL -1 -/* if 'file' == NULL, then copy data bytes from 'data' */ +/* copy data from *buffer and update *buffer->index */ +/* if 'buffer' == NULL, then copy data bytes from 'data' */ static int -data_add( disk_t *d, FILE *file, unsigned char *data, int len, int ddam, int gaptype, int crc_error, int autofill ) +data_add( disk_t *d, buffer_t *buffer, unsigned char *data, int len, int ddam, + int gaptype, int crc_error, int autofill ) { int length; libspectrum_word crc = 0xffff; @@ -484,13 +517,15 @@ if( d->i + len + 2 >= d->bpt ) /* too many data bytes */ return 1; /*------------------------------ data ------------------------------*/ - if( file == NULL ) { + if( buffer == NULL ) { memcpy( d->track + d->i, data, len ); length = len; } else { - length = fread( d->track + d->i, 1, len, file ); + length = buffavail( buffer ); + if( length > len ) length = len; + buffread( d->track + d->i, length, buffer ); } - if( length != len ) { /* autofill with 'autofill' */ + if( length < len ) { /* autofill with 'autofill' */ if( autofill < 0 ) return 1; while( length < len ) { @@ -536,7 +571,7 @@ #define PREINDEX 1 static int -trackgen( disk_t *d, FILE *file, int head, int track, +trackgen( disk_t *d, buffer_t *buffer, int head, int track, int sector_base, int sectors, int sector_length, int preindex, int gap, int interleave, int autofill ) { @@ -544,7 +579,7 @@ int slen = calc_sectorlen( ( d->density != DISK_SD && d->density != DISK_8_SD ), sector_length, gap ); int idx; - + d->i = 0; d->track = d->data + ( ( d->sides * track + head ) * d->tlen ); d->clocks = d->track + d->bpt; @@ -559,7 +594,7 @@ d->i = idx + ( pos + i ) * slen; if( id_add( d, head, track, s, sector_length >> 8, gap, CRC_OK ) ) return 1; - if( data_add( d, file, NULL, sector_length, NO_DDAM, gap, CRC_OK, autofill ) ) + if( data_add( d, buffer, NULL, sector_length, NO_DDAM, gap, CRC_OK, autofill ) ) return 1; pos += interleave; if( pos >= sectors ) { @@ -592,7 +627,7 @@ disk_alloc( disk_t *d ) { size_t dlen; - + if( d->density != DISK_DENS_AUTO ) { d->bpt = disk_bpt[ d->density ]; } else if( d->bpt > 12500 ) { @@ -642,7 +677,7 @@ d->density = density == DISK_DENS_AUTO ? DISK_DD : density; d->sides = sides; d->cylinders = cylinders; - + if( disk_alloc( d ) != DISK_OK ) return d->status; @@ -655,13 +690,12 @@ alloc_uncompress_buffer( unsigned char **buffer, int length ) { unsigned char *b; - + if( *buffer != NULL ) /* return if allocated */ return 0; b = calloc( length, 1 ); if( b == NULL ) return 1; - memset( b, 0, length ); *buffer = b; return 0; } @@ -672,27 +706,27 @@ d->cylinders < 1 || d->cylinders > 85 ) return d->status = DISK_GEOM static int -open_udi( FILE *file, disk_t *d ) +open_udi( buffer_t *buffer, disk_t *d ) { int i, j, bpt; - d->sides = head[10] + 1; - d->cylinders = head[9] + 1; + d->sides = buff[10] + 1; + d->cylinders = buff[9] + 1; GEOM_CHECK; d->density = DISK_DENS_AUTO; - fseek( file, 16, SEEK_SET ); + buffer->index = 16; d->bpt = 0; /* scan file for the longest track */ for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( fread( head, 3, 1, file ) != 1 ) + if( buffavail( buffer ) < 3 ) return d->status = DISK_OPEN; - bpt = head[1] + 256 * head[2]; /* current track len... */ - if( head[0] != 0x00 ) + if( buff[0] != 0x00 ) return d->status = DISK_UNSUP; + bpt = buff[1] + 256 * buff[2]; /* current track len... */ if( bpt > d->bpt ) d->bpt = bpt; - if( fseek( file, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), SEEK_CUR ) == -1 ) + if( buffseek( buffer, 3 + bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), SEEK_CUR ) == -1 ) return d->status = DISK_OPEN; } @@ -705,27 +739,21 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; d->bpt = bpt; /* restore the maximal byte per track */ - fseek( file, 16, SEEK_SET ); + buffer->index = 16; d->track = d->data; for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( fread( head, 3, 1, file ) != 1 ) - return d->status = DISK_OPEN; - bpt = head[1] + 256 * head[2]; /* current track len... */ - if( head[0] != 0x00 ) - return d->status = DISK_UNSUP; - /* read track + clocks */ + bpt = buff[1] + 256 * buff[2]; /* current track len... */ + buffer->index += 3; + /* read track + clocks */ if( d->bpt == bpt ) { /* if udi track length equal with the maximal track length */ - if( fread( d->track, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), 1, file ) != 1 ) - return d->status = DISK_OPEN; + buffread( d->track, bpt + bpt / 8 + ( bpt % 8 ? 1 : 0 ), buffer ); } else { - if( fread( d->track, bpt , 1, file ) != 1 ) /* first the data */ - return d->status = DISK_OPEN; + buffread( d->track, bpt, buffer ); /* first the data */ d->track += bpt; for( j = d->bpt - bpt; j > 0; j--, d->track++ ) *d->track = 0x4e; /* fill track data with 0x4e */ - if( fread( d->track, bpt / 8 + ( bpt % 8 ? 1 : 0 ), 1, file ) != 1 ) - return d->status = DISK_OPEN; /* next the clock marks */ + buffread( d->track, bpt / 8 + ( bpt % 8 ? 1 : 0 ), buffer ); d->track += bpt / 8 + ( bpt % 8 ? 1 : 0 ); for( j = ( d->bpt / 8 + ( d->bpt % 8 ? 1 : 0 ) ) - ( bpt / 8 + ( bpt % 8 ? 1 : 0 ) ); j > 0; j--, d->track++ ) @@ -738,21 +766,21 @@ } static int -open_mgt_img( FILE *file, disk_t *d, size_t file_length, disk_type_t type ) +open_mgt_img( buffer_t *buffer, disk_t *d ) { int i, j, sectors, seclen; - fseek( file, 0, SEEK_SET ); + buffer->index = 0; /* guess geometry of disk: * 2*80*10*512, 1*80*10*512 or 1*40*10*512 */ - if( file_length == 2*80*10*512 ) { + if( buffer->file.length == 2*80*10*512 ) { d->sides = 2; d->cylinders = 80; sectors = 10; seclen = 512; - } else if( file_length == 1*80*10*512 ) { + } else if( buffer->file.length == 1*80*10*512 ) { /* we cannot distinguish between a single sided 80 track image * and a double sided 40 track image (2*40*10*512) */ d->sides = 1; d->cylinders = 80; sectors = 10; seclen = 512; - } else if( file_length == 1*40*10*512 ) { + } else if( buffer->file.length == 1*40*10*512 ) { d->sides = 1; d->cylinders = 40; sectors = 10; seclen = 512; } else { return d->status = DISK_GEOM; @@ -763,17 +791,17 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; - if( type == DISK_IMG ) { /* IMG out-out */ + if( d->type == DISK_IMG ) { /* IMG out-out */ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, NO_PREINDEX, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } } } else { /* MGT alt */ for( i = 0; i < d->sides * d->cylinders; i++ ) { - if( trackgen( d, file, i % 2, i / 2, 1, sectors, seclen, + if( trackgen( d, buffer, i % 2, i / 2, 1, sectors, seclen, NO_PREINDEX, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } @@ -783,16 +811,16 @@ } static int -open_sad( FILE *file, disk_t *d, int preindex ) +open_sad( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, sectors, seclen; - fseek( file, 22, SEEK_SET ); - d->sides = head[18]; - d->cylinders = head[19]; + d->sides = buff[18]; + d->cylinders = buff[19]; GEOM_CHECK; - sectors = head[20]; - seclen = head[21] * 64; + sectors = buff[20]; + seclen = buff[21] * 64; + buffer->index = 22; /* create a DD disk */ d->density = DISK_DD; @@ -801,7 +829,7 @@ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, preindex, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, preindex, GAP_MGT_PLUSD, NO_INTERLEAVE, NO_AUTOFILL ) ) return d->status = DISK_GEOM; } @@ -811,20 +839,21 @@ } static int -open_trd( FILE *file, disk_t *d ) +open_trd( buffer_t *buffer, disk_t *d ) { int i, j, sectors, seclen; - fseek( file, 8*256, SEEK_SET ); - if( fread( head, 256, 1, file ) != 1 ) + if( buffseek( buffer, 8*256, SEEK_CUR ) == -1 ) + return d->status = DISK_OPEN; + if( buffavail( buffer ) < 256 ) return d->status = DISK_OPEN; - if( head[231] != 0x10 || head[227] < 0x16 || head[227] > 0x19 ) + if( buff[231] != 0x10 || buff[227] < 0x16 || buff[227] > 0x19 ) return d->status = DISK_OPEN; /*?*/ /* guess geometry of disk */ - d->sides = head[227] & 0x08 ? 1 : 2; - d->cylinders = head[227] & 0x01 ? 40 : 80; + d->sides = buff[227] & 0x08 ? 1 : 2; + d->cylinders = buff[227] & 0x01 ? 40 : 80; sectors = 16; seclen = 256; /* create a DD disk */ @@ -832,10 +861,10 @@ if( disk_alloc( d ) != DISK_OK ) return d->status; - fseek( file, 0, SEEK_SET ); + buffer->index = 0; for( i = 0; i < d->cylinders; i++ ) { for( j = 0; j < d->sides; j++ ) { - if( trackgen( d, file, j, i, 1, sectors, seclen, + if( trackgen( d, buffer, j, i, 1, sectors, seclen, NO_PREINDEX, GAP_TRDOS, INTERLEAVE_2, 0x00 ) ) return d->status = DISK_GEOM; } @@ -844,25 +873,25 @@ } static int -open_fdi( FILE *file, disk_t *d, int preindex ) +open_fdi( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, h, gap; int bpt, bpt_fm, max_bpt = 0, max_bpt_fm = 0; int data_offset, track_offset, head_offset, sector_offset; - d->wrprot = head[0x03] == 1 ? 1 : 0; - d->sides = head[0x06] + 256 * head[0x07]; - d->cylinders = head[0x04] + 256 * head[0x05]; + d->wrprot = buff[0x03] == 1 ? 1 : 0; + d->sides = buff[0x06] + 256 * buff[0x07]; + d->cylinders = buff[0x04] + 256 * buff[0x05]; GEOM_CHECK; - data_offset = head[0x0a] + 256 * head[0x0b]; - h = 0x0e + head[0x0c] + 256 * head[0x0d]; /* save head start */ + data_offset = buff[0x0a] + 256 * buff[0x0b]; + h = 0x0e + buff[0x0c] + 256 * buff[0x0d]; /* save head start */ head_offset = h; /* first determine the longest track */ d->bpt = 0; for( i = 0; i < d->cylinders * d->sides; i++ ) { /* ALT */ - fseek( file, head_offset, SEEK_SET ); - if( fread( head, 7, 1, file ) != 1 ) /* 7 := track head */ + buffer->index = head_offset; + if( buffread( head, 7, buffer ) != 1 ) /* 7 := track head */ return d->status = DISK_OPEN; bpt = postindex_len( d, GAP_MINIMAL_MFM ) + ( preindex ? preindex_len( d, GAP_MINIMAL_MFM ) : 0 ) + 6; /* +gap4 */ @@ -870,7 +899,7 @@ ( preindex ? preindex_len( d, GAP_MINIMAL_FM ) : 0 ) + 3; /* +gap4 */ for( j = 0; j < head[0x06]; j++ ) { /* calculate track len */ if( j % 35 == 0 ) { /* 35-sector header */ - if( fread( head + 7, 245, 1, file ) != 1 ) /* 7*35 := max 35 sector head */ + if( buffread( head + 7, 245, buffer ) != 1 ) /* 7*35 := max 35 sector head */ return d->status = DISK_OPEN; } if( ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) != 0 ) { @@ -885,7 +914,7 @@ head_offset += 7 + 7 * head[ 0x06 ]; } - + if( max_bpt == 0 || max_bpt_fm == 0 ) return d->status = DISK_GEOM; @@ -903,9 +932,8 @@ head_offset = h; /* restore head start */ for( i = 0; i < d->cylinders * d->sides; i++ ) { /* ALT */ - fseek( file, head_offset, SEEK_SET ); - if( fread( head, 7, 1, file ) != 1 ) /* 7 = track head */ - return d->status = DISK_OPEN; + buffer->index = head_offset; + buffread( head, 7, buffer ); /* 7 = track head */ track_offset = head[0x00] + 256 * head[0x01] + 65536 * head[0x02] + 16777216 * head[0x03]; d->track = d->data + i * d->tlen; d->clocks = d->track + d->bpt; @@ -918,17 +946,16 @@ if( j % 35 == 0 ) { /* if we have more than 35 sector in a track, we have to seek back to the next sector headers and read it ( max 35 sector header */ - fseek( file, head_offset + 7 *( j + 1 ), SEEK_SET ); - if( fread( head + 7, 245, 1, file ) != 1 ) /* 7*35 := max 35 sector head */ - return d->status = DISK_OPEN; + buffer->index = head_offset + 7 *( j + 1 ); + buffread( head + 7, 245, buffer ); /* 7*35 := max 35 sector head */ } id_add( d, head[ 0x08 + 7 * ( j % 35 ) ], head[ 0x07 + 7*( j % 35 ) ], head[ 0x09 + 7*( j % 35 ) ], head[ 0x0a + 7*( j % 35 ) ], gap, ( head[ 0x0b + 7*( j % 35 ) ] & 0x3f ) ? CRC_OK : CRC_ERROR ); sector_offset = head[ 0x0c + 7 * ( j % 35 ) ] + 256 * head[ 0x0d + 7 * ( j % 35 ) ]; - fseek( file, data_offset + track_offset + sector_offset, SEEK_SET ); - data_add( d, file, NULL, ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) == 0 ? + buffer->index = data_offset + track_offset + sector_offset; + data_add( d, buffer, NULL, ( head[ 0x0b + 7 * ( j % 35 ) ] & 0x3f ) == 0 ? -1 : 0x80 << head[ 0x0a + 7 * ( j % 35 ) ], head[ 0x0b + 7 * ( j % 35 ) ] & 0x80 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ); @@ -940,70 +967,79 @@ } static int -open_cpc( FILE *file, disk_t *d, disk_type_t type, int preindex ) +open_cpc( buffer_t *buffer, disk_t *d, int preindex ) { - int i, j, seclen, idlen, gap; + int i, j, seclen, idlen, gap, sector_pad; int bpt, max_bpt = 0, trlen; - int fix[42], plus3_fix; + int fix[84], plus3_fix; + unsigned char *hdrb; - d->sides = head[0x31]; - d->cylinders = head[0x30]; /* maximum number of tracks */ + d->sides = buff[0x31]; + d->cylinders = buff[0x30]; /* maximum number of tracks */ GEOM_CHECK; + buffer->index = 256; +/* first scan for the longest track */ for( i = 0; i < d->sides*d->cylinders; i++ ) { /* sometimes in the header there are more track than in the file */ - if( fread( head, 1, 1, file ) != 1 && feof( file ) ) { + if( buffavail( buffer ) == 0 ) { /* no more data */ d->cylinders = i / d->sides + i % d->sides; /* the real cylinder number */ break; } - if( fread( head + 1, 255, 1, file ) != 1 || - memcmp( head, "Track-Info\r\n", 12 ) ) /* read track header */ + if( buffavail( buffer ) < 256 || + memcmp( buff, "Track-Info\r\n", 12 ) ) /* check track header */ return d->status = DISK_OPEN; - gap = (unsigned char)head[0x16] == 0xff ? GAP_MINIMAL_FM : + gap = (unsigned char)buff[0x16] == 0xff ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; plus3_fix = trlen = 0; - while( i < head[0x10] * d->sides + head[0x11] ) { - if( i < 42 ) fix[i] = 0; + while( i < buff[0x10] * d->sides + buff[0x11] ) { + if( i < 84 ) fix[i] = 0; i++; } + if( i >= d->sides*d->cylinders || + i != buff[0x10] * d->sides + buff[0x11] ) /* problem with track idx. */ + return d->status = DISK_OPEN; + bpt = postindex_len( d, gap ) + ( preindex ? preindex_len( d, gap ) : 0 ) + ( gap == GAP_MINIMAL_MFM ? 6 : 3 ); /* gap4 */ - for( j = 0; j < head[0x15]; j++ ) { /* each sector */ - seclen = type == DISK_ECPC ? head[ 0x1e + 8 * j ] + - 256 * head[ 0x1f + 8 * j ] - : 0x80 << head[ 0x1b + 8 * j ]; - bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, seclen, gap ); + sector_pad = 0; + for( j = 0; j < buff[0x15]; j++ ) { /* each sector */ + seclen = d->type == DISK_ECPC ? buff[ 0x1e + 8 * j ] + + 256 * buff[ 0x1f + 8 * j ] + : 0x80 << buff[ 0x1b + 8 * j ]; + idlen = 0x80 << buff[ 0x1b + 8 * j ]; /* sector length from ID */ + bpt += calc_sectorlen( gap == GAP_MINIMAL_MFM ? 1 : 0, idlen, gap ); trlen += seclen; - if( i < 42 && d->flag & DISK_FLAG_PLUS3_CPC ) { - if( j == 0 && head[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) + if( i < 84 && d->flag & DISK_FLAG_PLUS3_CPC ) { + if( j == 0 && buff[ 0x1b + 8 * j ] == 6 && seclen > 6144 ) plus3_fix = 4; - else if( j == 0 && head[ 0x1b + 8 * j ] == 6 ) + else if( j == 0 && buff[ 0x1b + 8 * j ] == 6 ) plus3_fix = 1; else if( j == 0 && - head[ 0x18 + 8 * j ] == j && head[ 0x19 + 8 * j ] == j && - head[ 0x1a + 8 * j ] == j && head[ 0x1b + 8 * j ] == j ) + buff[ 0x18 + 8 * j ] == j && buff[ 0x19 + 8 * j ] == j && + buff[ 0x1a + 8 * j ] == j && buff[ 0x1b + 8 * j ] == j ) plus3_fix = 3; - else if( j == 1 && plus3_fix == 1 && head[ 0x1b + 8 * j ] == 2 ) + else if( j == 1 && plus3_fix == 1 && buff[ 0x1b + 8 * j ] == 2 ) plus3_fix = 2; - else if( j > 1 && plus3_fix == 2 && head[ 0x1b + 8 * j ] != 2 ) + else if( j > 1 && plus3_fix == 2 && buff[ 0x1b + 8 * j ] != 2 ) plus3_fix = 0; else if( j > 0 && plus3_fix == 3 && - ( head[ 0x18 + 8 * j ] != j || head[ 0x19 + 8 * j ] != j || - head[ 0x1a + 8 * j ] != j || head[ 0x1b + 8 * j ] != j ) ) + ( buff[ 0x18 + 8 * j ] != j || buff[ 0x19 + 8 * j ] != j || + buff[ 0x1a + 8 * j ] != j || buff[ 0x1b + 8 * j ] != j ) ) plus3_fix = 0; else if( j > 10 && plus3_fix == 2 ) plus3_fix = 0; } if( seclen == 0x80 ) /* every 128byte length sector padded */ - fseek( file, 0x80, SEEK_CUR ); + sector_pad++; } - if( i < 42 ) { + if( i < 84 ) { fix[i] = plus3_fix; if( fix[i] == 4 ) bpt = 6500;/* Type 1 variant DD+ (e.g. Coin Op Hits) */ else if( fix[i] != 0 ) bpt = 6250;/* we assume a standard DD track */ } - fseek( file, trlen, SEEK_CUR ); + buffer->index += trlen + sector_pad * 128 + 256; if( bpt > max_bpt ) max_bpt = bpt; } @@ -1016,28 +1052,25 @@ return d->status; d->track = d->data; d->clocks = d->track + d->bpt; - fseek( file, 256, SEEK_SET ); /* rewind to first track */ + buffer->index = 256; /* rewind to first track */ for( i = 0; i < d->sides*d->cylinders; i++ ) { - if( fread( head, 256, 1, file ) != 1 || - memcmp( head, "Track-Info\r\n", 12 ) ) /* read track header */ - return d->status = DISK_OPEN; + hdrb = buff; + buffer->index += 256; /* skip to data */ + gap = (unsigned char)hdrb[0x16] == 0xff ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; - gap = (unsigned char)head[0x16] == 0xff ? GAP_MINIMAL_FM : - GAP_MINIMAL_MFM; - - i = head[0x10] * d->sides + head[0x11]; /* adjust track No. */ + i = hdrb[0x10] * d->sides + hdrb[0x11]; /* adjust track No. */ d->track = d->data + i * d->tlen; d->clocks = d->track + d->bpt; d->i = 0; if( preindex) preindex_add( d, gap ); postindex_add( d, gap ); trlen = 0; - for( j = 0; j < head[0x15]; j++ ) { /* each sector */ - seclen = type == DISK_ECPC ? head[ 0x1e + 8 * j ] + /* data length in sector */ - 256 * head[ 0x1f + 8 * j ] - : 0x80 << head[ 0x1b + 8 * j ]; - idlen = 0x80 << head[ 0x1b + 8 * j ]; /* sector length from ID */ - + for( j = 0; j < hdrb[0x15]; j++ ) { /* each sector */ + seclen = d->type == DISK_ECPC ? hdrb[ 0x1e + 8 * j ] + /* data length in sector */ + 256 * hdrb[ 0x1f + 8 * j ] + : 0x80 << hdrb[ 0x1b + 8 * j ]; + idlen = 0x80 << hdrb[ 0x1b + 8 * j ]; /* sector length from ID */ + trlen += seclen; if( idlen == 0 || idlen > ( 0x80 << 0x08 ) ) /* error in sector length code -> ignore */ idlen = seclen; @@ -1045,48 +1078,48 @@ if( seclen > idlen && seclen % idlen ) /* seclen != N * len */ return d->status = DISK_OPEN; - if( fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ + if( i < 84 && fix[i] == 2 && j == 0 ) { /* repositionate the dummy track */ d->i = 8; } - id_add( d, head[ 0x19 + 8 * j ], head[ 0x18 + 8 * j ], - head[ 0x1a + 8 * j ], head[ 0x1b + 8 * j ], gap, - head[ 0x1c + 8 * j ] & 0x20 && !( head[ 0x1d + 8 * j ] & 0x20 ) ? - CRC_ERROR : CRC_OK ); + id_add( d, hdrb[ 0x19 + 8 * j ], hdrb[ 0x18 + 8 * j ], + hdrb[ 0x1a + 8 * j ], hdrb[ 0x1b + 8 * j ], gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && !( hdrb[ 0x1d + 8 * j ] & 0x20 ) ? + CRC_ERROR : CRC_OK ); - if( fix[i] == 1 && j == 0 ) { /* 6144 */ - data_add( d, file, NULL, seclen, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + if( i < 84 && fix[i] == 1 && j == 0 ) { /* 6144 */ + data_add( d, buffer, NULL, seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - } else if( fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ - datamark_add( d, head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); + } else if( i < 84 && fix[i] == 2 && j == 0 ) { /* 6144, 10x512 */ + datamark_add( d, hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap ); gap_add( d, 2, gap ); - fseek( file, seclen, SEEK_CUR ); - } else if( fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ - data_add( d, file, NULL, 128, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + buffer->index += seclen; + } else if( i < 84 && fix[i] == 3 ) { /* 128, 256, 512, ... 4096k */ + data_add( d, buffer, NULL, 128, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - fseek( file, seclen - 128, SEEK_CUR ); - } else if( fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ - data_add( d, file, NULL, 6384, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + buffer->index += seclen - 128; + } else if( i < 84 && fix[i] == 4 ) { /* Nx8192 (max 6384 byte ) */ + data_add( d, buffer, NULL, 6384, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); - fseek( file, seclen - 6384, SEEK_CUR ); + buffer->index += seclen - 6384; } else { - data_add( d, file, NULL, seclen > idlen ? idlen : seclen, - head[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, - head[ 0x1c + 8 * j ] & 0x20 && head[ 0x1d + 8 * j ] & 0x20 ? + data_add( d, buffer, NULL, seclen > idlen ? idlen : seclen, + hdrb[ 0x1d + 8 * j ] & 0x40 ? DDAM : NO_DDAM, gap, + hdrb[ 0x1c + 8 * j ] & 0x20 && hdrb[ 0x1d + 8 * j ] & 0x20 ? CRC_ERROR : CRC_OK, 0x00 ); if( seclen > idlen ) { /* weak sector with multiple copy */ - fseek( file, ( seclen / ( 0x80 << head[ 0x1b + 8 * j ] ) - 1 ) * - ( 0x80 << head[ 0x1b + 8 * j ] ), SEEK_CUR ); + buffer->index +=( seclen / ( 0x80 << hdrb[ 0x1b + 8 * j ] ) - 1 ) * + ( 0x80 << hdrb[ 0x1b + 8 * j ] ); /* ( ( N * len ) / len - 1 ) * len */ } } if( seclen == 0x80 ) /* every 128byte length sector padded */ - fseek( file, 0x80, SEEK_CUR ); + buffer->index += 0x80; } gap4_add( d, gap ); } @@ -1094,7 +1127,7 @@ } static int -open_scl( FILE *file, disk_t *d ) +open_scl( buffer_t *buffer, disk_t *d ) { int i, j, s, sectors, seclen; int scl_deleted, scl_files, scl_i; @@ -1116,25 +1149,25 @@ */ - if( ( scl_files = head[8] ) > 128 || scl_files < 1 ) /* number of files */ + if( ( scl_files = buff[8] ) > 128 || scl_files < 1 ) /* number of files */ return d->status = DISK_GEOM; /* too many file */ - fseek( file, 9, SEEK_SET ); /* read SCL entries */ + buffer->index = 9; /* read SCL entries */ d->track = d->data; /* track 0 */ d->clocks = d->track + d->bpt; d->i = 0; postindex_add( d, GAP_TRDOS ); scl_i = d->i; /* the position of first sector */ - s = 1; /* start sector number */ - scl_deleted = 0; /* deleted files */ + s = 1; /* start sector number */ + scl_deleted = 0; /* deleted files */ sectors = 0; /* allocated sectors */ - /* we use 'head[]' to build - TR-DOS directory */ - j = 0; /* index for head[] */ + /* we use 'head[]' to build + TR-DOS directory */ + j = 0; /* index for head[] */ memset( head, 0, 256 ); seclen = calc_sectorlen( 1, 256, GAP_TRDOS ); /* one sector raw length */ for( i = 0; i < scl_files; i++ ) { /* read all entry and build TR-DOS dir */ - if( fread( head + j, 14, 1, file ) != 1 ) + if( buffread( head + j, 14, buffer ) != 1 ) return d->status = DISK_OPEN; head[ j + 14 ] = sectors % 16; /* ( sectors + 16 ) % 16 := sectors % 16 starting sector */ @@ -1185,10 +1218,10 @@ memset( head, 0, 256 ); /* clear sector data... */ } gap4_add( d, GAP_TRDOS ); - + /* now we continue with the data */ for( i = 1; i < d->sides * d->cylinders; i++ ) { - if( trackgen( d, file, i % 2, i / 2, 1, 16, 256, + if( trackgen( d, buffer, i % 2, i / 2, 1, 16, 256, NO_PREINDEX, GAP_TRDOS, INTERLEAVE_2, 0x00 ) ) return d->status = DISK_OPEN; } @@ -1196,61 +1229,61 @@ } static int -open_td0( FILE *file, disk_t *d, int preindex ) +open_td0( buffer_t *buffer, disk_t *d, int preindex ) { int i, j, s, sectors, seclen, bpt, gap, mfm, mfm_old; int data_offset, track_offset, sector_offset; - unsigned char *buff; + unsigned char *uncomp_buff, *hdrb; - if( head[0] == 't' ) /* signature "td" -> advanced compression */ + if( buff[0] == 't' ) /* signature "td" -> advanced compression */ return d->status = DISK_IMPL; /* not implemented */ - buff = NULL; /* we may use this buffer */ - mfm_old = head[5] & 0x80 ? 0 : 1; /* td0notes say: may older teledisk + uncomp_buff = NULL; /* we may use this buffer */ + mfm_old = buff[5] & 0x80 ? 0 : 1; /* td0notes say: may older teledisk indicate the SD on high bit of data rate */ - d->sides = head[9]; /* 1 or 2 */ + d->sides = buff[9]; /* 1 or 2 */ if( d->sides < 1 || d->sides > 2 ) return d->status = DISK_GEOM; /* skip comment block if any */ - data_offset = track_offset = 12 + ( head[7] & 0x80 ? - 10 + head[14] + 256 * head[15] : 0 ); + data_offset = track_offset = 12 + ( buff[7] & 0x80 ? + 10 + buff[14] + 256 * buff[15] : 0 ); /* determine the greatest track length */ d->bpt = 0; d->cylinders = 0; seclen = 0; while( 1 ) { - fseek( file, track_offset, SEEK_SET ); - if( fread( head, 1, 1, file ) != 1 ) + buffer->index = track_offset; + if( buffavail( buffer ) < 1 ) return d->status = DISK_OPEN; - if( ( sectors = head[0] ) == 255 ) /* sector number 255 => end of tracks */ + if( ( sectors = buff[0] ) == 255 ) /* sector number 255 => end of tracks */ break; - if( fread( head + 1, 3, 1, file ) != 1 ) /* finish to read track header */ + if( buffavail( buffer ) < 4 ) /* check track header is avail. */ return d->status = DISK_OPEN; - if( head[1] + 1 > d->cylinders ) /* find the biggest cylinder number */ - d->cylinders = head[1] + 1; + if( buff[1] + 1 > d->cylinders ) /* find the biggest cylinder number */ + d->cylinders = buff[1] + 1; bpt = 0; sector_offset = track_offset + 4; - mfm = head[2] & 0x80 ? 0 : 1; /* 0x80 == 1 => SD track */ + mfm = buff[2] & 0x80 ? 0 : 1; /* 0x80 == 1 => SD track */ bpt = postindex_len( d, mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ) + ( preindex ? preindex_len( d, mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ) : 0 ) + mfm_old || mfm ? 6 : 3; for( s = 0; s < sectors; s++ ) { - fseek( file, sector_offset, SEEK_SET ); - if( fread( head, 6, 1, file ) != 1 ) + buffer->index = sector_offset; + if( buffavail( buffer ) < 6 ) /* check sector header is avail. */ return d->status = DISK_OPEN; - if( !( head[4] & 0x30 ) ) { /* only if we have data */ - if( fread( head + 6, 3, 1, file ) != 1 ) /* read data header */ + if( !( buff[4] & 0x30 ) ) { /* only if we have data */ + if( buffavail( buffer ) < 9 ) /* check data header is avail. */ return d->status = DISK_OPEN; - bpt += calc_sectorlen( mfm_old || mfm, 0x80 << head[3], + bpt += calc_sectorlen( mfm_old || mfm, 0x80 << buff[3], mfm_old || mfm ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM ); - if( head[3] > seclen ) - seclen = head[3]; /* biggest sector */ - sector_offset += head[6] + 256 * head[7] - 1; + if( buff[3] > seclen ) + seclen = buff[3]; /* biggest sector */ + sector_offset += buff[6] + 256 * buff[7] - 1; } sector_offset += 9; } @@ -1268,138 +1301,122 @@ d->track = d->data; d->clocks = d->track + d->bpt; - fseek( file, data_offset, SEEK_SET ); /* first track header */ + buffer->index = data_offset; /* first track header */ while( 1 ) { - if( fread( head, 1, 1, file ) != 1 ) - return d->status = DISK_OPEN; - if( ( sectors = head[0] ) == 255 ) /* sector number 255 => end of tracks */ + if( ( sectors = buff[0] ) == 255 ) /* sector number 255 => end of tracks */ break; - if( fread( head + 1, 3, 1, file ) != 1 ) { /* finish to read track header */ - if( buff ) - free( buff ); - fclose( file ); - return d->status = DISK_OPEN; - } - d->track = d->data + ( d->sides * head[1] + ( head[2] & 0x01 ) ) * d->tlen; + d->track = d->data + ( d->sides * buff[1] + ( buff[2] & 0x01 ) ) * d->tlen; d->clocks = d->track + d->bpt; d->i = 0; - /* later teledisk -> if head[2] & 0x80 -> FM track */ - gap = mfm_old || head[2] & 0x80 ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; + /* later teledisk -> if buff[2] & 0x80 -> FM track */ + gap = mfm_old || buff[2] & 0x80 ? GAP_MINIMAL_FM : GAP_MINIMAL_MFM; postindex_add( d, gap ); + buffer->index += 4; /* sector header*/ for( s = 0; s < sectors; s++ ) { - if( fread( head, 6, 1, file ) != 1 ) { /* sector head */ - if( buff ) - free( buff ); - fclose( file ); - return d->status = DISK_OPEN; - } - if( !( head[4] & 0x40 ) ) /* if we have id we add */ - id_add( d, head[1], head[0], head[2], head[3], gap, - head[4] & 0x02 ? CRC_ERROR : CRC_OK ); - if( !( head[4] & 0x30 ) ) { /* only if we have data */ - if( fread( head + 6, 3, 1, file ) != 1 ) { /* read data header */ - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - } - if( head[4] & 0x40 ) { /* if we have _no_ id we drop data... */ - fseek( file, head[6] + 256 * head[7] - 1, SEEK_CUR ); + hdrb = buff; + buffer->index += 9; /* skip to data */ + if( !( hdrb[4] & 0x40 ) ) /* if we have id we add */ + id_add( d, hdrb[1], hdrb[0], hdrb[2], hdrb[3], gap, + hdrb[4] & 0x02 ? CRC_ERROR : CRC_OK ); + if( hdrb[4] & 0x40 ) { /* if we have _no_ id we drop data... */ + buffer->index += hdrb[6] + 256 * hdrb[7] - 1; continue; /* next sector */ } - seclen = 0x80 << head[3]; + if( !( hdrb[4] & 0x30 ) ) { /* only if we have data */ + seclen = 0x80 << hdrb[3]; - switch( head[8] ) { - case 0: /* raw sector data */ - if( head[6] + 256 * head[7] - 1 != seclen ) { - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - if( data_add( d, file, NULL, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - } - break; - case 1: /* Repeated 2-byte pattern */ - if( buff == NULL && alloc_uncompress_buffer( &buff, 8192 ) ) - return d->status = DISK_MEM; - for( i = 0; i < seclen; ) { /* fill buffer */ - if( fread( head + 9, 4, 1, file ) != 1 ) { /* read block header */ - free( buff ); + switch( hdrb[8] ) { + case 0: /* raw sector data */ + if( hdrb[6] + 256 * hdrb[7] - 1 != seclen ) { + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; } - if( i + 2 * ( head[9] + 256*head[10] ) > seclen ) { - /* too many data bytes */ - free( buff ); + if( data_add( d, buffer, NULL, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; } - /* ab ab ab ab ab ab ab ab ab ab ab ... */ - for( j = 1; j < head[9] + 256 * head[10]; j++ ) - memcpy( buff + i + j * 2, &head[11], 2 ); - i += 2 * ( head[9] + 256 * head[10] ); - } - if( data_add( d, NULL, buff, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - free( buff ); - return d->status = DISK_OPEN; - } - break; - case 2: /* Run Length Encoded data */ - if( buff == NULL && alloc_uncompress_buffer( &buff, 8192 ) ) - return d->status = DISK_MEM; - for( i = 0; i < seclen; ) { /* fill buffer */ - if( fread( head + 9, 2, 1, file ) != 1 ) {/* read block header */ - free( buff ); - return d->status = DISK_OPEN; - } - if( head[9] == 0 ) { /* raw bytes */ - if( i + head[10] > seclen || /* too many data bytes */ - fread( buff + i, head[10], 1, file ) != 1 ) { - free( buff ); + break; + case 1: /* Repeated 2-byte pattern */ + if( uncomp_buff == NULL && alloc_uncompress_buffer( &uncomp_buff, 8192 ) ) + return d->status = DISK_MEM; + for( i = 0; i < seclen; ) { /* fill buffer */ + if( buffavail( buffer ) < 13 ) { /* check block header is avail. */ + free( uncomp_buff ); return d->status = DISK_OPEN; } - i += head[10]; - } else { /* repeated samples */ - if( i + 2 * head[9] * head[10] > seclen || /* too many data bytes */ - fread( buff + i, 2 * head[9], 1, file ) != 1 ) { - free( buff ); + if( i + 2 * ( hdrb[9] + 256*hdrb[10] ) > seclen ) { + /* too many data bytes */ + free( uncomp_buff ); return d->status = DISK_OPEN; } + /* ab ab ab ab ab ab ab ab ab ab ab ... */ + for( j = 1; j < hdrb[9] + 256 * hdrb[10]; j++ ) + memcpy( uncomp_buff + i + j * 2, &hdrb[11], 2 ); + i += 2 * ( hdrb[9] + 256 * hdrb[10] ); + } + if( data_add( d, NULL, uncomp_buff, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + break; + case 2: /* Run Length Encoded data */ + if( uncomp_buff == NULL && alloc_uncompress_buffer( &uncomp_buff, 8192 ) ) + return d->status = DISK_MEM; + for( i = 0; i < seclen; ) { /* fill buffer */ + if( buffavail( buffer ) < 11 ) { /* check block header is avail */ + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + if( hdrb[9] == 0 ) { /* raw bytes */ + if( i + hdrb[10] > seclen || /* too many data bytes */ + buffread( uncomp_buff + i, hdrb[10], buffer ) != 1 ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + i += hdrb[10]; + } else { /* repeated samples */ + if( i + 2 * hdrb[9] * hdrb[10] > seclen || /* too many data bytes */ + buffread( uncomp_buff + i, 2 * hdrb[9], buffer ) != 1 ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } /* abcdefgh abcdefg abcdefg abcdefg ... \--v---/ - 2*head[9] + 2*hdrb[9] | | | | | - +- 0 +- 1 +- 2 +- 3 ... +- head[10]-1 + +- 0 +- 1 +- 2 +- 3 ... +- hdrb[10]-1 */ - for( j = 1; j < head[10]; j++ ) /* repeat 'n' times */ - memcpy( buff + i + j * 2 * head[9], buff + i, 2 * head[9] ); - i += 2 * head[9] * head[10]; + for( j = 1; j < hdrb[10]; j++ ) /* repeat 'n' times */ + memcpy( uncomp_buff + i + j * 2 * hdrb[9], uncomp_buff + i, 2 * hdrb[9] ); + i += 2 * hdrb[9] * hdrb[10]; + } } - } - if( data_add( d, NULL, buff, head[6] + 256 * head[7] - 1, - head[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { - free( buff ); + if( data_add( d, NULL, uncomp_buff, hdrb[6] + 256 * hdrb[7] - 1, + hdrb[4] & 0x04 ? DDAM : NO_DDAM, gap, CRC_OK, NO_AUTOFILL ) ) { + free( uncomp_buff ); + return d->status = DISK_OPEN; + } + break; + default: + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OPEN; + break; } - break; - default: - if( buff ) - free( buff ); - return d->status = DISK_OPEN; - break; } } gap4_add( d, gap ); } - if( buff ) - free( buff ); + if( uncomp_buff ) + free( uncomp_buff ); return d->status = DISK_OK; } @@ -1409,107 +1426,72 @@ int disk_open( disk_t *d, const char *filename, int preindex ) { - FILE *file; - disk_type_t type; - struct stat file_info; - const char *ext; - size_t namelen; + buffer_t buffer; + libspectrum_id_t type; + int error; - if( filename == NULL || *filename == '\0' ) - return d->status = DISK_OPEN; - - if( ( file = fopen( filename, "rb" ) ) == NULL ) - return d->status = DISK_OPEN; - - if( stat( filename, &file_info) ) { - fclose( file ); - return d->status = DISK_OPEN; - } - - if( fread( head, 256, 1, file ) != 1 ) { - fclose( file ); - return d->status = DISK_OPEN; - } - - namelen = strlen( filename ); - if( namelen < 4 ) - ext = NULL; - else - ext = filename + namelen - 4; - - type = DISK_TYPE_NONE; - - if( memcmp( head, "UDI!", 4 ) == 0 ) - type = DISK_UDI; - else if( memcmp( head, "EXTENDED", 8 ) == 0 ) - type = DISK_ECPC; - else if( memcmp( head, "MV - CPC", 8 ) == 0 ) - type = DISK_CPC; - else if( memcmp( head, "FDI", 3 ) == 0 ) - type = DISK_FDI; - else if( memcmp( head, "Aley's disk backup", 18 ) == 0 ) - type = DISK_SAD; - else if( memcmp( head, "SINCLAIR", 8 ) == 0 ) - type = DISK_SCL; - else if( memcmp( head, "TD", 2 ) == 0 || memcmp( head, "td", 2 ) == 0 ) - type = DISK_TD0; - else { - if( ext == NULL ) { - fclose( file ); - return d->status = DISK_OPEN; - } - if( !strcasecmp( ext, ".mgt" ) || !strcasecmp( ext, ".dsk" ) ) - type = DISK_MGT; /* ALT side */ - else if( !strcasecmp( ext, ".img" ) ) /* out-out */ - type = DISK_IMG; - else if( !strcasecmp( ext, ".trd" ) ) /* out-out */ - type = DISK_TRD; - } - if( access( filename, W_OK ) == -1 ) /* file read only */ d->wrprot = 1; else d->wrprot = 0; - + + if( utils_read_file( filename, &buffer.file ) ) + return d->status = DISK_OPEN; + + buffer.index = 0; + + error = libspectrum_identify_file_raw( &type, filename, + buffer.file.buffer, buffer.file.length ); + if( error ) return d->status = DISK_OPEN; + d->type = DISK_TYPE_NONE; switch ( type ) { - case DISK_UDI: - open_udi( file, d ); + case LIBSPECTRUM_ID_DISK_UDI: + d->type = DISK_UDI; + open_udi( &buffer, d ); break; - case DISK_MGT: - case DISK_IMG: - open_mgt_img( file, d, file_info.st_size, type ); + case LIBSPECTRUM_ID_DISK_MGT: + d->type = DISK_MGT; + case LIBSPECTRUM_ID_DISK_IMG: + if( d->type == DISK_TYPE_NONE) d->type = DISK_IMG; + open_mgt_img( &buffer, d ); break; - case DISK_SAD: - open_sad( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_SAD: + d->type = DISK_SAD; + open_sad( &buffer, d, preindex ); break; - case DISK_TRD: - open_trd( file, d ); + case LIBSPECTRUM_ID_DISK_TRD: + d->type = DISK_TRD; + open_trd( &buffer, d ); break; - case DISK_FDI: - open_fdi( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_FDI: + d->type = DISK_FDI; + open_fdi( &buffer, d, preindex ); break; - case DISK_CPC: - case DISK_ECPC: - open_cpc( file, d, type, preindex ); + case LIBSPECTRUM_ID_DISK_CPC: + d->type = DISK_CPC; + case LIBSPECTRUM_ID_DISK_ECPC: + if( d->type == DISK_TYPE_NONE) d->type = DISK_ECPC; + open_cpc( &buffer, d, preindex ); break; - case DISK_SCL: - open_scl( file, d ); + case LIBSPECTRUM_ID_DISK_SCL: + d->type = DISK_SCL; + open_scl( &buffer, d ); break; - case DISK_TD0: - open_td0( file, d, preindex ); + case LIBSPECTRUM_ID_DISK_TD0: + d->type = DISK_TD0; + open_td0( &buffer, d, preindex ); break; default: - fclose( file ); + utils_close_file( &buffer.file ); return d->status = DISK_OPEN; } if( d->status != DISK_OK ) { if( d->data != NULL ) free( d->data ); - fclose( file ); + utils_close_file( &buffer.file ); return d->status; } - fclose( file ); - d->type = type; + utils_close_file( &buffer.file ); d->dirty = 0; return d->status = DISK_OK; } @@ -1517,7 +1499,7 @@ /*--------------------- start of write section ----------------*/ static int -write_udi( FILE * file, disk_t * d ) +write_udi( FILE *file, disk_t *d ) { int i, j; size_t len; @@ -1568,7 +1550,7 @@ } static int -write_img_mgt( FILE * file, disk_t * d, disk_type_t type ) +write_img_mgt( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1576,7 +1558,7 @@ sbase != 1 || seclen != 2 || sectors != 10 ) return d->status = DISK_GEOM; - if( type == DISK_IMG ) { /* out-out */ + if( d->type == DISK_IMG ) { /* out-out */ for( j = 0; j < d->sides; j++ ) { for( i = 0; i < d->cylinders; i++ ) { if( savetrack( d, file, j, i, 1, sectors, seclen ) ) @@ -1595,7 +1577,7 @@ } static int -write_trd( FILE * file, disk_t * d ) +write_trd( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1612,7 +1594,7 @@ } static int -write_sad( FILE * file, disk_t * d ) +write_sad( FILE *file, disk_t *d ) { int i, j, sbase, sectors, seclen, mfm; @@ -1637,7 +1619,7 @@ } static int -write_fdi( FILE * file, disk_t * d ) +write_fdi( FILE *file, disk_t *d ) { int i, j, k, sbase, sectors, seclen, mfm, del; int h, t, s, b; @@ -1680,7 +1662,7 @@ head[0x05] = 0; guess_track_geom( d, j, i, &sbase, §ors, &seclen, &mfm ); head[0x06] = sectors; - if( fwrite( head, 7, 1, file ) != 1 ) + if( fwrite( head, 7, 1, file ) != 1 ) /* track header */ return d->status = DISK_WRPART; d->track = d->data + ( ( d->sides * i + j ) * d->tlen ); @@ -1703,7 +1685,7 @@ soff += 0x80 << b; } k++; - } /* Track header */ + } /* Sector header */ if( fwrite( head, 7 * k, 1, file ) != 1 ) return d->status = DISK_WRPART; @@ -1727,7 +1709,7 @@ } static int -write_cpc( FILE * file, disk_t * d ) +write_cpc( FILE *file, disk_t *d ) { int i, j, k, sbase, sectors, seclen, mfm; int h, t, s, b; @@ -1785,7 +1767,7 @@ } static int -write_scl( FILE * file, disk_t * d ) +write_scl( FILE *file, disk_t *d ) { int i, j, k, l, t, s, sbase, sectors, seclen, mfm, del; int entries; @@ -1902,7 +1884,7 @@ } static int -write_log( FILE * file, disk_t * d ) +write_log( FILE *file, disk_t *d ) { int i, j, k, del, rev; int h, t, s, b; @@ -1943,7 +1925,7 @@ k = 0; while( k < b ) { if( !( k % 16 ) ) - fprintf( file, "0x%08x:", d->i ); + fprintf( file, "0x%08x:", k ); fprintf( file, " 0x%02x", d->track[ d->i ] ); k++; if( !( k % 16 ) ) @@ -2027,25 +2009,25 @@ break; case DISK_IMG: case DISK_MGT: - write_img_mgt( file, d, d->type ); + write_img_mgt( file, d ); break; case DISK_TRD: - write_trd( file, d ); + write_trd( file, d ); break; case DISK_SAD: - write_sad( file, d ); + write_sad( file, d ); break; case DISK_FDI: - write_fdi( file, d ); + write_fdi( file, d ); break; case DISK_SCL: - write_scl( file, d ); + write_scl( file, d ); break; case DISK_CPC: - write_cpc( file, d ); + write_cpc( file, d ); break; case DISK_LOG: - write_log( file, d ); + write_log( file, d ); break; default: return d->status = DISK_WRFILE; Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/fuse.c =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/fuse.c 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/fuse.c 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2008 Philip Kendall - $Id: fuse.c 3797 2008-10-29 12:04:34Z fredm $ + $Id: fuse.c 3807 2008-11-08 15:17:00Z pak21 $ 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 @@ -554,6 +554,23 @@ case LIBSPECTRUM_CLASS_DISK_TRDOS: start_files->disk_beta = filename; break; + case LIBSPECTRUM_CLASS_DISK_GENERIC: + if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 || + machine_current->machine == LIBSPECTRUM_MACHINE_PLUS2A ) + start_files->disk_plus3 = filename; + else if( machine_current->machine == LIBSPECTRUM_MACHINE_PENT || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT512 || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT1024 || + machine_current->machine == LIBSPECTRUM_MACHINE_SCORP ) + start_files->disk_beta = filename; + else { + if( periph_beta128_active ) + start_files->disk_beta = filename; + else if( periph_plusd_active ) + start_files->disk_plusd = filename; + } + break; + case LIBSPECTRUM_CLASS_RECORDING: start_files->playback = filename; break; Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/ChangeLog =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/ChangeLog 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/ChangeLog 2008-11-18 11:02:52 UTC (rev 546) @@ -2921,3 +2921,18 @@ 20081102 ui/win32/{win32ui.c,win32internals.h,win32joystick.[ch}: Win32: Implemented joystick handling using mmsystem API (and tested using PPJoy joystick emulator, hope it works with real hardware) (Marek). +20081108 disk/disk.c: prevent array overrun (bug #2240211) (Gergely Szasz). +20081108 disk/disk.c,fuse.c,utils.c: use libspectrum's ability to + identify more disk image formats (patch #2233744) (Gergely Szasz). +20081109 hacking/cvs-tags: document 0.10.0 branch. +20081109 disk/disk.c: stop buffer overrun from malformed .dsk (fixes bug + #2248067) (Gergely Szasz). +20081115 man/fuse.1: add debugger variables and print command + (Release-0_10_0-branch). +20081115 Makefile.am,hacking/Makefile.am,ui/win32/Makefile.am: make sure + all files are distributed (Release-0_10_0-branch). +20081116 ChangeLog,machines/{specplus2a.c,specplus3.c}: reading from the + AY data port on the +2A/+3 is the same as reading from the + register port (thanks, Mark Woodmass). +20081117 ocnfigure.in: bump version number for 0.10.0-pre1 release + (Release_0_10_0-branch). Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/Makefile.am =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/Makefile.am 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/Makefile.am 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -## Copyright (c) 2002 Philip Kendall +## Copyright (c) 2002-2008 Philip Kendall -## $Id: Makefile.am 2894 2007-05-26 23:25:05Z zubzero $ +## $Id: Makefile.am 3818 2008-11-15 13:28:08Z pak21 $ ## 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 @@ -24,4 +24,4 @@ AUTOMAKE_OPTIONS = foreign EXTRA_DIST = coding_style.txt cvs-tags implementation_notes.txt \ - tc2048_tech_notes.txt ui.txt win32_todo.txt + tc2048_tech_notes.txt ui.txt Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/cvs-tags =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/cvs-tags 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/hacking/cvs-tags 2008-11-18 11:02:52 UTC (rev 546) @@ -1,6 +1,6 @@ CVS tags for Fuse -$Id: cvs-tags 3482 2008-01-07 12:32:26Z pak21 $ +$Id: cvs-tags 3812 2008-11-09 11:43:44Z pak21 $ | Release-0_3_1 | Release-0_3_2pre1 @@ -163,4 +163,7 @@ | | | | Release-0_9_0-branch | ++-\ +| | Release-0_10_0-branch +| HEAD Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus2a.c =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus2a.c 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus2a.c 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ /* specplus2a.c: Spectrum +2A specific routines Copyright (c) 1999-2004 Philip Kendall - $Id: specplus2a.c 3566 2008-03-18 12:59:16Z pak21 $ + $Id: specplus2a.c 3823 2008-11-16 17:32:18Z pak21 $ 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 @@ -44,7 +44,7 @@ { 0x0001, 0x0000, ula_read, ula_write }, { 0x00e0, 0x0000, joystick_kempston_read, NULL }, { 0xc002, 0xc000, ay_registerport_read, ay_registerport_write }, - { 0xc002, 0x8000, NULL, ay_dataport_write }, + { 0xc002, 0x8000, ay_registerport_read, ay_dataport_write }, { 0xc002, 0x4000, NULL, spec128_memoryport_write }, { 0xf002, 0x1000, NULL, specplus3_memoryport2_write }, { 0xf002, 0x0000, printer_parallel_read, printer_parallel_write }, Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus3.c =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus3.c 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/machines/specplus3.c 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ /* specplus3.c: Spectrum +2A/+3 specific routines Copyright (c) 1999-2007 Philip Kendall, Darren Salt - $Id: specplus3.c 3601 2008-04-09 13:32:12Z fredm $ + $Id: specplus3.c 3823 2008-11-16 17:32:18Z pak21 $ 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 @@ -71,7 +71,7 @@ { 0x0001, 0x0000, ula_read, ula_write }, { 0x00e0, 0x0000, joystick_kempston_read, NULL }, { 0xc002, 0xc000, ay_registerport_read, ay_registerport_write }, - { 0xc002, 0x8000, NULL, ay_dataport_write }, + { 0xc002, 0x8000, ay_registerport_read, ay_dataport_write }, { 0xc002, 0x4000, NULL, spec128_memoryport_write }, { 0xf002, 0x3000, specplus3_fdc_read, specplus3_fdc_write }, { 0xf002, 0x2000, specplus3_fdc_status, NULL }, Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/man/fuse.1 =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/man/fuse.1 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/man/fuse.1 2008-11-18 11:02:52 UTC (rev 546) @@ -3174,6 +3174,14 @@ .IR port . .RE .PP +pr{int} +.I expression +.RS +Print the value of +.I expression +to standard output. +.RE +.PP se{t} .I address value .RS @@ -3192,6 +3200,16 @@ .IR value . .RE .PP +se{t} +.RI $ variable +.I value +.RS +Set the value of the debugger variable +.I variable +to +.IR value . +.RE +.PP s{tep} .RS Equivalent to the @@ -3236,12 +3254,12 @@ which uses a restricted version of C's syntax; exactly the same syntax is used for conditional breakpoints, with `0' being false and any other value being true. In numeric expressions, you can use integer -constants (all calculations is done in integers), register names -(which simply evaluate to the value of the register), parentheses, the -standard four numeric operations (`+', `\-', `*' and `/'), the -(non-)equality operators `==' and `!=', the comparison operators `>', -`<', `>=' and `<=', bitwise and (`&'), or (`|') and exclusive or (`^') -and logical and (`&&') and or (`||'). +constants (all calculations are done in integers), register names +(which simply evaluate to the value of the register), debugger +variables, parentheses, the standard four numeric operations (`+', +`\-', `*' and `/'), the (non-)equality operators `==' and `!=', the +comparison operators `>', `<', `>=' and `<=', bitwise and (`&'), or +(`|') and exclusive or (`^') and logical and (`&&') and or (`||'). .\" .\"------------------------------------------------------------------ .\" Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/ui/win32/Makefile.am =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/ui/win32/Makefile.am 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/ui/win32/Makefile.am 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ ## Process this file with automake to produce Makefile.in -## Copyright (c) 2001-2004 Philip Kendall +## Copyright (c) 2001-2008 Philip Kendall -## $Id: Makefile.am 3726 2008-07-23 20:07:22Z specu $ +## $Id: Makefile.am 3818 2008-11-15 13:28:08Z pak21 $ ## 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 @@ -103,6 +103,8 @@ roms.h \ memorybrowser.h \ menu_data.h \ + options.pl \ + options-resource.pl \ win32internals.h \ win32joystick.h Modified: vendor/fuse-emulator/0.10.0-pre1/fuse/utils.c =================================================================== --- vendor/fuse-emulator/0.10.0-pre1/fuse/utils.c 2008-11-18 10:42:14 UTC (rev 545) +++ vendor/fuse-emulator/0.10.0-pre1/fuse/utils.c 2008-11-18 11:02:52 UTC (rev 546) @@ -1,7 +1,7 @@ /* utils.c: some useful helper functions Copyright (c) 1999-2008 Philip Kendall - $Id: utils.c 3733 2008-07-28 10:00:48Z pak21 $ + $Id: utils.c 3807 2008-11-08 15:17:00Z pak21 $ 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 @@ -134,6 +134,22 @@ error = beta_disk_insert( BETA_DRIVE_A, filename, autoload ); break; + case LIBSPECTRUM_CLASS_DISK_GENERIC: + if( machine_current->machine == LIBSPECTRUM_MACHINE_PLUS3 || + machine_current->machine == LIBSPECTRUM_MACHINE_PLUS2A ) + error = specplus3_disk_insert( SPECPLUS3_DRIVE_A, filename, autoload ); + else if( machine_current->machine == LIBSPECTRUM_MACHINE_PENT || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT512 || + machine_current->machine == LIBSPECTRUM_MACHINE_PENT1024 || + machine_curre... [truncated message content] |
From: <fr...@us...> - 2008-11-18 10:42:23
|
Revision: 545 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=545&view=rev Author: fredm Date: 2008-11-18 10:42:14 +0000 (Tue, 18 Nov 2008) Log Message: ----------- Prepare to import vendor 0.10.0-pre1. Added Paths: ----------- vendor/fuse-emulator/0.10.0-pre1/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-07 12:14:33
|
Revision: 544 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=544&view=rev Author: fredm Date: 2008-11-07 12:14:27 +0000 (Fri, 07 Nov 2008) Log Message: ----------- Correct reporting of unknown classes, log name of tape being scanned for metadata. Modified Paths: -------------- trunk/FuseGenerator/LibspectrumSCRExtractor.m trunk/FuseImporter/LibspectrumMetadataImporter.m Modified: trunk/FuseGenerator/LibspectrumSCRExtractor.m =================================================================== --- trunk/FuseGenerator/LibspectrumSCRExtractor.m 2008-11-05 11:41:07 UTC (rev 543) +++ trunk/FuseGenerator/LibspectrumSCRExtractor.m 2008-11-07 12:14:27 UTC (rev 544) @@ -169,7 +169,7 @@ break; default: - NSLog(@"LibspectrumSCRExtractor: loadFile: unknown class %d!\n", type ); + NSLog(@"LibspectrumSCRExtractor: loadFile: unknown class %d!\n", lsclass ); } if( munmap( buffer, length ) == -1 ) { Modified: trunk/FuseImporter/LibspectrumMetadataImporter.m =================================================================== --- trunk/FuseImporter/LibspectrumMetadataImporter.m 2008-11-05 11:41:07 UTC (rev 543) +++ trunk/FuseImporter/LibspectrumMetadataImporter.m 2008-11-07 12:14:27 UTC (rev 544) @@ -183,6 +183,8 @@ tape = libspectrum_tape_alloc(); + NSLog(@"LibspectrumMetadataImporter: reading tape `%s'\n", fsrep ); + error = libspectrum_tape_read( tape, buffer, length, type, fsrep ); if( error != LIBSPECTRUM_ERROR_NONE ) { return NO; @@ -697,7 +699,7 @@ break; default: - NSLog(@"LibspectrumMetadataImporter: loadFile: unknown class %d!\n", type ); + NSLog(@"LibspectrumMetadataImporter: loadFile: unknown class %d!\n", lsclass ); retval = NO; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-05 12:55:44
|
Revision: 541 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=541&view=rev Author: fredm Date: 2008-11-05 11:33:28 +0000 (Wed, 05 Nov 2008) Log Message: ----------- Remove exit command as it causes a ruckus when the main thread doesn't know that the emulator thread is gone. Modified Paths: -------------- trunk/fuse/debugger/commandl.l Modified: trunk/fuse/debugger/commandl.l =================================================================== --- trunk/fuse/debugger/commandl.l 2008-11-05 11:32:46 UTC (rev 540) +++ trunk/fuse/debugger/commandl.l 2008-11-05 11:33:28 UTC (rev 541) @@ -63,7 +63,7 @@ di|dis|disa|disas|disass|disasse|disassm|disassmb|diasassmbl|disassemble { return DISASSEMBLE; } ev|eve|even|event { return EVENT; } -ex|exi|exit { return EXIT; } + /*ex|exi|exit { return EXIT; } Not good on OS X as main thread doesn't hear about exiting till it's too late */ fi|fin|fini|finis|finish { return FINISH; } if { return IF; } i|ig|ign|igno|ignor|ignore { return DEBUGGER_IGNORE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-05 12:55:42
|
Revision: 542 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=542&view=rev Author: fredm Date: 2008-11-05 11:38:41 +0000 (Wed, 05 Nov 2008) Log Message: ----------- Update manual for changes from vendor. Modified Paths: -------------- trunk/fuse/TODO trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html trunk/fuse/fusepb/resources/Fuse Help/html/compressed.html trunk/fuse/fusepb/resources/Fuse Help/html/formats.html trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html Modified: trunk/fuse/TODO =================================================================== --- trunk/fuse/TODO 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/TODO 2008-11-05 11:38:41 UTC (rev 542) @@ -3,19 +3,17 @@ * Pentagon port #ff returning floating bus issues - it does it because the RusFAQ says so? * Timex 2068 fusetests * Console mode GUI -* C version of standard tape loader * Add "proper" preferences window * Add TITLE tags to help files? * SZX ZX Printer block? * PAL Compsite emulation -* Seperate out sound buffer interleaving code to allow for the use of hardware etc. +* Separate out sound buffer interleaving code to allow for the use of hardware etc. sound mixing * Add volume option to standard fuse + a sound API method to set volume (or a parameter to sound_lowlevel_init) * Randomise FRAMES sys var after autoload snapshot loaded in order to try and get less deterministic program behaviour after load is complete * Use sheets rather than modal dialogs (for Save As) -* Put in latest hq[23]x filters (HQ2x_555 from ScummVM should do the trick) * Allow Cmd-w to close as many windows as possible * Make border display optional * Make activity icons transparent Modified: trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/fusepb/resources/Fuse Help/html/changelog.html 2008-11-05 11:38:41 UTC (rev 542) @@ -11,103 +11,24 @@ <body> <font face="Lucida Grande,Helvetica,Arial"> <!-- AppleSegStart="What's New In Fuse?" --><a - name="What's New In Fuse?" id="What's New In Fuse?"></a><!-- AppleSegDescription="This section describes the changes for version 0.8.0 of the Fuse emulator." --></font> + name="What's New In Fuse?" id="What's New In Fuse?"></a><!-- AppleSegDescription="This section describes the changes for version 0.10.0 of the Fuse emulator." --></font><br> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">What's new in Fuse -For Mac OS X 0.9.0.2</font></h2> +For Mac OS X 0.10.0</font></h2> <ul> - <li><font face="Lucida Grande,Helvetica,Arial">New features:</font></li> - <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Add Quick Look -generator for emulator file formats</font><font - face="Lucida Grande,Helvetica,Arial"> -(Fredrick Meunier, James Weatherley)</font><font - face="Lucida Grande,Helvetica,Arial">.</font></li> - </ul> - <li><font face="Lucida Grande,Helvetica,Arial">Miscellaneous bugfixes:</font></li> - <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Fix importing of SCR - </font><font face="Lucida Grande,Helvetica,Arial">graphics mode -in SpotLight importer -(Fredrick Meunier)</font><font face="Lucida Grande,Helvetica,Arial">.</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add UI support for -.udi and .fdi files to -be opened as Beta disk images</font><font - face="Lucida Grande,Helvetica,Arial"> (Fredrick Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add UI support for </font><font - face="Lucida Grande,Helvetica,Arial">.udi, .fdi and .scl files to -be saved as Beta disk images</font><font - face="Lucida Grande,Helvetica,Arial"> (Fredrick Meunier).</font></li> - </ul> -</ul> -<h2><font face="Lucida Grande,Helvetica,Arial">What's new in Fuse -For Mac OS X 0.9.0.1</font></h2> -<ul> - <li><font face="Lucida Grande,Helvetica,Arial">Miscellaneous bugfixes:</font></li> - <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Add +D and Beta disk -insert menu entries</font><font face="Lucida Grande,Helvetica,Arial"> -(Fredrick Meunier, thanks Paul van der Laan)</font><font - face="Lucida Grande,Helvetica,Arial">.</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Allow .img files to -be opened and saved as +D images</font><font - face="Lucida Grande,Helvetica,Arial"> (Fredrick Meunier, thanks Paul -van der Laan)</font><font face="Lucida Grande,Helvetica,Arial">.</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Update joystick -support from SDL</font><font face="Lucida Grande,Helvetica,Arial"> -(Fredrick Meunier)</font><font face="Lucida Grande,Helvetica,Arial">.</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add 4x and 5x zoom -options (Fredrick Meunier; thanks Richard Hallas)<br> - </font></li> - </ul> -</ul> -<h2><font face="Lucida Grande,Helvetica,Arial">What's new in Fuse -For Mac OS X 0.9.0</font></h2> -<ul> <li><font face="Lucida Grande,Helvetica,Arial">New features:</font></li> <li style="list-style-type: none; list-style-image: none; list-style-position: outside;"> <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Switch to using -OpenGL, CoreAudio and Cocoa for video, sound and user interaction and -cease to use SDL (Fredrick Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Run emulation in a -separate thread (Fredrick Meunier).<br> + <li><font face="Lucida Grande,Helvetica,Arial">New upd765 FDC +emulation; all known +3 DSK images now work (Gergely Szasz; thanks to +Simon Owen for expert technical advice).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Loading +acceleration (Philip Kendall).<br> </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add +D disk -interface support (Stuart -Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">New floppy disk -controller emulation for +D and Beta (aka TR-DOS) disk interface -emulation (Gergely Szasz and Stuart Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add Pentagon 512 -and Pentagon 1024 emulation (Q-Master).<br> - </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add Hi-Fi beeper -option for improved reproduction of multi-channel beeper tunes (e.g. -Fairlight -2 and Wham - the Music Box) (Fredrick Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add support for -saving tape images without using tape traps (Fredrick -Meunier).<br> - </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add support for -loading from WAV tape images (Fredrick Meunier).<br> - </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add support for -saving CSW tape -images and TZX -direct recording blocks (Fredrick Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add support for -loading from SPC, STA and LTP tape formats (Stuart Brady).<br> - </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Allow distinction -between "soft" resets (activing the reset line on the Z80) and "hard" -resets (pulling the power) (Philip Kendall).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Add support for -saving Interface I state information to z80 and szx snapshots (Fredrick -Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Automatic saves +while using RZX recording (Philip Kendall).</font></li> </ul> </li> <li><font face="Lucida Grande,Helvetica,Arial">Emulation core @@ -115,63 +36,44 @@ <li style="list-style-type: none; list-style-image: none; list-style-position: outside;"> <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Fix contention for -LD?R, CP?R and IN?R (Philip -Kendall; thanks, -Mark -Woodmass).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Fix undocumented -flags after BIT n,(IX+d) instructions (Philip Kendall).<br> + <li><font face="Lucida Grande,Helvetica,Arial">New late timings +option to emulate machines with 1 tstate later timings (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Reading from the +128K's memory control port causes that byte to be written back to the +port (Philip Kendall; thanks, Marat Fayzullin).<br> </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Fix undocumented -behaviour of DAA (Stuart Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">High ports (0xc000 -to 0xffff) are contended on the 128K when a contended RAM page is paged -in (Philip Kendall; thanks, Patrik Rak).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Correct contention -for the +2A/+3 ULA (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">NMI causes Z80 to +unHALT (Philip Kendall; thanks, Simon Owen).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Emulate C, H and +P/V flags on repeated IO instructions (Philip Kendall).</font></li> </ul> </li> - <li><font face="Lucida Grande,Helvetica,Arial">Machine specific -improvements:</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Debugger improvements:</font></li> <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Fix joystick port -mask on TC2048 (Fredrick Meunier)</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Improved keyboard -handling for 128K / +3 machines (Philip Kendall).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Improved -contention for TC2048 and TC2068 machines (Fredrick Meunier; thanks, -Mark Woodmass).<br> - </font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Debugger events to +allow the debugger to stop when various Spectrum-level events happen +(Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Make time +breakpoints work properly when more than one is present (Philip +Kendall).</font></li> </ul> - <li><font face="Lucida Grande,Helvetica,Arial">Miscellaneous bugfixes:</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Miscellaneous +improvements:</font></li> <ul> - <li><font face="Lucida Grande,Helvetica,Arial">Timed breakpoints -now work in the debugger (Philip Kendall).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">More informative -error messages when ejecting disks (Stuart Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Ejecting -Microdrive cartridges now checks for changes and doesn't automatically -overwrite the original file (Stuart Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Snapshots can no -longer cause the profiler to assert (Philip Kendall; thanks, Stuart -Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">DivIDE could page -itself in incorrectly after a reset (Stuart Brady).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Update +3e ROMs to -v1.31 (Fredrick Meunier; thanks, Garry Lancaster).<br> + <li><font face="Lucida Grande,Helvetica,Arial">Loader detection now +works with the Digital Integration loader (Philip Kendall).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">New HQ2X and HQ3x +scalers (Gergely Szasz).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Revert Pentagon 128 +to being the "base" machine without extra ROMs (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Updated +3e ROMs +(Fredrick Meunier; thanks, Garry Lancaster).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Allow DivIDE, custom +ROMs, Kempston mouse status and Simple 8-bit IDE interface to be saved +in snapshots (Fredrick Meunier).</font></li> + <li><font face="Lucida Grande,Helvetica,Arial">Better (but probably +not perfect) TS2068 contention (Philip Kendall).<br> </font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Make sure we clean -up temporary files from all media, not just tapes (Fredrick Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Stop processing -keypresses in the emulator when the command key is pressed (Fredrick -Meunier).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Merge up to -lib765-0.4.0 and libdsk-1.1.12 (+3 bugfixes).</font></li> - <li><font face="Lucida Grande,Helvetica,Arial">Can now change -menu shortcuts in the Keyboard & Mouse preferences pane (Fredrick -Meunier).<br> - </font></li> <ul> </ul> </ul> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/compressed.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/compressed.html 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/fusepb/resources/Fuse Help/html/compressed.html 2008-11-05 11:38:41 UTC (rev 542) @@ -1,4 +1,9 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> <!-- AppleSegStart="Compressed Files" --> +</head> +<body> <font face="Lucida Grande,Helvetica,Arial"><a name="Compressed Files"></a><!-- AppleSegDescription="This section describes Fuses support of compressed files." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">Compressed @@ -10,8 +15,9 @@ can be read from files compressed with <span class="emphasis"><em>bzip2</em></span> or <span class="emphasis"><em>gzip</em></span> just as if they were -uncompressed. Equivalent functionality is provided for +3 and +D disk -images, but there is currently no support for reading compressed -TR-DOS disk +uncompressed. There is currently no support for reading compressed +3, ++D or Beta disk images.</font></p> <!-- AppleSegEnd --> +</body> +</html> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/formats.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/formats.html 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/fusepb/resources/Fuse Help/html/formats.html 2008-11-05 11:38:41 UTC (rev 542) @@ -39,10 +39,12 @@ face="Lucida Grande,Helvetica,Arial">DISCiPLE/+D file formats.</font><br> </div> <p><font face="Lucida Grande,Helvetica,Arial">.SAD<br> +.SDF<br> </font></p> <div style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">For compatibility with SAM -Coupé disk images using this format. Note that SAM Coupé +Coupé disk images using these formats. Note that SAM +Coupé `.DSK' images share the same format as `.MGT'.</font><br> </div> <p><font face="Lucida Grande,Helvetica,Arial">.TRD<br> @@ -79,11 +81,7 @@ face="Lucida Grande,Helvetica,Arial">section and the CPCEMU manual section 7.7.1 <a href="http://www.cpc-emu.org/linux/cpcemu_e.txt">http://www.cpc-emu.org/linux/cpcemu_e.txt</a>.</font><br> </div> -<p><font face="Lucida Grande,Helvetica,Arial">.SDF<br> -</font></p> -<div style="margin-left: 40px;"><font - face="Lucida Grande,Helvetica,Arial">TODO</font><br> -</div> +<br> <p><font face="Lucida Grande,Helvetica,Arial">Fuse supports the <span style="font-style: italic;">.UDI, .FDI, .MGT, .IMG, .SAD, .TRD, .SCL and .DSK</span> (only the old CPC format)</font><font @@ -98,7 +96,7 @@ inappropriate format that loses some information (e.g. variable track length or sector length).<br> <br> -</font><font face="Lucida Grande,Helvetica,Arial"></font></p> +</font></p> <!-- AppleSegEnd --> </body> </html> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/fusepb/resources/Fuse Help/html/monitor.html 2008-11-05 11:38:41 UTC (rev 542) @@ -1,5 +1,10 @@ -<!-- AppleSegStart="Monitor/Debugger" --><font - face="Lucida Grande,Helvetica,Arial"><a name="Monitor/Debugger"></a><!-- AppleSegDescription="This section describes the Fuse machine code monitor and debugger." --></font> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<!-- AppleSegStart="Monitor/Debugger" --> +</head> +<body> +<font face="Lucida Grande,Helvetica,Arial"><a name="Monitor/Debugger"></a><!-- AppleSegDescription="This section describes the Fuse machine code monitor and debugger." --></font> <div class="refsect1" xml:lang="en" lang="en"> <h2><font face="Lucida Grande,Helvetica,Arial">Monitor/Debugger</font></h2> </div> @@ -19,8 +24,10 @@ `events' which are due to occur and could affect emulation. Below the events pane is the Spectrum's 64K memory map (the <span class="emphasis"><em>W?</em></span> and -<span class="emphasis"><em>C?</em></span> indicate whether each 8K chunk -is writeable or contended respectively). Below the displays are an entry +<span class="emphasis"><em>C?</em></span> indicate whether each 8K +chunk +is writeable or contended respectively). Below the displays are an +entry box for debugger commands, and five buttons for controlling the debugger:</font></p> <p> @@ -113,10 +120,54 @@ class="emphasis"><em>time</em></span> [<span class="emphasis"><em>condition</em></span>] Set a breakpoint to occur <span class="emphasis"><em>time</em></span> tstates after -the start of the current frame, assuming +the start of every frame, assuming <span class="emphasis"><em>condition</em></span> evaluates true (if one is given).</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">br{eakpoint} ev{ent} <span + class="emphasis"><em>area</em></span>:<span class="emphasis"><em>detail</em></span> +[<span class="emphasis"><em>condition</em></span>] Set a breakpoint +to occur when the event specified by <span class="emphasis"><em>area</em></span> +<span class="emphasis"><em>detail</em></span> occurs and <span + class="emphasis"><em>condition</em></span> evaluates to true. The +events which can be caught are:</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">divide:page +<br> +divide:unpage</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">The +DivIDE interface is paged +into or out of memory respectively</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">if1:page +<br> +if1:unpage</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">The +Interface 1 shadow ROM is +paged into or out of memory</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">rzx:end</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">An +RZX recording finishes +playing</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">tape:play +<br> +tape:stop</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">The +emulated tape starts or +stops playing</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">zxcf:page +<br> +zxcf:unpage</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">The +ZXCF interface is paged +into or out of memory</font></p> +<p style="margin-left: 40px;"><font face="Lucida Grande,Helvetica,Arial">zxatasp:page +<br> +zxatasp:unpage</font></p> +<p style="margin-left: 80px;"><font face="Lucida Grande,Helvetica,Arial">The +ZXATASP interface is paged +into or out of memory</font></p> +<p><font face="Lucida Grande,Helvetica,Arial">In all cases, +the event can be specified as <i>area</i>:* to catch all +events from that area.</font></p> <p> <font face="Lucida Grande,Helvetica,Arial">cl{ear} [<span class="emphasis"><em>address</em></span>] Remove all @@ -237,3 +288,5 @@ (`&&') and or (`||').</font></p> <!-- AppleSegEnd --> +</body> +</html> Modified: trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html =================================================================== --- trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html 2008-11-05 11:33:28 UTC (rev 541) +++ trunk/fuse/fusepb/resources/Fuse Help/html/preferences.html 2008-11-05 11:38:41 UTC (rev 542) @@ -45,6 +45,12 @@ input ports, and a few games depended on the old value of these bits. Enabling this option switches to the old value, to let you run those games.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Late +timings</em></font></span> <font face="Lucida Grande,Helvetica,Arial">If +selected, Fuse will cause all screen-related timings (for example, when +the screen is rendered and when memory contention occurs) to be one +tstate later than "normal", an effect which is present on some real +hardware.</font></p> <p> <span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Use tape traps</em></font></span> @@ -338,6 +344,19 @@ face="Lucida Grande,Helvetica,Arial">The RZX options tab, lets you configure how Fuse deals with RZX emulator input recordings.</font></p> +<p><span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Create +autosaves</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">If this option is +selected, Fuse will add a snapshot into the recording stream every 5 +seconds while creating an RZX file, thus enabling the rollback +facilities to be used without having to explicitly add snapshots into +the stream. Older snapshots will be pruned from the stream to keep the +file size and number of snapshots down: each snapshot up to 15 seconds +will be kept, then one snapshot every 15 seconds until one minute, then +one snapshot every minute until 5 minutes, and then one snapshot every +5 minutes. Note that this "pruning" applies only to automatically +inserted snapshots: snapshots manually inserted into the stream will +never be pruned.</font></p> <p> <span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Compress data</em></font></span> @@ -513,16 +532,32 @@ for more details on the Timex models.</font></p> <p style="margin-left: 40px;"> <span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Pentagon -128K</em></font></span> -<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Scorpion -ZS 256</em></font></span> -<font face="Lucida Grande,Helvetica,Arial">Two Russian clones of +128K</em></font></span> +<font face="Lucida Grande,Helvetica,Arial">Russian clone of the +Spectrum. There were many different machines<br> +called Pentagon from 1989 to 2006, this machine corresponds to a 1991 +era Pentagon-128K with the optional AY sound chip and the integrated +Beta 128 disk interface, and is the version of the machine most often +emulated. More technical details can be found at +<a href="http://www.worldofspectrum.org/rusfaq/index.html">http://www.worldofspectrum.org/rusfaq/index.html</a>.</font></p> +<p style="margin-left: 40px;"><span class="emphasis"><font + face="Lucida Grande,Helvetica,Arial"><em>Pentagon 512K</em></font></span> +<span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Pentagon +1024K</em></font></span> <font face="Lucida Grande,Helvetica,Arial">Newer +versions of the Pentagon Russian Spectrum clones which incorporate more +memory and the "Mr Gluk Reset Service" ROM offering a more powerful +firmware.</font></p> +<p style="margin-left: 40px;"><span class="emphasis"><font + face="Lucida Grande,Helvetica,Arial"><em>Scorpion +ZS 256</em></font></span> <font face="Lucida Grande,Helvetica,Arial">Another +Russian clone of the Spectrum. Some details can be found at <a href="http://www.worldofspectrum.org/rusfaq/index.html">http://www.worldofspectrum.org/rusfaq/index.html</a>, -but possibly the most important thing to note about both these -machines is that they have built in 3.5" disk drives, accessed via +like all the Russian clones they have built in 3.5" disk drives, +accessed via the Betadisk interface and TR-DOS (the Technology Research Disk -Operating System).</font></p> +Operating System). The most important distinction from the Pentagon +128k and similar machines is the display timing details.</font></p> <p style="margin-left: 40px;"> <span class="emphasis"><font face="Lucida Grande,Helvetica,Arial"><em>Spectrum SE</em></font></span> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-05 12:55:40
|
Revision: 543 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=543&view=rev Author: fredm Date: 2008-11-05 11:41:07 +0000 (Wed, 05 Nov 2008) Log Message: ----------- Remove old reference to lib765. Modified Paths: -------------- trunk/README Modified: trunk/README =================================================================== --- trunk/README 2008-11-05 11:38:41 UTC (rev 542) +++ trunk/README 2008-11-05 11:41:07 UTC (rev 543) @@ -12,7 +12,6 @@ FuseImporter audiofile fuse - lib765 libgcrypt libspectrum This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fr...@us...> - 2008-11-05 12:55:32
|
Revision: 540 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=540&view=rev Author: fredm Date: 2008-11-05 11:32:46 +0000 (Wed, 05 Nov 2008) Log Message: ----------- Add setting for create autosaves in RZX dialog. Modified Paths: -------------- trunk/fuse/fusepb/nibs/Preferences.nib/info.nib trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib Modified: trunk/fuse/fusepb/nibs/Preferences.nib/info.nib =================================================================== --- trunk/fuse/fusepb/nibs/Preferences.nib/info.nib 2008-11-03 12:27:34 UTC (rev 539) +++ trunk/fuse/fusepb/nibs/Preferences.nib/info.nib 2008-11-05 11:32:46 UTC (rev 540) @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>112 18 356 240 0 0 1440 878 </string> + <string>95 15 356 240 0 0 1280 778 </string> <key>IBFramework Version</key> <string>489.0</string> <key>IBGroupedObjects</key> @@ -32,7 +32,7 @@ <integer>5</integer> </array> <key>IBSystem Version</key> - <string>9C7010</string> + <string>9F2114</string> <key>IBUsesTextArchiving</key> <true/> </dict> Modified: trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib =================================================================== --- trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2008-11-03 12:27:34 UTC (rev 539) +++ trunk/fuse/fusepb/nibs/Preferences.nib/keyedobjects.nib 2008-11-05 11:32:46 UTC (rev 540) @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>1579</integer> + <integer>1588</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>1576</integer> + <integer>1585</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1577</integer> + <integer>1586</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>1578</integer> + <integer>1587</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>1263</integer> + <integer>1270</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>1264</integer> + <integer>1271</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>1195</integer> + <integer>1202</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>1196</integer> + <integer>1203</integer> </dict> <key>NSNextOid</key> - <integer>1202</integer> + <integer>1206</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>1188</integer> + <integer>1195</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>1194</integer> + <integer>1201</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>1265</integer> + <integer>1272</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>1266</integer> + <integer>1273</integer> </dict> <key>NSRoot</key> <dict> @@ -142,7 +142,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>104</integer> </dict> <key>NS.objects</key> <array> @@ -160,127 +160,123 @@ </dict> <dict> <key>CF$UID</key> - <integer>827</integer> + <integer>831</integer> </dict> <dict> <key>CF$UID</key> - <integer>837</integer> + <integer>841</integer> </dict> <dict> <key>CF$UID</key> - <integer>838</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>842</integer> </dict> <dict> <key>CF$UID</key> - <integer>845</integer> + <integer>846</integer> </dict> <dict> <key>CF$UID</key> - <integer>848</integer> + <integer>849</integer> </dict> <dict> <key>CF$UID</key> - <integer>851</integer> + <integer>852</integer> </dict> <dict> <key>CF$UID</key> - <integer>854</integer> + <integer>855</integer> </dict> <dict> <key>CF$UID</key> - <integer>857</integer> + <integer>858</integer> </dict> <dict> <key>CF$UID</key> - <integer>860</integer> + <integer>861</integer> </dict> <dict> <key>CF$UID</key> - <integer>863</integer> + <integer>864</integer> </dict> <dict> <key>CF$UID</key> - <integer>866</integer> + <integer>867</integer> </dict> <dict> <key>CF$UID</key> - <integer>869</integer> + <integer>870</integer> </dict> <dict> <key>CF$UID</key> - <integer>872</integer> + <integer>873</integer> </dict> <dict> <key>CF$UID</key> - <integer>875</integer> + <integer>876</integer> </dict> <dict> <key>CF$UID</key> - <integer>878</integer> + <integer>879</integer> </dict> <dict> <key>CF$UID</key> - <integer>881</integer> + <integer>882</integer> </dict> <dict> <key>CF$UID</key> - <integer>884</integer> + <integer>885</integer> </dict> <dict> <key>CF$UID</key> - <integer>887</integer> + <integer>888</integer> </dict> <dict> <key>CF$UID</key> - <integer>890</integer> + <integer>891</integer> </dict> <dict> <key>CF$UID</key> - <integer>893</integer> + <integer>894</integer> </dict> <dict> <key>CF$UID</key> - <integer>896</integer> + <integer>897</integer> </dict> <dict> <key>CF$UID</key> - <integer>899</integer> + <integer>900</integer> </dict> <dict> <key>CF$UID</key> - <integer>902</integer> + <integer>903</integer> </dict> <dict> <key>CF$UID</key> - <integer>911</integer> + <integer>906</integer> </dict> <dict> <key>CF$UID</key> - <integer>918</integer> + <integer>915</integer> </dict> <dict> <key>CF$UID</key> - <integer>921</integer> + <integer>922</integer> </dict> <dict> <key>CF$UID</key> - <integer>922</integer> + <integer>925</integer> </dict> <dict> <key>CF$UID</key> - <integer>924</integer> + <integer>926</integer> </dict> <dict> <key>CF$UID</key> - <integer>935</integer> + <integer>928</integer> </dict> <dict> <key>CF$UID</key> - <integer>938</integer> + <integer>939</integer> </dict> <dict> <key>CF$UID</key> @@ -288,7 +284,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>959</integer> + <integer>946</integer> </dict> <dict> <key>CF$UID</key> @@ -304,15 +300,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>977</integer> + <integer>975</integer> </dict> <dict> <key>CF$UID</key> - <integer>980</integer> + <integer>981</integer> </dict> <dict> <key>CF$UID</key> - <integer>983</integer> + <integer>984</integer> </dict> <dict> <key>CF$UID</key> @@ -320,10 +316,6 @@ </dict> <dict> <key>CF$UID</key> - <integer>989</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>991</integer> </dict> <dict> @@ -340,51 +332,51 @@ </dict> <dict> <key>CF$UID</key> - <integer>998</integer> + <integer>999</integer> </dict> <dict> <key>CF$UID</key> - <integer>999</integer> + <integer>1001</integer> </dict> <dict> <key>CF$UID</key> - <integer>1000</integer> + <integer>1002</integer> </dict> <dict> <key>CF$UID</key> - <integer>1002</integer> + <integer>1003</integer> </dict> <dict> <key>CF$UID</key> - <integer>1005</integer> + <integer>1004</integer> </dict> <dict> <key>CF$UID</key> - <integer>1008</integer> + <integer>1006</integer> </dict> <dict> <key>CF$UID</key> - <integer>1011</integer> + <integer>1009</integer> </dict> <dict> <key>CF$UID</key> - <integer>1014</integer> + <integer>1012</integer> </dict> <dict> <key>CF$UID</key> - <integer>1022</integer> + <integer>1015</integer> </dict> <dict> <key>CF$UID</key> - <integer>1023</integer> + <integer>1018</integer> </dict> <dict> <key>CF$UID</key> - <integer>1024</integer> + <integer>1026</integer> </dict> <dict> <key>CF$UID</key> - <integer>1025</integer> + <integer>1027</integer> </dict> <dict> <key>CF$UID</key> @@ -400,7 +392,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>1035</integer> + <integer>1033</integer> </dict> <dict> <key>CF$UID</key> @@ -412,39 +404,43 @@ </dict> <dict> <key>CF$UID</key> - <integer>1045</integer> + <integer>1040</integer> </dict> <dict> <key>CF$UID</key> - <integer>1046</integer> + <integer>1043</integer> </dict> <dict> <key>CF$UID</key> - <integer>1047</integer> + <integer>1049</integer> </dict> <dict> <key>CF$UID</key> - <integer>1048</integer> + <integer>1050</integer> </dict> <dict> <key>CF$UID</key> - <integer>1049</integer> + <integer>1051</integer> </dict> <dict> <key>CF$UID</key> - <integer>1054</integer> + <integer>1052</integer> </dict> <dict> <key>CF$UID</key> + <integer>1053</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>1058</integer> </dict> <dict> <key>CF$UID</key> - <integer>1064</integer> + <integer>1062</integer> </dict> <dict> <key>CF$UID</key> - <integer>1069</integer> + <integer>1068</integer> </dict> <dict> <key>CF$UID</key> @@ -456,15 +452,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1079</integer> + <integer>1081</integer> </dict> <dict> <key>CF$UID</key> - <integer>1080</integer> + <integer>1083</integer> </dict> <dict> <key>CF$UID</key> - <integer>1083</integer> + <integer>1084</integer> </dict> <dict> <key>CF$UID</key> @@ -472,23 +468,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1089</integer> - </dict> - <dict> - <key>CF$UID</key> <integer>1091</integer> </dict> <dict> <key>CF$UID</key> - <integer>1094</integer> + <integer>1093</integer> </dict> <dict> <key>CF$UID</key> - <integer>1097</integer> + <integer>1095</integer> </dict> <dict> <key>CF$UID</key> - <integer>1099</integer> + <integer>1098</integer> </dict> <dict> <key>CF$UID</key> @@ -496,23 +488,23 @@ </dict> <dict> <key>CF$UID</key> - <integer>1104</integer> + <integer>1103</integer> </dict> <dict> <key>CF$UID</key> - <integer>1107</integer> + <integer>1105</integer> </dict> <dict> <key>CF$UID</key> - <integer>1110</integer> + <integer>1108</integer> </dict> <dict> <key>CF$UID</key> - <integer>1113</integer> + <integer>1111</integer> </dict> <dict> <key>CF$UID</key> - <integer>1115</integer> + <integer>1114</integer> </dict> <dict> <key>CF$UID</key> @@ -520,19 +512,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>1118</integer> + <integer>1119</integer> </dict> <dict> <key>CF$UID</key> - <integer>1119</integer> + <integer>1121</integer> </dict> <dict> <key>CF$UID</key> - <integer>1120</integer> + <integer>1122</integer> </dict> <dict> <key>CF$UID</key> - <integer>1122</integer> + <integer>1123</integer> </dict> <dict> <key>CF$UID</key> @@ -548,27 +540,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>1131</integer> + <integer>1130</integer> </dict> <dict> <key>CF$UID</key> - <integer>1134</integer> + <integer>1132</integer> </dict> <dict> <key>CF$UID</key> - <integer>1137</integer> + <integer>1135</integer> </dict> <dict> <key>CF$UID</key> - <integer>1140</integer> + <integer>1138</integer> </dict> <dict> <key>CF$UID</key> - <integer>1144</integer> + <integer>1141</integer> </dict> <dict> <key>CF$UID</key> - <integer>1146</integer> + <integer>1144</integer> </dict> <dict> <key>CF$UID</key> @@ -580,11 +572,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>1153</integer> + <integer>1152</integer> </dict> <dict> <key>CF$UID</key> - <integer>1155</integer> + <integer>1154</integer> </dict> <dict> <key>CF$UID</key> @@ -616,15 +608,15 @@ </dict> <dict> <key>CF$UID</key> - <integer>1172</integer> + <integer>1171</integer> </dict> <dict> <key>CF$UID</key> - <integer>1175</integer> + <integer>1173</integer> </dict> <dict> <key>CF$UID</key> - <integer>1177</integer> + <integer>1176</integer> </dict> <dict> <key>CF$UID</key> @@ -636,8 +628,20 @@ </dict> <dict> <key>CF$UID</key> + <integer>1183</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>1185</integer> </dict> + <dict> + <key>CF$UID</key> + <integer>1188</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>1191</integer> + </dict> </array> </dict> <dict> @@ -697,28 +701,23 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>162</integer> + <integer>127</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>161</integer> + <integer>205</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>48</integer> + <integer>0</integer> </dict> <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>132</integer> </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>48</integer> - </dict> </dict> <string>{{192, 167}, {105, 18}}</string> <dict> @@ -1137,7 +1136,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>826</integer> + <integer>830</integer> </dict> <key>NSSource</key> <dict> @@ -1149,22 +1148,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>825</integer> + <integer>829</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>824</integer> + <integer>828</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>823</integer> + <integer>827</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>822</integer> + <integer>826</integer> </dict> <key>NSViewClass</key> <dict> @@ -1224,12 +1223,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>162</integer> + <integer>127</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>821</integer> + <integer>825</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1246,7 +1245,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>104</integer> </dict> <key>NS.objects</key> <array> @@ -1256,11 +1255,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>783</integer> + <integer>787</integer> </dict> <dict> <key>CF$UID</key> - <integer>816</integer> + <integer>820</integer> </dict> </array> </dict> @@ -1268,7 +1267,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>782</integer> + <integer>786</integer> </dict> <key>NSAllowTruncatedLabels</key> <true/> @@ -1282,7 +1281,7 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>163</integer> + <integer>128</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1292,7 +1291,7 @@ <key>NSSelectedTabViewItem</key> <dict> <key>CF$UID</key> - <integer>165</integer> + <integer>419</integer> </dict> <key>NSSubviews</key> <dict> @@ -1307,7 +1306,7 @@ <key>NSTabViewItems</key> <dict> <key>CF$UID</key> - <integer>164</integer> + <integer>129</integer> </dict> <key>NSTvFlags</key> <integer>4</integer> @@ -1316,13 +1315,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>104</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>11</integer> + <integer>50</integer> </dict> </array> </dict> @@ -1332,22 +1331,1194 @@ <key>CF$UID</key> <integer>127</integer> </dict> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>126</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>48</integer> + </dict> + <key>NSSubviews</key> + <dict> + <key>CF$UID</key> + <integer>51</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>48</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>51</integer> + <integer>52</integer> </dict> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>56</integer> </dict> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>60</integer> </dict> <dict> <key>CF$UID</key> + <integer>118</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>122</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>23</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>54</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>53</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{18, 245}, {145, 18}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>18</integer> + </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>55</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>52</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Competition mode</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>23</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>58</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>57</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{18, 267}, {145, 18}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>18</integer> + </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>59</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>56</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Compress data</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>117</integer> + </dict> + <key>NSBackgroundColor</key> + <dict> + <key>CF$UID</key> + <integer>111</integer> + </dict> + <key>NSCellBackgroundColor</key> + <dict> + <key>CF$UID</key> + <integer>116</integer> + </dict> + <key>NSCellClass</key> + <dict> + <key>CF$UID</key> + <integer>107</integer> + </dict> + <key>NSCellSize</key> + <dict> + <key>CF$UID</key> + <integer>105</integer> + </dict> + <key>NSCells</key> + <dict> + <key>CF$UID</key> + <integer>62</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFont</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>61</integer> + </dict> + <key>NSIntercellSpacing</key> + <dict> + <key>CF$UID</key> + <integer>106</integer> + </dict> + <key>NSMatrixFlags</key> + <integer>67633152</integer> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSNumCols</key> + <integer>1</integer> + <key>NSNumRows</key> + <integer>1</integer> + <key>NSProtoCell</key> + <dict> + <key>CF$UID</key> + <integer>108</integer> + </dict> + <key>NSSelectedCol</key> + <integer>-1</integer> + <key>NSSelectedRow</key> + <integer>-1</integer> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{20, 217}, {256, 22}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>63</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>103</integer> + </dict> + <key>NSCellFlags</key> + <integer>343014977</integer> + <key>NSCellFlags2</key> + <integer>-1941961728</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>64</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>60</integer> + </dict> + <key>NSFormatter</key> + <dict> + <key>CF$UID</key> + <integer>65</integer> + </dict> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSTitleCell</key> + <dict> + <key>CF$UID</key> + <integer>100</integer> + </dict> + <key>NSTitleWidth</key> + <real>121</real> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>45</integer> + </dict> + <key>NS.string</key> + <string></string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>99</integer> + </dict> + <key>NS.allowsfloats</key> + <true/> + <key>NS.attributes</key> + <dict> + <key>CF$UID</key> + <integer>66</integer> + </dict> + <key>NS.decimal</key> + <dict> + <key>CF$UID</key> + <integer>90</integer> + </dict> + <key>NS.hasthousands</key> + <false/> + <key>NS.localized</key> + <false/> + <key>NS.max</key> + <dict> + <key>CF$UID</key> + <integer>98</integer> + </dict> + <key>NS.min</key> + <dict> + <key>CF$UID</key> + <integer>79</integer> + </dict> + <key>NS.nan</key> + <dict> + <key>CF$UID</key> + <integer>95</integer> + </dict> + <key>NS.negativeattrs</key> + <dict> + <key>CF$UID</key> + <integer>0</integer> + </dict> + <key>NS.negativeformat</key> + <dict> + <key>CF$UID</key> + <integer>93</integer> + </dict> + <key>NS.nil</key> + <dict> + <key>CF$UID</key> + <integer>86</integer> + </dict> + <key>NS.positiveattrs</key> + <dict> + <key>CF$UID</key> + <integer>0</integer> + </dict> + <key>NS.positiveformat</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <key>NS.rounding</key> + <dict> + <key>CF$UID</key> + <integer>0</integer> + </dict> + <key>NS.thousand</key> + <dict> + <key>CF$UID</key> + <integer>94</integer> + </dict> + <key>NS.zero</key> + <dict> + <key>CF$UID</key> + <integer>82</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>97</integer> + </dict> + <key>NS.keys</key> + <array> + <dict> + <key>CF$UID</key> + <integer>67</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>68</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>69</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>70</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>71</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>72</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>73</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>74</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>75</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>76</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>77</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>78</integer> + </dict> + </array> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>79</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>82</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>86</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>87</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>89</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>90</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>91</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>92</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>93</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>94</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>95</integer> + </dict> + </array> + </dict> + <string>minimum</string> + <string>positiveFormat</string> + <string>attributedStringForZero</string> + <string>attributedStringForNil</string> + <string>locale</string> + <string>formatterBehavior</string> + <string>decimalSeparator</string> + <string>allowsFloats</string> + <string>usesGroupingSeparator</string> + <string>negativeFormat</string> + <string>groupingSeparator</string> + <string>attributedStringForNotANumber</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>80</integer> + </dict> + <key>NS.compact</key> + <false/> + <key>NS.exponent</key> + <integer>0</integer> + <key>NS.length</key> + <integer>0</integer> + <key>NS.mantissa</key> + <data> + AAAAAAAAAAAAAAAAAAAAAA== + </data> + <key>NS.mantissa.bo</key> + <integer>1</integer> + <key>NS.negative</key> + <false/> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSDecimalNumberPlaceholder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSDecimalNumberPlaceholder</string> + </dict> + <string>0</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>85</integer> + </dict> + <key>NSAttributes</key> + <dict> + <key>CF$UID</key> + <integer>83</integer> + </dict> + <key>NSString</key> + <dict> + <key>CF$UID</key> + <integer>81</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>84</integer> + </dict> + <key>NS.keys</key> + <array/> + <key>NS.objects</key> + <array/> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSDictionary</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSDictionary</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSAttributedString</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSAttributedString</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>85</integer> + </dict> + <key>NSString</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>88</integer> + </dict> + <key>NS.identifier</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSLocale</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSLocale</string> + </dict> + <integer>1000</integer> + <string>.</string> + <true/> + <false/> + <string>-0</string> + <string>,</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>85</integer> + </dict> + <key>NSAttributes</key> + <dict> + <key>CF$UID</key> + <integer>83</integer> + </dict> + <key>NSString</key> + <dict> + <key>CF$UID</key> + <integer>96</integer> + </dict> + </dict> + <string>NaN</string> + <dict> + <key>$classes</key> + <array> + <string>NSMutableDictionary</string> + <string>NSDictionary</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMutableDictionary</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>80</integer> + </dict> + <key>NS.compact</key> + <false/> + <key>NS.exponent</key> + <integer>0</integer> + <key>NS.length</key> + <integer>0</integer> + <key>NS.mantissa</key> + <data> + AAAAAAAAAAAAAAAAAAAAAA== + </data> + <key>NS.mantissa.bo</key> + <integer>1</integer> + <key>NS.negative</key> + <true/> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSNumberFormatter</string> + <string>NSFormatter</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSNumberFormatter</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>102</integer> + </dict> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>67108864</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>101</integer> + </dict> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Competition code:</string> + <dict> + <key>$classes</key> + <array> + <string>NSCell</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSCell</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSFormCell</string> + <string>NSActionCell</string> + <string>NSCell</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSFormCell</string> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSMutableArray</string> + <string>NSArray</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSMutableArray</string> + </dict> + <string>{256, 22}</string> + <string>{1, 8}</string> + <string>NSActionCell</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>103</integer> + </dict> + <key>NSCellFlags</key> + <integer>343014976</integer> + <key>NSCellFlags2</key> + <integer>205521920</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + <key>NSTitleCell</key> + <dict> + <key>CF$UID</key> + <integer>109</integer> + </dict> + <key>NSTitleWidth</key> + <real>121</real> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>102</integer> + </dict> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>67108864</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>110</integer> + </dict> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Field:</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>115</integer> + </dict> + <key>NSCatalogName</key> + <dict> + <key>CF$UID</key> + <integer>112</integer> + </dict> + <key>NSColor</key> + <dict> + <key>CF$UID</key> + <integer>114</integer> + </dict> + <key>NSColorName</key> + <dict> + <key>CF$UID</key> + <integer>113</integer> + </dict> + <key>NSColorSpace</key> + <integer>6</integer> + </dict> + <string>System</string> + <string>controlColor</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>115</integer> + </dict> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MC42NjY2NjY2OQA= + </data> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSColor</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSColor</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>115</integer> + </dict> + <key>NSColorSpace</key> + <integer>3</integer> + <key>NSWhite</key> + <data> + MQA= + </data> + </dict> + <dict> + <key>$classes</key> + <array> + <string>NSForm</string> + <string>NSMatrix</string> + <string>%NSMatrix</string> + <string>NSControl</string> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSForm</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>23</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>120</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>119</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{18, 193}, {175, 18}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>18</integer> + </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>121</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>118</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Always embed snapshot</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>23</integer> + </dict> + <key>NSCell</key> + <dict> + <key>CF$UID</key> + <integer>124</integer> + </dict> + <key>NSEnabled</key> + <true/> + <key>NSFrame</key> + <dict> + <key>CF$UID</key> + <integer>123</integer> + </dict> + <key>NSNextResponder</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSSuperview</key> + <dict> + <key>CF$UID</key> + <integer>50</integer> + </dict> + <key>NSvFlags</key> + <integer>256</integer> + </dict> + <string>{{18, 287}, {137, 18}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>22</integer> + </dict> + <key>NSAlternateContents</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSAlternateImage</key> + <dict> + <key>CF$UID</key> + <integer>18</integer> + </dict> + <key>NSButtonFlags</key> + <integer>1211912703</integer> + <key>NSButtonFlags2</key> + <integer>2</integer> + <key>NSCellFlags</key> + <integer>67239424</integer> + <key>NSCellFlags2</key> + <integer>0</integer> + <key>NSContents</key> + <dict> + <key>CF$UID</key> + <integer>125</integer> + </dict> + <key>NSControlView</key> + <dict> + <key>CF$UID</key> + <integer>122</integer> + </dict> + <key>NSKeyEquivalent</key> + <dict> + <key>CF$UID</key> + <integer>21</integer> + </dict> + <key>NSPeriodicDelay</key> + <integer>200</integer> + <key>NSPeriodicInterval</key> + <integer>25</integer> + <key>NSSupport</key> + <dict> + <key>CF$UID</key> + <integer>15</integer> + </dict> + </dict> + <string>Create autosaves</string> + <string>{{10, 7}, {585, 323}}</string> + <dict> + <key>$classes</key> + <array> + <string>NSView</string> + <string>NSResponder</string> + <string>NSObject</string> + </array> + <key>$classname</key> + <string>NSView</string> + </dict> + <string>{{13, 62}, {605, 343}}</string> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>130</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>208</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>251</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>419</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>421</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>553</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>653</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>728</integer> + </dict> + </array> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>207</integer> + </dict> + <key>NSColor</key> + <dict> + <key>CF$UID</key> + <integer>111</integer> + </dict> + <key>NSIdentifier</key> + <dict> + <key>CF$UID</key> + <integer>131</integer> + </dict> + <key>NSLabel</key> + <dict> + <key>CF$UID</key> + <integer>206</integer> + </dict> + <key>NSTabView</key> + <dict> + <key>CF$UID</key> + <integer>48</integer> + </dict> + <key>NSView</key> + <dict> + <key>CF$UID</key> + <integer>11</integer> + </dict> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>45</integer> + </dict> + <key>NS.string</key> + <string>1</string> + </dict> + <dict> + <key>$class</key> + <dict> + <key>CF$UID</key> + <integer>104</integer> + </dict> + <key>NS.objects</key> + <array> + <dict> + <key>CF$UID</key> + <integer>133</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>137</integer> + </dict> + <dict> + <key>CF$UID</key> + <integer>141</integer> + </dict> + <dict> + <key>CF$UID</key> <integer>35</integer> </dict> <dict> @@ -1360,7 +2531,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>145</integer> </dict> <dict> <key>CF$UID</key> @@ -1368,27 +2539,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>149</integer> </dict> <dict> <key>CF$UID</key> - <integer>141</integer> + <integer>185</integer> </dict> <dict> <key>CF$UID</key> - <integer>145</integer> + <integer>189</integer> </dict> <dict> <key>CF$UID</key> - <integer>149</integer> + <integer>193</integer> </dict> <dict> <key>CF$UID</key> - <integer>153</integer> + <integer>197</integer> </dict> <dict> <key>CF$UID</key> - <integer>157</integer> + <integer>201</integer> </dict> </array> </dict> @@ -1401,14 +2572,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>135</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>134</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1451,12 +2622,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>136</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>51</integer> + <integer>133</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -1483,14 +2654,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>139</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>138</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1533,12 +2704,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>58</integer> + <integer>140</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>137</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -1565,14 +2736,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>143</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>142</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1615,12 +2786,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>144</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>141</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -1647,14 +2818,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>147</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>146</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1697,12 +2868,12 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>148</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>145</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -1724,32 +2895,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>140</integer> + <integer>117</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>134</integer> + <integer>111</integer> </dict> <key>NSCellBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>139</integer> + <integer>116</integer> </dict> <key>NSCellClass</key> <dict> <key>CF$UID</key> - <integer>130</integer> + <integer>182</integer> </dict> <key>NSCellSize</key> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>180</integer> </dict> <key>NSCells</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>151</integer> </dict> <key>NSEnabled</key> <true/> @@ -1761,12 +2932,12 @@ <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>150</integer> </dict> <key>NSIntercellSpacing</key> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>181</integer> </dict> <key>NSMatrixFlags</key> <integer>67633152</integer> @@ -1782,7 +2953,7 @@ <key>NSProtoCell</key> <dict> <key>CF$UID</key> - <integer>131</integer> + <integer>183</integer> </dict> <key>NSSelectedCol</key> <integer>-1</integer> @@ -1801,17 +2972,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>104</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>152</integer> </dict> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>166</integer> </dict> </array> </dict> @@ -1819,7 +2990,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>110</integer> + <integer>103</integer> </dict> <key>NSCellFlags</key> <integer>343014977</integer> @@ -1833,12 +3004,12 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>149</integer> </dict> <key>NSFormatter</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>153</integer> </dict> <key>NSSupport</key> <dict> @@ -1848,7 +3019,7 @@ <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>164</integer> </dict> <key>NSTitleWidth</key> <real>161</real> @@ -1857,19 +3028,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>99</integer> </dict> <key>NS.allowsfloats</key> <true/> <key>NS.attributes</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>154</integer> </dict> <key>NS.decimal</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>90</integer> </dict> <key>NS.hasthousands</key> <false/> @@ -1878,17 +3049,17 @@ <key>NS.max</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>98</integer> </dict> <key>NS.min</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>155</integer> </dict> <key>NS.nan</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>162</integer> </dict> <key>NS.negativeattrs</key> <dict> @@ -1898,12 +3069,12 @@ <key>NS.negativeformat</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>161</integer> </dict> <key>NS.nil</key> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>159</integer> </dict> <key>NS.positiveattrs</key> <dict> @@ -1913,7 +3084,7 @@ <key>NS.positiveformat</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>156</integer> </dict> <key>NS.rounding</key> <dict> @@ -1923,140 +3094,128 @@ <key>NS.thousand</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>94</integer> </dict> <key>NS.zero</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>157</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>97</integer> </dict> <key>NS.keys</key> <array> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>67</integer> </dict> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>68</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>69</integer> </dict> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>70</integer> </dict> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>71</integer> </dict> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>72</integer> </dict> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>73</integer> </dict> <dict> <key>CF$UID</key> - <integer>80</integer> + <integer>74</integer> </dict> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>75</integer> </dict> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>76</integer> </dict> <dict> <key>CF$UID</key> - <integer>83</integer> + <integer>77</integer> </dict> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>78</integer> </dict> </array> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>155</integer> </dict> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>156</integer> </dict> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>157</integer> </dict> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>159</integer> </dict> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>87</integer> </dict> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>160</integer> </dict> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>90</integer> </dict> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>91</integer> </dict> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>92</integer> </dict> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>161</integer> </dict> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>94</integer> </dict> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>162</integer> </dict> </array> </dict> - <string>minimum</string> - <string>positiveFormat</string> - <string>attributedStringForZero</string> - <string>attributedStringForNil</string> - <string>locale</string> - <string>formatterBehavior</string> - <string>decimalSeparator</string> - <string>allowsFloats</string> - <string>usesGroupingSeparator</string> - <string>negativeFormat</string> - <string>groupingSeparator</string> - <string>attributedStringForNotANumber</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>80</integer> </dict> <key>NS.compact</key> <true/> @@ -2073,31 +3232,22 @@ <key>NS.negative</key> <false/> </dict> - <dict> - <key>$classes</key> - <array> - <string>NSDecimalNumberPlaceholder</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSDecimalNumberPlaceholder</string> - </dict> <string>0%</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>85</integer> </dict> <key>NSAttributes</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>83</integer> </dict> <key>NSString</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>158</integer> </dict> </dict> <string>0%</string> @@ -2105,135 +3255,40 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>85</integer> </dict> - <key>NS.keys</key> - <array/> - <key>NS.objects</key> - <array/> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSDictionary</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSDictionary</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSAttributedString</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSAttributedString</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>92</integer> - </dict> <key>NSString</key> <dict> <key>CF$UID</key> <integer>21</integer> </dict> </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>95</integer> - </dict> - <key>NS.identifier</key> - <dict> - <key>CF$UID</key> - <integer>21</integer> - </dict> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSLocale</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSLocale</string> - </dict> <integer>1000</integer> - <string>.</string> - <true/> - <false/> <string>-0%</string> - <string>,</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>85</integer> </dict> <key>NSAttributes</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>83</integer> </dict> <key>NSString</key> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>163</integer> </dict> </dict> <string>NaN</string> <dict> - <key>$classes</key> - <array> - <string>NSMutableDictionary</string> - <string>NSDictionary</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSMutableDictionary</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>102</integer> </dict> - <key>NS.compact</key> - <false/> - <key>NS.exponent</key> - <integer>0</integer> - <key>NS.length</key> - <integer>0</integer> - <key>NS.mantissa</key> - <data> - AAAAAAAAAAAAAAAAAAAAAA== - </data> - <key>NS.mantissa.bo</key> - <integer>1</integer> - <key>NS.negative</key> - <true/> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSNumberFormatter</string> - <string>NSFormatter</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSNumberFormatter</string> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>109</integer> - </dict> <key>NSCellFlags</key> <integer>67239424</integer> <key>NSCellFlags2</key> @@ -2241,7 +3296,7 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>165</integer> </dict> <key>NSSupport</key> <dict> @@ -2251,30 +3306,10 @@ </dict> <string>Emulation speed:</string> <dict> - <key>$classes</key> - <array> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSCell</string> - </dict> - <dict> - <key>$classes</key> - <array> - <string>NSFormCell</string> - <string>NSActionCell</string> - <string>NSCell</string> - <string>NSObject</string> - </array> - <key>$classname</key> - <string>NSFormCell</string> - </dict> - <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>110</integer> + <integer>103</integer> </dict> <key>NSCellFlags</key> <integer>343014977</integer> @@ -2283,17 +3318,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>167</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>149</integer> </dict> <key>NSFormatter</key> <dict> <key>CF$UID</key> - <integer>113</integer> + <integer>168</integer> </dict> <key>NSSupport</key> <dict> @@ -2305,7 +3340,7 @@ <key>NSTitleCell</key> <dict> <key>CF$UID</key> - <integer>125</integer> + <integer>178</integer> </dict> <key>NSTitleWidth</key> <real>161</real> @@ -2323,19 +3358,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>99</integer> </dict> <key>NS.allowsfloats</key> <true/> <key>NS.attributes</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>169</integer> </dict> <key>NS.decimal</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>90</integer> </dict> <key>NS.hasthousands</key> <false/> @@ -2344,17 +3379,17 @@ <key>NS.max</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>173</integer> </dict> <key>NS.min</key> <dict> <key>CF$UID</key> - <integer>116</integer> + <integer>171</integer> </dict> <key>NS.nan</key> <dict> <key>CF$UID</key> - <integer>123</integer> + <integer>176</integer> </dict> <key>NS.negativeattrs</key> <dict> @@ -2364,12 +3399,12 @@ <key>NS.negativeformat</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>93</integer> </dict> <key>NS.nil</key> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>172</integer> </dict> <key>NS.positiveattrs</key> <dict> @@ -2379,7 +3414,7 @@ <key>NS.positiveformat</key> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>81</integer> </dict> <key>NS.rounding</key> <dict> @@ -2389,128 +3424,128 @@ <key>NS.thousand</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>94</integer> </dict> <key>NS.zero</key> <dict> <key>CF$UID</key> - <integer>121</integer> + <integer>174</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>97</integer> </dict> <key>NS.keys</key> <array> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>67</integer> </dict> <dict> <key>CF$UID</key> - <integer>76</integer> + <i... [truncated message content] |
From: <fr...@us...> - 2008-11-03 12:27:42
|
Revision: 539 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=539&view=rev Author: fredm Date: 2008-11-03 12:27:34 +0000 (Mon, 03 Nov 2008) Log Message: ----------- Merge up to vendor revision 3804. Revision Links: -------------- http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=3804&view=rev Modified Paths: -------------- trunk/FuseGenerator/libspectrum.h trunk/FuseImporter/libspectrum.h trunk/fuse/ChangeLog trunk/fuse/README trunk/fuse/compat/unix/file.c trunk/fuse/configure.in trunk/fuse/disk/fdd.c trunk/fuse/disk/upd_fdc.c trunk/fuse/fuse.c trunk/fuse/fusepb/English.lproj/InfoPlist.strings trunk/fuse/fusepb/Info-Fuse.plist trunk/fuse/fusepb/models/Emulator.m trunk/fuse/hacking/ChangeLog trunk/fuse/man/fuse.1 trunk/fuse/menu.c trunk/fuse/rzx.c trunk/fuse/settings.dat trunk/fuse/ui/options.dat trunk/fuse/ui/win32/win32internals.h trunk/fuse/ui/win32/win32joystick.c trunk/fuse/ui/win32/win32joystick.h trunk/fuse/ui/win32/win32ui.c trunk/fuse/z80/tests/README trunk/libspectrum/libspectrum/ChangeLog trunk/libspectrum/libspectrum/README trunk/libspectrum/libspectrum/doc/libspectrum.txt trunk/libspectrum/libspectrum/hacking/ChangeLog trunk/libspectrum/libspectrum/libspectrum.h.in trunk/libspectrum/libspectrum/rzx.c trunk/libspectrum/libspectrum/sna.c trunk/libspectrum/libspectrum/tap.c trunk/libspectrum/libspectrum/tape_block.c trunk/libspectrum/libspectrum/test/test.c trunk/libspectrum/libspectrum/tzx_read.c trunk/libspectrum/libspectrum/tzx_write.c trunk/libspectrum/libspectrum/warajevo_read.c trunk/libspectrum/libspectrum/z80.c trunk/libspectrum/libspectrum.h Added Paths: ----------- trunk/libspectrum/libspectrum/test/empty.z80 Property Changed: ---------------- trunk/fuse/ trunk/libspectrum/libspectrum/ Modified: trunk/FuseGenerator/libspectrum.h =================================================================== --- trunk/FuseGenerator/libspectrum.h 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/FuseGenerator/libspectrum.h 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in 3771 2008-09-11 11:23:17Z pak21 $ + $Id: libspectrum.h.in 3792 2008-10-27 20:49:34Z specu $ 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 @@ -785,24 +785,6 @@ libspectrum_byte WIN32_DLL * libspectrum_snap_divide_ram( libspectrum_snap *snap, int idx ); void WIN32_DLL libspectrum_snap_set_divide_ram( libspectrum_snap *snap, int idx, libspectrum_byte* divide_ram ); -/* DEPRECATED: use libspectrum_snap_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_sna_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, size_t buffer_length ); - -/* DEPRECATED: use libspectrum_snap_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_z80_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, size_t buffer_length ); - -/* DEPRECATED: use libspectrum_snap_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_z80_write( libspectrum_byte **buffer, size_t *length, - libspectrum_snap *snap ); - /* * Tape handling routines */ @@ -900,7 +882,7 @@ int WIN32_DLL libspectrum_tape_block_metadata( libspectrum_tape_block *block ); -libspectrum_dword +libspectrum_dword WIN32_DLL libspectrum_tape_block_length( libspectrum_tape_block *block ); /* Accessor functions */ @@ -1028,42 +1010,6 @@ libspectrum_tape_block *block, size_t position ); -/*** Routines for .tap format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tap_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ); - -/* DEPRECATED: use libspectrum_tape_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tap_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ); - -/*** Routines for .tzx format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tzx_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ); - -/* DEPRECATED: use libspectrum_tape_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tzx_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ); - -/*** Routines for Warajevo .tap format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_warajevo_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - /*** Routines for iterating through a tape ***/ libspectrum_tape_block WIN32_DLL * @@ -1113,7 +1059,7 @@ libspectrum_error WIN32_DLL libspectrum_rzx_stop_input( libspectrum_rzx *rzx ); libspectrum_error WIN32_DLL -libspectrum_rzx_add_snap( libspectrum_rzx *rzx, libspectrum_snap *snap ); +libspectrum_rzx_add_snap( libspectrum_rzx *rzx, libspectrum_snap *snap, int automatic ); libspectrum_error WIN32_DLL libspectrum_rzx_rollback( libspectrum_rzx *rzx, libspectrum_snap **snap ); libspectrum_error WIN32_DLL @@ -1207,6 +1153,8 @@ libspectrum_rzx_iterator it ); libspectrum_snap* WIN32_DLL libspectrum_rzx_iterator_get_snap( libspectrum_rzx_iterator it ); +int WIN32_DLL +libspectrum_rzx_iterator_snap_is_automatic( libspectrum_rzx_iterator it ); /* * Microdrive image handling routines Modified: trunk/FuseImporter/libspectrum.h =================================================================== --- trunk/FuseImporter/libspectrum.h 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/FuseImporter/libspectrum.h 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* libspectrum.h: the library for dealing with ZX Spectrum emulator files Copyright (c) 2001-2007 Philip Kendall, Darren Salt, Fredrick Meunier - $Id: libspectrum.h.in 3771 2008-09-11 11:23:17Z pak21 $ + $Id: libspectrum.h.in 3792 2008-10-27 20:49:34Z specu $ 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 @@ -785,24 +785,6 @@ libspectrum_byte WIN32_DLL * libspectrum_snap_divide_ram( libspectrum_snap *snap, int idx ); void WIN32_DLL libspectrum_snap_set_divide_ram( libspectrum_snap *snap, int idx, libspectrum_byte* divide_ram ); -/* DEPRECATED: use libspectrum_snap_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_sna_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, size_t buffer_length ); - -/* DEPRECATED: use libspectrum_snap_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_z80_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, size_t buffer_length ); - -/* DEPRECATED: use libspectrum_snap_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_z80_write( libspectrum_byte **buffer, size_t *length, - libspectrum_snap *snap ); - /* * Tape handling routines */ @@ -900,7 +882,7 @@ int WIN32_DLL libspectrum_tape_block_metadata( libspectrum_tape_block *block ); -libspectrum_dword +libspectrum_dword WIN32_DLL libspectrum_tape_block_length( libspectrum_tape_block *block ); /* Accessor functions */ @@ -1028,42 +1010,6 @@ libspectrum_tape_block *block, size_t position ); -/*** Routines for .tap format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tap_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ); - -/* DEPRECATED: use libspectrum_tape_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tap_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ); - -/*** Routines for .tzx format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tzx_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ); - -/* DEPRECATED: use libspectrum_tape_write() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_tzx_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ); - -/*** Routines for Warajevo .tap format files ***/ - -/* DEPRECATED: use libspectrum_tape_read() instead */ -DEPRECATED -libspectrum_error WIN32_DLL -libspectrum_warajevo_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, size_t length ); - /*** Routines for iterating through a tape ***/ libspectrum_tape_block WIN32_DLL * @@ -1113,7 +1059,7 @@ libspectrum_error WIN32_DLL libspectrum_rzx_stop_input( libspectrum_rzx *rzx ); libspectrum_error WIN32_DLL -libspectrum_rzx_add_snap( libspectrum_rzx *rzx, libspectrum_snap *snap ); +libspectrum_rzx_add_snap( libspectrum_rzx *rzx, libspectrum_snap *snap, int automatic ); libspectrum_error WIN32_DLL libspectrum_rzx_rollback( libspectrum_rzx *rzx, libspectrum_snap **snap ); libspectrum_error WIN32_DLL @@ -1207,6 +1153,8 @@ libspectrum_rzx_iterator it ); libspectrum_snap* WIN32_DLL libspectrum_rzx_iterator_get_snap( libspectrum_rzx_iterator it ); +int WIN32_DLL +libspectrum_rzx_iterator_snap_is_automatic( libspectrum_rzx_iterator it ); /* * Microdrive image handling routines Property changes on: trunk/fuse ___________________________________________________________________ Modified: svn:mergeinfo - /vendor/fuse-emulator/current/fuse:530-533 + /vendor/fuse-emulator/current/fuse:530-538 Modified: trunk/fuse/ChangeLog =================================================================== --- trunk/fuse/ChangeLog 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ChangeLog 2008-11-03 12:27:34 UTC (rev 539) @@ -1,3 +1,54 @@ +2008-11-?? Philip Kendall <phi...@sh...> + + * Fuse 0.10.0 released + + * New upd765 FDC emulation; all known +3 DSK images now work (Gergely + Szasz; thanks to Simon Owen for expert technical advice). + * Loading acceleration (Philip Kendall). + * Automatic saves while using RZX recording (Philip Kendall). + * Many improvements to Win32 UI (mostly Marek Januszewski). + * Improved widget UI, with look and feel borrowed from that in FuseX + (Fredrick Meunier; thanks, crabfists). + + * Emulation core improvements: + * New --late-timings option to emulate machines with 1 tstate + later timings (Philip Kendall) + * Reading from the 128K's memory control port causes that byte to + be written back to the port (Philip Kendall; thanks, Marat + Fayzullin). + * NMI causes Z80 to unHALT (Philip Kendall; thanks, Simon Owen). + * Emulate C, H and P/V flags on repeated IO instructions (Philip + Kendall). + * Fix crash when using Interface 1 on unoptimised Fuse builds + (Philip Kendall). + + * Debugger improvements: + * Debugger events to allow the debugger to stop when various + Spectrum-level events happen (Philip Kendall). + * Allow debugger commands to be run when a breakpoint is hit. + No UI for this at present, but can be set from the command line. + (Philip Kendall). + * Command to exit emulator (Philip Kendall). + * Make time breakpoints work properly when more than one is present + (Philip Kendall). + + * Miscellaneous improvements: + * Loader detection now works with the Digital Integration loader + (Philip Kendall). + * New HQ2X and HQ3x scalers (Gergely Szasz). + * Revert Pentagon 128 to being the "base" machine without extra + ROMs (Fredrick Meunier). + * Updated +3e ROMs (Fredrick Meunier; thanks, Garry Lancaster). + * Allow DivIDE, custom ROMs, Kempston mouse status and Simple 8-bit + IDE interface to be saved in snapshots (Fredrick Meunier). + * Better (but probably not perfect) TS2068 contention (Philip + Kendall). + * OpenSolaris compilation fixes (Fredrick Meunier; thanks, Andrew + Owen). + * C89 compatibility fixes (Fredrick Meunier; thanks, sweetlilmr). + * Remove GTK+'s build explicit dependency on Xlib (Philip Kendall). + * Minor AmigaOS improvements (Chris Young). + 2008-01-05 Philip Kendall <phi...@sh...> * Fuse 0.9.0 released @@ -878,4 +929,4 @@ * Version 0.1.0 released. -$Id: ChangeLog 3482 2008-01-07 12:32:26Z pak21 $ +$Id: ChangeLog 3787 2008-10-22 19:10:25Z pak21 $ Modified: trunk/fuse/README =================================================================== --- trunk/fuse/README 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/README 2008-11-03 12:27:34 UTC (rev 539) @@ -5,8 +5,9 @@ unsurprisingly, an emulator of the ZX Spectrum (a popular 1980s home computer, especially in the UK) for Unix. However, it has now also been ported to Mac OS X, which may or may not count as a Unix variant -depending on your advocacy position and emulates some of the -better-known ZX Spectrum clones as well. +depending on your advocacy position and Windows which definitely isn't +a Unix variant. Fuse also emulates some of the better-known ZX Spectrum +clones as well. What Fuse does have: @@ -15,7 +16,7 @@ Pentagon 128, "512" (Pentagon 128 with extra memory) and 1024 and Scorpion ZS 256 emulation. * Runs at true Speccy speed on any computer you're likely to try it on. -* Support for loading from .tzx files. +* Support for loading from .tzx files, including accelerated loading. * Sound (on systems supporting the Open Sound System, SDL, or OpenBSD/ Solaris's /dev/audio). * Emulation of most of the common joysticks used on the Spectrum @@ -151,4 +152,4 @@ Philip Kendall <phi...@sh...> 5 January 2008 -$Id: README 3718 2008-07-19 12:29:41Z pak21 $ +$Id: README 3801 2008-10-31 16:22:13Z pak21 $ Modified: trunk/fuse/compat/unix/file.c =================================================================== --- trunk/fuse/compat/unix/file.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/compat/unix/file.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* file.c: File-related compatibility routines Copyright (c) 2008 Philip Kendall - $Id: file.c 3722 2008-07-22 03:12:28Z specu $ + $Id: file.c 3776 2008-10-06 00:49:45Z fredm $ 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 @@ -48,7 +48,7 @@ compat_file_open( const char *path, int write ) { int flags = write ? O_WRONLY | O_CREAT | O_BINARY : O_RDONLY | O_BINARY; - return open( path, flags ); + return open( path, flags, 0666 ); } off_t Modified: trunk/fuse/configure.in =================================================================== --- trunk/fuse/configure.in 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/configure.in 2008-11-03 12:27:34 UTC (rev 539) @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $Id: configure.in 3756 2008-08-24 13:41:23Z specu $ +dnl $Id: configure.in 3796 2008-10-28 20:44:45Z specu $ dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -381,7 +381,7 @@ dnl Check if libsamplerate is available AC_MSG_CHECKING(whether libsamplerate support requested) AC_ARG_WITH(libsamplerate, - [ --without-libsamplerate use libsamplerate], + [ --without-libsamplerate don't use libsamplerate], if test "$withval" = no; then libsamplerate=no; else libsamplerate=yes; fi, libsamplerate=yes) AC_MSG_RESULT($libsamplerate) Modified: trunk/fuse/disk/fdd.c =================================================================== --- trunk/fuse/disk/fdd.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/disk/fdd.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* fdd.c: Routines for emulating floppy disk drives Copyright (c) 2007 Gergely Szasz - $Id: fdd.c 3681 2008-06-16 09:40:29Z pak21 $ + $Id: fdd.c 3802 2008-11-02 17:06:41Z pak21 $ 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 @@ -165,7 +165,7 @@ machine_current->timings.processor_speed / 10, motor_event, d ); } else { - event_add_with_data( tstates + 2 * /* 1 revolution */ + event_add_with_data( tstates + 3 * /* 1.5 revolution */ machine_current->timings.processor_speed / 10, motor_event, d ); } Modified: trunk/fuse/disk/upd_fdc.c =================================================================== --- trunk/fuse/disk/upd_fdc.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/disk/upd_fdc.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* upd_fdc.c: NEC floppy disk controller emulation Copyright (c) 2007 Gergely Szasz - $Id: upd_fdc.c 3723 2008-07-22 07:49:06Z pak21 $ + $Id: upd_fdc.c 3802 2008-11-02 17:06:41Z pak21 $ 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 @@ -187,7 +187,7 @@ UPD_FDC_ST1_NO_DATA ); f->id_mark = UPD_FDC_AM_NONE; i = f->rev; - while( i == f->rev ) { + while( i == f->rev && d->fdd.ready ) { fdd_read_write_data( &d->fdd, FDD_READ ); if( d->fdd.index ) f->rev--; crc_preset( f ); if( f->mf ) { /* double density (MFM) */ @@ -242,6 +242,7 @@ return 0; /* found and OK */ } } + if(!d->fdd.ready) f->rev = 0; f->status_register[1] |= UPD_FDC_ST1_MISSING_AM | UPD_FDC_ST1_NO_DATA; /*FIXME _NO_DATA? */ return 2; /* not found */ } Modified: trunk/fuse/fuse.c =================================================================== --- trunk/fuse/fuse.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/fuse.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* fuse.c: The Free Unix Spectrum Emulator Copyright (c) 1999-2008 Philip Kendall - $Id: fuse.c 3718 2008-07-19 12:29:41Z pak21 $ + $Id: fuse.c 3797 2008-10-29 12:04:34Z fredm $ 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 Modified: trunk/fuse/fusepb/English.lproj/InfoPlist.strings =================================================================== (Binary files differ) Modified: trunk/fuse/fusepb/Info-Fuse.plist =================================================================== --- trunk/fuse/fusepb/Info-Fuse.plist 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/fusepb/Info-Fuse.plist 2008-11-03 12:27:34 UTC (rev 539) @@ -480,7 +480,7 @@ <key>CFBundleSignature</key> <string>FUSE</string> <key>CFBundleVersion</key> - <string>3775</string> + <string>3804</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> Modified: trunk/fuse/fusepb/models/Emulator.m =================================================================== --- trunk/fuse/fusepb/models/Emulator.m 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/fusepb/models/Emulator.m 2008-11-03 12:27:34 UTC (rev 539) @@ -433,7 +433,7 @@ error = snapshot_copy_to( snap ); if( error ) { libspectrum_snap_free( snap ); return; } - libspectrum_rzx_add_snap( rzx, snap ); + libspectrum_rzx_add_snap( rzx, snap, 0 ); libspectrum_rzx_start_input( rzx, tstates ); } Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/hacking/ChangeLog 2008-11-03 12:27:34 UTC (rev 539) @@ -2895,3 +2895,29 @@ rollback.rc,select_template.rc}: Win32: Changed style for all dialogs to make those dialogs show on the taskbar, converted select_template.rc from DOS to UNIX (Marek). +20081006 compat/unix/file.c: make sure mode is specified when opening a file + for writing (fixes bug #2146742) (thanks, Cygnus) (Fred). +20081021 z80/tests/README: small documentation update (patch #2183257) + (Matthew Westcott). +20081021 ChangeLog: update for 0.10.0 release. +20081022 menu.c,rzx.c,settings.dat,ui/options.dat: support for autosaves + when using RZX recording. +20081024 man/fuse.1: update. Still TODO: debugger updates. +20081024 man/fuse.1: debugger updates. +20081024 man/fuse.1: minor update for disk formats and compressed disk images + (Fred). +20081028 configure.in: Fixed a typo in the configure script + (was '--without-libsamplerate use libsamplerate') (Marek). +20081029 fuse.c: move up settings_end to happen just after printer_end for + similar reasons - on OS X settings_end refers to machine and other + entries, so must be complete before deallocating the machine arrays + (Fred). +20081031 README: small update for 0.10.0. +20081102 disk/{fdd.c,upd_fdc.c}: stop hang if asked for index hole when disk + motor is off, and change spindown time so that The Running Man disk + works (bug #2212424) (Gergely Szasz; thanks, Mark Woodmass). +20081102 ui/win32/win32ui.c: Win32: Made ui_error_specific function work + similarly to the gtk ui equivalent (Marek). +20081102 ui/win32/{win32ui.c,win32internals.h,win32joystick.[ch}: Win32: + Implemented joystick handling using mmsystem API (and tested using PPJoy + joystick emulator, hope it works with real hardware) (Marek). Modified: trunk/fuse/man/fuse.1 =================================================================== --- trunk/fuse/man/fuse.1 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/man/fuse.1 2008-11-03 12:27:34 UTC (rev 539) @@ -80,6 +80,17 @@ .\" the options list is in alphabetical order by long option name (or .\" short option name if none). .\" +.I \-\-accelerate\-loader +.RS +Specify whether Fuse should attempt to accelerate tape loaders by "short +circuiting" the loading loop. This will in general speed up loading, but +may cause some loaders to fail. (Enabled by default, but you can use +.RI ` \-\-no\-accelerate\-loader ' +to disable). The same as the General Options dialog's +.I "Accelerate loaders" +option. +.RE +.PP .I \-\-aspect\-hint .RS Specify whether the GTK+ and Xlib user interfaces should `hint' to the @@ -115,6 +126,14 @@ option. .RE .PP +.I \-\-beeper\-stereo +.RS +Specify whether fake stereo should be added to the emulation of the +Spectrum beeper. Same as the Sound Options dialog's +.I "Beeper pseudo-stereo" +option. +.RE +.PP .I \-\-beta128 .RS Emulate a Beta 128 interface. Same as the Peripherals Options dialog's @@ -122,12 +141,9 @@ option. .RE .PP -.I \-\-beeper\-stereo .RS -Specify whether fake stereo should be added to the emulation of the -Spectrum beeper. Same as the Sound Options dialog's -.I "Beeper pseudo-stereo" -option. +.I \-\-betadisk +Specify a Betadisk image to load. .RE .PP .I \-\-bw\-tv @@ -178,6 +194,15 @@ option. .RE .PP +.I "\-\-debugger\-command string" +.RS +Specify a debugger command to be run before emulator startup. This can +be used to set breakpoints or the like. Currently, this is the only +method to input multi-line debugger commands. (See the +.B "MONITOR/DEBUGGER" +section for more information). +.RE +.PP .I "\-\-detect\-loader" .RS Specify whether Fuse should attempt to detect when the tape is being @@ -189,12 +214,42 @@ option. .RE .PP +.I \-\-divide +.RS +Emulate the DivIDE interface. The same as the Peripherals Options +dialog's +.I "DivIDE interface" +option. +.RE +.PP +.I "\-\-divide\-masterfile file" +.br +.I "\-\-divide\-slavefile file" +.RS +Specify an IDE image to be loaded into the DivIDE's emulated master +and slave drives respectively. +.RE +.PP +.I \-\-divide\-write\-protect +.RS +Specify that the emulated DivIDE's write protect jumper should be +considered set. The same as the Peripherals Options dialog's +.I "DivIDE write protect" +option. +.RE +.PP .I "\-\-dock file" .RS Insert the specified file into the emulated Timex 2068 variant dock; also select the TC2068 on startup if available. .RE .PP +.I "\-\-doublescan\-mode" +.RS +Specify the the framebuffer UI should attempt to use a double scan mode +(where each line is displayed twice). +.RE +.PP .I "\-\-embed\-snapshot" .RS Specify whether a snapshot should be embedded in an RZX file when @@ -291,7 +346,9 @@ .PP .I \-\-interface2 .RS -Emulate a Sinclair Interface II. Same as the Peripherals Options dialog's +Emulate a Sinclair Interface II. (Enabled by default, but you can use +.RI ` \-\-no\-interface2 ' +to disable). Same as the Peripherals Options dialog's .I "Interface II" option. .RE @@ -326,6 +383,16 @@ .RI ` /dev/js1 "'." .RE .PP +.I \-\-joystick-prompt +.RS +If this option is specified, Fuse Fuse will prompt you which form of +joystick emulation you wish to use when loading a snapshot. No prompt +will be issued if the configuration in the snapshot matches what you +are currently using. The same as the General Options dialog's +.I "Snap joystick prompt" +option. +.RE +.PP .I \-\-kempston .RS Emulate a Kempston joystick. Same as the Peripherals Options dialog's @@ -340,6 +407,16 @@ option. .RE .PP +.I \-\-late\-timings +.RS +It has been observed that some real Spectrums run such that the screen +is rendered one tstate later than on other real hardware. This option +specifies that Fuse should emulate such a machine. Same as the General +Options dialog's +.I "Late timings" +option. +.RE +.PP .I \-\-loading\-sound .RS Specify whether the sound made while tapes are loading should be @@ -576,6 +653,16 @@ options. .RE .PP +.I \-\-rzx-autosaves +.RS +Specify that, while recording an RZX file, Fuse should automatically add +a snapshot to the recording stream every 5 seconds. (Default to on, but +you can use +.RI ` \-\-no-rzx-autosaves ' +to disable). Same as the RZX Options dialog's "Create autosaves" option; +see there for more details. +.RE +.PP .I \-\-separation .RS Give stereo separation of the 128's AY sound channels. Same as the @@ -1453,7 +1540,15 @@ to connect to the joystick interface enabled in the snapshot unless it already matches your current configuration. .RE +.PP +.I "Late timings" +.RS +If selected, Fuse will cause all screen-related timings (for example, +when the screen is rendered and when memory contention occurs) to be +one tstate later than "normal", an effect which is present on some real +hardware. .RE +.RE .PP .I "Options, Sound..." .RS @@ -1677,6 +1772,20 @@ aborts). Note that any changed settings only apply to the currently-running Fuse. .PP +.I "Create autosaves" +.RS +If this option is selected, Fuse will add a snapshot into the recording +stream every 5 seconds while creating an RZX file, thus enabling the +rollback facilities to be used without having to explicitly add +snapshots into the stream. Older snapshots will be pruned from the +stream to keep the file size and number of snapshots down: each snapshot +up to 15 seconds will be kept, then one snapshot every 15 seconds until +one minute, then one snapshot every minute until 5 minutes, and then one +snapshot every 5 minutes. Note that this "pruning" applies only to +automatically inserted snapshots: snapshots manually inserted into the +stream will never be pruned. +.RE +.PP .I "Compress RZX data" .RS If this option is selected, and @@ -1960,11 +2069,11 @@ .RS Another Russian clone of the Spectrum. Some details can be found at -.IR "http://www.worldofspectrum.org/rusfaq/index.html" , like all the -Russian clones they they have built in 3.5" disk drives, accessed via -the Beta 128 disk interface and TR-DOS (the Technology Research Disk -Operating System). The most important distinction from the Pentagon -128k and similar machines is the display timing details. +.IR "http://www.worldofspectrum.org/rusfaq/index.html" , +like all the Russian clones they they have built in 3.5" disk drives, +accessed via the Beta 128 disk interface and TR-DOS (the Technology +Research Disk Operating System). The most important distinction from +the Pentagon 128k and similar machines is the display timing details. .RE .PP .I "Spectrum SE" @@ -2899,11 +3008,65 @@ .RS Set a breakpoint to occur .I time -tstates after the start of the current frame, assuming +tstates after the start of the every frame, assuming .I condition evaluates true (if one is given). .RE .PP +br{eakpoint} ev{ent} +.IR area : detail " [" condition ] +.RS +Set a breakpoint to occur when the event specified by +.IR area : detail +occurs and +.I condition +evaluates to true. The events which can be caught are: +.PP +divide:page +.br +divide:unpage +.RS +The DivIDE interface is paged into or out of memory respectively +.RE +.br +if1:page +.br +if1:unpage +.RS +The Interface 1 shadow ROM is paged into or out of memory +.RE +.br +rzx:end +.RS +An RZX recording finishes playing +.RE +.br +tape:play +.br +tape:stop +.RS +The emulated tape starts or stops playing +.RE +.br +zxcf:page +.br +zxcf:unpage +.RS +The ZXCF interface is paged into or out of memory +.RE +.br +zxatasp:page +.br +zxatasp:unpage +.RS +The ZXATASP interface is paged into or out of memory +.RE +.PP +In all cases, the event can be specified as +.IR area :* +to catch all events from that area. +.RE +.PP cl{ear} .RI [ address ] .RS @@ -2914,6 +3077,25 @@ is omitted. Port read/write breakpoints are unaffected. .RE .PP +com{mmands} +.I id <newline> +.br +.I <debugger command> <newline> +.br +.I <debugger command> <newline> +.br +.I ... +.br +end +.RS +Set things such that the specified debugger commands will be +automatically executed when breakpoint +.I id +is triggered. There is currently no user interface for entering +multi-line debugger commands, so the only way to specify this command is +on the command-line via the \-\-debugger\-command option. +.RE +.PP cond{ition} .IR "id " [ condition ] .RS @@ -2950,6 +3132,11 @@ .IR address . .RE .PP +ex{it} +.RS +Exit the emulator immediately. +.RE +.PP fi{nish} .RS Exit from the current CALL or equivalent. This isn't infallible: it @@ -3217,8 +3404,9 @@ .RE .PP .I .SAD +.I .SDF .RS -For compatibility with SAM Coup\('e disk images using this format. +For compatibility with SAM Coup\('e disk images using these formats. Note that SAM Coup\('e `.DSK' images share the same format as `.MGT'. .RE .PP @@ -3251,11 +3439,6 @@ .I http://www.cpc-emu.org/linux/cpcemu_e.txt .RE .PP -.I .SDF -.RS -TODO -.RE -.PP Fuse supports most of them for writing: .I .UDI .FDI .MGT .IMG .SAD .TRD .SCL .DSK (only the old CPC format). @@ -3285,9 +3468,7 @@ or .IR gzip (3) just as if they were uncompressed. -.I libdsk -provides an equivalent functionality for +3 images if available, -but there is currently no support for reading compressed +D or Beta +There is currently no support for reading compressed +3, +D or Beta disk images. .\" .\"------------------------------------------------------------------ @@ -3319,7 +3500,8 @@ .PP The libao file output devices not work properly with the GTK+ UI. No error reporting, but the created file does not contain any sound data. -If you use a `weak' machine alsa09 make a lot of click and pop with +If you use a `weak' machine alsa09 makes a lot of clicks and pops and +will output .RI ` "ALSA: underrun, at least 0ms." ' error messages. .\" Modified: trunk/fuse/menu.c =================================================================== --- trunk/fuse/menu.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/menu.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* menu.c: general menu callbacks Copyright (c) 2004-2005 Philip Kendall - $Id: menu.c 3714 2008-07-06 18:10:29Z fredm $ + $Id: menu.c 3787 2008-10-22 19:10:25Z pak21 $ 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 @@ -93,7 +93,7 @@ error = snapshot_copy_to( snap ); if( error ) { libspectrum_snap_free( snap ); return; } - libspectrum_rzx_add_snap( rzx, snap ); + libspectrum_rzx_add_snap( rzx, snap, 0 ); libspectrum_rzx_start_input( rzx, tstates ); } Modified: trunk/fuse/rzx.c =================================================================== --- trunk/fuse/rzx.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/rzx.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* rzx.c: .rzx files Copyright (c) 2002-2003 Philip Kendall - $Id: rzx.c 3703 2008-06-30 20:36:11Z pak21 $ + $Id: rzx.c 3787 2008-10-22 19:10:25Z pak21 $ 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 @@ -58,6 +58,9 @@ /* The number of bytes read via IN during the current frame */ size_t rzx_in_count; +/* The number of frames we've recorded in this RZX file */ +static size_t autosave_frame_count; + /* And the values of those bytes */ libspectrum_byte *rzx_in_bytes; @@ -95,6 +98,9 @@ a competition mode RZX file */ static const float SPEED_TOLERANCE = 5; +/* How often will we create an autosave file */ +static const size_t AUTOSAVE_INTERVAL = 5 * 50; + /* Debugger events */ static const char *event_type_string = "rzx"; static const char *end_event_detail_string = "end"; @@ -152,7 +158,7 @@ return 1; } - error = libspectrum_rzx_add_snap( rzx, snap ); + error = libspectrum_rzx_add_snap( rzx, snap, 0 ); if( error ) { libspectrum_snap_free( snap ); return error; @@ -160,13 +166,12 @@ } - /* Put an input recording block into the RZX file */ libspectrum_rzx_start_input( rzx, tstates ); - /* Start the count of instruction fetches here */ - counter_reset(); rzx_in_count = 0; + counter_reset(); + rzx_in_count = 0; + autosave_frame_count = 0; - /* Note that we're recording */ rzx_recording = 1; ui_menu_activate( UI_MENU_ITEM_RECORDING, 1 ); @@ -366,6 +371,80 @@ return 0; } +typedef struct prune_info_t { + libspectrum_rzx_iterator it; + size_t frames; +} prune_info_t; + +static void +autosave_prune( void ) +{ + GArray *autosaves = g_array_new( FALSE, FALSE, sizeof( prune_info_t ) ); + libspectrum_rzx_iterator it; + size_t i, frames = 0; + + for( it = libspectrum_rzx_iterator_begin( rzx ); + it; + it = libspectrum_rzx_iterator_next( it ) ) { + + libspectrum_rzx_block_id id = libspectrum_rzx_iterator_get_type( it ); + + switch( id ) { + + case LIBSPECTRUM_RZX_INPUT_BLOCK: + frames += libspectrum_rzx_iterator_get_frames( it ); break; + + case LIBSPECTRUM_RZX_SNAPSHOT_BLOCK: + if( libspectrum_rzx_iterator_snap_is_automatic( it ) ) { + prune_info_t info = { it, frames }; + g_array_append_val( autosaves, info ); + } + break; + + default: + break; + } + } + + /* Convert 'time from start' into 'time before now' */ + for( i = 0; i < autosaves->len; i++ ) { + prune_info_t *info = &( g_array_index( autosaves, prune_info_t, i ) ); + info->frames = frames - info->frames; + } + + for( i = autosaves->len - 1; i > 0; i-- ) { + prune_info_t save1 = g_array_index( autosaves, prune_info_t, i ), + save2 = g_array_index( autosaves, prune_info_t, i - 1 ); + + if( ( save1.frames == 15 * 50 || + save1.frames == 60 * 50 || + save1.frames == 300 * 50 ) && + save2.frames < 2 * save1.frames + ) + /* FIXME: could possibly merge adjacent IRBs here */ + libspectrum_rzx_iterator_delete( rzx, save1.it ); + } + + g_array_set_size( autosaves, 0 ); +} + +static void +autosave_frame( void ) +{ + libspectrum_snap *snap; + + if( ++autosave_frame_count % AUTOSAVE_INTERVAL ) return; + + snap = libspectrum_snap_alloc(); + snapshot_copy_to( snap ); + + libspectrum_rzx_stop_input( rzx ); + libspectrum_rzx_add_snap( rzx, snap, 1 ); + libspectrum_rzx_start_input( rzx, tstates ); + + autosave_prune(); +} + static int recording_frame( void ) { libspectrum_error error; @@ -395,6 +474,8 @@ } + if( settings_current.rzx_autosaves ) autosave_frame(); + return 0; } Modified: trunk/fuse/settings.dat =================================================================== --- trunk/fuse/settings.dat 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/settings.dat 2008-11-03 12:27:34 UTC (rev 539) @@ -2,7 +2,7 @@ # Copyright (c) 2002-2008 Philip Kendall # Copyright (c) 2003-2005 Fredrick Meunier -# $Id: settings.dat 3751 2008-08-19 15:46:09Z specu $ +# $Id: settings.dat 3787 2008-10-22 19:10:25Z pak21 $ # 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 @@ -122,6 +122,7 @@ competition_mode, boolean, 0 competition_code, numeric, 0 embed_snapshot, boolean, 1 +rzx_autosaves, boolean, 1 snapshot, string, NULL, 's' tape_file, string, NULL, 't', tape, tapefile Modified: trunk/fuse/ui/options.dat =================================================================== --- trunk/fuse/ui/options.dat 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ui/options.dat 2008-11-03 12:27:34 UTC (rev 539) @@ -48,6 +48,7 @@ rzx RZX Options +Checkbox, Create (a)utosaves, rzx_autosaves, INPUT_KEY_a Checkbox, (C)ompress RZX data, rzx_compression, INPUT_KEY_c Checkbox, C(o)mpetition mode, competition_mode, INPUT_KEY_o Entry, Co(m)petition code, competition_code, INPUT_KEY_m, 8, Modified: trunk/fuse/ui/win32/win32internals.h =================================================================== --- trunk/fuse/ui/win32/win32internals.h 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ui/win32/win32internals.h 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* win32internals.h: stuff internal to the Win32 UI Copyright (c) 2004 Marek Januszewski - $Id: win32internals.h 3768 2008-09-07 01:33:19Z specu $ + $Id: win32internals.h 3804 2008-11-03 04:21:02Z specu $ 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 @@ -31,6 +31,10 @@ #include <commdlg.h> #include <shellapi.h> +/* FIXME: this should be included as part of windows.h, but is not + because WIN32_LEAN_AND_MEAN is defined along the way somewhere */ +#include <mmsystem.h> + #include <libspectrum.h> #define ID_STATUSBAR 900 Modified: trunk/fuse/ui/win32/win32joystick.c =================================================================== --- trunk/fuse/ui/win32/win32joystick.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ui/win32/win32joystick.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* gtkjoystick.c: Joystick emulation Copyright (c) 2003-2008 Darren Salt, Philip Kendall, Marek Januszewski - $Id: win32joystick.c 3751 2008-08-19 15:46:09Z specu $ + $Id: win32joystick.c 3804 2008-11-03 04:21:02Z specu $ 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 @@ -27,17 +27,12 @@ #include <config.h> -#if !defined USE_JOYSTICK || defined HAVE_JSW_H -#include "../uijoystick.c" -#else - /* FIXME: implement win32 joystick using mmsystem, not jsw */ -#endif - #include <tchar.h> #include <windows.h> #include "fuse.h" #include "joystick.h" +#include "input.h" #include "keyboard.h" #include "menu.h" #include "settings.h" @@ -45,6 +40,126 @@ #include "win32joystick.h" +#if !defined USE_JOYSTICK || defined HAVE_JSW_H + +#include "../uijoystick.c" + +#else /* #if !defined USE_JOYSTICK || defined HAVE_JSW_H */ + +/* Functions to handle Joystick events */ +#include "ui/ui.h" +#include "ui/uijoystick.h" + +static void do_axis( int which, WORD value, + input_key negative, input_key positive ); + +int +ui_joystick_init( void ) +{ + int retval; + JOYINFO joyinfo; + + retval = joyGetNumDevs(); + + if( retval >= 2 ) { + + retval = 2; + + if( joyGetPos( JOYSTICKID2, &joyinfo ) == JOYERR_UNPLUGGED ) { + ui_error( UI_ERROR_ERROR, "failed to initialise joystick 2" ); + return 0; + } + } + + if( retval > 0 ) { + + if( joyGetPos( JOYSTICKID1, &joyinfo ) == JOYERR_UNPLUGGED ) { + ui_error( UI_ERROR_ERROR, "failed to initialise joystick 1" ); + return 0; + } + } + + return retval; +} + +void +ui_joystick_poll( void ) +{ + /* No action needed; joysticks already handled by the Window messages + sent by mmsystem */ +} + +void +win32joystick_buttonevent( int which_joystick, int button_down, + unsigned int wParam ) +{ + input_event_t event; + int button = 0; + + if( wParam & JOY_BUTTON1 ) button = INPUT_JOYSTICK_FIRE_1; + else if( wParam & JOY_BUTTON2 ) button = INPUT_JOYSTICK_FIRE_2; + else if( wParam & JOY_BUTTON3 ) button = INPUT_JOYSTICK_FIRE_3; + else if( wParam & JOY_BUTTON4 ) button = INPUT_JOYSTICK_FIRE_4; + else if( wParam & JOY_BUTTON5 ) button = INPUT_JOYSTICK_FIRE_5; + else if( wParam & JOY_BUTTON6 ) button = INPUT_JOYSTICK_FIRE_6; + else if( wParam & JOY_BUTTON7 ) button = INPUT_JOYSTICK_FIRE_7; + else if( wParam & JOY_BUTTON8 ) button = INPUT_JOYSTICK_FIRE_8; + else if( wParam & JOY_BUTTON9 ) button = INPUT_JOYSTICK_FIRE_9; + else if( wParam & JOY_BUTTON10 ) button = INPUT_JOYSTICK_FIRE_10; + else return; /* Fuse supports up to 10 joystick buttons */ + + event.types.joystick.which = which_joystick; + event.type = button_down + ? INPUT_EVENT_JOYSTICK_PRESS : INPUT_EVENT_JOYSTICK_RELEASE; + event.types.joystick.button = button; + input_event( &event ); +} + +void +win32joystick_move( int which_joystick, unsigned short pos_x, + unsigned short pos_y ) +{ + do_axis( which_joystick, pos_x, + INPUT_JOYSTICK_LEFT, INPUT_JOYSTICK_RIGHT ); + do_axis( which_joystick, pos_y, + INPUT_JOYSTICK_UP, INPUT_JOYSTICK_DOWN ); +} + +static void +do_axis( int which, WORD value, input_key negative, input_key positive ) +{ + input_event_t event1, event2; + + event1.types.joystick.which = event2.types.joystick.which = which; + + event1.types.joystick.button = negative; + event2.types.joystick.button = positive; + + /* MS Windows sends a value between 0 and 65535, hopefully those will work */ + if( value > 49152 ) { + event1.type = INPUT_EVENT_JOYSTICK_RELEASE; + event2.type = INPUT_EVENT_JOYSTICK_PRESS; + } else if( value < 16384 ) { + event1.type = INPUT_EVENT_JOYSTICK_PRESS; + event2.type = INPUT_EVENT_JOYSTICK_RELEASE; + } else { + event1.type = INPUT_EVENT_JOYSTICK_RELEASE; + event2.type = INPUT_EVENT_JOYSTICK_RELEASE; + } + + input_event( &event1 ); + input_event( &event2 ); +} + +void +ui_joystick_end( void ) +{ + /* Initialization and unitialization is handled by MS Windows */ +} + +#endif /* #if !defined USE_JOYSTICK || defined HAVE_JSW_H */ + +/* Win32 UI functions to handle Joystick options menus */ struct button_info { int *setting; TCHAR name[80]; Modified: trunk/fuse/ui/win32/win32joystick.h =================================================================== --- trunk/fuse/ui/win32/win32joystick.h 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ui/win32/win32joystick.h 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* win32joystick.h: Joystick emulation Copyright (c) 2008 Marek Januszewski - $Id: win32joystick.h 3588 2008-03-27 17:48:10Z zubzero $ + $Id: win32joystick.h 3804 2008-11-03 04:21:02Z specu $ 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 @@ -62,3 +62,15 @@ #define IDC_JOYSTICKS_BUTTON_BUTTON10 ( IDC_JOYSTICKS_BUTTON_BUTTON9 + 1 ) #define IDR_JOYSTICKS_POPUP ( IDC_JOYSTICKS_BUTTON_BUTTON10 + 1 ) + +/* + win32joystick_buttonevent parameters: + which_joystick = 0 => JOYSTICK1 + which_joystick = 1 => JOYSTICK2 + button_down = 1 => button pressed + button_down = 0 => button released +*/ +void win32joystick_buttonevent( int which_joystick, int button_down, + unsigned int wParam ); +void win32joystick_move( int which_joystick, + unsigned short pos_x, unsigned short pos_y ); Modified: trunk/fuse/ui/win32/win32ui.c =================================================================== --- trunk/fuse/ui/win32/win32ui.c 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/ui/win32/win32ui.c 2008-11-03 12:27:34 UTC (rev 539) @@ -1,7 +1,7 @@ /* win32ui.c: Win32 routines for dealing with the user interface Copyright (c) 2003-2007 Marek Januszewski, Philip Kendall, Stuart Brady - $Id: win32ui.c 3768 2008-09-07 01:33:19Z specu $ + $Id: win32ui.c 3804 2008-11-03 04:21:02Z specu $ 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 @@ -28,6 +28,7 @@ #include "debugger/debugger.h" #include "display.h" #include "fuse.h" +#include "joystick.h" #include "keyboard.h" #include "menu.h" #include "menu_data.h" @@ -40,9 +41,9 @@ #include "timer/timer.h" #include "timer/timer.h" #include "ui/ui.h" -#include "ui/uijoystick.h" #include "utils.h" #include "win32internals.h" +#include "win32joystick.h" /* fuse_hPrevInstance is needed only to register window class */ static HINSTANCE fuse_hPrevInstance; @@ -120,6 +121,20 @@ fuse_window_proc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { + +#if defined USE_JOYSTICK && !defined HAVE_JSW_H + + case WM_CREATE: + if( joysticks_supported > 0 ) + if( joySetCapture( hWnd, JOYSTICKID1, 0, FALSE ) ) + ui_error( UI_ERROR_ERROR, "Couldn't start capture for joystick 1" ); + if( joysticks_supported > 1 ) + if( joySetCapture( hWnd, JOYSTICKID2, 0, FALSE ) ) + ui_error( UI_ERROR_ERROR, "Couldn't start capture for joystick 2" ); + break; + +#endif /* if defined USE_JOYSTICK && !defined HAVE_JSW_H */ + case WM_COMMAND: if( ! handle_menu( LOWORD( wParam ), hWnd ) ) return 0; @@ -228,8 +243,36 @@ else if( LOWORD( wParam ) == WA_INACTIVE ) return win32ui_lose_focus( hWnd, wParam, lParam ); break; + +#if defined USE_JOYSTICK && !defined HAVE_JSW_H + + case MM_JOY1BUTTONDOWN: + win32joystick_buttonevent( 0, 1, wParam ); + break; + + case MM_JOY1BUTTONUP: + win32joystick_buttonevent( 0, 0, wParam ); + break; + + case MM_JOY2BUTTONDOWN: + win32joystick_buttonevent( 1, 1, wParam ); + break; + + case MM_JOY2BUTTONUP: + win32joystick_buttonevent( 1, 0, wParam ); + break; + + case MM_JOY1MOVE: + win32joystick_move( 0, LOWORD( lParam ), HIWORD( lParam ) ); + break; + + case MM_JOY2MOVE: + win32joystick_move( 1, LOWORD( lParam ), HIWORD( lParam ) ); + break; + +#endif /* if defined USE_JOYSTICK && !defined HAVE_JSW_H */ + } - return( DefWindowProc( hWnd, msg, wParam, lParam ) ); } @@ -362,33 +405,27 @@ int ui_error_specific( ui_error_level severity, const char *message ) { - /* finish - can ui be not initialized? */ - HWND hWnd; + /* If we don't have a UI yet, we can't output widgets */ + if( !display_ui_initialised ) return 0; - fuse_emulation_pause(); - - hWnd = GetActiveWindow(); - switch( severity ) { case UI_ERROR_INFO: - MessageBox( hWnd, message, "Fuse - Info", MB_ICONINFORMATION | MB_OK ); + MessageBox( fuse_hWnd, message, "Fuse - Info", MB_ICONINFORMATION | MB_OK ); break; case UI_ERROR_WARNING: - MessageBox( hWnd, message, "Fuse - Warning", MB_ICONWARNING | MB_OK ); + MessageBox( fuse_hWnd, message, "Fuse - Warning", MB_ICONWARNING | MB_OK ); break; case UI_ERROR_ERROR: - MessageBox( hWnd, message, "Fuse - Error", MB_ICONERROR | MB_OK ); + MessageBox( fuse_hWnd, message, "Fuse - Error", MB_ICONERROR | MB_OK ); break; default: - MessageBox( hWnd, message, "Fuse - (Unknown Error Level)", + MessageBox( fuse_hWnd, message, "Fuse - (Unknown Error Level)", MB_ICONINFORMATION | MB_OK ); break; } - fuse_emulation_unpause(); - return 0; } @@ -644,25 +681,6 @@ return UI_CONFIRM_JOYSTICK_NONE; } -int -ui_joystick_init( void ) -{ - STUB; - return 0; -} - -void -ui_joystick_end( void ) -{ - STUB; -} - -void -ui_joystick_poll( void ) -{ - /* STUB; */ -} - /* * Font code */ Modified: trunk/fuse/z80/tests/README =================================================================== --- trunk/fuse/z80/tests/README 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/fuse/z80/tests/README 2008-11-03 12:27:34 UTC (rev 539) @@ -8,10 +8,12 @@ <arbitrary test description> AF BC DE HL AF' BC' DE' HL' IX IY SP PC -I R IFF1 IFF2 <halted> <tstates> +I R IFF1 IFF2 IM <halted> <tstates> <halted> specifies whether the Z80 is halted. -<tstates> specifies the number of tstates to run the test for. +<tstates> specifies the number of tstates to run the test for, in + decimal; the number actually executed may be higher, as the final + instruction is allowed to complete. Then followed by lines specifying the initial memory setup. Each has the format: Property changes on: trunk/libspectrum/libspectrum ___________________________________________________________________ Modified: svn:mergeinfo - /vendor/fuse-emulator/current/libspectrum:530-533 + /vendor/fuse-emulator/current/libspectrum:530-538 Modified: trunk/libspectrum/libspectrum/ChangeLog =================================================================== --- trunk/libspectrum/libspectrum/ChangeLog 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/libspectrum/libspectrum/ChangeLog 2008-11-03 12:27:34 UTC (rev 539) @@ -1,3 +1,47 @@ +2008-11-?? Philip Kendall <phi...@sh...> + + * libspectrum 0.5.0 released. + + * Memory management change: memory allocation functions now abort + on failure. Leads to simpler code both internally and for + users of the library (Philip Kendall). + + * Support for tape acceleration (Philip Kendall) + + * IDE improvements to allow DivIDE to support FATware (Philip + Kendall; thanks, http://www.dusky.sk/zxs/) + + * New API to deal with flagging automatic snapshots in RZX files + (Philip Kendall). + + * New function to get length (time) of a tape block (Philip Kendall, + Fredrick Meunier). + + * 128K SNA files are now treated as being for the Pentagon 128 + rather than the Spectrum 128 (Fredrick Meunier) + + * SNA files now written out correctly (Philip Kendall). + + * Handle MDR write protection flag correctly (Philip Kendall) + + * Allow MDR images with bad checksums to load (the error will + be handled by the If1 ROM) (Gergely Szasz) + + * Support saving custom ROMs in SZX snapshots (Fredrick Meunier, + Stuart Brady) + + * Support for DivIDE, Kempston mouse and the simple IDE interface + in SZX snapshots (Fredrick Meunier) + + * Allow building without libgcrypt (Stuart Brady) + + * Amiga and MorphOS compilation fixes (Chris Young, Q-Master) + + * Don't produce empty libraries to fix build process on + OpenSolaris (Fredrick Meunier) + + * Remove deprecated functions (Fredrick Meunier). + 2008-01-05 Philip Kendall <phi...@sh...> * libspectrum 0.4.0 released. @@ -225,5 +269,5 @@ * libspectrum separated from Fuse just before the 0.5.0 release of Fuse; see Fuse's ChangeLog for changes up to this point -$Id: ChangeLog 3480 2008-01-07 12:19:50Z pak21 $ +$Id: ChangeLog 3791 2008-10-27 20:20:40Z pak21 $ Modified: trunk/libspectrum/libspectrum/README =================================================================== --- trunk/libspectrum/libspectrum/README 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/libspectrum/libspectrum/README 2008-11-03 12:27:34 UTC (rev 539) @@ -42,14 +42,14 @@ http://fuse-emulator.sourceforge.net/libspectrum.php -Compiling from CVS ------------------- +Compiling from Subversion +------------------------- -If you're using version of libspectrum from CVS rather than one of the -released tarballs, you'll need to run `autogen.sh' before running -'configure' for the first time. +If you're using version of libspectrum from Subversion rather than one +of the released tarballs, you'll need to run `autogen.sh' before +running 'configure' for the first time. Philip Kendall <phi...@sh...> 5 January 2008 -$Id: README 3480 2008-01-07 12:19:50Z pak21 $ +$Id: README 3795 2008-10-27 21:02:43Z pak21 $ Modified: trunk/libspectrum/libspectrum/doc/libspectrum.txt =================================================================== --- trunk/libspectrum/libspectrum/doc/libspectrum.txt 2008-11-03 11:45:06 UTC (rev 538) +++ trunk/libspectrum/libspectrum/doc/libspectrum.txt 2008-11-03 12:27:34 UTC (rev 539) @@ -61,9 +61,9 @@ libspectrum_error libspectrum_init( void ) This routine must be called before any other libspectrum routines, -other than `libspectrum_version' and `libspectrum_check_version' to -initialise the library. If it isn't called, undefined behaviour may -result. +other than `libspectrum_version', `libspectrum_check_version' and +`libspectrum_mem_set_vtable' to initialise the library. If it isn't +called, undefined behaviour may result. const char *libspectrum_version( void ) @@ -83,6 +83,34 @@ returns non-zero if the libspectrum version in use is at least `version' or zero if it is not. +Memory handling +=============== + +By default, libspectrum will use the standard library's malloc(), +calloc(), realloc() and free() for memory handling, but wrapped so that +they are "strong" (they will either succeed or abort the program). It is +possible to replace these with custom allocation routines if you wish. + +typedef void* (*libspectrum_malloc_fn_t)( size_t size ); +typedef void* (*libspectrum_calloc_fn_t)( size_t nmemb, size_t size ); +typedef void* (*libspectrum_realloc_fn_t)( void *ptr, size_t size ); +typedef void (*libspectrum_free_fn_t)( void *ptr ); + +typedef struct libspectrum_mem_vtable_t { + libspectrum_malloc_fn_t malloc; + libspectrum_calloc_fn_t calloc; + libspectrum_realloc_fn_t realloc; + libspectrum_free_fn_t free; +} libspectrum_mem_vtable_t; + +void libspectrum_mem_set_vtable( libspectrum_mem_vtable_t *table ) + +Set the memory handling routines to be those specified by `table'. This +function may *not* be called after libspectrum_init() has been called. +Note that libspectrum will ensure that the memory allocators are still +strong, and will abort the program if any of the allocators returns +NULL. + Error handling ============== @@ -391,7 +419,7 @@ libspectrum provides a `libspectrum_creator' structure to store this information. -libspectrum_error libspectrum_creator_alloc( libspectrum_creator **creator ) +libspectrum_creator* libspectrum_creator_alloc( void ) Allocate a new `libspectrum_creator' structure. @@ -451,7 +479,7 @@ `libspectrum_snap' structure, which can be accessed via the following routines: -libspectrum_error libspectrum_snap_alloc( libspectrum_snap **snap ) +libspectrum_snap* libspectrum_snap_alloc( void ) Allocate a new libspectrum_snap structure. @@ -695,34 +723,6 @@ The only formats for which serialisation is supported are .sna, .szx and .z80. -Deprecated snapshot routines ----------------------------- - -There are also three format-specific functions. However, *these -functions are deprecated and should not be used in new code*: - -libspectrum_error libspectrum_sna_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, - size_t buffer_length ) - -Take the .sna snapshot of length `buffer_length' bytes at `buffer' and -convert it to a `libspectrum_snap' structure. - -libspectrum_error libspectrum_z80_read( libspectrum_snap *snap, - const libspectrum_byte *buffer, - size_t buffer_length ) - -Similarly for a .z80 snapshot. - -libspectrum_error libspectrum_z80_write( libspectrum_byte **buffer, - size_t *length, - libspectrum_snap *snap ) - -Take the snapshot in `snap' and serialise it into a .z80 file at -'*buffer'. On entry, '*buffer' is assumed to be allocated '*length' -bytes, and will grow if necessary; if '*length' is zero, '*buffer' can -be uninitialised on entry. - Tape functions ============== @@ -732,7 +732,7 @@ The routines for dealing with tapes are: -libspectrum_error libspectrum_tape_alloc( libspectrum_tape **tape ) +libspectrum_tape* libspectrum_tape_alloc( void ) Allocate a new libspectrum_tape object. @@ -793,6 +793,10 @@ forced high at this edge LIBSPECTRUM_TAPE_FLAGS_NO_EDGE This "edge" isn't really an edge and doesn't change the input signal from the tape. +LIBSPECTRUM_TAPE_FLAGS_LENGTH_SHORT This edge is a "short" edge; used + for loader acceleration +LIBSPECTRUM_TAPE_FLAGS_LENGTH_LONG This edge is a "long" edge; again + used for loader acceleration int libspectrum_tape_present( libspectrum_tape *tape ) @@ -809,12 +813,27 @@ Set the current block on the tape to be the `n'th block and initialise it. Again, the first block on the tape is block 0. -libspectrum_error +void libspectrum_tape_append_block( libspectrum_tape *tape, libspectrum_tape_block *block ) Append `block' to `tape'. +void +libspectrum_tape_remove_block( libspectrum_tape *tape, + libspectrum_tape_iterator it ) + +Remove the block pointed to by `it' (see the "Tape iterators" section) +from the tape. + +libspectrum_error +libspectrum_tape_insert_block( libspectrum_tape *tape, + libspectrum_tape_block *block, + size_t position ) + +Insert `block' into `tape` in position `position', where position 0 +would make the new block the first block on the tape. + libspectrum_tape_block* libspectrum_tape_current_block( libspectrum_tape *tape ) @@ -832,50 +851,6 @@ Move the tape along so it points to the next block, initialise that block and return it. -Deprecated tape routines ------------------------- - -*These functions are deprecated and should not be used in new code*: - -libspectrum_error -libspectrum_tap_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ) - -Form a tape object in `tape' from the .tap file of `length' bytes -starting at `buffer'. This routine deals with the `normal' (Z80-style) -.tap files, not with Warajevo .tap files. - -libspectrum_error -libspectrum_tap_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ) - -Attempt to convert the tape in `tape' to a .tap file in `*buffer', which -has previously been allocated `*length' bytes by user code. The .tap -format can handle only standard speed loading blocks; a best guess -attempt will be made to convert other blocks, but the resultant .tap -file probably won't work. - -libspectrum_error -libspectrum_tzx_read( libspectrum_tape *tape, const libspectrum_byte *buffer, - const size_t length ) - -Just as `libspectrum_tap_read', but for .tzx format files. - -libspectrum_error -libspectrum_tzx_write( libspectrum_byte **buffer, size_t *length, - libspectrum_tape *tape ) - -Just as `libspectrum_tap_write', but for .tzx files. The conversion to -.tzx format is not lossy as it is with converting to .tap. - -libspectrum_error -libspectrum_warajevo_read( libspectrum_tape *tape, - const libspectrum_byte *buffer, - const size_t length ) - -Just as `libspectrum_tap_read', but for Warajevo-style .tap files. -There is no currently no function to write a Warajevo-style .tap file. - Tape iterators -------------- @@ -946,9 +921,8 @@ The basic routines for dealing with tape blocks are: -libspectrum_error -libspectrum_tape_block_alloc( libspectrum_tape_block **block, - libspectrum_tape_type type ) +libspectrum_tape_block* +libspectrum_tape_block_alloc( libspectrum_tape_type type ) Allocate a new tape block of `type'. @@ -994,6 +968,11 @@ Returns 1 if the block consists solely of metadata (comments, etc.) or 0 if ... [truncated message content] |
From: <fr...@us...> - 2008-11-03 11:45:10
|
Revision: 538 http://fuse-for-macosx.svn.sourceforge.net/fuse-for-macosx/?rev=538&view=rev Author: fredm Date: 2008-11-03 11:45:06 +0000 (Mon, 03 Nov 2008) Log Message: ----------- Tag vendor/fuse-emulator/current as vendor/fuse-emulator/fuse-r3804. Added Paths: ----------- vendor/fuse-emulator/fuse-r3804/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |