NXT2 motors limitation?
In the middle "thead" all of your motor blocks are "unlimited" or "stop". These blocks change the motor state and immediately continue to the next block. These are inside a loop that loops forever, so these blocks are running continuously in the loop. The motor blocks in the top thread may have an effect for a split second until the middle thread loops again and changes what the motor is doing.

I suggest writing to a variable in the top thread instead of using motor blocks. Then read from that variable in the middle thread. For example, you could use a numeric variable and give it a value of '1' for forwards and -1 for reverse. Then in the middle thread, use a multiply math block to multiply the desired motor speed by the variable to change the direction.

Or, for that matter, you could read the 4th touch sensor value in the middle thread and remove the top thread.