Qué es esta mierda? (PASCAL?)

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
dondiego
Atari 1040 STf
Atari 1040 STf
Mensajes: 985
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: 14 veces
Gracias recibidas: 73 veces

Qué es esta mierda? (PASCAL?)

Mensajepor dondiego » 04 May 2016, 19:57

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:

Avatar de Usuario
calantra
Amstrad CPC 464
Amstrad CPC 464
Mensajes: 74
Registrado: 11 Feb 2014, 22:51
Sistema Favorito: MSX
primer_sistema: MSX
consola_favorita: Sony PlayStation 1
Primera consola: Nintendo SNES
Gracias dadas: 7 veces
Gracias recibidas: 12 veces

Re: Qué es esta mierda? (PASCAL?)

Mensajepor calantra » 04 May 2016, 20:05

Es pascal.

Avatar de Usuario
dondiego
Atari 1040 STf
Atari 1040 STf
Mensajes: 985
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: 14 veces
Gracias recibidas: 73 veces

Re: Qué es esta mierda? (PASCAL?)

Mensajepor dondiego » 04 May 2016, 20:12

Gracias, lo suponía. Ahora cómo lo compilo?

Avatar de Usuario
jltursan
Amiga 2500
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?)

Mensajepor jltursan » 04 May 2016, 20:15

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 ;-)

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2973
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: 68 veces
Gracias recibidas: 329 veces
Contactar:

Re: Qué es esta mierda? (PASCAL?)

Mensajepor zup » 04 May 2016, 20:32

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!

Avatar de Usuario
dondiego
Atari 1040 STf
Atari 1040 STf
Mensajes: 985
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: 14 veces
Gracias recibidas: 73 veces

Re: Qué es esta mierda? (PASCAL?)

Mensajepor dondiego » 04 May 2016, 20:49

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).

Avatar de Usuario
zup
Amiga 2500
Amiga 2500
Mensajes: 2973
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: 68 veces
Gracias recibidas: 329 veces
Contactar:

Re: Qué es esta mierda? (PASCAL?)

Mensajepor zup » 04 May 2016, 20:55

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.
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!

Avatar de Usuario
dondiego
Atari 1040 STf
Atari 1040 STf
Mensajes: 985
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: 14 veces
Gracias recibidas: 73 veces

Re: Qué es esta mierda? (PASCAL?)

Mensajepor dondiego » 04 May 2016, 21:14

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.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
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: 53 veces
Contactar:

Re: Qué es esta mierda? (PASCAL?)

Mensajepor mcleod_ideafix » 05 May 2016, 01:12

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

Avatar de Usuario
Uto
MSX Turbo R
MSX Turbo R
Mensajes: 444
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: 26 veces

Re: Qué es esta mierda? (PASCAL?)

Mensajepor Uto » 05 May 2016, 10:09

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.
http://www.ngpaws.com
Twitter: @uto_dev


Volver a “Programación”

¿Quién está conectado?

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