Información de acceso rápido:

  • Visite el canal de #retroinformatica en freenode.org.
  • Publicado browdsk: Script para Linux para acceder de forma simple a contenidos en archivos .DSK de MSX a través de nuestro filemanager favorito.
  • Publicado manual para cambiar la unidad de 5.25 por una de 3.5 en un epson QX-10 o QX16.
  • Nuevo artículo: Tarjeta Adaptador Video Sinclair Spectrum (gomas y plus). Con este adaptador usted puede conectar el Spectrum por vídeo compuesto a su televisor sin necesidad de abrirlo o instalarle hack alguno. Además dispone de un miniamplificador para cargas de dispositivos mp3.
  • Nuevo artículo: Cable MIDI/Joystick para conectar dispositivos MIDI a un PC usando el conector DB15 MIDI/Joystick.
  • Nueva política de tratamiento de datos referentes a la construcción de periféricos de esta web y código fuente del software.
  • Publicado software diferenciador en nuestro repositorio (compara dos archivos generando un fichero con la posición de todas las diferencias y en que difieren uno y otro. Valido para buscar cheats con un editor hexadecimal con snapshoots.
  • Publicado switch80, un programa para conseguir poner el MSX a 80 columnas bajo MSXDOS o CPM, para mayor compatibilidad visual con todos los programas de CPM. Es una adaptación de una porción de código de TermAS (terminal de dev.petalus.net para MSX). Permite poner la consola a 80 o a 40 ejecutando el programa switch.com.
  • Conversor de Tap a TZX para Linux de dev.petalus.net (incluye código fuente). La diferencia respecto a otros programas de similar utilidad es la de estar programado en turbopascal, permitiendo su compilación en una amplia variedad de plataformas y sistemas operativos, a través de freepascal/turbopascal, y minimizando los posibles cambios en una hipotética necesidad de adaptación.
  • OpenMSX GUI: Publicamos OMSXGui, que es un lanzador para Linux de OpenMSX compilado con librerías estáticas, con selectores de discos, cartuchos y ficheros de casete, así como del modelo de MSX a emular. Pretende ser una alternativa sencilla para plataformas donde resulta dificil compilar OpenMSXCatapult o no existen esos binarios.
  • Publicamos Palutils, que es un conjunto de herramientas residentes (TSR) basadas en el cambio de paleta para poder simular un monitor de fósforo verde/blanco así como realizar funciones de inversión del vídeo, o reforzamiento de los colores para monitores que han perdido brillo. Se incluye código fuente y ejecutables para DOS y un ejemplo compilable para Linux.
  • Publicamos un conjunto de scripts para cruzar el popular editor SciTE (Linux/Win) con el compilador BASIC de Boriel para ZXSpectrum. Mediante estos scripts, un emulador y las herramientas necesarias se consigue un completo IDE para desarrollar programas.
  • Actualización del artículo "Creación y amplificación para cargas con MP3". Incluye formas de generar archivos MP3 con el Lame de forma reconocible por las máquinas.
  • Nueva revisión del FakeDos 0.3. Incluye una versión preliminar aunque funcional de la shell "comandante vaporatorius" que es un menú al estilo del frontend del fatware.
  • Mapa general de artículos en el menú Sitemap.

Petalus: Información y documentos de retroinformática

Visualizador de SCR para PC

Mediante esta rutina en pascal, se pueden visualizar ficheros SCR capturados por algún emulador.

 


 

Descripción: Por completar (artículo inacabado).

Descargas: Está disponible esta rutina como programa y como unidad.

Ejemplo: Este programa en pascal representa en pantalla una imagen capturada procendente de un archivo .SCR.

Uses graph,dos,crt;
{ Programa para leer y dibujar en la pantalla archivos .SCR procedentes de un emu de Sinclair }
 
Var
  FromF, ToF: file;
  NumRead, NumWritten: Word;
  Buf: array[1..1] of Char;
  pal: array[1..767] of Char;
  ct,ck:integer;x,y:integer;co:integer;cf:integer;ford:integer;
  GC:INTEGER;r:integer;
  
Function gpa(x:integer):integer;
var sa:integer;
begin
sa:=0;
if x>55 then sa:=7 else
if x>47 then sa:=14 else
if x>39 then sa:=11 else
if x>31 then sa:=10 else
if x>23 then sa:=13 else
if x>15 then sa:=4 else
if x>7 then sa:=9 else sa:=7;
gpa:=sa;
end;
 
Function ginc(x:integer):integer;
var se:integer;sa:integer;
begin
se:=x;sa:=0;
if se>55 then se:=se-56;
if se>47 then se:=se-47;
if se>39 then se:=se-39;
if se>31 then se:=se-31;
if se>23 then se:=se-24;
if se>15 then se:=se-16;
if se>7 then se:=se-10;
if se=0 then sa:=0;
if se=1 then sa:=9;
if se=2 then sa:=4;
if se=3 then sa:=13;
if se=4 then sa:=10;
if se=5 then sa:=11;
if se=6 then sa:=14;
if se=7 then sa:=15;
if se=8 then sa:=7;
if se=9 then sa:=7;
ginc:=sa;
end;
 
 
PROCEDURE PUTPIXELD (X,Y,NU,co,cu:INTEGER);
BEGIN
IF NU>127 THEN BEGIN PUTPIXEL (X+0,Y,co);NU:=NU-128;END else PUTPIXEL (X+0,Y,cu);
IF NU>63 THEN BEGIN  PUTPIXEL (X+1,Y,co);NU:=NU-64;END else PUTPIXEL (X+1,Y,cu);
IF NU>31 THEN BEGIN  PUTPIXEL (X+2,Y,co);NU:=NU-32;END else PUTPIXEL (X+2,Y,cu);
IF NU>15 THEN BEGIN  PUTPIXEL (X+3,Y,co);NU:=NU-16;END else PUTPIXEL (X+3,Y,cu);
IF NU>7 THEN BEGIN   PUTPIXEL (X+4,Y,co);NU:=NU-8;END else PUTPIXEL (X+4,Y,cu);
IF NU>3 THEN BEGIN   PUTPIXEL (X+5,Y,co);NU:=NU-4;END else PUTPIXEL (X+5,Y,cu);
IF NU>1 THEN BEGIN   PUTPIXEL (X+6,Y,co);NU:=NU-2;END else PUTPIXEL (X+6,Y,cu);
IF NU>0 THEN BEGIN   PUTPIXEL (X+7,Y,co);NU:=NU-1;END else PUTPIXEL (X+7,Y,cu);
END;
 
begin
if paramstr(1)='' then begin
WRITELN ('Emulador de memoria de pantalla de Sinclair ZX-SPECTRUM. Pr Vaporatorius 1995.');
WRITELN ('VISOR DE FICHEROS SCR. VERSION 0.5');
WRITELN;
writeln ('Sintaxis : ViSCR nombrefichero.scr');
halt (0);
end;
 
  Assign(FromF, ParamStr(1));
{$i-}
  Reset(FromF, 1);
{$i+}
if ioresult<>0 then begin
 writeln ('error: fichero ',paramstr(1),' no encontrado...');
 halt (1);
 end;
 
for r:=1 to 6144 do blockread (fromf,buf,sizeof(buf),numread);
blockread (fromf,pal,sizeof(pal),numread);
reset (fromf,1);
ct:=0;ck:=0;
initgraph (ct,ck,'d:\borlandp\bgi');
 co:=0;cf:=0;ford:=0;
  x:=0;y:=0; GC:=0;
  repeat
    begin
    BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
    putpixelD (x*8,y*8+CF+FORD*8,ord(buf[1]),ginc(ord(pal[1+x+y*32])),gpa(ord(pal[1+x+y*32])));
    inc (x);
    if x>31 then begin X:=0;Y:=Y+1 end;
    IF Y>7 THEN IF CF>6 THEN BEGIN FORD:=FORD+8;Y:=0;X:=0;CF:=0;END;
    IF Y>7 THEN BEGIN X:=0;Y:=0;CF:=CF+1;END;INC (GC);
    IF GC=6144 tHEN NUMREAD:=0;
    end;
  until ((NumRead = 0) OR (EOF(FROMF)));
  Close(FromF);
  readln;
closegraph;
end.