--- /dev/null
+&htsponse(200, "OK");
+print "Content-type: text/html\r\n\r\n";
+
+
+
+use HADES::TrbNet;
+use Data::Dumper;
+
+ if (!defined &trb_init_ports()) {
+ die("can not connect to trbnet-daemon on the $ENV{'DAQOPSERVER'}");
+ }
+
+my ($board,@addr) = split('-',$ENV{'QUERY_STRING'});
+
+$board = hex($board);
+
+
+my @hits;
+
+for(my $i=0;$i<scalar @addr;$i++) {
+ $addr[$i] = hex($addr[$i]);
+ $hits[$i] = trb_register_read($board,$addr[$i]);
+ }
+
+foreach my $b (sort keys %{$hits[0]}) {
+ printf ("%04x",$b);
+ for(my $i=0;$i<scalar @addr;$i++) {
+ printf(" %d",$hits[$i]->{$b});
+ }
+ print "&";
+ }
+
+
+exit 1;
\ No newline at end of file
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+<!--<meta http-equiv="refresh" content="$.$delay.qq$"/> -->
+<link href="styles.css" rel="stylesheet" type="text/css"/>
+<script src="scripts.js" type="text/javascript"></script>
+<title>TDC Registers</title>
+</head>
+<body>
+
+<h4>TDC Status Registers</h4>
+<form acion="">
+<table><tr><td>Board<td><input type="text" id="form_board" name="board" maxlength="4" value="fe50">
+<tr><td>Update Interval (ms)<td><input type="text" id="form_rate" name="rate" maxlength="5" value="1000">
+<tr><td><td><input type="button" onClick="setValues()" value="OK">
+</table>
+</form>
+
+<table id="content"><tr><th>Register<th>Values</table>
+
+<script language="javascript">
+
+var reglist = "80-83-84-85-86-87-88-89-8a-8b-8c-8d-8f-90";
+var regs = reglist.split('-');
+
+var updaterate = document.getElementById("form_rate").value;
+var board = document.getElementById("form_board").value;
+var updateTask = setInterval("getdata('getmultreg.pl?"+board+"-"+reglist+"',update)",updaterate);
+var oldvalues = {};
+
+
+function update(data) {
+ if(!document.getElementById("content").innerHTML) return;
+ var b = data.split("&");
+ var c = {};
+ o = "<tr><th>Register<th>Content";
+
+ for(j=0;j<b.length-1;j++) {
+ c[j] = b[j].split(" ");
+ o += "<th>"+c[j][0];
+ }
+
+ for(i = 0; i < 14; i++) {
+ o += "<tr><th>"+regs[i];
+ switch(i) {
+ case 0:
+ o += "<td>debug<br>channels<br>ref input";
+ break;
+ case 1:
+ o += "<td>window bef.<br>window aft.";
+ break;
+ case 2:
+ o+= "<td>valid trg";
+ break;
+ case 3:
+ o+= "<td>valid tmg trg";
+ break;
+ case 4:
+ o+= "<td>valid notmg";
+ break;
+ case 5:
+ o+= "<td>invalid trg";
+ break;
+ case 6:
+ o+= "<td>multi trg";
+ break;
+ case 7:
+ o+= "<td>spurious trg";
+ break;
+ case 8:
+ o+= "<td>wrong rdo";
+ break;
+ case 9:
+ o+= "<td>spikes";
+ break;
+ case 10:
+ o+= "<td>idle time";
+ break;
+ case 11:
+ o+= "<td>wait time";
+ break;
+ case 12:
+ o+= "<td>releases";
+ break;
+ case 13:
+ o+= "<td>rdo time";
+ break;
+
+ default:
+ o += "<td> ";
+ }
+
+ for(j=0;j<b.length-1;j++) {
+ val = c[j][i+1];
+ o += "<td>";
+ if(i==0) {
+ o += (val&0xFF).toString(16)+"<br>"+((val&0xff00)>>8)+"<br>"+(val>>16 & 1);
+ }
+ else if(i==1) {
+ o += (val&0x7FF).toString(16)+"<br>"+((val&0x7ff0000)>>16);
+ }
+ else {
+ o += val;
+ }
+ }
+ }
+ document.getElementById("content").innerHTML = o;
+ }
+
+function setValues() {
+ updaterate = document.getElementById("form_rate").value;
+ board = document.getElementById("form_board").value;
+ clearInterval(updateTask);
+ updateTask = setInterval("getdata('getmultreg.pl?"+board+"-"+reglist+"',update)",updaterate);
+ }
+
+</script>
+</body></html>