Author |
Message |
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 20:24 Post subject: Bank_Size determination with Check_Dirs
|
|
Steps
- Find first shifted dir in log of Check_Dirs
- Find block with last good dir in log of saving
- Find block with first shifted dir in log of saving
- Determine bank wich size must be changed
- Determine on how much blocks dir shifted
- Determine cut or add
- Correct Bank_Size
- Check result
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:11 Post subject:
|
|
Find first shifted dir in log of Check_Dirs
... Dir 0x19917000 Must be 0x19917000 Diff 0x00000000 Cluster 0x00c50b Dir 0x20f19000 Must be 0x20f19000 Diff 0x00000000 Cluster 0x01000c Dir 0x28f8b000 Must be 0x28f8b000 Diff 0x00000000 Cluster 0x014045 Dir 0x31569000 Must be 0x31569000 Diff 0x00000000 Cluster 0x018334 Dir 0x34bf7000 Must be 0x34bf7000 Diff 0x00000000 Cluster 0x019e7b Dir 0x3e299000 Must be 0x3e199000 Diff+ 0x00300000 Cluster 0x01e94c Dir 0x448cd000 Must be 0x447cd000 Diff+ 0x00300000 Cluster 0x021c66 Dir 0x4bd8d000 Must be 0x4bc8d000 Diff+ 0x00300000 Cluster 0x0256c6 Dir 0x5607b000 Must be 0x55f7b000 Diff+ 0x00300000 Cluster 0x02a83d Dir 0x6eb6b000 Must be 0x6ea6b000 Diff+ 0x00300000 Cluster 0x036db5 ...
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:13 Post subject:
|
|
Find block with last good dir in log of saving
When assembler works, he show on screen important messages.
We call it "log".
Different assemblers have different work steps.
For example: scaning, saving, sector updates building
We need log of saving
Every line in it starts from word "Image".
Find in it address of block with last good dir
... Image 34800000 Bank 01 Block 016f Dump 331c8000 Image 34900000 Bank 01 Block 0170 Dump 33b10000 Image 34a00000 Bank 01 Block 0171 Dump 33c18000 Image 34b00000 Bank 01 Block 0172 Dump 38868000 ...
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:14 Post subject:
|
|
Find block with first shifted dir in log of saving
... Image 3e200000 Bank 02 Block 002a Dump 5b650000 Image 3e300000 Bank 02 Block 002b Dump 43ef0000 Image 3e400000 Bank 02 Block 002c Dump 42108000 Image 3e500000 Bank 02 Block 002d Dump 61008000 ...
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:14 Post subject:
|
|
Determine bank wich size must be changed
We found last good dir in bank_1
We found first shifted dir in bank_2
This mean, we need change size of bank_1
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:14 Post subject:
|
|
Determine on how much blocks dir shifted
Block_Size in dump = 0x108000
Block_Size in image = 0x100000
N = Diff / Block_Size = 0x300000 / 0x100000 = 3
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:15 Post subject:
|
|
Determine cut or add
Dir 0x3e299000 > Must be 0x3e199000
Shifted dir found far then he must be
This mean, we need decrease size of bank_1
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:15 Post subject:
|
|
Correct Bank_Size
Before:
00 / 0x000 / 0x1d9 01 / 0x000 / 0x1df 02 / 0x000 / 0x1e1 03 / 0x000 / 0x1e1
After:
00 / 0x000 / 0x1d9 00 / 0x000 / 0x1dc 00 / 0x000 / 0x1e1 00 / 0x000 / 0x1e1
|
|
|
Сергей
Joined: 26 Aug 2005 Posts: 7876 Location: Soft-Center
|
Posted: Tue Feb 24, 2009 21:15 Post subject:
|
|
Check result
Rebuild image
Repeat Check_Dirs
if Diff is zero in this place, we make all correct
Else we have error in calculations
If Diff is zero in this place, but still have non-zero diffs in other places, repeat this procedure
|
|
|
|