===========================================================================
| 463 | |
| 464 | //=========================================================================== |
| 465 | bool Util_ProDOS_CopyBASIC ( uint8_t *pDiskBytes, const size_t nDiskSize, const char *pVolumeName, FrameBase *pFrame ) |
| 466 | { |
| 467 | const size_t nFileSize = 0x2800; // 10,240 -> 20 blocks + 1 index block = 21 blocks |
| 468 | const uint8_t *pFileData = (uint8_t *) pFrame->GetResource(IDR_FILE_BASIC17, "FIRMWARE", nFileSize); |
| 469 | |
| 470 | // Acc dnb??iwr /PRODOS.2.4.3 Blocks Size Type Aux Kind iNode Dir Ver Min Create Time Modified Time |
| 471 | // --- -------- ---------------- ------ ------- ------- ----- ----- ----- ----- --- --- --------- ------ --------- ------ |
| 472 | // $21 --b----r *BASIC.SYSTEM 21 $002800 SYS $FF $2000 sap 2 @0029 @0002 2.4 v00 13-JAN-18 9:09a 30-AUG-16 7:56a |
| 473 | int bAccess = 0 |
| 474 | | ACCESS_B |
| 475 | | ACCESS_R |
| 476 | ; |
| 477 | ProDOS_FileHeader_t meta; |
| 478 | memset( &meta, 0, sizeof(ProDOS_FileHeader_t) ); |
| 479 | |
| 480 | const char *pName = "BASIC.SYSTEM"; |
| 481 | const uint16_t nDateCreate = ProDOS_PackDate( 18, 1, 13 ); // YYMMDD, NOTE: Jan starts at 1, not 0. |
| 482 | const uint16_t nTimeCreate = ProDOS_PackTime( 9, 9 ); |
| 483 | const uint16_t nDateModify = ProDOS_PackDate( 16, 8, 30 ); // YYMMDD |
| 484 | const uint16_t nTimeModify = ProDOS_PackTime( 7, 56 ); |
| 485 | |
| 486 | meta.kind = PRODOS_KIND_SAPL; |
| 487 | strcpy( meta.name, pName ); |
| 488 | meta.len = strlen( pName ) & 0xF; |
| 489 | meta.type = 0xFF; // SYS |
| 490 | // .inode = TBD |
| 491 | // .blocks = TBD |
| 492 | meta.size = nFileSize; |
| 493 | meta.date = nDateCreate; |
| 494 | meta.time = nTimeCreate; |
| 495 | meta.cur_ver = 0x24; |
| 496 | meta.min_ver = 0x00; |
| 497 | meta.access = bAccess; |
| 498 | meta.aux = 0x2000; |
| 499 | meta.mod_date = nDateModify; |
| 500 | meta.mod_time = nTimeModify; |
| 501 | // .dir_block = TBD; |
| 502 | |
| 503 | return Util_ProDOS_AddFile( pDiskBytes, nDiskSize, pVolumeName, pFileData, nFileSize, meta, true ); |
| 504 | } |
| 505 | |
| 506 | //=======Util_ProDOS_CopyBitsyBoot==================================================================== |
| 507 | bool Util_ProDOS_CopyBitsyBoot( uint8_t *pDiskBytes, const size_t nDiskSize, const char *pVolumeName, FrameBase *pFrame ) |
no test coverage detected