Este pequeño programa es muy interesante; convierte un fichero de pantalla de la ZX Spectrum en el formato de la QL. El fichero debe haber sido pasado previamente a la QL por cable serial o red local, como se explica en los comentarios de cabecera del programa.

Una pantalla de la Spectrum ocupa 6 912 octetos: 6 144 octetos para representar los 256x192 pixeles; y 768 octetos para guardar la información de color de cada bloque de 8x8 pixeles (fondo y primer plano a elegir entre 8 colores, más brillo y parpadeo).

La pantalla de la QL tiene dos modos a elegir, y ambos necesitan 32 768 octetos para guardar toda la información:

Lógicamente el modo 8 es el adecuado para este caso. El resultado era impecable y la imagen se veía en el modo 8 de la QL igual que en la Spectrum original (salvo la información de brillo y parpadeo, que no se puede conservar).

Por las mismas fechas escribí otro programa similar para convertir una pantalla de MSX2 a la QL, tarea más sencilla que esta.

Listado


100 REMark Pantalla Spectrum
110 REMark Programa para adaptar a la pantalla del QL una del Spectrum
115 :
117 REMark Copyright (C) 1989 Marcos Cruz (http://programandala.net)
118 REMark Licencia/Permesilo/License: http://programandala.net/licencia
119 :
120 REMark La pantalla debe pasarse del Spectrum al QL mediante RS232:
130 REMark    en el QL...                COPY SER2,FLPn_fichero
140 REMark    en la Interface 1...       SAVE *"B"SCREEN$
150 REMark O bien puede hacerse el envío mediante la red local:
160 REMark    en el QL...                NET 1:COPY NETI_2,FLPn_fichero
170 REMark    en la Interface 1...       FORMAT "N";2:SAVE*;"N";1SCREEN$
180 REMark    o en el Disciple...        FORMAT N2:SAVE N1SCREEN$
190 :
200 REMark Versión 0.00: 18/02/1989
210 REMark Versión 0.01: 26/03/1989
220 REMark Versión 1.00: 14/10/1989
230 REMark Versión 1.01: 21/10/1989
240 :
250 REMark Toolkit II
260 REMark Turbo Toolkit
270 :
280 IMPLICIT% tercios,scans_caracteres,filas_caracteres,n_byte,bit
290 :
300 long_fichero%=32
310 long_cabecera%=9
320 :
330 DIM fichero_zx$(long_fichero%)
340 DIM fichero_ql$(long_fichero%)
350 DIM tecla$(1)
360 :
370 MODE 8
380 OPEN#3,con_512x256a0x0
390 PAPER#3,0
400 INK#3,5
410 CLS#3
420 CSIZE#3,0,1
430 AT#3,1,6
440 PRINT#3,"ADAPTADOR PANTALLAS SPECTRUM"
450 AT#3,2,8
460 PRINT#3,"Por: Marcos Cruz, 1989"
470 :
480 AT#3,4,4
490 PRINT#3,"Fichero de la pantalla Spectrum:"
500 AT#3,5,4
510 fichero_zx$=EDIT$(#3,"",long_fichero%)
520 AT#3,7,4
530 PRINT#3,"Fichero para la pantalla QL:"
540 AT#3,8,4
550 fichero_ql$=EDIT$(#3,"",long_fichero%)
560 IF fichero_ql$="":STOP
570 dir_carga_pant=ALCHP(long_cabecera%+6912)
580 LBYTES fichero_zx$,dir_carga_pant
590 dir_ini_pant=dir_carga_pant+long_cabecera%
600 :
610 AT#3,10,6
620 PRINT#3,"¿Color de los márgenes? (0-7)"
630 REPeat color
640   tecla$=INKEY$(#3,-1)
650   IF tecla$ INSTR "01234567":EXIT color
660 END REPeat color
670 PAPER#3,tecla$
680 CLS#3
690 :
700 dir_byte=dir_ini_pant
710 x%=0
720 y_ini%=32:REMark así queda centrada la pantalla verticalmente
730 y%=y_ini%
740 FOR tercios=0 TO 2
750  FOR scans_caracteres=0 TO 7
760   y_scan_anterior%=y%
770   FOR filas_caracteres=0 TO 7
780    FOR n_byte=0 TO 31
790     octeto%=PEEK(dir_byte)
800     atrib%=PEEK(dir_ini_pant+6144+32*((y%-y_ini%)DIV 8)+(x% DIV 8))
810     papel%=(atrib%&&56)/8
820     tinta%=atrib%&&7
830     FOR bit=7 TO 0 STEP -1
840      IF octeto%&&(2^bit)
850       BLOCK#3,2,1,x%*2,y%,tinta%
860      ELSE 
870       BLOCK#3,2,1,x%*2,y%,papel%
880      END IF 
890      x%=x%+1
900     END FOR bit
910     dir_byte=dir_byte+1
920    END FOR n_byte
930    última_y%=y%
940    y%=y%+8
950    x%=0
960   END FOR filas_caracteres
970   última_y%=y%-8
980   y%=y_scan_anterior%+1
990  END FOR scans_caracteres
1000  y%=última_y%
1010 END FOR tercios
1020 :
1030 RECHP dir_carga_pant
1040 SBYTES fichero_ql$,131072,32768
1050 :
1060 CLOSE#3
1070 STOP
1080 :

Descarga

URL: http://programandala.net/es.programa.pantalla_spectrum

Página publicada en 2009-09-02 16:41:00 CEST
Última modificación realizada en 2010-02-15T12:50:06+01:00