I'm willing to bet that, almost four years later, you no longer care but the No$ documentation covers the serial port.
$FF02
is a control port, $FF01
is a data port.
The transmitter is expected to queue up a byte in $FF01
then post a byte to $FF02
indicating that: (i) a transfer should start; (ii) using an internally-generated clock.
The receiver should use $FF02
to configure its port as expecting an internal clock. When it receives a byte it can inspect it via $FF01
.
Sending or receiving a complete byte sets bit 3 of the interrupt register. So the receiver knows when it has received a byte by servicing that interrupt, and the transmitter similarly knows when it can send the next.