Post Reply 
HP-41 ROM Checksum
08-18-2024, 02:14 AM (This post was last modified: 08-20-2024 02:44 PM by Sylvain Cote.)
Post: #1
HP-41 ROM Checksum
While working on my ZVC Replica & ZENROM HHC presentation, I had to calculate the checksum of an HP-41 ROM.

The following unix command lines, gets, calculates and updates the checksum value of a ROM.

I am using the latest rom_files_240731.zip published by Monte. (ROM files archives)

ROM files are 16-bit version of the original 10-bit word, so the checksum address location of FFF (4095) in 10-bit translate to 1FFE (8190) in 16-bit.

clone a ROM file
Code:
cp ZEPROM.ROM ZEPROM_TEST.ROM

show original checksum value → display: 029F
Code:
xxd -seek $((16#1FFE)) -p -u -l 2 ZEPROM_TEST.ROM

calculate checksum value (outdated) → display: 029F
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_); $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "%04X\n", $csum1;'

calculate checksum value (revised) → display: 029F
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e 'my $word = 0; my $prev = 0; my $curr = 0; while(<>) { $word = hex($_) & 1023; $prev = $curr; $curr += $word; if ($curr > 1023) { $curr = ($curr & 1023) + 1; } } my $csum = (-$prev) & 1023; printf "%04X\n", $csum;'
unpacked:
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e '
  my $word = 0; 
  my $prev = 0; 
  my $curr = 0; 
  while(<>) { 
    $word = hex($_) & 1023; 
    $prev = $curr; 
    $curr += $word; 
    if ($curr > 1023) { 
      $curr = ($curr & 1023) + 1; 
    } 
  } 
  my $csum = (-$prev) & 1023; 
  printf "%04X\n", $csum;
'

clear checksum
Code:
printf "001FFE: 0000" | xxd -r - ZEPROM_TEST.ROM

show update value → display: 0000
Code:
xxd -seek $((16#1FFE)) -p -u -l 2 ZEPROM_TEST.ROM

update checksum value (outdated)
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_); $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "001FFE: %04X", $csum1;' | xxd -r - ZEPROM_TEST.ROM

update checksum value (revised)
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e 'my $word = 0; my $prev = 0; my $curr = 0; while(<>) { $word = hex($_) & 1023; $prev = $curr; $curr += $word; if ($curr > 1023) { $curr = ($curr & 1023) + 1; } } my $csum = (-$prev) & 1023; printf "001FFE: %04X", $csum;' | xxd -r - ZEPROM_TEST.ROM
unpacked:
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e '
  my $word = 0; 
  my $prev = 0; 
  my $curr = 0; 
  while(<>) { 
    $word = hex($_) & 1023; 
    $prev = $curr; 
    $curr += $word; 
    if ($curr > 1023) { 
      $curr = ($curr & 1023) + 1; 
    } 
  } 
  my $csum = (-$prev) & 1023; 
  printf "001FFE: %04X", $csum;
' | xxd -r - ZEPROM_TEST.ROM

show new calculated value → display: 029F
Code:
xxd -seek $((16#1FFE)) -p -u -l 2 ZEPROM_TEST.ROM

While at it, how many ROM in the latest distribution has the correct checksum ???

The packed command line version: (revised script → HERE)
Code:
perl -e 'my @files = <*.ROM>; foreach my $file (@files) { my $word; my $prev; my $curr = 0; my $data = `xxd -p -u -c 2 $file`; foreach (split(/\n/, $data)) { $word = hex($_); $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; my $temp = `xxd -seek 8190 -p -u -l 2 $file`; my $csum2 = hex($temp); my $msg = ""; if ($csum1 != $csum2) { $msg = "diff"; } printf "%-14s : %04X : %04X : %s\n", $file, $csum1, $csum2, $msg; };'

Unpacked: (revised script → HERE)
Code:
perl -e '
  my @files = <*.ROM>; 
  foreach my $file (@files) 
  { 
    my $word;
    my $prev; 
    my $curr = 0; 
    my $data = `xxd -p -u -c 2 $file`; 
    foreach (split(/\n/, $data)) 
    { 
      $word = hex($_); 
      $prev = $curr; 
      $curr += $word; 
    } 
    my $csum1 = $prev % 1023; 
    $csum1 = (-$csum1) & 1023; 
    my $temp = `xxd -seek 8190 -p -u -l 2 $file`; 
    my $csum2 = hex($temp); 
    my $msg = ""; 
    if ($csum1 != $csum2) 
    { 
      $msg = "diff"; 
    } 
    printf "%-14s : %04X : %04X : %s\n", $file, $csum1, $csum2, $msg; 
  };
'

... and the result is: (revised result → HERE)
  • 855 ROM files in rom_files_240731.zip
  • 335 ROM files has a valid checksum
  • 520 ROM files has an invalid checksum
Code:
filename       : calc : file : diff : comment
---------------:------:------:------:----------------------------------------------------
_ALPHA.ROM     : 02B5 : 0397 : diff : naming issue, renamed, original name was -ALPHA.ROM
_EQN_LIB.ROM   : 0083 : 0000 : diff : naming issue, renamed, original name was -EQN_LIB.ROM
2022DEC.ROM    : 00A9 : 0000 : diff
2022NOV.ROM    : 0379 : 0000 : diff
2022OCT.ROM    : 00E7 : 0000 : diff
2022SEP.ROM    : 02BF : 0000 : diff
2023APR.ROM    : 006B : 0000 : diff
2023AUG.ROM    : 0380 : 0000 : diff
2023DEC.ROM    : 034C : 0000 : diff
2023FEB.ROM    : 03AC : 0000 : diff
2023JAN.ROM    : 0127 : 0000 : diff
2023JUL.ROM    : 026D : 0000 : diff
2023JUN.ROM    : 008C : 0000 : diff
2023MAR.ROM    : 01A7 : 0000 : diff
2023MAY.ROM    : 005F : 0000 : diff
2023NOV.ROM    : 016E : 0000 : diff
2023OCT.ROM    : 02D2 : 0000 : diff
2023SEP.ROM    : 00A1 : 0000 : diff
2024APR.ROM    : 015A : 0000 : diff
2024AUG.ROM    : 035C : 0000 : diff
2024FEB.ROM    : 0211 : 0000 : diff
2024JAN.ROM    : 03A0 : 0000 : diff
2024JUL.ROM    : 01B9 : 0000 : diff
2024JUN.ROM    : 0342 : 0000 : diff
2024MAR.ROM    : 024F : 0000 : diff
2024MAY.ROM    : 0000 : 0000 : 
41ENS-1.ROM    : 03F8 : 03F8 : 
41ENS-2.ROM    : 03D7 : 03D7 : 
41ZDIAG.ROM    : 023A : 0056 : diff
41ZL1.ROM      : 01A4 : 02FA : diff
41ZL2.ROM      : 0170 : 0000 : diff
41ZU1.ROM      : 0085 : 0273 : diff
41ZU2.ROM      : 0103 : 0000 : diff
441ZL.ROM      : 006D : 02FA : diff
441ZU.ROM      : 000E : 0273 : diff
4WINS.ROM      : 0141 : 0222 : diff
83TRINH.ROM    : 031D : 031D : 
ABRAFRA1.ROM   : 02D5 : 02D5 : 
ABRAFRA2.ROM   : 0340 : 0340 : 
ACTION1.ROM    : 03F0 : 039F : diff
ACTION2.ROM    : 014A : 039F : diff
AD_ASTRA.ROM   : 01B7 : 0222 : diff
ADV-APP.ROM    : 002E : 002E : 
ADVL1-1B.ROM   : 0318 : 0318 : 
ADVMTRX1.ROM   : 0375 : 0318 : diff
ADVMTRX2.ROM   : 0234 : 02B8 : diff
ADVMTRX3.ROM   : 007D : 004D : diff
ADVPRT1.ROM    : 02ED : 0222 : diff
ADVPRT2.ROM    : 01CF : 0222 : diff
ADVTGMTH.ROM   : 00D0 : 006D : diff
ADVU1-1B.ROM   : 02B8 : 02B8 : 
ADVU2-1B.ROM   : 004D : 004D : 
AEC3L.ROM      : 02A0 : 03F7 : diff
AEC3U.ROM      : 010E : 02BF : diff
AECPROG.ROM    : 011F : 03F7 : diff
AECROML.ROM    : 03F7 : 03F7 : 
AECROMU.ROM    : 02BF : 02BF : 
AECSLVR.ROM    : 0309 : 03F7 : diff
AFDC1L.ROM     : 00BE : 00BE : 
AFDC1U.ROM     : 02CE : 02CE : 
AFDC2L.ROM     : 0159 : 0159 : 
AFDC2U.ROM     : 03A1 : 03A1 : 
ALL_00.ROM     : 0000 : 0000 : 
ALL_FF.ROM     : 0343 : FFFF : diff
ALPHA4.ROM     : 037E : 0397 : diff
ALPHA44.ROM    : 003E : 0397 : diff
AMASTRO.ROM    : 0217 : 0217 : 
AMCOSX4.ROM    : 0292 : 0229 : diff
ANCHORAG.ROM   : 0176 : 0000 : diff
ANGEL-1.ROM    : 0300 : 0300 : 
ANGEL-2.ROM    : 01D4 : 01D4 : 
ANTENNAS.ROM   : 01B9 : 01B9 : 
AP550-2.ROM    : 0150 : 02BB : diff
AP550-3L.ROM   : 0125 : 011C : diff
AP550-3U.ROM   : 0344 : 033B : diff
APAC1.ROM      : 00A8 : 00A8 : 
APAC2.ROM      : 005E : 005E : 
APAC3.ROM      : 02A5 : 02A5 : 
APAC4.ROM      : 00A8 : 00A8 : 
ASSEM3.ROM     : 0349 : 0300 : diff
ASSEMB4.ROM    : 0125 : 0301 : diff
ASTRO-1.ROM    : 0055 : 0055 : 
ASTRO-2.ROM    : 0223 : 0223 : 
ASTRO-3.ROM    : 001E : 000F : diff
ASTRO1.ROM     : 023C : 023C : 
ASTRO10A.ROM   : 027D : 0000 : diff
ASTRO10B.ROM   : 036B : 0000 : diff
ASTROLGY.ROM   : 0031 : 0031 : 
ASTROM2.ROM    : 0031 : 0031 : 
ASTROREF.ROM   : 01F5 : 0000 : diff
ASTROUI.ROM    : 02B7 : 000F : diff
AUDIO1.ROM     : 0081 : 0025 : diff
AUDIO2.ROM     : 0374 : 0346 : diff
AUTOFIN.ROM    : 0076 : 0076 : 
AUTOSTRT.ROM   : 02F5 : 02F5 : 
AV1.ROM        : 019D : 019D : 
AVIATION.ROM   : 034F : 034F : 
B52DEX.ROM     : 0077 : 0077 : 
B52DIO.ROM     : 020E : 020E : 
BAFFLED.ROM    : 01A4 : 0222 : diff
BALLIST.ROM    : 034E : 0222 : diff
BASIC.ROM      : 0187 : 034C : diff
BASIC1.ROM     : 01B5 : 034C : diff
BASIC2.ROM     : 007C : 0222 : diff
BBALL1.ROM     : 00F1 : 0222 : diff
BBALL2.ROM     : 0114 : 0222 : diff
BBS1.ROM       : 009B : 009B : 
BBS2.ROM       : 02FA : 02FA : 
BBS3.ROM       : 020B : 020B : 
BBS4.ROM       : 0207 : 0211 : diff
BCMW.ROM       : 001C : 001C : 
BESSEL1.ROM    : 01B3 : 0111 : diff
BESSEL2.ROM    : 0024 : 0111 : diff
BGUG_IDC.ROM   : 00E7 : 00E7 : 
BJ1B.ROM       : 013C : 013C : 
BLDROM.ROM     : 03BE : 03BE : 
BMF1.ROM       : 019E : 039F : diff
BMF2.ROM       : 02AC : 039F : diff
BMF3.ROM       : 0141 : 039F : diff
BMF4.ROM       : 0328 : 039F : diff
BMF5.ROM       : 0249 : 039F : diff
BMF6.ROM       : 00DB : 039F : diff
BMF7.ROM       : 0191 : 039F : diff
BMF8.ROM       : 01FA : 039F : diff
BOOST1.ROM     : 0076 : 00CA : diff
BOOST2.ROM     : 008E : 0166 : diff
BSH1.ROM       : 01FB : 01FB : 
BSH2.ROM       : 033F : 033F : 
BSH3.ROM       : 01D8 : 01D8 : 
BSH4.ROM       : 00D2 : 00D2 : 
BSMS.ROM       : 0009 : 034C : diff
BUDER1-1.ROM   : 0290 : 0290 : 
BUDER1-2.ROM   : 01F7 : 01F7 : 
BUDER2L.ROM    : 03AE : 03AE : 
BUDER2U.ROM    : 03EB : 03EB : 
BUDER3.ROM     : 00E9 : 00E9 : 
BUFFER.ROM     : 0305 : 0056 : diff
BVS-1.ROM      : 0012 : 0012 : 
BW1A.ROM       : 039A : 039A : 
C141BL.ROM     : 0151 : 0151 : 
C141BU.ROM     : 033C : 033C : 
CAB41L.ROM     : 0369 : 0369 : 
CAB41U.ROM     : 02E5 : 02E5 : 
CALCS1.ROM     : 00B1 : 00B1 : 
CALCS2.ROM     : 00F5 : 00F5 : 
CARDIO.ROM     : 01A2 : 0222 : diff
CARDR-1G.ROM   : 00D4 : 00D4 : 
CCD-OSX.ROM    : 0397 : 0397 : 
CCDADV.ROM     : 03FC : 0222 : diff
CCDAPPS.ROM    : 0327 : 0222 : diff
CCDL-1B.ROM    : 0047 : 0047 : 
CCDU-2B.ROM    : 037F : 037F : 
CFIT1.ROM      : 03E3 : 0004 : diff
CFIT2.ROM      : 0279 : 0004 : diff
CHAOS.ROM      : 0023 : 0222 : diff
CHEMENG.ROM    : 0315 : 0222 : diff
CHEMIST2.ROM   : 0395 : 034C : diff
CHEMUSER.ROM   : 01CD : 01CD : 
CHESS1.ROM     : 03F3 : 0222 : diff
CHESS2.ROM     : 0339 : 039F : diff
CIPW.ROM       : 03AB : 0222 : diff
CIRCUIT.ROM    : 001C : 001C : 
CIVU1.ROM      : 03FB : 0222 : diff
CIVU2.ROM      : 035B : 0333 : diff
CLILUP.ROM     : 00B7 : 00B7 : 
CLINICAL.ROM   : 0249 : 0249 : 
CLUTLSB1.ROM   : 029F : 01DB : diff
CLUTLSB2.ROM   : 0368 : 01DB : diff
CLUTLSB3.ROM   : 0167 : 0100 : diff
CLUTLSB4.ROM   : 0121 : 0100 : diff
CLXPREGS.ROM   : 019F : 0004 : diff
CMA-1.ROM      : 01DA : 01DA : 
CMT-200.ROM    : 0013 : 0013 : 
CMT-300L.ROM   : 00D8 : 00D8 : 
CMT-300U.ROM   : 0027 : 0027 : 
CMT_1.ROM      : 024A : 024A : 
CMT_2.ROM      : 0315 : 0315 : 
CMT_3.ROM      : 0314 : 0314 : 
CMT_4.ROM      : 023C : 023C : 
CNTLSYS.ROM    : 01BD : 0222 : diff
COGO_PGC.ROM   : 0383 : 0383 : 
COGO_PGD.ROM   : 0176 : 0375 : diff
COGO_PGE.ROM   : 0275 : 0275 : 
COGO_PGF.ROM   : 03B3 : 03B3 : 
CONTOUR.ROM    : 02A7 : 0222 : diff
COUNTRY.ROM    : 00E0 : 0222 : diff
CPXMTRX.ROM    : 0086 : 0222 : diff
CRTVONK.ROM    : 0209 : 0111 : diff
CRYPTO41.ROM   : 030F : 01DB : diff
CVLENG.ROM     : 011D : 0222 : diff
CVPAK1.ROM     : 018C : 018C : 
CVPAK2.ROM     : 0192 : 0192 : 
DATAACQL.ROM   : 01BF : 01BF : 
DATAACQU.ROM   : 0179 : 0179 : 
DATALOD1.ROM   : 000D : 0222 : diff
DATALOD2.ROM   : 0163 : 0222 : diff
DATALOD3.ROM   : 0018 : 0222 : diff
DATALOD4.ROM   : 0235 : 0222 : diff
DAVID-2C.ROM   : 0362 : 0362 : 
DBLDOWN.ROM    : 0335 : 0222 : diff
DERIVE1.ROM    : 01DE : 0000 : diff
DERIVE2.ROM    : 027F : 0000 : diff
DERIVE41.ROM   : 0160 : 0000 : diff
DERIVEZ1.ROM   : 02D0 : 0000 : diff
DERIVEZ2.ROM   : 0303 : 0000 : diff
DIAMOND.ROM    : 002B : 002B : 
DIFEQ1.ROM     : 026C : 0222 : diff
DIFEQ2.ROM     : 02D8 : 0222 : diff
DIFFGEO5.ROM   : 011D : 0000 : diff
DIFFGEOM.ROM   : 00AE : 0000 : diff
DIGITPAC.ROM   : 031C : 0327 : diff
DISASM4C.ROM   : 035A : 035A : 
DISASM4D.ROM   : 0063 : 0063 : 
DISASM4E.ROM   : 008E : 008E : 
DIST7_1.ROM    : 0064 : 03D3 : diff
DIST7_2.ROM    : 0356 : 0356 : 
DIST7_3.ROM    : 019B : 019B : 
DIST7_4.ROM    : 0053 : 0053 : 
DIVER.ROM      : 02A2 : 0222 : diff
DIVINAT.ROM    : 0200 : 0000 : diff
DRP16K-1.ROM   : 0358 : 0358 : 
DRP16K-2.ROM   : 0282 : 0282 : 
DRP16K-3.ROM   : 02E7 : 02E7 : 
DRP16K-4.ROM   : 0075 : 0075 : 
DRVITG1.ROM    : 0086 : 0000 : diff
DRVITG2.ROM    : 0094 : 0000 : diff
DST12_1L.ROM   : 019F : 019F : 
DST12_1U.ROM   : 0287 : 0287 : 
DST12_2L.ROM   : 0313 : 0313 : 
DSTAT.ROM      : 033F : 033F : 
DTCOMPAR.ROM   : 0102 : 0004 : diff
DUAL_APP.ROM   : 021C : 0222 : diff
DUR_PRG1.ROM   : 02BC : 02BC : 
DUR_PRG2.ROM   : 006A : 0092 : diff
DUR_PRG3.ROM   : 0205 : 0215 : diff
DUR_PRG4.ROM   : 03D5 : 03D5 : 
DURPRG1.ROM    : 02BC : 02BC : 
DURPRG2.ROM    : 0092 : 0092 : 
DURPRG3.ROM    : 0215 : 0215 : 
DURPRG4.ROM    : 03D5 : 03D5 : 
DURPRG5.ROM    : 03CB : 03CB : 
DURPRG6.ROM    : 03FE : 03FE : 
DURPRG7.ROM    : 0039 : 0039 : 
DYERKA.ROM     : 00A5 : 0000 : diff
E-6A_1.ROM     : 0115 : 0115 : 
E-6A_2.ROM     : 0379 : 0379 : 
E-6A_3.ROM     : 0122 : 0122 : 
E-6A_4.ROM     : 003D : 003D : 
E3AFMS-1.ROM   : 00E7 : 00E7 : 
E3AFMS-2.ROM   : 002E : 002E : 
ELECENG.ROM    : 012E : 0000 : diff
ELIPAPPS.ROM   : 028C : 0222 : diff
ELLIPREF.ROM   : 039C : 0000 : diff
ELLIPSOI.ROM   : 01AE : 0000 : diff
ELLIPTIC.ROM   : 023E : 0222 : diff
ENGLISH.ROM    : 0399 : 0222 : diff
EPH2018A.ROM   : 0303 : 0000 : diff
EPH2018B.ROM   : 01C5 : 0000 : diff
EPIDEMIC.ROM   : 0203 : 0222 : diff
ES41L.ROM      : 03BD : 03BD : 
ES41U.ROM      : 031B : 031B : 
ESMLDL.ROM     : 001E : 001E : 
ETSII3A.ROM    : 0149 : 0004 : diff
ETSII3B.ROM    : 0303 : 0004 : diff
ETSII4A.ROM    : 03B1 : 0004 : diff
ETSII4B.ROM    : 024D : 0004 : diff
ETSII5A.ROM    : 00B7 : 0004 : diff
ETSII5B.ROM    : 0040 : 0004 : diff
ETSII6A.ROM    : 0126 : 0004 : diff
EVAL_1H.ROM    : 013D : 0222 : diff
EVAL_2H.ROM    : 03F8 : 0222 : diff
EVAL_3H.ROM    : 0016 : 0222 : diff
EVAL_3K.ROM    : 00BD : 0222 : diff
EVAL_APP.ROM   : 00EE : 0222 : diff
EVAL_EQN.ROM   : 0177 : 0222 : diff
EVAL_VF.ROM    : 0042 : 0222 : diff
EXILPS.ROM     : 000D : 000D : 
EXT-IL.ROM     : 029F : 029F : 
EXTIO-1A.ROM   : 00B6 : 00B6 : 
FACCL.ROM      : 0200 : 0200 : 
FACCU.ROM      : 00C0 : 00C0 : 
FAIRFLDL.ROM   : 0341 : 0341 : 
FAIRFLDU.ROM   : 028B : 028B : 
FCALAS1.ROM    : 0072 : 0004 : diff
FCALAS2.ROM    : 006C : 0004 : diff
FCAST1-1.ROM   : 01E8 : 01E8 : 
FCAST3-1.ROM   : 0342 : 0342 : 
FILTERS1.ROM   : 0054 : 0222 : diff
FILTERS2.ROM   : 0177 : 0222 : diff
FINANCE.ROM    : 0048 : 0048 : 
FISHSTOK.ROM   : 0100 : 0222 : diff
FLASH-1A.ROM   : 0135 : 0135 : 
FLDB.ROM       : 0058 : FFFF : diff
FLDB_V2.ROM    : 03AB : FFFF : diff
FLDB_V4.ROM    : 021D : FFFF : diff
FLUIDDYN.ROM   : 007D : 0222 : diff
FOR_FEE.ROM    : 0223 : 0004 : diff
FORCAST1.ROM   : 01E8 : 01E8 : 
FORCAST2.ROM   : 0038 : 0038 : 
FORTH4.ROM     : 0132 : 0132 : 
FORTH5.ROM     : 008C : 008C : 
FRNCHADV.ROM   : 027D : 039F : diff
FUN1.ROM       : 018C : 039F : diff
FUN2.ROM       : 0093 : 039F : diff
FUN3.ROM       : 0221 : 039F : diff
FUN4.ROM       : 02E4 : 039F : diff
GAMES-1A.ROM   : 019E : 019E : 
GAMESB1.ROM    : 000D : 0222 : diff
GAMESB2.ROM    : 01E5 : 0222 : diff
GAMEZONE.ROM   : 006B : 0222 : diff
GASPRP1.ROM    : 0356 : 0356 : 
GASPRP2.ROM    : 00E6 : 00E6 : 
GASPRP6.ROM    : 00C0 : 00C0 : 
GE126A-1.ROM   : 0221 : 0221 : 
GE126A-2.ROM   : 0069 : 0069 : 
GEIR.ROM       : 00C0 : 00C0 : 
GELENKGT.ROM   : 01BF : 0222 : diff
GEOMETRY.ROM   : 000E : 0222 : diff
GEOMTRY.ROM    : 0155 : 0222 : diff
GERMAN1.ROM    : 03A8 : 0222 : diff
GERMAN2.ROM    : 00B3 : 0222 : diff
GJM_2B_1.ROM   : 0304 : 0315 : diff
GJM_2B_2.ROM   : 0392 : 0334 : diff
GMAC1.ROM      : 031F : 031F : 
GMAC2.ROM      : 036B : 036B : 
GMAC3L.ROM     : 003B : 003B : 
GMAC3U.ROM     : 03F7 : 03F7 : 
GONG1.ROM      : 02D2 : 0222 : diff
GONG2.ROM      : 003B : 0222 : diff
GPROPP3.ROM    : 019F : 00C7 : diff
GPROPP4.ROM    : 00F8 : 02EE : diff
GPROPP5.ROM    : 02EB : 000A : diff
GPROPP7.ROM    : 0031 : 037D : diff
GPSERVIC.ROM   : 0303 : 0303 : 
GRAFIKS1.ROM   : 032C : 0222 : diff
GRAFIKS2.ROM   : 0365 : 0222 : diff
GRAFIKS3.ROM   : 02D5 : 0222 : diff
GRAFIKS4.ROM   : 001C : 0222 : diff
GRAVTIM1.ROM   : 0247 : 0222 : diff
GRAVTIM2.ROM   : 03CB : 0222 : diff
HAMDIST.ROM    : 01CE : 0222 : diff
HANDY.ROM      : 0288 : 0288 : 
HANGMEN.ROM    : 020C : 0222 : diff
HC_1.ROM       : 0345 : 0222 : diff
HC_2.ROM       : 0276 : 0222 : diff
HC_3.ROM       : 0185 : 0222 : diff
HDISASM.ROM    : 0249 : 0258 : diff
HEATEX.ROM     : 00A5 : 0222 : diff
HELICOP1.ROM   : 035F : 0222 : diff
HELICOP2.ROM   : 0394 : 0222 : diff
HELICOP3.ROM   : 01A8 : 0222 : diff
HELPSYS.ROM    : 017F : 0222 : diff
HELPSYS1.ROM   : 02AA : 0222 : diff
HELPSYS2.ROM   : 0022 : 0222 : diff
HEPRAM.ROM     : 034C : 034C : 
HEPX1-1E.ROM   : 0313 : 0106 : diff
HEPX1-1F.ROM   : 036F : 0106 : diff
HEPX2-1D.ROM   : 0100 : 0100 : 
HEPX3-1D.ROM   : 0100 : 0100 : 
HEPX4-1D.ROM   : 0100 : 0100 : 
HEPX4H_1.ROM   : 0014 : 019C : diff
HEPX4H_2.ROM   : 0007 : 0100 : diff
HEPX4H_3.ROM   : 01C5 : 0309 : diff
HEPX4H_4.ROM   : 024F : 0258 : diff
HL_MATH.ROM    : 02E3 : 0222 : diff
HLMAT41.ROM    : 0306 : 039F : diff
HLMAT42.ROM    : 01D9 : 01DB : diff
HLMAT43.ROM    : 02A3 : 02B8 : diff
HLMAT44.ROM    : 0241 : 03F7 : diff
HOMEMGT.ROM    : 03DB : 03DB : 
HOROSCOP.ROM   : 0120 : 0222 : diff
HP-16C_1.ROM   : 01C8 : 0004 : diff
HP-16C_2.ROM   : 0342 : 0004 : diff
HP-16C_3.ROM   : 01B8 : 0004 : diff
HP-16C_4.ROM   : 0377 : 0004 : diff
HP41AOS.ROM    : 033F : 0222 : diff
HP67_FUN.ROM   : 02E8 : 0067 : diff
HPCALEND.ROM   : 0105 : 0222 : diff
HPILDEVL.ROM   : 0287 : 0287 : 
HPILDEVU.ROM   : 0327 : 0327 : 
HPILDIAG.ROM   : 0055 : 0055 : 
HPP-1.ROM      : 0196 : 0196 : 
HPP-2.ROM      : 03FF : 03FF : 
HPX_PLUS.ROM   : 020B : 0222 : diff
HVAC.ROM       : 0346 : 0222 : diff
HYDRACMP.ROM   : 0205 : 017E : diff
ICEBOX1H.ROM   : 00DB : 00DB : 
ICODE.ROM      : 01EF : 01EF : 
IERF1.ROM      : 0379 : 0222 : diff
IERF2.ROM      : 0128 : 0222 : diff
ILBUFFER.ROM   : 0227 : 0287 : diff
ILDEV2L.ROM    : 010B : 0287 : diff
ILDEV2U.ROM    : 0125 : 0327 : diff
ILMOD-1H.ROM   : 0106 : 0106 : 
ILPRT-2E.ROM   : 0387 : 0387 : 
ILRACK.ROM     : 0039 : 003E : diff
IMDB.ROM       : 02CC : 00BD : diff
IMDB_V2.ROM    : 0363 : 0154 : diff
IMSSYS4L.ROM   : 01D0 : 01D0 : 
IMSSYS4U.ROM   : 014C : 014C : 
INDOOR.ROM     : 01A7 : 0004 : diff
INITRSU.ROM    : 00E0 : 00E0 : 
INTEG1.ROM     : 0179 : 0222 : diff
INTEG2.ROM     : 0157 : 0222 : diff
INTGDIF1.ROM   : 014B : 0000 : diff
INTGDIF2.ROM   : 007E : 0000 : diff
INTSOLN.ROM    : 0201 : 0222 : diff
IOBOARD.ROM    : 00D3 : 02C4 : diff
IPALL1.ROM     : 02DE : 02DE : 
IPALL2.ROM     : 0272 : 0272 : 
IRPR-1B.ROM    : 012F : 012F : 
IRPR-3B.ROM    : 014A : 014A : 
ISENE.ROM      : 03FC : 03FC : 
ITGDIFF.ROM    : 012F : 0222 : diff
JARRETSP.ROM   : 028E : 0222 : diff
JARRETXF.ROM   : 002B : 0222 : diff
JMB_CAL.ROM    : 0220 : 0222 : diff
JMBMATHL.ROM   : 032E : 032E : 
JMBMATHU.ROM   : 02C7 : 02C7 : 
KACHELN1.ROM   : 019F : 019F : 
KACHELN2.ROM   : 01A3 : 01A3 : 
KC135_1L.ROM   : 0310 : 0310 : 
KC135_1U.ROM   : 02CA : 02CA : 
KC135_2.ROM    : 0031 : 0031 : 
KERMI2K.ROM    : 0176 : 0176 : 
KHP4LIB.ROM    : 01EB : 032F : diff
KHPBIN.ROM     : 01F3 : 01F3 : 
KNIGHTTR.ROM   : 01DD : 0000 : diff
KRAUSS1.ROM    : 0154 : 0222 : diff
KRAUSS2.ROM    : 02B2 : 0000 : diff
L119L.ROM      : 00A2 : 00A2 : 
L119U.ROM      : 02FA : 02FA : 
LABELS.ROM     : 0361 : 0361 : 
LADYBUG1.ROM   : 02A2 : 02A2 : 
LADYBUG2.ROM   : 0232 : 0232 : 
LAITRAM.ROM    : 0150 : 0150 : 
LANDERS.ROM    : 0347 : 0222 : diff
LANDNAV.ROM    : 00C9 : 00C9 : 
LAPLACE1.ROM   : 0331 : 0222 : diff
LAPLACE2.ROM   : 00CC : 0222 : diff
LATLON.ROM     : 0013 : 0222 : diff
LBLAPP4E.ROM   : 00A9 : 00A9 : 
LENDLS.ROM     : 00C6 : 034C : diff
LIBRARY4.ROM   : 006C : 0044 : diff
LOGANA-1.ROM   : 0300 : 0300 : 
LOGANA-2.ROM   : 0354 : 0354 : 
LOGPAC_1.ROM   : 0339 : 0339 : 
LOGPAC_2.ROM   : 0046 : 0046 : 
LOGPAC_3.ROM   : 02F4 : 02F4 : 
LOGPAC_4.ROM   : 03C2 : 03C2 : 
LOUDSPKR.ROM   : 0275 : 0222 : diff
MACHINE.ROM    : 034E : 034E : 
MAHJONG1.ROM   : 00B2 : 0222 : diff
MAHJONG2.ROM   : 0163 : 0222 : diff
MARKS3A.ROM    : 012C : 012C : 
MATH-1D.ROM    : 00A4 : 00A4 : 
MATPOL11.ROM   : 0310 : 0318 : diff
MATPOL12.ROM   : 00B5 : 0318 : diff
MATPOL21.ROM   : 03B5 : 02B8 : diff
MATPOL22.ROM   : 0397 : 004D : diff
MATRIX.ROM     : 0243 : 039F : diff
MATRIX1.ROM    : 03BA : 0000 : diff
MATRIX2.ROM    : 0038 : 0000 : diff
MATRX4L4.ROM   : 0091 : 039F : diff
MAX2E.ROM      : 02DC : 02DC : 
MAZES.ROM      : 00E4 : 0222 : diff
MBK-EP-1.ROM   : 000B : 000B : 
MBK-EP-2.ROM   : 02E2 : 02E2 : 
MBK-EP-3.ROM   : 0010 : 0010 : 
MCCRNAK.ROM    : 01FC : 0222 : diff
MCTEST.ROM     : 033E : 033E : 
MDC_ROM1.ROM   : 03FF : 0002 : diff
MDC_ROM2.ROM   : 03FF : 0266 : diff
MDC_ROM3.ROM   : 03FF : 0259 : diff
MDP1L.ROM      : 0144 : 0144 : 
MDP1U.ROM      : 0364 : 0364 : 
MDP2L.ROM      : 01F0 : 01F0 : 
MDP2U.ROM      : 01DC : 01DC : 
MECHENG.ROM    : 00CA : 0222 : diff
MELBRNE.ROM    : 01D1 : 01FF : diff
MIL-ENGL.ROM   : 02C7 : 02C7 : 
MIL-ENGU.ROM   : 02CC : 02EC : diff
MISC31.ROM     : 03F0 : 0000 : diff
MISC32.ROM     : 019F : 0000 : diff
ML-IDC_L.ROM   : 03CD : 03CD : 
ML-IDC_U.ROM   : 033A : 033A : 
MLABELS.ROM    : 0361 : 0361 : 
MLEPR_1H.ROM   : 030D : 030D : 
MLINES.ROM     : 002A : 0222 : diff
MLONDON.ROM    : 0189 : 0222 : diff
MLROM.ROM      : 0260 : 0260 : 
MMADRID.ROM    : 00DD : 0222 : diff
MMEPROM.ROM    : 02B1 : 02B1 : 
MMINDS.ROM     : 0077 : 0222 : diff
MONOPLY1.ROM   : 0048 : 0207 : diff
MONOPLY2.ROM   : 0153 : 0110 : diff
MORTAR.ROM     : 02EE : 02EE : 
MOUNT1C.ROM    : 0217 : 0217 : 
MPARIS.ROM     : 0046 : 0222 : diff
MPATHS.ROM     : 0375 : 0222 : diff
MPL2V1F.ROM    : 011B : 011B : 
MUECKEL.ROM    : 0189 : 0189 : 
MUECKEU.ROM    : 002E : 002E : 
MW6KOELN.ROM   : 0388 : 0388 : 
MWKLN3.ROM     : 010A : 010A : 
MWKLN4L.ROM    : 00D8 : 00D8 : 
MWKLN4U.ROM    : 035A : 035A : 
N-BODY.ROM     : 0314 : 0222 : diff
NASA.ROM       : 0255 : 0222 : diff
NAVCOM2L.ROM   : 00F1 : 00F1 : 
NAVCOM2U.ROM   : 01A2 : 01A2 : 
NAVL-1B.ROM    : 036B : 036B : 
NAVPAC2L.ROM   : 018B : 018B : 
NAVU-1B.ROM    : 0115 : 0115 : 
NBODY.ROM      : 01BA : 0000 : diff
NEXT_2C.ROM    : 01D4 : 00BC : diff
NFCROM.ROM     : 0071 : 0071 : 
NONLINR.ROM    : 008A : 0111 : diff
NOVCHAP.ROM    : 0290 : 0222 : diff
NUMTHRY.ROM    : 0075 : 0222 : diff
NUT0-HT.ROM    : 0121 : 033A : diff
NUT0-N.ROM     : 022A : 008C : diff
NUT0-O.ROM     : 038A : 0198 : diff
NUT1-F.ROM     : 01D7 : 00C0 : diff
NUT1-HT.ROM    : 03C3 : 00C0 : diff
NUT2-HT.ROM    : 034F : 00F4 : diff
NUT2-L.ROM     : 0015 : 01B9 : diff
NUT2-M.ROM     : 0349 : 00EE : diff
NUTIP-1A.ROM   : 023D : 023D : 
NYCS1.ROM      : 03C2 : 0222 : diff
NYCS2.ROM      : 005A : 0222 : diff
OBCSYS.ROM     : 0244 : 0244 : 
ODES.ROM       : 003D : 0222 : diff
OILWELLL.ROM   : 01FD : 01FD : 
OILWELLU.ROM   : 02E0 : 02E0 : 
OPTOMTR.ROM    : 0151 : 0222 : diff
OS4-2.ROM      : 015C : 015C : 
OS4.ROM        : 008D : 020D : diff
OS41-1.ROM     : 00A6 : 0222 : diff
OS41-2.ROM     : 033E : 0222 : diff
OSXB1.ROM      : 032C : 0229 : diff
OSXB2.ROM      : 0054 : 0222 : diff
OSXB3.ROM      : 00A7 : 03F7 : diff
OSXB4.ROM      : 0077 : 0258 : diff
OUTERPLN.ROM   : 0226 : 0000 : diff
OVTROP2L.ROM   : 01CC : 01CC : 
OVTROP2U.ROM   : 0288 : 0288 : 
PAGE1.ROM      : 036B : 036B : 
PAGE12.ROM     : 01E5 : 01B5 : diff
PAGE2.ROM      : 01E7 : 01E7 : 
PAGE22.ROM     : 021D : 03A8 : diff
PANAMEL.ROM    : 02CA : 02CA : 
PANAMEU.ROM    : 010A : 010A : 
PAPERS1.ROM    : 0150 : 0222 : diff
PAPERS2.ROM    : 01C3 : 0222 : diff
PAPERS21.ROM   : 0325 : 0222 : diff
PAPERS22.ROM   : 03F6 : 0222 : diff
PARDIFEQ.ROM   : 0030 : 0000 : diff
PARIO.ROM      : 008C : 0000 : diff
PASCAL41.ROM   : 0053 : 0222 : diff
PASCAL42.ROM   : 01B8 : 0222 : diff
PCODER.ROM     : 00FA : 00FA : 
PEET.ROM       : 0027 : 0222 : diff
PERIOD1.ROM    : 0114 : 034C : diff
PERIOD2.ROM    : 00A1 : 034C : diff
PERIOD3.ROM    : 03A1 : 034C : diff
PETROLL.ROM    : 03E4 : 03E4 : 
PETROLU.ROM    : 02A2 : 02A2 : 
PHYSICS.ROM    : 026D : 0222 : diff
PIE_ROM.ROM    : 0212 : 0364 : diff
PK_ALPH.ROM    : 00EF : 00EF : 
PK_FLAG.ROM    : 0329 : 0329 : 
PK_MATH.ROM    : 0039 : 0039 : 
PK_PHYS.ROM    : 0227 : 01D5 : diff
PK_PROG.ROM    : 0197 : 0197 : 
PK_TIME.ROM    : 00F1 : 00F1 : 
PLANETS.ROM    : 008F : 0000 : diff
PLAY1C.ROM     : 0362 : 0362 : 
PLOTTERL.ROM   : 02A1 : 02A1 : 
PLOTTERU.ROM   : 0260 : 0260 : 
PLUTOIDS.ROM   : 035C : 0000 : diff
POKER.ROM      : 02FA : 0212 : diff
POLYN1.ROM     : 0292 : 0222 : diff
POLYN2.ROM     : 0018 : 0222 : diff
POLYN44.ROM    : 0311 : 0222 : diff
PORTSL.ROM     : 0137 : 0222 : diff
PORTSU.ROM     : 0219 : 0222 : diff
PPC-MELB.ROM   : 016C : 016C : 
PPCAPPS1.ROM   : 029F : 0222 : diff
PPCAPPS2.ROM   : 0365 : 0222 : diff
PPCL.ROM       : 01A7 : 01A7 : 
PPCSTAT1.ROM   : 0228 : 0222 : diff
PPCSTAT2.ROM   : 01B7 : 034C : diff
PPCSTATS.ROM   : 029F : 0222 : diff
PPCU.ROM       : 02CD : 02CD : 
PRAXIS.ROM     : 0351 : 0222 : diff
PRECNUT.ROM    : 024E : 0000 : diff
PRIDE1.ROM     : 01E0 : 01E0 : 
PRIDE2.ROM     : 00A1 : 00A1 : 
PRINTER.ROM    : 036E : 036E : 
PRISMFUN.ROM   : 00FE : 0222 : diff
PRISMTH1.ROM   : 0258 : 034C : diff
PRISMTH2.ROM   : 0074 : 034C : diff
PROFIL.ROM     : 0263 : 0263 : 
PROFIU.ROM     : 00EC : 00EC : 
PRTSRVC.ROM    : 02CC : 02CC : 
PS0F.ROM       : 021A : 024A : diff
PSRVC-2C.ROM   : 017E : 017E : 
PSYCHRO.ROM    : 0106 : 0004 : diff
PWREXT1.ROM    : 0196 : 01DB : diff
PWREXT2.ROM    : 016F : 01DB : diff
PWREXT3.ROM    : 022E : 0100 : diff
PWREXT4.ROM    : 00EF : 0100 : diff
QUATERL.ROM    : 013F : 0222 : diff
QUATERU.ROM    : 008A : 0222 : diff
QUEENS.ROM     : 0284 : 0222 : diff
RACETR-1.ROM   : 0056 : 0056 : 
RADIAK-1.ROM   : 00B1 : 00B1 : 
RAMBOX32.ROM   : 0389 : 0389 : 
RAMPAGE.ROM    : 02BA : 0222 : diff
RAMPAGX.ROM    : 01DE : 0222 : diff
RAMPGX4.ROM    : 00DD : 006D : diff
RANDOM.ROM     : 0307 : 0222 : diff
RAWFL_1.ROM    : 00E4 : 0222 : diff
RAWFL_2.ROM    : 014C : 0222 : diff
RAWGM1.ROM     : 018C : 0222 : diff
RAWGM2.ROM     : 0293 : 0222 : diff
REALESTL.ROM   : 0355 : 0355 : 
REALESTU.ROM   : 01FC : 01FC : 
RECURSE.ROM    : 025C : 0364 : diff
REGULA1.ROM    : 01DA : 0222 : diff
REGULA2.ROM    : 0247 : 0222 : diff
RESERV_1.ROM   : 0115 : 0004 : diff
RESERV_2.ROM   : 007E : 0004 : diff
RESERV_3.ROM   : 038C : 0004 : diff
RESERV_4.ROM   : 034F : 0004 : diff
RESERV_5.ROM   : 0263 : 0004 : diff
RESERV_6.ROM   : 016F : 0004 : diff
RHODESII.ROM   : 0109 : 0109 : 
RIPRAP.ROM     : 039D : 0222 : diff
ROAM-0A.ROM    : 034B : 034B : 
ROMSV01.ROM    : 03CC : 0000 : diff
RSU_OSL.ROM    : 0069 : 0069 : 
RSU_OSU.ROM    : 0012 : 0012 : 
RUBIKS.ROM     : 02F9 : 039F : diff
SAMLUNG1.ROM   : 035D : 0222 : diff
SAMLUNG2.ROM   : 022D : 0222 : diff
SANDBOXL.ROM   : 02A4 : 02A4 : 
SANDBOXU.ROM   : 02C9 : 02C9 : 
SEABAT1.ROM    : 03B5 : 0222 : diff
SEABAT2.ROM    : 00A4 : 0222 : diff
SEAKING.ROM    : 0131 : 0131 : 
SECURITY.ROM   : 005D : 005D : 
SERIES.ROM     : 0021 : 0222 : diff
SERVICE.ROM    : 01C7 : 01C7 : 
SESASOL1.ROM   : 00EF : 0222 : diff
SESASOL2.ROM   : 02A7 : 0222 : diff
SGS-GAS.ROM    : 01A7 : 01A7 : 
SHOM1.ROM      : 02D4 : 0000 : diff
SHOM2.ROM      : 02FF : 0000 : diff
SIM12L.ROM     : 0383 : 0383 : 
SIM12U.ROM     : 0176 : 0375 : diff
SIM34L.ROM     : 0275 : 0275 : 
SIM34U.ROM     : 03B3 : 03B3 : 
SIMPLEX.ROM    : 00C2 : 00C2 : 
SIMPLEX2.ROM   : 0018 : 0364 : diff
SIROM.ROM      : 0377 : 02B8 : diff
SKWIDBC.ROM    : 0206 : 0206 : 
SLANTR.ROM     : 004E : 004E : 
SMAT41.ROM     : 02E5 : 0004 : diff
SMAT42.ROM     : 035B : 0222 : diff
SMAT43.ROM     : 0142 : 03F7 : diff
SMAT44.ROM     : 0262 : 01DB : diff
SMATH2L.ROM    : 0093 : 0004 : diff
SMATH2U.ROM    : 00EA : 039F : diff
SNEAP1.ROM     : 03D8 : 03D8 : 
SNEAP2.ROM     : 0217 : 0217 : 
SNEAP3.ROM     : 01F0 : 01F0 : 
SNEAP4.ROM     : 02D0 : 02D0 : 
SNEAP5.ROM     : 0119 : 0119 : 
SNEAP6.ROM     : 026D : 026D : 
SOLARENG.ROM   : 017D : 0222 : diff
SOLARS1.ROM    : 038A : 0222 : diff
SOLARS2.ROM    : 0006 : 0222 : diff
SOLVIT.ROM     : 038D : 0222 : diff
SPANISH.ROM    : 0266 : 0222 : diff
SPECTRAL.ROM   : 0129 : 0222 : diff
SPEED2L.ROM    : 033C : 033C : 
SPEED2U.ROM    : 010B : 010B : 
SRVC-1D.ROM    : 03A1 : 03A1 : 
SRVC-2B.ROM    : 00B1 : 00B1 : 
SSHEET.ROM     : 03B3 : 0364 : diff
ST_DMNGO.ROM   : 036B : 036B : 
STANDARD.ROM   : 014C : 014C : 
STAT-1B.ROM    : 02F1 : 02F1 : 
STRESS.ROM     : 01C2 : 01C2 : 
STRUCT1.ROM    : 00E9 : 0222 : diff
STRUCT2.ROM    : 032F : 0222 : diff
STRUCTL.ROM    : 0355 : 0355 : 
STRUCTU.ROM    : 03A4 : 03A4 : 
SUDOKU.ROM     : 0357 : 0013 : diff
SUNSHT-1.ROM   : 01F4 : 01F4 : 
SUNSHT-2.ROM   : 03F7 : 03F7 : 
SUPRROML.ROM   : 02E2 : 02E2 : 
SUPRROMU.ROM   : 019F : 019F : 
SURVEY.ROM     : 0272 : 0272 : 
SW_DEVL.ROM    : 00A0 : 0222 : diff
SWAP21.ROM     : 0137 : 0004 : diff
SWAP22.ROM     : 027C : 0222 : diff
SWAPMATH.ROM   : 0365 : 0004 : diff
SWAPMTH.ROM    : 00CE : 0004 : diff
SWAPPOL.ROM    : 004B : 0004 : diff
SWORDS.ROM     : 0181 : 0181 : 
SWPENG1.ROM    : 0305 : 0004 : diff
SWPENG2.ROM    : 0268 : 0004 : diff
SWPGAME1.ROM   : 0200 : 0222 : diff
SWPGAME2.ROM   : 025E : 0222 : diff
SYSDEMO1.ROM   : 00CF : 0222 : diff
SYSDEMO2.ROM   : 02CA : 0222 : diff
SYSDEMO3.ROM   : 007A : 0222 : diff
SYSDEMO4.ROM   : 0108 : 0222 : diff
TBOX4_L4.ROM   : 0194 : 03D5 : diff
TBOX4L4.ROM    : 010B : 03D5 : diff
TESTS.ROM      : 03BD : 034C : diff
TESTSTAT.ROM   : 0138 : 034C : diff
TEXTED.ROM     : 037F : 034C : diff
THERMAL.ROM    : 013C : 013C : 
TI2023.ROM     : 0306 : 0306 : 
TI2024.ROM     : 0058 : 0058 : 
TIDES.ROM      : 00D6 : 0222 : diff
TIME-3A.ROM    : 0239 : 035F : diff
TIME-3B.ROM    : 03D3 : 01BA : diff
TIME-HT.ROM    : 008A : 01BC : diff
TIMERSLN.ROM   : 00C3 : 0222 : diff
TINKER1.ROM    : 00E7 : 00E7 : 
TINKER2.ROM    : 002E : 002E : 
TMAX3A.ROM     : 0340 : 0340 : 
TOMSROM.ROM    : 02F4 : 02F4 : 
TOOLBOX3.ROM   : 029F : 0132 : diff
TOOLING.ROM    : 0108 : 0108 : 
TOULMATH.ROM   : 0234 : 0234 : 
TP2243.ROM     : 029B : 029B : 
TP2244.ROM     : 00C1 : 00C1 : 
TRANSNEP.ROM   : 0299 : 0000 : diff
TREKKIES.ROM   : 010A : 0111 : diff
TRUSS.ROM      : 029E : 0222 : diff
TS4031.ROM     : 01D0 : 01D0 : 
TS4032.ROM     : 02CC : 02CC : 
TS4033.ROM     : 005F : 005F : 
TS4034.ROM     : 0038 : 0038 : 
TTLRKL.ROM     : 01C0 : 0222 : diff
TTRKALL.ROM    : 02A2 : 0004 : diff
TURBOL.ROM     : 03F7 : 03F7 : 
TURBOU.ROM     : 02DC : 02DC : 
TVM_1E.ROM     : 021A : 0222 : diff
TVM_1G.ROM     : 023C : 0222 : diff
U-BAHN.ROM     : 03AC : 0222 : diff
UNITCONV.ROM   : 012D : 01C5 : diff
UPDAT-4D.ROM   : 00D4 : 00D4 : 
UPHST-2A.ROM   : 007C : 007C : 
UPLMTH1.ROM    : 000E : 0004 : diff
UPLMTH2.ROM    : 00E6 : 0004 : diff
USERCAL.ROM    : 01BA : 0222 : diff
USPSL.ROM      : 0137 : 0137 : 
USPSU.ROM      : 03A2 : 03A2 : 
VA-BOARD.ROM   : 00D7 : 0222 : diff
VA-MATH.ROM    : 0120 : 0222 : diff
VECTORS.ROM    : 03EE : 0222 : diff
VEGAS1C.ROM    : 0019 : 0019 : 
VERMPACK.ROM   : 01C4 : 0222 : diff
VIEIRA.ROM     : 0163 : 0111 : diff
WAND-1F.ROM    : 0192 : 0192 : 
WARPB1.ROM     : 0165 : 0222 : diff
WARPB2.ROM     : 0106 : 0222 : diff
WARPB3.ROM     : 01F4 : 0222 : diff
WPNEFF_L.ROM   : 0021 : 0021 : 
WPNEFF_U.ROM   : 00D2 : 00D2 : 
WWDAPPS.ROM    : 0390 : 0222 : diff
WWRAMBOX.ROM   : 022A : 022A : 
X16C_B1.ROM    : 022A : 0004 : diff
X16C_B2.ROM    : 00BF : 0004 : diff
X16C_B3.ROM    : 01B8 : 0004 : diff
X16C_B4.ROM    : 0144 : 0004 : diff
X41Z_L1.ROM    : 00FA : 02FA : diff
X41Z_L2.ROM    : 03A4 : 0000 : diff
X41Z_U1.ROM    : 030A : 0273 : diff
X41Z_U2.ROM    : 00D2 : 0000 : diff
XADVMTH.ROM    : 006F : 006D : diff
XALPHA44.ROM   : 013F : 0397 : diff
XBEAMS.ROM     : 00B1 : 0222 : diff
XCPXMTRX.ROM   : 0252 : 0222 : diff
XDBLDOWN.ROM   : 03EF : 0222 : diff
XEVAL_EQ.ROM   : 0304 : 0222 : diff
XEVAL_VF.ROM   : 039B : 0222 : diff
XFNS3-3B.ROM   : 0168 : 0228 : diff
XFNS3-HT.ROM   : 0243 : 03AB : diff
XFNS5-2D.ROM   : 0396 : 0267 : diff
XFNS5-HT.ROM   : 01E9 : 00AE : diff
XFRAME.ROM     : 01B1 : 0222 : diff
XHEPX_B2.ROM   : 03D4 : 0100 : diff
XHLMT_41.ROM   : 000F : 039F : diff
XHLMT_42.ROM   : 028D : 01DB : diff
XHLMT_43.ROM   : 0357 : 02B8 : diff
XHLMT_44.ROM   : 03C4 : 03F7 : diff
XLIB4_B1.ROM   : 0032 : 0044 : diff
XLIB4_B2.ROM   : 022F : 0044 : diff
XMASSTG.ROM    : 0077 : 0222 : diff
XMEMXF.ROM     : 016B : 006D : diff
XMMTRX.ROM     : 008C : 0004 : diff
XMPPC.ROM      : 0171 : 0004 : diff
XMSTAT.ROM     : 0159 : 0222 : diff
XMTPL_11.ROM   : 03A3 : 0318 : diff
XMTPL_12.ROM   : 0195 : 0318 : diff
XMTPL_21.ROM   : 03F0 : 02B8 : diff
XMTPL_22.ROM   : 00CB : 004D : diff
XMTWIN.ROM     : 01A6 : 0004 : diff
XOSX_B1.ROM    : 038A : 0229 : diff
XOSX_B2.ROM    : 00C2 : 0222 : diff
XOSX_B3.ROM    : 02C3 : 03F7 : diff
XOSX_B4.ROM    : 0347 : 0258 : diff
XPIE.ROM       : 00B3 : 0364 : diff
XPLORE1.ROM    : 0195 : 0222 : diff
XPLORE2.ROM    : 00A0 : 039F : diff
XRAMPAGX.ROM   : 00FC : 006D : diff
XRANDOM.ROM    : 03D4 : 0222 : diff
XROM.ROM       : 031E : 0222 : diff
XSERIES.ROM    : 02A7 : 0222 : diff
XSIROM.ROM     : 03F8 : 02B8 : diff
XSMAT_41.ROM   : 02C7 : 0004 : diff
XSMAT_42.ROM   : 035B : 0222 : diff
XSMAT_43.ROM   : 0064 : 03F7 : diff
XSMAT_44.ROM   : 0228 : 01DB : diff
XTBOX4L.ROM    : 0267 : 03D5 : diff
XTRUSS.ROM     : 0178 : 0222 : diff
XTVM.ROM       : 03A4 : 0222 : diff
XWARP_B1.ROM   : 01A1 : 0222 : diff
XWARP_B2.ROM   : 023D : 0222 : diff
XWARP_B3.ROM   : 0142 : 0222 : diff
XXMEMXF.ROM    : 01E6 : 006D : diff
XXMTWIN.ROM    : 01FD : 0004 : diff
XXROM.ROM      : 03EB : 0222 : diff
XYRGAPPS.ROM   : 0330 : 0004 : diff
YACHTL.ROM     : 0119 : 0119 : 
YACHTU.ROM     : 01F7 : 01F7 : 
YFNF-3A.ROM    : 0324 : C3B4 : diff
YFNF-3B.ROM    : 0191 : 83F0 : diff
YFNP-1F.ROM    : 00D4 : 00D4 : 
YFNX-4C.ROM    : 0226 : 0226 : 
YFNZ-4G.ROM    : 015B : 015B : 
YLIB-5A.ROM    : 01BF : 01BF : 
YPRT1B.ROM     : 0095 : 0095 : 
YPRT2B.ROM     : 03AB : 03AB : 
YREGAPPS.ROM   : 0121 : 0004 : diff
ZENROM.ROM     : 0081 : 0081 : 
ZEPROM.ROM     : 029F : 029F :
Note: calc = calculated checksum / file = checksum read from the file / diff is show if the two checksum are not equals

edit 1: typos

edit 2: I did this for fun and it is always possible that my checksum calculation is wrong, so the above values are to take with a grain of salt.

edit 3: revised checksum formula

Sylvain Côté
Find all posts by this user
Quote this message in a reply
08-18-2024, 01:42 PM (This post was last modified: 08-18-2024 01:43 PM by Allen.)
Post: #2
RE: HP-41 ROM Checksum
An interesting test! Just to double check, I also implemented in python and got the same results as you did for all ROMS in common.. Unless i missed one by accident.

Code:

import struct
def GetChecksum(ROMFILE):
    fin = open(ROMFILE,'rb').read()
    if len(fin)>0:
        struct_string = '>'+'H'*(len(fin)//2)
        ints = struct.unpack(struct_string,fin)
        csum = sum(ints[:-1]) % 1023
        print(f'{os.path.split(ROMFILE)[-1]}\t{hex((-csum & 1023))}\t{hex(ints[-1])}')

Code:

AdvL1-1B.rom    0x318    0x318
AdvU1-1B.rom    0x2b8    0x2b8
AdvU2-1B.rom    0x4d    0x4d
aecromL.rom    0x3f7    0x3f7
aecromU.rom    0x2bf    0x2bf
Astro-1.rom    0x23c    0x23c
Aviation.rom    0x34f    0x34f
CCD-OSX.ROM    0x397    0x397
CCDL-1B.rom    0x47    0x47
CCDU-2B.rom    0x37f    0x37f
Circt-1A.rom    0x1c    0x1c
Clinc-1A.rom    0x249    0x249
CLRAM1.ROM    0x2af    0x0
CLRAM2.ROM    0x1ef    0x0
DAcqL-1B.rom    0x1bf    0x1bf
DAcqU-1B.rom    0x179    0x179
DatAcL1B.rom    0x1bf    0x1bf
DatAcU1B.rom    0x179    0x179
David-2C.rom    0x362    0x362
ES41L.ROM    0x3bd    0x3bd
ES41U.ROM    0x31b    0x31b
ESMLOS7B.ROM    0x1e    0x1e
EXT-IL.ROM    0x16e    0x16e
EXTFN-1A.ROM    0x119    0x119
ExtIO-1A.rom    0xb6    0xb6
Financ1B.rom    0x32f    0x32f
forth4.rom    0x44    0x44
Forth5.rom    0x130    0x130
Games-1A.rom    0x19e    0x19e
HEPX1D_1.ROM    0x100    0x100
HEPX1D_2.ROM    0x100    0x100
HEPX1D_3.ROM    0x100    0x100
HEPX1D_4.ROM    0x100    0x100
Home-1A.rom    0x3db    0x3db
HPILDv1A.rom    0x327    0x327
HPILDv1B.rom    0x287    0x287
IL-DIAG.ROM    0x55    0x55
Labels.rom    0x361    0x361
LandNav.rom    0x115    0x115
Machn-1A.rom    0x34e    0x34e
Math-1A.rom    0x3a    0x3a
Math-1B.rom    0x4e    0x4e
Math-1C.rom    0xfb    0xfb
Mlrom.rom    0x260    0x260
NavL-1B.rom    0x36b    0x36b
NavU-1B.rom    0x115    0x115
PetrlL1A.rom    0x3e4    0x3e4
PetrlU2A.rom    0x2a2    0x2a2
PlottL1A.rom    0x2a1    0x2a1
PlottU2A.rom    0x260    0x260
PPCL.rom    0x1a7    0x1a7
Ppcrom2.rom    0x113    0x389
PPCU.rom    0x2cd    0x2cd
RAMBOX32.rom    0x389    0x389
Rambx2L.rom    0x22a    0x22a
Rambx2U.rom    0x0    0x0
RealEstL.rom    0x355    0x355
RealEstU.rom    0x1fc    0x1fc
ROMIMG1.ROM    0x3db    0x3db
RSU3_OSL.ROM    0x69    0x69
RSU3_OSU.ROM    0x12    0x12
SANDB-3D.ROM    0x73    0x73
SANDBXL.ROM    0x22e    0x22e
SANDBXU.ROM    0xd9    0xd9
Secur-1A.rom    0x5d    0x5d
ServiceC.rom    0x6b    0x6b
ServiceP.ROM    0x2cc    0x2cc
ServiceX.rom    0x1c7    0x1c7
SGS-GAS.ROM    0x1a7    0x1a7
skwidbc.rom    0x206    0x206
Stat-1B.rom    0x2f1    0x2f1
STNDRD1A.ROM    0x267    0x267
Stress-1A.rom    0x1c2    0x1c2
Stress1A.rom    0x1c2    0x1c2
StructL.rom    0x355    0x355
StructU.rom    0x3a4    0x3a4
Survey1B.rom    0x272    0x272
Therml1A.rom    0x13c    0x13c
Zenrom3b.rom    0x81    0x81
ZEPROM.ROM    0x29f    0x29f

17bii | 32s | 32sii | 41c | 41cv | 41cx | 42s | 48g | 48g+ | 48gx | 50g | 30b

Find all posts by this user
Quote this message in a reply
08-18-2024, 04:46 PM (This post was last modified: 08-18-2024 05:01 PM by J-F Garnier.)
Post: #3
RE: HP-41 ROM Checksum
(08-18-2024 02:14 AM)Sylvain Cote Wrote:  
  • 855 ROM files in rom_files_240731.zip
  • 335 ROM files has a valid checksum
  • 520 ROM files has an invalid checksum

I note that (most of?) the genuine HP application ROMs have the correct checksum, and it's not so surprising that many custom or modern ROMs don't have the right checksum, because it's not as useful as it was at the time to verify a ROM.

But ... can you tell us why you don't get the right value of the checksums of the system ROMs, which are correct ? :-)

Code:
filename       : calc : file : diff : comment
---------------:------:------:------:----------------------------------------------------
NUT0-N.ROM     : 022A : 008C : diff
NUT1-F.ROM     : 01D7 : 00C0 : diff
NUT2-L.ROM     : 0015 : 01B9 : diff

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
08-18-2024, 09:26 PM (This post was last modified: 08-19-2024 01:20 AM by Sylvain Cote.)
Post: #4
RE: HP-41 ROM Checksum
(08-18-2024 04:46 PM)J-F Garnier Wrote:  But ... can you tell us why you don't get the right value of the checksums of the system ROMs, which are correct ? :-)
These ROMs are 41CL specific, they are true 16-bit ROM, like the Y... ROMs.
I can modify my scripts to filter out those 6 extra bits used by the 41CL.

41CL NEWT extended 16 bits NUT instruction structure
  • bits 15 to 14
    • first word of a page
      • 00 = Programmed Flash or RAM page
      • 01 = Reserved
      • 10 = Unprogrammed RAM page
      • 11 = Unprogrammed Flash page
    • any other words - ignored
  • bits 13 to 12 used for turbo handling (bits = this/next instruction)
    • 00 = turbo execute / turbo fetch (if enabled)
    • 01 = normal execute / normal fetch
    • 1x = refetch, normal execute / normal fetch
  • bits 11 to 10 unused - ignored
  • bits 9 to 0 are for NUT instructions

NUT0-N.ROM 16-bit words
Code:
offset : word
000 : 3201
001 : 3006
002 : 32B5
003 : 3006
098 : 33C8
099 : 33CC
09A : 33F7
09B : 3130
09C : 3008
09D : 33C8
09E : 33CC
09F : 3266
0A0 : 33EB
0A1 : 33E0
174 : 303F
175 : 3130
176 : 3051
177 : 3266
180 : 3001
181 : 3100
182 : 33D5
183 : 300C
184 : 33CC
185 : 310F
186 : 3130
187 : 3008
188 : 3399
189 : 309C
199 : 3130
19A : 3050
19B : 3106
19C : 33CC
19D : 304F
19E : 3130
19F : 300C
1A0 : 33B1
1A1 : 309C
1A2 : 31A6
1A3 : 33CB
205 : 33C8
206 : 33CC
207 : 3260
208 : 3046
209 : 33F0
20A : 3270
20B : 3130
20C : 3169
20D : 3106
20E : 3378
20F : 317C
210 : 3366
211 : 310F
212 : 31BC
213 : 3266
214 : 3270
215 : 3038
216 : 310E
217 : 32BA
218 : 32F0
219 : 3038
21A : 32BA
21B : 336E
21C : 30B7
21D : 32F0
21E : 3046
21F : 3270
220 : 33B8
221 : 3358
222 : 30CC
223 : 33A0
3E2 : 3130
3E3 : 30A7
3E4 : 33C8
3E5 : 33CC
3E6 : 32F9
3E7 : 301E
3E8 : 3266
3E9 : 33DB
3F5 : 3130
3F6 : 32FD
3F7 : 3270
3F8 : 33F0
3F9 : 30B8
3FA : 3015
3FB : 300A
55C : 33C8
55D : 33CC
55E : 33A0
55F : 3266
560 : 33E3
89A : 3130
89B : 30D0
89C : 3266
89D : 33FB
B9F : 30EE
BA0 : 33CC
BA1 : 3043
BA2 : 3171
BA3 : 30CC
BA4 : 3366
BA5 : 3325
BA6 : 300E
BA7 : 3022
BA8 : 33C8
BA9 : 30EE
BAA : 3266
BAB : 33A3
BAC : 330B
BAD : 3000
BAE : 3000
BAF : 3000
BB0 : 3000
BB1 : 3000
BB2 : 3000
E97 : 3130
E98 : 30C8
E99 : 32E0
E9A : 33C8
E9B : 33CC
E9C : 303B
E9D : 3266
E9E : 33E3
E9F : 3320
EC6 : 3130
EC7 : 3240
EC8 : 31E6
EC9 : 33C8
ECA : 33CC
ECB : 326D
ECC : 3002
ECD : 3266
ECE : 33DB
ED3 : 3130
ED4 : 33E8
ED5 : 3266
ED6 : 33FB

NUT1-F.ROM 16-bit words
Code:
offset : word
6DE : 33B8
6DF : 32BC
6E0 : 33D8
6E1 : 330C
6E2 : 33A0
6E3 : 33C4
6E4 : 32D8
6E5 : 3358
6E6 : 304E
6E7 : 3130
6E8 : 30FF
6E9 : 33D8
6EA : 31BC
6EB : 310E
6EC : 307C
6ED : 32A0
6EE : 32BE
6EF : 3260
6F0 : 33F1
6F1 : 3058
6F2 : 305B
6F3 : 3065
6F4 : 3073
6F5 : 3087
6F6 : 30A1
6F7 : 30C9
6F8 : 310B
6F9 : 313F
6FA : 318F
6FB : 3215
6FC : 31B0
6FD : 321A
6FE : 3330
6FF : 30A6
700 : 327E
701 : 3067
702 : 327E
703 : 3077
704 : 327E
705 : 308F
706 : 311E
707 : 32D8
708 : 31BE
709 : 33FB
70A : 31A6
70B : 33DB
70C : 33E0
70D : 32D8
70E : 31A6
70F : 33F3
710 : 33E0
711 : 32D8
712 : 3000
713 : 31A6
714 : 33EB
715 : 33E0
716 : 32D8
717 : 3000
718 : 3000
719 : 31A6
71A : 33E3
71B : 33E0

NUT2-L.ROM 16-bit words
Code:
offset : word
7E6 : 3106
7E7 : 3204
7E8 : 33B8
7E9 : 3398
7EA : 33A8
7EB : 30A6
7EC : 333C
7ED : 31B0
7EE : 32FC
7EF : 301C
7F0 : 3110
7F1 : 3286
7F2 : 31BC
7F3 : 315C
7F4 : 3222
7F5 : 301B
7F6 : 3229
7F7 : 30CA
7F8 : 3330
7F9 : 32E6
7FA : 33D3
7FB : 31E0
CE2 : 33C8
CE3 : 33CC
CE4 : 3037
CE5 : 3248
CE6 : 326D
CE7 : 3000
CE8 : 33CC
CE9 : 3360
CEA : 3130
CEB : 3380
CEC : 31E6
CED : 3266
CEE : 33FB

edit: add NEWT bit usage

Sylvain Côté
Find all posts by this user
Quote this message in a reply
08-19-2024, 03:04 AM (This post was last modified: 08-19-2024 11:04 AM by Sylvain Cote.)
Post: #5
RE: HP-41 ROM Checksum
(08-18-2024 04:46 PM)J-F Garnier Wrote:  But ... can you tell us why you don't get the right value of the checksums of the system ROMs, which are correct ? :-)
Filtering out the extra bits I now have the same checksum calculation result as the checksum stored in the file.

NUT0-N.ROM → 008C
Code:
cat NUT0-N.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_) & 1023; $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "%04X\n", $csum1;'

NUT1-F.ROM → 00C0
Code:
cat NUT1-F.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_) & 1023; $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "%04X\n", $csum1;'

NUT2-L.ROM → 01B9
Code:
cat NUT2-L.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_) & 1023; $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "%04X\n", $csum1;'

edit: typo

Sylvain Côté
Find all posts by this user
Quote this message in a reply
08-19-2024, 08:46 AM
Post: #6
RE: HP-41 ROM Checksum
Hi Sylvain,

Why not use the existing *NIX utilities to calculate the checksums i.e. sha1sum

It ain't OVER 'till it's 2 PICK
Find all posts by this user
Quote this message in a reply
08-19-2024, 11:19 AM
Post: #7
RE: HP-41 ROM Checksum
(08-19-2024 08:46 AM)HP67 Wrote:  Why not use the existing *NIX utilities to calculate the checksums i.e. sha1sum
Because I have not find any unix commands that implements something as simple as the HP-41 ROM checksum and on 10-bit.

Sylvain Côté
Find all posts by this user
Quote this message in a reply
08-19-2024, 02:13 PM
Post: #8
RE: HP-41 ROM Checksum
(08-18-2024 09:26 PM)Sylvain Cote Wrote:  
(08-18-2024 04:46 PM)J-F Garnier Wrote:  But ... can you tell us why you don't get the right value of the checksums of the system ROMs, which are correct ? :-)
These ROMs are 41CL specific, they are true 16-bit ROM, like the Y... ROMs.
I can modify my scripts to filter out those 6 extra bits used by the 41CL.

Yes, I knew the extra bits, thus the smiley :-) just to check if you would follow me ...


(08-18-2024 02:14 AM)Sylvain Cote Wrote:  While working on my ZVC Replica & ZENROM HHC presentation, I had to calculate the checksum of an HP-41 ROM.
...
calculate checksum value
Code:
cat ZEPROM_TEST.ROM | xxd -p -u -c 2 | perl -e 'my $word;my $prev; my $curr = 0; while(<>) { $word = hex($_); $prev = $curr; $curr += $word; } my $csum1 = $prev % 1023; $csum1 = (-$csum1) & 1023; printf "%04X\n", $csum1;'
...
I did this for fun and it is always possible that my checksum calculation is wrong, so the above values are to take with a grain of salt.

I've been puzzled by your formula using a modulo 1023 operation (any reference for it?), because the HP algorithm is doing (kind of):

s=0
for each word from 0 to 4094:
   s=s+word
   if s>1023 then s= s & 1023 ; s=s+1
checksum = (-s) & 1023

which is like a addition modulo 1024 with carry roll-over.

Your formula seems to work correctly most of the time but since the modulo 1023 operation can't generate a result of 1023, you can't get a checksum of 1 at the end.
However there is no ROM with a checksum of 1 in your list.
Also, HP's algorithm can't generate a checksum of 0, unless all words are zero.

J-F
Visit this user's website Find all posts by this user
Quote this message in a reply
08-19-2024, 03:13 PM
Post: #9
RE: HP-41 ROM Checksum
(08-19-2024 11:19 AM)Sylvain Cote Wrote:  
(08-19-2024 08:46 AM)HP67 Wrote:  Why not use the existing *NIX utilities to calculate the checksums i.e. sha1sum
Because I have not find any unix commands that implements something as simple as the HP-41 ROM checksum and on 10-bit.

Ah, I did not understand that the HP-41 had a function which you are implementing off platform.

Sorry for the distraction.

It ain't OVER 'till it's 2 PICK
Find all posts by this user
Quote this message in a reply
08-19-2024, 03:54 PM (This post was last modified: 08-19-2024 03:56 PM by Sylvain Cote.)
Post: #10
RE: HP-41 ROM Checksum
(08-19-2024 02:13 PM)J-F Garnier Wrote:  I've been puzzled by your formula using a modulo 1023 operation (any reference for it?), because the HP algorithm is doing (kind of):
Yeah, I have the same worries, I got the calculation methods several years ago but do not remember from where.
I have redone the calculations, but following the "HP-41 MCode for beginners" checksum description instead and it look like it addresses the edge cases, I will publish my results later today.

Sylvain Côté
Find all posts by this user
Quote this message in a reply
08-19-2024, 10:59 PM (This post was last modified: 08-21-2024 01:51 PM by Sylvain Cote.)
Post: #11
RE: HP-41 ROM Checksum
Updated perl script
Code:
perl -e '
  my @files = <*.ROM>; 
  foreach my $file (@files) { 
    my $word = 0; 
    my $word_raw = 0; 
    my $prev = 0; 
    my $curr = 0; 
    my $data = `xxd -p -u -c 2 $file`; 
    foreach (split(/\n/, $data)) { 
      $prev = $curr; 
      $word_raw = hex($_); 
      $word = $word_raw & 1023; 
      $curr += $word; 
      if ($curr > 1023) { 
        $curr = ($curr & 1023) + 1; 
      } 
    } 
    my $csum_calc = (-$prev) & 1023; 
    my $csum_file1 = $word_raw; 
    my $csum_file2 = $word; 
    my $prefix = " "; 
    my $suffix = ""; 
    if (!(($csum_calc == $csum_file1) || ($csum_calc == $csum_file2))) { 
      $prefix = "*"; 
      $suffix = "*** "; 
    } 
    if ($csum_file1 != $csum_file2) { 
      $prefix = "+"; 
      $suffix = sprintf "%04X : %s", $csum_file1, $suffix; 
    } 
    printf "%1s %-14s : Calc= %03X : File= %03X : %s\n", $prefix, $file, $csum_calc, $csum_file2, $suffix; 
  };
' | sort

Command line version
Code:
perl -e 'my @files = <*.ROM>; foreach my $file (@files) { my $word = 0; my $word_raw = 0; my $prev = 0; my $curr = 0; my $data = `xxd -p -u -c 2 $file`; foreach (split(/\n/, $data)) { $prev = $curr; $word_raw = hex($_); $word = $word_raw & 1023; $curr += $word; if ($curr > 1023) { $curr = ($curr & 1023) + 1; } } my $csum_calc = (-$prev) & 1023; my $csum_file1 = $word_raw; my $csum_file2 = $word; my $prefix = " "; my $suffix = ""; if (!(($csum_calc == $csum_file1) || ($csum_calc == $csum_file2))) { $prefix = "*"; $suffix = "*** "; } if ($csum_file1 != $csum_file2) { $prefix = "+"; $suffix = sprintf "%04X : %s", $csum_file1, $suffix; } printf "%1s %-14s : Calc= %03X : File= %03X : %s\n", $prefix, $file, $csum_calc, $csum_file2, $suffix; };' | sort

ROM: identical checksum value (353 files)
Code:
  41ENS-1.ROM    : Calc= 3F8 : File= 3F8 : 
  41ENS-2.ROM    : Calc= 3D7 : File= 3D7 : 
  83TRINH.ROM    : Calc= 31D : File= 31D : 
  ABRAFRA1.ROM   : Calc= 2D5 : File= 2D5 : 
  ABRAFRA2.ROM   : Calc= 340 : File= 340 : 
  ADV-APP.ROM    : Calc= 02E : File= 02E : 
  ADVL1-1B.ROM   : Calc= 318 : File= 318 : 
  ADVU1-1B.ROM   : Calc= 2B8 : File= 2B8 : 
  ADVU2-1B.ROM   : Calc= 04D : File= 04D : 
  AECROML.ROM    : Calc= 3F7 : File= 3F7 : 
  AECROMU.ROM    : Calc= 2BF : File= 2BF : 
  AFDC1L.ROM     : Calc= 0BE : File= 0BE : 
  AFDC1U.ROM     : Calc= 2CE : File= 2CE : 
  AFDC2L.ROM     : Calc= 159 : File= 159 : 
  AFDC2U.ROM     : Calc= 3A1 : File= 3A1 : 
  ALL_00.ROM     : Calc= 000 : File= 000 : 
  AMASTRO.ROM    : Calc= 217 : File= 217 : 
  ANGEL-1.ROM    : Calc= 300 : File= 300 : 
  ANGEL-2.ROM    : Calc= 1D4 : File= 1D4 : 
  ANTENNAS.ROM   : Calc= 1B9 : File= 1B9 : 
  APAC1.ROM      : Calc= 0A8 : File= 0A8 : 
  APAC2.ROM      : Calc= 05E : File= 05E : 
  APAC3.ROM      : Calc= 2A5 : File= 2A5 : 
  APAC4.ROM      : Calc= 0A8 : File= 0A8 : 
  ASTRO-1.ROM    : Calc= 055 : File= 055 : 
  ASTRO-2.ROM    : Calc= 223 : File= 223 : 
  ASTRO1.ROM     : Calc= 23C : File= 23C : 
  ASTROLGY.ROM   : Calc= 031 : File= 031 : 
  ASTROM2.ROM    : Calc= 031 : File= 031 : 
  AUTOFIN.ROM    : Calc= 076 : File= 076 : 
  AUTOSTRT.ROM   : Calc= 2F5 : File= 2F5 : 
  AV1.ROM        : Calc= 19D : File= 19D : 
  AVIATION.ROM   : Calc= 34F : File= 34F : 
  B52DEX.ROM     : Calc= 077 : File= 077 : 
  B52DIO.ROM     : Calc= 20E : File= 20E : 
  BBS1.ROM       : Calc= 09B : File= 09B : 
  BBS2.ROM       : Calc= 2FA : File= 2FA : 
  BBS3.ROM       : Calc= 20B : File= 20B : 
  BCMW.ROM       : Calc= 01C : File= 01C : 
  BGUG_IDC.ROM   : Calc= 0E7 : File= 0E7 : 
  BJ1B.ROM       : Calc= 13C : File= 13C : 
  BLDROM.ROM     : Calc= 3BE : File= 3BE : 
  BOOST1.ROM     : Calc= 0CA : File= 0CA : 
  BOOST2.ROM     : Calc= 166 : File= 166 : 
  BSH1.ROM       : Calc= 1FB : File= 1FB : 
  BSH2.ROM       : Calc= 33F : File= 33F : 
  BSH3.ROM       : Calc= 1D8 : File= 1D8 : 
  BSH4.ROM       : Calc= 0D2 : File= 0D2 : 
  BUDER1-1.ROM   : Calc= 290 : File= 290 : 
  BUDER1-2.ROM   : Calc= 1F7 : File= 1F7 : 
  BUDER2L.ROM    : Calc= 3AE : File= 3AE : 
  BUDER2U.ROM    : Calc= 3EB : File= 3EB : 
  BUDER3.ROM     : Calc= 0E9 : File= 0E9 : 
  BVS-1.ROM      : Calc= 012 : File= 012 : 
  BW1A.ROM       : Calc= 39A : File= 39A : 
  C141BL.ROM     : Calc= 151 : File= 151 : 
  C141BU.ROM     : Calc= 33C : File= 33C : 
  CAB41L.ROM     : Calc= 369 : File= 369 : 
  CAB41U.ROM     : Calc= 2E5 : File= 2E5 : 
  CALCS1.ROM     : Calc= 0B1 : File= 0B1 : 
  CALCS2.ROM     : Calc= 0F5 : File= 0F5 : 
  CARDR-1G.ROM   : Calc= 0D4 : File= 0D4 : 
  CCD-OSX.ROM    : Calc= 397 : File= 397 : 
  CCDL-1B.ROM    : Calc= 047 : File= 047 : 
  CCDU-2B.ROM    : Calc= 37F : File= 37F : 
  CHEMUSER.ROM   : Calc= 1CD : File= 1CD : 
  CIRCUIT.ROM    : Calc= 01C : File= 01C : 
  CLILUP.ROM     : Calc= 0B7 : File= 0B7 : 
  CLINICAL.ROM   : Calc= 249 : File= 249 : 
  CMA-1.ROM      : Calc= 1DA : File= 1DA : 
  CMT-200.ROM    : Calc= 013 : File= 013 : 
  CMT-300L.ROM   : Calc= 0D8 : File= 0D8 : 
  CMT-300U.ROM   : Calc= 027 : File= 027 : 
  CMT_1.ROM      : Calc= 24A : File= 24A : 
  CMT_2.ROM      : Calc= 315 : File= 315 : 
  CMT_3.ROM      : Calc= 314 : File= 314 : 
  CMT_4.ROM      : Calc= 23C : File= 23C : 
  COGO_PGC.ROM   : Calc= 383 : File= 383 : 
  COGO_PGE.ROM   : Calc= 275 : File= 275 : 
  COGO_PGF.ROM   : Calc= 3B3 : File= 3B3 : 
  CVPAK1.ROM     : Calc= 18C : File= 18C : 
  CVPAK2.ROM     : Calc= 192 : File= 192 : 
  DATAACQL.ROM   : Calc= 1BF : File= 1BF : 
  DATAACQU.ROM   : Calc= 179 : File= 179 : 
  DAVID-2C.ROM   : Calc= 362 : File= 362 : 
  DIAMOND.ROM    : Calc= 02B : File= 02B : 
  DISASM4C.ROM   : Calc= 35A : File= 35A : 
  DISASM4D.ROM   : Calc= 063 : File= 063 : 
  DISASM4E.ROM   : Calc= 08E : File= 08E : 
  DIST7_2.ROM    : Calc= 356 : File= 356 : 
  DIST7_3.ROM    : Calc= 19B : File= 19B : 
  DIST7_4.ROM    : Calc= 053 : File= 053 : 
  DRP16K-1.ROM   : Calc= 358 : File= 358 : 
  DRP16K-2.ROM   : Calc= 282 : File= 282 : 
  DRP16K-3.ROM   : Calc= 2E7 : File= 2E7 : 
  DRP16K-4.ROM   : Calc= 075 : File= 075 : 
  DST12_1L.ROM   : Calc= 19F : File= 19F : 
  DST12_1U.ROM   : Calc= 287 : File= 287 : 
  DST12_2L.ROM   : Calc= 313 : File= 313 : 
  DSTAT.ROM      : Calc= 33F : File= 33F : 
  DURPRG1.ROM    : Calc= 2BC : File= 2BC : 
  DURPRG2.ROM    : Calc= 092 : File= 092 : 
  DURPRG3.ROM    : Calc= 215 : File= 215 : 
  DURPRG4.ROM    : Calc= 3D5 : File= 3D5 : 
  DURPRG5.ROM    : Calc= 3CB : File= 3CB : 
  DURPRG6.ROM    : Calc= 3FE : File= 3FE : 
  DURPRG7.ROM    : Calc= 039 : File= 039 : 
  DUR_PRG1.ROM   : Calc= 2BC : File= 2BC : 
  DUR_PRG4.ROM   : Calc= 3D5 : File= 3D5 : 
  E-6A_1.ROM     : Calc= 115 : File= 115 : 
  E-6A_2.ROM     : Calc= 379 : File= 379 : 
  E-6A_3.ROM     : Calc= 122 : File= 122 : 
  E-6A_4.ROM     : Calc= 03D : File= 03D : 
  E3AFMS-1.ROM   : Calc= 0E7 : File= 0E7 : 
  E3AFMS-2.ROM   : Calc= 02E : File= 02E : 
  ES41L.ROM      : Calc= 3BD : File= 3BD : 
  ES41U.ROM      : Calc= 31B : File= 31B : 
  ESMLDL.ROM     : Calc= 01E : File= 01E : 
  EXILPS.ROM     : Calc= 00D : File= 00D : 
  EXT-IL.ROM     : Calc= 29F : File= 29F : 
  EXTIO-1A.ROM   : Calc= 0B6 : File= 0B6 : 
  FACCL.ROM      : Calc= 200 : File= 200 : 
  FACCU.ROM      : Calc= 0C0 : File= 0C0 : 
  FAIRFLDL.ROM   : Calc= 341 : File= 341 : 
  FAIRFLDU.ROM   : Calc= 28B : File= 28B : 
  FCAST1-1.ROM   : Calc= 1E8 : File= 1E8 : 
  FCAST3-1.ROM   : Calc= 342 : File= 342 : 
  FINANCE.ROM    : Calc= 048 : File= 048 : 
  FLASH-1A.ROM   : Calc= 135 : File= 135 : 
  FORCAST1.ROM   : Calc= 1E8 : File= 1E8 : 
  FORCAST2.ROM   : Calc= 038 : File= 038 : 
  FORTH4.ROM     : Calc= 132 : File= 132 : 
  FORTH5.ROM     : Calc= 08C : File= 08C : 
  GAMES-1A.ROM   : Calc= 19E : File= 19E : 
  GASPRP1.ROM    : Calc= 356 : File= 356 : 
  GASPRP2.ROM    : Calc= 0E6 : File= 0E6 : 
  GASPRP6.ROM    : Calc= 0C0 : File= 0C0 : 
  GE126A-1.ROM   : Calc= 221 : File= 221 : 
  GE126A-2.ROM   : Calc= 069 : File= 069 : 
  GEIR.ROM       : Calc= 0C0 : File= 0C0 : 
  GMAC1.ROM      : Calc= 31F : File= 31F : 
  GMAC2.ROM      : Calc= 36B : File= 36B : 
  GMAC3L.ROM     : Calc= 03B : File= 03B : 
  GMAC3U.ROM     : Calc= 3F7 : File= 3F7 : 
  GPSERVIC.ROM   : Calc= 303 : File= 303 : 
  HANDY.ROM      : Calc= 288 : File= 288 : 
  HEPRAM.ROM     : Calc= 34C : File= 34C : 
  HEPX2-1D.ROM   : Calc= 100 : File= 100 : 
  HEPX3-1D.ROM   : Calc= 100 : File= 100 : 
  HEPX4-1D.ROM   : Calc= 100 : File= 100 : 
  HOMEMGT.ROM    : Calc= 3DB : File= 3DB : 
  HPILDEVL.ROM   : Calc= 287 : File= 287 : 
  HPILDEVU.ROM   : Calc= 327 : File= 327 : 
  HPILDIAG.ROM   : Calc= 055 : File= 055 : 
  HPP-1.ROM      : Calc= 196 : File= 196 : 
  HPP-2.ROM      : Calc= 3FF : File= 3FF : 
  ICEBOX1H.ROM   : Calc= 0DB : File= 0DB : 
  ICODE.ROM      : Calc= 1EF : File= 1EF : 
  ILMOD-1H.ROM   : Calc= 106 : File= 106 : 
  ILPRT-2E.ROM   : Calc= 387 : File= 387 : 
  IMSSYS4L.ROM   : Calc= 1D0 : File= 1D0 : 
  IMSSYS4U.ROM   : Calc= 14C : File= 14C : 
  INITRSU.ROM    : Calc= 0E0 : File= 0E0 : 
  IPALL1.ROM     : Calc= 2DE : File= 2DE : 
  IPALL2.ROM     : Calc= 272 : File= 272 : 
  IRPR-1B.ROM    : Calc= 12F : File= 12F : 
  IRPR-3B.ROM    : Calc= 14A : File= 14A : 
  ISENE.ROM      : Calc= 3FC : File= 3FC : 
  JMBMATHL.ROM   : Calc= 32E : File= 32E : 
  JMBMATHU.ROM   : Calc= 2C7 : File= 2C7 : 
  KACHELN1.ROM   : Calc= 19F : File= 19F : 
  KACHELN2.ROM   : Calc= 1A3 : File= 1A3 : 
  KC135_1L.ROM   : Calc= 310 : File= 310 : 
  KC135_1U.ROM   : Calc= 2CA : File= 2CA : 
  KC135_2.ROM    : Calc= 031 : File= 031 : 
  KERMI2K.ROM    : Calc= 176 : File= 176 : 
  KHP4LIB.ROM    : Calc= 32F : File= 32F : 
  KHPBIN.ROM     : Calc= 1F3 : File= 1F3 : 
  L119L.ROM      : Calc= 0A2 : File= 0A2 : 
  L119U.ROM      : Calc= 2FA : File= 2FA : 
  LABELS.ROM     : Calc= 361 : File= 361 : 
  LADYBUG1.ROM   : Calc= 2A2 : File= 2A2 : 
  LADYBUG2.ROM   : Calc= 232 : File= 232 : 
  LAITRAM.ROM    : Calc= 150 : File= 150 : 
  LANDNAV.ROM    : Calc= 0C9 : File= 0C9 : 
  LBLAPP4E.ROM   : Calc= 0A9 : File= 0A9 : 
  LOGANA-1.ROM   : Calc= 300 : File= 300 : 
  LOGANA-2.ROM   : Calc= 354 : File= 354 : 
  LOGPAC_1.ROM   : Calc= 339 : File= 339 : 
  LOGPAC_2.ROM   : Calc= 046 : File= 046 : 
  LOGPAC_3.ROM   : Calc= 2F4 : File= 2F4 : 
  LOGPAC_4.ROM   : Calc= 3C2 : File= 3C2 : 
  MACHINE.ROM    : Calc= 34E : File= 34E : 
  MARKS3A.ROM    : Calc= 12C : File= 12C : 
  MATH-1D.ROM    : Calc= 0A4 : File= 0A4 : 
  MAX2E.ROM      : Calc= 2DC : File= 2DC : 
  MBK-EP-1.ROM   : Calc= 00B : File= 00B : 
  MBK-EP-2.ROM   : Calc= 2E2 : File= 2E2 : 
  MBK-EP-3.ROM   : Calc= 010 : File= 010 : 
  MCTEST.ROM     : Calc= 33E : File= 33E : 
  MDP1L.ROM      : Calc= 144 : File= 144 : 
  MDP1U.ROM      : Calc= 364 : File= 364 : 
  MDP2L.ROM      : Calc= 1F0 : File= 1F0 : 
  MDP2U.ROM      : Calc= 1DC : File= 1DC : 
  MIL-ENGL.ROM   : Calc= 2C7 : File= 2C7 : 
  ML-IDC_L.ROM   : Calc= 3CD : File= 3CD : 
  ML-IDC_U.ROM   : Calc= 33A : File= 33A : 
  MLABELS.ROM    : Calc= 361 : File= 361 : 
  MLEPR_1H.ROM   : Calc= 30D : File= 30D : 
  MLROM.ROM      : Calc= 260 : File= 260 : 
  MMEPROM.ROM    : Calc= 2B1 : File= 2B1 : 
  MORTAR.ROM     : Calc= 2EE : File= 2EE : 
  MOUNT1C.ROM    : Calc= 217 : File= 217 : 
  MPL2V1F.ROM    : Calc= 11B : File= 11B : 
  MUECKEL.ROM    : Calc= 189 : File= 189 : 
  MUECKEU.ROM    : Calc= 02E : File= 02E : 
  MW6KOELN.ROM   : Calc= 388 : File= 388 : 
  MWKLN3.ROM     : Calc= 10A : File= 10A : 
  MWKLN4L.ROM    : Calc= 0D8 : File= 0D8 : 
  MWKLN4U.ROM    : Calc= 35A : File= 35A : 
  NAVCOM2L.ROM   : Calc= 0F1 : File= 0F1 : 
  NAVCOM2U.ROM   : Calc= 1A2 : File= 1A2 : 
  NAVL-1B.ROM    : Calc= 36B : File= 36B : 
  NAVPAC2L.ROM   : Calc= 18B : File= 18B : 
  NAVU-1B.ROM    : Calc= 115 : File= 115 : 
  NFCROM.ROM     : Calc= 071 : File= 071 : 
  NUT0-HT.ROM    : Calc= 33A : File= 33A : 
  NUT0-N.ROM     : Calc= 08C : File= 08C : 
  NUT0-O.ROM     : Calc= 198 : File= 198 : 
  NUT1-F.ROM     : Calc= 0C0 : File= 0C0 : 
  NUT1-HT.ROM    : Calc= 0C0 : File= 0C0 : 
  NUT2-HT.ROM    : Calc= 0F4 : File= 0F4 : 
  NUT2-L.ROM     : Calc= 1B9 : File= 1B9 : 
  NUT2-M.ROM     : Calc= 0EE : File= 0EE : 
  NUTIP-1A.ROM   : Calc= 23D : File= 23D : 
  OBCSYS.ROM     : Calc= 244 : File= 244 : 
  OILWELLL.ROM   : Calc= 1FD : File= 1FD : 
  OILWELLU.ROM   : Calc= 2E0 : File= 2E0 : 
  OS4-2.ROM      : Calc= 15C : File= 15C : 
  OS4.ROM        : Calc= 20D : File= 20D : 
  OVTROP2L.ROM   : Calc= 1CC : File= 1CC : 
  OVTROP2U.ROM   : Calc= 288 : File= 288 : 
  PAGE1.ROM      : Calc= 36B : File= 36B : 
  PAGE2.ROM      : Calc= 1E7 : File= 1E7 : 
  PANAMEL.ROM    : Calc= 2CA : File= 2CA : 
  PANAMEU.ROM    : Calc= 10A : File= 10A : 
  PCODER.ROM     : Calc= 0FA : File= 0FA : 
  PETROLL.ROM    : Calc= 3E4 : File= 3E4 : 
  PETROLU.ROM    : Calc= 2A2 : File= 2A2 : 
  PK_ALPH.ROM    : Calc= 0EF : File= 0EF : 
  PK_FLAG.ROM    : Calc= 329 : File= 329 : 
  PK_MATH.ROM    : Calc= 039 : File= 039 : 
  PK_PROG.ROM    : Calc= 197 : File= 197 : 
  PK_TIME.ROM    : Calc= 0F1 : File= 0F1 : 
  PLAY1C.ROM     : Calc= 362 : File= 362 : 
  PLOTTERL.ROM   : Calc= 2A1 : File= 2A1 : 
  PLOTTERU.ROM   : Calc= 260 : File= 260 : 
  PPC-MELB.ROM   : Calc= 16C : File= 16C : 
  PPCL.ROM       : Calc= 1A7 : File= 1A7 : 
  PPCU.ROM       : Calc= 2CD : File= 2CD : 
  PRIDE1.ROM     : Calc= 1E0 : File= 1E0 : 
  PRIDE2.ROM     : Calc= 0A1 : File= 0A1 : 
  PRINTER.ROM    : Calc= 36E : File= 36E : 
  PROFIL.ROM     : Calc= 263 : File= 263 : 
  PROFIU.ROM     : Calc= 0EC : File= 0EC : 
  PRTSRVC.ROM    : Calc= 2CC : File= 2CC : 
  PSRVC-2C.ROM   : Calc= 17E : File= 17E : 
  RACETR-1.ROM   : Calc= 056 : File= 056 : 
  RADIAK-1.ROM   : Calc= 0B1 : File= 0B1 : 
  RAMBOX32.ROM   : Calc= 389 : File= 389 : 
  REALESTL.ROM   : Calc= 355 : File= 355 : 
  REALESTU.ROM   : Calc= 1FC : File= 1FC : 
  RHODESII.ROM   : Calc= 109 : File= 109 : 
  ROAM-0A.ROM    : Calc= 34B : File= 34B : 
  RSU_OSL.ROM    : Calc= 069 : File= 069 : 
  RSU_OSU.ROM    : Calc= 012 : File= 012 : 
  SANDBOXL.ROM   : Calc= 2A4 : File= 2A4 : 
  SANDBOXU.ROM   : Calc= 2C9 : File= 2C9 : 
  SEAKING.ROM    : Calc= 131 : File= 131 : 
  SECURITY.ROM   : Calc= 05D : File= 05D : 
  SERVICE.ROM    : Calc= 1C7 : File= 1C7 : 
  SGS-GAS.ROM    : Calc= 1A7 : File= 1A7 : 
  SIM12L.ROM     : Calc= 383 : File= 383 : 
  SIM34L.ROM     : Calc= 275 : File= 275 : 
  SIM34U.ROM     : Calc= 3B3 : File= 3B3 : 
  SIMPLEX.ROM    : Calc= 0C2 : File= 0C2 : 
  SKWIDBC.ROM    : Calc= 206 : File= 206 : 
  SLANTR.ROM     : Calc= 04E : File= 04E : 
  SNEAP1.ROM     : Calc= 3D8 : File= 3D8 : 
  SNEAP2.ROM     : Calc= 217 : File= 217 : 
  SNEAP3.ROM     : Calc= 1F0 : File= 1F0 : 
  SNEAP4.ROM     : Calc= 2D0 : File= 2D0 : 
  SNEAP5.ROM     : Calc= 119 : File= 119 : 
  SNEAP6.ROM     : Calc= 26D : File= 26D : 
  SPEED2L.ROM    : Calc= 33C : File= 33C : 
  SPEED2U.ROM    : Calc= 10B : File= 10B : 
  SRVC-1D.ROM    : Calc= 3A1 : File= 3A1 : 
  SRVC-2B.ROM    : Calc= 0B1 : File= 0B1 : 
  STANDARD.ROM   : Calc= 14C : File= 14C : 
  STAT-1B.ROM    : Calc= 2F1 : File= 2F1 : 
  STRESS.ROM     : Calc= 1C2 : File= 1C2 : 
  STRUCTL.ROM    : Calc= 355 : File= 355 : 
  STRUCTU.ROM    : Calc= 3A4 : File= 3A4 : 
  ST_DMNGO.ROM   : Calc= 36B : File= 36B : 
  SUNSHT-1.ROM   : Calc= 1F4 : File= 1F4 : 
  SUNSHT-2.ROM   : Calc= 3F7 : File= 3F7 : 
  SUPRROML.ROM   : Calc= 2E2 : File= 2E2 : 
  SUPRROMU.ROM   : Calc= 19F : File= 19F : 
  SURVEY.ROM     : Calc= 272 : File= 272 : 
  SWORDS.ROM     : Calc= 181 : File= 181 : 
  THERMAL.ROM    : Calc= 13C : File= 13C : 
  TI2023.ROM     : Calc= 306 : File= 306 : 
  TI2024.ROM     : Calc= 058 : File= 058 : 
  TIME-3A.ROM    : Calc= 35F : File= 35F : 
  TIME-3B.ROM    : Calc= 1BA : File= 1BA : 
  TIME-HT.ROM    : Calc= 1BC : File= 1BC : 
  TINKER1.ROM    : Calc= 0E7 : File= 0E7 : 
  TINKER2.ROM    : Calc= 02E : File= 02E : 
  TMAX3A.ROM     : Calc= 340 : File= 340 : 
  TOMSROM.ROM    : Calc= 2F4 : File= 2F4 : 
  TOOLING.ROM    : Calc= 108 : File= 108 : 
  TOULMATH.ROM   : Calc= 234 : File= 234 : 
  TP2243.ROM     : Calc= 29B : File= 29B : 
  TP2244.ROM     : Calc= 0C1 : File= 0C1 : 
  TS4031.ROM     : Calc= 1D0 : File= 1D0 : 
  TS4032.ROM     : Calc= 2CC : File= 2CC : 
  TS4033.ROM     : Calc= 05F : File= 05F : 
  TS4034.ROM     : Calc= 038 : File= 038 : 
  TURBOL.ROM     : Calc= 3F7 : File= 3F7 : 
  TURBOU.ROM     : Calc= 2DC : File= 2DC : 
  UPDAT-4D.ROM   : Calc= 0D4 : File= 0D4 : 
  UPHST-2A.ROM   : Calc= 07C : File= 07C : 
  USPSL.ROM      : Calc= 137 : File= 137 : 
  USPSU.ROM      : Calc= 3A2 : File= 3A2 : 
  VEGAS1C.ROM    : Calc= 019 : File= 019 : 
  WAND-1F.ROM    : Calc= 192 : File= 192 : 
  WPNEFF_L.ROM   : Calc= 021 : File= 021 : 
  WPNEFF_U.ROM   : Calc= 0D2 : File= 0D2 : 
  WWRAMBOX.ROM   : Calc= 22A : File= 22A : 
  XFNS3-3B.ROM   : Calc= 228 : File= 228 : 
  XFNS3-HT.ROM   : Calc= 3AB : File= 3AB : 
  XFNS5-2D.ROM   : Calc= 267 : File= 267 : 
  XFNS5-HT.ROM   : Calc= 0AE : File= 0AE : 
  YACHTL.ROM     : Calc= 119 : File= 119 : 
  YACHTU.ROM     : Calc= 1F7 : File= 1F7 : 
  YFNP-1F.ROM    : Calc= 0D4 : File= 0D4 : 
  YFNX-4C.ROM    : Calc= 226 : File= 226 : 
  YFNZ-4G.ROM    : Calc= 15B : File= 15B : 
  YLIB-5A.ROM    : Calc= 1BF : File= 1BF : 
  YPRT1B.ROM     : Calc= 095 : File= 095 : 
  YPRT2B.ROM     : Calc= 3AB : File= 3AB : 
  ZENROM.ROM     : Calc= 081 : File= 081 : 
  ZEPROM.ROM     : Calc= 29F : File= 29F :

ROM: different checksum value (496 files)
Code:
* 2022DEC.ROM    : Calc= 0A9 : File= 000 : *** 
* 2022NOV.ROM    : Calc= 379 : File= 000 : *** 
* 2022OCT.ROM    : Calc= 0E7 : File= 000 : *** 
* 2022SEP.ROM    : Calc= 2BF : File= 000 : *** 
* 2023APR.ROM    : Calc= 06B : File= 000 : *** 
* 2023AUG.ROM    : Calc= 380 : File= 000 : *** 
* 2023DEC.ROM    : Calc= 34C : File= 000 : *** 
* 2023FEB.ROM    : Calc= 3AC : File= 000 : *** 
* 2023JAN.ROM    : Calc= 127 : File= 000 : *** 
* 2023JUL.ROM    : Calc= 26D : File= 000 : *** 
* 2023JUN.ROM    : Calc= 08C : File= 000 : *** 
* 2023MAR.ROM    : Calc= 1A7 : File= 000 : *** 
* 2023MAY.ROM    : Calc= 05F : File= 000 : *** 
* 2023NOV.ROM    : Calc= 16E : File= 000 : *** 
* 2023OCT.ROM    : Calc= 2D2 : File= 000 : *** 
* 2023SEP.ROM    : Calc= 0A1 : File= 000 : *** 
* 2024APR.ROM    : Calc= 15A : File= 000 : *** 
* 2024AUG.ROM    : Calc= 35C : File= 000 : *** 
* 2024FEB.ROM    : Calc= 211 : File= 000 : *** 
* 2024JAN.ROM    : Calc= 3A0 : File= 000 : *** 
* 2024JUL.ROM    : Calc= 1B9 : File= 000 : *** 
* 2024JUN.ROM    : Calc= 342 : File= 000 : *** 
* 2024MAR.ROM    : Calc= 24F : File= 000 : *** 
* 2024MAY.ROM    : Calc= 001 : File= 000 : *** 
* 41ZDIAG.ROM    : Calc= 23A : File= 056 : *** 
* 41ZL1.ROM      : Calc= 1A4 : File= 2FA : *** 
* 41ZL2.ROM      : Calc= 170 : File= 000 : *** 
* 41ZU1.ROM      : Calc= 085 : File= 273 : *** 
* 41ZU2.ROM      : Calc= 103 : File= 000 : *** 
* 441ZL.ROM      : Calc= 06D : File= 2FA : *** 
* 441ZU.ROM      : Calc= 00E : File= 273 : *** 
* 4WINS.ROM      : Calc= 141 : File= 222 : *** 
* ACTION1.ROM    : Calc= 3F0 : File= 39F : *** 
* ACTION2.ROM    : Calc= 14A : File= 39F : *** 
* ADVMTRX1.ROM   : Calc= 375 : File= 318 : *** 
* ADVMTRX2.ROM   : Calc= 234 : File= 2B8 : *** 
* ADVMTRX3.ROM   : Calc= 07D : File= 04D : *** 
* ADVPRT1.ROM    : Calc= 2ED : File= 222 : *** 
* ADVPRT2.ROM    : Calc= 1CF : File= 222 : *** 
* ADVTGMTH.ROM   : Calc= 0D0 : File= 06D : *** 
* AD_ASTRA.ROM   : Calc= 1B7 : File= 222 : *** 
* AEC3L.ROM      : Calc= 2A0 : File= 3F7 : *** 
* AEC3U.ROM      : Calc= 10E : File= 2BF : *** 
* AECPROG.ROM    : Calc= 11F : File= 3F7 : *** 
* AECSLVR.ROM    : Calc= 309 : File= 3F7 : *** 
* ALPHA4.ROM     : Calc= 37E : File= 397 : *** 
* ALPHA44.ROM    : Calc= 03E : File= 397 : *** 
* AMCOSX4.ROM    : Calc= 292 : File= 229 : *** 
* ANCHORAG.ROM   : Calc= 176 : File= 000 : *** 
* AP550-2.ROM    : Calc= 150 : File= 2BB : *** 
* AP550-3L.ROM   : Calc= 125 : File= 11C : *** 
* AP550-3U.ROM   : Calc= 344 : File= 33B : *** 
* ASSEM3.ROM     : Calc= 349 : File= 300 : *** 
* ASSEMB4.ROM    : Calc= 125 : File= 301 : *** 
* ASTRO-3.ROM    : Calc= 01E : File= 00F : *** 
* ASTRO10A.ROM   : Calc= 27D : File= 000 : *** 
* ASTRO10B.ROM   : Calc= 36B : File= 000 : *** 
* ASTROREF.ROM   : Calc= 1F5 : File= 000 : *** 
* ASTROUI.ROM    : Calc= 2B7 : File= 00F : *** 
* AUDIO1.ROM     : Calc= 081 : File= 025 : *** 
* AUDIO2.ROM     : Calc= 374 : File= 346 : *** 
* BAFFLED.ROM    : Calc= 1A4 : File= 222 : *** 
* BALLIST.ROM    : Calc= 34E : File= 222 : *** 
* BASIC.ROM      : Calc= 187 : File= 34C : *** 
* BASIC1.ROM     : Calc= 1B5 : File= 34C : *** 
* BASIC2.ROM     : Calc= 07C : File= 222 : *** 
* BBALL1.ROM     : Calc= 0F1 : File= 222 : *** 
* BBALL2.ROM     : Calc= 114 : File= 222 : *** 
* BBS4.ROM       : Calc= 207 : File= 211 : *** 
* BESSEL1.ROM    : Calc= 1B3 : File= 111 : *** 
* BESSEL2.ROM    : Calc= 024 : File= 111 : *** 
* BMF1.ROM       : Calc= 19E : File= 39F : *** 
* BMF2.ROM       : Calc= 2AC : File= 39F : *** 
* BMF3.ROM       : Calc= 141 : File= 39F : *** 
* BMF4.ROM       : Calc= 328 : File= 39F : *** 
* BMF5.ROM       : Calc= 249 : File= 39F : *** 
* BMF6.ROM       : Calc= 0DB : File= 39F : *** 
* BMF7.ROM       : Calc= 191 : File= 39F : *** 
* BMF8.ROM       : Calc= 1FA : File= 39F : *** 
* BSMS.ROM       : Calc= 009 : File= 34C : *** 
* BUFFER.ROM     : Calc= 305 : File= 056 : *** 
* CARDIO.ROM     : Calc= 1A2 : File= 222 : *** 
* CCDADV.ROM     : Calc= 3FC : File= 222 : *** 
* CCDAPPS.ROM    : Calc= 327 : File= 222 : *** 
* CFIT1.ROM      : Calc= 3E3 : File= 004 : *** 
* CFIT2.ROM      : Calc= 279 : File= 004 : *** 
* CHAOS.ROM      : Calc= 023 : File= 222 : *** 
* CHEMENG.ROM    : Calc= 315 : File= 222 : *** 
* CHEMIST2.ROM   : Calc= 395 : File= 34C : *** 
* CHESS1.ROM     : Calc= 3F3 : File= 222 : *** 
* CHESS2.ROM     : Calc= 339 : File= 39F : *** 
* CIPW.ROM       : Calc= 3AB : File= 222 : *** 
* CIVU1.ROM      : Calc= 3FB : File= 222 : *** 
* CIVU2.ROM      : Calc= 35B : File= 333 : *** 
* CLUTLSB1.ROM   : Calc= 29F : File= 1DB : *** 
* CLUTLSB2.ROM   : Calc= 368 : File= 1DB : *** 
* CLUTLSB3.ROM   : Calc= 167 : File= 100 : *** 
* CLUTLSB4.ROM   : Calc= 121 : File= 100 : *** 
* CLXPREGS.ROM   : Calc= 19F : File= 004 : *** 
* CNTLSYS.ROM    : Calc= 1BD : File= 222 : *** 
* COGO_PGD.ROM   : Calc= 176 : File= 375 : *** 
* CONTOUR.ROM    : Calc= 2A7 : File= 222 : *** 
* COUNTRY.ROM    : Calc= 0E0 : File= 222 : *** 
* CPXMTRX.ROM    : Calc= 086 : File= 222 : *** 
* CRTVONK.ROM    : Calc= 209 : File= 111 : *** 
* CRYPTO41.ROM   : Calc= 30F : File= 1DB : *** 
* CVLENG.ROM     : Calc= 11D : File= 222 : *** 
* DATALOD1.ROM   : Calc= 00D : File= 222 : *** 
* DATALOD2.ROM   : Calc= 163 : File= 222 : *** 
* DATALOD3.ROM   : Calc= 018 : File= 222 : *** 
* DATALOD4.ROM   : Calc= 235 : File= 222 : *** 
* DBLDOWN.ROM    : Calc= 335 : File= 222 : *** 
* DERIVE1.ROM    : Calc= 1DE : File= 000 : *** 
* DERIVE2.ROM    : Calc= 27F : File= 000 : *** 
* DERIVE41.ROM   : Calc= 160 : File= 000 : *** 
* DERIVEZ1.ROM   : Calc= 2D0 : File= 000 : *** 
* DERIVEZ2.ROM   : Calc= 303 : File= 000 : *** 
* DIFEQ1.ROM     : Calc= 26C : File= 222 : *** 
* DIFEQ2.ROM     : Calc= 2D8 : File= 222 : *** 
* DIFFGEO5.ROM   : Calc= 11D : File= 000 : *** 
* DIFFGEOM.ROM   : Calc= 0AE : File= 000 : *** 
* DIGITPAC.ROM   : Calc= 31C : File= 327 : *** 
* DIST7_1.ROM    : Calc= 064 : File= 3D3 : *** 
* DIVER.ROM      : Calc= 2A2 : File= 222 : *** 
* DIVINAT.ROM    : Calc= 200 : File= 000 : *** 
* DRVITG1.ROM    : Calc= 086 : File= 000 : *** 
* DRVITG2.ROM    : Calc= 094 : File= 000 : *** 
* DTCOMPAR.ROM   : Calc= 102 : File= 004 : *** 
* DUAL_APP.ROM   : Calc= 21C : File= 222 : *** 
* DUR_PRG2.ROM   : Calc= 06A : File= 092 : *** 
* DUR_PRG3.ROM   : Calc= 205 : File= 215 : *** 
* DYERKA.ROM     : Calc= 0A5 : File= 000 : *** 
* ELECENG.ROM    : Calc= 12E : File= 000 : *** 
* ELIPAPPS.ROM   : Calc= 28C : File= 222 : *** 
* ELLIPREF.ROM   : Calc= 39C : File= 000 : *** 
* ELLIPSOI.ROM   : Calc= 1AE : File= 000 : *** 
* ELLIPTIC.ROM   : Calc= 23E : File= 222 : *** 
* ENGLISH.ROM    : Calc= 399 : File= 222 : *** 
* EPH2018A.ROM   : Calc= 303 : File= 000 : *** 
* EPH2018B.ROM   : Calc= 1C5 : File= 000 : *** 
* EPIDEMIC.ROM   : Calc= 203 : File= 222 : *** 
* ETSII3A.ROM    : Calc= 149 : File= 004 : *** 
* ETSII3B.ROM    : Calc= 303 : File= 004 : *** 
* ETSII4A.ROM    : Calc= 3B1 : File= 004 : *** 
* ETSII4B.ROM    : Calc= 24D : File= 004 : *** 
* ETSII5A.ROM    : Calc= 0B7 : File= 004 : *** 
* ETSII5B.ROM    : Calc= 040 : File= 004 : *** 
* ETSII6A.ROM    : Calc= 126 : File= 004 : *** 
* EVAL_1H.ROM    : Calc= 13D : File= 222 : *** 
* EVAL_2H.ROM    : Calc= 3F8 : File= 222 : *** 
* EVAL_3H.ROM    : Calc= 016 : File= 222 : *** 
* EVAL_3K.ROM    : Calc= 0BD : File= 222 : *** 
* EVAL_APP.ROM   : Calc= 0EE : File= 222 : *** 
* EVAL_EQN.ROM   : Calc= 177 : File= 222 : *** 
* EVAL_VF.ROM    : Calc= 042 : File= 222 : *** 
* FCALAS1.ROM    : Calc= 072 : File= 004 : *** 
* FCALAS2.ROM    : Calc= 06C : File= 004 : *** 
* FILTERS1.ROM   : Calc= 054 : File= 222 : *** 
* FILTERS2.ROM   : Calc= 177 : File= 222 : *** 
* FISHSTOK.ROM   : Calc= 100 : File= 222 : *** 
* FLUIDDYN.ROM   : Calc= 07D : File= 222 : *** 
* FOR_FEE.ROM    : Calc= 223 : File= 004 : *** 
* FRNCHADV.ROM   : Calc= 27D : File= 39F : *** 
* FUN1.ROM       : Calc= 18C : File= 39F : *** 
* FUN2.ROM       : Calc= 093 : File= 39F : *** 
* FUN3.ROM       : Calc= 221 : File= 39F : *** 
* FUN4.ROM       : Calc= 2E4 : File= 39F : *** 
* GAMESB1.ROM    : Calc= 00D : File= 222 : *** 
* GAMESB2.ROM    : Calc= 1E5 : File= 222 : *** 
* GAMEZONE.ROM   : Calc= 06B : File= 222 : *** 
* GELENKGT.ROM   : Calc= 1BF : File= 222 : *** 
* GEOMETRY.ROM   : Calc= 00E : File= 222 : *** 
* GEOMTRY.ROM    : Calc= 155 : File= 222 : *** 
* GERMAN1.ROM    : Calc= 3A8 : File= 222 : *** 
* GERMAN2.ROM    : Calc= 0B3 : File= 222 : *** 
* GJM_2B_1.ROM   : Calc= 304 : File= 315 : *** 
* GJM_2B_2.ROM   : Calc= 392 : File= 334 : *** 
* GONG1.ROM      : Calc= 2D2 : File= 222 : *** 
* GONG2.ROM      : Calc= 03B : File= 222 : *** 
* GPROPP3.ROM    : Calc= 19F : File= 0C7 : *** 
* GPROPP4.ROM    : Calc= 0F8 : File= 2EE : *** 
* GPROPP5.ROM    : Calc= 2EB : File= 00A : *** 
* GPROPP7.ROM    : Calc= 031 : File= 37D : *** 
* GRAFIKS1.ROM   : Calc= 32C : File= 222 : *** 
* GRAFIKS2.ROM   : Calc= 365 : File= 222 : *** 
* GRAFIKS3.ROM   : Calc= 2D5 : File= 222 : *** 
* GRAFIKS4.ROM   : Calc= 01C : File= 222 : *** 
* GRAVTIM1.ROM   : Calc= 247 : File= 222 : *** 
* GRAVTIM2.ROM   : Calc= 3CB : File= 222 : *** 
* HAMDIST.ROM    : Calc= 1CE : File= 222 : *** 
* HANGMEN.ROM    : Calc= 20C : File= 222 : *** 
* HC_1.ROM       : Calc= 345 : File= 222 : *** 
* HC_2.ROM       : Calc= 27A : File= 222 : *** 
* HC_3.ROM       : Calc= 185 : File= 222 : *** 
* HDISASM.ROM    : Calc= 249 : File= 258 : *** 
* HEATEX.ROM     : Calc= 0A5 : File= 222 : *** 
* HELICOP1.ROM   : Calc= 35F : File= 222 : *** 
* HELICOP2.ROM   : Calc= 394 : File= 222 : *** 
* HELICOP3.ROM   : Calc= 1A8 : File= 222 : *** 
* HELPSYS.ROM    : Calc= 17F : File= 222 : *** 
* HELPSYS1.ROM   : Calc= 2AA : File= 222 : *** 
* HELPSYS2.ROM   : Calc= 022 : File= 222 : *** 
* HEPX1-1E.ROM   : Calc= 313 : File= 106 : *** 
* HEPX1-1F.ROM   : Calc= 36F : File= 106 : *** 
* HEPX4H_1.ROM   : Calc= 014 : File= 19C : *** 
* HEPX4H_2.ROM   : Calc= 007 : File= 100 : *** 
* HEPX4H_3.ROM   : Calc= 1C5 : File= 309 : *** 
* HEPX4H_4.ROM   : Calc= 24F : File= 258 : *** 
* HLMAT41.ROM    : Calc= 306 : File= 39F : *** 
* HLMAT42.ROM    : Calc= 1D9 : File= 1DB : *** 
* HLMAT43.ROM    : Calc= 2A3 : File= 2B8 : *** 
* HLMAT44.ROM    : Calc= 241 : File= 3F7 : *** 
* HL_MATH.ROM    : Calc= 2E3 : File= 222 : *** 
* HOROSCOP.ROM   : Calc= 120 : File= 222 : *** 
* HP-16C_1.ROM   : Calc= 1CA : File= 004 : *** 
* HP-16C_2.ROM   : Calc= 342 : File= 004 : *** 
* HP-16C_3.ROM   : Calc= 1B8 : File= 004 : *** 
* HP-16C_4.ROM   : Calc= 377 : File= 004 : *** 
* HP41AOS.ROM    : Calc= 33F : File= 222 : *** 
* HP67_FUN.ROM   : Calc= 2E8 : File= 067 : *** 
* HPCALEND.ROM   : Calc= 105 : File= 222 : *** 
* HPX_PLUS.ROM   : Calc= 20B : File= 222 : *** 
* HVAC.ROM       : Calc= 346 : File= 222 : *** 
* HYDRACMP.ROM   : Calc= 205 : File= 17E : *** 
* IERF1.ROM      : Calc= 379 : File= 222 : *** 
* IERF2.ROM      : Calc= 128 : File= 222 : *** 
* ILBUFFER.ROM   : Calc= 227 : File= 287 : *** 
* ILDEV2L.ROM    : Calc= 10B : File= 287 : *** 
* ILDEV2U.ROM    : Calc= 125 : File= 327 : *** 
* ILRACK.ROM     : Calc= 039 : File= 03E : *** 
* IMDB.ROM       : Calc= 1A5 : File= 0BD : *** 
* IMDB_V2.ROM    : Calc= 23C : File= 154 : *** 
* INDOOR.ROM     : Calc= 1A7 : File= 004 : *** 
* INTEG1.ROM     : Calc= 179 : File= 222 : *** 
* INTEG2.ROM     : Calc= 157 : File= 222 : *** 
* INTGDIF1.ROM   : Calc= 14B : File= 000 : *** 
* INTGDIF2.ROM   : Calc= 07E : File= 000 : *** 
* INTSOLN.ROM    : Calc= 201 : File= 222 : *** 
* IOBOARD.ROM    : Calc= 0D3 : File= 2C4 : *** 
* ITGDIFF.ROM    : Calc= 12F : File= 222 : *** 
* JARRETSP.ROM   : Calc= 28E : File= 222 : *** 
* JARRETXF.ROM   : Calc= 02B : File= 222 : *** 
* JMB_CAL.ROM    : Calc= 220 : File= 222 : *** 
* KNIGHTTR.ROM   : Calc= 1DD : File= 000 : *** 
* KRAUSS1.ROM    : Calc= 154 : File= 222 : *** 
* KRAUSS2.ROM    : Calc= 2B2 : File= 000 : *** 
* LANDERS.ROM    : Calc= 347 : File= 222 : *** 
* LAPLACE1.ROM   : Calc= 331 : File= 222 : *** 
* LAPLACE2.ROM   : Calc= 0CC : File= 222 : *** 
* LATLON.ROM     : Calc= 013 : File= 222 : *** 
* LENDLS.ROM     : Calc= 0C6 : File= 34C : *** 
* LIBRARY4.ROM   : Calc= 06C : File= 044 : *** 
* LOUDSPKR.ROM   : Calc= 275 : File= 222 : *** 
* MAHJONG1.ROM   : Calc= 0B2 : File= 222 : *** 
* MAHJONG2.ROM   : Calc= 163 : File= 222 : *** 
* MATPOL11.ROM   : Calc= 310 : File= 318 : *** 
* MATPOL12.ROM   : Calc= 0B5 : File= 318 : *** 
* MATPOL21.ROM   : Calc= 3B5 : File= 2B8 : *** 
* MATPOL22.ROM   : Calc= 397 : File= 04D : *** 
* MATRIX.ROM     : Calc= 243 : File= 39F : *** 
* MATRIX1.ROM    : Calc= 3BA : File= 000 : *** 
* MATRIX2.ROM    : Calc= 038 : File= 000 : *** 
* MATRX4L4.ROM   : Calc= 091 : File= 39F : *** 
* MAZES.ROM      : Calc= 0E4 : File= 222 : *** 
* MCCRNAK.ROM    : Calc= 1FC : File= 222 : *** 
* MDC_ROM1.ROM   : Calc= 3FF : File= 000 : *** 
* MDC_ROM2.ROM   : Calc= 3FF : File= 000 : *** 
* MDC_ROM3.ROM   : Calc= 3FF : File= 000 : *** 
* MECHENG.ROM    : Calc= 0CA : File= 222 : *** 
* MELBRNE.ROM    : Calc= 1D1 : File= 1FF : *** 
* MIL-ENGU.ROM   : Calc= 2CC : File= 2EC : *** 
* MISC31.ROM     : Calc= 3F0 : File= 000 : *** 
* MISC32.ROM     : Calc= 19F : File= 000 : *** 
* MLINES.ROM     : Calc= 02A : File= 222 : *** 
* MLONDON.ROM    : Calc= 18C : File= 222 : *** 
* MMADRID.ROM    : Calc= 0DD : File= 222 : *** 
* MMINDS.ROM     : Calc= 077 : File= 222 : *** 
* MONOPLY1.ROM   : Calc= 048 : File= 207 : *** 
* MONOPLY2.ROM   : Calc= 153 : File= 110 : *** 
* MPARIS.ROM     : Calc= 046 : File= 222 : *** 
* MPATHS.ROM     : Calc= 375 : File= 222 : *** 
* N-BODY.ROM     : Calc= 314 : File= 222 : *** 
* NASA.ROM       : Calc= 255 : File= 222 : *** 
* NBODY.ROM      : Calc= 1BA : File= 000 : *** 
* NEXT_2C.ROM    : Calc= 1D4 : File= 0BC : *** 
* NONLINR.ROM    : Calc= 08A : File= 111 : *** 
* NOVCHAP.ROM    : Calc= 290 : File= 222 : *** 
* NUMTHRY.ROM    : Calc= 075 : File= 222 : *** 
* NYCS1.ROM      : Calc= 3C2 : File= 222 : *** 
* NYCS2.ROM      : Calc= 05A : File= 222 : *** 
* ODES.ROM       : Calc= 03D : File= 222 : *** 
* OPTOMTR.ROM    : Calc= 151 : File= 222 : *** 
* OS41-1.ROM     : Calc= 0A6 : File= 222 : *** 
* OS41-2.ROM     : Calc= 33E : File= 222 : *** 
* OSXB1.ROM      : Calc= 32C : File= 229 : *** 
* OSXB2.ROM      : Calc= 054 : File= 222 : *** 
* OSXB3.ROM      : Calc= 0A7 : File= 3F7 : *** 
* OSXB4.ROM      : Calc= 077 : File= 258 : *** 
* OUTERPLN.ROM   : Calc= 226 : File= 000 : *** 
* PAGE12.ROM     : Calc= 1E5 : File= 1B5 : *** 
* PAGE22.ROM     : Calc= 21D : File= 3A8 : *** 
* PAPERS1.ROM    : Calc= 150 : File= 222 : *** 
* PAPERS2.ROM    : Calc= 1C3 : File= 222 : *** 
* PAPERS21.ROM   : Calc= 325 : File= 222 : *** 
* PAPERS22.ROM   : Calc= 3F6 : File= 222 : *** 
* PARDIFEQ.ROM   : Calc= 030 : File= 000 : *** 
* PARIO.ROM      : Calc= 08C : File= 000 : *** 
* PASCAL41.ROM   : Calc= 053 : File= 222 : *** 
* PASCAL42.ROM   : Calc= 1B8 : File= 222 : *** 
* PEET.ROM       : Calc= 027 : File= 222 : *** 
* PERIOD1.ROM    : Calc= 124 : File= 34C : *** 
* PERIOD2.ROM    : Calc= 0A6 : File= 34C : *** 
* PERIOD3.ROM    : Calc= 3A9 : File= 34C : *** 
* PHYSICS.ROM    : Calc= 26D : File= 222 : *** 
* PIE_ROM.ROM    : Calc= 212 : File= 364 : *** 
* PK_PHYS.ROM    : Calc= 227 : File= 1D5 : *** 
* PLANETS.ROM    : Calc= 08F : File= 000 : *** 
* PLUTOIDS.ROM   : Calc= 35C : File= 000 : *** 
* POKER.ROM      : Calc= 2FA : File= 212 : *** 
* POLYN1.ROM     : Calc= 292 : File= 222 : *** 
* POLYN2.ROM     : Calc= 018 : File= 222 : *** 
* POLYN44.ROM    : Calc= 313 : File= 222 : *** 
* PORTSL.ROM     : Calc= 137 : File= 222 : *** 
* PORTSU.ROM     : Calc= 219 : File= 222 : *** 
* PPCAPPS1.ROM   : Calc= 29F : File= 222 : *** 
* PPCAPPS2.ROM   : Calc= 365 : File= 222 : *** 
* PPCSTAT1.ROM   : Calc= 228 : File= 222 : *** 
* PPCSTAT2.ROM   : Calc= 1B7 : File= 34C : *** 
* PPCSTATS.ROM   : Calc= 29F : File= 222 : *** 
* PRAXIS.ROM     : Calc= 351 : File= 222 : *** 
* PRECNUT.ROM    : Calc= 24E : File= 000 : *** 
* PRISMFUN.ROM   : Calc= 0FE : File= 222 : *** 
* PRISMTH1.ROM   : Calc= 258 : File= 34C : *** 
* PRISMTH2.ROM   : Calc= 074 : File= 34C : *** 
* PS0F.ROM       : Calc= 21A : File= 24A : *** 
* PSYCHRO.ROM    : Calc= 106 : File= 004 : *** 
* PWREXT1.ROM    : Calc= 196 : File= 1DB : *** 
* PWREXT2.ROM    : Calc= 16F : File= 1DB : *** 
* PWREXT3.ROM    : Calc= 22E : File= 100 : *** 
* PWREXT4.ROM    : Calc= 0EF : File= 100 : *** 
* QUATERL.ROM    : Calc= 13F : File= 222 : *** 
* QUATERU.ROM    : Calc= 08A : File= 222 : *** 
* QUEENS.ROM     : Calc= 284 : File= 222 : *** 
* RAMPAGE.ROM    : Calc= 2BA : File= 222 : *** 
* RAMPAGX.ROM    : Calc= 1DE : File= 222 : *** 
* RAMPGX4.ROM    : Calc= 0DD : File= 06D : *** 
* RANDOM.ROM     : Calc= 307 : File= 222 : *** 
* RAWFL_1.ROM    : Calc= 0E4 : File= 222 : *** 
* RAWFL_2.ROM    : Calc= 14C : File= 222 : *** 
* RAWGM1.ROM     : Calc= 18C : File= 222 : *** 
* RAWGM2.ROM     : Calc= 293 : File= 222 : *** 
* RECURSE.ROM    : Calc= 25C : File= 364 : *** 
* REGULA1.ROM    : Calc= 1DA : File= 222 : *** 
* REGULA2.ROM    : Calc= 247 : File= 222 : *** 
* RESERV_1.ROM   : Calc= 115 : File= 004 : *** 
* RESERV_2.ROM   : Calc= 07E : File= 004 : *** 
* RESERV_3.ROM   : Calc= 38C : File= 004 : *** 
* RESERV_4.ROM   : Calc= 34F : File= 004 : *** 
* RESERV_5.ROM   : Calc= 263 : File= 004 : *** 
* RESERV_6.ROM   : Calc= 16F : File= 004 : *** 
* RIPRAP.ROM     : Calc= 39D : File= 222 : *** 
* ROMSV01.ROM    : Calc= 3CC : File= 000 : *** 
* RUBIKS.ROM     : Calc= 2F9 : File= 39F : *** 
* SAMLUNG1.ROM   : Calc= 35D : File= 222 : *** 
* SAMLUNG2.ROM   : Calc= 22D : File= 222 : *** 
* SEABAT1.ROM    : Calc= 3B5 : File= 222 : *** 
* SEABAT2.ROM    : Calc= 0A4 : File= 222 : *** 
* SERIES.ROM     : Calc= 021 : File= 222 : *** 
* SESASOL1.ROM   : Calc= 0EF : File= 222 : *** 
* SESASOL2.ROM   : Calc= 2A7 : File= 222 : *** 
* SHOM1.ROM      : Calc= 2D4 : File= 000 : *** 
* SHOM2.ROM      : Calc= 2FF : File= 000 : *** 
* SIM12U.ROM     : Calc= 176 : File= 375 : *** 
* SIMPLEX2.ROM   : Calc= 018 : File= 364 : *** 
* SIROM.ROM      : Calc= 377 : File= 2B8 : *** 
* SMAT41.ROM     : Calc= 2E5 : File= 004 : *** 
* SMAT42.ROM     : Calc= 35B : File= 222 : *** 
* SMAT43.ROM     : Calc= 142 : File= 3F7 : *** 
* SMAT44.ROM     : Calc= 262 : File= 1DB : *** 
* SMATH2L.ROM    : Calc= 093 : File= 004 : *** 
* SMATH2U.ROM    : Calc= 0EA : File= 39F : *** 
* SOLARENG.ROM   : Calc= 17D : File= 222 : *** 
* SOLARS1.ROM    : Calc= 38A : File= 222 : *** 
* SOLARS2.ROM    : Calc= 006 : File= 222 : *** 
* SOLVIT.ROM     : Calc= 38D : File= 222 : *** 
* SPANISH.ROM    : Calc= 266 : File= 222 : *** 
* SPECTRAL.ROM   : Calc= 129 : File= 222 : *** 
* SSHEET.ROM     : Calc= 3B3 : File= 364 : *** 
* STRUCT1.ROM    : Calc= 0E9 : File= 222 : *** 
* STRUCT2.ROM    : Calc= 32F : File= 222 : *** 
* SUDOKU.ROM     : Calc= 357 : File= 013 : *** 
* SWAP21.ROM     : Calc= 137 : File= 004 : *** 
* SWAP22.ROM     : Calc= 27C : File= 222 : *** 
* SWAPMATH.ROM   : Calc= 365 : File= 004 : *** 
* SWAPMTH.ROM    : Calc= 0CE : File= 004 : *** 
* SWAPPOL.ROM    : Calc= 04B : File= 004 : *** 
* SWPENG1.ROM    : Calc= 305 : File= 004 : *** 
* SWPENG2.ROM    : Calc= 268 : File= 004 : *** 
* SWPGAME1.ROM   : Calc= 200 : File= 222 : *** 
* SWPGAME2.ROM   : Calc= 25E : File= 222 : *** 
* SW_DEVL.ROM    : Calc= 0A0 : File= 222 : *** 
* SYSDEMO1.ROM   : Calc= 0CF : File= 222 : *** 
* SYSDEMO2.ROM   : Calc= 2CA : File= 222 : *** 
* SYSDEMO3.ROM   : Calc= 07A : File= 222 : *** 
* SYSDEMO4.ROM   : Calc= 108 : File= 222 : *** 
* TBOX4L4.ROM    : Calc= 10B : File= 3D5 : *** 
* TBOX4_L4.ROM   : Calc= 194 : File= 3D5 : *** 
* TESTS.ROM      : Calc= 3BD : File= 34C : *** 
* TESTSTAT.ROM   : Calc= 138 : File= 34C : *** 
* TEXTED.ROM     : Calc= 37F : File= 34C : *** 
* TIDES.ROM      : Calc= 0D6 : File= 222 : *** 
* TIMERSLN.ROM   : Calc= 0C3 : File= 222 : *** 
* TOOLBOX3.ROM   : Calc= 29F : File= 132 : *** 
* TRANSNEP.ROM   : Calc= 299 : File= 000 : *** 
* TREKKIES.ROM   : Calc= 10A : File= 111 : *** 
* TRUSS.ROM      : Calc= 29E : File= 222 : *** 
* TTLRKL.ROM     : Calc= 1C0 : File= 222 : *** 
* TTRKALL.ROM    : Calc= 2A2 : File= 004 : *** 
* TVM_1E.ROM     : Calc= 21A : File= 222 : *** 
* TVM_1G.ROM     : Calc= 23C : File= 222 : *** 
* U-BAHN.ROM     : Calc= 3AC : File= 222 : *** 
* UNITCONV.ROM   : Calc= 12D : File= 1C5 : *** 
* UPLMTH1.ROM    : Calc= 00E : File= 004 : *** 
* UPLMTH2.ROM    : Calc= 0E6 : File= 004 : *** 
* USERCAL.ROM    : Calc= 1BA : File= 222 : *** 
* VA-BOARD.ROM   : Calc= 0D7 : File= 222 : *** 
* VA-MATH.ROM    : Calc= 120 : File= 222 : *** 
* VECTORS.ROM    : Calc= 3EE : File= 222 : *** 
* VERMPACK.ROM   : Calc= 1C4 : File= 222 : *** 
* VIEIRA.ROM     : Calc= 163 : File= 111 : *** 
* WARPB1.ROM     : Calc= 165 : File= 222 : *** 
* WARPB2.ROM     : Calc= 106 : File= 222 : *** 
* WARPB3.ROM     : Calc= 1F4 : File= 222 : *** 
* WWDAPPS.ROM    : Calc= 390 : File= 222 : *** 
* X16C_B1.ROM    : Calc= 22C : File= 004 : *** 
* X16C_B2.ROM    : Calc= 0BF : File= 004 : *** 
* X16C_B3.ROM    : Calc= 1B8 : File= 004 : *** 
* X16C_B4.ROM    : Calc= 144 : File= 004 : *** 
* X41Z_L1.ROM    : Calc= 0FA : File= 2FA : *** 
* X41Z_L2.ROM    : Calc= 3A4 : File= 000 : *** 
* X41Z_U1.ROM    : Calc= 30A : File= 273 : *** 
* X41Z_U2.ROM    : Calc= 0D2 : File= 000 : *** 
* XADVMTH.ROM    : Calc= 06F : File= 06D : *** 
* XALPHA44.ROM   : Calc= 13F : File= 397 : *** 
* XBEAMS.ROM     : Calc= 0B1 : File= 222 : *** 
* XCPXMTRX.ROM   : Calc= 252 : File= 222 : *** 
* XDBLDOWN.ROM   : Calc= 3EF : File= 222 : *** 
* XEVAL_EQ.ROM   : Calc= 304 : File= 222 : *** 
* XEVAL_VF.ROM   : Calc= 39B : File= 222 : *** 
* XFRAME.ROM     : Calc= 1B1 : File= 222 : *** 
* XHEPX_B2.ROM   : Calc= 3D4 : File= 100 : *** 
* XHLMT_41.ROM   : Calc= 00F : File= 39F : *** 
* XHLMT_42.ROM   : Calc= 28D : File= 1DB : *** 
* XHLMT_43.ROM   : Calc= 357 : File= 2B8 : *** 
* XHLMT_44.ROM   : Calc= 3C4 : File= 3F7 : *** 
* XLIB4_B1.ROM   : Calc= 032 : File= 044 : *** 
* XLIB4_B2.ROM   : Calc= 22F : File= 044 : *** 
* XMASSTG.ROM    : Calc= 077 : File= 222 : *** 
* XMEMXF.ROM     : Calc= 16B : File= 06D : *** 
* XMMTRX.ROM     : Calc= 08C : File= 004 : *** 
* XMPPC.ROM      : Calc= 171 : File= 004 : *** 
* XMSTAT.ROM     : Calc= 159 : File= 222 : *** 
* XMTPL_11.ROM   : Calc= 3A3 : File= 318 : *** 
* XMTPL_12.ROM   : Calc= 195 : File= 318 : *** 
* XMTPL_21.ROM   : Calc= 3F0 : File= 2B8 : *** 
* XMTPL_22.ROM   : Calc= 0CB : File= 04D : *** 
* XMTWIN.ROM     : Calc= 1A6 : File= 004 : *** 
* XOSX_B1.ROM    : Calc= 38A : File= 229 : *** 
* XOSX_B2.ROM    : Calc= 0C2 : File= 222 : *** 
* XOSX_B3.ROM    : Calc= 2C3 : File= 3F7 : *** 
* XOSX_B4.ROM    : Calc= 347 : File= 258 : *** 
* XPIE.ROM       : Calc= 0B3 : File= 364 : *** 
* XPLORE1.ROM    : Calc= 195 : File= 222 : *** 
* XPLORE2.ROM    : Calc= 0A0 : File= 39F : *** 
* XRAMPAGX.ROM   : Calc= 0FC : File= 06D : *** 
* XRANDOM.ROM    : Calc= 3D4 : File= 222 : *** 
* XROM.ROM       : Calc= 31E : File= 222 : *** 
* XSERIES.ROM    : Calc= 2A7 : File= 222 : *** 
* XSIROM.ROM     : Calc= 3F8 : File= 2B8 : *** 
* XSMAT_41.ROM   : Calc= 2C7 : File= 004 : *** 
* XSMAT_42.ROM   : Calc= 35B : File= 222 : *** 
* XSMAT_43.ROM   : Calc= 064 : File= 3F7 : *** 
* XSMAT_44.ROM   : Calc= 228 : File= 1DB : *** 
* XTBOX4L.ROM    : Calc= 267 : File= 3D5 : *** 
* XTRUSS.ROM     : Calc= 178 : File= 222 : *** 
* XTVM.ROM       : Calc= 3A4 : File= 222 : *** 
* XWARP_B1.ROM   : Calc= 1A1 : File= 222 : *** 
* XWARP_B2.ROM   : Calc= 23D : File= 222 : *** 
* XWARP_B3.ROM   : Calc= 142 : File= 222 : *** 
* XXMEMXF.ROM    : Calc= 1E6 : File= 06D : *** 
* XXMTWIN.ROM    : Calc= 1FD : File= 004 : *** 
* XXROM.ROM      : Calc= 3EB : File= 222 : *** 
* XYRGAPPS.ROM   : Calc= 330 : File= 004 : *** 
* YREGAPPS.ROM   : Calc= 121 : File= 004 : *** 
* _ALPHA.ROM     : Calc= 2B5 : File= 397 : ***  (renamed, original name was: -ALPHA.ROM)
* _EQN_LIB.ROM   : Calc= 083 : File= 000 : ***  (renamed, original name was: -EQN_LIB.ROM)

ROM: different checksum value (16-bit checksum detected, 6 files)
Code:
+ ALL_FF.ROM     : Calc= 001 : File= 3FF : FFFF : *** 
+ FLDB.ROM       : Calc= 165 : File= 3FF : FFFF : *** 
+ FLDB_V2.ROM    : Calc= 27A : File= 3FF : FFFF : *** 
+ FLDB_V4.ROM    : Calc= 18F : File= 3FF : FFFF : *** 
+ YFNF-3A.ROM    : Calc= 0B4 : File= 3B4 : C3B4 : *** 
+ YFNF-3B.ROM    : Calc= 2F0 : File= 3F0 : 83F0 : ***

edit: split 16-bit and 10-bit checksum values

Sylvain Côté
Find all posts by this user
Quote this message in a reply
Post Reply 




User(s) browsing this thread: 1 Guest(s)