[Info-vax] Question about checksum in BACKUP block headers

Volker Halle volker_halle at hotmail.com
Thu Mar 26 02:35:44 EDT 2020


Am Donnerstag, 26. März 2020 02:39:45 UTC+1 schrieb Anton Lavrentiev:
> Volker,
> 
> Do you by chance know how the block CRC is calculated?  I tried the standard CRC-32 (also described in the "VAX architecture Ref. Manual"), for both the entire block and only the data portion of the block (i.e. past the header), and none matched the CRC stored in the header.
> 
> Thanks,
> Anton

Anton,

the calculation of the block CRC BBH$L_CRC is as follows (excerpt from BLISS source code in facility [BACKUP]):

Module BCKSTART:

LIB$CRC_TABLE(UPLIT(%X'EDB88320'), BCK_CTX[RWSV_AUTODIN]);

Module WRITESAVE:
…
BUFFER[BBH$W_CHECKSUM] = 0;
BUFFER[BBH$L_CRC] = 0;
BLOCK_SUM = -1;
...
CRC (BCK_CTX[RWSV_AUTODIN], %REF (-1), BCB[BCB_SIZE], .BUFFER, BLOCK_SUM)
…
BUFFER[BBH$L_CRC] = NOT .BLOCK_SUM;

Volker.



More information about the Info-vax mailing list