## UART.jack
Library that provides access to `UART_TX` and `UART_RX`.

***
## Project
In the Testfolder `02_UART_Test` you find a minimal version of `Sys.jack` containing the init function `Sys.init()`, which is called after starting JACK-OS. `Sys.init()` is the JACK-OS version of `echo.asm`, which reads the bytes received at `UART_RX` and writes the values to `UART_TX` in an endless loop:

```
class Sys {

    function void init() {
		do UART.init(4098);
		while (true){
			do UART.write(UART.read());
		}		
		return;
	}
}

```
* Implement `UART.jack`
* Test in simulation:
```
$ cd 02_UARTTest
$ make
$ cd ../00_HACK
$ apio clean
$ apio sim
```
The test bench will simulate the transmission of "RX" to UART_RX. Check if HACK echoes to `UART_TX`.

![](uart.png)

* run in real hardware with HACK build at `06_IO_Devices/05_GO` (together with the bootloader). Build and upload the UART_Test to iCE40HX1K-EVB with:

```
$ cd 02_UART_Test
$ make
$ make upload
```

* Connect HACK with your computer over UART, open a terminal program and type some chars. Check if HACK can echo them.

```
$ tio /dev/ttyACM0
```
