Revisión | 16 (tree) |
---|---|
Tiempo | 2013-01-18 00:35:14 |
Autor | tekken_boss |
001.000.001: 2013/01/18 00:30 : BUG FIX: a fragmented files can not be read correctly.
* [FAT] Bug fixed. The problem is that a fragmented file can not be read.
* ONLY Compilable.
@@ -15,9 +15,10 @@ | ||
15 | 15 | |
16 | 16 | #define SRCVER_MAJOR 1 |
17 | 17 | #define SRCVER_MINOR 0 |
18 | -#define SRCVER_BUILD 0 | |
18 | +#define SRCVER_BUILD 1 | |
19 | 19 | |
20 | 20 | /* -------------------------------------------------------------------- |
21 | +001.000.001: 2013/01/18 00:30 : BUG FIX: a fragmented files can not be read correctly. | |
21 | 22 | 001.000.000: 2012/10/04 00:02 : Frist major release. |
22 | 23 | 000.001.014: 2012/10/01 22:55 : ROM code maintenance. |
23 | 24 | 000.001.013: 2012/08/24 16:31 : Memory check sequence is added. |
@@ -564,27 +564,31 @@ | ||
564 | 564 | if( res == SUB_PROC_DONE ) { |
565 | 565 | unsigned long EntryVal; |
566 | 566 | if(IsFAT32) { |
567 | -#if 1 | |
568 | 567 | val = *( (unsigned long*) &WindowBuffer[fat.Offset] ); |
569 | 568 | EntryVal = (val<<24) | ((val<<8) & 0x00FF0000) | ((val>>8) & 0x0000FF00) | ((val>>24) & 0x000000FF); |
570 | 569 | EntryVal &= 0x0FFFFFFF; |
571 | -#else | |
572 | - EntryVal = *(unsigned long*) &WindowBuffer[fat.Offset] & 0x0FFFFFFF; | |
573 | -#endif | |
570 | + | |
574 | 571 | if( (EntryVal > 0x00000002) && (EntryVal < 0x0FFFFFF6) ) { |
572 | +#if 0 // found bug 2013.01.17 | |
575 | 573 | dir_entry.CurrentCluster = EntryVal; |
576 | 574 | dir_entry.CurrentSector = CLUSTER2SECTOR(dir_entry.CurrentCluster); |
575 | +#else | |
576 | + ReadFileStatus.CurrentCluster = EntryVal; | |
577 | + ReadFileStatus.CurrentSector = CLUSTER2SECTOR(ReadFileStatus.CurrentCluster); | |
578 | +#endif | |
577 | 579 | } |
578 | 580 | } else { |
579 | -#if 1 | |
580 | 581 | val = *( (unsigned long*) &WindowBuffer[fat.Offset] ); |
581 | 582 | EntryVal = (unsigned short) (((val<<8) & 0xFF00) | ((val>>8) & 0x00FF)); |
582 | -#else | |
583 | - EntryVal = *(unsigned short*) &WindowBuffer[fat.Offset]; | |
584 | -#endif | |
583 | + | |
585 | 584 | if( (EntryVal > 0x0002) && (EntryVal < 0xFFF6) ) { |
585 | +#if 0 // found bug 2013.01.17 | |
586 | 586 | dir_entry.CurrentCluster = (unsigned long) EntryVal; |
587 | 587 | dir_entry.CurrentSector = CLUSTER2SECTOR(dir_entry.CurrentCluster); |
588 | +#else | |
589 | + ReadFileStatus.CurrentCluster = (unsigned long) EntryVal; | |
590 | + ReadFileStatus.CurrentSector = CLUSTER2SECTOR(ReadFileStatus.CurrentCluster); | |
591 | +#endif | |
588 | 592 | } |
589 | 593 | } |
590 | 594 | fat_proc = FAT_READ_FILE_01; |