bSectorsUsed is 16-bits bitmask of sectors. 1 = Free 0 = Used ===========================================================================
| 641 | // 0 = Used |
| 642 | //=========================================================================== |
| 643 | void Util_DOS33_SetTrackSectorUsage ( uint8_t *pVTOC, const int nTrack, const uint16_t bSectorsFree ) |
| 644 | { |
| 645 | int nOffset = 0x38 + (nTrack * 4); |
| 646 | |
| 647 | // Byte Sectors |
| 648 | // 0 FEDC BA98 |
| 649 | // 1 7654 3210 |
| 650 | // 2 -Wasted- |
| 651 | // 3 -Wasted- |
| 652 | #if _DEBUG |
| 653 | std::string sFree; |
| 654 | std::string sUsed; |
| 655 | for( int iSector = 15; iSector >= 0; iSector-- ) |
| 656 | { |
| 657 | bool bFree = (bSectorsFree >> iSector) & 1; |
| 658 | sFree.append( 1, (char)( bFree) | '0' ); |
| 659 | sUsed.append( 1, (char)(!bFree) ^ '0' ); |
| 660 | if ((iSector & 3) == 0) |
| 661 | { |
| 662 | sFree.append( 1, ' ' ); |
| 663 | sUsed.append( 1, ' ' ); |
| 664 | } |
| 665 | } |
| 666 | LogOutput("Track: %02X, VTOC[ %02X ]: %02X %02X %02X %02X -> %02X %02X, Free: %s, Used: %s\n" |
| 667 | , nTrack |
| 668 | , nOffset |
| 669 | , pVTOC[ nOffset + 0 ] |
| 670 | , pVTOC[ nOffset + 1 ] |
| 671 | , pVTOC[ nOffset + 2 ] |
| 672 | , pVTOC[ nOffset + 3 ] |
| 673 | , (bSectorsFree >> 8) & 0xFF |
| 674 | , (bSectorsFree >> 0) & 0xFF |
| 675 | , sFree.c_str() |
| 676 | , sUsed.c_str() |
| 677 | ); |
| 678 | #endif |
| 679 | pVTOC[ nOffset + 0 ] = (bSectorsFree >> 8) & 0xFF; |
| 680 | pVTOC[ nOffset + 1 ] = (bSectorsFree >> 0) & 0xFF; |
| 681 | pVTOC[ nOffset + 2 ] = 0x00; |
| 682 | pVTOC[ nOffset + 3 ] = 0x00; |
| 683 | } |
| 684 | |
| 685 | //=========================================================================== |
| 686 | void Util_DOS33_SetTrackUsed ( uint8_t *pDiskBytes, const int nVTOC_Track, int nTrackUsed ) |
no test coverage detected