V10/vol2/anim/malloc.awk

awk '
BEGIN	      {	OFS = "\t"; w = 1024 }
$1 == "m"     { s = $2
		ehist[s] = e = s + $3
		sx = s % w; sy = int(s / w)
		ex = e % w; ey = int(e / w)
		if (sy == ey) print "a" s ": line", sx, sy, ex, sy
		else {	print "a" s ": line " sx " " sy " " w " " sy
			for (i = sy+1; i <= ey-1; i++)
				print "b" i ": line", 0, i, w, i
			print "c" ey ": line", 0, ey, ex, ey
		}
	      }
$1 == "f"     {	s = $2
		e = ehist[s]
		sx = s % w; sy = int(s / w)
		ex = e % w; ey = int(e / w)
		if (sy == ey) print "erase a" s
		else {	print "erase a" s
			for (i = sy+1; i <= ey-1; i++)
				print "erase b" i
			print "erase c" ey
		}
	      }
	      {	print "click call" }
' $*