* ReadFSHDblock * */
| 871 | * |
| 872 | */ |
| 873 | RETCODE |
| 874 | adfReadFSHDblock( struct Device* dev, int32_t nSect, struct bFSHDblock* blk) |
| 875 | { |
| 876 | UCHAR buf[sizeof(struct bFSHDblock)]; |
| 877 | struct nativeFunctions *nFct; |
| 878 | RETCODE rc; |
| 879 | |
| 880 | nFct = adfEnv.nativeFct; |
| 881 | if (dev->isNativeDev) |
| 882 | rc = (*nFct->adfNativeReadSector)(dev, nSect, sizeof(struct bFSHDblock), buf); |
| 883 | else |
| 884 | rc = adfReadDumpSector(dev, nSect, sizeof(struct bFSHDblock), buf); |
| 885 | if (rc!=RC_OK) |
| 886 | return RC_ERROR; |
| 887 | |
| 888 | memcpy(blk, buf, sizeof(struct bFSHDblock)); |
| 889 | #ifdef LITT_ENDIAN |
| 890 | /* big to little = 68000 to x86 */ |
| 891 | swapEndian((uint8_t*)blk, SWBL_FSHD); |
| 892 | #endif |
| 893 | |
| 894 | if ( strncmp(blk->id,"FSHD",4)!=0 ) { |
| 895 | (*adfEnv.eFct)("ReadFSHDblock : FSHD id not found"); |
| 896 | return RC_ERROR; |
| 897 | } |
| 898 | |
| 899 | if ( blk->size != 64 ) |
| 900 | (*adfEnv.wFct)("ReadFSHDblock : size != 64"); |
| 901 | |
| 902 | if ( blk->checksum != adfNormalSum(buf,8,256) ) |
| 903 | (*adfEnv.wFct)( "ReadFSHDblock : incorrect checksum"); |
| 904 | |
| 905 | return RC_OK; |
| 906 | } |
| 907 | |
| 908 | |
| 909 | /* |
no test coverage detected