Autor Tema: TRSE, Turbo Rascal Sintax Error  (Leído 235 veces)

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13628
  • Commodoreador web
    • Ver Perfil
    • Mi blog
TRSE, Turbo Rascal Sintax Error
« en: Marzo 04, 2024, 04:07:02 »
Abro este hilo para ir comentando mis dudas y avances.

Primero presentando el TRSE: a modo de resumen muy resumido, se trata de Turbo Pascal para C64, pero es mucho mas...

Citar
TRSE (or its full original name “Turbo Rascal Syntax error, “;” expected but “BEGIN”) is a complete suite (IDE, compiler, programming language, resource editor) intended for developing games/demos for 8 / 16-bit line of computers, with a focus on the MOS 6502, the Motorola 68000, the (GB)Z80, the M6809 and the X86. TRSE currently supports application development for the C64, C128, VIC-20, PLUS4, NES, Gameboy, PET, ZX Spectrum, TIKI 100, Amstrad CPC 464, Atari 2600, 8086AT, Amiga 500, Atari 800, BBC Micro, Super Nintendo (SNES), Mega65, VZ200, MSX, Apple II, Commander X16, TIM-011, Videoton TVC, TRS80 CoCo3, the Vectrex, Thomson (mo5 and mo6) and the Atari ST 520 (complete list here). With the benefits of a modern IDE (error messages, code completion, syntax highlighting, sample projects and tutorials) and a bunch of fast built-in tools, it has never been easier to program for your favorite obsolete system!

TRSE runs on Windows 64-bit, Linux 64-bit and OS X. Development began on Feb 24th 2018. The TRSE framework contains a number of project examples for multiple platforms, including almost 300 runnable tutorials. TRSE also contains a real-time ray tracer that can export (compressed) data for demo and game production. In addition to this, TRSE contains a versatile image editor that can edit/import/export sprite/image/levels natively to almost all the systems supported by TRSE. TRSE also contains a rudimentary music tracker that currently supports the VIC-20, Adlib and PC speaker.

https://lemonspawn.com/turbo-rascal-syntax-error-expected-but-begin/

https://www.youtube.com/watch?v=WhJSG7TiHAE
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13628
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #1 en: Marzo 04, 2024, 04:12:05 »
Que yo sepa, por aquí tenemos a @mirazulado que lo usa.

Por mi parte, yo fui usuario de Turbo Pascal en los 90s y es un lenguaje que le tuve mucho cariño entonces, asi que ahora que tengo ganas de ponerme a hacer algo para el 64, he visto mis opciones:

- Ensamblador: lo usé, pero creo que se me haría cuesta arriba empezar directamente por ahí

- C (CC65 u Oscar64): nunca llegué a pasar de Pascal a C, igual no creo que sea nada tan distinto a lo que sé

- Pascal: me tira la nostalgia de volver a hacer algo con Pascal y existiendo este IDE tan completito la tentación es enorme.

Así que decidido, será en Turbo Rascal. He visto que se han hecho cosas muy lindas con esto, asi que me imagino que puede estar a niveles parecidos a los compiladores de C.

En todo caso, para mi, para empezar seguro es mas que suficiente.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13628
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #2 en: Marzo 04, 2024, 18:23:10 »
@Dozznar @mirazulado @jicas , por citar a la gente que está usando C o Rascal. Si hay alguien mas decidme.

Me dejo fuera a los pesos pesados del ensamblador... que a esos mejor no molestarlos ;)
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

Dozznar

  • Commodoremaníaco
  • ****
  • Mensajes: 143
    • Ver Perfil
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #3 en: Marzo 04, 2024, 19:35:17 »
Pues por aquí ando también. A ver si desempolvamos viejos libros de Turbo Pascal. Lo dimos un año como asignatura en el grado superior de informática de gestión. Lo recuerdo como muy sencillo de programar (parecido al Basic) pero mas potente por la inclusión de Bibliotecas. No recuerdo si también se usaban punteros

josepzin

  • Administrador
  • Commodore Master
  • *****
  • Mensajes: 13628
  • Commodoreador web
    • Ver Perfil
    • Mi blog
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #4 en: Marzo 04, 2024, 19:39:27 »
Si, tiene punteros, permite incluir código ensamblador, crear librerías, clases, records, etc.
www.retroinvaders.com | www.commodoreplus.org  | josepzin.blogspot.com

jicas

  • Commodoremaníaco
  • ****
  • Mensajes: 183
  • SYS 0
    • Ver Perfil
    • Patagonia C64
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #5 en: Marzo 08, 2024, 01:24:44 »
Bueno recuerdo Pascal con mucho cariño... Eh llegado a aprovechar los intervalos (recreos) en la universidad para hacer algunos jueguitos rápidos, que luego los corría en la consola CMD/DOS   ;D ;D

Luego nunca más se me dió la oportunidad...  :-\

Cuando decidí hacer algo por la C64 empecé directo al hueso.. estudiando asembler. :o :o Nada que temer Josepzin, te animo a darle una oportunidad... con PACIENCIA y Tiempo  ::)

Conozco la existencia de TRSE pero no lo usé. Lo veo super completo la verdad !!!  8)

mirazulado

  • Sinver
  • *
  • Mensajes: 18
  • SYS 0
    • Ver Perfil
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #6 en: Marzo 14, 2024, 19:58:49 »
buen dia amigos!. efectivamente hace unos años que utilizo TRSE.
Que contarles.. primeramente que es un IDE completo de programación. Contienen un buen editor gráfico y de sprite, no es el mejor que he visto, pero sirve perfectamente para llevar a cabo la mayoría de los proyectos sin problemas. Soporta compresión y descompresión de archivos, incluye rutinas de carga rápida y tiene soporte para manejar archivos en disco. Seguramente olvido más de la mitad de las funciones que hacen grande al TRSE.
Aquí debo aclarar algo. Si bien posee rutinas gráficas y comandos de alto nivel (Printstring, printdecimal, moveto, plot y demás), la experiencia me dice que a la hora de la programación de un juego o demo, no es tan importante el lenguaje utilizado tanto como el conocimiento interno de cómo funciona la máquina, siempre y en cuanto estemos hablando de compiladores modernos. Bastará un par de programas hechos para darte cuenta que es más fácil, y eficiente, escribir en la memoria gráfica que utilizar la instrucción Print.
La eficiencia del compilador depende de cuan automáticamente hace las cosas y TRSE se encuentra en un punto muy cercano al assembler. Con esto me refiero a que se pueden hacer muchas cosas con TRSE, pero hay que saber que se está haciendo y conocer la máquina en profundidad para sacar el mayor provecho.
Personalmente utilizo TRSE como ayuda en rutinas basicas, al fin y al cabo:
A:=A+1 se compila como INC(A) si solo estamos utilizando variables de 8bit. Un CASE(A) se compila con varios CMP y BNE. Entonces lo importante es saber cuando usar 8bit y cuando variables de 16bit y ubicar el CASE sabiendo que se utiliza BNE en la compilación y este genera error de brach si el salto es mayor de 128 instrucciones. Tampoco voy a multiplicar dos variables de 16bit sin saber que esto conlleva un costo en tiempo y memoria grandes. En definitiva, ya sea assembler o TRSE, es necesario conocer la C64 en profundidad. Una vez compilado el programa nos damos cuenta que las rutinas utilizadas en el código final son las recomendadas en codebase64, eso es genial y por eso lo utilizo. Comparé un programa mío hecho en assembler y en TRSE y eran muy parecidos. Es suficiente para mí. OJO, siempre compruebo el archivo assembler generado luego de la compilación sobre las rutinas críticas. Si funcionan bien, las dejo; si necesito optimizar voy buscando opciones con otras instrucciones del TRSE o simplemente utilizo la función ASM que me permite escribir assembler directamente en el programa.
Es multiplataforma y compila en muchas máquinas retro. Genial, pero otra vez, hay que conocer la máquina destino, sino no haríamos nada más complicado que lo que hacemos en basic.
He trabajado como coordinador de tester en empresas de programación importante así que en estos últimos cuatro años ayudé en el desarrollo del proyecto desde ese lado  y puedo decirles que hace muchos meses que no reporto ningún bug en la compilación y lo considero confiable!. Es un gran compilador!
Bueno les dejo mi lugar  https://mirazulado.itch.io/
Aquí encontrarán un juego y dos demos hechas en TRSE (Submarine Warfare y los dos demos).
No se me ocurre nada más que decir. Les ayudaré en lo que pueda.
Un abrazo desde Argentina!!

Dozznar

  • Commodoremaníaco
  • ****
  • Mensajes: 143
    • Ver Perfil
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #7 en: Marzo 15, 2024, 14:15:31 »
buen dia amigos!. efectivamente hace unos años que utilizo TRSE.
Que contarles.. primeramente que es un IDE completo de programación. Contienen un buen editor gráfico y de sprite, no es el mejor que he visto, pero sirve perfectamente para llevar a cabo la mayoría de los proyectos sin problemas. Soporta compresión y descompresión de archivos, incluye rutinas de carga rápida y tiene soporte para manejar archivos en disco. Seguramente olvido más de la mitad de las funciones que hacen grande al TRSE.
Aquí debo aclarar algo. Si bien posee rutinas gráficas y comandos de alto nivel (Printstring, printdecimal, moveto, plot y demás), la experiencia me dice que a la hora de la programación de un juego o demo, no es tan importante el lenguaje utilizado tanto como el conocimiento interno de cómo funciona la máquina, siempre y en cuanto estemos hablando de compiladores modernos. Bastará un par de programas hechos para darte cuenta que es más fácil, y eficiente, escribir en la memoria gráfica que utilizar la instrucción Print.
La eficiencia del compilador depende de cuan automáticamente hace las cosas y TRSE se encuentra en un punto muy cercano al assembler. Con esto me refiero a que se pueden hacer muchas cosas con TRSE, pero hay que saber que se está haciendo y conocer la máquina en profundidad para sacar el mayor provecho.
Personalmente utilizo TRSE como ayuda en rutinas basicas, al fin y al cabo:
A:=A+1 se compila como INC(A) si solo estamos utilizando variables de 8bit. Un CASE(A) se compila con varios CMP y BNE. Entonces lo importante es saber cuando usar 8bit y cuando variables de 16bit y ubicar el CASE sabiendo que se utiliza BNE en la compilación y este genera error de brach si el salto es mayor de 128 instrucciones. Tampoco voy a multiplicar dos variables de 16bit sin saber que esto conlleva un costo en tiempo y memoria grandes. En definitiva, ya sea assembler o TRSE, es necesario conocer la C64 en profundidad. Una vez compilado el programa nos damos cuenta que las rutinas utilizadas en el código final son las recomendadas en codebase64, eso es genial y por eso lo utilizo. Comparé un programa mío hecho en assembler y en TRSE y eran muy parecidos. Es suficiente para mí. OJO, siempre compruebo el archivo assembler generado luego de la compilación sobre las rutinas críticas. Si funcionan bien, las dejo; si necesito optimizar voy buscando opciones con otras instrucciones del TRSE o simplemente utilizo la función ASM que me permite escribir assembler directamente en el programa.
Es multiplataforma y compila en muchas máquinas retro. Genial, pero otra vez, hay que conocer la máquina destino, sino no haríamos nada más complicado que lo que hacemos en basic.
He trabajado como coordinador de tester en empresas de programación importante así que en estos últimos cuatro años ayudé en el desarrollo del proyecto desde ese lado  y puedo decirles que hace muchos meses que no reporto ningún bug en la compilación y lo considero confiable!. Es un gran compilador!
Bueno les dejo mi lugar  https://mirazulado.itch.io/
Aquí encontrarán un juego y dos demos hechas en TRSE (Submarine Warfare y los dos demos).
No se me ocurre nada más que decir. Les ayudaré en lo que pueda.
Un abrazo desde Argentina!!

¿Qué tal compañero?

Has dado en la clave de la cuestión. Totalmente de acuerdo con todo lo que dices. Es importante el conocimiento de la máquina para sacarle todo el provecho al compilador. También es importante el propio compilador por supuesto. De vez en cuando quizás haya que echarle una mano... Hay operaciones que si el compilador no las interpreta bien puede meter demasiados ciclos añadidos p.ej.

a=5*8 es una multiplicación que bien compilada serían solo 3 ciclos de reloj (3 desplazamientos a la izquierda)

Si el compilador no lo "entiende" es mejor hacer a=5<<3 y así con otras tantas operaciones. Es ir conociéndolo y adaptarse a él para sacarle el mejor rendimiento.

Un saludo!

Laddh

  • Desarrolladores
  • Commodore Master
  • ******
  • Mensajes: 233
    • Ver Perfil
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #8 en: Marzo 15, 2024, 19:27:04 »
Hola Josepzin y compañía, yo es que estos compiladores ( C, Pascal..) para commodore64 no los veo, en un pc con gigas de memoria libre pues no importa que el ejecutable que te resulte al compilar sea mas o menos grande, pero en nuestra panera si quieres hacer un proyecto ya grande cada byte es vital, enseguida te quedas sin espacio y os pongo un ejemplo para veáis claro lo que quiero explicar. Buscando ejemplos para multiplexar sprites llegué a un listado en C con el cc65 para mostrar 64 sprites en pantalla, el listado era cortito y con un bucle creaba 8 sprites por linea raster, bien, pero cuando me bajo el ejecutable creado y me lo miro, ocupaba casi toda la memoria, había creado 64 veces la misma rutina incrementando en uno, cuando con un simple bucle en ensamblador en unos pocos bytes lo tienes hecho.
No los veo optimizados para trabajar en un entorno tan restringido como es el de nuestros micros.
Ya puestos y si de verdad tienes empeño, metete al ensamblador que solo son unos poco nemónicos a memorizar y como dice mirazulado lo que hay que saber es de la máquina, en vez de aprenderte un montón de comandos y librerías que aún te llevara mas tiempo, y haces un código mucho mas eficiente.
A mí, el que me parece difícil ahora es el Basic  ;D

mirazulado

  • Sinver
  • *
  • Mensajes: 18
  • SYS 0
    • Ver Perfil
Re:TRSE, Turbo Rascal Sintax Error
« Respuesta #9 en: Marzo 17, 2024, 22:10:11 »
Amigo @Dozznar: con seguidad te confirmo que cualquier multiplicación que hagas por 8, 16, 32, 64, etc, el compilador genera desplazamientos a la izquierda. Lo mismo con la división. El riesgo en estos casos es que confíes en que el compilador va a solucionar todo lo que tu imagines a tu gusto. Quizá llegues a confiar tanto en el compilador que no busques alternativas mejores, ya que al no escribir tu el código assembler no veas la verdadero problema del asunto. Ejemplo, puedes poner a:=13*17 y el compilador utilizara una excelente rutina de multiplicación preferida en CodeBase64. Al no ver el tamaño y el costo en ciclos de la rutina (que tu le has pedido al compilador al poner una multiplicación pura) quizá no te des cuenta que no la necesitas y te puedes arreglar con dos desplazamientos a la izquierda y una suma. Quizá trabajes con un rango de datos y puedas usar una tabla en vez de una multiplicación. Otra vez lo mismo, no es tan importante si trabajas en assembler o en C si conoces el ordenador y las limitaciones que contiene.
Amigo @Laddh:
Cuando hablo de compiladores modernos doy por sentado que la compilación es optima en todos los sentidos. Por ahí me equivoco y hay compiladores que no son  tan eficientes.
No he programado en CC65 pero te confirmo que el TRSE tiene, por ejemplo:
Para mover datos tiene 6 o 7 comandos donde arrancamos moviendo memoria con una lenta rutina que anida dos bucles y, por supuesto, acepta 16bit para la cantidad de datos (los dos bucles anidados). Con esto logramos mínimo consumo de memoria, máximo uso CPU. Para cuando tenemos poca ram y nos sobra tiempo de CPU.
Tenemos MemCpyFast, donde acepta solo 8 bit para cantidad de datos a mover (un solo bucle). Usa una rutina de un solo bucle. Medio uso de memoria y medio de CPU.
Tenemos MemCpyUnroll, donde no se usa anidado. Utilizar grandes cantidades de ram ya que utiliza la técnica del unroll, pero el uso del CPU es excelente. Para usos donde el tiempo es critico.
En el medio hay varias formas más de mover datos según tus necesidades. Por ahí el cc65 tiene varias formas de hacer las cosas, no lo sé.
Por supuesto que tienes razón en cuanto que, para que perder tiempo en conocer un compilador si puedes conocer el assembler y ya olvidarte del tema? En ese caso, personalmente, le encontré la ventaja de que el compilador utiliza las ultimas y más modernas técnica de programación en assembler. Yo soy programador de assembler!, sin embargo me encontré que cuando analicé el código generado, este, utilizaba técnicas que yo desconocía y era más eficiente de lo que yo hacía.
Bueno, esto es solo mi opinión y, por supuesto, cada cual programa como le guste.
Aprovecho para mandarles un abrazo cordial y estoy a su disposición por si tienen algún problema donde yo pueda ayudar.
MAriano.