gigatron/rom/Contrib/kervinck/plotGt1Maps.sh
2025-01-28 19:17:01 +03:00

84 lines
1.8 KiB
Bash

#!/bin/bash
#-----------------------------------------------------------------------
#
# plotGt1Maps.sh -- Create heatmaps from GT1 files
#
#-----------------------------------------------------------------------
#
# 2019-10-08 (marcelk) First version
#
find . -name \*.gt1 |
xargs -n 1 gt1dump.py |
cut -c -54 |
awk '
function copy() {
if (length(f))
for (addr in f)
n[addr]++
delete f
}
/^\* file:/ {
copy()
}
/^[0-9a-f]/ {
addr=int("0x"$1)
for (i=0;i<NF-1;i++)
f[addr+i]++
}
END {
copy()
for (y=0;y<256;y++) {
for (x=0;x<256;x++) {
addr = y*256+x
z = addr in n ? n[addr] : 0
print int(addr/256), addr%256, z
}
print ""
}
}' > segments.dat
gnuplot <<!
set title 'Gigatron file segment heatmap (32K)'
set nokey
set noborder
set xrange [-1:256]
set yrange [128:-1]
set format x2 'xx%02X'
set format y '%02Xxx'
set noxtics
set x2tics out 0,16,255
set x2tics add (255)
set ytics out 0,8,127
set ytics add (127)
set palette defined (\
0 .7 .7 .7,\
.001 0 0 1, \
2 0 .5 1, \
3 0 1 1, \
4 .5 1 .5,\
5 1 1 0, \
6 1 .5 0, \
7 1 0 0, \
8 1 0 0)
set cblabel 'Number of GT1 files'
set cbrange [0.7:]
set logscale cb
set cbtics out 1,2
set nomcbtics
set terminal png size 1280,960
set output 'Heatmap_32K.png'
# Invalidate pages >= 128
plot 'segments.dat' using 2:1:(\$1<128?\$3:1/0) with image
# 64K view
set title 'Gigatron file segment heatmap (64K)'
set yrange [256:-2]
set ytics out 0,16,255
set ytics add (255)
set output 'Heatmap_64K.png'
plot 'segments.dat' using 2:1:3 with image
!
open Heatmap_*K.png