• Martes 18 de Junio de 2019, 18:44

Autor Tema:  Texto en modo gráfico  (Leído 1095 veces)

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Texto en modo gráfico
« en: Jueves 16 de Octubre de 2008, 15:09 »
0
Hola, ¿Qué tal?, les escribo para preguntarles sobre una rutina en Turbo Pascal que permite escribir texto en modo gráfico



PROCEDURE WriteTXT(segm,x,y:word;txt:string;color:byte);
VAR i,j,k:byte;
Begin
for i:=1 to length(txt) do
for j:=0 to 15 do
for k:=0 to 7 do

if ((mem[fseg:fofs+ord(txt)*16+j] shl k) and 128) > 0 then
begin
mem[segm:(y+j)*320+(i*8)+x+k]:=color;
end;
End;

fseg,fofs:word; {para la fuente grafica}

Me podrían explicar por favor ¿Qué hace cada linea?, muchas gracias.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Texto en modo gráfico
« Respuesta #1 en: Jueves 16 de Octubre de 2008, 16:05 »
0
¡Bienvenido al foro 123celes!

Deberías usar las etiquetas de código para que te quede más legible.

Primero debes comprender que este es un código de 16 bits, por tanto se ejecuta en el modo real de los procesadores Intel (y clones) ¿Sabes cómo se referencia la memoria en modo real (segmento:desplazamiento)?

¡Saludos!

123celes

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Texto en modo gráfico
« Respuesta #2 en: Sábado 18 de Octubre de 2008, 16:37 »
0
Muchas gracias por tu respuesta, me sirvió de mucho. Una cosa más si no es molestia:

PROCEDURE WriteTXT(segm,x,y:word;txt:string;color:byte);
VAR i,j,k:byte;
Begin
 for i:=1 to length(txt) do
  for j:=0 to 15 do   {horiz}
    for k:=0 to 7 do {vert}

     if ((mem[fseg:fofs+ord(txt)*16+j] shl k) and 128) > 0 then
        begin
          mem[segm:(y+j)*320+(i*8)+x+k]:=color;
        end;
End;

En la linea que resalte en negrita. Concretamente que esta preguntando:

Lo que me confunde es el and 128, ¿Que hace?

¿comparar el shl k del mem... con el shl k de 128:?

Bueno muchas gracias la respuesta.

¡Un error ha ocurrido!

Class 'Geshi' not found