MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / Util_ProDOS_CopyBASIC

Function Util_ProDOS_CopyBASIC

source/ProDOS_Utils.cpp:465–504  ·  view source on GitHub ↗

===========================================================================

Source from the content-addressed store, hash-verified

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 )

Callers 1

New_DOSProDOS_DiskFunction · 0.85

Calls 4

ProDOS_PackDateFunction · 0.85
ProDOS_PackTimeFunction · 0.85
Util_ProDOS_AddFileFunction · 0.85
GetResourceMethod · 0.80

Tested by

no test coverage detected