Programma di esempio CRC32.PRT |
; CRC32
;
; Programma per Proteus
;
; (C) 1998-2003 Simone Zanella Productions
;
; Questo programma calcola il CRC a 32 bit Ansi X3.66 sul primo file
; specificato, normalizzandolo inoltre a 512 e 1024 bytes con il byte
; ASCII 26.
; Parametri impliciti: input e output predefiniti nulli
;!proteus -z
IF ISEMPTY(ARGV(5))
CONSOLELN "Sintassi: " ARGV(1) " " ARGV(2) " nomefile"
CONSOLELN ""
CONSOLELN "Scopo: CRC a 32 bit Ansi X3.66 con due normalizzazioni."
ABORT 0
FI
H = FOPEN(ARGV(5), 1)
Crc32 = 0xFFFFFFFF
WHILE NOT(FEOF(H))
Crc32(FREAD(H, 2048), @Crc32)
LOOP
CONSOLELN "File: " ARGV(5)
CONSOLELN "32 bit CRC Ansi X3.66 : " \
PADL(PFORMAT("lX", NNOT(Crc32)), 8, "0")
N = FSIZE(H)
FCLOSE(H)
R1 = MOD(N, 128)
IF R1
R1 = SUB(128, R1)
B = REPLICATE(CHR(26), R1)
Crc32(B, @Crc32)
FI
CONSOLELN "Normalizzazione ASCII 26 a 128 bytes : " \
PADL(PFORMAT("lX", NNOT(Crc32)), 8, "0")
R2 = MOD(N, 1024)
IF R2
R2 = SUB(SUB(1024, R2), R1)
B = REPLICATE(CHR(26), R2)
Crc32(B, @Crc32)
FI
CONSOLELN "Normalizzazione ASCII 26 a 1024 bytes: " \
PADL(PFORMAT("lX", NNOT(Crc32)), 8, "0")
ABORT 0