Potencia de BASIC.

Programando el Amstrad en BASIC, C, etc.
Avatar de Usuario
FloppySoftware
Megaforero
Megaforero
Mensajes: 244
Registrado: Mié 26 Oct , 2011 2:07 pm
Ubicación: Spain
Contactar:

Re: Potencia de BASIC.

Mensajepor FloppySoftware » Sab 04 Jul , 2015 12:55 am

Bien hecho!!!

Si se trata de C, se implementa así en CP/M, etc., por compatibilidad con Unix, aunque eso da problemas con la salida de datos binarios puros por la consola, como es el caso.

Normalmente, en la función fputc o putchar.

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Potencia de BASIC.

Mensajepor ronaldo » Sab 04 Jul , 2015 1:40 pm

Si se parchea el runtime funciona perfectamente. El parche es sencillo, basta sustituir la cadena hexadecimal 3E 0D CD 5A BB por 00 00 00 00 00 y ya no se produce ese fallo.

Código: Seleccionar todo

3E 0D LD A, 13 ; A = 13 (Caracter *CR)
CD 5A BB CALL 0xBB5A ; BB5A = Firmware PUTCHAR
Perfecto @abalore. Conviertes estas 2 instrucciones en 5 NOPs, inhabilitando su efecto. Sugiero este otro parche ligeramente más eficiente (ganando 2 NOPs):

Código: Seleccionar todo

18 05 JR 05 ;; [3 NOPs] Saltar 5 bytes adelante
00 NOP ;; 3 NOPs que no se ejecutan
00 NOP
00 NOP
;; ... Aquí continúa la ejecución
De hecho, lo he implementado y funciona. Aquí os dejo el DSK con el FaBaCoM parcheado con el Carácter 10 funcionando.

Buen trabajo, chicos :D
fabacom_cpm1988_patchchr10.dsk
Compilador BASIC FaBaCoM parcheado para que CHR$(10) funcione correctamente.
(204.41 KiB) Descargado 80 veces
Última edición por ronaldo el Dom 05 Jul , 2015 1:30 pm, editado 1 vez en total.

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Potencia de BASIC.

Mensajepor MiguelSky » Sab 04 Jul , 2015 2:37 pm

=D> =D> =D>

Avatar de Usuario
FloppySoftware
Megaforero
Megaforero
Mensajes: 244
Registrado: Mié 26 Oct , 2011 2:07 pm
Ubicación: Spain
Contactar:

Re: Potencia de BASIC.

Mensajepor FloppySoftware » Sab 04 Jul , 2015 10:18 pm

Ahí estamos, solucionando bugs, taitantos años más tarde. :)

nelbazan1972
Megaforero
Megaforero
Mensajes: 256
Registrado: Vie 21 Feb , 2014 5:53 pm

Re: Potencia de BASIC.

Mensajepor nelbazan1972 » Dom 05 Jul , 2015 12:12 am

Ahí estamos, solucionando bugs, taitantos años más tarde. :)
Simplemente... ¡Brutal!

Avatar de Usuario
zarkon
Lechoncillo
Lechoncillo
Mensajes: 4
Registrado: Lun 16 Feb , 2009 9:51 am
Contactar:

Re: Potencia de BASIC.

Mensajepor zarkon » Jue 25 Ene , 2018 6:18 pm

Si se parchea el runtime funciona perfectamente. El parche es sencillo, basta sustituir la cadena hexadecimal 3E 0D CD 5A BB por 00 00 00 00 00 y ya no se produce ese fallo.

Código: Seleccionar todo

3E 0D LD A, 13 ; A = 13 (Caracter *CR)
CD 5A BB CALL 0xBB5A ; BB5A = Firmware PUTCHAR
Perfecto @abalore. Conviertes estas 2 instrucciones en 5 NOPs, inhabilitando su efecto. Sugiero este otro parche ligeramente más eficiente (ganando 2 NOPs):

Código: Seleccionar todo

18 05 JR 05 ;; [3 NOPs] Saltar 5 bytes adelante
00 NOP ;; 3 NOPs que no se ejecutan
00 NOP
00 NOP
;; ... Aquí continúa la ejecución
De hecho, lo he implementado y funciona. Aquí os dejo el DSK con el FaBaCoM parcheado con el Carácter 10 funcionando.

Buen trabajo, chicos :D
fabacom_cpm1988_patchchr10.dsk

Gracias por las modificaciones.
He descargado el fabacom modificado y desde el winape me da error: has invalid track sizes on 1,2

Avatar de Usuario
cpcmaniaco
Forero habitual
Forero habitual
Mensajes: 143
Registrado: Vie 14 Oct , 2005 6:56 am
Ubicación: Madrid, Spain

Re: Potencia de BASIC.

Mensajepor cpcmaniaco » Vie 02 Feb , 2018 2:27 am

Creo que lo que debe de saltar son 3 ( Los NOPs ) y no 5.

Ya que la instruccion de saltar ocupa los otros 2.
Saludos desde los madriles

corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Potencia de BASIC.

Mensajepor corpiano » Vie 12 Abr , 2019 8:21 pm

Hola.

Chicos, a ver si alguien me puede iluminar.

No hago nada más que leer que el compilador FABACOM es bastante bueno. Sin embargo, en mis pruebas, no he conseguido hacerlo funcionar con alguno de mis ejemplos más simples.

La máquina objeto es un CPC 6128. He probado algo tan simple como los comandos SYMBOL AFTER y OPENIN en un ejemplo y el uso de interrupciones con el comando EVERY en otro ejemplo. Las versiones compiladas reinician la máquina. Al compilar no he utilizado ningún parámetro. Os adjunto los programas en BASIC y en binario para que los comprobéis por vosotros mismos.

A ver si alguien me puede ayudar. Muchas gracias por adelantado!
Adjuntos
error_fabacom.dsk
(204.5 KiB) Descargado 27 veces

Avatar de Usuario
ronaldo
Forum Addict
Forum Addict
Mensajes: 358
Registrado: Sab 14 Sep , 2013 9:31 pm
Ubicación: Alicante
Contactar:

Re: Potencia de BASIC.

Mensajepor ronaldo » Mié 01 May , 2019 4:24 pm

Buenas Antonio,

He estado haciendo pruebas con los ejemplos que comentas y sí, te confirmo que parecen problemas de FaBaCom. Imagino que ya habrás leído el artículo que publicamos sobre el propio compilador en Fremos. Ciertamente, el compilador tiene mucha potencia y hace cosas chulas, pero también tiene bugs. Los que tú has encontrado no los habíamos visto antes. Personalmente lo he estado usando un tiempo y lo he hecho funcionar con EVERY y SYMBOL AFTER, aunque no recuerdo haberlo probado con ficheros.

Tras probar tus ejemplos, lo he mirado un poco por encima y no he visto motivo evidente para que la cosa falle como lo hace. Para poder entender qué está pasando toca bajarse al binario compilado y depurarlo. Ya es la única forma que queda de saber qué es lo que está haciendo el compilador y por qué falla.

Siento no poder decirte más. Investigar más abajo ya requiere tiempo y ahora mismo no puedo. Estaría bien si alguien tiene tiempo y quiere mirarlo, porque seguramente aprenderíamos todos algo interesante al respecto. Mientras tanto, creo que sólo te queda probar con otros ejemplos e intentar deducir, o pasarte a otro compilador. En otros perderás funcionalidad, pero seguramente ganes en estabilidad. Da la sensación de que FaBaCoM tiene más bugs de los previstos.

corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Potencia de BASIC.

Mensajepor corpiano » Jue 02 May , 2019 12:57 am

Hola.

Eso es, precisamente conozco este compilador por la entrada de la página de fremos. También he hecho pruebas usando líneas de DATA y en mi caso también se corrompen los datos. Dado que se confirma que el mal funcionamiento del fichero compilado es debido al compilador, lo siento mucho, pero para mí es suficiente para echarle la cruz. Me parece muy fuerte que compiladores comerciales de la época generen ejecutables compilados que NO funcionan. Incluso puedo llegar a entender que haya casos en los que se necesiten adaptar algunas instrucciones BASIC, que otras no se encuentren soportadas... ¿Pero que se genere un fichero ejecutable que reinicia la máquina (para un programa BASIC funcionando y de 5 líneas con instrucciones supuestamente soportadas)? directamente demencial.

Como sabes yo tampoco tengo mucho tiempo y al final me paso el poco tiempo disponible haciendo pruebas e investigaciones. Por si a alguien le sirve de ayuda, después de probar muchos compiladores de BASIC (diría que todos *) y comprobar que TODOS tienen un funcionamiento "cuestionable"... me atrevo a recomendar el, creo que poco conocido, compilador TAIFUN. Genera un binario de poco tamaño pero con un buen rendimiento en cuanto a velocidad comparado con los resultados de los otros compiladores. Bastante bien documentado, y aunque tiene alguna peculiaridad con los comandos BASIC, es el que da soporte a un mayor número de instrucciones.

¡Gracias por responder Ronaldo!

* Ni fabacom, ni laser basic, ni hisoft turbo basic, ni cpc basic 3 (aunque éste ha estado cerca) han superado mis pruebas.

Poliyo
Keeper of The Forum
Keeper of The Forum
Mensajes: 909
Registrado: Jue 12 May , 2016 10:07 pm
Ubicación: Valencia

Re: Potencia de BASIC.

Mensajepor Poliyo » Jue 02 May , 2019 7:30 am

El taifun que dices es uno que conozco como typhoon? Ahora no recuerdo si con uno o dos "o"

corpiano
Me voy lanzando
Me voy lanzando
Mensajes: 88
Registrado: Dom 26 Oct , 2014 10:38 am

Re: Potencia de BASIC.

Mensajepor corpiano » Jue 02 May , 2019 9:34 am

Entiendo que TAIFUN es la versión original:
http://www.cpc-power.com/index.php?page=detail&num=7239

Poliyo
Keeper of The Forum
Keeper of The Forum
Mensajes: 909
Registrado: Jue 12 May , 2016 10:07 pm
Ubicación: Valencia

Re: Potencia de BASIC.

Mensajepor Poliyo » Jue 02 May , 2019 11:15 am

Ojeando me parece que no.
http://www.cpc-power.com/index.php?page=detail&num=5640
Son casas y años distintos. Aunque conociendo como iba el mercado de entonces que el mismo programa era vendido una y otra vez con distintos nombres y bajo otras compañías que había adquirido su licencia...


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic