- for my $msb (0 .. (length($row->{table}) || 256) - 1 >> 4) {
- printf '<tr><th>%X', ($msb + ($row->{offset} >> 4)) * $nibsize;
- for my $lsb (0 .. $#nibble) {
- my $val = ( ($msb<<4) + $lsb ) * $nibsize;
+ for my $msb (0 .. ((length($row->{table}) || 256) - 1) / $cols) {
+ print '<tr><th>';
+ {
+ my $rowlabel = ($msb + int($row->{offset} / $cols)) * $cols * $colsize;
+ if (my $rowmod = $rowlabel % $rowdiv) {
+ # offset in column units
+ printf '<small>+%X</small>', $rowmod;
+ }
+ else {
+ # divided row offset
+ printf '%X', $rowlabel / $rowdiv;
+ }
+ }
+ for my $lsb (0 .. $cols - 1) {
+ my $val = ( ($msb * $cols) + $lsb ) * $colsize;