+
+ if (exists($uciinfo{'pv1'}) && exists($uciinfo{'pv2'})) {
+ # multi-PV
+ my $mpv = 1;
+ while (exists($uciinfo{'pv' . $mpv})) {
+ $text .= sprintf " PV%2u", $mpv;
+ my $score = short_score(\%uciinfo, $pos_calculating, $mpv);
+ $text .= " ($score)" if (defined($score));
+
+ my $tbhits = '';
+ if (exists($uciinfo{'tbhits' . $mpv})) {
+ $tbhits = sprintf ", %u tbhits", $uciinfo{'tbhits' . $mpv};
+ }
+
+ if (exists($uciinfo{'nodes' . $mpv}) && exists($uciinfo{'nps' . $mpv}) && exists($uciinfo{'depth' . $mpv})) {
+ $text .= sprintf " (%5u kn, %3u kn/s, %2u ply$tbhits)",
+ $uciinfo{'nodes' . $mpv} / 1000, $uciinfo{'nps' . $mpv} / 1000, $uciinfo{'depth' . $mpv};
+ }
+
+ $text .= ":\n";
+ $text .= " " . join(', ', prettyprint_pv($pos_calculating->{'board'}, @{$uciinfo{'pv' . $mpv}})) . "\n";
+ $text .= "\n";
+ ++$mpv;
+ }
+ } else {
+ # single-PV
+ my $score = long_score(\%uciinfo, $pos_calculating, '');
+ $text .= " $score\n" if defined($score);
+ $text .= " PV: " . join(', ', prettyprint_pv($pos_calculating->{'board'}, @{$uciinfo{'pv'}}));
+ $text .= "\n";
+
+ if (exists($uciinfo{'nodes'}) && exists($uciinfo{'nps'}) && exists($uciinfo{'depth'})) {
+ $text .= sprintf " %u nodes, %7u nodes/sec, depth %u ply",
+ $uciinfo{'nodes'}, $uciinfo{'nps'}, $uciinfo{'depth'};
+ }
+ if (exists($uciinfo{'tbhits'})) {
+ $text .= sprintf ", %u Nalimov hits", $uciinfo{'tbhits'};
+ }
+ if (exists($uciinfo{'seldepth'})) {
+ $text .= sprintf " (%u selective)", $uciinfo{'seldepth'};
+ }
+ $text .= "\n\n";
+ }
+
+ if ($last_text ne $text) {
+ print "\e[H\e[2J"; # clear the screen
+ print $text;
+ $last_text = $text;
+ }
+
+ # Now construct the tell text, if any
+ return if (!defined($telltarget));
+
+ my $tell_text = '';
+
+ if (exists($uciid{'name'})) {
+ $tell_text .= "Analysis by $uciid{'name'} -- see http://analysis.sesse.net/ for more information\n";
+ } else {
+ $tell_text .= "Computer analysis -- http://analysis.sesse.net/ for more information\n";
+ }
+
+ if (exists($uciinfo{'pv1'}) && exists($uciinfo{'pv2'})) {
+ # multi-PV
+ my $mpv = 1;
+ while (exists($uciinfo{'pv' . $mpv})) {
+ $tell_text .= sprintf " PV%2u", $mpv;
+ my $score = short_score(\%uciinfo, $pos_calculating, $mpv);
+ $tell_text .= " ($score)" if (defined($score));
+
+ if (exists($uciinfo{'depth' . $mpv})) {
+ $tell_text .= sprintf " (%2u ply)", $uciinfo{'depth' . $mpv};
+ }
+
+ $tell_text .= ": ";
+ $tell_text .= join(', ', prettyprint_pv($pos_calculating->{'board'}, @{$uciinfo{'pv' . $mpv}}));
+ $tell_text .= "\n";
+ ++$mpv;
+ }
+ } else {
+ # single-PV
+ my $score = long_score(\%uciinfo, $pos_calculating, '');
+ $tell_text .= " $score\n" if defined($score);
+ $tell_text .= " PV: " . join(', ', prettyprint_pv($pos_calculating->{'board'}, @{$uciinfo{'pv'}}));
+ if (exists($uciinfo{'depth'})) {
+ $tell_text .= sprintf " (depth %u ply)", $uciinfo{'depth'};
+ }
+ $tell_text .= "\n";