Qué es esta mierda? (PASCAL?)
- dondiego
- Atari 1040 STf
- Mensajes: 993
- Registrado: 30 May 2013, 22:05
- Sistema Favorito: PC
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sony PlayStation 2
- Primera consola: Atari 2600
- Ubicación: Granada
- Gracias dadas: 27 veces
- Gracias recibidas: 75 veces
Qué es esta mierda? (PASCAL?)
Tengo que compilar un código en pascal y me da un montón de errores, es de una utilidad que necesito para un proyecto del doom que tenía abandonado, quiero pasar el ejecutable dos a uno de consola de windows para que funcione en SO modernos. He pillado el dev-pascal que trae el freepascal pero nada. El código ofensivo es este:
- dondiego
- Atari 1040 STf
- Mensajes: 993
- Registrado: 30 May 2013, 22:05
- Sistema Favorito: PC
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sony PlayStation 2
- Primera consola: Atari 2600
- Ubicación: Granada
- Gracias dadas: 27 veces
- Gracias recibidas: 75 veces
- jltursan
- Amiga 2500
- Mensajes: 4028
- Registrado: 13 Oct 2006, 19:45
- Sistema Favorito: MSX
- primer_sistema: Dragon
- Ubicación: Serracines, Madrid, España
- Gracias dadas: 57 veces
- Gracias recibidas: 157 veces
- Contactar:
Re: Qué es esta mierda? (PASCAL?)
Usando flags de compilacion y con ensamblador embebido me temo que toca averiguar con que compilador exacto se compilaba el original y con eso, buscar la explicacion de cada flag especificado. Luego buscas los equivalentes del freepascal y listos (casi na)
Este es justo el trabajo habitual en cualquier migracion, estas cerquita pero siempre te da por saco lo justo para amargarte un par de dias
Este es justo el trabajo habitual en cualquier migracion, estas cerquita pero siempre te da por saco lo justo para amargarte un par de dias

- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Qué es esta mierda? (PASCAL?)
Pues yo empezaría a probar con los switches -Mtp (compatibilidad con Borland Pascal o Turbo Pascal) y -Mdelphi, a ver qué pasa. Además de eso (suponiendo que el origen sea Borland/Turbo Pascal, que es muy probable) quizás necesites echar un ojo a este artículo.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
- dondiego
- Atari 1040 STf
- Mensajes: 993
- Registrado: 30 May 2013, 22:05
- Sistema Favorito: PC
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sony PlayStation 2
- Primera consola: Atari 2600
- Ubicación: Granada
- Gracias dadas: 27 veces
- Gracias recibidas: 75 veces
Re: Qué es esta mierda? (PASCAL?)
La compatibilidad con turbo pascal ya estaba puesta, he cambiado la sintaxis de ensamblador a intel y la cosa ha mejorado pero me da error de '16 bit references not supported', el asm lo tengo algo oxidao (y todo).
- zup
- Amiga 2500
- Mensajes: 3012
- Registrado: 04 Sep 2009, 20:07
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo DS/3DS
- Primera consola: Nintendo GameBoy
- Ubicación: Navarra
- Gracias dadas: 86 veces
- Gracias recibidas: 356 veces
- Contactar:
Re: Qué es esta mierda? (PASCAL?)
Pues por ahí van los tiros. Imagino que Freepascal solo soporta hacer código de 32 bits.
¿Necesitas que funcione o portarlo a sistemas modernos? Si te vale con que funcione, puedo pasarte un Turbo Pascal a ver si te vale; si no... vas a tener que reescribir las partes en ensamblador.
¿Necesitas que funcione o portarlo a sistemas modernos? Si te vale con que funcione, puedo pasarte un Turbo Pascal a ver si te vale; si no... vas a tener que reescribir las partes en ensamblador.
I have traveled across the universe and through the years to find Her. Sometimes going all the way is just a start.
Además vendo cosas!
Además vendo cosas!
- dondiego
- Atari 1040 STf
- Mensajes: 993
- Registrado: 30 May 2013, 22:05
- Sistema Favorito: PC
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Sony PlayStation 2
- Primera consola: Atari 2600
- Ubicación: Granada
- Gracias dadas: 27 veces
- Gracias recibidas: 75 veces
Re: Qué es esta mierda? (PASCAL?)
También dice 'invalid effective address'. El original es un ejecutable dos de 16 bits, yo quiero generar código win32 que funcione en windows 7. Hay que ver qué cambios tengo que hacer.
Edito: De todas formas me da un error de identificador desconocido 'PrefixSeg' así que el código está mal.
Edito: De todas formas me da un error de identificador desconocido 'PrefixSeg' así que el código está mal.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Qué es esta mierda? (PASCAL?)
dondiego escribió:También dice 'invalid effective address'. El original es un ejecutable dos de 16 bits, yo quiero generar código win32 que funcione en windows 7. Hay que ver qué cambios tengo que hacer.
Pues de momento, olvidarte de ese código en ensamblador, que sólo funciona en modo real y con 16 bits. No usa ninguna cosa especial, así que lo suyo es inferir qué hace y reescribirlo en PASCAL. Hay un primer bloque de ensamblador que parece ser que busca unas variables de entorno: eso también tendrás que hacerlo en PASCAL.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- Uto
- MSX Turbo R
- Mensajes: 445
- Registrado: 28 Abr 2014, 15:50
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Nintendo SNES
- Primera consola: TV Games/Pong Clone
- Gracias dadas: 5 veces
- Gracias recibidas: 29 veces
Re: Qué es esta mierda? (PASCAL?)
Despues de años programando en Pascal, te puedo decir al 99% seguro que eso es Turbo Pascal.
Por lo demás, ya te han dicho todo. La primera funcion en ASM existe en freepascal (GetEnv, unidad DOS == > http://www.freepascal.org/docs-html/rtl/dos/getenv.html)
En cuanto a la funcionalidad de que si le pasas '' como parámetro devuelva el full path del ejecutable, siempre que solo quieras compilar para Win32 puedes usar ParamStr(0) que da exactamente eso. Si quieres que sea portable es un poco más lioso, especialmente en linux pero también en OSX tiene su aquel. Aquí puedes ver como lo solucioné yo recientemente para otro programa:
https://github.com/Utodev/ngPAWS/blob/m ... config.pas (en la función TConfig.FullPath)
Las otras funciones en ensamblador, como ya te han dicho, primero te toca entender que hacen y así pasarlas a pascal.
Por lo demás, ya te han dicho todo. La primera funcion en ASM existe en freepascal (GetEnv, unidad DOS == > http://www.freepascal.org/docs-html/rtl/dos/getenv.html)
En cuanto a la funcionalidad de que si le pasas '' como parámetro devuelva el full path del ejecutable, siempre que solo quieras compilar para Win32 puedes usar ParamStr(0) que da exactamente eso. Si quieres que sea portable es un poco más lioso, especialmente en linux pero también en OSX tiene su aquel. Aquí puedes ver como lo solucioné yo recientemente para otro programa:
https://github.com/Utodev/ngPAWS/blob/m ... config.pas (en la función TConfig.FullPath)
Las otras funciones en ensamblador, como ya te han dicho, primero te toca entender que hacen y así pasarlas a pascal.
http://www.ngpaws.com
Twitter: @uto_dev
Twitter: @uto_dev
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados