//Fork a simulation process which will get char typed into the simulation terminal and transmit them on the simulation uartPin
  fork{
    uartPin #= true
    while(true) {
      //System.in is the java equivalent of the C stdin
      if(System.in.available() != 0){
        val buffer = System.in.read()
        uartPin #= false
        sleep(baudPeriod)

        (0 to 7).suspendable.foreach{ bitId =>
          uartPin #= ((buffer >> bitId) & 1) != 0
          sleep(baudPeriod)
        }

        uartPin #= true
        sleep(baudPeriod)
      } else {
        sleep(baudPeriod * 10) //Sleep a little while to avoid pulling System.in to often
      }
    }
  }
Tags: