===========================================================================
| 591 | |
| 592 | //=========================================================================== |
| 593 | bool Util_ProDOS_CopyDOS ( uint8_t *pDiskBytes, const size_t nDiskSize, const char *pVolumeName, FrameBase *pFrame ) |
| 594 | { |
| 595 | const size_t nFileSize = 0x42E8; // 17,128 -> 34 blocks but last block is sparse -> 33 data blocks + 1 index block |
| 596 | const uint8_t *pFileData = (uint8_t*) pFrame->GetResource(IDR_OS_PRODOS243, "FIRMWARE", nFileSize); |
| 597 | |
| 598 | // Acc dnb??iwr /PRODOS.2.4.3 Blocks Size Type Aux Kind iNode Dir Ver Min Create Time Modified Time |
| 599 | // --- -------- ---------------- ------ ------- ------- ----- ----- ----- ----- --- --- --------- ------ --------- ------ |
| 600 | // $E3 dnb---wr PRODOS 34 $0042E8 SYS $FF $0000 sap 2 @0007 @0002 0.0 v80 30-DEC-23 2:43a 30-DEC-23 2:43a |
| 601 | int bAccess = 0 |
| 602 | | ACCESS_D |
| 603 | | ACCESS_N |
| 604 | | ACCESS_B |
| 605 | | ACCESS_W |
| 606 | | ACCESS_R |
| 607 | ; |
| 608 | ProDOS_FileHeader_t meta; |
| 609 | memset( &meta, 0, sizeof(ProDOS_FileHeader_t) ); |
| 610 | |
| 611 | const char *pName = "PRODOS"; |
| 612 | const uint16_t nDateCreate = ProDOS_PackDate( 23, 12, 30 ); // NOTE: Jan starts at 1, not 0. |
| 613 | const uint16_t nTimeCreate = ProDOS_PackTime( 2, 43 ); // Version. "Cute". |
| 614 | const uint16_t nDateModify = ProDOS_PackDate( 23, 12, 30 ); |
| 615 | const uint16_t nTimeModify = ProDOS_PackTime( 2, 43 ); |
| 616 | |
| 617 | meta.kind = PRODOS_KIND_SAPL; |
| 618 | strcpy( meta.name, pName ); |
| 619 | meta.len = strlen( pName ) & 0xF; |
| 620 | meta.type = 0xFF; // SYS |
| 621 | // .inode = TBD |
| 622 | // .blocks = TBD |
| 623 | meta.size = nFileSize; |
| 624 | meta.date = nDateCreate; |
| 625 | meta.time = nTimeCreate; |
| 626 | meta.cur_ver = 0x00; |
| 627 | meta.min_ver = 0x80; |
| 628 | meta.access = bAccess; |
| 629 | meta.aux = 0x0000; // ignored for SYS, since load address = $2000 |
| 630 | meta.mod_date = nDateModify; |
| 631 | meta.mod_time = nTimeModify; |
| 632 | // .dir_block = TBD; |
| 633 | |
| 634 | return Util_ProDOS_AddFile( pDiskBytes, nDiskSize, pVolumeName, pFileData, nFileSize, meta, true ); |
| 635 | } |
| 636 | |
| 637 | // =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- |
| 638 |
no test coverage detected