Autor Tema: Manejo de Tablas en ASM  (Leído 12347 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Franc749

  • PIC10
  • *
  • Mensajes: 22
Manejo de Tablas en ASM
« en: 13 de Enero de 2007, 17:54:21 »
Hola a todos.

Queria proponer el tema de manejo de tablas.
Les comento en que ando: tengo que implementar en un micro una ecuacion de diferencias, que son varios coeficientes fijos multiplicados por entradas pasadas o presentes y luego hay que sumar todo para sacar un valor de salida.

Al principio queria multiplicar todo, pero despues me dí cuenta que es mejor tener una tabla con cada valor de salida para cada entrada.Asi los calculos no llevan mucho tiempo y el proceso de control es mas estable.

El problema es que yo aprendí asembler con el motorola 6809 (el abuelo de los actuales motorola).
Y entre su capacidades de direccionmiento estaba el indexado.(muy practico para el manejo de tablas), aparte de tener otro tipo de arquitectura.

Por lo que ví, el pic 16F873 no tiene el modo de direccionamiento indexado. :shock:

Alguien sabe como se puede hacer? algún truquillo por ahí. :-)

POR EJEMPLO:

Entran "8 bit" por el adc y los pongo en un registro.
El valor de ese registro me dice que posición de memoria tengo que ir a buscar de una tabla de 256 valores pregrabados.

Alguna idea?? :-/

Gracias por la buena onda :P

Saludos
"Prenden fuego y no queman nada"

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Manejo de Tablas en ASM
« Respuesta #1 en: 13 de Enero de 2007, 20:22:33 »
Hola, tu PIC16F873 tiene direccionamiemto indirecto... tienes 2 registros de proposito general(INDF y FSR): utilizas  FSR para cargar la direccion de memoria que direcciona INDF...

Además tienes la posibilidad realizar tablas utilizando los registros PCL(parte baja del PC) y PCH(parte alta del PC) y con la instrucción retlw(retornar literal)...

Con estas dos formas no tendrás demasiado problema para implementar tu tabla(te recomiendo la primera que para mi es más elegante).

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Manejo de Tablas en ASM
« Respuesta #2 en: 14 de Enero de 2007, 12:33:58 »
Hola amigos. Está interesante lo que mencionas manwenwe, respecto al uso del direccionamiento indirecto para tablas, yo no he visto usos de INDF y FSR.

Las tablas siempre las he manejado con el retlw, en este caso habría que tener cuidado cada 255 lineas y hacer el ajuste respectivo del PCLAT.

si pudieras ampliar un poco la información sobre el INDF (sino es mucha molestia)  :)

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Manejo de Tablas en ASM
« Respuesta #3 en: 14 de Enero de 2007, 13:08:14 »
Hola, que conste que hace casi 2 años que no toco nada en ensamblador... es por si meto la pata diciendo alguna barbaridad jejejej.

Pues nada, cuando lo haces como tú dices, Palitroquez, simplemente tienes una rutina del tipo:

Código: [Seleccionar]
TABLA
ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000011'
RETLW B'01110110'
RETLW B'01100111'
RETLW B'01001011'
RETLW B'01101101'
RETLW B'01111001'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01001111'

... antes de llamar a la rutina cargas en el acumulador el indice de la tabla y despues llamas y la rutina te devuelve(en el acumulador) el valor que sea....

Lo que yo comentaba es lo siguiente....

1º cargas toda la tabla en RAM:
Código: [Seleccionar]
MOVLW B'00111111'
MOVWF 0x20

MOVLW B'00000011'
MOVWF 0x21
;etc...

2º Accedes a estos valores atraves de FSR e INDF....
Código: [Seleccionar]
MOVLW 0x20
MOVWF FSR

MOVFW INDF
;haces lo que sea con el valor que habia en 0x20...

INCF FSR
;FSR = 0x21

MOVFW INDF
;haces lo que sea con el valor que habia en 0x21...

Como puedes ver, esto es lo más parecido a lo que supone un puntero en lenguaje de alto nivel... desventajas: ocupas ram; ventajas: es mucho más versatil...

Por último recordar que igualmente tienes que tener en cuenta el banco en que estás situado y no pasarte... XD

Si tienes alguna duda, si puedo ayudarte estaré encatado:D.

Saludos!



Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Manejo de Tablas en ASM
« Respuesta #4 en: 16 de Enero de 2007, 16:26:48 »
Franc749 te dejo este link, espero te sirva de utilidad


Ejemplos en Assembler - PIC16F876


Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado LeSs

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 81
Re: Manejo de Tablas en ASM
« Respuesta #5 en: 19 de Enero de 2007, 13:45:09 »
Salu2!

Franc749, te comentop que el ejemplo que postea Maunix es muy bueno, yo lo utilice para incluir tablas de mensajes en cualquier parte de la memoria de programa con resultados excelentes.

como yo no utilizaba las paginas 2,3,4 tuve que suprimir la directiva del MPSAM PAGESEL, por que era innecesario.

Pero si deseas aqui te dejo otro enlace, que tambien hace lo mismo, pero es para un programa no tan complicado diria yo. Pero el de maunix esta bien detallado.
El hambre produce poemas inmortales. La abundancia únicamente indigestión y torpezas.
Aprendiendo a programar en C.

Desconectado Franc749

  • PIC10
  • *
  • Mensajes: 22
Re: Manejo de Tablas en ASM
« Respuesta #6 en: 26 de Enero de 2007, 18:45:36 »
Hola, disculpen me habia colgado por las vacaciones.

Me parece muy piola lo de modo indirecto con el FSR y el INDF que comentó manwenwe.

Hice una modificacion a su ejemplo..

Les parece que funcionaria o estoy mal??

Ejemplo Modificado:

1º cargas toda la tabla en RAM:

Código:
MOVLW B'00111111'
MOVWF 0x20

MOVLW B'00000011'
MOVWF 0x21
;etc...

2º Accedes a estos valores atraves de FSR e INDF....

Código:

;Modificación
OFFSET  equ 0xXX  ;VARIABLE POR ADQUISICION DE DATOS.


MOVLW 0x20
ADDWF OFFSET,0     ; sumo el offet variable de 0 a 255
MOVWF FSR     ; ahora mi puntero apunta a 0x20 + el offset.

MOVFW INDF
;haces lo que sea con el valor que habia en 0x21+ offset.



"Prenden fuego y no queman nada"

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Manejo de Tablas en ASM
« Respuesta #7 en: 26 de Enero de 2007, 20:42:34 »
Hola Franc749
Citar
;haces lo que sea con el valor que habia en 0x21+ offset.
Si cambias 0x21 por 0x20 entonces tienes razón...creo que se te pasó un numerillo copiando mi ejemplo jejeje....

Sí, si que funciona... tu hazte a la idea de que todo lo que puedes hacer con un puntero C, puedes hacerlo con INDF y FSR, eso si, te costará mas código en ASM... pero aun así para mi es de los mejores recursos del ASM: hace que el manejo de la RAM sea mucho más facil...

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Manejo de Tablas en ASM
« Respuesta #8 en: 27 de Enero de 2007, 14:42:38 »
Hola Franc749
Citar
;haces lo que sea con el valor que habia en 0x21+ offset.
Si cambias 0x21 por 0x20 entonces tienes razón...creo que se te pasó un numerillo copiando mi ejemplo jejeje....

Sí, si que funciona... tu hazte a la idea de que todo lo que puedes hacer con un puntero C, puedes hacerlo con INDF y FSR, eso si, te costará mas código en ASM... pero aun así para mi es de los mejores recursos del ASM: hace que el manejo de la RAM sea mucho más facil...

Saludos!

En ASM uno tipeará más lineas pero el código final debiera ser menor o igual a uno generado en C.  Esto es así para el 100% de las cosas que uno decida hacer.

En definitiva el código en C se convierte a ASM y luego en código máquina, he ahí la razón.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Manejo de Tablas en ASM
« Respuesta #9 en: 27 de Enero de 2007, 15:37:35 »
Citar
En ASM uno tipeará más lineas pero el código final debiera ser menor o igual a uno generado en C.  Esto es así para el 100% de las cosas que uno decida hacer.

En definitiva el código en C se convierte a ASM y luego en código máquina, he ahí la razón.

Saludos

Gracias por la aclaración maunix... yo sólo me refería a que te toca escribir más lineas de código que en C, está claro que el código generado es el mismo o menor...

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Franc749

  • PIC10
  • *
  • Mensajes: 22
Re: Manejo de Tablas en ASM
« Respuesta #10 en: 27 de Enero de 2007, 16:26:21 »
Salu2!

Franc749, te comentop que el ejemplo que postea Maunix es muy bueno, yo lo utilice para incluir tablas de mensajes en cualquier parte de la memoria de programa con resultados excelentes.

como yo no utilizaba las paginas 2,3,4 tuve que suprimir la directiva del MPSAM PAGESEL, por que era innecesario.

Pero si deseas aqui te dejo otro enlace, que tambien hace lo mismo, pero es para un programa no tan complicado diria yo. Pero el de maunix esta bien detallado.

Me estuve fijando en el manejo de tablas en memoria de programa. Al parecer me vienen como anillo al dedo, pues tengo que cargar 256 valores, por que, por mas que use la ram del 16F873 solo tengo 192 Registros de proposito gral.

Pero no entiendo ¿que hace la directiva PAGESEL del MPSAM?

Yo uso el MPLAB IDE v/.40, ¿Tambien sirve esta directiva?

Otra PReguntilla (Lo que pasa es que me enganche mal...):

Si yo quiero poner una tabla de 256 valores constantes en, por ejemplo, la pagina 0 subagina 6, hago:

          movlw h'06'  ; pag 0 subpagina 6
          movwf pclath
          movlw offset
          call      tabla
          movwf portb
          clrf      pclath

          Org      600h
tabla   addf     pcl,f   ; pcl + offset
         retlw     1
         retlw     2
         retlw     3
         retlw     4
         retlw     5
        ------
        ------
         retlw     256

La pregunta es: Si es que a partir de la direccion de memoria 0600h, solo se carga la tabla de 256 valores???
o tambien se carga el o los nemonicos en asm de la instruccion addf???
Por que de ser, se superaria la subpagina, por cada subpagina tiene 256 x 14 bits segun entiendo..
¿se entendio la pregunta?

saludos
"Prenden fuego y no queman nada"

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Manejo de Tablas en ASM
« Respuesta #11 en: 28 de Enero de 2007, 21:57:02 »
1) El macro "pagesel" es interpretado por el MPASM no por el MPLAB, así que no hay problema con la versión de MPLAB que uses siempre que la versión de MPASM sea una que lo interprete.  No se en qué versión comenzaron a usarlo pero lo cierto es que de por lo menos dos años a la fecha seguro que el MPASM lo interpreta bien.

2) Tu tabla incluye el addwf , y el addwf se ensamblará a partir de la línea 0x0600h
Es así como lo imaginas, la tabla superará el bloque de 256 bytes.  Para evitar esto, debes también incluir el PCL en el cálculo previo.  Puedes usar un PCLow y PCHigh temporales para hacer el cálculo previo.  Luego la tabla ya no necesitará tener el addwf en la primer línea ni tampoco necesitará estar ubicada a partir del inicio de un bloque de 256 bytes.

Tu cargas el PCLow y PCHigh con la posición de la tabla donde estará el dato (en este caso 0x600) , luego le sumas la posición de la tabla a leer (de 0 a N o al valor que desees) y por último lo cargas en el PCLATH y haces el call.

Espero se haya entendido, sino, te sugiero que leas la application note sobre tablas de Microchip.

AN548: Implementing Table Read and Table Write
Osea, que debes conocer el valor de la tabla que querras leer (por ejemplo el 5to valor), luego se lo sumas al PCL de la posición donde está la tabla.  Si hay un overflow, tomas la cuenta y se lo sumas al valor del PCLATH

Te sugiero leas la

Por que de ser, se superaria la subpagina, por cada subpagina tiene 256 x 14 bits segun entiendo..
¿se entendio la pregunta?

saludos
[/quote]
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Franc749

  • PIC10
  • *
  • Mensajes: 22
Re: Manejo de Tablas en ASM
« Respuesta #12 en: 29 de Enero de 2007, 17:47:44 »
Gracias por la info.

Espero que salga todo bien.

Despues ingreso la tra de codigo de la adquisicion y la tabla.

Salu2.
"Prenden fuego y no queman nada"

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Manejo de Tablas en ASM
« Respuesta #13 en: 31 de Enero de 2007, 12:01:32 »
Bueno con el permiso de Franc749 quisiera agregar un ejemplito del uso de tablas, un caso particular (ya conseguí el ejemplo manwenwe :mrgreen:).

este código es para generar melodias con un 12cxxx, pero yo lo adapté para un 16f84a, en el adjunto está el código pero la parte que quiero resaltar radica en las tablas, si miran el código observaran el ajuste del PCLATH

Código: [Seleccionar]
...
org d'256'
;***********************************************************
; PINCO
;***********************************************************
Melody1:
movlw d'1'
movwf PCLATH
movf Note,W
addwf PCL,F
retlw 0xCA
...
...
Melody2:
movlw d'1'
movwf PCLATH
movf Note,W
addwf PCL,F
retlw 0x48
...
...

;***********************************************************
org d'512'
;***********************************************************
; ENGLISH WALTZ
;***********************************************************
Melody4:
movlw d'2'
movwf PCLATH
movf Note,W
addwf PCL,F
retlw 0x80
retlw 0x80
...
...

Melody5:
movlw d'2'
movwf PCLATH
movf Note,W
addwf PCL,1
retlw 0x65
retlw 0x65
...
...

;***********************************************************
org d'768'
;***********************************************************
; FINAL COUNTDOWN
;***********************************************************
Melody7:
movlw d'3'
movwf PCLATH
movf Note,W
addwf PCL,F
retlw 0x4C
retlw 0x55

...
...

;***********************************************************
; IN THE MORNING
;***********************************************************
Melody8:
movlw d'3'
movwf PCLATH
movf Note,W
addwf PCL,F
retlw 0x98


las tablas, como son varias van pasando los bloques de 256 bytes, y mi conclusión para este caso:

los bits 8 y 9 se usan cuando se sabe que el PCL se desborda y es para  hacer llamados mayores de 255 ( 1 página=1024 bytes) 4 bloques de 256= 4 posibilidades =2^2=4


Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Franc749

  • PIC10
  • *
  • Mensajes: 22
Re: Manejo de Tablas en ASM
« Respuesta #14 en: 04 de Febrero de 2007, 15:07:52 »
Bueno aqui les dejo el assembler que me quedo, la tabla es bastante larga (254 valores) pero tengo espacio de sobra.

Si ven algun error por favor me avisan.

Muchas gracias por la info y la buena onda.

Salu2

Código: [Seleccionar]
list p=16f873
include "p16f873.inc"

W EQU 0 ;Destino Registro acumulador
F EQU 1 ;Destino Registro usado
RP0 EQU 5 ;Manejan los 4 bancos de memoria de datos
RP1 EQU 6 ;
DATO EQU 20h ;Ángulo medido por sensor hall no lineal.
ANGULO EQU 21h ;Ángulo corregido por tabla.
POSI EQU 22h ;Distancia del motor medida en forma lineal.
VELOCIDAD EQU 23h ;Velocidad proporcional a la tensión medida.

RETARDO EQU 24h
GO EQU 2

;.............................................................................
;PROGRAMA PRINCIPAL

ORG 00h
GOTO    PROGRAMA   
 
     ORG 05h
PROGRAMA BCF STATUS,RP0 ;Página 0
BCF STATUS,RP1
CALL INI_ADC
CALL INI_USART
CLRF PORTB ;en Pág 0
BSF STATUS,RP0 ;Pág 1
CLRF TRISB ;Configura a todo el puerto B como salida
BCF STATUS,RP0 ;Pág 0
CLRF PORTB

BUCLE CALL LEEPOSI
CALL SEND
CALL LEEANG
CALL SEND
CALL VELOCI
CALL SEND
GOTO BUCLE
;.....................................................................................
;Subrrutina que obtiene el ángulo de la paleta y lo corrige por tabla.

LEEANG MOVLW b'10001001' ;Configuración del ADC. Fosc/32, A/D ON. channel 1.
MOVWF ADCON0 ;Configuro ADC.
CALL DELAY ;para estabilizar la entrada (25 uS)

BSF ADCON0,GO ;Inicia conversión
SALTO1    BTFSC ADCON0,GO ;Si GO = 1 => Sigo verificando
GOTO SALTO1
BCF PIR1,ADIF ;Borra la bandera de fin de conversión

BSF STATUS,RP0
MOVF ADRESL,W ;Carga valor del conversor en
BCF STATUS,RP0
MOVWF DATO ;en el registro DATO =Offset para la tabla en memoria

MOVLW b'00000110' ;Memoria de programa página 0 subpagina 6
MOVWF PCLATH ;Carga el PCLATH para el salto en memoria
MOVF DATO ;Carga el offset en W
CALL TABLA ;Busca la correción del ángulo
MOVWF ANGULO ;Ángulo corregido a usar
CLRF PCLATH ;Pág 0 subpagina 0
MOVF ANGULO,W

RETURN
;....................................................................................
;Tabla para la correción del sensor de efecto HALL
ORG 600h ;inicio de la tabla en 0600h= Página 0, subpagina 6
TABLA ADDWF PCL,F ;PCL + Offset
RETLW d'1'
RETLW d'2'
RETLW d'3'
RETLW d'4'
RETLW d'5'
RETLW d'5'
RETLW d'6'
RETLW d'7'
RETLW d'8'
RETLW d'9'
RETLW d'10'
RETLW d'11'
RETLW d'12'
RETLW d'13'
RETLW d'14'
RETLW d'15'
RETLW d'16'
RETLW d'16'
RETLW d'17'
RETLW d'18'
RETLW d'19'
RETLW d'20'
RETLW d'21'
RETLW d'21'
RETLW d'22'
RETLW d'22'
RETLW d'23'
RETLW d'23'
RETLW d'24'
RETLW d'24'
RETLW d'25'
RETLW d'25'
RETLW d'26'
RETLW d'26'
RETLW d'27'
RETLW d'27'
RETLW d'28'
RETLW d'28'
RETLW d'29'
RETLW d'29'
RETLW d'30'
RETLW d'30'
RETLW d'31'
RETLW d'31'
RETLW d'32'
RETLW d'32'
RETLW d'33'
RETLW d'33'
RETLW d'34'
RETLW d'34'
RETLW d'35'
RETLW d'35'
RETLW d'36'
RETLW d'36'
RETLW d'37'
RETLW d'37'
RETLW d'38'
RETLW d'38'
RETLW d'39'
RETLW d'39'
RETLW d'40'
RETLW d'40'
RETLW d'41'
RETLW d'41'
RETLW d'42'
RETLW d'42'
RETLW d'43'
RETLW d'43'
RETLW d'44'
RETLW d'44'
RETLW d'45'
RETLW d'45'
RETLW d'46'
RETLW d'47'
RETLW d'47'
RETLW d'48'
RETLW d'48'
RETLW d'49'
RETLW d'49'
RETLW d'50'
RETLW d'50'
RETLW d'51'
RETLW d'51'
RETLW d'52'
RETLW d'52'
RETLW d'53'
RETLW d'53'
RETLW d'54'
RETLW d'54'
RETLW d'55'
RETLW d'55'
RETLW d'56'
RETLW d'56'
RETLW d'57'
RETLW d'57'
RETLW d'58'
RETLW d'58'
RETLW d'59'
RETLW d'59'
RETLW d'60'
RETLW d'60'
RETLW d'61'
RETLW d'61'
RETLW d'62'
RETLW d'62'
RETLW d'63'
RETLW d'63'
RETLW d'64'
RETLW d'64'
RETLW d'65'
RETLW d'65'
RETLW d'66'
RETLW d'66'
RETLW d'67'
RETLW d'67'
RETLW d'68'
RETLW d'68'
RETLW d'69'
RETLW d'69'
RETLW d'70'
RETLW d'70'
RETLW d'71'
RETLW d'71'
RETLW d'72'
RETLW d'72'
RETLW d'73'
RETLW d'73'
RETLW d'74'
RETLW d'74'
RETLW d'75'
RETLW d'75'
RETLW d'76'
RETLW d'76'
RETLW d'77'
RETLW d'77'
RETLW d'78'
RETLW d'78'
RETLW d'79'
RETLW d'79'
RETLW d'80'
RETLW d'80'
RETLW d'81'
RETLW d'82'
RETLW d'82'
RETLW d'83'
RETLW d'83'
RETLW d'84'
RETLW d'84'
RETLW d'85'                        
RETLW d'85'
RETLW d'86'
RETLW d'86'
RETLW d'87'
RETLW d'87'
RETLW d'88'
RETLW d'88'
RETLW d'89'
RETLW d'89'
RETLW d'90'
RETLW d'90'
RETLW d'91'
RETLW d'91'
RETLW d'92'
RETLW d'92'
RETLW d'93'
RETLW d'93'
RETLW d'94'
RETLW d'94'
RETLW d'95'
RETLW d'95'
RETLW d'96'
RETLW d'96'
RETLW d'97'
RETLW d'97'
RETLW d'98'
RETLW d'98'
RETLW d'99'
RETLW d'99'
RETLW d'100'
RETLW d'100'
RETLW d'101'
RETLW d'101'
RETLW d'102'
RETLW d'102'
RETLW d'103'
RETLW d'103'
RETLW d'104'
RETLW d'104'
RETLW d'105'
RETLW d'105'
RETLW d'106'
RETLW d'106'
RETLW d'107'
RETLW d'107'
RETLW d'108'
RETLW d'110'
RETLW d'111'
RETLW d'112'
RETLW d'114'
RETLW d'115'
RETLW d'117'
RETLW d'118'
RETLW d'119'
RETLW d'121'
RETLW d'122'
RETLW d'124'
RETLW d'126'
RETLW d'128'
RETLW d'130'
RETLW d'132'
RETLW d'134'
RETLW d'136'
RETLW d'138'
RETLW d'140'
RETLW d'142'
RETLW d'144'
RETLW d'145'
RETLW d'147'
RETLW d'149'
RETLW d'151'
RETLW d'153'
RETLW d'155'
RETLW d'157'
RETLW d'159'
RETLW d'161'
RETLW d'163'
RETLW d'165'
RETLW d'167'
RETLW d'169'
RETLW d'171'
RETLW d'173'
RETLW d'175'
RETLW d'176'
RETLW d'178'
RETLW d'180'
RETLW d'182'
RETLW d'184'
RETLW d'186'
RETLW d'188'
RETLW d'190'
RETLW d'192'
RETLW d'194'
RETLW d'196'
RETLW d'198'
RETLW d'200'
RETLW d'202'
RETLW d'205'
RETLW d'209'
RETLW d'212'
RETLW d'215'
RETLW d'219'
RETLW d'222'
RETLW d'225'
RETLW d'229'
RETLW d'232'

END              ;ojo que solo son 254 valores+ el addf
"Prenden fuego y no queman nada"


 

anything