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

Function Util_ProDOS_CopyDOS

source/ProDOS_Utils.cpp:593–635  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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

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