UART

From WSdev Wiki
Revision as of 11:30, 22 August 2023 by Fiskbit (talk | contribs) (Fixes data register. Adds register addresses and access types. Splits Serial Control into Status and Control.)
Jump to navigationJump to search

The WonderSwan's EXT port features an UART operating with the following configuration:

  • 9,600 or 38,400 bps (bauds per second),
  • 8N1 (8 data bits followed by 1 stop bit, no parity).

This allows for an effective maximum transfer speed of 960 or 3840 bytes per second, respectively.

The hardware also features one-byte transmit and receive buffers, which allow for a slight delay in code when handling data to/from the console.

Interrupts

The UART features two interrupts:

  • UART Send Ready - constantly active while the transmit buffer is empty (Serial Status bit 2),
  • UART Receive Ready - constantly active while the receive buffer contains a byte (Serial Status bit 0).

I/O ports

Serial Data ($B1)

7  bit  0
---- ----
dddd dddd
|||| ||||
++++-++++- Read a byte from the receive buffer, or
           Write a byte into the transmit buffer.

Serial Status ($B3 read)

7  bit  0
---- ----
eb.. .tor
||    |||
||    ||+- 1 if the receive buffer contains a byte
||    |+-- 1 on overrun (receive buffer overflow)
||    +--- 1 if the transmit buffer is empty (can transmit another byte)
|+-------- UART speed: 0 = 9600 bps, 1 = 38400 bps
+--------- UART enable: 0 = off, 1 = on

Serial Control ($B3 write)

7  bit  0
---- ----
ebO. ....
|||
||+------- Write 1 to reset overrun
|+-------- UART speed: 0 = 9600 bps, 1 = 38400 bps
+--------- UART enable: 0 = off, 1 = on