Pascal/Turbo Pascal - decompilador pascal

 
Vista:

decompilador pascal

Publicado por Fatmike (1 intervención) el 26/12/2004 17:04:37
hola a todos ,
me gustaria saber si existe algun decompilador de librerias pascal , que muestre el codigo fuente en .pas, he buscado en google y altavista, pero no encuentro gran cosa...
en todo caso lo que necessito es saber la implementacion de las funciones KEYPRESSED y READKEY que se encuentran en la unit crt.
gracias por cualquier informacion,
un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:decompilador pascal

Publicado por Ivanchuk (7 intervenciones) el 26/12/2004 20:16:52
Usa el Turbo Debugger y vas a ver la implementación, las dos creo que usan la int 16h, se que keypressed usa la función 01h la implemtenación es esta:
cmp byte ptr [0063], 00; me desorientó esto :S , pero debe ser algun checkeo de error o algo asi..
jne eti1
mov ah, 01; <-- Aca empieza KeyPressed
int 16;mirar el buffer del teclado sin remover el caracter, modifica el flag ZF
mov al, 00 ; no se pulso la tecla
je fin
eti1: mov al, 01 ; se pulso una tecla
fin: retf
Esta función devuelve un boolean, bueno TP le asigna 0 si es false y 1 si es verdadero. Lo vi en el Turbo Debugger. Esta es sencilla pero la otra requiere un poco mas de tiempo, jeje soy medio aragan. Saludos y suerte!!!.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:decompilador pascal

Publicado por Fatmike (2 intervenciones) el 28/12/2004 20:51:50
gracias Ivanchuk por tu respuesta,
el unico problema que no consiguo ver el codigo del tpu en asm con en trubo debugger, me da error...
de la procion de codigo que me has pasado me ha salido esto :

var teclado : registers;

function key : integer;
begin
teclado.ax:=1;
intr($16,teclado);
key:=teclado.al;
end;

esta funcion devuelve en key el valor ascii de la tecla pulsada, pero al hacer la interupcion se queda clavado esperando que se pulse una tecla ( ya estamos otra vez ) , que es lo que no quiero .

alguien tiene alguna sugerencia,
gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:decompilador pascal

Publicado por Ivanchuk (5 intervenciones) el 28/12/2004 22:30:58
Nono Fatmike, fijate que no estas llamando a la función 01h sino a la 00h, tenes que hacer teclado.ah:= 1, pues teclado.ax:= 1 lo que hace es poner el byte bajo a 1 y el byte alto a 0, es decir teclado.ah es 0 y teclado.al es 1. Mirate esta pagina asi te sacas las dudas:
http://www.ctyme.com/intr/int-16.htm
Saludos y suerte!!...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar