uart_core: This is the base code to send and receive data over the linkport using UART protocol. IMPORTANT NOTE: The code will not work if you don't have the right values for SEND_TIME and RECEIVE_TIME. Their values vary as the battery dies, because the calculator executes less clock cycles per second, throwing off the timing. You can use uart_sync to get the receive time right, and you can use trial and error to get the send time right. bsenuart: This program can be used in BASIC code to send UART data. The syntax is, ":asm(prgrmBSENUART)", i.e. "97:asm(prgrmBSENUART)" (would send an "a"). brecuart: This program can be used in BASIC code to receive UART data. The syntax is, "asm(prgrmBRECUART)", and the data received is stored in the ans variable. Remember that this routine will wait forever until it gets data, meaning that if it runs but no data arrives, the program will hang and you will have to remove the calculator's batteries, losing all RAM. uart_sync: This program figures out the timing required to receive data by increasing the delay between bits in increments. You have to send it the value 97 (ascii a) over and over until it flashes "1337" and the timing value on the screen. If you put that value into the code for RECEIVE_TIME, it will have the correct timing. serdebug: This program is kind of cool because it turns your calculator into a kind of digital logic analyzer. When the link line goes low 96 samples (width of the screen in pixels) are recorded and then they are displayed on the screen. Clear resets program, enter key starts recording, and the one key exits the program. I found this program very useful for debugging the communications.