Potencia de BASIC.
- FloppySoftware
- Megaforero
- Mensajes: 244
- Registrado: Mié 26 Oct , 2011 2:07 pm
- Ubicación: Spain
- Contactar:
Re: Potencia de BASIC.
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.
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.
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Potencia de BASIC.
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
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
Buen trabajo, chicos
Última edición por ronaldo el Dom 05 Jul , 2015 1:30 pm, editado 1 vez en total.
- FloppySoftware
- Megaforero
- Mensajes: 244
- Registrado: Mié 26 Oct , 2011 2:07 pm
- Ubicación: Spain
- Contactar:
Re: Potencia de BASIC.
Ahí estamos, solucionando bugs, taitantos años más tarde.
-
- Megaforero
- Mensajes: 256
- Registrado: Vie 21 Feb , 2014 5:53 pm
Re: Potencia de BASIC.
Simplemente... ¡Brutal!Ahí estamos, solucionando bugs, taitantos años más tarde.
Re: Potencia de BASIC.
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.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
3E 0D LD A, 13 ; A = 13 (Caracter *CR)
CD 5A BB CALL 0xBB5A ; BB5A = Firmware PUTCHARDe hecho, lo he implementado y funciona. Aquí os dejo el DSK con el FaBaCoM parcheado con el Carácter 10 funcionando.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
Buen trabajo, chicos
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
Retropasado: http://retropasado.blogspot.com
- cpcmaniaco
- Forero habitual
- Mensajes: 143
- Registrado: Vie 14 Oct , 2005 6:56 am
- Ubicación: Madrid, Spain
Re: Potencia de BASIC.
Creo que lo que debe de saltar son 3 ( Los NOPs ) y no 5.
Ya que la instruccion de saltar ocupa los otros 2.
Ya que la instruccion de saltar ocupa los otros 2.
Saludos desde los madriles
Re: Potencia de BASIC.
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!
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
- ronaldo
- Forum Addict
- Mensajes: 358
- Registrado: Sab 14 Sep , 2013 9:31 pm
- Ubicación: Alicante
- Contactar:
Re: Potencia de BASIC.
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.
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.
Re: Potencia de BASIC.
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.
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.
Re: Potencia de BASIC.
El taifun que dices es uno que conozco como typhoon? Ahora no recuerdo si con uno o dos "o"
Re: Potencia de BASIC.
Entiendo que TAIFUN es la versión original:
http://www.cpc-power.com/index.php?page=detail&num=7239
http://www.cpc-power.com/index.php?page=detail&num=7239
Re: Potencia de BASIC.
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...
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 |