mincount	var	byte
startflag	var	byte
endflag		var	byte
kount		var	byte
serData		var	byte
baud		var	word
length		var	byte
pnt		var	byte
mesg		var	byte(16)

baud = 27889

mincount = 3
startflag = 1
endflag = 3

idle:
kount = 0

rcv:
serin 7, baud, 500, idle, [serData]
if serData <> startflag then idle
kount = kount + 1
if kount >= mincount then packet_wait
goto rcv

packet_wait:
pnt = 0
serin 7, baud, oops, 500, idle, [serData]
if serData = startflag then packet_wait

get_data:

mesg(pnt) = serData
pnt = pnt + 1
serin 7, baud, idle, 500, idle, [serData]
if serData = endflag then to_comp
goto get_data

to_comp:

length = pnt - 1
serout 8, baud, [startflag]

for pnt = 0 to length
serout 8, baud, [mesg(pnt)]
next

serout 8, baud, [endflag]

goto idle