//SmartMedia Physical Block Assign/Release Subroutine //----- Assign_D_WriteBlock() ------------------------------------------ int Assign_D_WriteBlock(void) { //SSFDCTYPE_T aa = (SSFDCTYPE_T ) &Ssfdc; //ADDRESS_T bb = (ADDRESS_T) &Media; ReadBlock=Media.PhyBlock; for(WriteBlock=AssignStart[Media.Zone]; WriteBlock<Ssfdc.MaxBlocks; WriteBlock++) { if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) { Set_D_Bit(Assign[Media.Zone],WriteBlock); AssignStart[Media.Zone]=WriteBlock+1; Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; //ErrXDCode = NO_ERROR; return(SMSUCCESS); } } for(WriteBlock=0; WriteBlock<AssignStart[Media.Zone]; WriteBlock++) { if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) { Set_D_Bit(Assign[Media.Zone],WriteBlock); AssignStart[Media.Zone]=WriteBlock+1; Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; //ErrXDCode = NO_ERROR; return(SMSUCCESS); } } WriteBlock=NO_ASSIGN; ErrCode = ERR_WriteFault; // For xD test //Ssfdc.Attribute |= WP; //ErrXDCode = ERR_WrtProtect; return(ERROR); }
int Assign_D_WriteBlock(void) { ReadBlock=Media.PhyBlock; for(WriteBlock=AssignStart[Media.Zone]; WriteBlock<Ssfdc.MaxBlocks; WriteBlock++) { if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) { Set_D_Bit(Assign[Media.Zone],WriteBlock); AssignStart[Media.Zone]=WriteBlock+1; Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; return(SMSUCCESS); } } for(WriteBlock=0; WriteBlock<AssignStart[Media.Zone]; WriteBlock++) { if (!Chk_D_Bit(Assign[Media.Zone],WriteBlock)) { Set_D_Bit(Assign[Media.Zone],WriteBlock); AssignStart[Media.Zone]=WriteBlock+1; Media.PhyBlock=WriteBlock; SectCopyMode=REQ_ERASE; return(SMSUCCESS); } } WriteBlock=NO_ASSIGN; ErrCode = ERR_WriteFault; return(ERROR); }