En/Je/On 2015-11-11 05:27, [email protected] [forth-es] escribió / skribis / wrote :
> Estoy tratando de traducir la palabra “decode” hasta el > FlashForth que tengo instalado en mi arduino atmega328. La versión de `decode` que escribí para Afera es fig-Forth. Tengo otra versión modernizada que adapté después para mi sistema Solo Forth. Probablemente te será más fácil adaptar esta última, después te la preparo y publico el enlace. > --En lugar de “NFA“utilizo “c>n”. Espero que funcione. Sí. Por lo que veo en el glosario (http://www.flashforth.com/wordsAll.txt), `c>n` hace en FlashForth lo mismo que `nfa` hace en el modelo fig-Forth. > --Pero al estudiar “ID.” No encuentro ninguna > correspondencia con FlashForth. Al buscar lo que hace > “ID.” leo: “Print a definition's name from its name field > address”. Y tampoco sé cómo construir una palabra que haga > lo mismo. FlashForth tiene que tener un palabra para imprimir el nombre de una palabra (aunque solo sea porque tiene `words`), pero no la encuentro en el glosario. El nombre que se usa para esto no está estandarizado. En los Forth modernos se suele llamar `.id`, antes se solía llamar `id.`. No encuentro algo parecido en el documento, ni con "name" en lugar de "id", que también podría ser. Puede que no exista en FlashForth, y su función esté integrada en `words`. O puede que no sea pública, que no tenga cabecera. Para salir de dudas podrías consultar a los autores o usuarios de FlashForth. Escribir `.id` no tiene dificultad pero hace falta saber cómo se guardan las cabeceras de las palabras en el diccionario. Lo más habitual es que el campo de nombres contenga una cadena contada, pero cuyo octeto de longitud se usa también para guardar bitios de información (si la palabra es immediata, si está completa, si es solo de compilación). Por lógica suelen ser los bitios más altos. Hay que quitarlos de enmedio con una máscara. Como la longitud máxima de las palabras suele ser de 31 caracteres (00011111 en binario), generalmente esta definición te podría funcionar: : .id ( nfa -- ) ' c>n count 31 and type ; Pero no es seguro. Todo depende de cómo funcione interiormente FlashForth y de cómo guarde las cabeceras de las palabras en el diccionario. Esa información debería estar en la documentación. Saludos. -- Marcos Cruz http://programandala.net
