diff --git a/tests/manual/trk/adapter.cpp b/tests/manual/trk/adapter.cpp
index 3b184968ed1c5b8142f5fac237f64cd16266c287..b382d0d53d88eb3330efd8e23c3fec594af1e1e9 100644
--- a/tests/manual/trk/adapter.cpp
+++ b/tests/manual/trk/adapter.cpp
@@ -537,7 +537,11 @@ void Adapter::handleGdbResponse(const QByteArray &response)
         #endif
         bool ok = false;
         uint registerNumber = response.mid(1).toInt(&ok, 16);
-        if (registerNumber < RegisterCount) {
+        if (registerNumber == RegisterPSGdb) {
+            QByteArray ba;
+            appendInt(&ba, m_snapshot.registers[RegisterPSTrk]);
+            sendGdbMessage(ba.toHex(), "read processor status register");
+        } else if (registerNumber < RegisterCount) {
             QByteArray ba;
             appendInt(&ba, m_snapshot.registers[registerNumber]);
             sendGdbMessage(ba.toHex(), "read single known register");
@@ -1059,8 +1063,10 @@ void Adapter::handleAndReportReadRegisters(const TrkResult &result)
     // [80 0B 00   00 00 00 00   C9 24 FF BC   00 00 00 00   00
     //  60 00 00   00 00 00 00   78 67 79 70   00 00 00 00   00...]
     const char *data = result.data.data();
-    for (int i = 0; i < RegisterCount; ++i)
+    for (int i = 0; i < RegisterCount; ++i) {
         m_snapshot.registers[i] = extractInt(data + 4 * i);
+        //qDebug() << i << hexNumber(m_snapshot.registers[i], 8);
+    }
 
     //QByteArray ba = result.data.toHex();
     QByteArray ba;
diff --git a/tests/manual/trk/trkserver.cpp b/tests/manual/trk/trkserver.cpp
index 8cf11d7133e0936bd257d57f4b37220d257ff431..d5780f28adc49097db1ef7e90e804f4fc5013784 100644
--- a/tests/manual/trk/trkserver.cpp
+++ b/tests/manual/trk/trkserver.cpp
@@ -88,13 +88,13 @@ Inferior::Inferior()
     registers[7]  = 0x00000000;
     registers[8]  = 0x00000012;
     registers[9]  = 0x00000040;
-    registers[10]  = 0xC82AF210;
+    registers[10] = 0xC82AF210;
     registers[11] = 0x00000000;
     registers[12] = 0xC8000548;
     registers[13] = 0x00403ED0;
     registers[14] = 0x786A6BD8;
     registers[15] = 0x786A4CC8;
-    //registers[25] = 0x68000010;
+    registers[16] = 0x68000010; // that's reg 25 on chip?
 }
 
 class TrkServer : public QObject
@@ -238,9 +238,7 @@ void TrkServer::handleAdapterMessage(const TrkResult &result)
             break;
         }
         case 0x12: { // Read Registers
-            appendByte(&data, 0x00);
-            appendByte(&data, 0x00);
-            appendByte(&data, 0x00);
+            data.clear();
             for (int i = 0; i < RegisterCount; ++i)
                 appendInt(&data, m_inferior.registers[i], BigEndian);
             writeToAdapter(0x80, result.token, data);
diff --git a/tests/manual/trk/trkutils.h b/tests/manual/trk/trkutils.h
index 811e4c6ebae41a4fe68432fcd5fb04315c633fcd..56d02ddaa0a963874d52365231be7544ee9464f3 100644
--- a/tests/manual/trk/trkutils.h
+++ b/tests/manual/trk/trkutils.h
@@ -72,8 +72,11 @@ enum CodeMode
 
 enum TargetConstants
 {
-    RegisterCount = 16,
+    RegisterCount = 17,
     RegisterPC = 15, // Program counter
+    RegisterPSGdb = 25, // gdb's view of the world
+    RegisterPSTrk = 16, // gdb's view of the world
+
     MemoryChunkSize = 256
 };