From 8a828dd633508ec4eaeb6327d83b0122c1abc025 Mon Sep 17 00:00:00 2001 From: kletellier Date: Thu, 17 Mar 2016 10:58:52 +0100 Subject: [PATCH 1/2] Add Dsk -> Hfe Gotek USB Floppy image export --- .gitignore | 59 + cpctelera/cfg/global_functions.mk | 10 + cpctelera/cfg/global_main_makefile.mk | 6 + cpctelera/cfg/global_paths.mk | 2 + cpctelera/tools/hxcfe-1.6.11.16/COPYING | 674 ++++ cpctelera/tools/hxcfe-1.6.11.16/COPYING_FULL | 792 ++++ cpctelera/tools/hxcfe-1.6.11.16/Makefile | 413 ++ cpctelera/tools/hxcfe-1.6.11.16/README.TXT | 3 + cpctelera/tools/hxcfe-1.6.11.16/WinTypes.h | 87 + .../hxcfe-1.6.11.16/common/afi_file_writer.c | 419 ++ .../hxcfe-1.6.11.16/common/afi_file_writer.h | 224 ++ .../common/cpcdsk_file_writer.c | 253 ++ .../common/cpcdsk_file_writer.h | 2 + .../common/extended_hfe_file_writer.c | 451 +++ .../common/extended_hfe_file_writer.h | 58 + .../hxcfe-1.6.11.16/common/floppy_loader.c | 118 + .../hxcfe-1.6.11.16/common/floppy_utils.c | 125 + .../hxcfe-1.6.11.16/common/hfe_file_writer.c | 441 +++ .../hxcfe-1.6.11.16/common/hfe_file_writer.h | 58 + .../hxcfe-1.6.11.16/common/imd_file_writer.c | 285 ++ .../hxcfe-1.6.11.16/common/imd_file_writer.h | 1 + .../common/includes/floppy_loader.h | 53 + .../common/includes/floppy_utils.h | 10 + .../common/includes/hxc_floppy_emulator.h | 54 + .../common/includes/internal_floppy.h | 94 + .../common/libs/adflib/AUTHORS.txt | 13 + .../common/libs/adflib/Boot/stdboot3.bbk | Bin 0 -> 1024 bytes .../common/libs/adflib/CHANGES.txt | 96 + .../common/libs/adflib/COPYING.txt | 339 ++ .../common/libs/adflib/Demo/.depend | 1 + .../common/libs/adflib/Demo/Extdir/.info | Bin 0 -> 628 bytes .../common/libs/adflib/Demo/Makefile | 34 + .../common/libs/adflib/Demo/unadf.c | 567 +++ .../common/libs/adflib/Demo/unadf.output | 1215 ++++++ .../common/libs/adflib/Demo/unadf.usage | 10 + .../common/libs/adflib/Docs/API.txt | 270 ++ .../libs/adflib/Docs/version0.7.9d_gary.txt | 70 + .../common/libs/adflib/Faq/adf_info.txt | 2121 +++++++++++ .../common/libs/adflib/Faq/adf_info_V0_9.txt | 1134 ++++++ .../common/libs/adflib/Faq/image/adf_dir.gif | Bin 0 -> 7997 bytes .../common/libs/adflib/Faq/image/adf_file.gif | Bin 0 -> 7037 bytes .../common/libs/adflib/FilesToInstall | 3 + .../common/libs/adflib/Lib/.depend | 1 + .../libs/adflib/Lib/Generic/adf_nativ.c | 127 + .../libs/adflib/Lib/Generic/adf_nativ.h | 69 + .../common/libs/adflib/Lib/Makefile | 60 + .../common/libs/adflib/Lib/Win32/adf_nativ.c | 141 + .../common/libs/adflib/Lib/Win32/adf_nativ.h | 62 + .../common/libs/adflib/Lib/Win32/adfvolinfo.c | 104 + .../common/libs/adflib/Lib/Win32/defendian.h | 31 + .../common/libs/adflib/Lib/Win32/nt4_dev.c | 140 + .../common/libs/adflib/Lib/Win32/nt4_dev.h | 26 + .../common/libs/adflib/Lib/adf_bitm.c | 564 +++ .../common/libs/adflib/Lib/adf_bitm.h | 52 + .../common/libs/adflib/Lib/adf_blk.h | 288 ++ .../common/libs/adflib/Lib/adf_cache.c | 615 +++ .../common/libs/adflib/Lib/adf_cache.h | 48 + .../common/libs/adflib/Lib/adf_defs.h | 70 + .../common/libs/adflib/Lib/adf_dir.c | 1042 +++++ .../common/libs/adflib/Lib/adf_dir.h | 70 + .../common/libs/adflib/Lib/adf_disk.c | 463 +++ .../common/libs/adflib/Lib/adf_disk.h | 52 + .../common/libs/adflib/Lib/adf_dump.c | 350 ++ .../common/libs/adflib/Lib/adf_dump.h | 41 + .../common/libs/adflib/Lib/adf_env.c | 261 ++ .../common/libs/adflib/Lib/adf_env.h | 40 + .../common/libs/adflib/Lib/adf_err.h | 86 + .../common/libs/adflib/Lib/adf_file.c | 781 ++++ .../common/libs/adflib/Lib/adf_file.h | 60 + .../common/libs/adflib/Lib/adf_hd.c | 1036 +++++ .../common/libs/adflib/Lib/adf_hd.h | 66 + .../common/libs/adflib/Lib/adf_link.c | 86 + .../common/libs/adflib/Lib/adf_link.h | 36 + .../common/libs/adflib/Lib/adf_nativ.c | 127 + .../common/libs/adflib/Lib/adf_nativ.h | 71 + .../common/libs/adflib/Lib/adf_raw.c | 337 ++ .../common/libs/adflib/Lib/adf_raw.h | 68 + .../common/libs/adflib/Lib/adf_salv.c | 399 ++ .../common/libs/adflib/Lib/adf_salv.h | 42 + .../common/libs/adflib/Lib/adf_str.h | 235 ++ .../common/libs/adflib/Lib/adf_util.c | 254 ++ .../common/libs/adflib/Lib/adf_util.h | 50 + .../common/libs/adflib/Lib/adflib.h | 128 + .../common/libs/adflib/Lib/defendian.h | 31 + .../common/libs/adflib/Lib/hd_blk.h | 167 + .../common/libs/adflib/Lib/myconf | 54 + .../common/libs/adflib/Lib/myconf.sh | 54 + .../common/libs/adflib/Lib/prefix.h | 36 + .../common/libs/adflib/Makefile | 82 + .../common/libs/adflib/README.txt | 151 + .../common/libs/adflib/adflib.dsw | 65 + .../common/libs/adflib/adfwrapper.h | 514 +++ .../common/libs/adflib/dynlib.dsp | 231 ++ .../common/libs/adflib/dynunadf.dsp | 90 + .../common/libs/adflib/gen_spec.sh | 45 + .../common/libs/adflib/staticlib.dsp | 220 ++ .../common/libs/adflib/staticunadf.dsp | 92 + .../common/libs/capslib/CapsAPI.h | 169 + .../common/libs/capslib/Comtype.h | 125 + .../common/libs/cpcfs/cpcfs.cfg | 13 + .../common/libs/cpcfs/cpcfs.doc | 781 ++++ .../common/libs/cpcfs/cpcfs.hlp | 625 +++ .../common/libs/cpcfs/cpmdisks.def | 337 ++ .../common/libs/cpcfs/descript.ion | 13 + .../common/libs/cpcfs/file_id.diz | 8 + .../common/libs/cpcfs/getcpm.bas | 79 + .../hxcfe-1.6.11.16/common/libs/cpcfs/readme | 102 + .../common/libs/cpcfs/readme.txt | 263 ++ .../common/libs/cpcfs/src/Tools.c | 763 ++++ .../common/libs/cpcfs/src/Unix.h | 56 + .../common/libs/cpcfs/src/cpcfs.c | 547 +++ .../common/libs/cpcfs/src/cpcfs.h | 524 +++ .../common/libs/cpcfs/src/cpcfs.prj | Bin 0 -> 6352 bytes .../common/libs/cpcfs/src/descript.ion | 15 + .../common/libs/cpcfs/src/dos.c | 957 +++++ .../common/libs/cpcfs/src/dos.h | 76 + .../common/libs/cpcfs/src/fs.c | 3377 +++++++++++++++++ .../common/libs/cpcfs/src/keywords.h | 28 + .../common/libs/cpcfs/src/makedoc | Bin 0 -> 78499 bytes .../common/libs/cpcfs/src/makedoc.c | 78 + .../common/libs/cpcfs/src/makefile | 76 + .../common/libs/cpcfs/src/match.c | 585 +++ .../common/libs/cpcfs/src/match.h | 113 + .../common/libs/cpcfs/src/readdef.c | 960 +++++ .../common/libs/cpcfs/src/ui.c | 2204 +++++++++++ .../common/libs/cpcfs/src/unix.c | 217 ++ .../common/libs/cpcfs/template.doc | 285 ++ .../common/libs/libsap/libsap.c | 1799 +++++++++ .../common/libs/libsap/libsap.h | 119 + .../common/libs/libsap/libsap.txt | 191 + .../common/libs/libsap/licence.txt | 340 ++ .../hxcfe-1.6.11.16/common/libs/xdms/vfile.c | 74 + .../hxcfe-1.6.11.16/common/libs/xdms/vfile.h | 38 + .../common/libs/xdms/xdms-1.3.2/COPYING | 2 + .../common/libs/xdms/xdms-1.3.2/ChangeLog.txt | 43 + .../common/libs/xdms/xdms-1.3.2/Makefile.in | 15 + .../common/libs/xdms/xdms-1.3.2/configure | 63 + .../xdms/xdms-1.3.2/gentoo/xdms-1.3.1.ebuild | 27 + .../libs/xdms/xdms-1.3.2/src/Makefile.in | 38 + .../common/libs/xdms/xdms-1.3.2/src/cdata.h | 80 + .../libs/xdms/xdms-1.3.2/src/crc_csum.c | 69 + .../libs/xdms/xdms-1.3.2/src/crc_csum.h | 4 + .../common/libs/xdms/xdms-1.3.2/src/getbits.c | 34 + .../common/libs/xdms/xdms-1.3.2/src/getbits.h | 10 + .../common/libs/xdms/xdms-1.3.2/src/maketbl.c | 92 + .../common/libs/xdms/xdms-1.3.2/src/maketbl.h | 5 + .../common/libs/xdms/xdms-1.3.2/src/pfile.c | 512 +++ .../common/libs/xdms/xdms-1.3.2/src/pfile.h | 46 + .../common/libs/xdms/xdms-1.3.2/src/smakefile | 52 + .../common/libs/xdms/xdms-1.3.2/src/tables.c | 87 + .../common/libs/xdms/xdms-1.3.2/src/tables.h | 3 + .../common/libs/xdms/xdms-1.3.2/src/u_deep.c | 207 + .../common/libs/xdms/xdms-1.3.2/src/u_deep.h | 7 + .../common/libs/xdms/xdms-1.3.2/src/u_heavy.c | 175 + .../common/libs/xdms/xdms-1.3.2/src/u_heavy.h | 6 + .../common/libs/xdms/xdms-1.3.2/src/u_init.c | 28 + .../common/libs/xdms/xdms-1.3.2/src/u_init.h | 3 + .../libs/xdms/xdms-1.3.2/src/u_medium.c | 58 + .../libs/xdms/xdms-1.3.2/src/u_medium.h | 5 + .../common/libs/xdms/xdms-1.3.2/src/u_quick.c | 47 + .../common/libs/xdms/xdms-1.3.2/src/u_quick.h | 5 + .../common/libs/xdms/xdms-1.3.2/src/u_rle.c | 42 + .../common/libs/xdms/xdms-1.3.2/src/u_rle.h | 3 + .../common/libs/xdms/xdms-1.3.2/src/xdms.c | 534 +++ .../common/libs/xdms/xdms-1.3.2/xdms.1 | 80 + .../common/libs/xdms/xdms-1.3.2/xdms.txt | 295 ++ .../common/libs/zlib/CMakeLists.txt | 190 + .../common/libs/zlib/ChangeLog | 1208 ++++++ .../hxcfe-1.6.11.16/common/libs/zlib/FAQ | 366 ++ .../hxcfe-1.6.11.16/common/libs/zlib/INDEX | 65 + .../hxcfe-1.6.11.16/common/libs/zlib/Makefile | 5 + .../common/libs/zlib/Makefile.in | 257 ++ .../hxcfe-1.6.11.16/common/libs/zlib/README | 115 + .../common/libs/zlib/adler32.c | 169 + .../common/libs/zlib/amiga/Makefile.pup | 69 + .../common/libs/zlib/amiga/Makefile.sas | 68 + .../common/libs/zlib/compress.c | 80 + .../common/libs/zlib/configure | 596 +++ .../common/libs/zlib/contrib/README.contrib | 77 + .../libs/zlib/contrib/ada/buffer_demo.adb | 106 + .../common/libs/zlib/contrib/ada/mtest.adb | 156 + .../common/libs/zlib/contrib/ada/read.adb | 156 + .../common/libs/zlib/contrib/ada/readme.txt | 65 + .../common/libs/zlib/contrib/ada/test.adb | 463 +++ .../libs/zlib/contrib/ada/zlib-streams.adb | 225 ++ .../libs/zlib/contrib/ada/zlib-streams.ads | 114 + .../libs/zlib/contrib/ada/zlib-thin.adb | 141 + .../libs/zlib/contrib/ada/zlib-thin.ads | 450 +++ .../common/libs/zlib/contrib/ada/zlib.adb | 701 ++++ .../common/libs/zlib/contrib/ada/zlib.ads | 328 ++ .../common/libs/zlib/contrib/ada/zlib.gpr | 20 + .../libs/zlib/contrib/amd64/amd64-match.S | 452 +++ .../libs/zlib/contrib/asm686/README.686 | 51 + .../common/libs/zlib/contrib/asm686/match.S | 343 ++ .../common/libs/zlib/contrib/blast/Makefile | 8 + .../common/libs/zlib/contrib/blast/README | 4 + .../common/libs/zlib/contrib/blast/blast.c | 444 +++ .../common/libs/zlib/contrib/blast/blast.h | 71 + .../common/libs/zlib/contrib/blast/test.pk | Bin 0 -> 8 bytes .../common/libs/zlib/contrib/blast/test.txt | 1 + .../common/libs/zlib/contrib/delphi/ZLib.pas | 557 +++ .../libs/zlib/contrib/delphi/ZLibConst.pas | 11 + .../libs/zlib/contrib/delphi/readme.txt | 76 + .../libs/zlib/contrib/delphi/zlibd32.mak | 99 + .../libs/zlib/contrib/dotzlib/DotZLib.build | 33 + .../libs/zlib/contrib/dotzlib/DotZLib.chm | Bin 0 -> 72726 bytes .../libs/zlib/contrib/dotzlib/DotZLib.sln | 21 + .../contrib/dotzlib/DotZLib/AssemblyInfo.cs | 58 + .../contrib/dotzlib/DotZLib/ChecksumImpl.cs | 202 + .../contrib/dotzlib/DotZLib/CircularBuffer.cs | 83 + .../zlib/contrib/dotzlib/DotZLib/CodecBase.cs | 198 + .../zlib/contrib/dotzlib/DotZLib/Deflater.cs | 106 + .../zlib/contrib/dotzlib/DotZLib/DotZLib.cs | 288 ++ .../contrib/dotzlib/DotZLib/DotZLib.csproj | 141 + .../contrib/dotzlib/DotZLib/GZipStream.cs | 301 ++ .../zlib/contrib/dotzlib/DotZLib/Inflater.cs | 105 + .../zlib/contrib/dotzlib/DotZLib/UnitTests.cs | 274 ++ .../libs/zlib/contrib/dotzlib/LICENSE_1_0.txt | 23 + .../libs/zlib/contrib/dotzlib/readme.txt | 58 + .../libs/zlib/contrib/gcc_gvmat64/gvmat64.S | 574 +++ .../common/libs/zlib/contrib/infback9/README | 1 + .../libs/zlib/contrib/infback9/infback9.c | 617 +++ .../libs/zlib/contrib/infback9/infback9.h | 37 + .../libs/zlib/contrib/infback9/inffix9.h | 107 + .../libs/zlib/contrib/infback9/inflate9.h | 47 + .../libs/zlib/contrib/infback9/inftree9.c | 324 ++ .../libs/zlib/contrib/infback9/inftree9.h | 61 + .../libs/zlib/contrib/inflate86/inffas86.c | 1157 ++++++ .../libs/zlib/contrib/inflate86/inffast.S | 1368 +++++++ .../libs/zlib/contrib/iostream/test.cpp | 24 + .../libs/zlib/contrib/iostream/zfstream.cpp | 329 ++ .../libs/zlib/contrib/iostream/zfstream.h | 128 + .../libs/zlib/contrib/iostream2/zstream.h | 307 ++ .../zlib/contrib/iostream2/zstream_test.cpp | 25 + .../common/libs/zlib/contrib/iostream3/README | 35 + .../common/libs/zlib/contrib/iostream3/TODO | 17 + .../libs/zlib/contrib/iostream3/test.cc | 50 + .../libs/zlib/contrib/iostream3/zfstream.cc | 479 +++ .../libs/zlib/contrib/iostream3/zfstream.h | 466 +++ .../libs/zlib/contrib/masmx64/bld_ml64.bat | 2 + .../libs/zlib/contrib/masmx64/gvmat64.asm | 553 +++ .../libs/zlib/contrib/masmx64/inffas8664.c | 186 + .../libs/zlib/contrib/masmx64/inffasx64.asm | 396 ++ .../libs/zlib/contrib/masmx64/readme.txt | 31 + .../libs/zlib/contrib/masmx86/bld_ml32.bat | 2 + .../libs/zlib/contrib/masmx86/inffas32.asm | 1083 ++++++ .../libs/zlib/contrib/masmx86/match686.asm | 478 +++ .../libs/zlib/contrib/masmx86/readme.txt | 27 + .../common/libs/zlib/contrib/minizip/Makefile | 25 + .../contrib/minizip/MiniZip64_Changes.txt | 6 + .../zlib/contrib/minizip/MiniZip64_info.txt | 74 + .../common/libs/zlib/contrib/minizip/crypt.h | 131 + .../common/libs/zlib/contrib/minizip/ioapi.c | 249 ++ .../common/libs/zlib/contrib/minizip/ioapi.h | 200 + .../libs/zlib/contrib/minizip/iowin32.c | 389 ++ .../libs/zlib/contrib/minizip/iowin32.h | 28 + .../libs/zlib/contrib/minizip/make_vms.com | 25 + .../libs/zlib/contrib/minizip/miniunz.c | 648 ++++ .../libs/zlib/contrib/minizip/minizip.c | 507 +++ .../libs/zlib/contrib/minizip/mztools.c | 281 ++ .../libs/zlib/contrib/minizip/mztools.h | 31 + .../common/libs/zlib/contrib/minizip/unzip.c | 2125 +++++++++++ .../common/libs/zlib/contrib/minizip/unzip.h | 437 +++ .../common/libs/zlib/contrib/minizip/zip.c | 2004 ++++++++++ .../common/libs/zlib/contrib/minizip/zip.h | 362 ++ .../common/libs/zlib/contrib/minizip/zlib.h | 1 + .../libs/zlib/contrib/pascal/example.pas | 599 +++ .../libs/zlib/contrib/pascal/readme.txt | 76 + .../libs/zlib/contrib/pascal/zlibd32.mak | 99 + .../libs/zlib/contrib/pascal/zlibpas.pas | 236 ++ .../common/libs/zlib/contrib/puff/Makefile | 8 + .../common/libs/zlib/contrib/puff/README | 63 + .../common/libs/zlib/contrib/puff/puff.c | 955 +++++ .../common/libs/zlib/contrib/puff/puff.h | 31 + .../common/libs/zlib/contrib/puff/zeros.raw | Bin 0 -> 1213 bytes .../libs/zlib/contrib/testzlib/testzlib.c | 275 ++ .../libs/zlib/contrib/testzlib/testzlib.txt | 10 + .../common/libs/zlib/contrib/untgz/Makefile | 14 + .../libs/zlib/contrib/untgz/Makefile.msc | 17 + .../common/libs/zlib/contrib/untgz/untgz.c | 674 ++++ .../libs/zlib/contrib/vstudio/readme.txt | 60 + .../zlib/contrib/vstudio/vc10/miniunz.vcxproj | 310 ++ .../vstudio/vc10/miniunz.vcxproj.filters | 22 + .../contrib/vstudio/vc10/miniunz.vcxproj.user | 3 + .../zlib/contrib/vstudio/vc10/minizip.vcxproj | 307 ++ .../vstudio/vc10/minizip.vcxproj.filters | 22 + .../contrib/vstudio/vc10/minizip.vcxproj.user | 3 + .../contrib/vstudio/vc10/testzlib.vcxproj | 420 ++ .../vstudio/vc10/testzlib.vcxproj.filters | 58 + .../vstudio/vc10/testzlib.vcxproj.user | 3 + .../contrib/vstudio/vc10/testzlibdll.vcxproj | 310 ++ .../vstudio/vc10/testzlibdll.vcxproj.filters | 22 + .../vstudio/vc10/testzlibdll.vcxproj.user | 3 + .../libs/zlib/contrib/vstudio/vc10/zlib.rc | 32 + .../contrib/vstudio/vc10/zlibstat.vcxproj | 457 +++ .../vstudio/vc10/zlibstat.vcxproj.filters | 77 + .../vstudio/vc10/zlibstat.vcxproj.user | 3 + .../libs/zlib/contrib/vstudio/vc10/zlibvc.def | 130 + .../libs/zlib/contrib/vstudio/vc10/zlibvc.sln | 135 + .../zlib/contrib/vstudio/vc10/zlibvc.vcxproj | 659 ++++ .../vstudio/vc10/zlibvc.vcxproj.filters | 118 + .../contrib/vstudio/vc10/zlibvc.vcxproj.user | 3 + .../zlib/contrib/vstudio/vc9/miniunz.vcproj | 565 +++ .../zlib/contrib/vstudio/vc9/minizip.vcproj | 562 +++ .../zlib/contrib/vstudio/vc9/testzlib.vcproj | 852 +++++ .../contrib/vstudio/vc9/testzlibdll.vcproj | 565 +++ .../libs/zlib/contrib/vstudio/vc9/zlib.rc | 32 + .../zlib/contrib/vstudio/vc9/zlibstat.vcproj | 835 ++++ .../libs/zlib/contrib/vstudio/vc9/zlibvc.def | 130 + .../libs/zlib/contrib/vstudio/vc9/zlibvc.sln | 144 + .../zlib/contrib/vstudio/vc9/zlibvc.vcproj | 1156 ++++++ .../hxcfe-1.6.11.16/common/libs/zlib/crc32.c | 442 +++ .../hxcfe-1.6.11.16/common/libs/zlib/crc32.h | 441 +++ .../common/libs/zlib/deflate.c | 1834 +++++++++ .../common/libs/zlib/deflate.h | 342 ++ .../common/libs/zlib/doc/algorithm.txt | 209 + .../common/libs/zlib/doc/rfc1950.txt | 619 +++ .../common/libs/zlib/doc/rfc1951.txt | 955 +++++ .../common/libs/zlib/doc/rfc1952.txt | 675 ++++ .../common/libs/zlib/doc/txtvsbin.txt | 107 + .../common/libs/zlib/example.c | 565 +++ .../common/libs/zlib/examples/README.examples | 49 + .../common/libs/zlib/examples/enough.c | 569 +++ .../common/libs/zlib/examples/fitblk.c | 233 ++ .../common/libs/zlib/examples/gun.c | 701 ++++ .../common/libs/zlib/examples/gzappend.c | 500 +++ .../common/libs/zlib/examples/gzjoin.c | 448 +++ .../common/libs/zlib/examples/gzlog.c | 1058 ++++++ .../common/libs/zlib/examples/gzlog.h | 89 + .../common/libs/zlib/examples/zpipe.c | 205 + .../common/libs/zlib/examples/zran.c | 404 ++ .../common/libs/zlib/gzclose.c | 25 + .../hxcfe-1.6.11.16/common/libs/zlib/gzguts.h | 132 + .../hxcfe-1.6.11.16/common/libs/zlib/gzlib.c | 537 +++ .../hxcfe-1.6.11.16/common/libs/zlib/gzread.c | 653 ++++ .../common/libs/zlib/gzwrite.c | 531 +++ .../common/libs/zlib/infback.c | 632 +++ .../common/libs/zlib/inffast.c | 340 ++ .../common/libs/zlib/inffast.h | 11 + .../common/libs/zlib/inffixed.h | 94 + .../common/libs/zlib/inflate.c | 1480 ++++++++ .../common/libs/zlib/inflate.h | 122 + .../common/libs/zlib/inftrees.c | 330 ++ .../common/libs/zlib/inftrees.h | 62 + .../common/libs/zlib/make_vms.com | 804 ++++ .../common/libs/zlib/minigzip.c | 440 +++ .../common/libs/zlib/msdos/Makefile.bor | 115 + .../common/libs/zlib/msdos/Makefile.dj2 | 104 + .../common/libs/zlib/msdos/Makefile.emx | 69 + .../common/libs/zlib/msdos/Makefile.msc | 112 + .../common/libs/zlib/msdos/Makefile.tc | 100 + .../common/libs/zlib/nintendods/Makefile | 126 + .../common/libs/zlib/nintendods/README | 5 + .../common/libs/zlib/old/Makefile.riscos | 151 + .../common/libs/zlib/old/README | 3 + .../common/libs/zlib/old/as400/bndsrc | 132 + .../common/libs/zlib/old/as400/compile.clp | 123 + .../common/libs/zlib/old/as400/readme.txt | 111 + .../common/libs/zlib/old/as400/zlib.inc | 331 ++ .../common/libs/zlib/old/descrip.mms | 48 + .../common/libs/zlib/old/os2/Makefile.os2 | 136 + .../common/libs/zlib/old/os2/zlib.def | 51 + .../common/libs/zlib/old/visual-basic.txt | 160 + .../common/libs/zlib/old/visualc6/README.txt | 73 + .../common/libs/zlib/old/visualc6/example.dsp | 278 ++ .../libs/zlib/old/visualc6/minigzip.dsp | 278 ++ .../common/libs/zlib/old/visualc6/zlib.dsp | 621 +++ .../common/libs/zlib/old/visualc6/zlib.dsw | 59 + .../common/libs/zlib/qnx/package.qpg | 141 + .../common/libs/zlib/treebuild.xml | 116 + .../hxcfe-1.6.11.16/common/libs/zlib/trees.c | 1244 ++++++ .../hxcfe-1.6.11.16/common/libs/zlib/trees.h | 128 + .../common/libs/zlib/uncompr.c | 59 + .../common/libs/zlib/watcom/watcom_f.mak | 43 + .../common/libs/zlib/watcom/watcom_l.mak | 43 + .../common/libs/zlib/win32/DLL_FAQ.txt | 397 ++ .../common/libs/zlib/win32/Makefile.bor | 110 + .../common/libs/zlib/win32/Makefile.emx | 69 + .../common/libs/zlib/win32/Makefile.gcc | 164 + .../common/libs/zlib/win32/Makefile.msc | 157 + .../common/libs/zlib/win32/README-WIN32.txt | 103 + .../common/libs/zlib/win32/VisualC.txt | 3 + .../common/libs/zlib/win32/zlib.def | 74 + .../common/libs/zlib/win32/zlib1.rc | 40 + .../hxcfe-1.6.11.16/common/libs/zlib/zconf.h | 428 +++ .../common/libs/zlib/zconf.h.cmakein | 430 +++ .../common/libs/zlib/zconf.h.in | 428 +++ .../hxcfe-1.6.11.16/common/libs/zlib/zlib.3 | 151 + .../common/libs/zlib/zlib.3.pdf | Bin 0 -> 8686 bytes .../hxcfe-1.6.11.16/common/libs/zlib/zlib.h | 1613 ++++++++ .../common/libs/zlib/zlib.pc.in | 13 + .../common/libs/zlib/zlib2ansi | 152 + .../hxcfe-1.6.11.16/common/libs/zlib/zutil.c | 318 ++ .../hxcfe-1.6.11.16/common/libs/zlib/zutil.h | 274 ++ .../tools/hxcfe-1.6.11.16/common/licensetxt.h | 2741 +++++++++++++ .../hxcfe-1.6.11.16/common/loaders_list.h | 161 + .../hxcfe-1.6.11.16/common/mfm_file_writer.c | 162 + .../hxcfe-1.6.11.16/common/mfm_file_writer.h | 62 + .../tools/hxcfe-1.6.11.16/common/os_api.h | 51 + .../plugins/acornadf_loader/acornadf_loader.c | 210 + .../plugins/acornadf_loader/acornadf_loader.h | 30 + .../common/plugins/adf_loader/adf_loader.c | 207 + .../common/plugins/adf_loader/adf_loader.h | 34 + .../common/plugins/adl_loader/adl_loader.c | 195 + .../common/plugins/adl_loader/adl_loader.h | 31 + .../common/plugins/adz_loader/adz_loader.c | 180 + .../common/plugins/adz_loader/adz_loader.h | 30 + .../common/plugins/afi_loader/afi_loader.c | 528 +++ .../common/plugins/afi_loader/afi_loader.h | 30 + .../amigadosfs_loader/amigadosfs_loader.c | 467 +++ .../amigadosfs_loader/amigadosfs_loader.h | 30 + .../plugins/amigadosfs_loader/stdboot3.h | 94 + .../plugins/apridisk_loader/apridisk_format.h | 120 + .../plugins/apridisk_loader/apridisk_loader.c | 366 ++ .../plugins/apridisk_loader/apridisk_loader.h | 32 + .../camputerslynxldf_loader.c | 248 ++ .../camputerslynxldf_loader.h | 30 + .../common/plugins/common/crc.c | 100 + .../common/plugins/common/crc.h | 6 + .../common/plugins/common/crcgenerator.c | 140 + .../common/plugins/common/emuii_track.c | 239 ++ .../common/plugins/common/emuii_track.h | 32 + .../common/plugins/common/gcr_track.c | 334 ++ .../common/plugins/common/gcr_track.h | 34 + .../common/plugins/common/track_generator.c | 1714 +++++++++ .../common/plugins/common/track_generator.h | 393 ++ .../plugins/copyqm_loader/copyqm_loader.c | 384 ++ .../plugins/copyqm_loader/copyqm_loader.h | 31 + .../common/plugins/copyqm_loader/crctable.c | 125 + .../common/plugins/copyqm_loader/crctable.h | 9 + .../plugins/cpcdsk_loader/cpcdsk_format.h | 65 + .../plugins/cpcdsk_loader/cpcdsk_loader.c | 399 ++ .../plugins/cpcdsk_loader/cpcdsk_loader.h | 32 + .../plugins/cpcfs_loader/cpcfs_loader.c | 131 + .../plugins/cpcfs_loader/cpcfs_loader.h | 30 + .../common/plugins/d64_loader/d64_loader.c | 304 ++ .../common/plugins/d64_loader/d64_loader.h | 31 + .../common/plugins/d81_loader/d81_loader.c | 201 + .../common/plugins/d81_loader/d81_loader.h | 30 + .../common/plugins/d88_loader/d88_format.h | 101 + .../common/plugins/d88_loader/d88_loader.c | 414 ++ .../common/plugins/d88_loader/d88_loader.h | 32 + .../common/plugins/dim_loader/dim-format.txt | 19 + .../common/plugins/dim_loader/dim_loader.c | 243 ++ .../common/plugins/dim_loader/dim_loader.h | 31 + .../common/plugins/dmk_loader/dmk_loader.c | 445 +++ .../common/plugins/dmk_loader/dmk_loader.h | 31 + .../common/plugins/dms_loader/dms_loader.c | 172 + .../common/plugins/dms_loader/dms_loader.h | 30 + .../common/plugins/dpx_loader/dpx_loader.c | 231 ++ .../common/plugins/dpx_loader/dpx_loader.h | 31 + .../common/plugins/ede_loader/ede_loader.c | 415 ++ .../common/plugins/ede_loader/ede_loader.h | 31 + .../common/plugins/emax_loader/emax_loader.c | 315 ++ .../common/plugins/emax_loader/emax_loader.h | 31 + .../plugins/emui_raw_loader/emui_raw_loader.c | 191 + .../plugins/emui_raw_loader/emui_raw_loader.h | 30 + .../plugins/emuii_loader/emuii_loader.c | 252 ++ .../plugins/emuii_loader/emuii_loader.h | 31 + .../emuii_raw_loader/emuii_raw_loader.c | 192 + .../emuii_raw_loader/emuii_raw_loader.h | 30 + .../ensoniq_mirage_loader.c | 223 ++ .../ensoniq_mirage_loader.h | 31 + .../plugins/extadf_loader/extadf_loader.c | 267 ++ .../plugins/extadf_loader/extadf_loader.h | 34 + .../common/plugins/fat12floppy_loader/fat12.c | 374 ++ .../common/plugins/fat12floppy_loader/fat12.h | 50 + .../fat12floppy_loader/fat12floppy_loader.c | 331 ++ .../fat12floppy_loader/fat12floppy_loader.h | 29 + .../plugins/fat12floppy_loader/fat12formats.h | 158 + .../plugins/fat12floppy_loader/fatlib.c | 35 + .../plugins/fat12floppy_loader/fatlib.h | 116 + .../plugins/fat12floppy_loader/pcbootsector.h | 231 ++ .../common/plugins/fd_loader/fd_loader.c | 208 + .../common/plugins/fd_loader/fd_loader.h | 31 + .../common/plugins/fdi_loader/fdi_format.h | 88 + .../common/plugins/fdi_loader/fdi_loader.c | 269 ++ .../common/plugins/fdi_loader/fdi_loader.h | 30 + .../common/plugins/fei_loader/fei_loader.c | 210 + .../common/plugins/fei_loader/fei_loader.h | 30 + .../common/plugins/gkh_loader/gkh_format.h | 31 + .../common/plugins/gkh_loader/gkh_loader.c | 228 ++ .../common/plugins/gkh_loader/gkh_loader.h | 29 + .../common/plugins/hdm_loader/hdm_loader.c | 185 + .../common/plugins/hdm_loader/hdm_loader.h | 30 + .../common/plugins/hfe_loader/hfe_loader.c | 290 ++ .../common/plugins/hfe_loader/hfe_loader.h | 30 + .../common/plugins/imd_loader/imd_format.h | 149 + .../common/plugins/imd_loader/imd_loader.c | 487 +++ .../common/plugins/imd_loader/imd_loader.h | 32 + .../common/plugins/img_loader/img_loader.c | 310 ++ .../common/plugins/img_loader/img_loader.h | 30 + .../plugins/img_loader/pcimgfileformat.h | 55 + .../common/plugins/imz_loader/imz_loader.c | 226 ++ .../common/plugins/imz_loader/imz_loader.h | 30 + .../common/plugins/ipf_loader/capslibloader.h | 2 + .../common/plugins/ipf_loader/ipf_loader.c | 568 +++ .../common/plugins/ipf_loader/ipf_loader.h | 32 + .../common/plugins/jv1_loader/jv1_format.txt | 14 + .../common/plugins/jv1_loader/jv1_loader.c | 227 ++ .../common/plugins/jv1_loader/jv1_loader.h | 30 + .../common/plugins/jv3_loader/jv3_loader.c | 452 +++ .../common/plugins/jv3_loader/jv3_loader.h | 74 + .../common/plugins/jvc_loader/jvc_loader.c | 226 ++ .../common/plugins/jvc_loader/jvc_loader.h | 31 + .../common/plugins/krz_loader/krz_loader.c | 240 ++ .../common/plugins/krz_loader/krz_loader.h | 30 + .../common/plugins/mfm_loader/mfm_loader.c | 200 + .../common/plugins/mfm_loader/mfm_loader.h | 30 + .../common/plugins/mgt_loader/mgt_loader.c | 214 ++ .../common/plugins/mgt_loader/mgt_loader.h | 31 + .../common/plugins/msa_loader/msa_loader.c | 301 ++ .../common/plugins/msa_loader/msa_loader.h | 31 + .../common/plugins/msx_loader/msx_loader.c | 314 ++ .../common/plugins/msx_loader/msx_loader.h | 30 + .../common/plugins/msx_loader/msxfileformat.h | 52 + .../oldextadf_loader/oldextadf_loader.c | 269 ++ .../oldextadf_loader/oldextadf_loader.h | 34 + .../plugins/oricdsk_loader/oricdsk_format.h | 117 + .../plugins/oricdsk_loader/oricdsk_loader.c | 480 +++ .../plugins/oricdsk_loader/oricdsk_loader.h | 31 + .../plugins/prophet_loader/prophet_loader.c | 231 ++ .../plugins/prophet_loader/prophet_loader.h | 31 + .../common/plugins/raw_loader/raw_loader.c | 313 ++ .../common/plugins/raw_loader/raw_loader.h | 84 + .../plugins/sad_loader/sad_fileformat.h | 14 + .../common/plugins/sad_loader/sad_loader.c | 180 + .../common/plugins/sad_loader/sad_loader.h | 31 + .../common/plugins/sap_loader/sap_loader.c | 225 ++ .../common/plugins/sap_loader/sap_loader.h | 31 + .../common/plugins/scl_loader/scl_loader.c | 311 ++ .../common/plugins/scl_loader/scl_loader.h | 30 + .../plugins/smc_loader/snes_smc_loader.c | 203 + .../plugins/smc_loader/snes_smc_loader.h | 30 + .../plugins/ssd_dsd_loader/ssd_dsd_loader.c | 203 + .../plugins/ssd_dsd_loader/ssd_dsd_loader.h | 31 + .../common/plugins/st_loader/st_loader.c | 346 ++ .../common/plugins/st_loader/st_loader.h | 31 + .../common/plugins/st_loader/stfileformat.h | 143 + .../common/plugins/stt_loader/STT Format.txt | 145 + .../common/plugins/stt_loader/stt_loader.c | 294 ++ .../common/plugins/stt_loader/stt_loader.h | 31 + .../common/plugins/stt_loader/sttfileformat.h | 69 + .../common/plugins/stx_loader/pasti_format.h | 67 + .../common/plugins/stx_loader/stx_loader.c | 1154 ++++++ .../common/plugins/stx_loader/stx_loader.h | 31 + .../common/plugins/svd_loader/svd.h | 122 + .../common/plugins/svd_loader/svd_loader.c | 373 ++ .../common/plugins/svd_loader/svd_loader.h | 31 + .../common/plugins/teledisk_loader/td0_lzss.c | 369 ++ .../common/plugins/teledisk_loader/td0_lzss.h | 4 + .../plugins/teledisk_loader/td0notes.txt | 572 +++ .../plugins/teledisk_loader/teledisk_format.h | 47 + .../plugins/teledisk_loader/teledisk_loader.c | 572 +++ .../plugins/teledisk_loader/teledisk_loader.h | 31 + .../plugins/teledisk_loader/wteledsk.htm | 923 +++++ .../plugins/ti99pc99_loader/ti99pc99_loader.c | 393 ++ .../plugins/ti99pc99_loader/ti99pc99_loader.h | 31 + .../plugins/ti99v9t9_loader/ti99v9t9_loader.c | 460 +++ .../plugins/ti99v9t9_loader/ti99v9t9_loader.h | 31 + .../common/plugins/trd_loader/TAP_Format.pdf | Bin 0 -> 49533 bytes .../common/plugins/trd_loader/TRD_Format.pdf | Bin 0 -> 120177 bytes .../common/plugins/trd_loader/trd_loader.c | 264 ++ .../common/plugins/trd_loader/trd_loader.h | 30 + .../common/plugins/vdk_loader/VDK_Format.txt | 87 + .../common/plugins/vdk_loader/vdk_format.h | 13 + .../common/plugins/vdk_loader/vdk_loader.c | 196 + .../common/plugins/vdk_loader/vdk_loader.h | 31 + .../plugins/vegasdsk_loader/vegasdsk_loader.c | 285 ++ .../plugins/vegasdsk_loader/vegasdsk_loader.h | 31 + .../common/plugins/vtr_loader/vtr_loader.c | 234 ++ .../common/plugins/vtr_loader/vtr_loader.h | 30 + .../common/plugins/w30_loader/w30_loader.c | 192 + .../common/plugins/w30_loader/w30_loader.h | 31 + .../hxcfe-1.6.11.16/common/raw_file_writer.c | 163 + .../hxcfe-1.6.11.16/common/raw_file_writer.h | 38 + .../hxcfe-1.6.11.16/common/sector_extractor.c | 773 ++++ .../hxcfe-1.6.11.16/common/sector_extractor.h | 31 + .../tools/hxcfe-1.6.11.16/common/types.h | 27 + .../common/usb_floppyemulator/cpld_opcodes.h | 9 + .../usb_hxcfloppyemulator.c | 960 +++++ .../usb_hxcfloppyemulator.h | 90 + .../usb_floppyemulator/variablebitrate.c | 1102 ++++++ .../usb_floppyemulator/variablebitrate.h | 55 + .../tools/hxcfe-1.6.11.16/common/version.h | 10 + .../common/vtrucco_file_writer.c | 228 ++ .../common/vtrucco_file_writer.h | 68 + cpctelera/tools/hxcfe-1.6.11.16/ftd2xx.cfg | 6 + cpctelera/tools/hxcfe-1.6.11.16/ftd2xx.h | 946 +++++ cpctelera/tools/hxcfe-1.6.11.16/ftdi.c | 516 +++ cpctelera/tools/hxcfe-1.6.11.16/ftdi.h | 46 + .../tools/hxcfe-1.6.11.16/hxcfloppyemu.c | 253 ++ .../hxcfe-1.6.11.16/hxcfloppyemu_convert.c | 261 ++ .../hxcfloppyemulator_convert.exe | Bin 0 -> 642794 bytes .../hxcfloppyemulator_soft_release_notes.txt | 676 ++++ .../tools/hxcfe-1.6.11.16/libftd2xx.a.0.4.13 | Bin 0 -> 438672 bytes .../tools/hxcfe-1.6.11.16/libftdi-0.14.tar.gz | Bin 0 -> 368634 bytes cpctelera/tools/hxcfe-1.6.11.16/linux_api.c | 309 ++ cpctelera/tools/hxcfe-1.6.11.16/linux_api.h | 63 + .../tools/scripts/templates/build_config.mk | 5 +- 600 files changed, 143123 insertions(+), 1 deletion(-) create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/COPYING create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/COPYING_FULL create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/README.TXT create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/WinTypes.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/floppy_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/floppy_utils.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_utils.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/includes/hxc_floppy_emulator.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/includes/internal_floppy.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/AUTHORS.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Boot/stdboot3.bbk create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/CHANGES.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/COPYING.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/.depend create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Extdir/.info create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.output create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.usage create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/API.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/version0.7.9d_gary.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info_V0_9.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/image/adf_dir.gif create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/image/adf_file.gif create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/FilesToInstall create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/.depend create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Generic/adf_nativ.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Generic/adf_nativ.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/adf_nativ.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/adf_nativ.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/adfvolinfo.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/defendian.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/nt4_dev.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/Win32/nt4_dev.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_bitm.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_bitm.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_blk.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_cache.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_cache.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_defs.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_dir.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_dir.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_disk.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_disk.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_dump.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_dump.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_env.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_env.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_err.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_file.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_file.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_hd.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_hd.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_link.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_link.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_nativ.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_nativ.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_raw.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_raw.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_salv.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_salv.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_str.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_util.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adf_util.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/adflib.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/defendian.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/hd_blk.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/myconf create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/myconf.sh create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Lib/prefix.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/README.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/adflib.dsw create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/adfwrapper.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/dynlib.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/dynunadf.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/gen_spec.sh create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/staticlib.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/staticunadf.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/capslib/CapsAPI.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/capslib/Comtype.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/cpcfs.cfg create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/cpcfs.doc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/cpcfs.hlp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/cpmdisks.def create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/descript.ion create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/file_id.diz create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/getcpm.bas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/readme create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/Tools.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/Unix.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/cpcfs.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/cpcfs.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/cpcfs.prj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/descript.ion create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/dos.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/dos.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/fs.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/keywords.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/makedoc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/makedoc.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/match.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/match.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/readdef.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/ui.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/src/unix.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/cpcfs/template.doc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/libsap/libsap.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/libsap/libsap.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/libsap/libsap.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/libsap/licence.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/vfile.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/vfile.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/COPYING create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/ChangeLog.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/Makefile.in create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/configure create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/gentoo/xdms-1.3.1.ebuild create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/Makefile.in create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/cdata.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/crc_csum.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/crc_csum.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/getbits.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/getbits.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/maketbl.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/maketbl.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/pfile.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/pfile.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/smakefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/tables.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/tables.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_deep.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_deep.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_heavy.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_heavy.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_init.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_init.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_medium.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_medium.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_quick.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_quick.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_rle.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/u_rle.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/src/xdms.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/xdms.1 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/xdms/xdms-1.3.2/xdms.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/CMakeLists.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/ChangeLog create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/FAQ create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/INDEX create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/Makefile.in create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/adler32.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/amiga/Makefile.pup create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/amiga/Makefile.sas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/compress.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/configure create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/README.contrib create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/buffer_demo.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/mtest.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/read.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/test.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib-streams.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib-streams.ads create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib-thin.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib-thin.ads create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib.adb create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib.ads create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/ada/zlib.gpr create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/amd64/amd64-match.S create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/asm686/README.686 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/asm686/match.S create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/blast.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/blast.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/test.pk create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/blast/test.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/delphi/ZLib.pas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/delphi/ZLibConst.pas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/delphi/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/delphi/zlibd32.mak create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib.build create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib.chm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib.sln create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/CodecBase.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/Deflater.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/DotZLib.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/GZipStream.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/Inflater.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/DotZLib/UnitTests.cs create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/LICENSE_1_0.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/dotzlib/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/gcc_gvmat64/gvmat64.S create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/infback9.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/infback9.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/inffix9.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/inflate9.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/inftree9.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/infback9/inftree9.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/inflate86/inffas86.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/inflate86/inffast.S create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream/test.cpp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream/zfstream.cpp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream/zfstream.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream2/zstream.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream2/zstream_test.cpp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream3/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream3/TODO create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream3/test.cc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream3/zfstream.cc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/iostream3/zfstream.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx64/bld_ml64.bat create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx64/gvmat64.asm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx64/inffas8664.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx64/inffasx64.asm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx64/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx86/bld_ml32.bat create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx86/inffas32.asm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx86/match686.asm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/masmx86/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/MiniZip64_Changes.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/MiniZip64_info.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/crypt.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/ioapi.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/ioapi.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/iowin32.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/iowin32.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/make_vms.com create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/miniunz.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/minizip.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/mztools.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/mztools.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/unzip.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/unzip.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/zip.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/zip.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/minizip/zlib.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/pascal/example.pas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/pascal/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/pascal/zlibd32.mak create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/pascal/zlibpas.pas create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/puff/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/puff/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/puff/puff.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/puff/puff.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/puff/zeros.raw create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/testzlib/testzlib.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/testzlib/testzlib.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/untgz/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/untgz/Makefile.msc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/untgz/untgz.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/miniunz.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/minizip.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlib.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/testzlibdll.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlib.rc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibstat.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibvc.def create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibvc.sln create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.filters create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc10/zlibvc.vcxproj.user create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/miniunz.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/minizip.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/testzlib.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/testzlibdll.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/zlib.rc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/zlibstat.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/zlibvc.def create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/zlibvc.sln create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/contrib/vstudio/vc9/zlibvc.vcproj create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/crc32.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/crc32.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/deflate.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/deflate.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/doc/algorithm.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/doc/rfc1950.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/doc/rfc1951.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/doc/rfc1952.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/doc/txtvsbin.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/example.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/README.examples create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/enough.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/fitblk.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/gun.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/gzappend.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/gzjoin.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/gzlog.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/gzlog.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/zpipe.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/examples/zran.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/gzclose.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/gzguts.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/gzlib.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/gzread.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/gzwrite.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/infback.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inffast.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inffast.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inffixed.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inflate.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inflate.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inftrees.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/inftrees.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/make_vms.com create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/minigzip.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/msdos/Makefile.bor create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/msdos/Makefile.dj2 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/msdos/Makefile.emx create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/msdos/Makefile.msc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/msdos/Makefile.tc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/nintendods/Makefile create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/nintendods/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/Makefile.riscos create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/README create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/as400/bndsrc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/as400/compile.clp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/as400/readme.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/as400/zlib.inc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/descrip.mms create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/os2/Makefile.os2 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/os2/zlib.def create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visual-basic.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visualc6/README.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visualc6/example.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visualc6/minigzip.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visualc6/zlib.dsp create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/old/visualc6/zlib.dsw create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/qnx/package.qpg create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/treebuild.xml create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/trees.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/trees.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/uncompr.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/watcom/watcom_f.mak create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/watcom/watcom_l.mak create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/DLL_FAQ.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/Makefile.bor create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/Makefile.emx create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/Makefile.gcc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/Makefile.msc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/README-WIN32.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/VisualC.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/zlib.def create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/win32/zlib1.rc create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zconf.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zconf.h.cmakein create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zconf.h.in create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zlib.3 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zlib.3.pdf create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zlib.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zlib.pc.in create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zlib2ansi create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zutil.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/libs/zlib/zutil.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/licensetxt.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/loaders_list.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/mfm_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/mfm_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/os_api.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/acornadf_loader/acornadf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/acornadf_loader/acornadf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adf_loader/adf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adf_loader/adf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adl_loader/adl_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adl_loader/adl_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adz_loader/adz_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/adz_loader/adz_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/afi_loader/afi_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/afi_loader/afi_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/amigadosfs_loader/amigadosfs_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/amigadosfs_loader/amigadosfs_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/amigadosfs_loader/stdboot3.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/apridisk_loader/apridisk_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/apridisk_loader/apridisk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/apridisk_loader/apridisk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/camputerslynxldf_loader/camputerslynxldf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/camputerslynxldf_loader/camputerslynxldf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/crc.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/crc.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/crcgenerator.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/emuii_track.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/emuii_track.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/gcr_track.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/gcr_track.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/track_generator.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/common/track_generator.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/copyqm_loader/copyqm_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/copyqm_loader/copyqm_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/copyqm_loader/crctable.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/copyqm_loader/crctable.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/cpcdsk_loader/cpcdsk_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/cpcdsk_loader/cpcdsk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/cpcdsk_loader/cpcdsk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/cpcfs_loader/cpcfs_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/cpcfs_loader/cpcfs_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d64_loader/d64_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d64_loader/d64_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d81_loader/d81_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d81_loader/d81_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d88_loader/d88_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d88_loader/d88_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/d88_loader/d88_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dim_loader/dim-format.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dim_loader/dim_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dim_loader/dim_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dmk_loader/dmk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dmk_loader/dmk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dms_loader/dms_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dms_loader/dms_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dpx_loader/dpx_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/dpx_loader/dpx_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ede_loader/ede_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ede_loader/ede_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emax_loader/emax_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emax_loader/emax_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emui_raw_loader/emui_raw_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emui_raw_loader/emui_raw_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emuii_loader/emuii_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emuii_loader/emuii_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emuii_raw_loader/emuii_raw_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/emuii_raw_loader/emuii_raw_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ensoniq_mirage_loader/ensoniq_mirage_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ensoniq_mirage_loader/ensoniq_mirage_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/extadf_loader/extadf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/extadf_loader/extadf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fat12.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fat12.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fat12floppy_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fat12floppy_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fat12formats.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fatlib.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/fatlib.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fat12floppy_loader/pcbootsector.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fd_loader/fd_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fd_loader/fd_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fdi_loader/fdi_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fdi_loader/fdi_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fdi_loader/fdi_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fei_loader/fei_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/fei_loader/fei_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/gkh_loader/gkh_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/gkh_loader/gkh_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/gkh_loader/gkh_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/hdm_loader/hdm_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/hdm_loader/hdm_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/hfe_loader/hfe_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/hfe_loader/hfe_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/imd_loader/imd_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/imd_loader/imd_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/imd_loader/imd_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/img_loader/img_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/img_loader/img_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/img_loader/pcimgfileformat.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/imz_loader/imz_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/imz_loader/imz_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ipf_loader/capslibloader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ipf_loader/ipf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ipf_loader/ipf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jv1_loader/jv1_format.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jv1_loader/jv1_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jv1_loader/jv1_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jv3_loader/jv3_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jv3_loader/jv3_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jvc_loader/jvc_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/jvc_loader/jvc_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/krz_loader/krz_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/krz_loader/krz_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/mfm_loader/mfm_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/mfm_loader/mfm_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/mgt_loader/mgt_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/mgt_loader/mgt_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/msa_loader/msa_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/msa_loader/msa_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/msx_loader/msx_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/msx_loader/msx_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/msx_loader/msxfileformat.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/oldextadf_loader/oldextadf_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/oldextadf_loader/oldextadf_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/oricdsk_loader/oricdsk_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/oricdsk_loader/oricdsk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/oricdsk_loader/oricdsk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/prophet_loader/prophet_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/prophet_loader/prophet_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/raw_loader/raw_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/raw_loader/raw_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/sad_loader/sad_fileformat.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/sad_loader/sad_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/sad_loader/sad_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/sap_loader/sap_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/sap_loader/sap_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/scl_loader/scl_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/scl_loader/scl_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/smc_loader/snes_smc_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/smc_loader/snes_smc_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ssd_dsd_loader/ssd_dsd_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ssd_dsd_loader/ssd_dsd_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/st_loader/st_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/st_loader/st_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/st_loader/stfileformat.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stt_loader/STT Format.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stt_loader/stt_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stt_loader/stt_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stt_loader/sttfileformat.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stx_loader/pasti_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stx_loader/stx_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/stx_loader/stx_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/svd_loader/svd.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/svd_loader/svd_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/svd_loader/svd_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/td0_lzss.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/td0_lzss.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/td0notes.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/teledisk_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/teledisk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/teledisk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/teledisk_loader/wteledsk.htm create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ti99pc99_loader/ti99pc99_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ti99pc99_loader/ti99pc99_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ti99v9t9_loader/ti99v9t9_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/ti99v9t9_loader/ti99v9t9_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/trd_loader/TAP_Format.pdf create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/trd_loader/TRD_Format.pdf create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/trd_loader/trd_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/trd_loader/trd_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vdk_loader/VDK_Format.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vdk_loader/vdk_format.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vdk_loader/vdk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vdk_loader/vdk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vegasdsk_loader/vegasdsk_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vegasdsk_loader/vegasdsk_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vtr_loader/vtr_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/vtr_loader/vtr_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/w30_loader/w30_loader.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/plugins/w30_loader/w30_loader.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/raw_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/raw_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/sector_extractor.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/sector_extractor.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/types.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/usb_floppyemulator/cpld_opcodes.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/usb_floppyemulator/usb_hxcfloppyemulator.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/usb_floppyemulator/usb_hxcfloppyemulator.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/usb_floppyemulator/variablebitrate.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/usb_floppyemulator/variablebitrate.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/version.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/vtrucco_file_writer.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/common/vtrucco_file_writer.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/ftd2xx.cfg create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/ftd2xx.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/ftdi.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/ftdi.h create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/hxcfloppyemu.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/hxcfloppyemu_convert.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/hxcfloppyemulator_convert.exe create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/hxcfloppyemulator_soft_release_notes.txt create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/libftd2xx.a.0.4.13 create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/libftdi-0.14.tar.gz create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/linux_api.c create mode 100755 cpctelera/tools/hxcfe-1.6.11.16/linux_api.h diff --git a/.gitignore b/.gitignore index 37722ccbf..93faa2c6b 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,62 @@ printer.txt *.binamsdos *.binamsdos.log cpctelera/tools/sdcc-3.5.0/share + +*.cpc +*.tmp +\#*# +.#* +*.html +*.disabled +*.bak +**/sdcc-3.5.5/**/*.asm +**/img2cpc/Makefile.this +**/sdcc-3.5.5/share/ +**/winape/ +*.mp3 +*.wav +*.status +*.log +*~ +*.bak +*.bin +*.bin.log +*.binamsdos +*.binamsdos.log +build_config.inc +*.buildtree/ +*.cdt +download +*.downloadlog.txt +*.dsk +*.ihx +*.installtree/ +*.lib +*.lk +*.lst +*.map +*.noi +*.opt +*.ref +*.rel +*.rst +*.sym +*.tar.bz2 +*.tgz +*.tmp +*.voc +*.o +bin/ +obj/ + +printer.txt +*.dump*_*.dot +*~HEAD +*~junk +*~Junk + +*.binamsdos +*.binamsdos.log +cpctelera/tools/sdcc-3.5.0/share + +*.hfe \ No newline at end of file diff --git a/cpctelera/cfg/global_functions.mk b/cpctelera/cfg/global_functions.mk index 3e9e32d26..5d33881c4 100644 --- a/cpctelera/cfg/global_functions.mk +++ b/cpctelera/cfg/global_functions.mk @@ -137,6 +137,16 @@ $(3): $(2) endef +################# +# CONVERTHFE: Convert Dsk to Hfe file for Gotek USB driver +# +# $(1): DSK file where the binary will be included +# +define CONVERTHFE + @$(HFE) $(1) -HFE &> /dev/null + @$(call PRINT,$(1),"Convert DSK file $(1) to HFE") +endef + ################# # CREATECDT: Create a CDT file with the BINARY added to it and converted to AMSDOS BINARY # diff --git a/cpctelera/cfg/global_main_makefile.mk b/cpctelera/cfg/global_main_makefile.mk index ca35858fb..3e5753220 100644 --- a/cpctelera/cfg/global_main_makefile.mk +++ b/cpctelera/cfg/global_main_makefile.mk @@ -80,6 +80,12 @@ $(DSKINC): $(DSK) $(DSKINCOBJFILES) @$(call PRINT,$(PROJNAME),"All files added to $(DSK). Disc ready.") @touch $(DSKINC) +# GENERATE AN HFE FILE WITH DSK FILE FOR GOTEK USB FLOPPY DISK +%.hfe: $(DSK) + @$(call PRINT,$(PROJNAME),"Creating Hfe File $(DSK) ") + @$(call CONVERTHFE,$(DSK)) + @$(call PRINT,$(PROJNAME),"Successfully created $@") + # CREATE OBJDIR & SUBDIRS IF THEY DO NOT EXIST $(OBJSUBDIRS): @$(MKDIR) $@ diff --git a/cpctelera/cfg/global_paths.mk b/cpctelera/cfg/global_paths.mk index 980133585..f5cf637af 100644 --- a/cpctelera/cfg/global_paths.mk +++ b/cpctelera/cfg/global_paths.mk @@ -59,6 +59,7 @@ HEX2BIN_PATH := $(CPCT_PATH)tools/hex2bin-2.0/bin/ IDSK_PATH := $(CPCT_PATH)tools/iDSK-0.13/bin/ 2CDT_PATH := $(CPCT_PATH)tools/2cdt/bin/ SCRIPTS_PATH := $(CPCT_PATH)tools/scripts/ +HFE_PATH := $(CPCT_PATH)tools/hxcfe-1.6.11.16/ # PATHs FOR CPCTELERA SOURCES AND LIBRARY FILE CPCT_SRC := $(CPCT_PATH)src @@ -74,6 +75,7 @@ HEX2BIN := $(HEX2BIN_PATH)hex2bin IDSK := $(IDSK_PATH)iDSK 2CDT := $(2CDT_PATH)2cdt BIN2C := $(SCRIPTS_PATH)cpct_bin2c +HFE := $(HFE_PATH)hxcfloppyemulator_convert.exe ## SHELL TOOLS ALIASES TOUCH := touch diff --git a/cpctelera/tools/hxcfe-1.6.11.16/COPYING b/cpctelera/tools/hxcfe-1.6.11.16/COPYING new file mode 100755 index 000000000..94a9ed024 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/cpctelera/tools/hxcfe-1.6.11.16/COPYING_FULL b/cpctelera/tools/hxcfe-1.6.11.16/COPYING_FULL new file mode 100755 index 000000000..78599be91 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/COPYING_FULL @@ -0,0 +1,792 @@ + HxC Floppy Emulator - A generic/universal floppy disk drive emulator + Copyright (C) 2006-2011 Jean-François DEL NERO / HxC2001 + + contact: hxc2001( a t )free.fr + website: http://hxc2001.free.fr/floppy_drive_emulator + forum: http://www.torlus.com/floppy/forum + + HxCFloppyEmulator may be used and distributed without restriction provided + that this copyright statement is not removed from the file and that any + derivative work contains the original copyright notice and the associated + disclaimer. + + HxCFloppyEmulator is free software; you can redistribute it + and/or modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + HxCFloppyEmulator is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with HxCFloppyEmulator; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + + The HxCFloppyEmulator software embedded the following libraries : + + ----------------------------------------------------------------------------------------------- + ADFLib : + + ADFLib is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + ADFLib is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + The main developper is + Laurent Clévy (laurent.clevy (a t) club-internet.fr) + + Contributors are: + Bjarne Viksoe + (C++ wrapper, lot of bug fixes) + Gary Harris + (bug fixes and W32 support) + Dan Sutherland + (bug fixes and W32 support) + + See CHANGES.txt for detailed contributions. + ----------------------------------------------------------------------------------------------- + + xDMS v1.3 - Portable DMS archive unpacker - Public Domain + Written by Andre Rodrigues de la Rocha + xdms is licensed under PUBLIC DOMAIN. Read xdms.txt. + + ----------------------------------------------------------------------------------------------- + + LibSAP + Version 0.9.4 + Copyright (C) 2000-2003 Eric Botcazou + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + ----------------------------------------------------------------------------------------------- + ZLIB DATA COMPRESSION LIBRARY + zlib 1.2.3 is a general purpose data compression library. + + (C) 1995-2004 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup(a t)gzip.org madler(a t)alumni.caltech.edu + + If you use the zlib library in a product, we would appreciate *not* + receiving lengthy legal documents to sign. The sources are provided + for free but without warranty of any kind. The library has been + entirely written by Jean-loup Gailly and Mark Adler; it does not + include third-party code. + + ----------------------------------------------------------------------------------------------- + + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/cpctelera/tools/hxcfe-1.6.11.16/Makefile b/cpctelera/tools/hxcfe-1.6.11.16/Makefile new file mode 100755 index 000000000..6a5c703fd --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/Makefile @@ -0,0 +1,413 @@ +#CC=i386-pc-linux-gcc +CC=gcc + +ifdef IPF_LIB_SUPPORT + CFLAGS=-O3 -I . -I common/ -I common/includes -I common/ftdi_floppyemulator -DIPF_SUPPORT + DISKLOADERPLUGINS_IPF= ipf_loader.o libcapsimage.so.2.0 +else + CFLAGS=-O3 -I . -I common/ -I common/includes -I common/ftdi_floppyemulator + DISKLOADERPLUGINS_IPF= +endif + +LDFLAGS=-lc -lm -ldl -lpthread +EXEC=hxcfloppyemulator_convert + +ADFLIBOBJ= adf_hd.o adf_disk.o adf_raw.o adf_bitm.o adf_dump.o\ + adf_util.o adf_env.o adf_nativ.o adf_dir.o adf_file.o adf_cache.o \ + adf_link.o adf_salv.o + +XDMSLIBOBJ= getbits.o crc_csum.o maketbl.o pfile.o getbits.o tables.o u_deep.o u_heavy.o u_init.o u_medium.o u_quick.o u_rle.o + +ZLIBOBJ=adler32.o compress.o crc32.o deflate.o gzlib.o gzread.o gzwrite.o gzclose.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o + +MINIZIPOBJ=ioapi.o mztools.o unzip.o zip.o + +FTDIFLOPPYEMU=usb_hxcfloppyemulator.o variablebitrate.o + +DISKLOADERPLUGINS=copyqm_loader.o crctable.o adf_loader.o adz_loader.o amigadosfs_loader.o vfile.o cpcdsk_loader.o \ + msa_loader.o msx_loader.o smc_loader.o st_loader.o stx_loader.o img_loader.o dms_loader.o mfm_loader.o\ + oricdsk_loader.o d64_loader.o trd_loader.o scl_loader.o fat12floppy_loader.o fat12.o\ + hfe_loader.o imd_loader.o afi_loader.o sap_loader.o libsap.o jv1_loader.o vtr_loader.o d88_loader.o hdm_loader.o\ + ti99pc99_loader.o apridisk_loader.o ede_loader.o fd_loader.o vdk_loader.o dpx_loader.o mgt_loader.o emax_loader.o\ + ensoniq_mirage_loader.o sad_loader.o jv3_loader.o stt_loader.o prophet_loader.o teledisk_loader.o td0_lzss.o\ + emuii_raw_loader.o emuii_loader.o emui_raw_loader.o jvc_loader.o dim_loader.o ti99v9t9_loader.o d81_loader.o acornadf_loader.o \ + camputerslynxldf_loader.o vegasdsk_loader.o dmk_loader.o oldextadf_loader.o extadf_loader.o fdi_loader.o ssd_dsd_loader.o adl_loader.o \ + krz_loader.o w30_loader.o fei_loader.o svd_loader.o gkh_loader.o imz_loader.o + + +all: $(EXEC) + +hxcfloppyemulator_convert: hxcfloppyemu_convert.o floppy_loader.o floppy_utils.o linux_api.o emuii_track.o crc.o track_generator.o gcr_track.o mfm_file_writer.o hfe_file_writer.o afi_file_writer.o cpcdsk_file_writer.o raw_file_writer.o sector_extractor.o $(ADFLIBOBJ) $(DISKLOADERPLUGINS) $(DISKLOADERPLUGINS_IPF) $(XDMSLIBOBJ) $(ZLIBOBJ) $(MINIZIPOBJ) + $(CC) -o $@ $^ $(LDFLAGS) -DFTDILIB + +hxcfloppyemulator_d2xx: hxcfloppyemu.o floppy_loader.o floppy_utils.o linux_api.o ftdi_d2xxmode.o emuii_track.o crc.o track_generator.o gcr_track.o mfm_file_writer.o hfe_file_writer.o afi_file_writer.o cpcdsk_file_writer.o sector_extractor.o $(ADFLIBOBJ) $(DISKLOADERPLUGINS) $(DISKLOADERPLUGINS_IPF) $(XDMSLIBOBJ) $(ZLIBOBJ) $(MINIZIPOBJ) $(FTDIFLOPPYEMU) libftd2xx.a.0.4.13 + $(CC) -o $@ $^ $(LDFLAGS) + +hxcfloppyemulator: hxcfloppyemu.o floppy_loader.o floppy_utils.o linux_api.o ftdi_libftdimode.o emuii_track.o crc.o track_generator.o gcr_track.o mfm_file_writer.o hfe_file_writer.o afi_file_writer.o cpcdsk_file_writer.o sector_extractor.o $(ADFLIBOBJ) $(DISKLOADERPLUGINS) $(DISKLOADERPLUGINS_IPF) $(XDMSLIBOBJ) $(ZLIBOBJ) $(MINIZIPOBJ) $(FTDIFLOPPYEMU) /usr/local/lib/libftdi.so.1 + $(CC) -o $@ $^ $(LDFLAGS) -DFTDILIB + +hxcfloppyemu_convert.o: hxcfloppyemu_convert.c + $(CC) -o $@ -c $< $(CFLAGS) + +hxcfloppyemu.o: hxcfloppyemu.c + $(CC) -o $@ -c $< $(CFLAGS) + +floppy_loader.o: common/floppy_loader.c + $(CC) -o $@ -c $< $(CFLAGS) + +floppy_utils.o: common/floppy_utils.c + $(CC) -o $@ -c $< $(CFLAGS) + +linux_api.o: linux_api.c + $(CC) -o $@ -c $< $(CFLAGS) + +usb_hxcfloppyemulator.o : common/usb_floppyemulator/usb_hxcfloppyemulator.c + $(CC) -o $@ -c $< $(CFLAGS) + +variablebitrate.o : common/usb_floppyemulator/variablebitrate.c + $(CC) -o $@ -c $< $(CFLAGS) + +mfm_file_writer.o : common/mfm_file_writer.c common/mfm_file_writer.h + $(CC) -o $@ -c $< $(CFLAGS) + +hfe_file_writer.o : common/hfe_file_writer.c common/hfe_file_writer.h + $(CC) -o $@ -c $< $(CFLAGS) + +raw_file_writer.o : common/raw_file_writer.c common/raw_file_writer.h + $(CC) -o $@ -c $< $(CFLAGS) + +afi_file_writer.o : common/afi_file_writer.c common/afi_file_writer.h + $(CC) -o $@ -c $< $(CFLAGS) + +cpcdsk_file_writer.o : common/cpcdsk_file_writer.c common/cpcdsk_file_writer.h + $(CC) -o $@ -c $< $(CFLAGS) + +sector_extractor.o : common/sector_extractor.c common/sector_extractor.h + $(CC) -o $@ -c $< $(CFLAGS) + +emuii_track.o: common/plugins/common/emuii_track.c common/plugins/common/emuii_track.h + $(CC) -o $@ -c $< $(CFLAGS) + +crc.o: common/plugins/common/crc.c common/plugins/common/crc.h + $(CC) -o $@ -c $< $(CFLAGS) + +track_generator.o : common/plugins/common/track_generator.c common/plugins/common/track_generator.h + $(CC) -o $@ -c $< $(CFLAGS) + +gcr_track.o : common/plugins/common/gcr_track.c common/plugins/common/gcr_track.h + $(CC) -o $@ -c $< $(CFLAGS) + +apridisk_loader.o : common/plugins/apridisk_loader/apridisk_loader.c common/plugins/apridisk_loader/apridisk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ede_loader.o : common/plugins/ede_loader/ede_loader.c common/plugins/ede_loader/ede_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +gkh_loader.o : common/plugins/gkh_loader/gkh_loader.c common/plugins/gkh_loader/gkh_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ti99pc99_loader.o : common/plugins/ti99pc99_loader/ti99pc99_loader.c common/plugins/ti99pc99_loader/ti99pc99_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ti99v9t9_loader.o : common/plugins/ti99v9t9_loader/ti99v9t9_loader.c common/plugins/ti99v9t9_loader/ti99v9t9_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +imd_loader.o : common/plugins/imd_loader/imd_loader.c common/plugins/imd_loader/imd_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +hfe_loader.o : common/plugins/hfe_loader/hfe_loader.c common/plugins/hfe_loader/hfe_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +copyqm_loader.o : common/plugins/copyqm_loader/copyqm_loader.c common/plugins/copyqm_loader/crctable.c common/plugins/copyqm_loader/copyqm_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +crctable.o : common/plugins/copyqm_loader/crctable.c common/plugins/copyqm_loader/crctable.h + $(CC) -o $@ -c $< $(CFLAGS) + +adf_loader.o : common/plugins/adf_loader/adf_loader.c common/plugins/adf_loader/adf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +extadf_loader.o : common/plugins/extadf_loader/extadf_loader.c common/plugins/extadf_loader/extadf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +oldextadf_loader.o : common/plugins/oldextadf_loader/oldextadf_loader.c common/plugins/oldextadf_loader/oldextadf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +acornadf_loader.o : common/plugins/acornadf_loader/acornadf_loader.c common/plugins/acornadf_loader/acornadf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +cpcdsk_loader.o : common/plugins/cpcdsk_loader/cpcdsk_loader.c common/plugins/cpcdsk_loader/cpcdsk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +msa_loader.o : common/plugins/msa_loader/msa_loader.c common/plugins/msa_loader/msa_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +msx_loader.o : common/plugins/msx_loader/msx_loader.c common/plugins/msx_loader/msx_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +st_loader.o : common/plugins/st_loader/st_loader.c common/plugins/st_loader/st_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +dim_loader.o : common/plugins/dim_loader/dim_loader.c common/plugins/dim_loader/dim_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +stt_loader.o : common/plugins/stt_loader/stt_loader.c common/plugins/stt_loader/stt_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +stx_loader.o : common/plugins/stx_loader/stx_loader.c common/plugins/stx_loader/stx_loader.h common/plugins/stx_loader/pasti_format.h + $(CC) -o $@ -c $< $(CFLAGS) + +img_loader.o : common/plugins/img_loader/img_loader.c common/plugins/img_loader/img_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +imz_loader.o : common/plugins/imz_loader/imz_loader.c common/plugins/imz_loader/imz_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +d64_loader.o : common/plugins/d64_loader/d64_loader.c common/plugins/d64_loader/d64_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +d81_loader.o : common/plugins/d81_loader/d81_loader.c common/plugins/d81_loader/d81_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +d88_loader.o : common/plugins/d88_loader/d88_loader.c common/plugins/d88_loader/d88_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +trd_loader.o : common/plugins/trd_loader/trd_loader.c common/plugins/trd_loader/trd_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +scl_loader.o : common/plugins/scl_loader/scl_loader.c common/plugins/scl_loader/scl_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +mfm_loader.o : common/plugins/mfm_loader/mfm_loader.c common/plugins/mfm_loader/mfm_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +svd_loader.o : common/plugins/svd_loader/svd_loader.c common/plugins/svd_loader/svd_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +smc_loader.o : common/plugins/smc_loader/snes_smc_loader.c common/plugins/smc_loader/snes_smc_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +krz_loader.o : common/plugins/krz_loader/krz_loader.c common/plugins/krz_loader/krz_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +camputerslynxldf_loader.o : common/plugins/camputerslynxldf_loader/camputerslynxldf_loader.c common/plugins/camputerslynxldf_loader/camputerslynxldf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +vegasdsk_loader.o : common/plugins/vegasdsk_loader/vegasdsk_loader.c common/plugins/vegasdsk_loader/vegasdsk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +jv1_loader.o : common/plugins/jv1_loader/jv1_loader.c common/plugins/jv1_loader/jv1_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +jv3_loader.o : common/plugins/jv3_loader/jv3_loader.c common/plugins/jv3_loader/jv3_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +dmk_loader.o : common/plugins/dmk_loader/dmk_loader.c common/plugins/dmk_loader/dmk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +sap_loader.o : common/plugins/sap_loader/sap_loader.c common/plugins/sap_loader/sap_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +fd_loader.o : common/plugins/fd_loader/fd_loader.c common/plugins/fd_loader/fd_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ipf_loader.o : common/plugins/ipf_loader/ipf_loader.c common/plugins/ipf_loader/ipf_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +fdi_loader.o : common/plugins/fdi_loader/fdi_loader.c common/plugins/fdi_loader/fdi_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +adl_loader.o : common/plugins/adl_loader/adl_loader.c common/plugins/adl_loader/adl_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ssd_dsd_loader.o : common/plugins/ssd_dsd_loader/ssd_dsd_loader.c common/plugins/ssd_dsd_loader/ssd_dsd_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +fat12floppy_loader.o : common/plugins/fat12floppy_loader/fat12floppy_loader.c common/plugins/fat12floppy_loader/fat12floppy_loader.h + $(CC) -o $@ -c $< $(CFLAGS) +fat12.o : common/plugins/fat12floppy_loader/fat12.c common/plugins/fat12floppy_loader/fat12.h + $(CC) -o $@ -c $< $(CFLAGS) + +oricdsk_loader.o : common/plugins/oricdsk_loader/oricdsk_loader.c common/plugins/oricdsk_loader/oricdsk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +afi_loader.o : common/plugins/afi_loader/afi_loader.c common/plugins/afi_loader/afi_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +amigadosfs_loader.o : common/plugins/amigadosfs_loader/amigadosfs_loader.c common/plugins/amigadosfs_loader/amigadosfs_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +dms_loader.o : common/plugins/dms_loader/dms_loader.c common/plugins/dms_loader/dms_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +mgt_loader.o : common/plugins/mgt_loader/mgt_loader.c common/plugins/mgt_loader/mgt_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +sad_loader.o : common/plugins/sad_loader/sad_loader.c common/plugins/sad_loader/sad_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +emax_loader.o : common/plugins/emax_loader/emax_loader.c common/plugins/emax_loader/emax_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +ensoniq_mirage_loader.o : common/plugins/ensoniq_mirage_loader/ensoniq_mirage_loader.c common/plugins/ensoniq_mirage_loader/ensoniq_mirage_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +w30_loader.o : common/plugins/w30_loader/w30_loader.c common/plugins/w30_loader/w30_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +prophet_loader.o : common/plugins/prophet_loader/prophet_loader.c common/plugins/prophet_loader/prophet_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +teledisk_loader.o : common/plugins/teledisk_loader/teledisk_loader.c common/plugins/teledisk_loader/teledisk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +td0_lzss.o : common/plugins/teledisk_loader/td0_lzss.c common/plugins/teledisk_loader/td0_lzss.h + $(CC) -o $@ -c $< $(CFLAGS) + +vtr_loader.o : common/plugins/vtr_loader/vtr_loader.c common/plugins/vtr_loader/vtr_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +vdk_loader.o : common/plugins/vdk_loader/vdk_loader.c common/plugins/vdk_loader/vdk_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +dpx_loader.o : common/plugins/dpx_loader/dpx_loader.c common/plugins/dpx_loader/dpx_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +jvc_loader.o : common/plugins/jvc_loader/jvc_loader.c common/plugins/jvc_loader/jvc_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +hdm_loader.o : common/plugins/hdm_loader/hdm_loader.c common/plugins/hdm_loader/hdm_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +emuii_loader.o : common/plugins/emuii_loader/emuii_loader.c common/plugins/emuii_loader/emuii_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +emuii_raw_loader.o : common/plugins/emuii_raw_loader/emuii_raw_loader.c common/plugins/emuii_raw_loader/emuii_raw_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +emui_raw_loader.o : common/plugins/emui_raw_loader/emui_raw_loader.c common/plugins/emui_raw_loader/emui_raw_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +fei_loader.o : common/plugins/fei_loader/fei_loader.c common/plugins/fei_loader/fei_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + + +vfile.o : common/libs/xdms/vfile.c common/libs/xdms/vfile.h + $(CC) -o $@ -c $< $(CFLAGS) + +adz_loader.o : common/plugins/adz_loader/adz_loader.c common/plugins/adz_loader/adz_loader.h + $(CC) -o $@ -c $< $(CFLAGS) + +adf_hd.o : common/libs/adflib/Lib/adf_hd.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_disk.o : common/libs/adflib/Lib/adf_disk.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_raw.o : common/libs/adflib/Lib/adf_raw.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_bitm.o: common/libs/adflib/Lib/adf_bitm.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_dump.o: common/libs/adflib/Lib/adf_dump.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_util.o : common/libs/adflib/Lib/adf_util.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_env.o : common/libs/adflib/Lib/adf_env.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_nativ.o :common/libs/adflib/Lib/adf_nativ.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_dir.o : common/libs/adflib/Lib/adf_dir.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_file.o : common/libs/adflib/Lib/adf_file.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_cache.o : common/libs/adflib/Lib/adf_cache.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_link.o : common/libs/adflib/Lib/adf_link.c + $(CC) -o $@ -c $< $(CFLAGS) +adf_salv.o : common/libs/adflib/Lib/adf_salv.c + $(CC) -o $@ -c $< $(CFLAGS) + + +getbits.o : common/libs/xdms/xdms-1.3.2/src/getbits.c + $(CC) -o $@ -c $< $(CFLAGS) +crc_csum.o : common/libs/xdms/xdms-1.3.2/src/crc_csum.c + $(CC) -o $@ -c $< $(CFLAGS) +maketbl.o : common/libs/xdms/xdms-1.3.2/src/maketbl.c + $(CC) -o $@ -c $< $(CFLAGS) +pfile.o : common/libs/xdms/xdms-1.3.2/src/pfile.c + $(CC) -o $@ -c $< $(CFLAGS) +tables.o : common/libs/xdms/xdms-1.3.2/src/tables.c + $(CC) -o $@ -c $< $(CFLAGS) +u_deep.o : common/libs/xdms/xdms-1.3.2/src/u_deep.c + $(CC) -o $@ -c $< $(CFLAGS) +u_heavy.o : common/libs/xdms/xdms-1.3.2/src/u_heavy.c + $(CC) -o $@ -c $< $(CFLAGS) +u_init.o : common/libs/xdms/xdms-1.3.2/src/u_init.c + $(CC) -o $@ -c $< $(CFLAGS) +u_medium.o : common/libs/xdms/xdms-1.3.2/src/u_medium.c + $(CC) -o $@ -c $< $(CFLAGS) +u_quick.o : common/libs/xdms/xdms-1.3.2/src/u_quick.c + $(CC) -o $@ -c $< $(CFLAGS) +u_rle.o : common/libs/xdms/xdms-1.3.2/src/u_rle.c + $(CC) -o $@ -c $< $(CFLAGS) + + +adler32.o : common/libs/zlib/adler32.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +compress.o : common/libs/zlib/compress.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +crc32.o : common/libs/zlib/crc32.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +deflate.o : common/libs/zlib/deflate.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +gzlib.o : common/libs/zlib/gzlib.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +gzread.o : common/libs/zlib/gzread.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +gzwrite.o : common/libs/zlib/gzwrite.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +gzclose.o : common/libs/zlib/gzclose.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ + +infback.o : common/libs/zlib/infback.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +inffast.o : common/libs/zlib/inffast.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +inflate.o : common/libs/zlib/inflate.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +inftrees.o : common/libs/zlib/inftrees.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +trees.o : common/libs/zlib/trees.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +uncompr.o : common/libs/zlib/uncompr.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ +zutil.o : common/libs/zlib/zutil.c + $(CC) -o $@ -c $< $(CFLAGS) -DNO_VIZ + +ioapi.o : common/libs/zlib/contrib/minizip/ioapi.c + $(CC) -o $@ -c $< $(CFLAGS) -DNOLONGFILESUPPORT +mztools.o : common/libs/zlib/contrib/minizip/mztools.c + $(CC) -o $@ -c $< $(CFLAGS) +unzip.o : common/libs/zlib/contrib/minizip/unzip.c + $(CC) -o $@ -c $< $(CFLAGS) +zip.o : common/libs/zlib/contrib/minizip/zip.c + $(CC) -o $@ -c $< $(CFLAGS) + + + +libsap.o : common/libs/libsap/libsap.c common/libs/libsap/libsap.h + $(CC) -o $@ -c $< $(CFLAGS) + + +ftdi_d2xxmode.o : ftdi.c ftdi.h ftd2xx.h WinTypes.h + $(CC) -o $@ -c $< $(CFLAGS) + +ftdi_libftdimode.o : ftdi.c ftdi.h ftd2xx.h WinTypes.h + $(CC) -o $@ -c $< $(CFLAGS) -DFTDILIB + + +clean: + rm -rf *.o + +mrproper: clean + rm -rf $(EXEC) + +.PHONY: clean mrproper diff --git a/cpctelera/tools/hxcfe-1.6.11.16/README.TXT b/cpctelera/tools/hxcfe-1.6.11.16/README.TXT new file mode 100755 index 000000000..d9c989e4d --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/README.TXT @@ -0,0 +1,3 @@ +Fail safe make (without IPF support) : + +make hxcfloppyemulator_convert \ No newline at end of file diff --git a/cpctelera/tools/hxcfe-1.6.11.16/WinTypes.h b/cpctelera/tools/hxcfe-1.6.11.16/WinTypes.h new file mode 100755 index 000000000..c37d66ffc --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/WinTypes.h @@ -0,0 +1,87 @@ +#ifndef __WINDOWS_TYPES__ +#define __WINDOWS_TYPES__ + +#define MAX_NUM_DEVICES 50 +#include + +typedef unsigned long DWORD; +typedef unsigned long ULONG; +typedef unsigned short USHORT; +typedef short SHORT; +typedef unsigned char UCHAR; +typedef unsigned short WORD; +typedef unsigned char BYTE; +typedef unsigned char *LPBYTE; +typedef int BOOL; +typedef char BOOLEAN; +typedef char CHAR; +typedef int *LPBOOL; +typedef unsigned char *PUCHAR; +typedef const char *LPCSTR; +typedef char *PCHAR; +typedef void *PVOID; +typedef void *HANDLE; +typedef long LONG; +typedef int INT; +typedef unsigned int UINT; +typedef char *LPSTR; +typedef char *LPTSTR; +typedef DWORD *LPDWORD; +typedef WORD *LPWORD; +typedef ULONG *PULONG; +typedef PVOID LPVOID; +typedef void VOID; +typedef unsigned long long int ULONGLONG; + +typedef struct _OVERLAPPED { + DWORD Internal; + DWORD InternalHigh; + DWORD Offset; + DWORD OffsetHigh; + HANDLE hEvent; +} OVERLAPPED, *LPOVERLAPPED; + +typedef struct _SECURITY_ATTRIBUTES { + DWORD nLength; + LPVOID lpSecurityDescriptor; + BOOL bInheritHandle; +} SECURITY_ATTRIBUTES , *LPSECURITY_ATTRIBUTES; + +typedef struct timeval SYSTEMTIME; +typedef struct timeval FILETIME; +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +// +// Modem Status Flags +// +#define MS_CTS_ON ((DWORD)0x0010) +#define MS_DSR_ON ((DWORD)0x0020) +#define MS_RING_ON ((DWORD)0x0040) +#define MS_RLSD_ON ((DWORD)0x0080) + +// +// Error Flags +// + +#define CE_RXOVER 0x0001 // Receive Queue overflow +#define CE_OVERRUN 0x0002 // Receive Overrun Error +#define CE_RXPARITY 0x0004 // Receive Parity Error +#define CE_FRAME 0x0008 // Receive Framing error +#define CE_BREAK 0x0010 // Break Detected +#define CE_TXFULL 0x0100 // TX Queue is full +#define CE_PTO 0x0200 // LPTx Timeout +#define CE_IOE 0x0400 // LPTx I/O Error +#define CE_DNS 0x0800 // LPTx Device not selected +#define CE_OOP 0x1000 // LPTx Out-Of-Paper +#define CE_MODE 0x8000 // Requested mode unsupported + +#ifndef INVALID_HANDLE_VALUE +#define INVALID_HANDLE_VALUE 0xFFFFFFFF +#endif + +#endif diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.c b/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.c new file mode 100755 index 000000000..a3b5cc997 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.c @@ -0,0 +1,419 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#include +#include +#include + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" + +#include "afi_file_writer.h" + +#include "plugins/common/crc.h" +#include "./libs/zlib/zlib.h" + +AFI_DATACODE datacode[]={ + {AFI_DATA_MFM,AFI_DATA_TYPE_MFM}, + {AFI_DATA_INDEX,AFI_DATA_TYPE_INDEX}, + {AFI_DATA_BITRATE,AFI_DATA_TYPE_BITRATE}, + {AFI_DATA_PDC,AFI_DATA_TYPE_PDC}, + {AFI_DATA_WEAKBITS,AFI_DATA_TYPE_WEAKBITS}, + {AFI_DATA_NONE,""} +}; + +unsigned short getcrc(void * buffer1, int size1,void * buffer2, int size2) +{ + + unsigned char crc16l,crc16h; + int i; + unsigned char crctable[32]; + + CRC16_Init(&crc16h,&crc16l,(unsigned char*)crctable,0x1021,0xFFFF); + + if(buffer1) + { + for(i=0;ihxc_printf(MSG_INFO_1,"Write AFI file %s...",filename); + + hxcafifile=fopen(filename,"wb"); + if(hxcafifile) + { + tempcrc=0x0000; + + //------------- header ------------- + memset(&afiheader,0,sizeof(AFIIMG)); + sprintf((char*)&afiheader.afi_img_tag,AFI_IMG_TAG); + afiheader.header_size=sizeof(AFIIMG); + afiheader.version_code_minor=1; + afiheader.header_crc=getcrc(&afiheader,sizeof(afiheader)-2,0,0); + //------------- info ------------- + memset(&afiinfo,0,sizeof(AFIIMGINFO)); + sprintf((char*)&afiinfo.afi_img_infos_tag,AFI_INFO_TAG); + + afiinfo.start_side=0; + afiinfo.end_side=floppy->floppyNumberOfSide-1; + + afiinfo.start_track=0; + afiinfo.end_track=floppy->floppyNumberOfTrack-1; + + afiinfo.total_track=floppy->floppyNumberOfTrack*floppy->floppyNumberOfSide; + + switch(floppy->floppyiftype) + { + case IBMPC_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_DD; + afiinfo.platformtype_code=AFI_PLATFORM_PC; + break; + case IBMPC_HD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_HD; + afiinfo.platformtype_code=AFI_PLATFORM_PC; + break; + case IBMPC_ED_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_ED; + afiinfo.platformtype_code=AFI_PLATFORM_PC; + break; + case ATARIST_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_DD; + afiinfo.platformtype_code=AFI_PLATFORM_PC; + break; + case ATARIST_HD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_HD; + afiinfo.platformtype_code=AFI_PLATFORM_ATARI_ST; + break; + case AMIGA_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_DD; + afiinfo.platformtype_code=AFI_PLATFORM_AMIGA; + break; + case AMIGA_HD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_HD; + afiinfo.platformtype_code=AFI_PLATFORM_AMIGA; + break; + case CPC_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P00; + afiinfo.platformtype_code=AFI_PLATFORM_CPC; + break; + + case GENERIC_SHUGART_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_DD; + afiinfo.platformtype_code=AFI_PLATFORM_UNKNOW; + break; + + case MSX2_DD_FLOPPYMODE: + afiinfo.mediatype_code=AFI_MEDIA_3P50_HD; + afiinfo.platformtype_code=AFI_PLATFORM_MSX2; + break; + } + + + afiinfo.number_of_string=0; + + floppycontext->hxc_printf(MSG_INFO_1,"%d Tracks, %d side(s)",afiinfo.end_track,afiinfo.end_side); + + //------------- track list ------------- + memset(&afitracklist,0,sizeof(AFITRACKLIST)); + sprintf((char*)&afitracklist.afi_img_track_list_tag,AFI_TRACKLIST_TAG); + afitracklist.number_of_track=floppy->floppyNumberOfTrack*floppy->floppyNumberOfSide; + + track_list=(unsigned long *)malloc(afitracklist.number_of_track*sizeof(unsigned long)); + memset(track_list,0,afitracklist.number_of_track*sizeof(unsigned long)); + + afiheader.track_list_offset=sizeof(AFIIMG); + + fwrite(&afiheader,sizeof(afiheader),1,hxcafifile); //write temporary file header + fwrite(&afitracklist,sizeof(afitracklist),1,hxcafifile); //write temporary track list header + track_listptr=ftell(hxcafifile); + fwrite(track_list,afitracklist.number_of_track*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitracklist,sizeof(afitracklist),track_list,afitracklist.number_of_track*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + + trackposition=sizeof(afitracklist)+afitracklist.number_of_track*sizeof(unsigned long)+sizeof(tempcrc); + t=0; + for(i=0;ifloppyNumberOfTrack;i++) + { + for(j=0;jtracks[i]->number_of_side;j++) + { + memset(data_list,0,sizeof(unsigned long)*16); + memset(&afitrack,0,sizeof(afitrack)); + sprintf((char*)&afitrack.afi_track_tag,AFI_TRACK_TAG); + + track_list[t]=trackposition; + + afitrack.track_number=i; + afitrack.side_number=j; + + afitrack.encoding_mode=AFI_TRACKENCODING_MFM; + + afitrack.nb_of_element=floppy->tracks[i]->sides[j]->tracklen/8; + afitrack.number_of_data_chunk=4;//------- + + floppycontext->hxc_printf(MSG_DEBUG,"Track %d [%d:%d], file offset %X",t,afitrack.track_number,afitrack.side_number,track_list[t]+afiheader.track_list_offset); + + track_fileptr=ftell(hxcafifile); + fwrite(&afitrack,sizeof(afitrack),1,hxcafifile); + fwrite(&data_list,afitrack.number_of_data_chunk*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitrack,sizeof(afitrack),data_list,afitrack.number_of_data_chunk*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + + dataposition=sizeof(afitrack)+(afitrack.number_of_data_chunk*sizeof(unsigned long))+sizeof(tempcrc); + + //---------------- index data ---------------- + block_size=adddatablock(hxcafifile,AFI_DATA_INDEX,compressdata,floppy->tracks[i]->sides[j]->indexbuffer,floppy->tracks[i]->sides[j]->tracklen/8,1); + + //-------------------------------------------- + data_list[0]=dataposition; + + ///rewrite/// + temp_fileptr=ftell(hxcafifile); + fseek(hxcafifile,track_fileptr,SEEK_SET); + fwrite(&afitrack,sizeof(afitrack),1,hxcafifile); + fwrite(&data_list,afitrack.number_of_data_chunk*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitrack,sizeof(afitrack),data_list,afitrack.number_of_data_chunk*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + fseek(hxcafifile,temp_fileptr,SEEK_SET); + ////////////////////////////////////////////// + + dataposition=dataposition+sizeof(AFIDATA)+block_size+sizeof(tempcrc); + + //---------------- track data ---------------- + block_size=adddatablock(hxcafifile,AFI_DATA_MFM,compressdata,floppy->tracks[i]->sides[j]->databuffer,floppy->tracks[i]->sides[j]->tracklen/8,1); + + //-------------------------------------------- + data_list[1]=dataposition; + + ///rewrite/// + temp_fileptr=ftell(hxcafifile); + fseek(hxcafifile,track_fileptr,SEEK_SET); + fwrite(&afitrack,sizeof(afitrack),1,hxcafifile); + fwrite(&data_list,afitrack.number_of_data_chunk*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitrack,sizeof(afitrack),data_list,afitrack.number_of_data_chunk*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + fseek(hxcafifile,temp_fileptr,SEEK_SET); + ////////////////////////////////////////////// + + dataposition=dataposition+sizeof(AFIDATA)+block_size+sizeof(tempcrc); + + //---------------- bitrate data ---------------- + if(floppy->tracks[i]->sides[j]->bitrate==VARIABLEBITRATE) + { + block_size=adddatablock(hxcafifile,AFI_DATA_BITRATE,compressdata,(unsigned char*)floppy->tracks[i]->sides[j]->timingbuffer,(floppy->tracks[i]->sides[j]->tracklen*4)/8,4); + } + else + { + + tempbitratetrack=(unsigned long *)malloc((floppy->tracks[i]->sides[j]->tracklen*4)/8); + for(k=0;ktracks[i]->sides[j]->tracklen/8;k++) + { + tempbitratetrack[k]=floppy->tracks[i]->sides[j]->bitrate; + } + block_size=adddatablock(hxcafifile,AFI_DATA_BITRATE,compressdata,(unsigned char*)tempbitratetrack,(floppy->tracks[i]->sides[j]->tracklen*4)/8,4); + free(tempbitratetrack); + } + + //-------------------------------------------- + data_list[2]=dataposition; + + ///rewrite/// + temp_fileptr=ftell(hxcafifile); + fseek(hxcafifile,track_fileptr,SEEK_SET); + fwrite(&afitrack,sizeof(afitrack),1,hxcafifile); + fwrite(&data_list,afitrack.number_of_data_chunk*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitrack,sizeof(afitrack),data_list,afitrack.number_of_data_chunk*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + fseek(hxcafifile,temp_fileptr,SEEK_SET); + ////////////////////////////////////////////// + + dataposition=dataposition+sizeof(AFIDATA)+block_size+sizeof(tempcrc); + + //---------------- weakbits data ---------------- + if(floppy->tracks[i]->sides[j]->flakybitsbuffer) + { + block_size=adddatablock(hxcafifile,AFI_DATA_WEAKBITS,compressdata,floppy->tracks[i]->sides[j]->flakybitsbuffer,floppy->tracks[i]->sides[j]->tracklen/8,1); + } + else + { + tempweakbitstrack=(unsigned char *)malloc(floppy->tracks[i]->sides[j]->tracklen/8); + for(k=0;ktracks[i]->sides[j]->tracklen/8;k++) + { + tempweakbitstrack[k]=0x00; + } + + block_size=adddatablock(hxcafifile,AFI_DATA_WEAKBITS,compressdata,tempweakbitstrack,floppy->tracks[i]->sides[j]->tracklen/8,1); + free(tempweakbitstrack); + } + //-------------------------------------------- + data_list[3]=dataposition; + + ///rewrite/// + temp_fileptr=ftell(hxcafifile); + fseek(hxcafifile,track_fileptr,SEEK_SET); + fwrite(&afitrack,sizeof(afitrack),1,hxcafifile); + fwrite(&data_list,afitrack.number_of_data_chunk*sizeof(unsigned long),1,hxcafifile); + tempcrc=getcrc(&afitrack,sizeof(afitrack),data_list,afitrack.number_of_data_chunk*sizeof(unsigned long)); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + fseek(hxcafifile,temp_fileptr,SEEK_SET); + ////////////////////////////////////////////// + + dataposition=dataposition+sizeof(AFIDATA)+block_size+sizeof(tempcrc); + + + t++; + trackposition=trackposition+dataposition; + + } + } + + temp_fileptr=ftell(hxcafifile); + tempcrc=getcrc(&afitracklist,sizeof(afitracklist),track_list,afitracklist.number_of_track*sizeof(unsigned long)); + fseek(hxcafifile,track_listptr,SEEK_SET); + fwrite(track_list,afitracklist.number_of_track*sizeof(unsigned long),1,hxcafifile); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + fseek(hxcafifile,temp_fileptr,SEEK_SET); + + afiheader.floppyinfo_offset=ftell(hxcafifile); + fwrite(&afiinfo,sizeof(AFIIMGINFO),1,hxcafifile); + tempcrc=getcrc(&afiinfo,sizeof(AFIIMGINFO),0,0); + fwrite(&tempcrc,sizeof(tempcrc),1,hxcafifile); //temporary crc + + + temp_fileptr=ftell(hxcafifile); + fseek(hxcafifile,0,SEEK_SET); + afiheader.header_crc=getcrc(&afiheader,sizeof(afiheader)-2,0,0); + fwrite(&afiheader,sizeof(afiheader),1,hxcafifile); //write temporary file header + fseek(hxcafifile,temp_fileptr,SEEK_SET); + + free(track_list); + fclose(hxcafifile); + + return 0; + } + else + { + floppycontext->hxc_printf(MSG_ERROR,"Cannot create %s!",filename); + + return -1; + } + + +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.h b/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.h new file mode 100755 index 000000000..512979270 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/afi_file_writer.h @@ -0,0 +1,224 @@ +/* +// +// Copyright (C) 2006, 2007, 2008 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#pragma pack(1) + +#define byte unsigned char +#define word unsigned short +#define dword unsigned int + +#define STRINGTAGSIZE 16 +#define AFI_CRCSIZE 2 + +///////////////////////////////////////////////////// +//Block tag +#define AFI_IMG_TAG "AFI_FLOPPY_IMG" +#define AFI_DATA_TAG "TRACKDATA" +#define AFI_INFO_TAG "AFI_INFO" +#define AFI_STRING_TAG "STRING" +#define AFI_TRACKLIST_TAG "TRACKLIST" +#define AFI_TRACK_TAG "TRACK" + +///////////////////////////////////////////////////// +// file header +typedef struct AFIIMG_ +{ + byte afi_img_tag[STRINGTAGSIZE]; + + byte version_code_major; + byte version_code_minor; + + dword header_size; + + dword floppyinfo_offset; + dword track_list_offset; + + word header_crc; +}AFIIMG; + +///////////////////////////////////////////////////// +// file info struct +typedef struct AFIIMGINFO_ +{ + byte afi_img_infos_tag[STRINGTAGSIZE]; + + dword floppy_info_size; + + dword mediatype_code; + dword platformtype_code; + + dword total_track; + dword start_track; + dword end_track; + dword start_side; + dword end_side; + + dword number_of_string; +}AFIIMGINFO; +//dword string_info_list; //*number_of_string +//word info_crc; + +// +// media type enum +enum { + AFI_MEDIA_UNKNOW, + AFI_MEDIA_3P50_DD, + AFI_MEDIA_3P50_HD, + AFI_MEDIA_3P50_ED, + AFI_MEDIA_5P25, + AFI_MEDIA_3P00 +}; + +// platform type enum +enum { + AFI_PLATFORM_UNKNOW, + AFI_PLATFORM_ATARI_ST, + AFI_PLATFORM_AMIGA, + AFI_PLATFORM_PC, + AFI_PLATFORM_CPC, + AFI_PLATFORM_MSX2 +}; + +///////////////////////////////////////////////////// +// string info struct +typedef struct AFI_STRING_ +{ + byte afi_string_tag[STRINGTAGSIZE]; + byte afi_string_type_tag[STRINGTAGSIZE]; + dword string_size; +}AFI_STRING; +//byte afi_string;//*string_size +//word string_crc; + +//string type tag +#define AFI_FLOPPY_TITLE "DISC_TITLE" +#define AFI_FLOPPY_AUTHOR "DISC_AUTHOR" +#define AFI_FLOPPY_RELEASE_DATE "RELEASE_DATE" +#define AFI_FLOPPY_FILECREATIONDATE "FILECREATION_DATE" +#define AFI_FLOPPY_MEDIATYPE "MEDIA_TYPE" +#define AFI_FLOPPY_PLATFORMTYPE "PLATFORM_TYPE" + +///////////////////////////////////////////////////// +// track list +typedef struct AFITRACKLIST_ +{ + byte afi_img_track_list_tag[STRINGTAGSIZE]; + dword number_of_track; +}AFITRACKLIST; +// dword track_offset_list; //*number_of_track +// word tracklist_crc; + +// +///////////////////////////////////////////////////// +// track +typedef struct AFITRACK_ +{ + byte afi_track_tag[STRINGTAGSIZE]; + + dword track_number; + dword side_number; + + dword encoding_mode; + dword nb_of_element; + + dword number_of_data_chunk; +}AFITRACK; +// dword data_offset_list; //*number_of_data_chunk +// word afi_track_crc; + +// encoding mode +enum { + AFI_TRACKENCODING_NONE, + AFI_TRACKENCODING_MFM, + AFI_TRACKENCODING_PDC +}; +//AFI_TRACKENCODING_MFM -> AFI_DATA_INDEX +// AFI_DATA_MFM +// AFI_DATA_BITRATE +// AFI_DATA_WEAKBITS (optional) + +//AFI_TRACKENCODING_PDC -> AFI_DATA_INDEX +// AFI_DATA_PDC +// AFI_DATA_WEAKBITS (optional) + +///////////////////////////////////////////////////// +// data +typedef struct AFIDATA_ +{ + byte afi_data_tag[STRINGTAGSIZE]; + + dword TYPEIDCODE; + byte type_tag[STRINGTAGSIZE]; + + dword nb_bits_per_element; + + dword packed_size; + dword packer_id; + dword unpacked_size; + +}AFIDATA; +// byte data;//*packed_size +// word afi_data_crc; + + +// data type +enum { + AFI_DATA_NONE, + AFI_DATA_MFM, + AFI_DATA_INDEX, + AFI_DATA_BITRATE, + AFI_DATA_PDC, + AFI_DATA_WEAKBITS +}; + +#define AFI_DATA_TYPE_MFM "MFM_DATA" +#define AFI_DATA_TYPE_INDEX "INDEX_DATA" +#define AFI_DATA_TYPE_BITRATE "BITRATE_DATA" +#define AFI_DATA_TYPE_PDC "PDC_DATA" +#define AFI_DATA_TYPE_WEAKBITS "WEAKBITS_DATA" + +typedef struct AFI_DATACODE_ +{ + byte idcode; + char * idcodetag; +}AFI_DATACODE; + + +// data packer type +enum { + AFI_COMPRESS_NONE, + AFI_COMPRESS_GZIP, + AFI_COMPRESS_RLE, // RFU + AFI_COMPRESS_LZW // RFU +}; + + + +int write_AFI_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename); + +#pragma pack() + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.c b/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.c new file mode 100755 index 000000000..539f83210 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.c @@ -0,0 +1,253 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#include +#include +#include + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" +#include "raw_file_writer.h" +#include "plugins/common/crc.h" +#include "plugins/cpcdsk_loader/cpcdsk_format.h" + +#include "sector_extractor.h" + + + +unsigned char size_to_code(unsigned long size) +{ + + switch(size) + { + case 128: + return 0; + break; + case 256: + return 1; + break; + case 512: + return 2; + break; + case 1024: + return 3; + break; + case 2048: + return 4; + break; + case 4096: + return 5; + break; + case 8192: + return 6; + break; + case 16384: + return 7; + break; + default: + return 0; + break; + } +} + +int write_CPCDSK_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename) +{ + int i,j,k,nbsector; + FILE * cpcdskfile; + char * log_str; + char tmp_str[256]; + char disk_info_block[256]; + char rec_mode; + int sectorsize; + int track_cnt; + int sectorlistoffset,trackinfooffset; + sect_track track; + cpcdsk_fileheader * cpcdsk_fh; + cpcdsk_trackheader cpcdsk_th; + cpcdsk_sector cpcdsk_s; + + + floppycontext->hxc_printf(MSG_INFO_1,"Write CPCDSK file %s...",filename); + + log_str=0; + cpcdskfile=fopen(filename,"wb"); + if(cpcdskfile) + { + memset(disk_info_block,0,0x100); + cpcdsk_fh=(cpcdsk_fileheader *)&disk_info_block; + sprintf((char*)&cpcdsk_fh->headertag,"EXTENDED CPC DSK File\r\nDisk-Info\r\n"); + sprintf((char*)&cpcdsk_fh->creatorname,"HxCFloppyEmu\r\n"); + fwrite(&disk_info_block,0x100,1,cpcdskfile); + track_cnt=0; + + for(j=0;j<(int)floppy->floppyNumberOfTrack;j++) + { + for(i=0;i<(int)floppy->floppyNumberOfSide;i++) + { + sprintf(tmp_str,"track:%.2d:%d file offset:0x%.6x, sectors: ",j,i,ftell(cpcdskfile)); + + log_str=0; + log_str=realloc(log_str,strlen(tmp_str)+1); + memset(log_str,0,strlen(tmp_str)+1); + strcat(log_str,tmp_str); + + rec_mode=0; + memset(&track,0,sizeof(sect_track)); + track.side=i; + track.track=j; + rec_mode=2; + nbsector=analysis_and_extract_sector_MFM(floppycontext,floppy->tracks[j]->sides[i],&track); + if(!nbsector) + { + nbsector=analysis_and_extract_sector_FM(floppycontext,floppy->tracks[j]->sides[i],&track); + rec_mode=1; + if(!nbsector) + { + rec_mode=0; + nbsector=analysis_and_extract_sector_AMIGAMFM(floppycontext,floppy->tracks[j]->sides[i],&track); + } + } + + memset(&cpcdsk_th,0,sizeof(cpcdsk_trackheader)); + sprintf(cpcdsk_th.headertag,"Track-Info\r\n"); + cpcdsk_th.side_number=i; + cpcdsk_th.track_number=j; + cpcdsk_th.gap3_length=78; + cpcdsk_th.filler_byte=0xE5; + cpcdsk_th.number_of_sector=track.number_of_sector; + cpcdsk_th.rec_mode=rec_mode; + + switch(floppy->tracks[j]->sides[i]->bitrate) + { + case 250000: + cpcdsk_th.datarate=1; + break; + case 500000: + cpcdsk_th.datarate=2; + break; + case 1000000: + cpcdsk_th.datarate=3; + break; + default: + cpcdsk_th.datarate=0; + break; + + } + + + if(track.number_of_sector) + { + cpcdsk_th.sector_size_code=size_to_code(track.sectorlist[0]->sectorsize); + } + + trackinfooffset=ftell(cpcdskfile); + fwrite(&cpcdsk_th,sizeof(cpcdsk_trackheader),1,cpcdskfile); + sectorlistoffset=ftell(cpcdskfile); + + if(track.number_of_sector) + { + if(cpcdsk_fh->number_of_sides<(i+1))cpcdsk_fh->number_of_sides=i+1; + if(cpcdsk_fh->number_of_tracks<(j+1))cpcdsk_fh->number_of_tracks=j+1; + + + memset(&cpcdsk_s,0,sizeof(cpcdsk_sector)); + for(k=0;ksectorsize; + + k=0; + do + { + if(track.sectorlist[k]->sectorsize!=sectorsize) + { + sectorsize=-1; + } + + + cpcdsk_s.sector_id=track.sectorlist[k]->sector_id; + cpcdsk_s.side=track.sectorlist[k]->side_id; + cpcdsk_s.track=track.sectorlist[k]->track_id; + cpcdsk_s.sector_size_code=size_to_code(track.sectorlist[k]->sectorsize); + cpcdsk_s.data_lenght=track.sectorlist[k]->sectorsize; + fseek(cpcdskfile,sectorlistoffset+(k*sizeof(cpcdsk_sector)),SEEK_SET); + fwrite(&cpcdsk_s,sizeof(cpcdsk_sector),1,cpcdskfile); + + fseek(cpcdskfile,0,SEEK_END); + fwrite(track.sectorlist[k]->buffer,track.sectorlist[k]->sectorsize,1,cpcdskfile); + + sprintf(tmp_str,"%d ",track.sectorlist[k]->sector_id); + log_str=realloc(log_str,strlen(log_str)+strlen(tmp_str)+1); + strcat(log_str,tmp_str); + k++; + + }while(kbuffer); + free(track.sectorlist[k]); + k++; + }while(khxc_printf(MSG_INFO_1,log_str); + free(log_str); + + } + } + + fseek(cpcdskfile,0,SEEK_SET); + fwrite(&disk_info_block,0x100,1,cpcdskfile); + + fclose(cpcdskfile); + } + + return 0; +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.h b/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.h new file mode 100755 index 000000000..9d91c8bce --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/cpcdsk_file_writer.h @@ -0,0 +1,2 @@ +int write_CPCDSK_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename); + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.c b/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.c new file mode 100755 index 000000000..69807d2fe --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.c @@ -0,0 +1,451 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#define FASTWRITE 1 + +#include +#include +#include + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" + +#include "extended_hfe_file_writer.h" + +unsigned char * ramfile; +int ramfile_size; + +unsigned char ext_bit_inverter[]= +{ + 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0, + 0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0, + 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8, + 0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8, + 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4, + 0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4, + 0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC, + 0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC, + 0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2, + 0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2, + 0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA, + 0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA, + 0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6, + 0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6, + 0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE, + 0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE, + 0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1, + 0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1, + 0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9, + 0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9, + 0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5, + 0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5, + 0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED, + 0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD, + 0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3, + 0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3, + 0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB, + 0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB, + 0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7, + 0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7, + 0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF, + 0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF +}; + + +unsigned short ext_bit_expander[]= +{ + 0x0000,0x0002,0x0008,0x000a,0x0020,0x0022,0x0028,0x002a, + 0x0080,0x0082,0x0088,0x008a,0x00a0,0x00a2,0x00a8,0x00aa, + 0x0200,0x0202,0x0208,0x020a,0x0220,0x0222,0x0228,0x022a, + 0x0280,0x0282,0x0288,0x028a,0x02a0,0x02a2,0x02a8,0x02aa, + 0x0800,0x0802,0x0808,0x080a,0x0820,0x0822,0x0828,0x082a, + 0x0880,0x0882,0x0888,0x088a,0x08a0,0x08a2,0x08a8,0x08aa, + 0x0a00,0x0a02,0x0a08,0x0a0a,0x0a20,0x0a22,0x0a28,0x0a2a, + 0x0a80,0x0a82,0x0a88,0x0a8a,0x0aa0,0x0aa2,0x0aa8,0x0aaa, + 0x2000,0x2002,0x2008,0x200a,0x2020,0x2022,0x2028,0x202a, + 0x2080,0x2082,0x2088,0x208a,0x20a0,0x20a2,0x20a8,0x20aa, + 0x2200,0x2202,0x2208,0x220a,0x2220,0x2222,0x2228,0x222a, + 0x2280,0x2282,0x2288,0x228a,0x22a0,0x22a2,0x22a8,0x22aa, + 0x2800,0x2802,0x2808,0x280a,0x2820,0x2822,0x2828,0x282a, + 0x2880,0x2882,0x2888,0x288a,0x28a0,0x28a2,0x28a8,0x28aa, + 0x2a00,0x2a02,0x2a08,0x2a0a,0x2a20,0x2a22,0x2a28,0x2a2a, + 0x2a80,0x2a82,0x2a88,0x2a8a,0x2aa0,0x2aa2,0x2aa8,0x2aaa, + 0x8000,0x8002,0x8008,0x800a,0x8020,0x8022,0x8028,0x802a, + 0x8080,0x8082,0x8088,0x808a,0x80a0,0x80a2,0x80a8,0x80aa, + 0x8200,0x8202,0x8208,0x820a,0x8220,0x8222,0x8228,0x822a, + 0x8280,0x8282,0x8288,0x828a,0x82a0,0x82a2,0x82a8,0x82aa, + 0x8800,0x8802,0x8808,0x880a,0x8820,0x8822,0x8828,0x882a, + 0x8880,0x8882,0x8888,0x888a,0x88a0,0x88a2,0x88a8,0x88aa, + 0x8a00,0x8a02,0x8a08,0x8a0a,0x8a20,0x8a22,0x8a28,0x8a2a, + 0x8a80,0x8a82,0x8a88,0x8a8a,0x8aa0,0x8aa2,0x8aa8,0x8aaa, + 0xa000,0xa002,0xa008,0xa00a,0xa020,0xa022,0xa028,0xa02a, + 0xa080,0xa082,0xa088,0xa08a,0xa0a0,0xa0a2,0xa0a8,0xa0aa, + 0xa200,0xa202,0xa208,0xa20a,0xa220,0xa222,0xa228,0xa22a, + 0xa280,0xa282,0xa288,0xa28a,0xa2a0,0xa2a2,0xa2a8,0xa2aa, + 0xa800,0xa802,0xa808,0xa80a,0xa820,0xa822,0xa828,0xa82a, + 0xa880,0xa882,0xa888,0xa88a,0xa8a0,0xa8a2,0xa8a8,0xa8aa, + 0xaa00,0xaa02,0xaa08,0xaa0a,0xaa20,0xaa22,0xaa28,0xaa2a, + 0xaa80,0xaa82,0xaa88,0xaa8a,0xaaa0,0xaaa2,0xaaa8,0xaaaa +}; + + + +void extaddpad(unsigned char * track,int mfmsize,int tracksize) +{ + int i,j; + + i=tracksize-1; + do{ + + i--; + }while(i && !track[i]); + + if(i) + { + j=i+1; +/* do + { + track[j++]=track[i-1]; + if(j 50% duty cycle // factor=2-> 25% duty cycle + floppycontext->hxc_printf(MSG_INFO_1,"Write HFE file %s for the standalone emulator.",filename); + + ramfile=0; + ramfile_size=0; + + hxcpicfile=extrfopen(filename,"wb"); + + if(hxcpicfile) + { + FILEHEADER=(picfileformatextheader *) malloc(512); + memset(FILEHEADER,0xFF,512); + memcpy(&FILEHEADER->HEADERSIGNATURE,"HXCPICFE",8); + + FILEHEADER->number_of_track=(unsigned char)floppy->floppyNumberOfTrack; + FILEHEADER->number_of_side=floppy->floppyNumberOfSide; + if(floppy->floppyBitRate!=VARIABLEBITRATE) + { + FILEHEADER->bitRate=(floppy->floppyBitRate*factor)/1000; + } + else + { + FILEHEADER->bitRate=(floppy->tracks[0]->sides[0]->bitrate*factor)/1000; + } + FILEHEADER->floppyRPM=0;//floppy->floppyRPM; + + if(forceifmode==-1) + { + FILEHEADER->floppyinterfacemode=(unsigned char)floppy->floppyiftype; + } + else + { + FILEHEADER->floppyinterfacemode=forceifmode; + } + + FILEHEADER->track_encoding=0; + FILEHEADER->formatrevision=1; + FILEHEADER->track_list_offset=1; + FILEHEADER->write_protected=1; + + if(floppy->tracks[floppy->floppyNumberOfTrack/2]->sides[0]->track_encoding) + { + FILEHEADER->track_encoding=floppy->tracks[floppy->floppyNumberOfTrack/2]->sides[0]->track_encoding; + } + + if(double_step) + FILEHEADER->single_step=0x00; + else + FILEHEADER->single_step=0xFF; + + extrfwrite(FILEHEADER,512,1,hxcpicfile); + + tracklistlen=((((((FILEHEADER->number_of_track)+1)*sizeof(picexttrack))/512)+1)); + offsettrack=(unsigned char*) malloc(tracklistlen*512); + memset(offsettrack,0xFF,tracklistlen*512); + + i=0; + trackpos=FILEHEADER->track_list_offset+tracklistlen; + + while(i<(FILEHEADER->number_of_track)) + { + mfmsize=0; + mfmsize2=0; + + + mfmsize=floppy->tracks[i]->sides[0]->tracklen * factor; + if(mfmsize&7) + mfmsize=(mfmsize/8)+1; + else + mfmsize=mfmsize/8; + + + if(floppy->tracks[i]->number_of_side==2) + { + mfmsize2=floppy->tracks[i]->sides[1]->tracklen * factor; + if(mfmsize2&7) + mfmsize2=(mfmsize2/8)+1; + else + mfmsize2=mfmsize2/8; + } + + + + if(mfmsize2>mfmsize) mfmsize=mfmsize2; + + if(mfmsize*2>0xFFFF) + { + floppycontext->hxc_printf(MSG_ERROR,"Argg!! track %d too long (%x) and shorten to 0xFFFF !",i,mfmsize*2); + mfmsize=0x7FFF; + } + + track=(picexttrack *)(offsettrack+(i*sizeof(picexttrack))); + track->track_len=mfmsize*2; + track->offset=trackpos; + + if((mfmsize*2)%512) + trackpos=trackpos+(((mfmsize*2)/512)+1); + else + trackpos=trackpos+((mfmsize*2)/512); + + //trackpos=trackpos+(((mfmsize*2)/512)+1); + i++; + }; + + extrfwrite(offsettrack,512*tracklistlen,1,hxcpicfile); + + i=0; + while(i<(FILEHEADER->number_of_track)) + { + + mfmsize=floppy->tracks[i]->sides[0]->tracklen * factor; + if(mfmsize&7) + mfmsize=(mfmsize/8)+1; + else + mfmsize=mfmsize/8; + + mfmsize2=0; + if(floppy->tracks[i]->number_of_side==2) + { + mfmsize2=floppy->tracks[i]->sides[1]->tracklen * factor; + if(mfmsize2&7) + mfmsize2=(mfmsize2/8)+1; + else + mfmsize2=mfmsize2/8; + } + + if(mfmsize>0x7FFF) + { + mfmsize=0x7FFF; + } + if(mfmsize2>0x7FFF) + { + mfmsize2=0x7FFF; + } + track=(picexttrack *)(offsettrack+(i*sizeof(picexttrack))); + + if(track->track_len%512) + tracksize=((track->track_len&(~0x1FF))+0x200)/2;//(((track->track_len/512)+1)*512)/2; + else + tracksize=track->track_len/2; + + if(factor>1) + { + mfmtemp=(unsigned char*) malloc(tracksize); + memset(mfmtemp,0x00,tracksize); + } + mfmtracks0=(unsigned char*) malloc(tracksize); + mfmtracks1=(unsigned char*) malloc(tracksize); + mfmtrackfinal=(unsigned char*) malloc(tracksize*2); + + memset(mfmtracks0,0x00,tracksize); + memset(mfmtracks1,0x00,tracksize); + memset(mfmtrackfinal,0x55,tracksize*2); + + if(factor==1) + { + memcpy(mfmtracks0,floppy->tracks[i]->sides[0]->databuffer,mfmsize); + extaddpad(mfmtracks0,mfmsize,tracksize); + //memset(&mfmtracks0[mfmsize],floppy->tracks[i]->sides[0]->databuffer[mfmsize-1],tracksize-mfmsize); + } + else + { + memcpy(mfmtemp,floppy->tracks[i]->sides[0]->databuffer,mfmsize/2); + memset(&mfmtemp[mfmsize/2],floppy->tracks[i]->sides[0]->databuffer[(mfmsize/2)-1],(tracksize/2)-(mfmsize/2)); + + for(l=0;l<(tracksize/2);l=l+1) + { + mfmtracks0[l*2]= ext_bit_expander[mfmtemp[l]]>>8; + mfmtracks0[(l*2)+1]=ext_bit_expander[mfmtemp[l]]&0xFF; + } + } + if(floppy->tracks[i]->number_of_side==2) + { + + if(factor==1) + { + memcpy(mfmtracks1,floppy->tracks[i]->sides[1]->databuffer,mfmsize2); + //memset(&mfmtracks1[mfmsize2],floppy->tracks[i]->sides[1]->databuffer[mfmsize2-1],tracksize-mfmsize2); + extaddpad(mfmtracks1,mfmsize2,tracksize); + } + else + { + memcpy(mfmtemp,floppy->tracks[i]->sides[1]->databuffer,mfmsize2/2); + memset(&mfmtemp[mfmsize2/2],floppy->tracks[i]->sides[1]->databuffer[(mfmsize2/2)-1],(tracksize/2)-(mfmsize2/2)); + + for(l=0;l<(tracksize/2);l=l+1) + { + mfmtracks1[l*2]= (ext_bit_expander[mfmtemp[l]]>>8); + mfmtracks1[(l*2)+1]=ext_bit_expander[mfmtemp[l]]&0xFF; + } + } + + } + if(factor>1) + free(mfmtemp); + + for(k=0;khxc_printf(MSG_ERROR,"Cannot create %s!",filename); + return -1; + } + +#endif + + extrfclose(hxcpicfile); + + floppycontext->hxc_printf(MSG_INFO_1,"%d tracks written to the file",FILEHEADER->number_of_track); + + free(FILEHEADER); + + return 0; + } + else + { + floppycontext->hxc_printf(MSG_ERROR,"Cannot create %s!",filename); + + return -1; + } + +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.h b/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.h new file mode 100755 index 000000000..0fda1a320 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/extended_hfe_file_writer.h @@ -0,0 +1,58 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +#pragma pack(1) + +typedef struct picfileformatextheader_ +{ + unsigned char HEADERSIGNATURE[8]; + unsigned char formatrevision; + unsigned char number_of_track; + unsigned char number_of_side; + unsigned char track_encoding; + unsigned short bitRate; + unsigned short floppyRPM; + unsigned char floppyinterfacemode; + unsigned char write_protected; + unsigned short track_list_offset; + unsigned char write_allowed; + unsigned char single_step; +}picfileformatextheader; + + +typedef struct picexttrack_ +{ + unsigned short offset; + unsigned short track_len; +}picexttrack; + +#pragma pack() + + +int write_EXTHFE_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename,int forceifmode,int double_step); + + + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_loader.c b/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_loader.c new file mode 100755 index 000000000..e20c77adc --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_loader.c @@ -0,0 +1,118 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +#include +#include +#include + + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" +#include "floppy_loader.h" +#include "loaders_list.h" + +int initHxCFloppyEmulator(HXCFLOPPYEMULATOR* floppycontext) +{ + floppycontext->hxc_printf(MSG_INFO_0,"Starting HxCFloppyEmulator..."); + return 1; +} + +int floppy_load(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * newfloppy,char* imgname) +{ + int i; + int ret; + floppycontext->hxc_printf(MSG_INFO_0,"Loading %s",imgname); + + memset(newfloppy,0,sizeof(FLOPPY)); + + i=0; + do + { + ret=staticplugins[i].libIsValidDiskFile(floppycontext,imgname); + if(ret==LOADER_ISVALID) + { + floppycontext->hxc_printf(MSG_INFO_0,"file loader found!"); + ret=staticplugins[i].libLoad_DiskFile(floppycontext,newfloppy,imgname,0); + return ret; + } + else + { + floppycontext->hxc_printf(MSG_DEBUG,"libIsValidDiskFile n%d return %d",i,ret); + } + + i++; + }while(staticplugins[i].libIsValidDiskFile!=(ISVALIDDISKFILE)-1); + + floppycontext->hxc_printf(MSG_ERROR,"no loader support the file %s !",imgname); + return LOADER_UNSUPPORTEDFILE; +} + + +int floppy_unload(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppydisk) +{ + unsigned int i,j; + for(j=0;jfloppyNumberOfTrack;j++) + { + for(i=0;ifloppyNumberOfSide;i++) + { + if(floppydisk->tracks[j]->sides[i]->databuffer) + { + free(floppydisk->tracks[j]->sides[i]->databuffer); + floppydisk->tracks[j]->sides[i]->databuffer=0; + } + if(floppydisk->tracks[j]->sides[i]->flakybitsbuffer) + { + free(floppydisk->tracks[j]->sides[i]->flakybitsbuffer); + floppydisk->tracks[j]->sides[i]->flakybitsbuffer=0; + } + if(floppydisk->tracks[j]->sides[i]->indexbuffer) + { + free(floppydisk->tracks[j]->sides[i]->indexbuffer); + floppydisk->tracks[j]->sides[i]->indexbuffer=0; + } + if(floppydisk->tracks[j]->sides[i]->timingbuffer) + { + free(floppydisk->tracks[j]->sides[i]->timingbuffer); + floppydisk->tracks[j]->sides[i]->timingbuffer=0; + } + + if(floppydisk->tracks[j]->sides[i]->track_encoding_buffer) + { + free(floppydisk->tracks[j]->sides[i]->track_encoding_buffer); + floppydisk->tracks[j]->sides[i]->track_encoding_buffer=0; + } + + free(floppydisk->tracks[j]->sides[i]); + } + + free(floppydisk->tracks[j]->sides); + free(floppydisk->tracks[j]); + + } + free(floppydisk->tracks); + return 0; +} + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_utils.c b/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_utils.c new file mode 100755 index 000000000..68cad8673 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/floppy_utils.c @@ -0,0 +1,125 @@ +#include +#include +#include + +#include "types.h" +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" +#include "floppy_loader.h" + +unsigned long us2index(unsigned long startindex,SIDE * track,unsigned long us,unsigned char fill,char fillorder) +{ + uint32_t time,freq; + + if(!fillorder) + { + if(track->bitrate==VARIABLEBITRATE) + { + time=0; + do + { + + if(fill)track->indexbuffer[startindex>>3]=0xFF; + freq=track->timingbuffer[startindex>>3]; + startindex++; + if(startindex>=track->tracklen) startindex=0; + if(freq) + time=time+(((1000000000/2)/freq)*1); + }while(us>(time/1000)); + return startindex; + } + else + { + freq=track->bitrate; + time=0; + do + { + if(fill)track->indexbuffer[startindex>>3]=0xFF; + startindex++; + if(startindex>=track->tracklen) startindex=0; + if(freq) + time=time+(((1000000000/2)/freq)*1); + }while(us>(time/1000)); + return startindex; + } + } + else + { + if(track->bitrate==VARIABLEBITRATE) + { + time=0; + do + { + + if(fill)track->indexbuffer[startindex>>3]=0xFF; + freq=track->timingbuffer[startindex>>3]; + + if(startindex) + startindex--; + else + startindex=track->tracklen-1; + if(freq) + time=time+(((1000000000/2)/freq)*1); + }while(us>(time/1000)); + return startindex; + } + else + { + freq=track->bitrate; + time=0; + do + { + if(fill)track->indexbuffer[startindex>>3]=0xFF; + + if(startindex) + startindex--; + else + startindex=track->tracklen-1; + if(freq) + time=time+(((1000000000/2)/freq)*1); + }while(us>(time/1000)); + return startindex; + } + } +}; + +unsigned long fillindex(int startindex,SIDE * track,unsigned long us,unsigned char fill,char fillorder) +{ + int start_index; + + if(startindex>=0) + { + start_index=us2index(0,track,startindex,0,0); + } + else + { + start_index=us2index(0,track,-startindex,0,1); + } + + + return us2index(start_index,track,us&0xFFFFFF,fill,fillorder); +} + +CYLINDER* allocCylinderEntry(unsigned short rpm,unsigned char number_of_side) +{ + CYLINDER* cyl; + + cyl=(CYLINDER*)malloc(sizeof(CYLINDER)); + cyl->floppyRPM=rpm; + cyl->number_of_side=number_of_side; + cyl->sides=(SIDE**)malloc(sizeof(SIDE*)*number_of_side); + memset(cyl->sides,0,sizeof(SIDE*)*number_of_side); + return cyl; +} + +void savebuffer(unsigned char * name,unsigned char * buffer, int size) +{ + FILE * f; + + f=fopen(name,"w+b"); + if(f) + { + fwrite(buffer,size,1,f); + fclose(f); + } +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.c b/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.c new file mode 100755 index 000000000..f07129d80 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.c @@ -0,0 +1,441 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#define FASTWRITE 1 + +#include +#include +#include + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" + +#include "hfe_file_writer.h" + +unsigned char * ramfile; +int ramfile_size; + +unsigned char bit_inverter[]= +{ + 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0, + 0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0, + 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8, + 0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8, + 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4, + 0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4, + 0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC, + 0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC, + 0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2, + 0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2, + 0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA, + 0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA, + 0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6, + 0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6, + 0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE, + 0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE, + 0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1, + 0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1, + 0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9, + 0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9, + 0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5, + 0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5, + 0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED, + 0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD, + 0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3, + 0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3, + 0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB, + 0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB, + 0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7, + 0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7, + 0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF, + 0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF +}; + + +unsigned short bit_expander[]= +{ + 0x0000,0x0002,0x0008,0x000a,0x0020,0x0022,0x0028,0x002a, + 0x0080,0x0082,0x0088,0x008a,0x00a0,0x00a2,0x00a8,0x00aa, + 0x0200,0x0202,0x0208,0x020a,0x0220,0x0222,0x0228,0x022a, + 0x0280,0x0282,0x0288,0x028a,0x02a0,0x02a2,0x02a8,0x02aa, + 0x0800,0x0802,0x0808,0x080a,0x0820,0x0822,0x0828,0x082a, + 0x0880,0x0882,0x0888,0x088a,0x08a0,0x08a2,0x08a8,0x08aa, + 0x0a00,0x0a02,0x0a08,0x0a0a,0x0a20,0x0a22,0x0a28,0x0a2a, + 0x0a80,0x0a82,0x0a88,0x0a8a,0x0aa0,0x0aa2,0x0aa8,0x0aaa, + 0x2000,0x2002,0x2008,0x200a,0x2020,0x2022,0x2028,0x202a, + 0x2080,0x2082,0x2088,0x208a,0x20a0,0x20a2,0x20a8,0x20aa, + 0x2200,0x2202,0x2208,0x220a,0x2220,0x2222,0x2228,0x222a, + 0x2280,0x2282,0x2288,0x228a,0x22a0,0x22a2,0x22a8,0x22aa, + 0x2800,0x2802,0x2808,0x280a,0x2820,0x2822,0x2828,0x282a, + 0x2880,0x2882,0x2888,0x288a,0x28a0,0x28a2,0x28a8,0x28aa, + 0x2a00,0x2a02,0x2a08,0x2a0a,0x2a20,0x2a22,0x2a28,0x2a2a, + 0x2a80,0x2a82,0x2a88,0x2a8a,0x2aa0,0x2aa2,0x2aa8,0x2aaa, + 0x8000,0x8002,0x8008,0x800a,0x8020,0x8022,0x8028,0x802a, + 0x8080,0x8082,0x8088,0x808a,0x80a0,0x80a2,0x80a8,0x80aa, + 0x8200,0x8202,0x8208,0x820a,0x8220,0x8222,0x8228,0x822a, + 0x8280,0x8282,0x8288,0x828a,0x82a0,0x82a2,0x82a8,0x82aa, + 0x8800,0x8802,0x8808,0x880a,0x8820,0x8822,0x8828,0x882a, + 0x8880,0x8882,0x8888,0x888a,0x88a0,0x88a2,0x88a8,0x88aa, + 0x8a00,0x8a02,0x8a08,0x8a0a,0x8a20,0x8a22,0x8a28,0x8a2a, + 0x8a80,0x8a82,0x8a88,0x8a8a,0x8aa0,0x8aa2,0x8aa8,0x8aaa, + 0xa000,0xa002,0xa008,0xa00a,0xa020,0xa022,0xa028,0xa02a, + 0xa080,0xa082,0xa088,0xa08a,0xa0a0,0xa0a2,0xa0a8,0xa0aa, + 0xa200,0xa202,0xa208,0xa20a,0xa220,0xa222,0xa228,0xa22a, + 0xa280,0xa282,0xa288,0xa28a,0xa2a0,0xa2a2,0xa2a8,0xa2aa, + 0xa800,0xa802,0xa808,0xa80a,0xa820,0xa822,0xa828,0xa82a, + 0xa880,0xa882,0xa888,0xa88a,0xa8a0,0xa8a2,0xa8a8,0xa8aa, + 0xaa00,0xaa02,0xaa08,0xaa0a,0xaa20,0xaa22,0xaa28,0xaa2a, + 0xaa80,0xaa82,0xaa88,0xaa8a,0xaaa0,0xaaa2,0xaaa8,0xaaaa +}; + + + +void addpad(unsigned char * track,int mfmsize,int tracksize) +{ + int i,j; + + i=tracksize-1; + do{ + + i--; + }while(i && !track[i]); + + if(i) + { + j=i+1; + do + { + track[j++]=track[i-1]; + if(j 50% duty cycle // factor=2-> 25% duty cycle + floppycontext->hxc_printf(MSG_INFO_1,"Write HFE file %s for the standalone emulator.",filename); + + ramfile=0; + ramfile_size=0; + + hxcpicfile=rfopen(filename,"wb"); + + if(hxcpicfile) + { + FILEHEADER=(picfileformatheader *) malloc(512); + memset(FILEHEADER,0xFF,512); + memcpy(&FILEHEADER->HEADERSIGNATURE,"HXCPICFE",8); + + FILEHEADER->number_of_track=(unsigned char)floppy->floppyNumberOfTrack; + FILEHEADER->number_of_side=floppy->floppyNumberOfSide; + if(floppy->floppyBitRate!=VARIABLEBITRATE) + { + FILEHEADER->bitRate=(floppy->floppyBitRate*factor)/1000; + } + else + { + FILEHEADER->bitRate=(floppy->tracks[0]->sides[0]->bitrate*factor)/1000; + } + FILEHEADER->floppyRPM=0;//floppy->floppyRPM; + + if(forceifmode==-1) + { + FILEHEADER->floppyinterfacemode=(unsigned char)floppy->floppyiftype; + } + else + { + FILEHEADER->floppyinterfacemode=forceifmode; + } + + FILEHEADER->track_encoding=0; + FILEHEADER->formatrevision=0; + FILEHEADER->track_list_offset=1; + FILEHEADER->write_protected=1; + + if(floppy->tracks[floppy->floppyNumberOfTrack/2]->sides[0]->track_encoding) + { + FILEHEADER->track_encoding=floppy->tracks[floppy->floppyNumberOfTrack/2]->sides[0]->track_encoding; + } + + if(double_step) + FILEHEADER->single_step=0x00; + else + FILEHEADER->single_step=0xFF; + + rfwrite(FILEHEADER,512,1,hxcpicfile); + + tracklistlen=((((((FILEHEADER->number_of_track)+1)*sizeof(pictrack))/512)+1)); + offsettrack=(unsigned char*) malloc(tracklistlen*512); + memset(offsettrack,0xFF,tracklistlen*512); + + i=0; + trackpos=FILEHEADER->track_list_offset+tracklistlen; + + while(i<(FILEHEADER->number_of_track)) + { + mfmsize=0; + mfmsize2=0; + + + mfmsize=floppy->tracks[i]->sides[0]->tracklen * factor; + if(mfmsize&7) + mfmsize=(mfmsize/8)+1; + else + mfmsize=mfmsize/8; + + + if(floppy->tracks[i]->number_of_side==2) + { + mfmsize2=floppy->tracks[i]->sides[1]->tracklen * factor; + if(mfmsize2&7) + mfmsize2=(mfmsize2/8)+1; + else + mfmsize2=mfmsize2/8; + } + + + + if(mfmsize2>mfmsize) mfmsize=mfmsize2; + + if(mfmsize*2>0xFFFF) + { + floppycontext->hxc_printf(MSG_ERROR,"Argg!! track %d too long (%x) and shorten to 0xFFFF !",i,mfmsize*2); + mfmsize=0x7FFF; + } + + track=(pictrack *)(offsettrack+(i*sizeof(pictrack))); + track->track_len=mfmsize*2; + track->offset=trackpos; + + if((mfmsize*2)%512) + trackpos=trackpos+(((mfmsize*2)/512)+1); + else + trackpos=trackpos+((mfmsize*2)/512); + + //trackpos=trackpos+(((mfmsize*2)/512)+1); + i++; + }; + + rfwrite(offsettrack,512*tracklistlen,1,hxcpicfile); + + i=0; + while(i<(FILEHEADER->number_of_track)) + { + + mfmsize=floppy->tracks[i]->sides[0]->tracklen * factor; + if(mfmsize&7) + mfmsize=(mfmsize/8)+1; + else + mfmsize=mfmsize/8; + + mfmsize2=0; + if(floppy->tracks[i]->number_of_side==2) + { + mfmsize2=floppy->tracks[i]->sides[1]->tracklen * factor; + if(mfmsize2&7) + mfmsize2=(mfmsize2/8)+1; + else + mfmsize2=mfmsize2/8; + } + + if(mfmsize>0x7FFF) + { + mfmsize=0x7FFF; + } + if(mfmsize2>0x7FFF) + { + mfmsize2=0x7FFF; + } + track=(pictrack *)(offsettrack+(i*sizeof(pictrack))); + + if(track->track_len%512) + tracksize=((track->track_len&(~0x1FF))+0x200)/2;//(((track->track_len/512)+1)*512)/2; + else + tracksize=track->track_len/2; + + if(factor>1) + { + mfmtemp=(unsigned char*) malloc(tracksize); + memset(mfmtemp,0x00,tracksize); + } + mfmtracks0=(unsigned char*) malloc(tracksize); + mfmtracks1=(unsigned char*) malloc(tracksize); + mfmtrackfinal=(unsigned char*) malloc(tracksize*2); + + memset(mfmtracks0,0x00,tracksize); + memset(mfmtracks1,0x00,tracksize); + memset(mfmtrackfinal,0x55,tracksize*2); + + if(factor==1) + { + memcpy(mfmtracks0,floppy->tracks[i]->sides[0]->databuffer,mfmsize); + addpad(mfmtracks0,mfmsize,tracksize); + //memset(&mfmtracks0[mfmsize],floppy->tracks[i]->sides[0]->databuffer[mfmsize-1],tracksize-mfmsize); + } + else + { + memcpy(mfmtemp,floppy->tracks[i]->sides[0]->databuffer,mfmsize/2); + memset(&mfmtemp[mfmsize/2],floppy->tracks[i]->sides[0]->databuffer[(mfmsize/2)-1],(tracksize/2)-(mfmsize/2)); + + for(l=0;l<(tracksize/2);l=l+1) + { + mfmtracks0[l*2]= bit_expander[mfmtemp[l]]>>8; + mfmtracks0[(l*2)+1]=bit_expander[mfmtemp[l]]&0xFF; + } + } + if(floppy->tracks[i]->number_of_side==2) + { + + if(factor==1) + { + memcpy(mfmtracks1,floppy->tracks[i]->sides[1]->databuffer,mfmsize2); + //memset(&mfmtracks1[mfmsize2],floppy->tracks[i]->sides[1]->databuffer[mfmsize2-1],tracksize-mfmsize2); + addpad(mfmtracks1,mfmsize2,tracksize); + } + else + { + memcpy(mfmtemp,floppy->tracks[i]->sides[1]->databuffer,mfmsize2/2); + memset(&mfmtemp[mfmsize2/2],floppy->tracks[i]->sides[1]->databuffer[(mfmsize2/2)-1],(tracksize/2)-(mfmsize2/2)); + + for(l=0;l<(tracksize/2);l=l+1) + { + mfmtracks1[l*2]= (bit_expander[mfmtemp[l]]>>8); + mfmtracks1[(l*2)+1]=bit_expander[mfmtemp[l]]&0xFF; + } + } + + } + if(factor>1) + free(mfmtemp); + + for(k=0;khxc_printf(MSG_ERROR,"Cannot create %s!",filename); + return -1; + } + +#endif + + rfclose(hxcpicfile); + + floppycontext->hxc_printf(MSG_INFO_1,"%d tracks written to the file",FILEHEADER->number_of_track); + + free(FILEHEADER); + + return 0; + } + else + { + floppycontext->hxc_printf(MSG_ERROR,"Cannot create %s!",filename); + + return -1; + } + +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.h b/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.h new file mode 100755 index 000000000..560c03a09 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/hfe_file_writer.h @@ -0,0 +1,58 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +#pragma pack(1) + +typedef struct picfileformatheader_ +{ + unsigned char HEADERSIGNATURE[8]; + unsigned char formatrevision; + unsigned char number_of_track; + unsigned char number_of_side; + unsigned char track_encoding; + unsigned short bitRate; + unsigned short floppyRPM; + unsigned char floppyinterfacemode; + unsigned char write_protected; + unsigned short track_list_offset; + unsigned char write_allowed; + unsigned char single_step; +}picfileformatheader; + + +typedef struct pictrack_ +{ + unsigned short offset; + unsigned short track_len; +}pictrack; + +#pragma pack() + + +int write_HFE_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename,int forceifmode,int double_step); + + + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.c b/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.c new file mode 100755 index 000000000..762da71f1 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.c @@ -0,0 +1,285 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ + +#include +#include +#include +#include + +#include "version.h" + +#include "hxc_floppy_emulator.h" +#include "internal_floppy.h" +#include "imd_file_writer.h" +#include "plugins/common/crc.h" +#include "plugins/imd_loader/imd_format.h" + +#include "sector_extractor.h" + + + +extern unsigned char size_to_code(unsigned long size); +/*{ + + switch(size) + { + case 128: + return 0; + break; + case 256: + return 1; + break; + case 512: + return 2; + break; + case 1024: + return 3; + break; + case 2048: + return 4; + break; + case 4096: + return 5; + break; + case 8192: + return 6; + break; + case 16384: + return 7; + break; + default: + return 0; + break; + } +}*/ + +int write_IMD_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename) +{ + int i,j,k,l,nbsector; + FILE * imdfile; + char * log_str; + char tmp_str[256]; + char rec_mode; + + unsigned char sector_numbering_map[256]; + unsigned char cylinder_numbering_map[256]; + unsigned char side_numbering_map[256]; + + int track_cnt; + int sectorlistoffset,trackinfooffset; + sect_track track; + imd_trackheader imd_th; + + struct tm * ts; + time_t currenttime; + +// struct DateTime reptime; + + + floppycontext->hxc_printf(MSG_INFO_1,"Write IMD file %s...",filename); + + log_str=0; + imdfile=fopen(filename,"wb"); + if(imdfile) + { + + currenttime=time (NULL); + ts=localtime(¤ttime); + + fprintf(imdfile,"IMD 1.17: %.2d/%.2d/%.4d %.2d:%.2d:%.2d\r\n",ts->tm_mday,ts->tm_mon,ts->tm_year+1900,ts->tm_hour,ts->tm_min,ts->tm_sec); + fprintf(imdfile,"File generated by the HxC Floppy Emulator software v%s\r\n",STR_FILE_VERSION2); + fprintf(imdfile,"%c",0x1A); + + memset(sector_numbering_map,0,0x100); + memset(cylinder_numbering_map,0,0x100); + memset(side_numbering_map,0,0x100); + + track_cnt=0; + + for(j=0;j<(int)floppy->floppyNumberOfTrack;j++) + { + for(i=0;i<(int)floppy->floppyNumberOfSide;i++) + { + sprintf(tmp_str,"track:%.2d:%d file offset:0x%.6x, sectors: ",j,i,ftell(imdfile)); + + log_str=0; + log_str=realloc(log_str,strlen(tmp_str)+1); + memset(log_str,0,strlen(tmp_str)+1); + strcat(log_str,tmp_str); + + rec_mode=0; + memset(&track,0,sizeof(sect_track)); + track.side=i; + track.track=j; + rec_mode=2; + nbsector=analysis_and_extract_sector_MFM(floppycontext,floppy->tracks[j]->sides[i],&track); + if(!nbsector) + { + nbsector=analysis_and_extract_sector_FM(floppycontext,floppy->tracks[j]->sides[i],&track); + rec_mode=1; + if(!nbsector) + { + rec_mode=0; + nbsector=analysis_and_extract_sector_AMIGAMFM(floppycontext,floppy->tracks[j]->sides[i],&track); + } + } + + + memset(&imd_th,0,sizeof(imd_trackheader)); + + imd_th.physical_head=i; + + + l=0; + while((lside_id==track.side) + { + l++; + } + if(l!=track.number_of_sector) + { + imd_th.physical_head=imd_th.physical_head | 0x40; + } + + + l=0; + while((ltrack_id==track.track) + { + l++; + } + if(l!=track.number_of_sector) + { + imd_th.physical_head=imd_th.physical_head | 0x80; + } + + imd_th.physical_cylinder=j; + imd_th.number_of_sector=track.number_of_sector; + + imd_th.track_mode_code=rec_mode; + + switch(floppy->tracks[j]->sides[i]->bitrate) + { + case 250000: + imd_th.track_mode_code=2; + break; + case 300000: + imd_th.track_mode_code=1; + break; + case 500000: + imd_th.track_mode_code=0; + break; + default: + imd_th.track_mode_code=2; + break; + + } + + if(rec_mode==2) + { + imd_th.track_mode_code=imd_th.track_mode_code+3; + } + + if(track.number_of_sector) + { + imd_th.sector_size_code=size_to_code(track.sectorlist[0]->sectorsize); + } + + trackinfooffset=ftell(imdfile); + fwrite(&imd_th,sizeof(imd_trackheader),1,imdfile); + sectorlistoffset=ftell(imdfile); + + for(k=0;ksector_id; + cylinder_numbering_map[k]=track.sectorlist[k]->track_id; + side_numbering_map[k]=track.sectorlist[k]->side_id; + } + + fwrite(sector_numbering_map,imd_th.number_of_sector,1,imdfile); + if(imd_th.physical_head & 0x80)fwrite(cylinder_numbering_map,imd_th.number_of_sector,1,imdfile); + if(imd_th.physical_head & 0x40)fwrite(side_numbering_map,imd_th.number_of_sector,1,imdfile); + + if(track.number_of_sector) + { + + k=0; + do + { + + + l=0; + while((lsectorsize) && track.sectorlist[k]->buffer[l]==track.sectorlist[k]->buffer[0]) + { + l++; + } + + if(l!=track.sectorlist[k]->sectorsize) + { + fputs("\1",imdfile); + fwrite(track.sectorlist[k]->buffer,track.sectorlist[k]->sectorsize,1,imdfile); + } + else + { + fputs("\2",imdfile); + fwrite(track.sectorlist[k]->buffer,1,1,imdfile); + } + + sprintf(tmp_str,"%d ",track.sectorlist[k]->sector_id); + log_str=realloc(log_str,strlen(log_str)+strlen(tmp_str)+1); + strcat(log_str,tmp_str); + k++; + + }while(kbuffer); + free(track.sectorlist[k]); + k++; + }while(khxc_printf(MSG_INFO_1,log_str); + free(log_str); + + } + } + + + fclose(imdfile); + } + + return 0; +} \ No newline at end of file diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.h b/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.h new file mode 100755 index 000000000..a6ce9416d --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/imd_file_writer.h @@ -0,0 +1 @@ +int write_IMD_file(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppy,char * filename); diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_loader.h b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_loader.h new file mode 100755 index 000000000..541c29b63 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_loader.h @@ -0,0 +1,53 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +// loader return code +#define LOADER_ISVALID 1 +#define LOADER_NOERROR 0 +#define LOADER_ACCESSERROR -1 +#define LOADER_BADFILE -2 +#define LOADER_FILECORRUPT -3 +#define LOADER_BADPARAMETER -4 +#define LOADER_INTERNALERROR -5 +#define LOADER_UNSUPPORTEDFILE -6 + +typedef int (*ISVALIDDISKFILE) (void* floppycontext,char * imgfile); +typedef int (*LOADDISKFILE)(void* floppycontext,void * floppydisk,char * imgfile,void * parameters); +typedef int (*WRITEDISKFILE)(void* floppycontext,void * floppydisk,char * imgfile,void * parameters); +typedef int (*GETPLUGININFOS)(void* floppycontext,void * floppydisk,void * pluginsinfos); + +typedef struct plugins_ptr_ +{ + ISVALIDDISKFILE libIsValidDiskFile; + LOADDISKFILE libLoad_DiskFile; + WRITEDISKFILE libWrite_DiskFile; + GETPLUGININFOS libGetPluginInfos; +}plugins_ptr; + + +int floppy_load(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * newfloppy,char* imgname); +int floppy_unload(HXCFLOPPYEMULATOR* floppycontext,FLOPPY * floppydisk); + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_utils.h b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_utils.h new file mode 100755 index 000000000..58e620418 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/floppy_utils.h @@ -0,0 +1,10 @@ +#define NO_SECTOR_UNDER_INDEX 0x80000000 +#define HARD_SECTORED_DISK 0x40000000 +#define REVERTED_INDEX 0x20000000 + + +unsigned long us2index(unsigned long startindex,SIDE * track,unsigned long us,unsigned char fill,char fillorder); +unsigned long fillindex(int startindex,SIDE * track,unsigned long us,unsigned char fill,char fillorder); + +CYLINDER* allocCylinderEntry(unsigned short rpm,unsigned char number_of_side); +void savebuffer(unsigned char * name,unsigned char * buffer, int size); diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/includes/hxc_floppy_emulator.h b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/hxc_floppy_emulator.h new file mode 100755 index 000000000..eac11917b --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/hxc_floppy_emulator.h @@ -0,0 +1,54 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// HxCFloppyEmulator Descriptor +// +// + + +// msg output level +#define MSG_INFO_0 0 +#define MSG_INFO_1 1 +#define MSG_WARNING 2 +#define MSG_ERROR 3 +#define MSG_DEBUG 4 + + + + +typedef int (*HXCPRINTF_FUNCTION)(int MSGTYPE,char * string, ...); +typedef int (*DISPLAYTRACKPOS_FUNCTION)(unsigned int current,unsigned int total); + +typedef struct HXCFLOPPYEMULATOR_ +{ + HXCPRINTF_FUNCTION hxc_printf; + DISPLAYTRACKPOS_FUNCTION hxc_settrackpos; +}HXCFLOPPYEMULATOR; + +int initHxCFloppyEmulator(HXCFLOPPYEMULATOR* floppycontext); + + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/includes/internal_floppy.h b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/internal_floppy.h new file mode 100755 index 000000000..f1c506c2c --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/includes/internal_floppy.h @@ -0,0 +1,94 @@ +/* +// +// Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Jean-François DEL NERO +// +// This file is part of HxCFloppyEmulator. +// +// HxCFloppyEmulator may be used and distributed without restriction provided +// that this copyright statement is not removed from the file and that any +// derivative work contains the original copyright notice and the associated +// disclaimer. +// +// HxCFloppyEmulator is free software; you can redistribute it +// and/or modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your option) any later version. +// +// HxCFloppyEmulator is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with HxCFloppyEmulator; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// +*/ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Floppy Descriptor +// +// +#define IBMPC_DD_FLOPPYMODE 0x00 +#define IBMPC_HD_FLOPPYMODE 0x01 +#define ATARIST_DD_FLOPPYMODE 0x02 +#define ATARIST_HD_FLOPPYMODE 0x03 +#define AMIGA_DD_FLOPPYMODE 0x04 +#define AMIGA_HD_FLOPPYMODE 0x05 +#define CPC_DD_FLOPPYMODE 0x06 +#define GENERIC_SHUGART_DD_FLOPPYMODE 0x07 +#define IBMPC_ED_FLOPPYMODE 0x08 +#define MSX2_DD_FLOPPYMODE 0x09 +#define C64_DD_FLOPPYMODE 0x0A +#define EMU_SHUGART_FLOPPYMODE 0x0B +#define S950_DD_FLOPPYMODE 0x0C +#define S950_HD_FLOPPYMODE 0x0D + +#define CALLINGMETHOD + +#define VARIABLEBITRATE -1 +#define VARIABLEENCODING -1 + +#define ISOIBM_MFM_ENCODING 0x00 +#define AMIGA_MFM_ENCODING 0x01 +#define ISOIBM_FM_ENCODING 0x02 +#define EMU_FM_ENCODING 0x03 +#define UNKNOWN_ENCODING 0xFF + + +typedef struct SIDE_ +{ + unsigned int number_of_sector; // nombre de secteurs sur la piste (informatif/optionnel) -> -1 si inconnu. + unsigned char * databuffer; // buffer data + long bitrate; // si == a VARIABLEBITRATE utiliser timingbuffer + unsigned long * timingbuffer; // buffer bitrate de la piste. + unsigned char * flakybitsbuffer; // si = 0 pas de flakey/weak bits. + unsigned char * indexbuffer; // buffer signal index 1->activé 0->désactivé + unsigned char * track_encoding_buffer; // buffer code codage + + + unsigned char track_encoding; + + unsigned long tracklen; // longueur de databuffer/timingbuffer/flakybitsbuffer/indexbuffer (nombre d'elements) +}SIDE; + +typedef struct CYLINDER_ +{ + unsigned short floppyRPM; // rotation par minute (informatif/optionnel) + unsigned char number_of_side; + SIDE ** sides; +}CYLINDER; + +typedef struct FLOPPY_ +{ + unsigned int floppyBitRate; + + unsigned char floppyNumberOfSide; + unsigned short floppyNumberOfTrack; + unsigned short floppySectorPerTrack; + + unsigned short floppyiftype; + + CYLINDER ** tracks; +}FLOPPY; + + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/AUTHORS.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/AUTHORS.txt new file mode 100755 index 000000000..72fb56288 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/AUTHORS.txt @@ -0,0 +1,13 @@ + +The main developper is + Laurent Clévy (laurent.clevy@club-internet.fr) + +Contributors are: + Bjarne Viksoe + (C++ wrapper, lot of bug fixes) + Gary Harris + (bug fixes and W32 support) + Dan Sutherland + (bug fixes and W32 support) + +See CHANGES.txt for detailed contributions. diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Boot/stdboot3.bbk b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Boot/stdboot3.bbk new file mode 100755 index 0000000000000000000000000000000000000000..80e2615c35abf883a8c3dab6ce27f662376c9e23 GIT binary patch literal 1024 zcmZ?q4`z65%U8_6z+B+`i@~ly)oFBHO9IMB_^tcD04UC- z;GmGfAXdQOS6cAjuQVmUST83tsVK3ik|DLCATh5vGd~Y5!Y~R(Ltr!n25|@g04tFp A-v9sr literal 0 HcmV?d00001 diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/CHANGES.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/CHANGES.txt new file mode 100755 index 000000000..850137b3a --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/CHANGES.txt @@ -0,0 +1,96 @@ + +20JAN07 +ADFlib 0.7.11a +- Minor Makefile fixes. Works under Fedora Core 5, gcc 4.1.0. +- Inclusing of Bjarke Viksoe C++ wrapper (adfwrapper.h). Windows specific for the moment, + but good example of C++ wrapper on top of ADFlib. +- Inclusion of GPL license and text inside every code source file + (requested by Gürkan Sengün to build a Debian package for unadf) + +31MAR06 +ADFlib 0.7.11 +Minor Makefile and compilation process changes to work under cygwin and with gcc 3.4.4. + +16OCT02 +ADFlib 0.7.9d by Gary Harris +- changes all occurences of // foo, into /* foo */ +- updated "Copyright Laurent Clevy" message date up to 2002 intead of 1999 +- marked all Bjarke changes by the /* BV */ comment + +22JAN01 +ADFlib 0.7.9c by Bjarke Viksoe +- changes : Win32/nt4_dev.c + .return RC_ERROR instead of FALSE + .return TRUE when input parameter of NT4CloseDrive is NULL +- changes : Win32/defendian.h + changes printf and putchar into -empty string- for Win32 GUI applications +- fix : in adf_hd.c, in adfMountDev(), dumpfiledevice was assumed sometimes, but it could be native. + "if (dev->isNativeDev)" when needed +- fix : in adf_hd.c, in adfMountDev(), some memory release was forgotten in case of error +- change : adf_hd.c, line 36, floppy dump files with 83 sectors are now valid (request by users) +- change : adf_hd.c , adfReadRDSKBlock(), ignore checksum error. Win98 modifies this sector + +10SEP00 +- ADFlib 0.7.9b refixes and Win32 code improvements by Gary Harris +27FEB00 +- ADFlib 0.7.9a bug with hardfiles fixed some months ago by Dan Sutherland +05SEP99 +- ADFlib 0.7.9 released. Docs updated. +15AUG99 +- fix: bug in adfGetHashValue() : must use unsigned char... +- unadf 1.0 : with multiple files and recursive extraction, pipe redirection +01AUG99 +- adfGetDelEnt(), adfUndelEntry(), adfCheckEntry() +??JUN99 +- fix: forgot the secType for the cache entry in adfCreateDir() +- fix: adfRemoveEntry() with a dir did not remove the related cache blocks +26MAY99 +- 0.7.8a released. +- a minor buf was detected in the bootblock checksum checking +24MAY99 +- 0.7.8 released. the 0.7.9 will have some links support. the next unadf version will have extraction (-x). +- Win32 dynamic library makefile added +- test scripts floppy.sh and bigdev.sh added +- small bug fix in adfGetRDirEnt(). +20MAY99 +- the ENV_DECLARATION is put in the library (adf_env.c), and must be removed from the main() files. + Will be consistent will the .dll version. +- unadf.c started : a unzip like utility for the .ADF files. Extraction not provided yet. +- adfGetRDirEnt() added, adfFreeDirList() modified : to get recursively the entire directories entries tree. +13MAY99 +- adfSetEntryAccess() and adfSetEntryComment() added +- Win32 makefile added for the static library form +06MAY99 +- adfGetVersionNumber() and adfGetVersionDate() added +01MAY99 +- many date and time fields filled +- bug fix in adfCreateDir() +- adfRenameEntry() already worked with two differents dirs, but it's verified now +29APR +- Hardfile support added (requested by Dan Sutherland) +19APR +- bug fix in cache routines +- adfRenameEntry() works in the same directory, only +6APR99 +- bug fix in adfWriteBootBlock() : disks can really be made bootable +- bug fix around adfCreateDumpDevice() +22MAR99 +- removed the fread() bug : fopen(,"rb") +- removed the LSEG checking +01FEB99 +- adfFlushFile() +- dir cache support for files and directories +- bugfix : adfCloseFile() when filesize==0 +- bugfix : parent field in file header block +28JAN99 +- safier and proper error handling +27JAN99 +- bugfix : adfGetFreeBlocks(), physical and logical block numbers confused +24JAN99 +- adfRemoveEntry() : delete files and empty directories +- modified Makefile : remplace links for Linux/ and + adf_nativ.h with gcc flags -I. -I.. +19JAN99 +- Remove most of signed/unsigned warning from MSVC +- Error handling : test exe +- Read only support diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/COPYING.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/COPYING.txt new file mode 100755 index 000000000..d511905c1 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/COPYING.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/.depend b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/.depend new file mode 100755 index 000000000..8b1378917 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/.depend @@ -0,0 +1 @@ + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Extdir/.info b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Extdir/.info new file mode 100755 index 0000000000000000000000000000000000000000..90a23cbd107e42903a0af8ccab12514feb762826 GIT binary patch literal 628 zcmZ{gF;2rk5Ji7B#t9MvM)Rer9#vejYD(`FvvZvD)A zbJ`lU_ WwXPv|!MT@l7bJH<)`x}voBbR3XS37* literal 0 HcmV?d00001 diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Makefile b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Makefile new file mode 100755 index 000000000..60b253f53 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/Makefile @@ -0,0 +1,34 @@ +# unadf + +LIBDIR=../Lib +LIBNAME=libadf.a + +DEPEND=makedepend + +CFLAGS=-I$(LIBDIR) -O2 -Wall -Wno-uninitialized -pedantic +LDFLAGS=-L$(LIBDIR) -ladf + +EXES= unadf + + +all: $(EXES) + +run: $(EXES) + unadf -h + unadf -lrcs -v 1 ../../hd.adf + +lib: + cd $(LIBDIR) && $(MAKE) + +unadf: lib unadf.o + $(CC) $(CFLAGS) -o $@ unadf.o $(LDFLAGS) + +clean: + (rm *.o $(EXES) core newdev *.exe *~) || true + echo >.depend + +dep: + $(DEPEND) -f.depend -v -- $(CFLAGS) -- *.[ch] + + +include .depend diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.c b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.c new file mode 100755 index 000000000..c84355bba --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.c @@ -0,0 +1,567 @@ +/* + * unadf 1.0 + * + * + * tested under Linux and Win32 + * + * This file is part of ADFLib. + * + * ADFLib is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * ADFLib is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Foobar; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#define UNADF_VERSION "1.0" + + +#include +#include +#include + +#include "adflib.h" + +/* The portable way used to create a directory is to call the MKDIR command via the + * system() function. + * It is used to create the 'dir1' directory, like the 'dir1/dir11' directory + */ + +/* the portable way to check if a directory 'dir1' already exists i'm using is to + * do fopen('dir1','rb'). NULL is returned if 'dir1' doesn't exists yet, an handle instead + */ + +#define MKDIR "mkdir" + +#ifdef WIN32 +#define DIRSEP '\\' +#else +#define DIRSEP '/' +#endif /* WIN32 */ + +#define EXTBUFL 1024*8 + + +void help() +{ + puts("unadf [-lrcsp -v n] dumpname.adf [files-with-path] [-d extractdir]"); + puts(" -l : lists root directory contents"); + puts(" -r : lists directory tree contents"); + puts(" -c : use dircache data (must be used with -l)"); + puts(" -s : display entries logical block pointer (must be used with -l)"); + putchar('\n'); + puts(" -v n : mount volume #n instead of default #0 volume"); + putchar('\n'); + puts(" -p : send extracted files to pipe (unadf -p dump.adf Pics/pic1.gif | xv -)"); + puts(" -d dir : extract to 'dir' directory"); +} + +void printEnt(struct Volume *vol, struct Entry* entry, char *path, BOOL sect) +{ + /* do not print the links entries, ADFlib do not support them yet properly */ + if (entry->type==ST_LFILE || entry->type==ST_LDIR || entry->type==ST_LSOFT) + return; + + if (entry->type==ST_DIR) + printf(" "); + else + printf("%7ld ",entry->size); + + printf("%4d/%02d/%02d %2d:%02d:%02d ",entry->year, entry->month, entry->days, + entry->hour, entry->mins, entry->secs); + if (sect) + printf(" %06ld ",entry->sector); + + if (strlen(path)>0) + printf(" %s/",path); + else + printf(" "); + if (entry->type==ST_DIR) + printf("%s/",entry->name); + else + printf("%s",entry->name); + if (entry->comment!=NULL && strlen(entry->comment)>0) + printf(", %s",entry->comment); + putchar('\n'); + +} + + +void extractFile(struct Volume *vol, char* name, char* path, unsigned char *extbuf, + BOOL pflag, BOOL qflag) +{ + struct File *file; + FILE* out; + long n; + char *filename; + + filename = NULL; + if (pflag) + out = stdout; + else { + if (strlen(path)>0) { + filename=(char*)malloc(sizeof(char)* (strlen(path)+1+strlen(name)+1) ); + if (!filename) return; + sprintf(filename,"%s%c%s",path,DIRSEP,name); + out = fopen(filename, "wb"); + } + else + out = fopen(name, "wb"); + if (!out) return; + } + + file = adfOpenFile(vol, name, "r"); + if (!file) { fclose(out); return; } + + n = adfReadFile(file, EXTBUFL, extbuf); + while(!adfEndOfFile(file)) { + fwrite(extbuf, sizeof(unsigned char), n, out); + n = adfReadFile(file, EXTBUFL, extbuf); + } + if (n>0) + fwrite(extbuf, sizeof(unsigned char), n, out); + + if (!pflag) + fclose(out); + + adfCloseFile(file); + + if (!qflag) { + if (filename!=NULL) + printf("x - %s\n", filename); + else + printf("x - %s\n", name); + } + + if (filename!=NULL) + free(filename); +} + + +void extractTree(struct Volume *vol, struct List* tree, char *path, unsigned char *extbuf, + BOOL pflag, BOOL qflag) +{ + struct Entry* entry; + char *buf; + char sysbuf[200]; + + while(tree) { + entry = (struct Entry*)tree->content; + if (entry->type==ST_DIR) { + buf = NULL; + if (strlen(path)>0) { + buf=(char*)malloc(strlen(path)+1+strlen(entry->name)+1); + if (!buf) return; + sprintf(buf,"%s%c%s",path,DIRSEP,entry->name); + sprintf(sysbuf,"%s %s",MKDIR,buf); + if (!qflag) printf("x - %s%c\n",buf,DIRSEP); + } + else { + sprintf(sysbuf,"%s %s",MKDIR,entry->name); + if (!qflag) printf("x - %s%c\n",entry->name,DIRSEP); + } + + if (!pflag) system(sysbuf); + + if (tree->subdir!=NULL) { + if (adfChangeDir(vol,entry->name)==RC_OK) { + if (buf!=NULL) + extractTree(vol,tree->subdir,buf,extbuf, pflag, qflag); + else + extractTree(vol,tree->subdir,entry->name,extbuf, pflag, qflag); + adfParentDir(vol); + } + else { + if (strlen(path)>0) + fprintf(stderr,"ExtractTree : dir \"%s/%s\" not found.\n",path,entry->name); + else + fprintf(stderr,"ExtractTree : dir \"%s\" not found.\n",entry->name); + } + } + + if (buf!=NULL) + free(buf); + } + else if (entry->type==ST_FILE) { + extractFile(vol,entry->name,path,extbuf, pflag, qflag); + } + tree = tree->next; + } +} + + +void printTree(struct Volume *vol, struct List* tree, char* path, BOOL sect) +{ + char *buf; + struct Entry* entry; + + while(tree) { + printEnt(vol, tree->content, path, sect); + if (tree->subdir!=NULL) { + entry = (struct Entry*)tree->content; + if (strlen(path)>0) { + buf=(char*)malloc(sizeof(char)* (strlen(path)+1+strlen(entry->name)+1) ); + if (!buf) { + fprintf(stderr,"printTree : malloc error\n"); + return; + } + sprintf(buf,"%s/%s", path, entry->name); + printTree(vol, tree->subdir, buf, sect); + free(buf); + } + else + printTree(vol, tree->subdir, entry->name, sect); + } + tree = tree->next; + } +} + + +void printDev(struct Device* dev) +{ + printf("Device : "); + + switch(dev->devType){ + case DEVTYPE_FLOPDD: + printf("Floppy DD"); break; + case DEVTYPE_FLOPHD: + printf("Floppy HD"); break; + case DEVTYPE_HARDDISK: + printf("Harddisk"); break; + case DEVTYPE_HARDFILE: + printf("Hardfile"); break; + default: + printf("???"); break; + } + + printf(". Cylinders = %ld, Heads = %ld, Sectors = %ld",dev->cylinders,dev->heads,dev->sectors); + + printf(". Volumes = %d\n",dev->nVol); +} + + +void printVol(struct Volume* vol, int volNum) +{ + printf("Volume : "); + + switch(vol->dev->devType) { + case DEVTYPE_FLOPDD: + printf ("Floppy 880 KBytes,"); + break; + case DEVTYPE_FLOPHD: + printf ("Floppy 1760 KBytes,"); + break; + case DEVTYPE_HARDDISK: + printf ("HD partition #%d %3.1f KBytes,", volNum, (vol->lastBlock - vol->firstBlock +1) * 512.0/1024.0); + break; + case DEVTYPE_HARDFILE: + printf ("HardFile %3.1f KBytes,", (vol->lastBlock - vol->firstBlock +1) * 512.0/1024.0); + break; + default: + printf ("???,"); + } + + if (vol->volName!=NULL) + printf(" \"%s\"", vol->volName); + + printf(" between sectors [%ld-%ld].",vol->firstBlock, vol->lastBlock); + + printf(" %s ",isFFS(vol->dosType) ? "FFS" : "OFS"); + if (isINTL(vol->dosType)) + printf ("INTL "); + if (isDIRCACHE(vol->dosType)) + printf ("DIRCACHE "); + + printf(". Filled at %2.1f%%.\n", 100.0- + (adfCountFreeBlocks(vol)*100.0)/(vol->lastBlock - vol->firstBlock +1) ); + +} + + +void processFile(struct Volume *vol, char* name, char* path, unsigned char *extbuf, + BOOL pflag, BOOL qflag) +{ + char *sepptr, *cdstr, *fullname, *filename; + char *bigstr; + FILE *tfile; + + adfToRootDir(vol); + + sepptr = strchr(name, '/'); + if (sepptr==NULL) { + extractFile(vol, name, path, extbuf, pflag, qflag); + } + else { + /* the all-in-one string : to call system(), to find the filename, the convert dir sep char ... */ + bigstr=(char*)malloc(strlen(MKDIR)+1+strlen(path)+1+strlen(name)+1); + if (!bigstr) { fprintf(stderr,"processFile : malloc"); return; } + + /* to build to extract path */ + if (strlen(path)>0) { + sprintf(bigstr,"%s %s%c%s",MKDIR,path,DIRSEP,name); + cdstr = bigstr+strlen(MKDIR)+1+strlen(path)+1; + } + else { + sprintf(bigstr,"%s %s",MKDIR,name); + cdstr = bigstr+strlen(MKDIR)+1; + } + /* the directory in which the file will be extracted */ + fullname = bigstr+strlen(MKDIR)+1; + + /* finds the filename, and separates it from the path */ + filename = strrchr(bigstr,'/')+1; + filename[-1]='\0'; + + sepptr = cdstr; + /* find the end of the first dir to create */ + while(sepptr[0]!='/' && sepptr[0]!='\0') + sepptr++; + + while(strlen(cdstr)>0) { + if (sepptr[0]=='/') { /* not the last one */ + sepptr[0]='\0'; + if (adfChangeDir(vol,cdstr)!=RC_OK) + return; + tfile = fopen(fullname,"r"); /* the only portable way to test if the dir exists */ + if (tfile==NULL) { /* does't exist : create it */ + if (!pflag) system(bigstr); + if (!qflag) printf("x - %s%c\n",fullname,DIRSEP); + } + else + fclose(tfile); + sepptr[0] = DIRSEP; /* converts the '/' to '/' or '\' */ + cdstr = sepptr+1; /* next beginning of the next dir to create */ + /* to find the end of the next dir */ + sepptr++; + while(sepptr[0]!='/' && sepptr[0]!='\0') + sepptr++; + } + else { /* the last one */ + if (adfChangeDir(vol,cdstr)!=RC_OK) + return; + tfile = fopen(fullname,"r"); + if (tfile==NULL) { + if (!pflag) system(bigstr); + if (!qflag) printf("x - %s%c\n",fullname,DIRSEP); + } + else + fclose(tfile); + cdstr = cdstr+strlen(cdstr); /* at the end, ends the while loop */ + } + } + extractFile(vol, filename, fullname, extbuf, pflag, qflag); + + free(bigstr); + } + + +} + + +int main(int argc, char* argv[]) +{ + int i, j; + BOOL rflag, lflag, xflag, cflag, vflag, sflag, dflag, pflag, qflag; + struct List* files, *rtfiles; + char *devname, *dirname; + char strbuf[80]; + unsigned char *extbuf; + int vInd, dInd, fInd, aInd; + BOOL nextArg; + + struct Device *dev; + struct Volume *vol; + struct List *list, *cell; + int volNum; + BOOL true = TRUE; + + if (argc<2) { + help(); + exit(0); + } + + rflag = lflag = cflag = vflag = sflag = dflag = pflag = qflag = FALSE; + vInd = dInd = fInd = aInd = -1; + xflag = TRUE; + dirname = NULL; + devname = NULL; + files = rtfiles = NULL; + volNum = 0; + + fprintf(stderr,"unADF v%s : a unzip like for .ADF files, powered by ADFlib (v%s - %s)\n\n", + UNADF_VERSION, adfGetVersionNumber(),adfGetVersionDate()); + + /* parse options */ + i=1; + while(i=dev->nVol) { + fprintf(stderr,"This device has only %d volume(s), aborting.\n",dev->nVol); + exit(1); + } + + vol = adfMount(dev, volNum, TRUE); + if (!vol) { + adfUnMountDev(dev); + fprintf(stderr, "Can't mount the volume\n"); + adfEnvCleanUp(); exit(1); + } + + if (!qflag) { + printVol(vol, volNum); + putchar('\n'); + } + + if (cflag && isDIRCACHE(vol->dosType) && lflag) { + adfChgEnvProp(PR_USEDIRC,&true); + if (!qflag) + puts("Using dir cache blocks."); + } + + if (lflag) { + if (!rflag) { + cell = list = adfGetDirEnt(vol,vol->curDirPtr); + while(cell) { + printEnt(vol,cell->content,"", sflag); + cell = cell->next; + } + adfFreeDirList(list); + } else { + cell = list = adfGetRDirEnt(vol,vol->curDirPtr,TRUE); + printTree(vol,cell,"", sflag); + adfFreeDirList(list); + } + }else if (xflag) { + if (rtfiles!=NULL) { + files = rtfiles; + while(files!=NULL) { + if (dirname!=NULL) + processFile(vol, (char*)files->content, dirname, extbuf, pflag, qflag); + else + processFile(vol, (char*)files->content, "", extbuf, pflag, qflag); + files = files->next; + } + freeList(rtfiles); + } + else { + cell = list = adfGetRDirEnt(vol,vol->curDirPtr,TRUE); + if (dirname==NULL) + extractTree(vol, cell, "", extbuf, pflag, qflag); + else + extractTree(vol, cell, dirname, extbuf, pflag, qflag); + adfFreeDirList(list); + } + } + else + help(); + + free(extbuf); + + adfUnMount(vol); + adfUnMountDev(dev); + + adfEnvCleanUp(); + + return(0); +} diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.output b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.output new file mode 100755 index 000000000..c91f1c7a6 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.output @@ -0,0 +1,1215 @@ +Device : Harddisk. Cylinders = 980, Heads = 10, Sectors = 17. Volumes = 2 +Volume : HD partition #0 8500.0 KBytes, "DH0" between sectors [340-17339]. FFS DIRCACHE . Filled at 88.9%. + +Using dir cache blocks. + 632 1996/10/10 21:32:53 008509 Expansion.info + 632 1991/09/29 22:23:02 008512 WBStartup.info + 632 1992/09/02 12:40:52 008515 Devs.info + 632 1992/09/02 13:32:10 008521 Utilities.info + 848 1995/06/17 17:34:16 008524 Disk.info + 724 1992/09/02 12:40:49 008527 Prefs.info + 632 1992/09/02 12:40:51 008530 System.info + 632 1996/10/10 21:36:26 008533 Tools.info + 1172 1992/09/02 12:34:04 008536 Trashcan.info + 1991/09/29 22:23:01 008542 Trashcan/ + 1992/09/02 12:40:53 008544 Storage/ + 632 1991/09/29 22:23:04 008612 Storage/Monitors.info + 632 1992/09/02 12:40:53 008615 Storage/Printers.info + 632 1992/09/02 11:57:44 008618 Storage/DOSDrivers.info + 632 1992/09/02 11:58:21 008621 Storage/DataTypes.info + 632 1992/09/02 11:57:45 008624 Storage/Keymaps.info + 1996/10/09 20:33:38 008627 Storage/DOSDrivers/ + 492 1991/09/29 22:23:07 009421 Storage/DOSDrivers/PC0.info + 481 1991/09/29 22:23:08 009423 Storage/DOSDrivers/RAD.info + 481 1991/09/29 22:23:09 009425 Storage/DOSDrivers/AUX.info + 549 1991/09/29 22:23:06 009427 Storage/DOSDrivers/RAD + 664 1991/09/29 22:23:10 009430 Storage/DOSDrivers/PC0 + 86 1991/09/29 22:23:11 009433 Storage/DOSDrivers/AUX + 896 1995/01/05 15:12:30 000014 Storage/DOSDrivers/CD0 + 537 1995/03/19 16:25:16 000017 Storage/DOSDrivers/CD0.info + 1991/09/29 22:23:12 008629 Storage/Keymaps/ + 459 1991/09/29 22:23:13 009435 Storage/Keymaps/f.info + 1336 1991/09/29 22:23:14 009437 Storage/Keymaps/f, Français + 1992/09/02 12:40:47 008631 Storage/Monitors/ + 356 1992/09/02 11:58:10 009438 Storage/Monitors/Euro36.info + 356 1992/09/02 11:58:17 009440 Storage/Monitors/DblPAL.info + 356 1992/09/02 11:58:11 009442 Storage/Monitors/Euro72.info + 356 1992/09/02 11:58:13 009444 Storage/Monitors/Multiscan.info + 356 1992/09/02 11:58:18 009446 Storage/Monitors/DblNTSC.info + 356 1992/09/02 11:58:19 009448 Storage/Monitors/VGAOnly.info + 356 1992/09/02 11:58:14 009450 Storage/Monitors/NTSC.info + 356 1992/09/02 11:58:08 009452 Storage/Monitors/A2024.info + 356 1992/09/02 11:58:17 009454 Storage/Monitors/Super72.info + 6168 1992/09/02 11:51:33 009456 Storage/Monitors/NTSC + 8796 1992/09/02 11:51:33 009457 Storage/Monitors/Euro72 + 8928 1992/09/02 11:51:33 009458 Storage/Monitors/Super72 + 8924 1992/09/02 11:51:33 009459 Storage/Monitors/Multiscan + 9980 1992/09/02 11:51:33 009460 Storage/Monitors/DblNTSC + 10664 1992/09/02 11:51:33 009461 Storage/Monitors/A2024 + 9900 1992/09/02 11:51:33 009462 Storage/Monitors/Euro36 + 3128 1992/09/02 11:51:33 009463 Storage/Monitors/VGAOnly + 9972 1992/09/02 11:51:33 009464 Storage/Monitors/DblPAL + 1996/10/31 22:07:24 008130 WBStartup/ + 11396 1996/07/15 12:34:51 008133 WBStartup/StormScreenManager + 643 1996/07/15 12:34:51 008157 WBStartup/StormScreenManager.info + 10544 1996/10/27 19:54:44 002714 WBStartup/ZJWatch + 628 1996/10/31 22:07:23 002736 WBStartup/.info + 1829 1996/10/31 22:07:25 002739 WBStartup/ZJWatch.info + 1997/01/04 18:20:04 008546 C/ + 1712 1992/09/02 11:51:33 008634 C/Install + 700 1992/09/02 11:51:33 008635 C/MakeLink + 828 1992/09/02 11:51:33 008638 C/Status + 1420 1992/09/02 11:51:33 008641 C/BindDrivers + 3516 1992/09/02 11:51:33 008642 C/ConClip + 5820 1996/10/14 22:04:23 008643 C/Ed + 6880 1994/02/18 9:56:04 008644 C/Mount + 2472 1992/09/02 11:51:33 008645 C/Search + 1972 1992/09/02 11:51:33 008646 C/Delete + 728 1992/09/02 11:51:33 008647 C/Avail + 14792 1992/09/02 11:51:33 008650 C/Edit + 1496 1992/09/02 11:51:33 008651 C/Type + 444 1992/09/02 11:51:33 008652 C/AddBuffers + 13484 1994/02/15 16:09:06 008654 C/SetPatch + 432 1992/09/02 11:51:33 008655 C/Break + 1412 1992/09/02 11:51:33 008657 C/SetKeyboard + 584 1992/09/02 11:51:33 008658 C/Relabel + 1200 1992/09/02 11:51:33 008661 C/Join + 536 1992/09/02 11:51:33 008662 C/Lock + 688 1992/09/02 11:51:33 008665 C/SetDate + 1980 1992/09/02 11:51:33 008668 C/Info + 1120 1992/09/02 11:51:33 008669 C/RequestChoice + 896 1992/09/02 11:51:33 008670 C/Filenote + 3220 1992/09/02 11:51:33 008673 C/Assign + 3652 1992/09/02 11:51:33 008674 C/CPU + 460 1992/09/02 11:51:33 008675 C/ChangeTaskPri + 3440 1992/09/02 11:51:33 008677 C/Dir + 1140 1992/09/02 11:51:33 008678 C/Rename + 1520 1992/09/02 11:51:33 008679 C/RequestFile + 1768 1992/09/02 11:51:33 008680 C/MagTape + 1092 1992/09/02 11:51:33 008681 C/SetFont + 312 1992/09/02 11:51:33 008682 C/DiskChange + 1980 1992/09/02 11:51:33 008684 C/Sort + 1128 1992/09/02 11:51:33 008685 C/RemRAD + 4432 1992/09/02 11:51:33 008686 C/Execute + 5496 1992/09/02 11:51:33 008687 C/Copy + 5108 1992/09/02 11:51:33 008688 C/List + 464 1992/09/02 11:51:33 008689 C/MakeDir + 1068 1992/09/02 11:51:33 008691 C/Which + 1092 1992/09/02 11:51:33 008692 C/Date + 13164 1992/09/02 11:51:33 008693 C/IPrefs + 1452 1992/09/02 11:51:33 008694 C/IconX + 1136 1992/09/02 11:51:33 008695 C/LoadWB + 5880 1992/09/02 11:51:33 008696 C/AddDataTypes + 1276 1992/09/02 11:51:33 008697 C/Protect + 668 1992/09/02 11:51:33 008698 C/SetClock + 852 1992/09/02 11:51:33 008701 C/Wait + 2084 1992/09/02 11:51:33 008704 C/Eval + 4804 1992/09/02 11:51:33 008705 C/Version + 20152 1995/04/10 23:07:41 009119 C/HighDensityPatch + 4092 1995/08/29 14:06:06 010685 C/SquirrelSCSI + 1444 1994/01/12 15:49:31 010027 C/SetPatchMrgCop + 1992/09/02 12:45:12 008551 Prefs/ + 617 1992/09/02 11:56:00 008706 Prefs/PrinterPS.info + 617 1992/09/02 11:55:48 008709 Prefs/Input.info + 632 1992/09/02 11:54:56 008712 Prefs/Presets.info + 617 1992/09/02 11:55:46 008715 Prefs/IControl.info + 628 1992/09/02 12:40:49 008718 Prefs/Printer.info + 580 1992/09/02 11:55:53 008721 Prefs/Palette.info + 580 1992/09/02 11:56:02 008724 Prefs/ScreenMode.info + 587 1992/09/02 11:56:07 008727 Prefs/Time.info + 617 1992/09/02 11:55:51 008730 Prefs/Overscan.info + 617 1992/09/02 11:56:05 008733 Prefs/Sound.info + 617 1992/09/02 11:55:58 008736 Prefs/PrinterGfx.info + 633 1992/09/02 11:56:09 008739 Prefs/WBPattern.info + 617 1992/09/02 11:55:45 008742 Prefs/Font.info + 631 1992/09/02 11:55:55 008745 Prefs/Pointer.info + 617 1992/09/02 11:55:49 008748 Prefs/Locale.info + 628 1992/09/02 11:56:03 008751 Prefs/Serial.info + 21688 1992/09/02 11:51:33 008754 Prefs/WBPattern + 13720 1992/09/02 11:51:33 008755 Prefs/ScreenMode + 10580 1992/09/02 11:51:33 008756 Prefs/IControl + 1997/02/14 22:25:31 008757 Prefs/Env-Archive/ + 1978/01/06 4:02:09 009467 Prefs/Env-Archive/ADPro/ + 456 1978/02/08 1:01:04 009469 Prefs/Env-Archive/povpanel.prefs + 39 1994/04/05 21:56:05 009471 Prefs/Env-Archive/xprzmodem + 6 1992/09/02 12:41:44 009473 Prefs/Env-Archive/Kickstart + 1996/01/25 22:30:09 009475 Prefs/Env-Archive/Sys/ + 828 1994/08/04 16:19:26 009873 Prefs/Env-Archive/Sys/crossmac_def_disk.info, 000000000000000040000000000000000000000000000000000000000000000004 + 318 1993/08/08 22:12:29 009876 Prefs/Env-Archive/Sys/Pointer.prefs + 62 1993/08/08 22:11:53 009878 Prefs/Env-Archive/Sys/icontrol.prefs + 318 1993/08/08 22:12:43 009880 Prefs/Env-Archive/Sys/sound.prefs + 518 1992/09/02 12:44:47 009882 Prefs/Env-Archive/Sys/font.prefs + 162 1996/01/25 22:30:09 009885 Prefs/Env-Archive/Sys/printer.prefs + 62 1992/09/02 12:42:06 009887 Prefs/Env-Archive/Sys/screenmode.prefs + 72 1993/08/08 22:15:00 009889 Prefs/Env-Archive/Sys/printergfx.prefs + 70 1993/08/08 22:13:01 009891 Prefs/Env-Archive/Sys/overscan.prefs + 68 1997/09/29 16:12:17 009893 Prefs/Env-Archive/Sys/serial.prefs + 54 1995/06/17 17:34:18 009895 Prefs/Env-Archive/Sys/wbconfig.prefs + 314 1993/10/14 17:22:57 009897 Prefs/Env-Archive/Sys/WBPattern.prefs + 78 1993/08/08 22:13:37 009899 Prefs/Env-Archive/Sys/input.prefs + 894 1993/08/08 22:11:37 009901 Prefs/Env-Archive/Sys/locale.prefs + 434 1992/09/02 12:44:31 009904 Prefs/Env-Archive/Sys/palette.prefs + 5 1992/09/02 12:41:44 009478 Prefs/Env-Archive/Workbench + 52 1992/09/02 13:40:54 009480 Prefs/Env-Archive/DOpus_format.prefs + 4 1993/05/29 10:46:34 009484 Prefs/Env-Archive/space + 352 1992/09/02 13:39:10 009486 Prefs/Env-Archive/DOpus_print.prefs + 72 1992/09/02 12:49:32 009488 Prefs/Env-Archive/ShowVIC.prefs + 25 1992/09/02 12:57:15 009490 Prefs/Env-Archive/PcRestore.prefs + 68 1995/11/27 17:47:33 009482 Prefs/Env-Archive/ZOOMOPTS + 206 1997/02/14 22:25:31 009465 Prefs/Env-Archive/ASM-One.Pref + 1996/01/17 18:32:08 009492 Prefs/Env-Archive/sc/ + 85 1996/01/17 18:32:08 003189 Prefs/Env-Archive/sc/SCOPTIONS + 1994/06/01 22:35:24 009494 Prefs/Env-Archive/SmartPlay/ + 878 1994/06/01 22:35:24 009906 Prefs/Env-Archive/SmartPlay/SmartPlay.Config + 1994/01/11 21:55:48 009496 Prefs/Env-Archive/UIK/ + 1994/01/11 21:55:48 009909 Prefs/Env-Archive/UIK/Objects/ + 1994/02/08 17:41:06 009498 Prefs/Env-Archive/GadToolsBox/ + 50 1994/05/17 3:33:41 009500 Prefs/Env-Archive/TERMWINDOW + 270 1978/01/05 4:01:15 009502 Prefs/Env-Archive/AmiTEL.prefs + 1994/06/03 9:42:47 009504 Prefs/Env-Archive/Upcat/ + 166 1994/06/03 9:42:47 009911 Prefs/Env-Archive/Upcat/Upcat.prefs + 1995/11/15 21:52:52 009506 Prefs/Env-Archive/ADOpus/ + 18 1995/11/15 21:52:52 009913 Prefs/Env-Archive/ADOpus/adopus.cfg + 35 1995/11/15 21:52:52 009915 Prefs/Env-Archive/ADOpus/ImageDex.cfg + 181 1995/02/06 9:05:31 009508 Prefs/Env-Archive/MultiPlayerPrefs + 1996/10/09 22:18:35 007976 Prefs/Env-Archive/APlayer/ + 1995/03/22 18:31:33 007982 Prefs/Env-Archive/APlayer/Players/ + 1996/10/09 22:18:35 000232 Prefs/Env-Archive/APlayer/NotePlayers/ + 1996/10/09 22:18:35 000238 Prefs/Env-Archive/APlayer/Agents/ + 1995/06/05 18:18:08 007907 Prefs/Env-Archive/MusicManII/ + 185 1995/06/05 18:18:08 007913 Prefs/Env-Archive/MusicManII/MusicManII.Prefs + 24 1995/07/06 12:20:10 010454 Prefs/Env-Archive/PlaySID.prefs + 1996/10/21 20:54:23 003860 Prefs/Env-Archive/AmigaGuide/ + 10 1998/05/27 22:54:16 003863 Prefs/Env-Archive/AmigaGuide/Path + 1996/05/15 21:00:25 002956 Prefs/Env-Archive/MusicManIII/ + 819 1996/05/15 21:00:25 002959 Prefs/Env-Archive/MusicManIII/MusicManIII.Prefs + 1996/10/21 21:33:17 008160 Prefs/Env-Archive/STORMCPP/ + 571 1996/10/21 21:33:05 008167 Prefs/Env-Archive/STORMCPP/def_project.info + 876 1996/10/21 21:33:05 008169 Prefs/Env-Archive/STORMCPP/def_text.c.info + 876 1996/10/21 21:33:05 008172 Prefs/Env-Archive/STORMCPP/def_text.cc.info + 861 1996/10/21 21:33:05 008175 Prefs/Env-Archive/STORMCPP/def_text.cpp.info + 864 1996/10/21 21:33:06 008178 Prefs/Env-Archive/STORMCPP/def_text.h.info + 861 1996/10/21 21:33:05 008181 Prefs/Env-Archive/STORMCPP/def_text.info + 504 1996/10/21 21:33:17 008184 Prefs/Env-Archive/STORMCPP/def_librarian.info + 628 1996/10/21 21:11:49 008164 Prefs/Env-Archive/STORMCPP.info + 27 1996/10/31 22:08:29 002822 Prefs/Env-Archive/ZJTools.prefs + 733 1997/07/10 22:30:40 010085 Prefs/Env-Archive/VirusZ_II.Prefs + 12 1997/07/10 22:30:40 010219 Prefs/Env-Archive/VirusZ_II.Archivers + 27 1998/04/23 19:29:13 005474 Prefs/Env-Archive/DELICONFIG + 12076 1992/09/02 11:51:33 008760 Prefs/Printer + 10852 1992/09/02 11:51:33 008761 Prefs/Serial + 14352 1992/09/02 11:51:33 008762 Prefs/PrinterGfx + 22720 1992/09/02 11:51:33 008763 Prefs/Locale + 24972 1992/09/02 11:51:33 008764 Prefs/Palette + 11440 1992/09/02 11:51:33 008765 Prefs/Font + 13028 1992/09/02 11:51:33 008766 Prefs/Time + 25268 1992/09/02 11:51:33 008767 Prefs/Pointer + 12652 1992/09/02 11:51:33 008768 Prefs/Sound + 18500 1992/09/02 11:51:33 008769 Prefs/Overscan + 13796 1992/09/02 11:51:33 008770 Prefs/Input + 1997/06/11 22:49:03 008771 Prefs/Env/ + 1978/01/06 4:02:09 009510 Prefs/Env/ADPro/ + 456 1978/02/08 1:01:04 009512 Prefs/Env/povpanel.prefs + 39 1994/04/05 21:56:05 009514 Prefs/Env/xprzmodem + 270 1978/01/05 4:01:15 009516 Prefs/Env/AmiTEL.prefs + 6 1998/10/03 13:34:54 009518 Prefs/Env/Kickstart + 1997/05/05 20:27:36 009520 Prefs/Env/Sys/ + 828 1994/08/04 16:19:26 009917 Prefs/Env/Sys/crossmac_def_disk.info, 000000000000000040000000000000000000000000000000000000000000000004 + 318 1993/08/08 22:12:29 009920 Prefs/Env/Sys/Pointer.prefs + 62 1993/08/08 22:11:53 009922 Prefs/Env/Sys/icontrol.prefs + 318 1994/01/27 19:14:38 009924 Prefs/Env/Sys/sound.prefs + 518 1995/11/27 22:48:19 009926 Prefs/Env/Sys/font.prefs + 162 1997/10/05 15:20:34 009929 Prefs/Env/Sys/printer.prefs + 62 1997/05/05 20:27:36 009931 Prefs/Env/Sys/screenmode.prefs + 72 1993/08/08 22:15:00 009933 Prefs/Env/Sys/printergfx.prefs + 70 1993/08/08 22:13:01 009935 Prefs/Env/Sys/overscan.prefs + 68 1997/09/29 16:12:18 009937 Prefs/Env/Sys/serial.prefs + 54 1992/09/02 11:51:33 009939 Prefs/Env/Sys/wbconfig.prefs + 314 1978/01/11 2:12:39 009941 Prefs/Env/Sys/WBPattern.prefs + 78 1996/02/15 19:26:35 009943 Prefs/Env/Sys/input.prefs + 894 1993/08/08 22:11:37 009945 Prefs/Env/Sys/locale.prefs + 434 1992/09/02 12:44:32 009948 Prefs/Env/Sys/palette.prefs + 5 1998/10/03 13:34:53 009523 Prefs/Env/Workbench + 52 1993/11/29 22:36:07 009525 Prefs/Env/DOpus_format.prefs + 4 1993/05/29 10:46:34 009529 Prefs/Env/space + 352 1992/09/02 13:39:10 009531 Prefs/Env/DOpus_print.prefs + 72 1992/09/02 12:49:32 009533 Prefs/Env/ShowVIC.prefs + 1997/06/07 17:31:58 009535 Prefs/Env/sc/ + 85 1996/01/17 18:32:08 009950 Prefs/Env/sc/SCOPTIONS + 11 1998/06/10 20:15:33 009952 Prefs/Env/sc/projdir + 1996/02/07 22:28:00 009537 Prefs/Env/ImageFX/ + 4 1994/02/02 19:33:57 009954 Prefs/Env/ImageFX/VMEM_Index + 3 1992/09/02 12:49:11 009956 Prefs/Env/ImageFX/JPEG_Quality + 4 1996/02/07 22:28:00 009958 Prefs/Env/ImageFX/ANIM_Frame + 2 1996/10/21 21:43:40 010458 Prefs/Env/ImageFX/JPEG_Smoothing + 68 1995/11/27 17:47:33 009527 Prefs/Env/ZOOMOPTS + 5 1994/01/06 23:25:03 009539 Prefs/Env/TERM + 6 1994/01/06 23:25:03 009541 Prefs/Env/LESSCHARSET + 1994/06/01 22:35:24 009543 Prefs/Env/SmartPlay/ + 878 1994/06/01 22:35:24 009960 Prefs/Env/SmartPlay/SmartPlay.Config + 1994/01/11 21:55:51 009545 Prefs/Env/UIK/ + 1994/01/11 21:55:47 009963 Prefs/Env/UIK/Objects/ + 158 1994/01/11 21:55:51 009965 Prefs/Env/UIK/uik.prefs + 1994/02/08 17:41:06 009547 Prefs/Env/GadToolsBox/ + 50 1994/05/17 3:33:44 009549 Prefs/Env/TERMWINDOW + 1994/02/22 17:18:29 009551 Prefs/Env/Designer/ + 276 1994/02/22 17:18:29 009967 Prefs/Env/Designer/Designer.Prefs + 88 1994/07/06 19:48:35 009553 Prefs/Env/Trackdisk.prefs + 1994/06/03 9:42:46 009555 Prefs/Env/Upcat/ + 166 1994/06/03 9:42:46 009969 Prefs/Env/Upcat/Upcat.prefs + 181 1995/02/06 9:05:31 009557 Prefs/Env/MultiPlayerPrefs + 1995/03/15 19:21:50 001826 Prefs/Env/xMore/ + 269 1994/04/11 0:12:02 001829 Prefs/Env/xMore/xMore + 824 1994/04/11 0:10:50 001834 Prefs/Env/xMore/MAC.cvt + 597 1994/01/23 20:22:10 001837 Prefs/Env/xMore/keys + 30 1994/04/10 7:00:22 001840 Prefs/Env/xMore/convert + 760 1995/03/15 19:21:50 001831 Prefs/Env/xMore/MSDOS.cvt + 1996/10/09 22:18:35 007979 Prefs/Env/APlayer/ + 1995/03/22 18:31:33 007985 Prefs/Env/APlayer/Players/ + 1464 1995/06/20 10:07:02 007988 Prefs/Env/APlayer/APlayer.prefs + 32 1995/06/20 10:07:02 007992 Prefs/Env/APlayer/APlayer.libs + 1996/10/09 22:18:35 000229 Prefs/Env/APlayer/NotePlayers/ + 1996/10/09 22:18:35 000235 Prefs/Env/APlayer/Agents/ + 0 1995/06/01 23:55:04 010067 Prefs/Env/dopus + 1995/06/05 18:18:08 007910 Prefs/Env/MusicManII/ + 185 1995/06/05 18:18:08 007915 Prefs/Env/MusicManII/MusicManII.Prefs + 1996/10/31 21:44:54 003855 Prefs/Env/AmigaGuide/ + 10 1998/05/27 22:54:16 010567 Prefs/Env/AmigaGuide/Path + 1997/06/02 21:47:02 010420 Prefs/Env/mui/ + 24 1995/11/09 16:55:09 010426 Prefs/Env/mui/«Global».prefs + 24 1995/11/09 16:55:09 010429 Prefs/Env/mui/AmigaMosaic.prefs + 80 1995/11/09 17:10:53 010431 Prefs/Env/mui/AMOSAIC.1.wini + 24 1995/11/23 22:20:47 003183 Prefs/Env/mui/X-Wins.prefs + 160 1995/11/23 22:23:30 003185 Prefs/Env/mui/X-WINS.1.wini + 120 1995/11/23 22:21:17 003187 Prefs/Env/mui/X-WINS.1.cfg + 24 1995/11/30 23:25:06 003233 Prefs/Env/mui/Xfig.prefs + 90 1997/05/05 19:47:34 014907 Prefs/Env/mui/MUI.prefs + 138 1997/05/05 20:11:37 014909 Prefs/Env/mui/PSI.1.prefs + 1118 1997/05/05 20:09:56 014911 Prefs/Env/mui/PublicScreens.iff + 530 1998/07/09 21:02:37 014915 Prefs/Env/mui/IBROWSE.prefs + 186 1997/06/02 21:47:03 010467 Prefs/Env/mui/VOYAGER.prefs + 7 1995/12/13 18:02:02 003290 Prefs/Env/wwDriver + 1 1995/12/13 18:01:58 003292 Prefs/Env/wwTop + 4 1995/12/13 18:01:58 003294 Prefs/Env/wwBottom + 4 1995/12/13 18:01:58 003296 Prefs/Env/wwLeft + 4 1995/12/13 18:01:58 003298 Prefs/Env/wwRight + 1996/05/15 21:00:25 010424 Prefs/Env/MusicManIII/ + 819 1996/05/15 21:00:25 002962 Prefs/Env/MusicManIII/MusicManIII.Prefs + 6 1996/10/09 20:30:44 001184 Prefs/Env/SCSI-Install-PROCESSOR + 2 1996/10/14 22:05:08 000707 Prefs/Env/GOLDEDINSTALL + 1996/10/21 21:33:04 008186 Prefs/Env/STORMCPP/ + 571 1996/10/21 21:33:03 008192 Prefs/Env/STORMCPP/def_project.info + 876 1996/10/21 21:33:04 008194 Prefs/Env/STORMCPP/def_text.c.info + 876 1996/10/21 21:33:04 008197 Prefs/Env/STORMCPP/def_text.cc.info + 861 1996/10/21 21:33:04 008200 Prefs/Env/STORMCPP/def_text.cpp.info + 864 1996/10/21 21:33:04 008203 Prefs/Env/STORMCPP/def_text.h.info + 861 1996/10/21 21:33:03 008206 Prefs/Env/STORMCPP/def_text.info + 483 1996/01/25 11:32:30 008209 Prefs/Env/STORMCPP/def_librarian.info + 628 1996/10/21 21:11:51 008189 Prefs/Env/STORMCPP.info + 1996/12/03 20:56:40 000878 Prefs/Env/AMIS/ + 11594 1996/12/03 20:56:40 000881 Prefs/Env/AMIS/AMIS.prefs + 6 1996/12/31 15:59:10 001205 Prefs/Env/DIS64 + 27 1996/10/31 22:08:29 002820 Prefs/Env/ZJTools.prefs + 1 1997/01/04 18:49:28 010086 Prefs/Env/PPaintLanguage + 4 1997/01/04 18:49:31 010088 Prefs/Env/PPSysInstaller + 7 1998/10/03 13:34:55 011348 Prefs/Env/Language + 27 1998/04/23 19:29:13 005472 Prefs/Env/DELICONFIG + 22936 1992/09/02 11:51:33 008774 Prefs/PrinterPS + 1994/11/15 22:06:12 008555 System/ + 454 1994/11/15 22:06:12 008775 System/DiskCopy.info + 927 1997/08/17 23:07:51 008777 System/Shell.info + 454 1992/09/02 11:53:52 008780 System/FixFonts.info + 486 1992/09/02 11:53:54 008782 System/NoFastMem.info + 533 1992/09/02 11:56:11 008784 System/Intellifont.info + 468 1992/09/02 11:53:55 008787 System/RexxMast.info + 454 1992/09/02 11:53:53 008789 System/Format.info + 12896 1992/09/02 11:51:33 008791 System/Format + 68916 1992/09/02 11:51:33 008792 System/Intellifont + 1180 1992/09/02 11:51:33 008793 System/CLI + 9816 1994/07/11 18:08:02 008794 System/DiskCopy + 840 1992/09/02 11:51:33 008795 System/FixFonts + 524 1992/09/02 11:51:33 008798 System/NoFastMem + 2364 1992/09/02 11:51:33 008801 System/RexxMast + 1994/07/25 19:38:02 008802 System/old/ + 482 1978/01/01 0:26:48 009559 System/old/FastMemFirst.info + 374 1992/09/02 14:01:05 009561 System/old/MergeMem.info + 434 1978/01/01 0:26:47 009563 System/old/SlowMemLast.info + 976 1978/01/01 0:10:40 009565 System/old/FastMemFirst + 2524 1978/01/01 0:10:44 009568 System/old/MergeMem + 1628 1978/01/01 0:07:46 009569 System/old/SlowMemLast + 1996/10/09 20:33:19 008558 L/ + 628 1994/11/15 22:05:58 008804 L/FileSystem_Trans.info + 1364 1992/09/02 11:51:33 008807 L/port-handler + 13892 1994/01/05 22:15:10 008808 L/PowerSnap-handler + 1994/11/15 21:55:20 008809 L/FileSystem_Trans/ + 512 1992/09/02 11:51:33 009570 L/FileSystem_Trans/INTL.crossdos + 512 1992/09/02 11:51:33 009572 L/FileSystem_Trans/DANSK.crossdos + 2980 1994/08/17 15:29:08 009574 L/FileSystem_Trans/ftypeDB.mac + 2392 1992/09/02 11:51:33 008811 L/aux-handler + 2664 1992/09/02 11:51:33 008812 L/queue-handler + 25184 1992/09/02 11:51:33 008813 L/CrossDOSFileSystem + 64 1993/02/01 21:59:44 008814 L/LhA.key + 3602 1993/08/12 22:02:46 008816 L/Bootblock.brainfile + 2964 1993/08/22 23:02:46 008817 L/ixpipe-handler + 5360 1992/12/25 13:46:16 008818 L/prospool-handler + 17676 1995/04/24 18:26:56 008312 L/CDFileSystem + 40552 1993/12/15 2:27:46 008819 L/KingCON-handler.020, Optimized version for MC68020 and better + 40552 1993/12/15 2:27:46 008820 L/KingCON-handler, Optimized version for MC68020 and better + 69408 1994/09/15 14:36:08 008821 L/CrossMACFileSystem + 27980 1994/04/21 0:49:02 008822 L/ProfFileSystem + 24420 1992/09/08 12:16:33 010596 L/FastFileSystem + 1997/03/19 20:03:42 008561 Devs/ + 632 1992/09/02 11:54:45 008823 Devs/Monitors.info + 632 1992/09/02 11:54:46 008826 Devs/Printers.info + 632 1992/09/02 11:54:44 008829 Devs/DOSDrivers.info + 632 1993/08/08 22:18:44 008832 Devs/DataTypes.info + 632 1992/09/02 11:54:46 008835 Devs/Keymaps.info + 16192 1994/09/12 10:23:38 008838 Devs/mfm.device + 1996/10/12 8:50:18 008839 Devs/DOSDrivers/ + 481 1996/10/11 20:46:18 009575 Devs/DOSDrivers/MAC0.info + 481 1994/11/15 22:06:06 009577 Devs/DOSDrivers/MAC1.info + 481 1994/11/15 22:06:07 009579 Devs/DOSDrivers/MAC2.info + 481 1994/11/15 22:06:07 009581 Devs/DOSDrivers/MAC3.info + 481 1992/09/02 11:54:42 009583 Devs/DOSDrivers/PIPE.info + 492 1995/04/03 21:10:08 009585 Devs/DOSDrivers/PC1.info + 466 1996/10/11 20:46:13 009587 Devs/DOSDrivers/DS1.info + 481 1996/10/11 20:46:09 009589 Devs/DOSDrivers/PF1.info + 312 1994/04/25 12:37:36 009591 Devs/DOSDrivers/MAC0 + 312 1994/04/25 12:37:46 009593 Devs/DOSDrivers/MAC1 + 312 1994/04/25 12:37:50 009595 Devs/DOSDrivers/MAC2 + 312 1994/04/25 12:37:58 009597 Devs/DOSDrivers/MAC3 + 670 1995/04/03 21:10:08 009599 Devs/DOSDrivers/PC1 + 104 1992/09/02 11:51:33 009602 Devs/DOSDrivers/PIPE + 288 1994/10/18 21:37:31 009604 Devs/DOSDrivers/DS0 + 664 1995/04/03 21:10:08 009606 Devs/DOSDrivers/PC0 + 288 1994/05/01 15:19:54 009609 Devs/DOSDrivers/DS1 + 322 1993/11/18 15:24:22 009611 Devs/DOSDrivers/PF1 + 666 1994/01/29 18:18:36 002866 Devs/DOSDrivers/SD0 + 554 1995/01/17 20:10:29 002869 Devs/DOSDrivers/SD0.info + 666 1994/01/29 18:18:36 002872 Devs/DOSDrivers/SD1 + 554 1995/01/17 20:20:56 002875 Devs/DOSDrivers/SD1.info + 492 1995/04/03 21:10:08 009865 Devs/DOSDrivers/PC0.info + 373 1996/10/11 22:15:07 000277 Devs/DOSDrivers/ZIPC + 1597 1996/10/11 20:45:58 000279 Devs/DOSDrivers/ZIPC.info + 453 1996/10/11 22:27:39 000692 Devs/DOSDrivers/ZIPPC + 1597 1996/10/11 20:45:58 000693 Devs/DOSDrivers/ZIPPC.info + 5412 1992/09/02 11:51:33 008842 Devs/serial.device + 1992/09/02 12:40:19 008843 Devs/Keymaps/ + 1336 1992/09/02 11:51:33 009613 Devs/Keymaps/f, Français + 1328 1992/09/02 11:51:33 009614 Devs/Keymaps/gb, British + 5014 1992/09/02 11:51:33 008845 Devs/postscript_init.ps + 4272 1992/09/02 11:51:33 008846 Devs/parallel.device + 1997/02/10 19:20:02 008847 Devs/DataTypes/ + 467 1993/02/06 0:57:34 009615 Devs/DataTypes/PCX.info + 473 1992/09/02 11:54:53 009617 Devs/DataTypes/AmigaGuide.info + 473 1992/09/02 11:54:55 009619 Devs/DataTypes/ILBM.info + 467 1993/07/29 20:33:06 009621 Devs/DataTypes/JPEG.info + 473 1992/09/02 11:54:52 009623 Devs/DataTypes/8SVX.info + 473 1992/09/02 11:54:54 009625 Devs/DataTypes/FTXT.info + 467 1993/07/28 4:38:02 009627 Devs/DataTypes/GIF.info + 98 1993/09/28 15:42:08 009629 Devs/DataTypes/PCX + 114 1992/09/02 11:51:33 009631 Devs/DataTypes/AmigaGuide + 88 1993/07/28 4:38:02 009633 Devs/DataTypes/gif + 102 1992/09/02 11:51:33 009635 Devs/DataTypes/ILBM + 102 1992/09/02 11:51:33 009637 Devs/DataTypes/8SVX + 102 1992/09/02 11:51:33 009639 Devs/DataTypes/FTXT + 98 1993/07/29 20:33:06 009641 Devs/DataTypes/JPEG + 110 1995/09/30 16:17:02 004684 Devs/DataTypes/SVG + 336 1993/09/28 15:42:08 009643 Devs/DataTypes/MacPaint + 104 1993/09/28 15:42:08 009645 Devs/DataTypes/Windows Bitmap + 108 1993/09/28 15:42:08 009647 Devs/DataTypes/Windows Icon + 106 1994/06/14 15:06:12 003554 Devs/DataTypes/REKO Cardset + 1533 1995/01/22 13:52:22 003556 Devs/DataTypes/REKO Cardset.info + 96 1994/06/13 20:31:38 003578 Devs/DataTypes/Sun Raster + 1533 1995/01/21 16:16:22 003580 Devs/DataTypes/Sun Raster.info + 100 1995/03/12 9:42:24 010740 Devs/DataTypes/C++-Source + 467 1995/03/12 9:42:24 010742 Devs/DataTypes/C++-Source.info + 88 1995/03/12 9:39:00 010744 Devs/DataTypes/C-Source + 467 1995/03/12 9:39:00 010746 Devs/DataTypes/C-Source.info + 467 1995/09/30 16:17:02 004686 Devs/DataTypes/SVG.info + 86 1994/10/30 15:58:24 002350 Devs/DataTypes/Targa + 1527 1995/01/22 13:38:20 002352 Devs/DataTypes/Targa.info + 86 1996/11/01 13:48:02 015168 Devs/DataTypes/PNG + 467 1996/11/01 13:48:02 015170 Devs/DataTypes/PNG.info + 108 1996/05/21 12:08:06 002978 Devs/DataTypes/ZX + 473 1996/05/17 21:47:20 002980 Devs/DataTypes/ZX.info + 102 1995/04/22 11:44:16 015323 Devs/DataTypes/Bitmap Font + 467 1995/04/22 14:28:46 015325 Devs/DataTypes/Bitmap Font.info + 102 1995/04/22 11:44:18 015327 Devs/DataTypes/Outline Font + 467 1995/04/22 14:28:46 015329 Devs/DataTypes/Outline Font.info + 238 1995/03/15 19:19:18 001169 Devs/DataTypes/DeBox + 1574 1994/10/04 12:19:52 001171 Devs/DataTypes/DeBox.info + 1997/03/19 20:03:42 011350 Devs/AHI/ + 3424 1991/05/02 17:04:06 011353 Devs/AHI/wavetools.audio + 3900 1991/05/02 17:04:06 011361 Devs/AHI/toccata.audio + 5948 1991/05/02 17:04:08 011391 Devs/AHI/paula.audio + 6412 1991/05/02 17:04:06 011404 Devs/AHI/filesave.audio + 5056 1991/05/02 17:04:06 011518 Devs/AHI/delfina.audio + 6944 1992/09/02 11:51:33 008850 Devs/clipboard.device + 1992/09/02 12:40:47 008851 Devs/Monitors/ + 356 1992/09/02 11:58:15 009649 Devs/Monitors/PAL.info + 6156 1992/09/02 11:51:33 009651 Devs/Monitors/PAL + 27420 1992/09/02 11:51:33 008853 Devs/printer.device + 1996/10/21 20:48:53 008854 Devs/Printers/ + 459 1992/09/02 11:58:40 009652 Devs/Printers/EpsonQ.info + 459 1992/09/02 11:54:44 009654 Devs/Printers/Generic.info + 459 1992/09/02 11:58:41 009656 Devs/Printers/EpsonXOld.info + 459 1992/09/02 11:58:40 009658 Devs/Printers/EpsonX.info + 6480 1992/09/02 13:52:56 009660 Devs/Printers/EpsonQ + 7160 1992/09/02 11:51:33 009661 Devs/Printers/EpsonX + 1084 1992/09/02 11:51:33 009662 Devs/Printers/Generic + 4712 1992/09/02 11:51:33 009663 Devs/Printers/EpsonXOld + 6684 1992/09/02 11:51:33 008856 Devs/mfm38_5.device + 1997/06/11 20:02:29 008857 Devs/clipboards/ + 454 1995/09/18 13:15:40 009666 Devs/clipboards/1 + 92 1998/10/03 14:01:30 009664 Devs/clipboards/0 + 9 1996/12/03 21:00:11 001158 Devs/clipboards/awebed.clip + 3972 1992/11/22 18:48:54 008859 Devs/BaudBandit.device + 232 1992/09/02 11:51:33 008860 Devs/system-configuration + 617 1993/12/15 2:37:40 008862 Devs/KingCON-mountlist, Mountlist-entries for KCON and KRAW. + 5124 1993/04/18 19:11:08 008865 Devs/artser.device + 5548 1994/05/01 15:19:48 008866 Devs/diskspare.device + 2480 1994/08/31 16:37:28 002859 Devs/statram.device + 16192 1994/09/12 10:23:38 010064 Devs/mfm.device4140 + 8256 1995/08/24 12:28:20 010667 Devs/squirrelscsi.device + 6460 1990/07/28 14:24:44 010100 Devs/CloantoAudio + 1997/03/19 20:03:42 014725 Devs/AudioModes/ + 624 1991/05/02 17:04:08 014728 Devs/AudioModes/WAVETOOLS + 612 1991/05/02 17:04:08 014807 Devs/AudioModes/TOCCATA + 1484 1991/05/02 17:04:08 014810 Devs/AudioModes/PAULA + 556 1991/05/02 17:04:08 014814 Devs/AudioModes/FILESAVE + 612 1991/05/02 17:04:08 014817 Devs/AudioModes/DELFINA + 26484 1991/05/02 17:04:06 014820 Devs/ahi.device + 1996/10/31 22:07:13 008564 Tools/ + 1309 1992/09/02 12:40:50 008867 Tools/IconEdit.info + 826 1992/09/02 11:55:32 008871 Tools/InitPrinter.info + 632 1992/09/02 11:55:24 008874 Tools/Commodities.info + 450 1992/09/02 11:55:34 008877 Tools/Lacer.info + 470 1992/09/02 11:55:36 008879 Tools/MEmacs.info + 515 1992/09/02 11:55:29 008881 Tools/GraphicDump.info + 470 1992/09/02 11:55:33 008884 Tools/KeyShow.info + 1224 1992/09/02 11:57:04 008886 Tools/HDBackup.info + 579 1992/09/02 11:55:25 008890 Tools/Calculator.info + 450 1992/09/02 11:55:41 008893 Tools/ShowConfig.info + 485 1992/09/02 11:55:39 008895 Tools/PrintFiles.info + 563 1992/09/02 11:55:26 008897 Tools/CMD.info + 826 1992/09/02 11:56:57 008900 Tools/HDToolBox.info + 454 1992/09/02 11:55:38 008903 Tools/PrepCard.info + 1992/09/02 13:08:38 008905 Tools/Commodities/ + 578 1992/09/02 12:40:50 009668 Tools/Commodities/ClickToFront.info + 557 1992/09/02 13:08:38 009671 Tools/Commodities/CrossDOS.info + 502 1992/09/02 11:55:14 009674 Tools/Commodities/AutoPoint.info + 531 1992/09/02 12:40:51 009676 Tools/Commodities/Exchange.info + 597 1992/09/02 12:40:50 009679 Tools/Commodities/Blanker.info + 502 1992/09/02 11:55:22 009682 Tools/Commodities/NoCapsLock.info + 502 1992/09/02 11:55:22 009684 Tools/Commodities/MouseBlanker.info + 544 1992/09/02 12:40:51 009686 Tools/Commodities/FKey.info + 2788 1992/09/02 11:51:33 009689 Tools/Commodities/NoCapsLock + 6780 1992/09/02 11:51:33 009690 Tools/Commodities/Exchange + 3112 1992/09/02 11:51:33 009691 Tools/Commodities/AutoPoint + 3028 1992/09/02 11:51:33 009692 Tools/Commodities/MouseBlanker + 8952 1992/09/02 11:51:33 009693 Tools/Commodities/CrossDOS + 10208 1992/09/02 11:51:33 009694 Tools/Commodities/FKey + 10232 1992/09/02 11:51:33 009695 Tools/Commodities/Blanker + 3792 1992/09/02 11:51:33 009696 Tools/Commodities/ClickToFront + 2988 1992/09/02 11:51:33 008908 Tools/GraphicDump + 46144 1992/09/02 11:51:33 008909 Tools/IconEdit + 21156 1992/09/02 11:51:33 008910 Tools/PrepCard + 101832 1992/09/02 11:51:33 008911 Tools/BRU + 10684 1992/09/02 11:51:33 008912 Tools/KeyShow + 11928 1992/09/02 11:51:33 008913 Tools/ShowConfig + 83248 1992/09/02 11:51:33 008914 Tools/HDBackup + 296 1992/09/02 11:51:33 008915 Tools/InitPrinter + 10580 1992/09/02 11:51:33 008917 Tools/Calculator + 7688 1992/09/02 11:51:33 008918 Tools/CMD + 296 1992/09/02 11:51:33 008919 Tools/Lacer + 52484 1992/09/02 11:51:33 008921 Tools/MEmacs + 2196 1992/09/02 11:51:33 008922 Tools/PrintFiles + 97144 1992/09/02 11:51:33 008923 Tools/HDToolBox + 11573 1992/09/02 11:51:33 008924 Tools/HDBackup.help + 1592 1995/03/27 10:16:40 010659 Tools/SquirrelHDToolBox + 928 1996/10/12 8:26:25 010664 Tools/SquirrelHDToolBox.info + 2254 1996/10/19 17:49:14 000266 Tools/drive definitions + 1996/10/31 22:07:30 002684 Tools/ZJTools/ + 6852 1996/09/18 10:33:26 002694 Tools/ZJTools/ZJTool + 1761 1996/09/17 15:37:40 002709 Tools/ZJTools/ZJTool.info + 1996/10/31 22:07:25 002744 Tools/ZJTools/Icons/ + 876 1996/10/31 22:07:25 002747 Tools/ZJTools/Icons/Eject.info + 32656 1996/10/27 19:50:26 002750 Tools/ZJTools/ZJTools.guide + 1857 1996/09/12 20:22:16 002815 Tools/ZJTools/ZJTools.guide.info + 2785 1996/10/31 22:07:13 002687 Tools/ZJTools.info + 1997/06/08 19:35:23 008568 S/ + 460 1978/01/06 22:27:11 008925 S/BB.Config.info + 300 1997/08/24 19:17:54 008930 S/Pro-Wizard.prefs + 1559 1992/09/02 11:51:33 008932 S/HDBackup.config + 268 1993/03/31 19:52:49 008933 S/jed.config + 615 1992/09/02 11:51:33 008940 S/Ed-startup + 709 1992/09/02 11:51:33 008943 S/DPat + 2980 1978/01/06 22:27:10 008946 S/BB.Config + 10 1993/10/11 19:34:45 008947 S/fontlist.pp + 1764 1991/07/21 18:15:07 008949 S/classx.sh + 822 1995/07/04 9:29:01 008937 S/genielist.pp + 107 1997/06/08 19:33:37 008935 S/PPage.DFLT + 830 1997/06/08 19:33:40 008950 S/prevfiles.pp + 1281 1997/07/03 20:39:54 010138 S/Startup-Sequence + 1843 1992/09/02 11:51:33 008953 S/BRUtab + 156 1995/09/14 13:23:41 008956 S/Moor.cfg + 1051 1994/02/24 14:27:39 008959 S/classes + 248 1992/09/02 11:51:33 008960 S/PCD + 487 1994/07/25 20:04:48 008962 S/PPage.ini + 283 1992/09/02 11:51:33 008964 S/SPat + 48 1994/01/13 13:53:07 008966 S/MineSweeper.highscores + 2652 1992/02/29 15:45:34 008968 S/Default.iimcr.old + 2652 1992/02/29 15:45:34 008969 S/Default.immcr.old + 2652 1992/02/29 15:45:34 008970 S/Default.ipmcr.old + 4 1997/06/08 19:31:00 008954 S/fontsize.pp + 2261 1997/06/08 19:35:22 010062 S/.cshrc + 1388 1998/06/11 20:50:41 003401 S/user-startup + 6 1992/02/29 15:45:32 008972 S/picmdpath + 2652 1992/02/29 15:45:34 008974 S/Default.iimcr + 2652 1992/02/29 15:45:34 008979 S/Default.immcr + 2652 1992/02/29 15:45:34 008980 S/Default.ipmcr + 1995/06/12 23:53:55 009032 S/scan/ + 0 1995/06/12 23:51:56 010091 S/scan/scan810000.log + 2009 1995/06/12 23:53:55 010092 S/scan/scan810000.bmap + 43916 1995/09/26 22:18:24 004595 S/HippoPlayer.group + 1163 1995/11/09 17:10:53 001089 S/mosaic-global-history + 20 1995/12/13 17:52:55 015388 S/TurboCalc.LRU + 2709 1995/12/30 16:55:40 003316 S/ncomm.key + 721 1996/10/12 22:01:23 000241 S/aliases + 1592 1996/08/15 13:16:06 002576 S/PT.config-00 + 628 1996/10/21 21:53:10 002582 S/.info + 6489 1998/06/02 22:04:01 008609 S/Startup.DM + 17872 1992/03/14 19:12:42 008992 S/PageGenie.pgen + 1238 1993/01/28 18:30:32 008994 S/PPageGenie.hlp + 2337 1993/10/21 15:39:44 009002 S/PPageFilters.dflt + 473 1993/11/17 22:33:32 009003 S/Startup.supdup + 62 1994/02/28 23:45:41 009005 S/DT.config + 1000 1994/01/11 21:57:08 009007 S/poing.scores + 142 1978/01/01 10:49:19 009011 S/.login + 1592 1996/07/11 14:39:30 002594 S/PT.config-01 + 36 1996/12/02 22:30:08 000876 S/DCTV-Viewer.prefs + 460 1997/03/23 22:10:02 011346 S/Startup.DM.info + 366 1978/01/01 23:52:41 009013 S/BB.Phone + 112 1992/08/27 15:33:39 009015 S/serial-number + 116 1978/01/20 2:57:22 009017 S/SigMaker.config + 3374 1994/01/01 14:15:58 009019 S/mplot.prefs + 5 1994/02/23 19:25:18 009020 S/PrtSc.cfg + 804 1994/06/13 17:57:41 009022 S/RexxCommands + 0 1978/02/07 23:57:47 009025 S/DIAne.Defaults + 412 1994/09/09 17:28:27 009033 S/P60A.prefs + 108 1994/03/30 18:55:58 009035 S/Compile.ced + 94 1994/03/30 18:56:14 009037 S/Make.ced + 724 1994/03/30 18:56:18 009039 S/NextError.ced + 82812 1994/12/25 3:25:08 009115 S/Pro-Wizard.reco + 2574 1996/10/09 22:16:04 007799 S/HippoPlayer.prefs + 31 1995/06/12 23:53:55 010097 S/scan.defs + 1997/06/11 22:53:53 008580 T/ + 1271 1990/08/31 10:36:59 009116 T/TxEd.Backup + 156 1994/05/31 20:35:47 009120 T/JBPQ.0001 + 1 1994/03/09 18:24:58 009122 T/CshCounter + 264 1994/06/23 22:11:40 009124 T/5ZVW.0000 + 156 1994/05/31 20:00:14 009128 T/JBPQ.0000 + 264 1994/06/26 12:27:06 009130 T/5IC0.0000 + 156 1994/07/30 21:48:35 009132 T/RVSY.0000 + 264 1995/04/04 22:29:17 009010 T/JVYW.0001 + 0 1995/11/07 1:16:50 007858 T/RHOX.0000 + 0 1995/11/08 23:03:48 002360 T/DQBW.0000 + 264 1995/11/30 22:56:34 010422 T/FN5W.0001 + 0 1996/10/21 21:48:52 002575 T/_RxOut + 5063 1997/03/09 12:13:07 003130 T/cc158528.i + 1 1996/10/13 14:03:55 009028 T/CshLoggedIn + 412 1995/12/11 22:33:34 015175 T/3JOZ.0001 + 264 1996/01/17 18:27:03 003315 T/RIEZ.0001 + 264 1996/01/24 1:26:54 007815 T/HOOX.0001 + 264 1996/01/24 6:53:18 007817 T/X5DY.0001 + 264 1996/01/24 7:29:44 007823 T/RBFY.0001 + 2 1996/02/07 20:28:14 003222 T/CODE.return_status.338 + 2 1996/02/07 20:28:27 003224 T/CODE.return_status.374 + 264 1996/10/30 21:32:14 002574 T/RVT1.0001 + 264 1997/03/01 17:10:48 011344 T/ZHWKB.0001 + 5918 1997/03/04 20:03:40 010061 T/Command-00-T05 + 15217 1997/05/05 19:44:16 014873 T/install.log + 528 1997/05/05 19:44:16 014904 T/install.log.info + 8161 1997/03/04 19:51:30 010182 T/Command-01-T05 + 4465 1997/08/12 22:16:18 008603 T/Command-00-T06 + 1 1997/06/11 22:49:01 003374 T/CshCounter + 1425 1998/10/03 13:34:56 009026 T/Command-01-T01 + 2793 1997/08/12 22:16:19 003413 T/Registerform + 1992/09/02 12:33:55 008582 Locale/ + 1992/09/02 12:49:47 009136 Locale/Catalogs/ + 22276 1992/12/29 21:31:46 009697 Locale/Catalogs/BootX.cd + 1992/09/02 12:49:47 009698 Locale/Catalogs/français/ + 1992/09/02 12:46:33 009971 Locale/Catalogs/français/Sys/ + 1540 1992/09/02 11:51:33 009976 Locale/Catalogs/français/Sys/commodities.catalog + 17694 1992/12/29 21:31:52 009977 Locale/Catalogs/français/Sys/BootX.catalog + 2140 1992/09/02 11:51:33 009978 Locale/Catalogs/français/Sys/libs.catalog + 1780 1992/09/02 11:51:33 009979 Locale/Catalogs/français/Sys/monitors.catalog + 9682 1992/09/02 11:51:33 009980 Locale/Catalogs/français/Sys/utilities.catalog + 348 1992/09/02 11:51:33 009981 Locale/Catalogs/français/Sys/devs.catalog + 17392 1992/09/02 11:51:33 009983 Locale/Catalogs/français/Sys/installer.catalog + 3434 1992/09/02 11:51:33 009984 Locale/Catalogs/français/Sys/system.catalog + 3880 1992/09/02 11:51:33 009985 Locale/Catalogs/français/Sys/dos.catalog + 1778 1992/09/02 11:51:33 009986 Locale/Catalogs/français/Sys/c.catalog + 4128 1992/09/02 11:51:33 009987 Locale/Catalogs/français/Sys/workbench.catalog + 3132 1992/09/02 11:51:33 009988 Locale/Catalogs/français/Sys/prepcard.catalog + 2314 1992/09/02 11:51:33 009989 Locale/Catalogs/français/Sys/amigaguide.catalog + 11012 1992/09/02 11:51:33 009990 Locale/Catalogs/français/Sys/prefs.catalog + 1046 1992/12/29 21:31:50 009991 Locale/Catalogs/français/Sys/reqtools.catalog + 1992/09/02 12:37:40 009138 Locale/Countries/ + 538 1992/09/02 11:51:33 009700 Locale/Countries/canada_français.country + 538 1992/09/02 11:51:33 009703 Locale/Countries/portugal.country + 538 1992/09/02 11:51:33 009706 Locale/Countries/australia.country + 538 1992/09/02 11:51:33 009709 Locale/Countries/schweiz.country + 538 1992/09/02 11:51:33 009712 Locale/Countries/sverige.country + 538 1992/09/02 11:51:33 009715 Locale/Countries/italia.country + 538 1992/09/02 11:51:33 009718 Locale/Countries/danmark.country + 538 1992/09/02 11:51:33 009721 Locale/Countries/united_states.country + 538 1992/09/02 11:51:33 009724 Locale/Countries/norge.country + 538 1992/09/02 11:51:33 009727 Locale/Countries/france.country + 538 1992/09/02 11:51:33 009730 Locale/Countries/españa.country + 538 1992/09/02 11:51:33 009733 Locale/Countries/belgie.country + 538 1992/09/02 11:51:33 009736 Locale/Countries/united_kingdom.country + 538 1992/09/02 11:51:33 009739 Locale/Countries/belgique.country + 538 1992/09/02 11:51:33 009742 Locale/Countries/deutschland.country + 538 1992/09/02 11:51:33 009745 Locale/Countries/österreich.country + 538 1992/09/02 11:51:33 009748 Locale/Countries/canada.country + 538 1992/09/02 11:51:33 009751 Locale/Countries/nederland.country + 538 1992/09/02 11:51:33 009754 Locale/Countries/suisse.country + 538 1992/09/02 11:51:33 009757 Locale/Countries/great_britain.country + 538 1992/09/02 11:51:33 009760 Locale/Countries/svizzera.country + 1992/09/02 12:37:51 009141 Locale/Help/ + 1992/09/02 12:37:52 009763 Locale/Help/français/ + 1992/09/02 12:37:52 009974 Locale/Help/français/Sys/ + 2941 1992/09/02 11:51:33 009992 Locale/Help/français/Sys/amigaguide.guide + 1992/09/02 12:37:43 009143 Locale/Languages/ + 1072 1992/09/02 11:51:33 009765 Locale/Languages/français.language + 1997/03/03 23:17:37 008590 Libs/ + 10416 1994/01/05 15:17:56 009285 Libs/rexxreqtools.library + 27856 1994/02/22 19:19:54 009286 Libs/rexxplslib.library + 2876 1992/09/02 13:07:04 009289 Libs/backstab.library + 4476 1993/10/07 1:40:18 009290 Libs/OwnDevUnit.library + 13288 1994/01/01 14:24:44 009291 Libs/mtool.library + 21712 1993/10/07 1:40:26 009292 Libs/xprkermit.library + 66336 1993/08/22 23:03:06 009293 Libs/bsh.library + 16196 1992/10/04 13:25:06 009294 Libs/dctv.library + 28960 1992/09/02 11:51:33 009295 Libs/bullet.library + 18072 1993/09/22 12:19:26 009296 Libs/locale.library + 4557 1989/05/24 18:37:00 011541 Libs/rexxmathlib.doc + 176468 1994/11/11 22:30:00 007166 Libs/post.library + 6828 1992/09/02 11:51:33 009297 Libs/iffparse.library + 12436 1993/02/07 19:08:56 009298 Libs/arp.library + 4280 1992/09/02 11:51:33 009299 Libs/mathtrans.library + 40452 1992/09/02 11:51:33 009300 Libs/asl.library + 2524 1992/09/02 11:51:33 009301 Libs/rexxsupport.library + 24800 1992/09/02 11:51:33 009302 Libs/amigaguide.library + 50992 1996/04/08 17:10:36 009303 Libs/reqtools.library + 10428 1992/09/02 11:51:33 009304 Libs/mathieeesingtrans.library + 15216 1993/02/03 13:45:52 009305 Libs/GDArexxSupport.library + 33392 1992/09/02 11:51:33 009306 Libs/rexxsyslib.library + 8560 1992/09/02 11:51:33 009307 Libs/commodities.library + 5240 1992/09/02 11:51:33 009308 Libs/mathieeedoubbas.library + 272 1992/09/02 11:51:33 009309 Libs/version.library + 15340 1992/09/02 11:51:33 009311 Libs/diskfont.library + 16584 1992/09/02 11:51:33 009312 Libs/mathieeedoubtrans.library + 43428 1992/09/02 11:51:33 009313 Libs/68040.library + 18436 1994/01/31 23:26:22 009314 Libs/req.library, CED + 18388 1992/09/02 11:51:33 009315 Libs/datatypes.library + 65840 1992/11/28 14:19:08 009316 Libs/FontEngine.library + 10448 1993/11/01 21:38:18 009317 Libs/garbagecollector.library + 19004 1993/10/07 1:40:22 009318 Libs/xprbplus.library + 1640 1993/04/01 18:23:16 009319 Libs/nofrag.library + 61216 1992/12/05 17:16:24 009320 Libs/apig.library + 7100 1991/11/12 12:20:06 009321 Libs/conhandler.library + 2932 1978/01/13 14:59:52 009322 Libs/diskcode.library + 6012 1991/07/09 15:22:31 009323 Libs/libfile.monam + 6372 1992/10/12 21:59:52 009324 Libs/midi.library + 3580 1978/01/01 0:14:02 009325 Libs/reqtoolsnb.lib + 2512 1991/11/12 12:20:22 009326 Libs/tdisk.library + 10592 1993/09/14 12:54:59 009327 Libs/translator.library + 12608 1980/01/27 8:57:22 009328 Libs/medplayer.library + 3160 1993/05/24 15:51:10 009329 Libs/iff.library + 10284 1980/01/03 11:22:50 009330 Libs/removelink.library + 29556 1994/12/28 17:01:44 001369 Libs/provision.library + 7900 1995/03/04 18:02:52 010401 Libs/tower.library + 44348 1995/11/07 1:17:01 007958 Libs/thumbnail.library + 7076 1989/05/24 18:41:18 011526 Libs/rexxmathlib.library + 140696 1996/07/02 16:38:34 008211 Libs/wizard.library + 1748 1996/08/10 12:59:56 000243 Libs/hhscybershowkey.library + 1196 1996/01/14 14:05:00 000275 Libs/hhsgiokey.library + 1036 1996/08/10 13:00:02 000801 Libs/hhsloaderkey.library + 2140 1996/08/10 12:59:52 000805 Libs/hhsphotoalbumkey.library + 6128 1993/09/28 21:53:48 003117 Libs/powerpacker.library + 1997/01/26 21:15:08 011016 Libs/xfd/ + 708 1996/06/03 19:04:52 011019 Libs/xfd/FIRE + 636 1994/11/05 5:55:34 011022 Libs/xfd/Graftgold_Cruncher + 535 1996/06/03 19:04:52 011025 Libs/xfd/.README.FIRST + 908 1996/06/03 19:04:54 011028 Libs/xfd/1AM + 580 1996/06/03 19:04:52 011031 Libs/xfd/4Vx + 492 1996/06/03 19:04:52 011034 Libs/xfd/89A8 + 2860 1996/06/03 19:04:54 011036 Libs/xfd/=SB= + 840 1996/06/03 19:04:54 011043 Libs/xfd/Ace? + 552 1996/06/03 19:04:54 011046 Libs/xfd/ALC0 + 908 1996/06/03 19:04:54 011049 Libs/xfd/AMOS + 1196 1996/06/03 19:04:54 011052 Libs/xfd/ArcD + 708 1996/06/03 19:04:54 011056 Libs/xfd/ArcR + 788 1996/06/03 19:04:54 011059 Libs/xfd/ATOM + 888 1996/06/03 19:04:54 011062 Libs/xfd/AXIS + 508 1996/06/03 19:04:54 011065 Libs/xfd/BOND + 388 1996/06/03 19:04:54 011067 Libs/xfd/CMP1 + 456 1996/06/03 19:04:54 011069 Libs/xfd/CP + 536 1996/06/03 19:04:54 011071 Libs/xfd/CRND + 588 1996/06/03 19:04:54 011074 Libs/xfd/CRUN + 952 1996/06/03 19:04:54 011077 Libs/xfd/DHp2 + 936 1996/06/03 19:04:54 011080 Libs/xfd/DPRa + 644 1996/06/03 19:04:54 011083 Libs/xfd/Dtpk + 544 1996/06/03 19:04:54 011086 Libs/xfd/FUCK + 1720 1996/06/03 19:04:54 011089 Libs/xfd/GP + 1260 1996/06/03 19:04:52 011094 Libs/xfd/Graftgold + 652 1996/06/03 19:04:54 011098 Libs/xfd/HUF + 548 1996/06/03 19:04:54 011101 Libs/xfd/HUFF + 716 1996/06/03 19:04:52 011104 Libs/xfd/Ice_TSM + 772 1996/06/03 19:04:54 011107 Libs/xfd/IFT? + 800 1996/06/03 19:04:54 011110 Libs/xfd/JR + 640 1996/06/03 19:04:54 011113 Libs/xfd/KDUB + 456 1996/06/03 19:04:52 011116 Libs/xfd/LOB + 688 1996/06/03 19:04:52 011119 Libs/xfd/LZWH + 816 1996/06/03 19:04:54 011122 Libs/xfd/MASM + 1256 1996/06/03 19:04:54 011125 Libs/xfd/MASS + 892 1996/06/03 19:04:54 011129 Libs/xfd/pack + 556 1996/06/03 19:04:54 011132 Libs/xfd/PaK0 + 484 1996/06/03 19:04:54 011135 Libs/xfd/RLE + 988 1996/06/03 19:04:54 011137 Libs/xfd/SPv3 + 504 1996/06/03 19:04:52 011140 Libs/xfd/SSUR + 440 1996/06/03 19:04:52 011142 Libs/xfd/TPWM + 608 1996/06/03 19:04:54 011144 Libs/xfd/VDCO + 992 1996/06/03 19:04:54 011147 Libs/xfd/Vic2 + 760 1996/06/03 19:04:54 011150 Libs/xfd/VOL1 + 1228 1996/06/03 19:04:54 011153 Libs/xfd/XP10 + 632 1996/06/03 19:04:54 011161 Libs/xfd/XPAC + 560 1996/06/03 19:04:52 011164 Libs/xfd/xVdg + 27992 1994/08/12 10:31:22 005583 Libs/playsid.library + 67444 1996/06/03 19:04:52 011167 Libs/xfdmaster.library + 13456 1994/02/20 20:41:30 005642 Libs/xpkmaster.library + 1992/09/02 11:54:00 008595 Rexxc/ + 300 1992/09/02 11:51:33 009331 Rexxc/TS + 364 1992/09/02 11:51:33 009333 Rexxc/TCC + 440 1992/09/02 11:51:33 009335 Rexxc/RXC + 364 1992/09/02 11:51:33 009337 Rexxc/TCO + 208 1992/09/02 11:51:33 009339 Rexxc/WaitForPort + 304 1992/09/02 11:51:33 009341 Rexxc/HI + 640 1992/09/02 11:51:33 009343 Rexxc/RXSET + 968 1992/09/02 11:51:33 009346 Rexxc/RX + 740 1992/09/02 11:51:33 009349 Rexxc/RXLIB + 300 1992/09/02 11:51:33 009352 Rexxc/TE + 1996/12/02 22:33:31 008597 Classes/ + 1997/02/10 19:20:23 009354 Classes/DataTypes/ + 46036 1992/09/02 11:51:33 009840 Classes/DataTypes/amigaguide.datatype + 5888 1992/09/02 11:51:33 009841 Classes/DataTypes/ascii.datatype + 3644 1996/03/30 15:18:54 009842 Classes/DataTypes/gif.datatype + 3412 1992/09/02 11:51:33 009843 Classes/DataTypes/ilbm.datatype + 14512 1992/09/02 11:51:33 009844 Classes/DataTypes/text.datatype + 4160 1993/09/28 15:42:10 009845 Classes/DataTypes/pcx.datatype + 5936 1992/09/02 11:51:33 009846 Classes/DataTypes/sound.datatype + 36724 1993/07/29 20:33:06 009847 Classes/DataTypes/JPEG.datatype + 2592 1992/09/02 11:51:33 009848 Classes/DataTypes/8svx.datatype + 12488 1992/09/02 11:51:33 009849 Classes/DataTypes/picture.datatype + 2716 1993/09/28 15:42:10 009850 Classes/DataTypes/bmp.datatype + 2024 1993/09/28 15:42:08 009851 Classes/DataTypes/ico.datatype + 2532 1993/09/28 15:42:10 009852 Classes/DataTypes/macpaint.datatype + 2832 1995/01/22 13:26:56 003560 Classes/DataTypes/reko.datatype, 68020-version + 4672 1995/01/22 19:13:48 003567 Classes/DataTypes/sun.datatype, 68020-version + 11192 1995/04/01 16:20:34 009863 Classes/DataTypes/c.datatype + 4640 1995/09/30 9:30:32 004688 Classes/DataTypes/SVG.datatype + 6512 1995/03/16 21:55:52 002336 Classes/DataTypes/targa.datatype, 68020-version + 28424 1995/10/31 18:19:04 015111 Classes/DataTypes/png.datatype + 2648 1996/05/20 20:52:52 010057 Classes/DataTypes/zx.datatype + 5984 1996/05/27 19:37:12 015331 Classes/DataTypes/font.datatype, V 39.4 + 4076 1995/03/21 17:21:08 001160 Classes/DataTypes/debox.datatype + 79056 1997/02/05 18:35:16 016992 Classes/DataTypes/akPNG.datatype + 1992/09/02 11:55:08 009357 Classes/Gadgets/ + 5224 1992/09/02 11:51:33 009853 Classes/Gadgets/gradientslider.gadget + 12796 1992/09/02 11:51:33 009854 Classes/Gadgets/colorwheel.gadget + 1996/12/02 22:33:30 009994 Classes/Codecs/ + 1908 1995/03/04 18:02:52 009997 Classes/Codecs/picture.codec + 69420 1995/03/04 18:02:52 010002 Classes/Codecs/jpeg.codec + 1224 1995/03/04 18:02:50 010397 Classes/codec.class + 1996/10/09 20:32:26 008599 Utilities/ + 553 1992/09/02 13:32:25 009359 Utilities/Clock.info + 1478 1993/05/02 13:27:04 009362 Utilities/Amigaguide.info + 837 1992/09/02 13:32:19 009366 Utilities/MultiView.info + 11936 1992/09/02 11:51:33 009369 Utilities/More + 21180 1992/09/02 11:51:33 009370 Utilities/MultiView + 13876 1992/09/02 11:51:33 009371 Utilities/Clock + 6656 1993/05/02 13:27:02 009372 Utilities/Amigaguide + 113532 1995/04/25 11:47:10 001198 Utilities/Installer + 1994/02/21 19:56:22 008601 PSFonts/ + 1672 1992/03/14 16:13:54 009373 PSFonts/FunkyFont + 1994/02/21 19:56:25 009374 PSFonts/afms/ + 4590 1992/03/14 16:13:54 009855 PSFonts/afms/FunkyFont.afm + 1997/06/09 21:29:49 008518 _exotic/ + 1997/06/09 21:29:42 010221 _exotic/brian/ + 2151 1995/06/28 22:14:43 010224 _exotic/brian/bp_str.txt + 4108 1995/09/13 20:30:25 010292 _exotic/brian/bp.table + 1997/06/09 21:29:43 010302 _exotic/delta/ + 14374 1995/06/27 17:39:38 010305 _exotic/delta/dm2.wave + 18020 1995/06/27 17:38:34 010477 _exotic/delta/dm2.track + 14250 1995/06/27 17:36:36 010514 _exotic/delta/dm2.sound + 3552 1995/06/27 17:34:50 010754 _exotic/delta/dm2.keys + 4424 1995/06/27 17:32:10 010762 _exotic/delta/dm2.help + 11332 1995/06/27 17:31:58 010772 _exotic/delta/dm2.disk + 15336 1995/06/27 17:30:04 010856 _exotic/delta/dm2.block + 2409 1995/07/05 17:11:51 010887 _exotic/delta/dm1_str.txt + 1997/06/09 21:29:44 010893 _exotic/futucomp/ + 12980 1995/06/26 18:08:22 010896 _exotic/futucomp/fc14.wav + 18216 1995/06/26 18:09:40 010923 _exotic/futucomp/fc14.vol + 9088 1995/06/26 18:05:58 010960 _exotic/futucomp/fc14.patt + 17302 1995/06/27 11:41:58 010979 _exotic/futucomp/fc14.main + 11960 1995/06/26 18:10:14 011305 _exotic/futucomp/fc14.hlp + 3048 1995/06/27 13:35:05 011382 _exotic/futucomp/fc14_str.txt + 369 1995/06/25 22:30:39 011412 _exotic/futucomp/fc13_voi + 2486 1995/06/27 12:21:18 011414 _exotic/futucomp/fc13_str.txt + 1997/06/09 21:29:44 011420 _exotic/jamcrack/ + 1075 1995/07/19 1:48:55 011423 _exotic/jamcrack/jamcracker_str.txt + 18562 1995/07/16 15:02:06 011427 _exotic/jamcrack/jamcracker.main + 1997/06/09 21:29:45 011465 _exotic/mark2/ + 3636 1995/07/04 20:16:50 011468 _exotic/mark2/m2.set + 8360 1995/06/27 14:03:10 011477 _exotic/mark2/m2.sequ + 8360 1995/07/04 20:16:08 014924 _exotic/mark2/m2.seq2 + 6002 1995/06/27 14:02:02 014942 _exotic/mark2/m2.scann + 6150 1995/06/26 0:06:32 014955 _exotic/mark2/m2.req + 4034 1995/06/26 0:08:32 014969 _exotic/mark2/m2.menu + 9762 1995/06/26 0:15:32 014978 _exotic/mark2/m2.inst + 9696 1995/06/27 14:00:36 014999 _exotic/mark2/m2.arran + 1997/06/09 21:29:45 015019 _exotic/oktaliz/ + 23082 1995/06/27 13:47:55 015022 _exotic/oktaliz/oktalyzer_pic + 768 1995/06/27 13:26:24 015069 _exotic/oktaliz/oktalizer_str.txt + 1997/06/09 21:29:46 015072 _exotic/pumatrack/ + 3074 1995/08/14 23:49:36 015075 _exotic/pumatrack/puma_str.txt + 10148 1995/08/14 23:43:47 015083 _exotic/pumatrack/puma.wave + 14126 2010/10/10 10:43:27 015104 _exotic/pumatrack/puma.main + 1997/06/09 21:29:47 015302 _exotic/sid/ + 6176 1995/08/19 15:09:47 015305 _exotic/sid/sid2_str.txt + 12868 2010/10/10 10:41:50 015319 _exotic/sid/sid2.wave + 20586 2010/10/10 10:41:24 015731 _exotic/sid/sid2.patt + 18560 2010/10/10 10:40:52 000132 _exotic/sid/sid2.main + 18556 2010/10/10 10:40:28 000321 _exotic/sid/sid2.inst + 16138 1995/06/28 17:07:18 000359 _exotic/sid/sid.wave + 11498 1995/06/28 17:06:26 000392 _exotic/sid/sid.samp + 14294 1995/06/28 17:09:00 000416 _exotic/sid/sid.patt + 14838 1995/06/28 17:07:58 000445 _exotic/sid/sid.main + 1997/06/09 21:29:48 000475 _exotic/synth/ + 4678 1995/09/26 23:31:52 000478 _exotic/synth/synth.wave + 7472 1995/07/27 23:26:22 000489 _exotic/synth/synth.note + 9112 1995/07/26 15:12:38 000505 _exotic/synth/synth.main + 7634 1995/07/27 23:25:40 000524 _exotic/synth/synth.instr + 4742 1995/07/27 23:24:50 000540 _exotic/synth/synth.diskio + 9726 1995/07/27 23:24:00 000551 _exotic/synth/synth.arpeggio + 3463 1995/09/13 20:21:06 000571 _exotic/aon_str.txt + 5274 1995/09/21 0:10:54 000579 _exotic/pack_song.txt + 668 1995/09/29 23:05:05 000591 _exotic/psid.txt + 1201 1995/06/30 11:47:13 000594 _exotic/smus_str.txt + 2168 1997/01/26 23:28:42 000598 _exotic/thx_str.txt + 1997/08/17 21:05:22 008584 Fonts/ + 524 1998/05/27 22:54:01 009147 Fonts/Minitel16.font + 264 1998/05/27 22:54:01 009150 Fonts/Minitel80.font + 1997/08/17 21:04:32 009152 Fonts/_Bullet_Outlines/ + 76604 1978/01/08 22:01:23 009155 Fonts/_Bullet_Outlines/Caslon540.type + 80162 1978/01/08 22:01:28 009788 Fonts/_Bullet_Outlines/CGOmega.type + 89392 1978/01/08 22:01:33 016969 Fonts/_Bullet_Outlines/CSTimes.type + 71056 1978/01/08 22:01:38 000764 Fonts/_Bullet_Outlines/CSTriumvirate.type + 81866 1978/01/08 22:01:42 000928 Fonts/_Bullet_Outlines/GarthGraphic.type + 68546 1978/01/08 22:01:46 001097 Fonts/_Bullet_Outlines/ShannonBook.type + 81236 1978/01/08 22:01:51 001764 Fonts/_Bullet_Outlines/Uncial.type + 1997/08/17 21:04:42 002157 Fonts/IBM/ + 3252 1993/08/26 20:00:42 002160 Fonts/IBM/8 + 524 1998/05/27 22:53:55 002168 Fonts/DPaint.font + 1304 1998/05/27 22:53:56 002171 Fonts/courier.font + 1997/08/17 21:04:43 002175 Fonts/siesta/ + 2600 1992/04/14 2:28:46 002178 Fonts/siesta/8 + 1564 1998/05/27 22:53:58 002185 Fonts/helvetica.font + 784 1998/05/27 22:53:55 002190 Fonts/ruby.font + 264 1998/05/27 22:53:54 002662 Fonts/siesta.font + 1997/08/17 21:04:44 002664 Fonts/DPaint/ + 640 1993/11/29 21:15:11 002667 Fonts/DPaint/5 + 3316 1993/11/29 21:15:12 002670 Fonts/DPaint/8 + 524 1998/05/27 22:53:56 002678 Fonts/diamond.font + 1997/08/17 21:04:45 003116 Fonts/ruby/ + 4292 1992/09/02 11:51:33 003143 Fonts/ruby/12 + 5708 1992/09/02 11:51:33 003153 Fonts/ruby/15 + 3348 1992/09/02 11:51:33 003166 Fonts/ruby/8 + 1997/08/17 21:04:46 003174 Fonts/_bullet/ + 99 1992/09/02 11:51:33 003177 Fonts/_bullet/if.fnt + 70726 1992/09/02 11:51:33 003179 Fonts/_bullet/hq3updt.tyq + 264324 1992/09/02 11:51:33 003420 Fonts/_bullet/plugin.types, © 1990 Agfa Corporation + 682 1992/09/02 11:51:33 004137 Fonts/_bullet/hq3.fnt + 1972 1992/09/02 11:51:33 004140 Fonts/_bullet/if.uc + 1304 1998/05/27 22:53:58 004145 Fonts/times.font + 1997/08/17 21:04:53 004149 Fonts/opal/ + 3812 1992/09/02 11:51:33 004152 Fonts/opal/12 + 3284 1992/09/02 11:51:33 004161 Fonts/opal/9 + 1997/08/17 21:04:53 004169 Fonts/sapphire/ + 5040 1992/09/02 11:51:33 004172 Fonts/sapphire/14 + 6928 1992/09/02 11:51:33 004183 Fonts/sapphire/19 + 1997/08/17 21:04:54 004198 Fonts/courier/ + 3020 1992/09/02 11:51:33 004201 Fonts/courier/11, © 1985, 1987 Adobe Systems, Inc. + 3444 1992/09/02 11:51:33 004208 Fonts/courier/13, © 1985, 1987 Adobe Systems, Inc. + 4116 1992/09/02 11:51:33 004216 Fonts/courier/15, © 1985, 1987 Adobe Systems, Inc. + 5156 1992/09/02 11:51:33 004226 Fonts/courier/18, © 1985, 1987 Adobe Systems, Inc. + 7556 1992/09/02 11:51:33 004238 Fonts/courier/24, © 1985, 1987 Adobe Systems, Inc. + 524 1998/05/27 22:53:55 004254 Fonts/opal.font + 1997/08/17 21:04:55 004257 Fonts/diamond/ + 3884 1992/09/02 11:51:33 004260 Fonts/diamond/12 + 7188 1992/09/02 11:51:33 004269 Fonts/diamond/20 + 1997/08/17 21:04:56 004285 Fonts/garnet/ + 5380 1992/09/02 11:51:33 004288 Fonts/garnet/16 + 3732 1992/09/02 11:51:33 004300 Fonts/garnet/9 + 1997/08/17 21:04:57 004309 Fonts/emerald/ + 6168 1992/09/02 11:51:33 004312 Fonts/emerald/17 + 6988 1992/09/02 11:51:33 004326 Fonts/emerald/20 + 1997/08/17 21:04:57 004341 Fonts/PlaySID/ + 616 1992/09/17 9:13:53 004344 Fonts/PlaySID/8 + 1997/08/17 21:04:58 004347 Fonts/topaz/ + 3192 1992/09/02 11:51:33 004350 Fonts/topaz/11 + 524 1998/05/27 22:53:57 004358 Fonts/emerald.font + 524 1998/05/27 22:53:57 004361 Fonts/garnet.font + 264 1998/05/27 22:53:57 004364 Fonts/topaz.font + 1998/05/27 22:47:03 004366 Fonts/helvetica/ + 3000 1992/09/02 11:51:33 004369 Fonts/helvetica/11, © 1985, 1987 Adobe Systems, Inc. + 3392 1992/09/02 11:51:33 004376 Fonts/helvetica/13, © 1985, 1987 Adobe Systems, Inc. + 3936 1992/09/02 11:51:33 004384 Fonts/helvetica/15, © 1985, 1987 Adobe Systems, Inc. + 5228 1992/09/02 11:51:33 004393 Fonts/helvetica/18, © 1985, 1987 Adobe Systems, Inc. + 7796 1992/09/02 11:51:33 004405 Fonts/helvetica/24, © 1985, 1987 Adobe Systems, Inc. + 2288 1994/12/22 15:12:50 004422 Fonts/helvetica/9, © 1985, 1987 Adobe Systems, Inc. + 1997/08/17 21:05:00 004428 Fonts/times/ + 3020 1992/09/02 11:51:33 004431 Fonts/times/11, © 1985, 1987 Adobe Systems, Inc. + 3548 1992/09/02 11:51:33 004438 Fonts/times/13, © 1985, 1987 Adobe Systems, Inc. + 4028 1992/09/02 11:51:33 004446 Fonts/times/15, © 1985, 1987 Adobe Systems, Inc. + 5264 1992/09/02 11:51:33 004455 Fonts/times/18, © 1985, 1987 Adobe Systems, Inc. + 7700 1992/09/02 11:51:33 004467 Fonts/times/24, © 1985, 1987 Adobe Systems, Inc. + 524 1998/05/27 22:53:56 004484 Fonts/sapphire.font + 264 1998/05/27 22:53:57 004487 Fonts/PlaySID.font + 264 1998/05/27 22:53:54 004489 Fonts/IBM.font + 185 1978/01/08 22:01:23 004491 Fonts/Caslon540.otag + 4 1978/01/08 22:01:23 004493 Fonts/Caslon540.font + 194 1978/01/08 22:01:38 004495 Fonts/CSTriumvirate.otag + 1997/08/17 21:05:03 004497 Fonts/Condensed60/ + 856 1995/08/25 15:47:16 004500 Fonts/Condensed60/6 + 1908 1995/08/25 15:47:16 004503 Fonts/Condensed60/9 + 4 1978/01/08 22:01:34 004508 Fonts/CsTimes.font + 182 1978/01/08 22:01:33 004510 Fonts/CsTimes.otag + 4 1978/01/08 22:01:28 004512 Fonts/CGomega.font + 185 1978/01/08 22:01:28 004514 Fonts/CGomega.otag + 4 1978/01/08 22:01:38 004516 Fonts/CSTriumvirate.font + 195 1978/01/08 22:01:42 004518 Fonts/GarthGraphic.otag + 4 1978/01/08 22:01:42 004520 Fonts/GarthGraphic.font + 188 1978/01/08 22:01:46 004522 Fonts/ShannonBook.otag + 4 1978/01/08 22:01:46 004524 Fonts/ShannonBook.font + 182 1978/01/08 22:01:51 004526 Fonts/Uncial.otag + 4 1978/01/08 22:01:51 004528 Fonts/Uncial.font + 1997/08/17 21:05:06 004530 Fonts/Minitel/ + 3784 1993/07/15 20:21:36 004533 Fonts/Minitel/8 + 3812 1993/07/26 21:48:34 004542 Fonts/Minitel/16 + 1997/08/17 21:05:07 004551 Fonts/TermSPC80/ + 3256 1993/10/07 1:39:54 004554 Fonts/TermSPC80/8 + 5304 1993/10/07 1:39:52 004562 Fonts/TermSPC80/16 + 524 1998/05/27 22:53:59 004574 Fonts/TermSPC80.font + 1997/08/17 21:05:08 004577 Fonts/TermISO80/ + 3256 1993/10/07 1:39:50 004580 Fonts/TermISO80/8 + 5304 1993/10/07 1:39:48 004588 Fonts/TermISO80/16 + 524 1998/05/27 22:53:59 004703 Fonts/TermISO80.font + 1997/08/17 21:05:09 004706 Fonts/TermISO132/ + 2236 1993/10/07 1:39:44 004709 Fonts/TermISO132/8 + 3388 1993/10/07 1:39:42 004715 Fonts/TermISO132/16 + 524 1998/05/27 22:54:00 004723 Fonts/TermISO132.font + 1997/08/17 21:05:10 004726 Fonts/TermIBM80/ + 3256 1993/10/07 1:40:14 004729 Fonts/TermIBM80/8 + 5304 1993/10/07 1:40:12 004737 Fonts/TermIBM80/16 + 524 1998/05/27 22:54:00 004749 Fonts/TermIBM80.font + 1997/08/17 21:05:11 004752 Fonts/TermDDC80/ + 3256 1993/10/07 1:40:10 004755 Fonts/TermDDC80/8 + 5304 1993/10/07 1:40:08 004763 Fonts/TermDDC80/16 + 524 1998/05/27 22:54:00 004967 Fonts/TermDDC80.font + 1997/08/17 21:05:12 004970 Fonts/TermDDC132/ + 2488 1993/10/07 1:40:06 004973 Fonts/TermDDC132/8 + 3768 1993/10/07 1:40:04 004979 Fonts/TermDDC132/16 + 524 1998/05/27 22:54:00 005161 Fonts/TermDDC132.font + 1997/08/17 21:05:13 005164 Fonts/Minitel16/ + 3388 1993/07/26 21:30:14 005167 Fonts/Minitel16/8 + 5244 1993/07/26 21:32:26 005175 Fonts/Minitel16/16 + 1997/08/17 21:05:14 005187 Fonts/Minitel80/ + 2376 1993/07/12 21:35:56 005190 Fonts/Minitel80/8 + 524 1998/05/27 22:53:59 005196 Fonts/Minitel.font + 1997/08/17 21:05:15 005199 Fonts/A64/ + 732 1993/10/19 12:19:05 005202 Fonts/A64/6 + 264 1998/05/27 22:54:01 005205 Fonts/A64.font + 524 1998/05/27 22:53:58 005207 Fonts/Condensed60.font + 1304 1998/05/27 22:54:02 005210 Fonts/DGSansSerif.font + 1997/08/17 21:05:16 005214 Fonts/DGSansSerif/ + 3352 1995/08/25 15:47:16 005217 Fonts/DGSansSerif/11 + 3600 1995/08/25 15:47:16 005225 Fonts/DGSansSerif/13 + 2644 1995/08/25 15:47:16 005234 Fonts/DGSansSerif/7 + 2852 1995/08/25 15:47:16 005241 Fonts/DGSansSerif/8 + 3032 1995/08/25 15:47:16 005248 Fonts/DGSansSerif/9 + 264 1998/05/27 22:54:02 005255 Fonts/newtopaz.font + 1997/08/17 21:05:17 005257 Fonts/newtopaz/ + 3332 1995/08/25 15:47:16 005260 Fonts/newtopaz/8 + 264 1998/05/27 22:54:02 005268 Fonts/GoldED.font + 1997/08/17 21:05:18 005270 Fonts/GoldED/ + 3132 1993/12/19 23:10:30 005273 Fonts/GoldED/10 + 1997/08/17 21:05:18 005281 Fonts/musicline/ + 2004 1995/09/13 21:49:04 005284 Fonts/musicline/8 + 2960 1995/09/13 19:30:22 005289 Fonts/musicline/7 + 524 1998/05/27 22:54:02 005296 Fonts/Musicline.font + 1997/08/17 21:05:19 005299 Fonts/DCTV-Viewer/ + 3176 1995/04/02 2:11:20 005302 Fonts/DCTV-Viewer/8e + 264 1998/05/27 22:54:02 005310 Fonts/DCTV-Viewer.font + 1997/08/17 21:05:20 005312 Fonts/Personal/ + 3900 1995/06/19 18:56:06 005315 Fonts/Personal/8 + 264 1998/05/27 22:54:02 005324 Fonts/Personal.font + 1997/08/17 21:05:21 005326 Fonts/KaraGRANITE/ + 37096 1989/01/10 21:05:21 005329 Fonts/KaraGRANITE/55.8C + 264 1998/05/27 22:54:03 005404 Fonts/KaraGRANITE.font + 264 1998/05/27 22:54:03 005406 Fonts/microknight.font + 1997/08/17 21:05:22 005408 Fonts/microknight/ + 2888 1997/03/19 19:21:37 005411 Fonts/microknight/8 + 1998/04/29 17:56:30 010555 Fonts/Chorus/ + 2616 1995/07/27 12:57:10 010558 Fonts/Chorus/8 + 264 1998/05/27 22:54:03 010565 Fonts/Chorus.font + 1995/07/17 23:41:34 008607 ARexx/ + 1994/06/13 17:49:19 009410 ARexx/Rexx/ + 724 1994/03/30 18:56:18 009866 ARexx/Rexx/NextError.ced + 371 1994/03/30 18:55:14 009869 ARexx/Rexx/Make.ced + 414 1994/03/30 18:55:10 009871 ARexx/Rexx/Compile.ced + 414 1994/03/30 18:55:10 009412 ARexx/Compile.ced + 371 1994/03/30 18:55:14 009414 ARexx/Make.ced + 724 1994/03/30 18:56:18 009416 ARexx/NextError.ced + 3305 1992/08/01 10:56:48 009042 ARexx/AddToLabelDataBase.pprx + 816 1992/03/14 19:12:38 009043 ARexx/ADProComm.rexx + 2259 1992/03/14 19:12:46 009046 ARexx/ADProHotLink.pprx + 3619 1992/03/14 19:12:48 008975 ARexx/Align.pprx + 1021 1992/03/14 19:12:52 008976 ARexx/AllCaps.pprx + 6052 1992/03/14 19:12:50 009047 ARexx/AlterBoxesOnPages.pprx + 2798 1993/02/19 14:08:02 009048 ARexx/AutoImport.pprx + 1075 1993/01/24 13:45:18 008981 ARexx/AutoSave.pprx + 759 1992/03/14 19:12:58 008927 ARexx/AutoSave.pprx.info + 26810 1993/01/29 18:31:34 009049 ARexx/BordersSimpleShapes.pprx + 4711 1992/03/14 19:12:46 009050 ARexx/BoxAttr.pprx + 944 1992/03/14 19:12:38 009051 ARexx/BoxColors.pprx + 3650 1993/01/29 18:31:00 009054 ARexx/BoxesFrontToBack.pprx + 2277 1992/08/02 18:26:00 009055 ARexx/BoxResize.pprx + 946 1992/03/14 19:12:40 009056 ARexx/Calculator.pprx + 821 1992/03/14 19:12:42 009059 ARexx/CommandLine.pprx + 2355 1992/03/14 19:12:58 009062 ARexx/CopyBoxAttributes.pprx + 4234 1993/02/15 15:56:24 009063 ARexx/CopyBoxContents.pprx + 2101 1992/03/14 19:12:44 009064 ARexx/CopyBoxToPages.pprx + 1065 1992/03/14 19:12:42 009065 ARexx/CopyPages.pprx + 2144 1992/03/14 19:12:44 009066 ARexx/CopyPageSpecs.pprx + 1028 1992/03/14 19:12:46 009067 ARexx/DeleteRange.pprx + 3666 1992/03/14 19:12:40 009068 ARexx/DropCaps.pprx + 2081 1992/03/14 19:12:54 009069 ARexx/DropShadowBox.pprx + 1413 1992/03/14 19:12:40 009070 ARexx/DropShadowHeader.pprx + 4719 1992/03/14 19:13:00 009071 ARexx/EnterPersonalInfo.pprx + 1900 1993/02/10 13:02:32 009072 ARexx/FindAndReplace.pprx + 1127 1992/07/17 23:28:18 009073 ARexx/FitBitmapToBox.pprx + 2424 1993/02/15 15:58:38 009074 ARexx/GetTaggedText.pprx + 898 1992/03/14 19:12:48 009075 ARexx/GreekBoxes.pprx + 4623 1992/03/14 19:12:52 009078 ARexx/GroupAttr.pprx + 2080 1992/03/14 19:12:56 009079 ARexx/GroupCopyBoxAttr.pprx + 4072 1993/02/15 15:59:40 009080 ARexx/GroupCopyBoxContents.pprx + 1820 1993/02/15 16:00:26 009081 ARexx/GroupCopyToPages.pprx + 4513 1992/03/14 19:12:44 009082 ARexx/GroupDistribute.pprx + 2027 1992/03/14 19:12:44 009083 ARexx/GroupMove.pprx + 1957 1992/03/14 19:12:56 009084 ARexx/GroupRotate.pprx + 2493 1992/03/14 19:12:56 009085 ARexx/GroupScale.pprx + 3122 1992/03/14 19:12:56 009086 ARexx/GroupSpace.pprx + 3548 1992/03/14 19:12:48 009087 ARexx/GroupTile.pprx + 1018 1992/03/14 19:12:40 009088 ARexx/InitialCaps.pprx + 3789 1993/02/19 14:11:00 009091 ARexx/Insertdoc.pprx + 2366 1992/03/14 19:12:46 009092 ARexx/InsertPersonalInfo.pprx + 1118 1992/07/17 23:28:08 009093 ARexx/LandscapePage.pprx + 7312 1993/02/15 16:02:26 009094 ARexx/MailMerge.pprx + 3770 1992/07/18 23:28:04 009095 ARexx/MakeBarChart_Horz.pprx + 3698 1992/07/18 23:28:02 009096 ARexx/MakeBarChart_Vert.pprx + 2727 1992/03/14 19:12:46 009097 ARexx/MakeBoxIntoColumns.pprx + 2376 1992/03/14 19:12:40 009098 ARexx/MakeGuides.pprx + 4914 1992/07/17 23:27:58 009099 ARexx/MakePieChart.pprx + 1167 1992/03/14 19:12:38 009100 ARexx/MovePage.pprx + 1131 1992/03/14 19:12:38 009101 ARexx/NoCaps.pprx + 5688 1993/02/19 14:11:52 009102 ARexx/ProCalcTableImport.pprx + 2425 1993/02/19 14:13:46 009103 ARexx/ProCalcTableUpdate.pprx + 2458 1993/02/15 16:05:50 009104 ARexx/ReplaceMergeCodes.pprx + 7102 1993/02/01 18:09:28 009105 ARexx/SavePrefs.pprx + 2396 1992/03/14 19:12:38 009106 ARexx/SetPageSize.pprx + 1570 1992/03/14 19:12:38 009107 ARexx/SmallCaps.pprx + 2402 1992/03/14 19:13:02 009108 ARexx/StepAndRepeat.pprx + 2066 1993/01/28 18:07:44 009109 ARexx/SubstituteFont.pprx + 3330 1993/01/28 18:04:46 009110 ARexx/TableImport.pprx + 886 1992/03/14 19:12:44 009111 ARexx/UnGreekBoxes.pprx + 7308 1993/02/19 14:01:40 009114 ARexx/UnitsConverter.pprx + 1047 1992/03/14 19:12:38 008982 ARexx/counter.rexx + 559 1992/07/18 13:11:32 008983 ARexx/FontList.rexx + 3110 1992/03/14 19:12:38 008986 ARexx/FormatDate.rexx + 658 1992/03/14 19:12:48 008987 ARexx/getdirlist.rexx + 266 1992/03/14 19:12:44 008990 ARexx/ItemToFront.rexx + 2635 1992/02/29 15:45:32 008971 ARexx/launch.rexx + 2424 1993/02/15 13:14:12 008993 ARexx/PPageAutoSave.rexx + 622 1993/02/15 15:39:24 008995 ARexx/PPSetup.rexx + 363 1993/01/29 18:30:20 008998 ARexx/SafeEndEdit.rexx + 375 1993/01/28 16:20:34 009000 ARexx/SafeSetEdit.rexx + 1997/06/09 21:22:12 010066 _structure/ + 333 1995/06/26 12:32:28 010464 _structure/arc_str + 424 1995/06/22 13:38:59 010825 _structure/tar_str.txt + 667 1995/06/26 13:31:26 010827 _structure/lha.txt + 1799 1995/06/22 11:59:23 010830 _structure/zip_str.txt + 1968 1995/06/22 15:26:06 010835 _structure/zoo_str.txt + 1007 1996/03/19 20:56:40 010427 _structure/lzx_str.txt + 2180 1996/04/05 1:01:24 002965 _structure/warp_str.txt + 6911 1995/10/02 22:59:07 003887 _structure/exotic.txt + 18395 1996/11/24 11:26:45 010081 _structure/inst.txt + 1996/10/10 19:01:31 010694 SquirrelSCSI/ + 1996/10/09 20:33:30 010700 SquirrelSCSI/SCSIMounter/ + 503 1995/01/26 11:29:18 010703 SquirrelSCSI/SCSIMounter/SCSIMounter.guide.info + 19234 1994/12/05 17:01:02 010705 SquirrelSCSI/SCSIMounter/SCSIMounter.guide + 868 1995/01/26 11:29:18 010812 SquirrelSCSI/SCSIMounter/SCSIMounter.doc.info + 18167 1994/12/05 16:56:06 010815 SquirrelSCSI/SCSIMounter/SCSIMounter.doc + 1044 1995/01/26 11:29:19 015927 SquirrelSCSI/SCSIMounter/SCSIMounter.info + 32356 1994/12/05 16:05:46 015931 SquirrelSCSI/SCSIMounter/SCSIMounter + 628 1995/01/26 11:29:26 015362 SquirrelSCSI/SCSIMounter.info + 1996/10/09 20:32:16 015365 SquirrelSCSI/Extras/ + 1996/10/09 20:32:17 015368 SquirrelSCSI/Extras/DOSDrivers/ + 523 1995/05/25 10:06:56 015371 SquirrelSCSI/Extras/DOSDrivers/PC270C.info + 666 1995/01/26 10:26:54 015374 SquirrelSCSI/Extras/DOSDrivers/PC270C + 523 1995/05/25 10:06:56 015377 SquirrelSCSI/Extras/DOSDrivers/FP0.info + 504 1995/01/26 10:22:32 015380 SquirrelSCSI/Extras/DOSDrivers/FP0 + 632 1995/01/23 16:31:48 015382 SquirrelSCSI/Extras/DOSDrivers.info + 628 1995/01/26 11:29:26 015385 SquirrelSCSI/Extras.info + 5409 1995/08/29 14:18:54 015996 SquirrelSCSI/ReadMe + 556 1995/06/02 18:32:38 016008 SquirrelSCSI/ReadMe.info + 9886 1996/10/09 0:13:09 000088 SquirrelSCSI/ZIPMount_12.lha + 4650 1996/10/09 0:13:14 000162 SquirrelSCSI/ZipTool12.lha + 24104 1996/10/09 0:12:47 000283 SquirrelSCSI/SCSIdevs.lha + 27553 1996/10/09 10:02:46 000173 SquirrelSCSI/ProbeSCSI008.lha + 11834 1996/04/25 12:02:50 000020 SquirrelSCSI/ZIPMount.guide + 628 1996/10/10 21:32:53 010697 SquirrelSCSI.info + 1997/05/01 12:30:58 001207 _str/ + 7981 1995/09/18 22:24:59 001210 _str/fred_str.txt + 2470 1995/06/29 15:42:22 001227 _str/m2_str.txt + 1987 1996/05/21 0:25:53 001233 _str/tfmx.doc + 20554 1996/05/15 7:55:36 001238 _str/tfmx.patt + 82036 1996/05/14 0:10:40 001280 _str/tfmx.pic1 + 20554 1996/05/15 7:41:53 001983 _str/tfmx.pic6 + 20554 1996/05/15 7:49:54 002026 _str/tfmx.track + 14715 1996/04/09 2:16:07 002618 _str/tfmx.txt + 2360 1996/05/20 23:46:04 002648 _str/tfmx_str.txt + 852 1996/05/21 0:33:05 002654 _str/tfmx_str2.txt + 9133 1995/11/07 22:28:47 002657 _str/ult_form.txt2 + 56917 1995/07/27 17:59:24 002834 _str/digi.txt + 44640 1995/07/27 22:36:48 003012 _str/digi2.txt.gz + 48594 1995/06/28 18:48:08 001366 _str/TME_STR.TXT + 64186 1997/01/11 18:14:24 001525 _str/MLED.TXT.gz + 10480 1997/11/03 21:49:07 008540 MON.paradox, ExoticRipper 2.22 68020+ CeBIT'94 by Turbo & Marley/Infect. + 51324 1997/11/03 22:10:30 002278 mod.brian_the_lion, - [01:09] - (PHA) Ripped & Converted with Pro-Wizard v2.16 by Gryzor + 9382 1998/02/11 22:53:53 010054 MOD.matkamies, ExoticRipper 2.22 68020+ CeBIT'94 by Turbo & Marley/Infect. + 9338 1998/02/11 23:08:14 010535 FRED.stardust_intro, ExoticRipper 2.22 68020+ CeBIT'94 by Turbo & Marley/Infect. + 628 1996/10/10 21:32:53 000011 Storage.info diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.usage b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.usage new file mode 100755 index 000000000..3d168cdc0 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Demo/unadf.usage @@ -0,0 +1,10 @@ +unadf [-lrcsp -v n] dumpname.adf [files-with-path] [-d extractdir] + -l : lists root directory contents + -r : lists directory tree contents + -c : use dircache data (must be used with -l) + -s : display entries logical block pointer (must be used with -l) + + -v n : mount volume #n instead of default #0 volume + + -p : send extracted files to pipe (unadf -p dump.adf Pics/pic1.gif | xv -) + -d dir : extract to 'dir' directory diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/API.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/API.txt new file mode 100755 index 000000000..5fd59ce29 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/API.txt @@ -0,0 +1,270 @@ +The ADFlib API quick overview +***************************** + +outdated ! But may be useful anyway... + + +Always read ADFlib structures, never change a value directly, the +behaviour of the library could then become unforeseeable. + + + +Minimal C program with ADFlib +----------------------------- + +#include /* for puts() */ + +#include"adflib.h" + +ENV_DECLARATION; + +int main(int argc, char *argv[]) +{ + adfEnvInitDefault(); + + puts("hello world"); + + adfEnvCleanUp(); +} + + + + +Device +------ + +struct Device { + int devType; /* see adf_str.h */ + BOOL readOnly; + long size; /* in bytes */ + + int nVol; /* partitions */ + struct Volume** volList; + + long cylinders; /* geometry */ + long heads; + long sectors; + + BOOL isNativeDev; + void *nativeDev; +}; + +struct Device* adfMountDev(char* name) + mounts and allocates a device (real or dump) + +void adfDeviceInfo(struct Device* dev) + prints device info to stdout : must be rewritten for another GUI + +void adfUnMountDev(struct Device* dev) + +void adfCreateHd(struct Device* dev, int nbPartitions, struct Partition** part) + create a filesystem for harddisk with one or several partition + (see hd_test2.c) + +void adfCreateFlop(struct Device* dev, char* name, int flags) + flags are for ffs, dircache or international (see fl_test.c) + + +Volume +------ + +struct Volume { + struct Device* dev; + + SECTNUM firstBlock; /* first block of data area (from beginning of device) */ + SECTNUM lastBlock; /* last block of data area (from beginning of device) */ + SECTNUM rootBlock; /* root block (from firstBlock) */ + + char dosType; /* FFS/OFS, DIRCACHE, INTERNATIONAL */ + BOOL bootCode; + int datablockSize; /* 488 or 512 */ + + char *volName; + + long bitmapSize; /* in blocks */ + SECTNUM *bitmapBlocks; /* bitmap blocks pointers */ + struct bBitmapBlock **bitmapTable; + BOOL *bitmapBlocksChg; + + SECTNUM curDirPtr; +}; + + +struct Volume* adfMount(struct Device* dev, int partition, BOOL readOnly) + The first partition is #0 + To be called after adfCreateFlop(), adfCreateHd() or adfMountDev(). + +void adfVolumeInfo(vol) + Display volume info to stdout, must be rewritten for another GUI + +void adfUnMount(struct Volume *vol) + + +Dump device (.ADF) +------------------ + +struct adfCreateDumpDevice(char*, int cyl, int heads, int sectors) + To be used in place of adfMountDev(). Create a filename of the right size, + nothing else + + +File +---- + +struct File* adfOpenFile(struct Volume *volume, char* filename, char* mode) + mode = "r" or "w" + +void adfCloseFile(struct File* file) + +long adfReadFile(struct File* file, long length, unsigned char* buffer) + returns the number of bytes read + +long adfWriteFile(struct File* file, long length, unsigned char* buffer) + returns the number of bytes written + +BOOL adfEndOfFile(struct File* file) + + +Directory +--------- + +struct List* adfGetDirEnt(struct Volume* vol, SECTNUM nSect) + Returns a linked list with the directory entries. Each cell content of the list + must be freed with adfFreeEntry() + +void adfFreeEntry(struct Entry *entry) + +SECTNUM adfChangeDir(struct Volume* vol, char* dirname) + change current directory + +void adfParentDir(struct Volume* vol) + change current directory + +void printEntry(struct Entry* entry) + print the cell content to stdout + +void CreateDir(struct Volume* vol, SECTNUM parentSect, char* name) + + + +Callbacks mechanism +------------------- + +* The library environment : 'struct Env adfEnv' + +This variable is the only global variable of the library. It contains +callbacks for error and notification messages, and global variables. +By default, adfEnvInitDefault() initialize adfEnv functions that display +messages to stderr. You must use adfSetEnv() to use your own defined +functions. +The environment must be clean up with adfEnvCleanUp(). + +Four functions are available : +- (*adfEnv.eFct)(char*), called by ADFlib for a fatal error. It STOPS + the library : you must redefine yourself a more friendly to handle + this kind of error. +- (adfEnv.wFct)(char*), called for warnings. It is called when something wrong + happens, but processing can continue. +- (adfEnv.vFct)(char*), called to display verbose messages. +- (*adfEnv.notifyEnv)(SECTNUM p, int t), called to tell that + the volume structure has changed. The value p give where the change appeared, + t the type of the value (ST_DIR,ST_FILE,...). + +The environment also contains access to nativeFunctions. + + +* Native device and functions + +By default, the library is compiled to manage .ADF files (dump files) and +real devices like harddisk and removable disks (called native devives) +on ONE defined plateform (WinNT/Intel or Linux/68k...) + +To add a new plateform to be supported by ADFlib, you must write your +own files adf_nativ.h and adf_nativ.c. + +. data types + +adf_nativ.h defines two structures : +- 'struct nativeDev'. It contains all the variable necessary for + the native device management. You can add here whatever you what to + be able to manage your real device on your plateform ! +- 'struct nativeFunctions'. It defines the minimal API between ADFlib and + the specific native part. The functions names and prototypes must not be + changed, since they are called by the library. It is possible to add + other functions. + +The type device 'struct Device' contains one variable 'void* nativeDev'. +It is allocated within adf_nativ.c by adfInitDevice(). +Another variable 'BOOL isNativeDev' tells if the ADFlib is working with +a dump file (.ADF) or a real device. + +'adfEnv' contains one variable 'void *nativeFct'. adfEnvInitDefault() +allocates it by calling the function adfInitNativeFct(). + + +. callback functions : + +The structure 'struct nativeFunctions' must have at least : + BOOL (*adfInitDevice)(struct Device*, char*) + BOOL (*adfNativeReadSector)(struct Device*, long, int, unsigned char*) + BOOL (*adfNativeWriteSector)(struct Device*, long, int, unsigned char*) + BOOL (*adfIsDevNative)(char*) + void (*adfReleaseDevice)() + + +For example, adfMountDev() calls adfInitDevice() this way : + struct nativeFunctions *nFct; + + ... /* struct Device* dev allocation */ + + nFct = adfEnv.nativeFct; /* was of type void* */ + + /* only once ! */ + dev->isNativeDev = (*nFct->adfIsDevNative)(filename); + + /* choose between dump or a real device */ + if (dev->isNativeDev) + (*nFct->adfInitDevice)(dev, filename); + else + adfInitDumpDevice(dev, filename); + + +You must define one function to initialize a device, for example : + +BOOL myInitDevice(struct Device *dev, char* name) +{ + /* allocate and initailize dev->nativeDev */ + + /* return TRUE if everything happens right */ +} + +or + +BOOL myIsDevNative(char* name) +{ + /* for a Unix like platform */ + return( strncmp("/dev/",name,5)==0 ); +} + + + +And so on to read, write a 512 bytes block, and release the native device. + + +The function 'adfInitNativeFct()', also defined in adf_nativ.c (and .h), +makes the names and the ADFlib native API : + +void adfInitNativeFct() +{ + struct nativeFunctions *nFct; + + nFct = (struct nativeFunctions*)adfEnv.nativeFct; + + nFct->adfInitDevice = myInitDevice ; + nFct->adfNativeReadSector = myReadSector ; +... +} + +But the prototypes must stay the same ! + + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/version0.7.9d_gary.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/version0.7.9d_gary.txt new file mode 100755 index 000000000..5da147bb7 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Docs/version0.7.9d_gary.txt @@ -0,0 +1,70 @@ + +ADFLib changes - Wednesday 16/10/02 +----------------------------------- + +Background +---------- +Bjark Viksoe changed ADFLib 0.7.9b in or before December 2001. Experimental +version sent to me by Laurent in December 2001, soon to be released as 0.7.9c. +Changes tried with ADFOpus then put aside due to difficulties compiling. +Successfully tried again in October 2002, having neither heard anything more +from Laurent nor seen a later version at the web site. + +Bjark Viksoe's changes removed the dynamic projects and changed a number of +parameters such as where compiled files were stored. These were potentially not +portable and operated outside the compilation directory e.g. "..\..\AdfLib...", +"C:\Temp". + +Laurent's original settings were slightly at odds with common VC++ practice i.e. Win32 +and Debug directories used for compiled files rather than Release and Debug; Debug +executables used Release libs rather than debug versions. + +Enter Gary with a shiny version of ADF Opus to release and a desire to release it with +a clean and equally shiny ADFLib 0.7.9c distribution. + + +Method +------ +I started with a clean installation of ADFLib 0.7.9b. Loading this into VC++ 6 SP5 +updated the project and workspace files to VC++ 6 versions. Next, I unpacked a clean +installation of the potential 0.7.9c version received from Laurent. I then used WinDiff +to determine exactly what changes Bjark had made and manually edited the 0.7.9b files +to match. + + +Changes +------- + +-Reinstated dynlib, dynunadf and staticunadf by starting with V0.7.9b. + +-Returned to original ADFLib compilation settings as above, then made some subtle changes. + +-Release output files now go to Bin/Win32/Release, rather than Bin/Win32, for + symmetry and standardisation. Intermediate files still go to Release and Debug. + +-Debug dynunadf and staticunadf now use the debug libs, not the release ones, + to allow full debugger access. + +-Fixed a path setting problem which caused a failure to find adflibd.lib. + +-Changed Bjark's setting of "C7 Compatible" back to "Program Database for Edit and Continue" + for consistency with the other projects. + +-Annotated Bjark's changes with /* BV */ for easy identification. + +-Removed C++ comment tags and replaced them with C tags across the board. ADFLib should + hopefully be pure C again now. + +-Removed a change implemented for Opus which was inadvertantly left in during earlier updates + i.e. a string added to struct nativeDevice in adf_nativ.h. + +-Updated Laurent's copyright on every page to include 2002. + +-Updated the version and date strings to: + #define ADFLIB_VERSION "0.7.9c" + #define ADFLIB_DATE "16 October, 2002" + +-Everything compiles cleanly with no warnings. :-) + +-Bjark's changes appear to support non-standard FD ADFs up to 83 tracks. Can we confirm this? + diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info.txt new file mode 100755 index 000000000..00b79a83b --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info.txt @@ -0,0 +1,2121 @@ +------------------------------------------------------------------------ + + + The .ADF (Amiga Disk File) format FAQ + + + Laurent Clévy, lclevy@club-internet.fr + + +v1.11 - March 5th, 2005 +------------------------------------------------------------------------ +/ This document describes the .ADF file format. An Amiga Disk File is a +sector per sector dump of an Amiga formatted disk. The intent is to +explain in detail how the Amiga stores files and directories on floppy +and hard disks. +A set of C routines (ADFlib) will be supplied to manage the ADF format. / +------------------------------------------------------------------------ + + + 0. Changes <#p0> + + + 1. Introduction <#p1> + + * 1.1 Disclaimer and Copyright <#p11> + * 1.2 Feedback, updates <#p12> + * 1.3 Conventions <#p13> + * 1.4 Acknowledgements <#p14> + + + 2. How bytes are physically read from and written to a disk ? <#p2> + + * 2.1 What is MFM encoding/decoding ? <#p21> + * 2.2 What is the MFM track format ? <#p22> + * 2.3 What is the MFM sector format ? <#p23> + * 2.4 How to decode MFM data ? <#p24> + + + 3. What is the Amiga floppy disk geometry ? <#p3> + + + 4. What is the logical organisation of an Amiga volume ? <#p4> + + * 4.1 What is a Bootblock ? <#p41> + * 4.2 What is a Rootblock ? <#p42> + o 4.2.1 How to find the first sector of an entry ? <#p421> + o 4.2.2 How to list directory entries ? <#p422> + o 4.2.3 How to compute the checksum ? <#p423> + * 4.3 How are the free and used block lists managed ? <#p43> + * 4.4 How are files stored ? <#p44> + * 4.5 How are directories stored ? <#p45> + * 4.6 How are links implemented in AmigaDOS ? <#p46> + o 4.6.1 Hard links <#p461> + o 4.6.2 Soft links <#p462> + * 4.7 How are the blocks associated with the dircache mode ? <#p47> + + + 5. How does a blank disk look like ? <#p5> + + * 5.1 A minimal blank floppy disk <#p51> + * 5.2 A 'Bootable' floppy disk <#p52> + * 5.3 A directory cache mode floppy disk <#p53> + * 5.4 International mode <#p54> + + + 6. The structure of a hard disks ? <#p6> + + * 6.1 What is the Rigid Disk Block ? <#p61> + * 6.2 How are bad blocks managed ? <#p62> + * 6.3 How are partitions stored ? <#p63> + * 6.4 What are FSHD blocks ? <#p64> + * 6.5 What are LSEG blocks ? <#p65> + + + 7. The Hard file : a big floppy dump file <#p7> + + + 8. Advanced information <#p8> + + + 9. References and links <#p9> + + + 10. C Routines : the ADF Library <#p10> + + + 11. Other Amiga file systems <#p11> + +------------------------------------------------------------------------ + + + 0. Changes + +Since 1.10 (November 27th, 2001) + + * Links updated + * Amiga Floppy Reader link removed. The project seems cancelled. + +Since 1.09 (3. Sep 1999) + + * [add] ADFlib is used by ADFview + from Bjarke Viksoe + * [chg] URLs fixes + +Since 1.08 (2. August 1999) + + * [chg] fix: the hashvalue function was buggy on some rare name + * [chg/add] suggestions (last ones) by Hans-Joachim. + +Since version 1.07 (27. May 1999) + + * [chg] suggestions by Jörg Strohmayer (author of + aminet:disk/moni/DiskMonTools.lha) + * [chg] suggestions by Hans-Joachim Widmaier + * [chg] minor additions to the MFM track format, from an online + version of "RKRM : Libraries and Devices, appendix C" + +Since version 1.06 (2. May 1999), by Heiko Rath (hr@brewhr.swb.de) : + + * [chg] Minor spelling corrections + * [chg] Blocksizes other than 512 bytes documented + * [chg] DosEnvVector extended + * [add] link to the Amiga Floppy Reader project + +Since version 1.04 (16. January 1999) : + + * [chg] Corrections suggested by Hans-Joachim Widmaier (Linux affs + maintainer) + * [add] The WinUAE hardfile format section is starting + +Since version 0.9 (28. May 1997) : + + * [add] HTML version with figures + * [add] Hard disk section added + * [chg] Correction about DIRC and INTL modes (section 4.1 <#p41>) + * [add] The whole rewritten *ADF library* is released (0.7.8) and + used within the *ADFOpus* project (New site + Gary Harris, Old site + Dan Sutherland) + * [chg] The bitmap checksum algorithm is the same as the rootblock + algorithm + * [add] Allowed/forbidden characters in volume and file names, 4GB + limit + * [add] how to rename an entry + +------------------------------------------------------------------------ + + + 1. Introduction + +In this document, we will describe how the AmigaDOS is (was?) managing +storage media, from the magnetic layer to the files and directories layer. + +With *physical layer*, I'm talking about the way bytes are physically +stored on a magnetic surface, with the RLL or MFM encoding. +The next layer, according to the 'most physical' to 'most conceptual' +order, is the *partitions layer* : this is how the AmigaDOS is managing +media with more then one partition, like Zip disks or hard disks. +The next and last layer is the *volume layer* : where the files and +directories are stored. + +The physical layer is described in the 2nd chapter, +The volume layer is the biggest part of the document (4th and 5th +chapters), since it's the most interesting, +The partitions layer is explained in the 6th chapter. + +Let's continue with more conventional things in an introduction. + +------------------------------------------------------------------------ + + + 1.1 Disclaimer and copyright + +This document is Copyright (C) 1997-1999 by Laurent Clévy, but may be +freely distributed, provided the author name and addresses are included +and no money is charged for this document. + +This document is provided "as is". No warranties are made as to its +correctness. + +Amiga and AmigaDOS are registered Trademarks of Gateway 2000. +Macintosh is a registered Trademark of Apple. + +------------------------------------------------------------------------ + + + 1.2 Feedback, updates + +If you find any mistakes in this document, have any comments about its +content, feel free to send me an e-mail. +Corrections are very welcome. + +You can find new versions of this document at : + + * The ADFlib page : http://lclevy.free.fr/adflib/adf_info.html + +------------------------------------------------------------------------ + + + 1.3 Conventions + +In this document, hexadecimal values use the C syntax : for example 0x0c +is the decimal value 12. + + + Byte ordering + +Since the Amiga is a 680x0 based computer, integers that require more +than one byte are stored on disk in 'Motorola order' : the most +significant byte comes first, then the less significant bytes in +descending order of significance (MSB LSB for two-byte integers, B3 B2 +B1 B0 for four-byte integers). This is usually called *big endian* byte +ordering. +The Intel based PCs are using the *little endian* byte ordering. + + + Vocabulary + +A 'word' or 'short' is a 2-byte (16 bits) integer, a 'long' a 4-byte (32 +bits) integer. Values are unsigned unless otherwise noted. + +A 'block' in this document will be 512 consecutive bytes on disk, unless +noted otherwise, the variable 'BSIZE' will denote the blocksize. +The word 'sector' and 'block' will be used as synonyms here, even if +'sector' is usually related to the physical side, and the 'block' to the +logical side. This is because the AmigaDOS can only handle one sector +per block. Some other Unix filesystems can have more then one sector per +block. + +A block pointer is the number of this block on the disk. The first one +is the #0 block. +There are 'logical' and 'physical' block pointers. 'Logical' ones are +related to the start of one volume, 'physical' one are related to the +start of a physical media. If a volume starts at the #0 physical sector, +a physical pointer and a logical pointer is the same thing, like with +floppies. + +A simple definition of 'Hashing' could be : "a method to access tables : +given a number or a string, a hash function returns an index into an +array". This definition is correct for this document, but there is a lot +of other hashing methods, that might be far more complex. + +Linked lists are cell-oriented data structures. Each cell contains a +pointer to the next or previous cell or both, the last cell pointer is +null. + +C example : + +struct lcell { + char name[10]; + /* contains next cell adress, or NULL if this cell is the last */ + struct lcell *next_cell; + }; + +Block names begin with a capital (Rootblock). Field names are noted +between quotes ('field_name'). + +All formats are described as tables, one row per field. Here is an +example with the beginning of the well known GIF format : + +offset type length name comments +---------------------------------------------------------- +0 char 3 signature 'GIF' +3 char 3 version '87a' or '89a' +6 short 1 screen width (little endian) +8 short 1 screen height (little endian) + +The .ADF format is the format created and used by the -incredible- UNIX +Amiga Emulator (UAE), written by Berndt Schmitt. The home page is here : +http://www.freiburg.linux.de/~uae/ + +The .ADF files can be created with the program *transdisk*. + +------------------------------------------------------------------------ + + + 1.4 Acknowledgements + +I would to thank here again the people who take time to send me +corrections, suggestions and opinions about this document : + + * Hans-Joachim Widmaier for the -very detailed- review and suggestions, + * Dan Sutherland (dan@chromerhino.demon.co.uk) for the suggestions + and ideas, + * Jorg Strohmayer (see Aminet:disk/moni/DiskMonTools.lha, his + DiskMonTools utility) + * Heiko Rath (hr@brewhr.swb.de) for some modifications. + * Jean Yves Peterschmitt (jypeter@lmce.saclay.cea.fr) for the review, + * Thomas Kessler (tkessler@ra.abo.fi) for the bootcode flag note. + + + 2. How are bytes physically read from / written to a disk ? + +The following part deals with the way the Amiga disk controller accesses +the magnetic medium. If you only want to understand the .ADF format, you +don't need to read this part. + +Information is written on disk with magnetic fields. Magnetic fields can +be made 'on' or 'off'. But the read/write heads are not capable of +detecting directly if a field is on or off. An encoding is used to store +memory bits on the medium. The CHANGE of fields polarisation will +indicate if the bit is 1 or 0. For Amiga floppy disks (and PC floppies), +the encoding scheme is MFM (Modified frequency modulation). + + + Notes on the Amiga floppy disk controller : + +The Amiga floppy disk controller (FDC) which is called 'Paula' is very +flexible. It is capable of reading/writting +Amiga/PC/Macintosh/AppleII/C64 3.5 inches and 5.25 inches floppy disks. + +Paula can read a variable number of bytes from disk, the PC FDC can't. +The PC FDC uses the index hole to find the beginning of a track, Paula +uses a synchronization word. The Macintosh uses GCR encoding instead of MFM. +In fact, Paula is simpler than the PC FDC because it does not perform +automatically the decoding just after the read operation, and the +encoding just before the write operation : it must be done by software. +The MFM decoding/encoding is done by hardware with the PC FDC, the Amiga +can do GCR or MFM decoding/encoding because it's done with the CPU. In +some versions of the AmigaDOS, the decoding/encoding is made by the +Blitter custom chip. + +Classic PC FDCs *can't read Amiga floppy disks* even if they are MFM +encoded on a 3.5 inch floppy, because they can not find the beginning of +a track. This is why the .ADF format has been created. + +However, a custom FDC available on PC machines is capable of +reading/writing Amiga, PC, Macintosh, Atari and C64 floppies !!! This is +CatWeasel : link + +Paula parametrization for Amiga disks : + + * MFM encoding + * Precompensation time : 0 nanoseconds + * Controller clock rate : 2 microseconds per bit cell + * Synchronization value : 0x4489 + +Paula is able to put the read/write heads on a cylinder, and is able to +read with the lower or upper side head. A track of 0x1900 words is +usually read. + +------------------------------------------------------------------------ + + + 2.1 What is MFM encoding/decoding ? + +The MFM decoding is made by the Amiga CPU, not by Paula. This allows +custom encoding, to protect floppies against copying for example. + +Here follows the MFM encoding scheme : + + user's data bit MFM coded bits + --------------- -------------- + 1 01 + 0 10 if following a 0 data bit + 0 00 if following a 1 data bit + +User data long words are split in two parts, a part with even bits part +first, followed by a part with odd bits. Once encoded, the amount of +data stored doubles. +The MFM decoding will transform magnetic fields into computer usuable bits. + +The encoding process will take one long (user's data), and produces two +longs (MFM coded longs): one for the even bits of the user long, a +second for the odd bits of the user long. +Vice versa, the decoding process will take the half of two MFM longs to +produce one user's long. + +------------------------------------------------------------------------ + + + 2.2 What is the MFM track format ? + +Paula will search two synchronization words, and then read 0x1900 words +of data. We will call those 0x1900 words a 'MFM track'. +There are 80 cylinders on a Amiga floppy disk. Each cylinder has 2 MFM +tracks, 1 on each side of the disk. + +Double density (DD) disks have 11 sectors per MFM track, High density +(HD) disks have 22 sectors. + +So a MFM track consists of 11/22 MFM encoded sectors, plus +inter-track-gap. Note that sectors are not written from #0 to #10/21, +you must use the 'info' field to restore the correct order when you read +the tracks. Each MFM track begins with the first sector, and ends with +the end of the last sector. +Each sector starts with 2 synchronization words. The synchronization +value is 0x4489. + +------------------------------------------------------------------------ + + + 2.3 What is the MFM sector format ? + +From RKRM: "Per-track Organization: Nulls written as a gap, then 11 or +22 sectors of data. No gaps written between sectors." There are brut +data and encoded data. +Brut data (also called MFM data) doesn't need to be decoded, this is the +synchronization data, the header checksum and data checksum. + +The encoded parts are 'header' and 'data'. + +Here it comes : + +00/0x00 word 2 MFM value 0xAAAA AAAA (when decoded : two bytes of 00 data) + + SYNCHRONIZATION +04/0x04 word 1 MFM value 0x4489 (encoded version of the 0xA1 byte) +06/0x06 word 1 MFM value 0x4489 + + HEADER +08/0x08 long 1 info (even bits) +12/0x0c long 1 info (odd bits) + decoded long is : 0xFF TT SS SG + 0xFF = Amiga v1.0 format + TT = track number ( 3 means cylinder 1, head 1) + SS = sector number ( 0 upto 10/21 ) + sectors are not ordered !!! + SG = sectors until end of writing (including + current one) + + Example for cylinder 0, head 1 of a DD disk : + 0xff010009 + 0xff010108 + 0xff010207 + 0xff010306 + 0xff010405 + 0xff010504 + 0xff010603 + 0xff010702 + 0xff010801 + 0xff01090b + 0xff010a0a + the order of the track written was sector 9, sector 10, + sector 0, sector 1 ... + + (see also the note below from RKRM) + + Sector Label Area : OS recovery info, reserved for future use + +16/0x10 long 4 sector label (even) +32/0x20 long 4 sector label (odd) + decoded value is always 0 + + This is operating system dependent data and relates to how AmigaDOS + assigns sectors to files. + + Only available to 'trackdisk.device', but not with any other floppy + or hard disk device. + + END OF HEADER + +48/0x30 long 1 header checksum (even) +52/0x34 long 1 header checksum (odd) + (computed on mfm longs, + longs between offsets 8 and 44 + == 2*(1+4) longs) + +56/0x38 long 1 data checksum (even) +60/0x3c long 1 data checksum (odd) + (from 64 to 1088 == 2*512 longs) + + DATA +64/0x40 long 512 coded data (even) +576/0x240 long 512 coded data (odd) +1088/0x440 + END OF DATA + +Note from RKRM : + +The track number and sector number are constant for each particular +sector. However, the sector offset byte changes each time we rewrite +the track. + +The Amiga does a full track read starting at a random position on the +track and going for slightly more than a full track read to assure +that all data gets into the buffer. The data buffer is examined to +determine where the first sector of data begins as compared to the +start of the buffer. The track data is block moved to the beginning +of the buffer so as to align some sector with the first location in +the buffer. + +Because we start reading at a random spot, the read data may be +divided into three chunks: a series of sectors, the track gap, and +another series of sectors. The sector offset value tells the disk +software how many more sectors remain before the gap. From this the +software can figure out the buffer memory location of the last byte +of legal data in the buffer. It can then search past the gap for the +next sync byte and, having found it, can block move the rest of the +disk data so that all 11 sectors of data are contiguous. + + Example: + + The first-ever write of the track from a buffer looks + like this: + + |sector0|sector1|sector2|......|sector10| + + sector offset values: + + 11 10 9 ..... 1 + + (If I find this one at the start of my read buffer, then I + know there are this many more sectors with no intervening + gaps before I hit a gap). Here is a sample read of this + track: + + |sector9|sector10||sector0|...|sector8| + + value of 'sectors till end of write': + + 2 1 .... 11 ... 3 + + result of track re-aligning: + + |sector9|sector10|sector0|...|sector8| + + new sectors till end of write: + + 11 10 9 ... 1 + + so that when the track is rewritten, the sector offsets + are adjusted to match the way the data was written. + +------------------------------------------------------------------------ + + + 2.4 How to decode MFM data ? + +C algorithm : + + +#define MASK 0x55555555 /* 01010101 ... 01010101 */ +unsigned long *p1; /* MFM coded data buffer (size == 2*data_size) */ +unsigned long *q; /* decoded data buffer (size == data_size) */ +unsigned long a,b; +unsigned long chksum; +int data_size; /* size in long, 1 for header's info, 4 for header's sector label */ +int count; + +chksum=0L; +/* the decoding is made here long by long : with data_size/4 iterations */ +for (count=0; countBootblocks * BSIZE) - 12 +------------------------------------------------------------------------------- + +The DiskType flag informs of the disk format. + + * OFS = Old/Original File System, the first one. (AmigaDOS 1.2) + * FFS = Fast File System (AmigaDOS 2.04) + * INTL = International characters Mode (see section 5.4 <#p54>). + * DIRC = stands for Directory Cache Mode. This mode speeds up + directory listing, but uses more disk space (see section 4.7 <#p47>). + +The Old filesystem may have the international and dircache mode enabled. +If the international mode is enabled, the bit #1 is set. If the dircache +is enabled, its flag is set (bit #2), *and the international mode is +also enabled, but the related flag (bit #1) will stay cleared*. The +correct values for flag are therefore : 0 (OFS), 1 (FFS), 2 (OFS/INTL), +3 (FFS/INTL), 4 (OFS/DIRC&INTL), 5 (FFS/DIRC&INTL). + +There are few differences between the two file systems : + + * OFS Datablock stores BSIZE-24 bytes (i.e. normally 488 bytes at + most frequently used BSIZE of 512 bytes), FFS stores BSIZE bytes. + * FFS supports directory caching, links and international mode, + * the FFS is faster than OFS. + +If the Bootblock starts with the three characters 'PFS', another +filesystem is used in place of AmigaDOS : the Professional File System. + +If the checksum and the DiskType are correct, the system will execute +the bootblock code, at boot time, of course :-). + +The Bootblock code is optional, see 5.2 <#p52> section. + +The Bootblock checksum algorithm follows : + +* in 68000 assembler : + + lea bootbuffer,a0 + move.l a0,a1 + clr.l 4(a1) ;clear the checksum + move.w #(BOOTBLOCKSIZE/4)-1,d1 ;for floppy disks = 1024 + ;for hd = (DosEnvVec->Bootblocks * BSIZE) + moveq #0,d0 +lpchk: add.l (a0)+,d0 ;accumulation + bcc.s jump ;if carry set, add 1 to checksum + add.l #1,d0 +jump: dbf d1,lpchk ;next long word + + not.l d0 + move.l d0,4(a1) ;new checksum + + +* in C (version 1): + +#include +#define Short(p) ((p)[0]<<8 | (p)[1]) +#define Long(p) (Short(p)<<16 | Short(p+2)) + +unsigned long newsum,d; +unsigned char buf[BOOTBLOCKSIZE]; /* contains bootblock */ + /* for floppy disks = 1024, */ + /* for hard disks = (DosEnvVec->Bootblocks * BSIZE) */ +int i; + +memset(buf+4,0,4); /* clear old checksum */ +newsum=0L; +for(i=0; i.? and accented like âè are allowed. + +The date fields in the root block (and other blocks) are structured in +the form of DAYS, MINS and TICKS. The DAYS field contains the number of +days since January 1. 1978. MINS is the number of minutes that have +passed since midnight and TICKS are expressed in 1/50s of a second. A +day value of zero is considered illegal by most programs. + +The r_date / r_min / r_ticks fields are updated to the last recent +change of the root directory of this volume. + +The v_date / v_min / v_ticks fields are updated whenever any change was +made to this volume, not just the root directory. + +The c_date / c_min / c_ticks fields contain the date and time when this +volume was initialized (i.e. formatted) and is not changed during its +lifetime. + +Some date constraints : 0 <= Mins < 60*24, 0 <= Ticks < 50*60 + +The Amiga filesystem does not have an inherent year 2000 problem. If you +want to know more about Y2K and the Amiga, you might take a look at : +http://www.amiga.com . + + + 4.2.1 How to find the first sector of a directory entry ? + +Given the name of a file/directory/link you first have to compute its +hash value with this algorithm : + +* The hash function : + +#include + +int HashName(unsigned char *name) +{ +unsigned long hash, l; /* sizeof(int)>=2 */ +int i; + +l=hash=strlen(name); +for(i=0; i + +The *toupper()* function is the one thing that distinguishes +international from non-international filesystems. There was a bug in old +AmigaDOS versions for this function applied to international caracters +(ASCII codes > 128). A specific toupper() function (see section 5.4 +<#p54>) was then created available with the 'international mode'. + +The hash value is then used to access HashTable ('ht' field in +Rootblock/Directory block). + +HashTable[ HashValue ] contains the number of the first block of your +object (File header block, Directory block or Link block). + +But different names can result in the same HashValue. If more then one +name has the same HashValue, the other blocks (for files and directory +only) are stored in a chained list. This linked list starts at the +'next_hash' field of the File header or Directory block. + +For example : 'file_1a', 'file_24' and 'file_5u' have the same hash value. + +Here follows the method to find the requested block : + +HashValue = HashName( name ); +name=uppercase(name); +nsector = Hashtable[ HashValue ]; +if (nsector != 0) { + sector=Load(nsector); /* reads the 'nsector' sector */ + sector.name = uppercase(sector.name); + /* + * follows the 'same HashValue' chained list if needed + */ + while ( sector.name != name and sector.Next_hash != 0) { + sector = Load(nsector); + sector.name = uppercase(sector.name); + } + if (sector.name != name) + puts("File/Dir not found"); +} +else + puts("File/Dir not found"); + + +// this code only works with non international mode disks +// see section 5.4 <#p54> + +Figure : HashTable and Directory content + +Filenames characters can be lowercase and uppercase, but as shown in the +Hash function, are not case sensitive. + +If, for a new entry, the value at hashTable[hashvalue] is different than +0, the new sector pointer will be stored in the last entry of the +same-hashvalue-linked-list. It is necessary to check if the entry name +already exists in this directory. In one word, in the same-hashValue +list, the addition is made at the tail, not the head. +Jorg tells the list is instead sorted by block number. + + + 4.2.2 How to list all the directory entries ? + +Look through the whole HashTable and follow the same 'HashValue' linked +lists if they exist. + + + 4.2.3 How to compute the checksum ? + +#define Short(p) ((p)[0]<<8 | (p)[1]) +#define Long(p) (Short(p)<<16 | Short(p+2)) + +unsigned long newsum; +unsigned char buf[BSIZE]; /* contains rootblock */ +int i; + +memset(buf+20,0,4); /* clear old checksum */ +newsum=0L; +for(i=0; i<(BSIZE/4); i++) + newsum+=Long(buf+i*4); +newsum=-newsum; /* negation */ + +This checksum algorithm works for most block types except for Bootblock. + +The bitmap table ('bm_pages[]') stores one or several pointers to Bitmap +blocks. The first pointer is at index 0. + +------------------------------------------------------------------------ + + + 4.3 How are the free and used block lists managed? + +Bitmap blocks contain information about free and allocated blocks. One +bit is used per block. If the bit is set, the block is free, a cleared +bit means an allocated block. + +Bootblock allocation (2 for floppy, for hard disks the value can be +found at DOSEnvVec->Bootblocks) is not stored in bitmap. Bitmap consists +of longs, each describing the status of 32 blocks, where bit 0 +corresponds to the lowest block number. + +* Bitmap block (BSIZE bytes), often at rootblock+1 +------------------------------------------------------------------------------- +0/0x00 long 1 checksum normal algorithm +4/0x04 long (BSIZE/4)-1 map +------------------------------------------------------------------------------- + +Here follows for a DD disk the relationship between bitmap and block +number : + +block # long # bit # +------------------------------- +2 0 0 +3 0 1 +4 0 2 +... +33 0 31 +34 1 0 +35 1 1 +... +880 27 14 +881 27 15 +... +1759 54 28 +1760 54 29 + +This map is 1758 bits long (1760-2) and is stored on 54 full filled long +and the first 30th bits of the 55th long. + +* What is the 'bm_ext' field in Rootblock ? + +If 25 bitmap blocks (which pointers are stored in the Rootblock) are not +sufficient (for Hard Disks > ca. 50 Mbyte), the pointers to the further +bitmap blocks are stored in so called bitmap extension blocks. The form +a (surprise, surprise!) linked list, starting at the bm_ext field in the +Rootblock. + +* Bitmap extension block (BSIZE bytes) (Hard disk only) +------------------------------------------------------------------------------- + 0/0x00 ulong (BSIZE/4)-1 bitmap block pointers +BSIZE- 4/0x04 ulong 1 next (0 for last) +------------------------------------------------------------------------------- + +The Bitmap extension linked list start at Rootblock with the 'bm_ext'. + +------------------------------------------------------------------------ + + + 4.4 How are files stored ? + +Files are comprised of a file header block, which contains information +about the file (size, last access time, data block pointers, ...) and +the data blocks, which contain the actual data. The file header block +contains up to BSIZE/4-56 data block pointers (which amounts to 72 with +the usual 512 byte blocks). + +If a file is larger than that, file extension blocks will be allocated +to hold the data block pointers. + +File extension blocks are organised in a linked list, which starts in +File header block ('extension' field). + +Figure : Chained lists of the blocks which store files + +* File header block (BSIZE bytes) +------------------------------------------------------------------------------------------------ + 0/ 0x00 ulong 1 type block primary type T_HEADER (==2) + 4/ 0x04 ulong 1 header_key self pointer (to this block) + 8/ 0x08 ulong 1 high_seq number of data block ptr stored here + 12/ 0x0c ulong 1 data_size unused (==0) + 16/ 0x10 ulong 1 first_data first data block ptr + 20/ 0x14 ulong 1 chksum same algorithm as rootblock + 24/ 0x18 ulong * data_blocks[] data blk ptr (first at BSIZE-204 ) + * = (BSIZE/4) - 56 +BSIZE-200/-0xc8 ulong 1 UNUSED == 0 +BSIZE-196/-0xc4 ushort 1 UID UserID +BSIZE-194/-0xc4 ushort 1 GID GroupID +BSIZE-192/-0xc0 ulong 1 protect protection flags (set to 0 by default) + + Bit If set, means + + If MultiUser FileSystem : Owner + 0 delete forbidden (D) + 1 not executable (E) + 2 not writable (W) + 3 not readable (R) + + 4 is archived (A) + 5 pure (reetrant safe), can be made resident (P) + 6 file is a script (Arexx or Shell) (S) + 7 Hold bit. if H+P (and R+E) are set the file + can be made resident on first load (OS 2.x and 3.0) + + 8 Group (D) : is delete protected + 9 Group (E) : is executable + 10 Group (W) : is writable + 11 Group (R) : is readable + + 12 Other (D) : is delete protected + 13 Other (E) : is executable + 14 Other (W) : is writable + 15 Other (R) : is readable + 30-16 reserved + 31 SUID, MultiUserFS Only + +BSIZE-188/-0xbc ulong 1 byte_size file size in bytes +BSIZE-184/-0xb8 char 1 comm_len file comment length +BSIZE-183/-0xb7 char 79 comment[] comment (max. 79 chars permitted) +BSIZE-104/-0x69 char 12 UNUSED set to 0 +BSIZE- 92/-0x5c ulong 1 days last change date (days since 1 jan 78) +BSIZE- 88/-0x58 ulong 1 mins last change time +BSIZE- 84/-0x54 ulong 1 ticks in 1/50s of a seconds +BSIZE- 80/-0x50 char 1 name_len filename length +BSIZE- 79/-0x4f char 30 filename[] filename (max. 30 chars permitted) +BSIZE- 49/-0x31 char 1 UNUSED set to 0 +BSIZE- 48/-0x30 ulong 1 UNUSED set to 0 +BSIZE- 44/-0x2a ulong 1 real_entry FFS : unused (== 0) +BSIZE- 40/-0x28 ulong 1 next_link FFS : hardlinks chained list (first=newest) +BSIZE- 36/-0x24 ulong 5 UNUSED set to 0 +BSIZE- 16/-0x10 ulong 1 hash_chain next entry ptr with same hash +BSIZE- 12/-0x0c ulong 1 parent parent directory +BSIZE- 8/-0x08 ulong 1 extension pointer to 1st file extension block +BSIZE- 4/-0x04 ulong 1 sec_type secondary type : ST_FILE (== -3) +------------------------------------------------------------------------------------------------ + +As with volume names ':' and '/' are forbidden in file names. + +The number of blocks used to store a file depends on the filesystem +used, OFS or FFS. If one file has 7 datablocks, the first is at +datablock[71-0], the last at datablocks[71-6], and highseq equals to 7. + +For the OFS there are two ways of reading the contents of a file. First +by traversing the linked list of data blocks that is pointed to in +first_data (offset 16) and then following the pointers in each file data +block. The other way of accessing the file data is by using the +data_blocks[] table and going backwards through the data blocks listed +there and then the File extension blocks. + +As the FFS doesn't contain extra information in the data blocks (no +pointer list, no checksum) the only way of accessing the file contents +is by going through the data_blocks[] table and the File extension blocks. + +An empty file consists of just a File header block, with 'byte_size' +equal to 0, and no Data block pointers in 'data_blocks[]'. + +* File extension block (BSIZE bytes) (first pointer in File header) +------------------------------------------------------------------------------------------------ + 0/ 0x00 ulong 1 type primary type : T_LIST (== 16) + 4/ 0x04 ulong 1 header_key self pointer + 8/ 0x08 ulong 1 high_seq number of data blk ptr stored + 12/ 0x0c ulong 1 UNUSED unused (== 0) + 16/ 0x10 ulong 1 UNUSED unused (== 0) + 20/ 0x14 ulong 1 chksum rootblock algorithm + 24/ 0x18 ulong * data_blocks[] data blk ptr (first at BSIZE-204) + * = (BSIZE/4) - 56 +BSIZE-200/-0xc8 ulong 46 info unused (== 0) +BSIZE- 16/-0x10 ulong 1 UNUSED unused (== 0) +BSIZE- 12/-0x0c ulong 1 parent file header block +BSIZE- 8/-0x08 ulong 1 extension next file header extension block, + 0 for the last +BSIZE- 4/-0x04 ulong 1 sec_type secondary type : ST_FILE (== -3) +------------------------------------------------------------------------------------------------ + +* Data blocks (BSIZE bytes) (first pointer in File header 'first_data' +and 'data_blocks[((BSIZE/4)-57)]') + +Old File System data block (BSIZE bytes) +------------------------------------------------------------------------------- +0/0 ulong 1 type primary type : T_DATA (== 8) +4/4 ulong 1 header_key pointer to file header block +8/8 ulong 1 seq_num file data block number (first is #1) +12/c ulong 1 data_size data size <= (BSIZE-24) +16/10 ulong 1 next_data next data block ptr (0 for last) +20/14 ulong 1 chksum rootblock algorithm +24/18 UCHAR * data[] file data size <= (BSIZE-24) +------------------------------------------------------------------------------- + +In OFS, there is a second way to read a file : using the Data block +chained list. The list starts in File header ('first_data') and goes on +with 'next_data' in each Data block. + +Fast File System (BSIZE bytes) +------------------------------------------------------------------------------- +0/0 UCHAR BSIZE data[] file data +------------------------------------------------------------------------------- + +In FFS, the only way to read or recover a file is to use data_blocks[] +in the file header block and the File extension blocks. If a File header +or File extension block is unreadable, there is no way to find the +corresponding Data blocks. + +The OFS is more robust than FFS, but slower and can store less data on +disk. As you see, disk salvaging is easier with OFS. + +When a file is deleted, only its File header block number is cleared +from the Directory block (or from the same-hash-value list) and the +bitmap is updated. File header block, Data blocks and File extension +blocks are not cleared, but the bitmap blocks are updated. Nevertheless, +the undelete operation is easy, as long as these blocks are not +overwritten. + +------------------------------------------------------------------------ + + + 4.5 How are directories stored? + +Directory blocks are very similar to Rootblock, except they don't need +information about the bitmap and disk, but they allow comments like files. + +* User directory block (BSIZE bytes) +------------------------------------------------------------------------------------------------ + 0/ 0x00 ulong 1 type block primary type = T_HEADER (value 2) + 4/ 0x04 ulong 1 header_key self pointer + 8/ 0x08 ulong 3 UNUSED unused (== 0) + 20/ 0x14 ulong 1 chksum normal checksum algorithm + 24/ 0x18 ulong * ht[] hash table (entry block number) + * = (BSIZE/4) - 56 + for floppy disk: size= 72 longwords +BSIZE-200/-0xc8 ulong 2 UNUSED unused (== 0) +BSIZE-196/-0xc8 ushort 1 UID User ID +BSIZE-194/-0xc8 ulong 1 GID Group ID +BSIZE-192/-0xc0 ulong 1 protect protection flags (set to 0 by default) + + Bit If set, means + + If MultiUser FileSystem : Owner + 0 delete forbidden (D) + 1 not executable (E) + 2 not writable (W) + 3 not readable (R) + + 4 is archived (A) + 5 pure (reetrant safe), can be made resident (P) + 6 file is a script (Arexx or Shell) (S) + 7 Hold bit. if H+P (and R+E) are set the file + can be made resident on first load (OS 2.x and 3.0) + + 8 Group (D) : is delete protected + 9 Group (E) : is executable + 10 Group (W) : is writable + 11 Group (R) : is readable + + 12 Other (D) : is delete protected + 13 Other (E) : is executable + 14 Other (W) : is writable + 15 Other (R) : is readable + 30-16 reserved + 31 SUID, MultiUserFS Only + +BSIZE-188/-0xbc ulong 1 UNUSED unused (== 0) +BSIZE-184/-0xb8 char 1 comm_len directory comment length +BSIZE-183/-0xb7 char 79 comment[] comment (max. 79 chars permitted) +BSIZE-104/-0x69 char 12 UNUSED set to 0 +BSIZE- 92/-0x5c ulong 1 days last access date (days since 1 jan 78) +BSIZE- 88/-0x58 ulong 1 mins last access time +BSIZE- 84/-0x54 ulong 1 ticks in 1/50s of a seconds +BSIZE- 80/-0x50 char 1 name_len directory name length +BSIZE- 79/-0x4f char 30 dirname[] directory (max. 30 chars permitted) +BSIZE- 49/-0x31 char 1 UNUSED set to 0 +BSIZE- 48/-0x30 ulong 2 UNUSED set to 0 +BSIZE- 40/-0x28 ulong 1 next_link FFS : hardlinks chained list (first=newest) +BSIZE- 36/-0x24 ulong 5 UNUSED set to 0 +BSIZE- 16/-0x10 ulong 1 hash_chain next entry ptr with same hash +BSIZE- 12/-0x0c ulong 1 parent parent directory +BSIZE- 8/-0x08 ulong 1 extension FFS : first directory cache block +BSIZE- 4/-0x04 ulong 1 sec_type secondary type : ST_USERDIR (== 2) +------------------------------------------------------------------------------------------------ + +You can obtain a directory listing exactly like with the root directory. + +------------------------------------------------------------------------ + + + 4.6 How are links implemented in AmigaDOS ? + +With the FFS, links were introduced. Alas, Commodore blundered again: +soft like where terribly broken, so they removed support for them in +AmigaDOS 3.0. Hard links are seen as files, and hard links to +directories are allowed, which opens the way to endless recursion... +In short, the whole implmentation is a mess. +However, some shells (like Csh 5.37) support them, so I'm supplying the +structure. + + + 4.6.1 Hard links + +* Hard link (BSIZE bytes) +------------------------------------------------------------------------------------------------ + 0/ 0x00 ulong 1 type block primary type = T_HEADER (value 2) + 4/ 0x04 ulong 1 header_key self pointer + 8/ 0x08 ulong 3 UNUSED unused (== 0) + 20/ 0x14 ulong 1 chksum normal checksum algorithm + 24/ 0x18 ulong * UNUSED set to 0 + * = (BSIZE/4) - 54 + for floppy disk: size= 74 longwords +BSIZE-192/-0xc0 ulong 1 protect protection flags (set to 0 by default) + + Bit If set, means + + If MultiUser FileSystem : Owner + 0 delete forbidden (D) + 1 not executable (E) + 2 not writable (W) + 3 not readable (R) + + 4 is archived (A) + 5 pure (reetrant safe), can be made resident (P) + 6 file is a script (Arexx or Shell) (S) + 7 Hold bit. if H+P (and R+E) are set the file + can be made resident on first load (OS 2.x and 3.0) + + 8 Group (D) : is delete protected + 9 Group (E) : is executable + 10 Group (W) : is writable + 11 Group (R) : is readable + + 12 Other (D) : is delete protected + 13 Other (E) : is executable + 14 Other (W) : is writable + 15 Other (R) : is readable + 30-16 reserved + 31 SUID, MultiUserFS Only + +BSIZE-188/-0xbc ulong 1 UNUSED unused (== 0) +BSIZE-184/-0xb8 char 1 comm_len comment length +BSIZE-183/-0xb7 char 79 comment[] comment (max. 79 chars permitted) +BSIZE-104/-0x69 char 12 UNUSED set to 0 +BSIZE- 92/-0x5c ulong 1 days last access date (days since 1 jan 78) +BSIZE- 88/-0x58 ulong 1 mins last access time +BSIZE- 84/-0x54 ulong 1 ticks in 1/50s of a seconds +BSIZE- 80/-0x50 char 1 name_len hard link name length +BSIZE- 79/-0x4f char 30 hlname[] hardlink name (max. 30 chars permitted) +BSIZE- 49/-0x31 char 1 UNUSED set to 0 +BSIZE- 48/-0x30 ulong 1 UNUSED set to 0 +BSIZE- 44/-0x2c ulong 1 real_entry FFS : pointer to "real" file or directory +BSIZE- 40/-0x28 ulong 1 next_link FFS : hardlinks chained list (first=newest) +BSIZE- 36/-0x24 ulong 5 UNUSED set to 0 +BSIZE- 16/-0x10 ulong 1 hash_chain next entry ptr with same hash +BSIZE- 12/-0x0c ulong 1 parent parent directory +BSIZE- 8/-0x08 ulong 1 UNUSED set to 0 +BSIZE- 4/-0x04 ulong 1 sec_type secondary type : ST_LINKFILE = -4 + ST_LINKDIR = 4 +------------------------------------------------------------------------------------------------ + +A 'real' entry is a file or directory entry, opposed to link entries. + +A hard link can only be created to the same disk as the real entry disk. +Several links can be made on the same real entry. These are in just +another linked list. +'real entry' always contains the real entry block pointer. +'next_link' stores the links linked list. + +New entries are added at the head: + +>ls + ------rw-d 1912 15-May-96 22:28:08 real + +Chained list state : + +block# real next name +---------------------------- +484 0 0 real + + +>ln real link1 +>ls + ------rw-d 1912 15-May-96 22:28:08 real + -H----rw-d 1912 15-May-96 22:28:10 link1 -> Empty:real + +block# real next name +---------------------------- +484 0 104 real +104 484 0 link1 + + +>ln link1 link2 +>ls + ------rw-d 1912 15-May-96 22:28:08 real + -H----rw-d 1912 15-May-96 22:28:10 link1 -> Empty:real + -H----rw-d 1912 15-May-96 22:28:12 link2 -> Empty:real + +block# real next name +---------------------------- +484 0 107 real +104 484 0 link1 +107 484 104 link2 + +The links are stored 'newest first', due to the adding at head. + +real -> newest link -> ... -> oldest link -> 0 + +-> means "points to" + + + 4.6.2 Soft links + +* Soft link (BSIZE bytes) +------------------------------------------------------------------------------------------------ + 0/ 0x00 ulong 1 type block primary type = T_HEADER (value 2) + 4/ 0x04 ulong 1 header_key self pointer + 8/ 0x08 ulong 3 UNUSED unused (== 0) + 20/ 0x14 ulong 1 chksum normal checksum algorithm + 24/ 0x18 ulong * symbolic_name path name to referenced object, Cstring + * = ((BSIZE - 224) - 1) + for floppy disk: size= 288 - 1 chars +BSIZE-200/-0xc8 ulong 2 UNUSED unused (== 0) +BSIZE-192/-0xc0 ulong 1 protect protection flags (set to 0 by default) + + Bit If set, means + + If MultiUser FileSystem : Owner + 0 delete forbidden (D) + 1 not executable (E) + 2 not writable (W) + 3 not readable (R) + + 4 is archived (A) + 5 pure (reetrant safe), can be made resident (P) + 6 file is a script (Arexx or Shell) (S) + 7 Hold bit. if H+P (and R+E) are set the file + can be made resident on first load (OS 2.x and 3.0) + + 8 Group (D) : is delete protected + 9 Group (E) : is executable + 10 Group (W) : is writable + 11 Group (R) : is readable + + 12 Other (D) : is delete protected + 13 Other (E) : is executable + 14 Other (W) : is writable + 15 Other (R) : is readable + 30-16 reserved + 31 SUID, MultiUserFS Only + +BSIZE-188/-0xbc ulong 1 UNUSED unused (== 0) +BSIZE-184/-0xb8 char 1 comm_len comment length +BSIZE-183/-0xb7 char 79 comment[] comment (max. 79 chars permitted) +BSIZE-104/-0x69 char 12 UNUSED set to 0 +BSIZE- 92/-0x5c ulong 1 days last access date (days since 1 jan 78) +BSIZE- 88/-0x58 ulong 1 mins last access time +BSIZE- 84/-0x54 ulong 1 ticks in 1/50s of a seconds +BSIZE- 80/-0x50 char 1 name_len soft link name length +BSIZE- 79/-0x4f char 30 slname[] softlink name (max. 30 chars permitted) +BSIZE- 49/-0x31 char 1 UNUSED set to 0 +BSIZE- 48/-0x30 ulong 8 UNUSED set to 0 +BSIZE- 16/-0x10 ulong 1 hash_chain next entry ptr with same hash +BSIZE- 12/-0x0c ulong 1 parent parent directory +BSIZE- 8/-0x08 ulong 1 UNUSED set to 0 +BSIZE- 4/-0x04 ulong 1 sec_type secondary type : ST_SOFTLINK = 3 +------------------------------------------------------------------------------------------------ + +------------------------------------------------------------------------ + + + 4.7 How are the blocks associated with the directory cache mode ? + +To speed up directory listing, Directory cache blocks have been created. +Directory cache blocks are also organised in chained lists. +The list starts at the directory block (root or normal directory) with +the 'extension' field. + +* Directory cache block (BSIZE bytes) +------------------------------------------------------------------------------- +0/0 ulong 1 type DIRCACHE == 33 (0x21) +4/4 ulong 1 header_key self pointer +8/8 ulong 1 parent parent directory +12/c ulong 1 records_nb directory entry records in this block +16/10 ulong 1 next_dirc dir cache chained list +20/14 ulong 1 chksum normal checksum +24/18 UCHAR * records[] entries list (size = BSIZE-24) +------------------------------------------------------------------------------- + +The directory entries are stored this way : + +* Directory cache block entry record (26 <= size (in bytes) <= 77) +------------------------------------------------------------------------------- +0 ulong 1 header entry block pointer + (the link block for a link) +4 ulong 1 size file size (0 for a directory or a link) +8 ulong 1 protect protection flags (0 for a link ?) + (see file header or directory blocks) +12 ushort 1 UID user ID +14 ushort 1 GID group ID +16 short 1 days date (always filled) +18 short 1 mins time (always filled) +20 short 1 ticks +22 char 1 type secondary type +23 char 1 name_len 1 <= len <= 30 (nl) +24 char ? name name +24+nl char 1 comm_len 0 <= len <= 22 (cl) +25+nl char ? comment comment +25+nl+cl char 1 OPTIONAL padding byte(680x0 longs must be word aligned) +------------------------------------------------------------------------------- + +------------------------------------------------------------------------ + + + 5. How does a blank disk look like ? + +A minimal blank disk has a Bootblock, a Rootblock and a Bitmap block. + + + 5.1 a Minimal blank floppy disk + +* The Bootblock (0 and 1) + +0 char 4 ID 'D''O''S' + flags +4 long 1023 full of zeros + + +* The Rootblock (880) + +0 long 1 type 2 +12/c long 1 ht_size 0x48 +20/14 long 1 checksum computed +312/138 long 1 bm_flag -1 (valid bitmap) +316/13c long 1 bm_pages[0] bitmap sector # +420/1a4 long 1 last access date +424/1a8 long 1 last access time +428/1ac long 1 last access time +432/1b0 char 1 disk_name size +433/1b1 char ? disk_name +472/1d8 long 1 last access date +476/1dc long 1 last access time +480/1e0 long 1 last access time +484/1e4 long 1 creation date +488/1e8 long 1 creation time +492/1ec long 1 creation time +504/1f8 long 1 FFS : first dir cache sector or 0 +508/1fc long 1 sub_type 1 + +Unspecified fields are set to 0. + + +* The Bitmap block (here 881) for a DD disk + +0 long 1 checksum +4 long 27 free sectors 0xffffffff +112/70 long 1 root+bitmap 0xffff3fff +116/74 long 27 free sectors 0xffffffff +120/78 long 72 unused !=0 + +------------------------------------------------------------------------ + + + 5.2 A 'Bootable' floppy disk + +* The Bootblock becomes : + +0/0x00 long 1 ID 'D''O''S' + flags +4/0x04 long 1 checksum computed +8/0x08 long 1 rootblock ? 880 +12/0x0c byte 81 bootcode AmigaDOS 3.0 version + + values disassembled + --------------+--------------------- + 43FA003E lea exp(pc),a1 ;Lib name + 7025 moveq #37,d0 ;Lib version + 4EAEFDD8 jsr -552(a6) ;OpenLibrary() + 4A80 tst.l d0 ;error == 0 + 670C beq.b error1 + 2240 move.l d0,a1 ;lib pointer + 08E90006 0022 bset #6,34(a1) ;(*) + 4EAEFE62 jsr -414(a6) ;CloseLibrary() + 43FA0018 error1: lea dos(PC),a1 ;name + 4EAEFFA0 jsr -96(a6) ;FindResident() + 4A80 tst.l d0 + 670A beq.b error2 ;not found + 2040 move.l d0,a0 + 20680016 move.l 22(a0),a0 ;DosInit sub + 7000 moveq #0,d0 + 4E75 rts + 70FF error2: moveq #-1,d0 + 4E75 rts + 646F732E 6C696272 617279 + dos: "dos.library" + 00 ;padding byte + 65787061 6E73696F 6E2E6C69 62726172 79 + exp: "expansion.library" + +93/0x5d byte 931 full of zeros + +(*) from Thomas Kessler (tkessler@ra.abo.fi), may 1997 : +This bit tells the shell (which opens its shell-window when booting the +startup-sequence) not to open window unless needed, so a black screen +stays there during boot instead of an empty shell-windows (it's a os2.x +feature). + +------------------------------------------------------------------------ + + + 5.3 A Directory cache mode floppy disk + +* A directory cache block (here 882) + +0 long 1 type 0x21 +4 long 1 self pointer 882 +8 long 1 cached dir 880 (root) +12/c long 1 entries number 0 +16/10 long 1 next dir cache 0 (last) +20/14 long 1 checksum computed +24 long 122 full of zeros + +------------------------------------------------------------------------ + + + 5.4 International Mode + +The toupper() function in the HashName() function (3.2.1 paragraph) is +replaced by the following function with the aim of better handling +international characters : + +int intl_toupper(int c) +{ + return (c>='a' && c<='z') || (c>=224 && c<=254 && c!=247) ? c - ('a'-'A') : c ; +} + +In the Amiga ASCII table, the international character codes are between +192 and 254. Uppercase caracters are between 192 and 222, the lowercase +versions of them are between 224 and 254. The only exception are the +codes 215 and 247, which are respectively the multiply sign and the +divide sign. + +The Amiga character set is the same as ISO 8859 Latin-1 character set, +often assumed in HTML pages. This character set is described here : +http://www.w3c.org/ + +------------------------------------------------------------------------ + + + 6. The structure of a hard disk + +The following structures are mainly extracted from the +'devices/hardblocks.h' and 'dos/filehandler.h' files delivered in +Commodore developer kits. + +The hard disk specific structures mainly store the drive geometry, the +written partitions sizes and the filesystem bootcode. + +The five kind of blocks are in a reserved area, at the beginning of the +surface. The first of them, Rigid Disk block (RDSK), must be found +within the first 16 blocks of BSIZE lenght. But it can be written inside +the data area, which is dangerous. + + + 6.1 What is the Rigid Disk Block ? + +* Rigid Disk block (256 bytes) must exist within the first 16 blocks +------------------------------------------------------------------------------- +0/0 char 4 id 'RDSK' +4/4 ulong 1 size in longs == 64 +8/8 long 1 checksum classic Rootblock algorithm +12/c ulong 1 hostID SCSI Target ID of host + (== 7 for IDE and ZIP disks) +16/10 ulong 1 block size typically 512 bytes, but can + be other powers of 2 +20/14 ulong 1 flags typically 0x17 + Bit If set means : + 0 No disks exists to be configured + after this one on this controller + 1 No LUNs exists to be configured greater + than this one at this SCSI Target ID + 2 No target IDs exists to be configured + greater than this one on this SCSI bus + 3 Don't bother trying to perform + reselection when talking to this drive + 4 Disk indentification valid + 5 Controller indentification valid + 6 Drive supports SCSI synchronous mode + (can be dangerous if it doesn't) +24/18 ulong 1 Bad blockList block pointer (-1 means last block) +28/1c ulong 1 PartitionList block pointer (-1 means last) +32/20 ulong 1 FileSysHdrList block pointer (-1 means last) +36/24 ulong 1 DriveInit code optional drive-specific init code + DriveInit(lun,rdb,ior) : + "C" stack and d0/a0/a1 +40/28 ulong 6 RESERVED == -1 + + Physical drive caracteristics +64/40 ulong 1 cylinders number of drive cylinder +68/44 ulong 1 sectors sectors per track +72/48 ulong 1 heads number of drive heads +76/4c ulong 1 interleave +80/50 ulong 1 parking zone landing zone cylinders + soon after the last cylinder +84/54 ulong 3 RESERVED == 0 +96/60 ulong 1 WritePreComp starting cyl : write precompensation +100/64 ulong 1 ReducedWrite starting cyl : reduced write current +104/68 ulong 1 StepRate drive step rate +108/6c ulong 5 RESERVED == 0 + + Logical drive caracteristics +128/80 ulong 1 RDB_BlockLo low block of range reserved for hardblk +132/84 ulong 1 RDB_BlockHi high block of range for this hardblocks +136/88 ulong 1 LoCylinder low cylinder of partitionable disk area +140/8c ulong 1 HiCylinder high cylinder of partitionable data area +144/90 ulong 1 CylBlocks number of blocks available per cylinder +148/94 ulong 1 AutoParkSeconds zero for no autopark +152/98 ulong 1 HighRSDKBlock highest block used by RDSK + (not including replacement bad blocks) +156/9c ulong 1 RESERVED == 0 + + Drive identification +160/a0 char 8 DiskVendor ie 'IOMEGA' +168/a8 char 16 DiskProduct ie 'ZIP 100' +184/b8 char 4 DiskRevision ie 'R.41' +188/bc char 8 ControllerVendor +196/c4 char 16 ControllerProduct +212/d4 char 4 ControllerRevision +216/d8 ulong 10 RESERVED == 0 +256/100 +------------------------------------------------------------------------------- + + + * How to find the physical geometry of the disk ? + +A hard disk is made of several physical disks. They have one head for +each writable side. Each physical disk consists of several tracks, which +consist of several sectors. One cylinder is the set of the tracks which +have the same number on each disk. + +The total size of the hard disk is expressed in cylinders ('cylinders'). +The size of a cylinder is : +the number of heads per cylinder ('heads') +x the number of sectors per track ('sectors') +x the size of a block ('block size'). + +The 'CylBlocks' field equals to 'heads' x 'sectors'. + +The reserved area is often the 2 first cylinders, between the +'RDB_BlockLo' block and the 'RDB_BlockHi' block, included. The +partitionable area, starts at the 'LoCylinder' cylinder until the +'HiCylinder' cylinder, included. + +The really last used sector in the reserved area is the sector numbered +'HighRSDKBlock', the first is numbered 0. The SCSI 'hostID' is set to +the id of the SCSI host controller, which is typically 7. Real SCSI +drives ID must be between 0 and 6. + +The RDSK block is the "root" of the reserved area. It also contains the +first blocks of three linked lists : one the bad blocks replacement, one +for the partition definitions and one last for the filesystem information. + +Some geometry examples : + + * a Zip disk : 2891 cylinders, 1 head, 68 sectors, + * my 80Mb Seagate IDE harddisk : 980 cylinders, 10 heads, 17 sectors. + * a 500 Mbyte Fujitsu 2624SA: 1472 cylinders, 11 heads, 63 sectors + * a 50 Mbyte Quantum LPS52: 2085 cylinders, 1 head, 49 sectors + +------------------------------------------------------------------------ + + + 6.2 How are bad blocks managed ? + +* Bad Block block (BSIZE bytes) first in RDSK 'BadBlockList' field +------------------------------------------------------------------------------- +0/0 ulong 1 id 'BADB' +4/4 ulong 1 size in longs == 128 for BSIZE = 512 +8/8 long 1 checksum +12/c ulong 1 HostID == 7 ? +16/10 ulong 1 next next BadBlock block +20/14 ulong 1 RESERVED +24/18 * BlockPairs[] bad block entries table + * size = ((BSIZE/4)-6)/2 + (for BSIZE=512 = 61*8 byte entries) +------------------------------------------------------------------------------- + +* Bad Block entry (8 bytes) stored in BadBlock 'BlockPairs[]' field +------------------------------------------------------------------------------- +0/0 ulong 1 BadBlock block number of bad block +4/4 ulong 1 GoodBlock block number of replacement block +------------------------------------------------------------------------------- + +------------------------------------------------------------------------ + + + 6.3 How are partitions stored? + +* Partition block (256 bytes) first in RDSK 'PartitionList' field +------------------------------------------------------------------------------- +0/0 char 4 ID 'PART' +4/4 ulong 1 size in long of checksummed structure (== 64) +8/8 ulong 1 checksum classic algorithm +12/c ulong 1 hostID SCSI Target ID of host (== 7) +16/10 ulong 1 next block number of the next Partitionblock +20/14 ulong 1 Flags + Bit If set means + 0 This partition is bootable + 1 No automount +24/18 ulong 2 RESERVED +32/20 ulong 1 DevFlags preferred flags for OpenDevice +36/24 char 1 DriveName len length of Drive name (e.g. 3) +37/25 char 31 DriveName e.g. 'DH0' +68/44 ulong 15 RESERVED + + DOS Environment vector (DOSEnvVec) (often defined in MountLists) +128/80 ulong 1 size of vector == 16 (longs), 11 is the minimal value +132/84 ulong 1 SizeBlock size of the blocks in longs == + 128 for BSIZE = 512 +136/88 ulong 1 SecOrg == 0 +140/8c ulong 1 Surfaces number of heads (surfaces) of drive +144/90 ulong 1 sectors/block sectors per block == 1 +148/94 ulong 1 blocks/track blocks per track +152/98 ulong 1 Reserved DOS reserved blocks at start of partition + usually = 2 (minimum 1) +156/9c ulong 1 PreAlloc DOS reserved blocks at end of partition + (no impact on Root block allocation) + normally set to == 0 +160/a0 ulong 1 Interleave == 0 +164/a4 ulong 1 LowCyl first cylinder of a partition (inclusive) +168/a8 ulong 1 HighCyl last cylinder of a partition (inclusive) +172/ac ulong 1 NumBuffer often 30 (used for buffering) +176/b0 ulong 1 BufMemType type of mem to allocate for buffers ==0 +180/b4 ulong 1 MaxTransfer max number of type to transfer at a type + often 0x7fff ffff +184/b8 ulong 1 Mask Address mask to block out certain memory + often 0xffff fffe +188/bc ulong 1 BootPri boot priority for autoboot +192/c0 char 4 DosType 'DOS' and the FFS/OFS flag only + also 'UNI'\0 = AT&T SysV filesystem + 'UNI'\1 = UNIX boot filesystem + 'UNI'\2 = BSD filesystem for SysV + 'resv' = reserved (swap space) +196/c4 ulong 1 Baud Define default baud rate for Commodore's + SER and AUX handlers, originally + used with the A2232 multiserial board +200/c8 ulong 1 Control used by Commodore's AUX handler +204/cc ulong 1 Bootblocks Kickstart 2.0: number of blocks + containing boot code to be + loaded at startup +208/d0 ulong 12 RESERVED +------------------------------------------------------------------------------- + +There exists one 'PART' block per partition. + +The block pointers in the reserved area are relative to the beginning of +the media. The block pointers in a partition are relative to the first +block of the partition. + +The Rootblock of a partition is normally located in the middle of an +AmigaDOS filesystem. Please see 4.2 What is a Rootblock? <#p42> for the +exact calculation of it's location. + +The first two blocks of a partition contain a Bootblock. You have to use +it to determine the correct file system, and if the international or +dircache modes are used. Don't rely only on the PART and FSHD 'DosType' +field. + +------------------------------------------------------------------------ + + + 6.4 What are FSHD blocks ? + +* Filesystem header block (256 bytes) first in RSDK 'FileSysHeaderList' +------------------------------------------------------------------------------- +0/0 char 4 id 'FSHD' +4/4 ulong 1 size in longs == 64 +8/8 long 1 checksum classic algorithm +12/c ulong 1 hostID SCSI Target ID of host (often 7) +16/10 ulong 1 next block number of next FileSysHeaderBlock +20/14 ulong 1 flags +24/18 ulong 2 RESERVED +32/20 char 4 DosType 'DOS' and OFS/FFS DIRCACHE INTL bits +36/24 ulong 1 Version filesystem version 0x0027001b == 39.27 +40/28 ulong 1 PatchFlags bits set for those of the following + that need to be substituted into a + standard device node for this + filesystem : e.g. 0x180 to substitute + SegList and GlobalVec + Device node +44/2c ulong 1 Type device node type == 0 +48/30 ulong 1 Task standard DOS "task" field == 0 +52/34 ulong 1 Lock not used == 0 +56/38 ulong 1 Handler filename to loadseg == 0 +60/3c ulong 1 StackSize stacksize to use when starting task ==0 +64/40 ulong 1 Priority task priority when starting task == 0 +68/44 ulong 1 Startup startup msg == 0 +72/48 ulong 1 SegListBlock first of linked list of LoadSegBlocks : + note that this entry requires some + processing before substitution +76/4c ulong 1 GlobalVec BCPL global vector when starting task =-1 +80/50 ulong 23 RESERVED by PatchFlags +172/ac ulong 21 RESERVED +------------------------------------------------------------------------------- + +This block contains information on how to lauch the task which will +manage the filesystem. You don't need it to reach partitions. +------------------------------------------------------------------------ + + + 6.5 What are LSEG blocks ? + +* LoadSeg block (BSIZE bytes) first in FileSysHeaderBlock 'SegListBlocks' field +------------------------------------------------------------------------------- +0/0 char 4 id 'LSEG' +4/4 long * size in longs size of this checksummed structure + * size = BSIZE/4 +8/8 long 1 checksum classic checksum +12/c long 1 hostID SCSI Target ID of host (often 7) +16/10 long 1 next block number of the next LoadSegBlock + (-1 for the last) +20/14 uchar * LoadData[] code stored like an executable, with + relocation hunks + * size = ((BSIZE/4) - 5) +------------------------------------------------------------------------------- + +This block contains the code of the filesystem. It isn't needed to reach +partitions. +------------------------------------------------------------------------ + + + 7. The Hard file : a big floppy dump file + +A hardfile is a file which contains an Amiga volume. + +It is created with WinUAE (http://www.winuae.net/), and not the Amiga +and the AmigaDOS. WinUAE is able to produce an empty file with random +contents of a choosen size, often several megabytes long. +Under WinUAE, a AmigaDOS device appears, associated with the +uaehf.device (UAE hardfile). You have to format it with the Workbench, +and you obtain an 'hardfile'. This volume is then usable inside the +emulator by AmigaDOS (it should also be mountable under Linux with the +AFFS filesystem). + +For example a 8Mb hardfile could be mounted on a kickstart 1.3 Amiga +with the following mountlist (from uae docs/README) : + +UAE0: Device = uaehf.device + Unit = 0 + Flags = 0 + Surfaces = 1 + BlocksPerTrack = 32 + Reserved = 1 + Interleave = 0 + LowCyl = 0 ; HighCyl = 511 + Buffers = 5 + DosType = 0x444F5300 + BufMemType = 1 + +An hardfile is like a floppy disk dump, but bigger : it has a bootblock, +a rootblock, a bitmap and perhaps dircache blocks. +The first three bytes of a hardfile is then 'D' 'O' 'S'. + +The geometry is : heads = 1, sectors = 32, 'cylinders' depends the +hardfile size. + +------------------------------------------------------------------------ + + + 8. Advanced information + + + Bitmap related + +* Bitmap allocation starts at root block, upto highest block. The next +allocated blocks are located just after boot blocks and finally the last +allocated block is the sector before root block. + +root -> max -> boot+1 -> root-1 + +-> means "followed on disk by" + +If you free some blocks by deleting a file, for example, the first next +used block will be the first free block encountered starting from the +Rootblock. The just freed blocks will be reused. It means that when you +delete a file and you want to recover it, don't write anything else to +the disk. +This strategy must have been chosen to minimize fragmentation. + + + Files related + +* The order in which data and file extension blocks for a given file are +written on disk differs with OFS and FFS. + + * OFS & FFS : All the data blocks of the file header block are + written first. + * FFS : Then follow all the file extension blocks of the file, then + all the remaining data blocks are written. + OFS : Each file extension block is followed by the related data + blocks. So the last extension block is followed by the remaining + data blocks. + + +OFS: +header -> data blocks -> ext. block -> data blocks -> ext. block -> data +blocks + +FFS: +header -> data blocks -> all ext. block -> all remaining data blocks + +-> means "followed on disk by" + +This difference is probably the main reason why FFS is faster then OFS. + +Under FFS, the hash chains are sorted by block number. + + + Comparison chart of the ADF logical blocks + + root dir fileh hlink slink fext data dirc +---------------------------------------------------------------------------------------- + 0/ 0x00 1st_type 2 2 2 2 2 16 8 33 + 4/ 0x04 header_key / x x x x x x x + 8/ 0x08 / / nb_blo / / nb_blo block# PARENT + 12/ 0x0c table_size 72 / / / / / nb_data nb_rec + 16/ 0x10 list / / data#1 / / / next next + 20/ 0x14 chksum x x x x x x x x + 24/ 0x18 table ht ht blocks / / blocks data records + ... +BSIZE-184/-0xb8 comment_len / x x / / / / / +BSIZE-183/-0xb7 comment / x x / / / / / + ... +BSIZE- 92/-0x5c days x x x x x / / / +BSIZE- 88/-0x58 mins x x x x x / / / +BSIZE- 84/-0x54 ticks x x x x x / / / +BSIZE- 80/-0x50 name_len x x x x x / / / +BSIZE- 79/-0x4f name x x x x x / / / + ... +BSIZE- 16/-0x10 hash_chain / x x / / / +BSIZE- 12/-0x0c parent / x x x x fhdr / / +BSIZE- 8/-0x08 extension cache cache fext / / next / / +BSIZE- 4/-0x04 2nd_type 1 2 -3 -4/4 3 -3 / / +---------------------------------------------------------------------------------------- + +type of blocks : + root=rootblock, dir=directory, fileh=file header, fext=file extension, + hlink=hard link, slink=soft link, dirc=directory cache, data=OFS data. + +special values : + /=unused + x=used + next=next block of same type + + + How to rename an entry ? + + 1. Compute the new hashvalue + 2. Move the first sector pointer from the old hashvalue index to the + new one + 3. Change the name in the directory or file header block + +------------------------------------------------------------------------ + + + 9. References and links + +* ASM Sources: + + * Scoopex and Crionics disassembled demo hardloaders + * 'the floppy disk book' copier source file, DATA BECKER books, 1988 + +* On-Line material : + + * Very good 'ded.doc' file including Hard Disk information : + ftp://ftp.funet.fi/pub/amiga/utilities/disk/Ded-1.11.lha + + * A clean track-loader which doesn't use AmigaDOS (by Patrik + Lundquist) : ftp://ftp.wustl.edu/pub/aminet/dev/asm/t-loader.lha + + * A replacement for 'trackdisk.device' : + ftp://ftp.wustl.edu/pub/aminet/disk/misc/hackdisk202.lha + + * 'amigadisk_hardware.doc' (by Dave Edwards, Mark Meany, ... of ACC) + : http://home.sol.no/svjohan/assem/refs/diskHW.lha + + * DiskMonTools, a very good MFM/filesystem disk monitor for the + Amiga : ftp://uk.aminet.net/pub/aminet/disk/moni/DiskMonTools.lha + +* Books : + + * The Amiga Guru Book, Chapter 15, Ralph Babel, 1993 + * Rom Kernel Reference Manual : Hardware, pages 235-244, Addison Wesley + * Rom Kernel Reference Manual : Libraries and Devices, Appendix C, + Addison Wesley + * La Bible de l'Amiga, Dittrich/Gelfand/Schemmel, Data Becker, 1988. + + +The AmigaDOS reference manual probably contains a lot of information +about Amiga file systems, but i don't own it (Addison Wesley). The most +detailed information about AmigaDOS can be found in Ralph Babel's "Amiga +Guru Book". +------------------------------------------------------------------------ + + + 10. C routines : the ADF library + +The ADFlib is a portable C library designed to manage Amiga formatted +devices like harddisks and ZIP disks, or dump files of this kind of +media via the .ADF format. + +The API permits you to : + + * mount/unmount a device (real one or a dump file), + * mount/unmount a volume (partition), + * create/open/close/delete/move/undelete a file, + * read/write bytes from/to a file, + * create/delete/undelete a directory, + * get directory contents, change current directory, get parent + directory. + +A callback system makes it easy to write a real device driver for any +platform. The *ADFOpus* ( http://adfopus.sourceforge.net/) application +(a useful Windows Explorer like for ADF files and devices), written by +Dan Sutherlan is able to access from NT4 an 2.5 inches harddisk +formatted under AmigaDOS. +The *ADFView* Windows Explorer shell extension +(http://www.viksoe.dk/code/adfview.htm) written by Bjarke Viksoe is also +using ADFlib. Hard-disks under W2000 are also supported. + +See the 1.2 section <#p12> to see how to obtain the package. + +------------------------------------------------------------------------ + + + 11. Other Amiga FileSystems + + * An Amiga filesystem for Linux 0.99pl2 by Ray Burr (read only, hard + disk): ftp://tsx-11.mit.edu/pub/linux/patches/amigaffs.tar.Z + + * The AFFS filesystem inside the Linux kernel distribution by + Hans-Joachim "JBHR" Widmaier (RDSK, links and international mode + supported, dircache disks read-only): ftp://ftp.us.kernel.org in + /usr/src/linux/fs/affs/ + Currently maintained by Roman Zippel (zippel@linux-m68k.org) + * An .ADF manipulation package for DOS/Windows, "ADF-suite" (GUI, + Shareware, no sources included): + link broken + + +------------------------------------------------------------------------ +The .ADF format FAQ ends here ! diff --git a/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info_V0_9.txt b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info_V0_9.txt new file mode 100755 index 000000000..7021522f0 --- /dev/null +++ b/cpctelera/tools/hxcfe-1.6.11.16/common/libs/adflib/Faq/adf_info_V0_9.txt @@ -0,0 +1,1134 @@ +From: Laurent.Clevy@meteo.fr +Newsgroups: comp.sys.amiga.programmer, comp.sys.amiga.misc, comp.os.linux.misc +Subject: Amiga floppy disks format (AmigaDos file system - floppies) +Followup-To: poster +Summary: This document describes the AmigaDos File System for floppy disks only. + Physical/Logical formats, OFS/FFS, Directory caching, Links, Checksums. + +Archive-name: amiga/amiga_floppy_format +Last-modified: 28. May 1997 +Version: 0.9 +Copyright: (c) 1997 Laurent Clevy +Maintainer: Laurent Clevy + + + FAQ : The Amiga floppy disks format + Laurent Clevy + + Laurent.Clevy@meteo.fr + 25 avenue Aristide Briand + 28000 Chartres + France + + + +Disclaimer and copyright +------------------------ + +This document is Copyright (C) 1997 by Laurent Clevy, but may be +freely distributed, provided the author name and addresses +are included and no money is charged for this document. + +This document is provided "as is". No warranties are made as to its correctness. + +Amiga, AmigaDos are registred trademarks of Gateway 2000. + + + +Introduction +------------ + +This document purpose is to describe the Amiga floppy disk format. I don't +found any document which explains this format in details. Because I wish +this machine to be supported a long time, including via emulators, I decided +to write this file, and supply C routines as examples. + +Corrections (including about my english) are very welcome. Unfortunately, +I have no permanent e-mail address currently, the only way to touch me is by postmail. + + + +Index +----- + +1. How bytes are physically read/written on disk ? + 1.1 What is MFM ? + 1.2 What is the physical track format ? + 1.3 What is the physical sector format ? + 1.4 How to decode MFM data ? +2. What is the Amiga floppy disk geometry ? +3. How is logically organised a Amiga floppy disk ? + 3.1 What is a Bootblock ? + 3.2 What is a Rootblock ? + 3.2.1 How to find the first sector of a entry ? + 3.2.2 How to list directory entries ? + 3.2.3 How to compute the checksum ? + 3.3 How is managed the free/used blocks list ? + 3.3.1 How to compute bitmap checksum ? + 3.3.2 What is the 'bm_ext' field in Rootblock ? + 3.4 How are stored files on a disk ? + 3.5 How are stored directories ? + 3.6 How are implemented links with AmigaDos ? + 3.6.1 Hard links + 3.6.2 Soft links + 3.7 How is the block associated to directory caching ? +4. What is a blank disk ? + 4.1 a Minimal blank disk + 4.2 A 'Bootable' disk + 4.3 A Directory cache mode disk +5. References +6. C Routines +7. Other Amiga file systems +8. To do + + + +Conventions +----------- + +* In this document, hexadecimal values are written like in C : for example 0x0c +is the decimal value 12. + +As the Amiga is a 680x0 based computer, integers that require more than +one byte are stored on disk in 'Motorola order' : the most significant byte +comes first, then the less significant bytes in descending order of +significance (MSB LSB for two-byte integers, B3 B2 B1 B0 for four-byte +integers). A byte is 8 bits long. The left bit of a byte is the 7th, the right bit +is the 0th. + +A 'word' is a 2 bytes (16 bits) integer, a 'long' a 4 bytes (32 bits) integer. +Values are unsigned unless otherwise noted. + + +* A block pointer is the number of this block on the disk. Disk starts with the #0 block. + + +* Hashing is a method to access tables : given a number or a string, +a hash function gives a index into a table. + + +* Chained lists are cells oriented data structures. Each cell contains a pointer +to the next or previous cell or both, the last pointer is null. + +C example : + +struct lcell { + char name[10]; + /* contains next cell adress, or NULL if this cell is the last */ + struct lcell* next_cell; + }; + + +* Names of blocks begin with a capital (Rootblock). +Name of fields are noted between quotes ('field_name'). + + +* All formats are described as tables, one rows per field. +Here is an example with then well known beginning of GIF format : + +offset type length name comments +---------------------------------------------------------- +0 char 3 signature 'GIF' +3 char 3 version '87a' or '89a' +6 short 1 screen width +8 short 1 screen height + + + +1. How bytes are physically read/written on disk ? +================================================= + + +Most of PC-like floppy disk controllers (FDC) are not able to read Amiga disks, +because Amiga physical floppy disk operations are made by a specific +chip called "Paula". +However, i'm supplying this information because it's hard to find out. + +If you only want to understand the UAE .adf format, you don't need to read this +part. + + +For classical floppy disk operations, Paula is set with the following +parameters : + +- MFM encoding +- Precompensation time : 0 nanosec +- Controller clock rate : 2 microseconds per bit cell +- Sync value = 0x4489 + +The controller is able to put the read/write heads on a cylinder, and is able to read +with the lower or upper side head. A track of 0x1900 words is usually read. + + + +1.1 What is MFM ? +----------------- + +Because bits can't be written with magnetic fields directly on disk, an +encoding scheme is required. Amiga floppy disks are MFM (Modified Frequence +Modulation) encoded. + +The MFM encoding scheme is : + + user's data bit MFM coded bits + --------------- -------------- + 1 01 + 0 10 if following a 0 data bit + 0 00 if following a 1 data bit + +User data longs are splitted in two parts, a part with even bits part first, +followed by a part with odd bits. + + + +1.2 What is the physical track format ? +--------------------------------------- + +Double density (DD) disks have 11 sectors per track, High density (DD) disks +have 22. + +So a track consists of 11/22 MFM encoded sectors, plus inter-track-gap. +Note that sectors are not written from 0 to 10/21, you must use the 'info' +field to recreate orderly track in memory. Each track begins with the first +sector, and ends the end of the last sector (11th with DD disks, 22th with HDs). +Each sector starts with 2 synchronization words. The synchro value is 0x4489. + + +1.3 What is the physical sector format ? +---------------------------------------- + +Here it comes : + +0/0x0 word 2 MFM value 0xAAAA AAAA + + SYNCHRONIZATION +4/0x4 word 1 MFM value 0x4489 +6/0x6 word 1 MFM value 0x4489 + + HEADER +8/0x8 long 1 info (even bits) +12/0xc long 1 info (odd bits) + decoded long is : 0xff TT SS SG + TT = track number ( 3 means cyl 1, head 1) + SS = sector number ( 0 -> 10/21 ) + sectors are not orderly !!! + SG = number of sector before gap (including + current one) + Example for cylinder 0, head 1 of a DD disk : + 0xff010009 + 0xff010108 + 0xff010207 + 0xff010306 + 0xff010405 + 0xff010504 + 0xff010603 + 0xff010702 + 0xff010801 + <-- inter-sector-gap here ! + 0xff01090b (0xb means -1 ?) + 0xff010a0a (0xa means -2 ?) + +16/0x10 long 4 sector label (even) +32/0x20 long 4 sector label (odd) + decoded value seems to be always 0 + END OF HEADER + +48/0x30 long 1 header checksum (even) +52/0x34 long 1 header checksum (odd) + (computed on mfm longs, + longs between offsets 8 and 44 + == 2*(1+4) longs) + +56/0x38 long 1 data checksum (even) +60/0x3c long 1 data checksum (odd) + (from 64 to 1088 == 2*512 longs) + + DATA +64/0x40 long 512 coded data (even) +576/240 long 512 coded data (odd) +1088/440 + END OF DATA + + + +1.4 How to decode MFM data ? +---------------------------- + +the algorithm : + + +#define MASK 0x55555555 /* 01010101 ... 01010101 */ +unsigned long *p1; /* MFM coded data buffer (size == 2*data_size) */ +unsigned long *q; /* decoded data buffer (size == data_size) */ +unsigned long a,b; +unsigned long chksum; +int data_size; /* size in long, 1 for info, 4 for sector label */ + +chksum=0L; +do times { + a = *p1; /* even bits */ + b = *(p1+data_size); /* odd bits */ + chksum^=a; /* eor */ + chksum^=b; + *q = ( b & MASK ) | ( ( a & MASK ) << 1 ); /* MFM decoding */ + p1++; + q++; + } +chksum&=MASK; + + + +2. What is the Amiga floppy disk geometry ? +=========================================== + + +Here follows the disk geometries for DD and HD. + + bytes/sector sector/cyl sides/cyl cyl/disk +------------------------------------------------------------------------ +DD disks 512 11 2 80 +HD disks 512 22 2 80 + + +The relations between sectors, sides and cylinders are for a DD disk : + +Block sector side track +----------------------------- +0 0 0 0 +1 1 0 0 +2 2 0 0 +... +10 10 0 0 +11 0 1 0 +... +21 10 1 0 +22 0 0 1 +.. +1759 10 1 79 + + +A DD disk has 11*2*80=1760 (0 to 1759) blocks, a HD disk has 22*2*80=3520 blocks. + +Of course the file system uses some of them, even for a blank disk. +As the next part deals with, at least 4 blocks are used, for 3 logical +structures : bootblock (2), rootblock (1) and bitmap block (1). + + +The length of .ADF files for a DD disk is then 512*11*2*80 = 901120 bytes. + + + +3. How is logically organised a Amiga floppy disk ? +=================================================== + + +The logical low level object of a Amiga disk is the 'sector' (or 'block') : 512 +consecutive bytes. + +Disk information is distribued in the Bootblocks, the Rootblock and Bitmap +block(s). +FFS has block structures to provide directory list caching and (hard) links : +Directory cache blocks and Link blocks. + +Directory tree is stored with a Directory block for each node. +Directory entries (files, directories and links) are stored with a table, and +are accessed with hashing and chained lists. + +Files are stored with a File header block and Data blocks. File extension +blocks are also used for files stored with more than 72 Data blocks. + + + +3.1 What is a Bootblock ? +------------------------- + +The first object of an Amiga floppy is the Boot block. If the checksum and the +DiskType are correct, the system will execute the bootblock code, at boot +time, of course :-). + +A valid bootblock is written by the AmigaDos command 'install'. + + +* BootBlock (1024 bytes) sectors 0 and 1 +------------------------------------------------------------------------------- +offset size number name meaning +------------------------------------------------------------------------------- +0/0 char 4 DiskType 'D''O''S' + flags (0->5) + flags = set clr + 0 FFS OFS + 1 INT NOINT + 2 DIRC NODIRC +4/4 long 1 Chksum special checksum +8/8 long 1 Rootblock ==880 DD and HD +12/0x0c char 1012 Bootblock code (see 4.2 'Bootable disk' for more information) +------------------------------------------------------------------------------- + +The DiskType flag informs of the disk format. + +OFS = Old/Original File System, the first one. (AmigaDos 1.2) +FFS = Fast File System (AmigaDos 2.04) +INT = International characters Mode (AmigaDos 3.0). +DIRC = stands for Directory Cache Mode (AmigaDos 3.0). This mode speeds up + directory listing, but take some disk space. + +There are few differences between the two file systems. +- OFS Datablock stores 488 bytes, FFS stores 512 bytes, +- FFS supports directories caching, links and international mode, +- the FFS is faster than OFS. + + +The bootblock checksum algorithm follows : + +* in 68000 assembler : + + lea bootbuffer,a0 + move.l a0,a1 + clr.l 4(a1) ;clear the checksum + move.w #256-1,d1 ;1024/4 times + moveq #0,d0 +lpchk: add.l (a0)+,d0 ;accumulation + bcc.s jump ;if carry set, add 1 to checksum + add.l #1,d0 +jump: dbf d1,lpchk ;next long word + + not.l d0 + move.l d0,4(a1) ;new checksum + + +* in C : + +#include +#define Short(p) ((p)[0]<<8 | (p)[1]) +#define Long(p) (Short(p)<<16 | Short(p+2)) + +unsigned long newsum,d; +unsigned char buf[1024]; /* contains bootblock */ +int i; + +memset(buf+4,0,4); /* clear old checksum */ +newsum=0L; +for(i=0; i<256; i++) { + d=Long(buf+i*4); + if ( (ULONG_MAX-newsum) < d ) /* overflow */ + newsum++; + newsum+=d; + } + +newsum=~newsum; + + + + +3.2 What is a Rootblock ? +------------------------- + + +The Rootblock is at the middle of the media : block number 880 for DD disks, +block 1760 for HDs. + +The Rootblock contains information about disk : its name, its formatting date, +etc ... + +It also contains information to access the files/directories/links located at the root +(Unix /) directory. + + +* Rootblock (512 bytes) sector 880 for a DD disk, 1760 for a HD disk +------------------------------------------------------------------------------ +0/0 long 1 type block primary type = T_HEADER (value 2) +4/4 long 1 header_key unused in rootblock (value 0) + long 1 high_seq unused (value 0) +12/c long 1 ht_size Hash table size in long (value 0x48) +16/10 long 1 first_data unused (value 0) +20/14 long 1 chksum sum to check block integrity +24/18 long 72 ht[] hash table (entry block number) +312/138 long 1 bm_flag bitmap flag, -1 means VALID +316/13c long 25 bm_pages[] bitmap blocks pointers (first at 0) +416/1a0 long 1 bm_ext first bitmap extension block (Hard disks only) + ... +432/1b0 char 1 name_len; disk name length +433/1b1 char 30 diskname[] disk name + ... +472/1d8 long 1 days last access date : days since 1 jan 1978 +476/1dc long 1 mins minutes past midnight +480/1e0 long 1 ticks ticks (1/50 sec) past last minute +484/1e4 long 1 c_days creation date +488/1e8 long 1 c_mins +492/1ec long 1 c_ticks + long 1 next_hash unused (value = 0) + long 1 parent_dir unused (value = 0) +504/1f8 long 1 extension FFS: first directory cache block, 0 otherwise +508/1fc long 1 sec_type block secondary type = ST_ROOT (value 1) +------------------------------------------------------------------------------- + + +3.2.1 How to find the first sector of a directory entry ? +--------------------------------------------------------- + + +Given the name of a file/directory/link you compute its +hash value with this algorithm : + +* The hash function : + +#include + +int HashName(char *name) +{ +int hash; +int i,l; + +l=hash=strlen(name); +for(i=0; i