• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

L3 Disk Explorer is an application in order to access to files in a floppy disk image for retro computer and operating system.


Commit MetaInfo

Revision857db820194c3d92db706bb2e191800d3827f7f1 (tree)
Time2023-07-08 01:10:27
AuthorSasaji <sasaji@s-sa...>
CommiterSasaji

Log Message

Version 0.6.3 Release

Change Summary

Incremental Difference

--- a/Makefile.macosx
+++ b/Makefile.macosx
@@ -3,7 +3,7 @@
33 #
44 CC=g++
55
6-APPLICATION_VERSION=0.6.2
6+APPLICATION_VERSION=0.6.3
77
88 CDEFS=
99 DBG_CDEFS=-D_DEBUG -D_DEBUG_LOG
--- a/data/file_types.xml
+++ b/data/file_types.xml
@@ -13,7 +13,7 @@
1313 <Description lang="ja">CPC DSK形式ファイル</Description>
1414 </FileFormatType>
1515 <FileFormatType name="fdi">
16- <Description>Anex98 FDI format file</Description>
16+ <Description>Anex86 FDI format file</Description>
1717 <Description lang="ja">Anex86 FDI形式ファイル</Description>
1818 </FileFormatType>
1919 <FileFormatType name="cqmimg">
--- a/docs/ChangeLog.txt
+++ b/docs/ChangeLog.txt
@@ -2,6 +2,10 @@
22 更新履歴
33 ==============================================================================
44
5+2023-07-08 Version 0.6.3
6+・実機で書き込みしたHxC HFE形式のディスクイメージが読み込めなくなることがある
7+ 不具合を修正した。
8+
59 2023-04-03 Version 0.6.2
610 ・CDOS II 2DD,2HD版のシステムディスクに対応した。
711 ・MSX BASICのベタディスクを読み込めないことがある不具合を修正した。
--- a/docs/DiskBasicSpec.txt
+++ b/docs/DiskBasicSpec.txt
@@ -1,6 +1,6 @@
11 ==============================================================================
22 L3 Disk Explorer 仕様
3- Version 0.6.2
3+ Version 0.6.3
44
55 Copyright(C) Sasaji 2015-2023 All Rights Reserved.
66 ==============================================================================
--- a/docs/Readme.txt
+++ b/docs/Readme.txt
@@ -1,7 +1,7 @@
11 ==============================================================================
22 L3 Disk Explorer
3- Version 0.6.2
4- 2023/04/03
3+ Version 0.6.3
4+ 2023/07/08
55
66 Copyright(C) Sasaji 2015-2023 All Rights Reserved.
77 ==============================================================================
--- a/l3diskex.doxy
+++ b/l3diskex.doxy
@@ -38,7 +38,7 @@ PROJECT_NAME = L3DiskExplorer
3838 # could be handy for archiving the generated documentation or if some version
3939 # control system is used.
4040
41-PROJECT_NUMBER = 0.6.2
41+PROJECT_NUMBER = 0.6.3
4242
4343 # Using the PROJECT_BRIEF tag one can provide an optional one line description
4444 # for a project that appears at the top of each page and should give viewer a
--- a/src/diskimg/diskhfeparser.cpp
+++ b/src/diskimg/diskhfeparser.cpp
@@ -252,19 +252,26 @@ FormatMFMParser::FormatMFMParser(DiskD88Disk *n_disk, int n_track_number, int n_
252252 clk 1 0 0 1 0 0 0 0 \n
253253 10010010 01010100 -> 9245 \n
254254 rev 01001001 00101010 -> 492A \n
255+
256+ @par SYNC code
257+ 00 -> 0 0 0 0 0 0 0 0 \n
258+ clk 1 1 1 1 1 1 1 1 \n
259+ 10101010 10101010 \n
260+ rev 01010101 01010101 -> 5555 \n
255261 */
256-/// @return GAPフィールドあり
262+/// @return GAP and SYNCフィールドあり
257263 bool FormatMFMParser::AdjustGap()
258264 {
259265 bool found = false;
260266 int maxlen = data_len;
261- wxUint8 buf[4];
267+ wxUint8 buf[6];
262268 int pos = 0;
269+ // search GAP field
263270 for(; pos<maxlen; pos++) {
264271 memcpy(buf, &data[pos], 3);
265272 int cnt = 0;
266273 for(; cnt<8; cnt++) {
267- if (buf[0] == 0x49 && buf[1] == 0x2a) {
274+ if (memcmp(buf, "\x49\x2a", 2) == 0) {
268275 found = true;
269276 break;
270277 }
@@ -279,17 +286,44 @@ bool FormatMFMParser::AdjustGap()
279286 }
280287 if (!found) {
281288 data_len = 0;
289+ return found;
290+ }
291+ // search the terminate of SYNC field
292+ found =false;
293+ pos = 0;
294+ for(; pos<maxlen; pos++) {
295+ memcpy(buf, &data[pos], 4);
296+ int cnt = 0;
297+ for(; cnt<8; cnt++) {
298+ if (memcmp(buf, "\x55\x55\x25", 3) == 0
299+ || memcmp(buf, "\x55\x55\xa5", 3) == 0) {
300+ found = true;
301+ break;
302+ }
303+
304+ // bit shift left
305+ ShiftBits(buf, 4, 1);
306+ }
307+ if (found) {
308+ if (cnt >= 4) {
309+ cnt -= 4;
310+ } else {
311+ pos--;
312+ cnt += 4;
313+ }
314+ if (pos >= 0) {
315+ data_len = ShiftBits(data, data_len, pos * 8 + cnt);
316+ }
317+ break;
318+ }
319+ }
320+ if (!found) {
321+ data_len = 0;
282322 }
283323 return found;
284324 }
285325 /** データの解析(MFM)
286326
287-@par SYNC code
288- 00 -> 0 0 0 0 0 0 0 0 \n
289- clk 1 1 1 1 1 1 1 1 \n
290- 10101010 10101010 \n
291- rev 01010101 01010101 -> 5555 \n
292-
293327 @par PRE AM
294328 A1 -> 1 0 1 0 0 0 0 1 \n
295329 clk 0 0 0 0 1 x 1 0 \n
@@ -417,19 +451,26 @@ FormatFMParser::FormatFMParser(DiskD88Disk *n_disk, int n_track_number, int n_si
417451 clk 01 01 01 01 01 01 01 01 \n
418452 01010101 01010101 01010101 01010101 -> 55555555 \n
419453 rev 10101010 10101010 10101010 10101010 -> AAAAAAAA \n
454+
455+ @par SYNC code
456+ 00 -> 00 00 00 00 00 00 00 00 \n
457+ clk 01 01 01 01 01 01 01 01 \n
458+ 01000100 01000100 01000100 01000100 \n
459+ rev 00100010 00100010 00100010 00100010 -> 22222222 \n
420460 */
421-/// @return GAPフィールドあり
461+/// @return GAP and SYNCフィールドあり
422462 bool FormatFMParser::AdjustGap()
423463 {
424464 bool found = false;
425465 int maxlen = data_len;
426- wxUint8 buf[6];
466+ wxUint8 buf[8];
427467 int pos = 0;
468+ // search GAP field
428469 for(; pos<maxlen; pos++) {
429470 memcpy(buf, &data[pos], 5);
430471 int cnt = 0;
431472 for(; cnt<8; cnt++) {
432- if (buf[0] == 0xaa && buf[1] == 0xaa && buf[2] == 0xaa && buf[3] == 0xaa) {
473+ if (memcmp(buf, "\xaa\xaa\xaa\xaa", 4) == 0) {
433474 found = true;
434475 break;
435476 }
@@ -444,17 +485,46 @@ bool FormatFMParser::AdjustGap()
444485 }
445486 if (!found) {
446487 data_len = 0;
488+ return found;
489+ }
490+ // search the terminate of SYNC field
491+ found =false;
492+ pos = 0;
493+ for(; pos<maxlen; pos++) {
494+ if (pos == 0xb3) {
495+ int nn=0;
496+ }
497+ memcpy(buf, &data[pos], 6);
498+ int cnt = 0;
499+ for(; cnt<8; cnt++) {
500+ if (memcmp(buf, "\x22\x22\x22\x22\xa2", 5) == 0) {
501+ found = true;
502+ break;
503+ }
504+
505+ // bit shift left
506+ ShiftBits(buf, 6, 1);
507+ }
508+ if (found) {
509+ if (cnt >= 4) {
510+ cnt -= 4;
511+ } else {
512+ pos--;
513+ cnt += 4;
514+ }
515+ if (pos >= 0) {
516+ data_len = ShiftBits(data, data_len, pos * 8 + cnt);
517+ }
518+ break;
519+ }
520+ }
521+ if (!found) {
522+ data_len = 0;
447523 }
448524 return found;
449525 }
450526 /** データの解析(FM)
451527
452-@par SYNC code
453- 00 -> 00 00 00 00 00 00 00 00 \n
454- clk 01 01 01 01 01 01 01 01 \n
455- 01000100 01000100 01000100 01000100 \n
456- rev 00100010 00100010 00100010 00100010 -> 22222222 \n
457-
458528 @par INDEX mark
459529 FC -> 01 01 01 01 01 01 00 00 \n
460530 clk 01 01 0x 01 0x 01 01 01 \n
--- a/src/res/Info.plist
+++ b/src/res/Info.plist
@@ -7,7 +7,7 @@
77 <key>CFBundleExecutable</key>
88 <string>l3diskex</string>
99 <key>CFBundleGetInfoString</key>
10- <string>L3DiskExplorer version 0.6.2, (c) 2015-2023 Sasaji</string>
10+ <string>L3DiskExplorer version 0.6.3, (c) 2015-2023 Sasaji</string>
1111 <key>CFBundleIconFile</key>
1212 <string>l3diskex.icns</string>
1313 <key>CFBundleIdentifier</key>
@@ -19,17 +19,17 @@
1919 <string>jp</string>
2020 </array>
2121 <key>CFBundleLongVersionString</key>
22- <string>0.6.2, (c) 2015-2023 Sasaji</string>
22+ <string>0.6.3, (c) 2015-2023 Sasaji</string>
2323 <key>CFBundleName</key>
2424 <string>L3DiskExproler</string>
2525 <key>CFBundlePackageType</key>
2626 <string>APPL</string>
2727 <key>CFBundleShortVersionString</key>
28- <string>0.6.2</string>
28+ <string>0.6.3</string>
2929 <key>CFBundleSignature</key>
3030 <string>????</string>
3131 <key>CFBundleVersion</key>
32- <string>0.6.2</string>
32+ <string>0.6.3</string>
3333 <key>CSResourcesFileMapped</key>
3434 <true/>
3535 <key>LSApplicationCategoryType</key>
--- a/src/version.h
+++ b/src/version.h
@@ -6,10 +6,10 @@
66 #ifndef _VERSION_H_
77 #define _VERSION_H_
88
9-#define APPLICATION_VERSION "0.6.2"
9+#define APPLICATION_VERSION "0.6.3"
1010 #define APP_VER_MAJOR 0
1111 #define APP_VER_MINOR 6
12-#define APP_VER_REV 2
12+#define APP_VER_REV 3
1313 #define APP_VER_BUILD 0
1414 #define APP_COPYRIGHT "Copyright (C) 2015-2023 Sasaji"
1515