rxbyte := rx_buffer[rx_tail]
rx_tail := (rx_tail + 1) & $F
PUB rxtime(ms) : rxbyte | t
'' Espera milisegundos ms para recibir byte
'' regresa -1 si no se recibió byte, $00..$FF si hay byte
t := cnt
repeat until (rxbyte := rxcheck) => 0 or (cnt - t) / (clkfreq / 1000) > ms
PUB str(stringptr)
'' Envía cero terminal de cadena que inicia en la dirección de memoria stringptr
repeat strsize(stringptr)
tx(byte[stringptr++])
PUB getstr(stringptr) | index
'' Obtiene cero terminal de cadena y lo almacena, inicia en la dirección de memoria
stringptr
index~
repeat until ((byte[stringptr][index++] := rx) == 13)
byte[stringptr][--index]~
PUB dec(value) | i
'' Imprime un número decimal
if value < 0
-value
tx("-")
i := 1_000_000_000
repeat 10
if value => i
tx(value / i + "0")
value //= i
result~~
elseif result or i == 1
tx("0")
i /= 10
PUB GetDec : value | tempstr[11]
'' Obtiene la representación de carácter decimal de un numero de la terminal
'' Regresa el valor correspondiente
GetStr(@tempstr)
value := StrToDec(@tempstr)
PUB StrToDec(stringptr) : value | char, index, multiply
'' Convierte la representación de cero terminal de cadena de un numero decimal a un
valor
value := index := 0
repeat until ((char := byte[stringptr][index++]) == 0)
if char => "0" and char =< "9"
value := value * 10 + (char - "0")
if byte[stringptr] == "-"
value := - value
Apéndice A: Lista de Códigos de Objetos
Kit Educativo de Practicas Propeller: Fundamentos · Página 193