diff --git a/cMIPS/tests/handlerUART.s b/cMIPS/tests/handlerUART.s
index eef98d2138c81f028be10aa0242ad414386e97dd..f9ad569b14a47d26d17f47f288fb693c4223de9e 100644
--- a/cMIPS/tests/handlerUART.s
+++ b/cMIPS/tests/handlerUART.s
@@ -8,11 +8,25 @@ RX:
     lui   $a0, %hi(HW_uart_addr)
     ori   $a0, $a0, %lo(HW_uart_addr)
     lw    $a1, 4($a0)           # Read data
-    nop                         #   and store it to UART's buffer
-    sw    $a1, 4($k0)           #   and return from interrupt
-    addiu $a1, $zero, 1
-    sw    $a1, 8($k0)           # Signal new arrival 
-    # TODO: Read data, store it to buffer and decrement nrx (we're reading a char)
+
+    lui   $a0, %hi(rx_queue)    
+    ori   $a0, $a0, %lo(rx_queue)
+    sw    $a1, 0($a0)           # Put data on RX_queue
+
+    lui   $a0, %hi(rx_tl)    
+    ori   $a0, $a0, %lo(rx_tl)
+    lw    $a1, 0($a0)           # Read rx_tl
+    nop
+    addiu $a1, $a1, 1           # Increment rx_tl (shouldn't it be (rx_tl+1)%16 ?) 
+    sw    $a1, 0($a0)           # Save rx_tl
+
+    lui   $a0, %hi(nrx)    
+    ori   $a0, $a0, %lo(nrx)
+    lw    $a1, 0($a0)           # Read nrx
+    nop
+    addiu $a1, $a1, 1           # Increment nrx 
+    sw    $a1, 0($a0)           # Save incremented nrx
+
 TX:
     andi $a0, $k1, UART_tx_irq  # Is this transmission?
     beq  $a0, $zero, END        #   no, end handler