The uart implementation is now more or less working in my version. You can send data from the test bench, through the fifo, and the output shifter to implement the uart protocol on a TX pin. The x scratch register is used to count out the bits. The program is only 4 instructions. There are a few variants of it in RP2040 documentation.
The pull instruction waits for data (a byte) from the fifo, and sets TX high while this is happening.
When it arrives the data is put in the output shift register.
The set, sets X to 7 and implements the start bit - 8 cycles of zero.
The out instruction shifts out bits to the TX pin, one bit at a time.
The jump instruction, decrements X and jumps to the OUT instruction if X is not zero.
When X is zero, the program wraps round and starts again with a pull for the next byte.
The version in the micropython SDK adds a NOP with a side set and delay, to implement the stop bit.
You can configure a clock divider to set the baud rate. The frequency needs to be 8 times the baud rate.