Entradas y salidas
Los veinte canales con los que un bot le pasa números a otro: .out y .in por la vista, .tout y .tin por un lazo.
| Dirección | Sysvar | Tipo | Resumen |
|---|---|---|---|
| 410 | .tout1 | Comando | Primer canal de salida por lazo: el número que escribís acá lo lee en su .tin1 el bot atado a vos. |
| 411 | .tout2 | Comando | Canal de salida por lazo número 2: lo que escribís acá lo lee en su .tin2 el bot atado a vos. |
| 412 | .tout3 | Comando | Canal de salida por lazo número 3: lo que escribís acá lo lee en su .tin3 el bot atado a vos. |
| 413 | .tout4 | Comando | Canal de salida por lazo número 4: lo que escribís acá lo lee en su .tin4 el bot atado a vos. |
| 414 | .tout5 | Comando | Canal de salida por lazo número 5: lo que escribís acá lo lee en su .tin5 el bot atado a vos. |
| 415 | .tout6 | Comando | Canal de salida por lazo número 6: lo que escribís acá lo lee en su .tin6 el bot atado a vos. |
| 416 | .tout7 | Comando | Canal de salida por lazo número 7: lo que escribís acá lo lee en su .tin7 el bot atado a vos. |
| 417 | .tout8 | Comando | Canal de salida por lazo número 8: lo que escribís acá lo lee en su .tin8 el bot atado a vos. |
| 418 | .tout9 | Comando | Canal de salida por lazo número 9: lo que escribís acá lo lee en su .tin9 el bot atado a vos. |
| 419 | .tout10 | Comando | Canal de salida por lazo número 10: lo que escribís acá lo lee en su .tin10 el bot atado a vos. |
| 420 | .tin1 | Sentido | Primer canal de entrada por lazo: el valor que publica en su .tout1 el bot del otro extremo del lazo que estás leyendo. |
| 421 | .tin2 | Sentido | Canal de entrada por lazo número 2: el valor que publica en su .tout2 el bot del otro extremo del lazo que estás leyendo. |
| 422 | .tin3 | Sentido | Canal de entrada por lazo número 3: el valor que publica en su .tout3 el bot del otro extremo del lazo que estás leyendo. |
| 423 | .tin4 | Sentido | Canal de entrada por lazo número 4: el valor que publica en su .tout4 el bot del otro extremo del lazo que estás leyendo. |
| 424 | .tin5 | Sentido | Canal de entrada por lazo número 5: el valor que publica en su .tout5 el bot del otro extremo del lazo que estás leyendo. |
| 425 | .tin6 | Sentido | Canal de entrada por lazo número 6: el valor que publica en su .tout6 el bot del otro extremo del lazo que estás leyendo. |
| 426 | .tin7 | Sentido | Canal de entrada por lazo número 7: el valor que publica en su .tout7 el bot del otro extremo del lazo que estás leyendo. |
| 427 | .tin8 | Sentido | Canal de entrada por lazo número 8: el valor que publica en su .tout8 el bot del otro extremo del lazo que estás leyendo. |
| 428 | .tin9 | Sentido | Canal de entrada por lazo número 9: el valor que publica en su .tout9 el bot del otro extremo del lazo que estás leyendo. |
| 429 | .tin10 | Sentido | Canal de entrada por lazo número 10: el valor que publica en su .tout10 el bot del otro extremo del lazo que estás leyendo. |
| 800 | .out1 | Comando | Primer canal de salida por la vista: el número que escribís acá lo lee en su .in1 cualquier bot que te esté mirando. |
| 801 | .out2 | Comando | Canal de salida por la vista número 2: lo que escribís acá lo lee en su .in2 el bot que te esté mirando. |
| 802 | .out3 | Comando | Canal de salida por la vista número 3: lo que escribís acá lo lee en su .in3 el bot que te esté mirando. |
| 803 | .out4 | Comando | Canal de salida por la vista número 4: lo que escribís acá lo lee en su .in4 el bot que te esté mirando. |
| 804 | .out5 | Comando | Canal de salida por la vista número 5: lo que escribís acá lo lee en su .in5 el bot que te esté mirando. |
| 805 | .out6 | Comando | Canal de salida por la vista número 6: lo que escribís acá lo lee en su .in6 el bot que te esté mirando. |
| 806 | .out7 | Comando | Canal de salida por la vista número 7: lo que escribís acá lo lee en su .in7 el bot que te esté mirando. |
| 807 | .out8 | Comando | Canal de salida por la vista número 8: lo que escribís acá lo lee en su .in8 el bot que te esté mirando. |
| 808 | .out9 | Comando | Canal de salida por la vista número 9: lo que escribís acá lo lee en su .in9 el bot que te esté mirando. |
| 809 | .out10 | Comando | Canal de salida por la vista número 10: lo que escribís acá lo lee en su .in10 el bot que te esté mirando. |
| 810 | .in1 | Sentido | Primer canal de entrada por la vista: el valor que publica en su .out1 el bot que tenés en el ojo con foco. |
| 811 | .in2 | Sentido | Canal de entrada por la vista número 2: el valor que publica en su .out2 el bot que tenés en el ojo con foco. |
| 812 | .in3 | Sentido | Canal de entrada por la vista número 3: el valor que publica en su .out3 el bot que tenés en el ojo con foco. |
| 813 | .in4 | Sentido | Canal de entrada por la vista número 4: el valor que publica en su .out4 el bot que tenés en el ojo con foco. |
| 814 | .in5 | Sentido | Canal de entrada por la vista número 5: el valor que publica en su .out5 el bot que tenés en el ojo con foco. |
| 815 | .in6 | Sentido | Canal de entrada por la vista número 6: el valor que publica en su .out6 el bot que tenés en el ojo con foco. |
| 816 | .in7 | Sentido | Canal de entrada por la vista número 7: el valor que publica en su .out7 el bot que tenés en el ojo con foco. |
| 817 | .in8 | Sentido | Canal de entrada por la vista número 8: el valor que publica en su .out8 el bot que tenés en el ojo con foco. |
| 818 | .in9 | Sentido | Canal de entrada por la vista número 9: el valor que publica en su .out9 el bot que tenés en el ojo con foco. |
| 819 | .in10 | Sentido | Canal de entrada por la vista número 10: el valor que publica en su .out10 el bot que tenés en el ojo con foco. |
Un bot puede espiar una dirección de la memoria de otro (con .memloc o, por un lazo, con .tmemloc), pero la forma pensada para comunicarse es publicar números para que otros los lean. Para eso hay dos juegos de diez canales, cada uno con su salida y su entrada:
| Canal | Escribís en | El otro lee en | Llega a |
|---|---|---|---|
| Por la vista | .out1 … .out10 | .in1 … .in10 | quien te tenga en el ojo con foco, o te choque |
| Por un lazo | .tout1 … .tout10 | .tin1 … .tin10 | el bot atado a vos, si está escuchando ese lazo |
Las salidas son configuración: el motor no las borra nunca, así que con escribirlas una vez alcanza y el valor queda publicado hasta que lo cambies. Las entradas son sentidos: las llena el motor después de que corre el ADN, así que siempre leés lo que el otro tenía publicado en el ciclo anterior. Un bot recién nacido arranca con todas en 0; no hereda las salidas del padre.
El uso más común, por lejos, es reconocer a los de tu especie: todos escriben el mismo código en .out1 y, antes de disparar, comparan *.in1 con *.out1. Así lo hace, por ejemplo, Artemis Minimalis del Bestiario. Elegí un código distinto de 0: 0 es lo que publica cualquier bot que no usa el canal, y también lo que vale .in1 cuando no estás viendo a nadie.
' me identifico con un código
start
555 .out1 store
stop
' disparo solo si lo que tengo enfrente no es de los míos
cond
*.eye5 0 >
*.in1 *.out1 !=
start
-1 .shoot store
stopLos canales por lazo sirven para coordinar a un organismo de varios bots. Por la vista, .in1 se borra después de cada ejecución del ADN; por el lazo, .tin1 se vuelve a cargar en cada ciclo desde el lazo que estás leyendo y solo pasa a 0 cuando ese lazo deja de existir. El padre y el hijo quedan atados al nacer y pueden hablarse por ahí casi enseguida: el padre recibe lo del hijo desde el primer ciclo, y el hijo recibe lo del padre cuando su .robage llega a 3 (ver las sysvars de lazos y Lazos y multicelulares). Si lo que querés es escribir directamente en la memoria del otro, eso lo hacen .tieloc y .tieval.