Pantalla Spectrum
Priskribo de la ĉi-paĝa enhavo
Programo verkita en SuperBASIC por Sinclair QL; ĝi traudukas ekranbildon de ZX Spectrum al la QL-formato.
Ĉi malgranda programo, kies hispanlingva titolo signifas Ekrano Spectrum, tre interesas; ĝi tradukas ekranbildon de ZX Spectrum en la formaton de QL. La dosieron oni sendu antaŭe al la QL per seria kablo aŭ loka reto, kiel estas priskribite en lo fontkodaj notoj (en la hispana).
Ekranbildo de Spectrum enhavas 6 912 bitokojn: 6 144 bitokojn reprezentas 256x192 pikselojn; kaj 768 bitokojn reprezentas la koloron de ĉiu signo-loko 8x8 pikselojn granda (fona kaj malfona koloroj el inter 8 koloroj, plus brilo kaj blinko).
Ekranbildo de QL havas du eblajn modalojn: kaj ambaj bezonas 32 768 bitokojn por konservi la necesan informon:
- modalo 8: 256x256 pikseloj kun po 8 eblaj koloroj.
- modalo 4: 256x512 pikseloj kun po 4 eblaj koloroj.
Evidentas ke modalo 8 estas pli taŭga ĉi-kaze. La rezulto estis senmanka kaj la bildo vidiĝis per la QLa modalo 8 samkiel ĉe originala Spectrum (krom la informo pri brilo kaj blinko, kiujn ne eblas traduki).
Tiuepoke mi verkis similan programon por traduki ekranbildon de MSX2 en QL-formaton, pli simplo tasko ol ĉi tiu.
Fontkodo
100 REMark Pantalla Spectrum
110 REMark Programa para adaptar una pantalla de ZX Spectrum a QL
120 :
130 REMark Copyright (C) 1989,2011 Marcos Cruz (programandala.net)
140 REMark Licencia/Permesilo/License: http://programandala.net/licencia
150 :
160 REMark La pantalla debe pasarse del ZX Spectrum al QL mediante RS232:
170 REMark en el QL... COPY SER2,FLPn_fichero
180 REMark en la Interface 1... SAVE *"B"SCREEN$
190 REMark O bien puede hacerse el envío mediante la red local:
200 REMark en el QL... NET 1:COPY NETI_2,FLPn_fichero
210 REMark en la Interface 1... FORMAT "N";2:SAVE*;"N";1SCREEN$
220 REMark o en el Disciple... FORMAT N2:SAVE N1SCREEN$
230 :
240 REMark Historial de cambios
250 REMark 1989-02-18: v0.00
260 REMark 1989-03-26: v0.01
270 REMark 1989-10-14: v1.00
280 REMark 1989-10-21: v1.01
290 REMark 2011-03-16: v1.02: retoques en los textos.
300 :
310 REMark Toolkit II
320 REMark Turbo Toolkit
330 :
340 IMPLICIT% tercios,scans_caracteres,filas_caracteres,n_byte,bit
350 :
360 long_fichero%=32
370 long_cabecera%=9
380 :
390 DIM fichero_zx$(long_fichero%)
400 DIM fichero_ql$(long_fichero%)
410 DIM tecla$(1)
420 :
430 MODE 8
440 OPEN#3,con_512x256a0x0
450 PAPER#3,0
460 INK#3,5
470 CLS#3
480 CSIZE#3,0,1
490 AT#3,1,6
500 PRINT#3,"ADAPTADOR DE PANTALLAS DE ZX SPECTRUM"
510 AT#3,2,8
520 PRINT#3,"Por: Marcos Cruz (programandala.net), 1989"
530 :
540 AT#3,4,4
550 PRINT#3,"Fichero de la pantalla de ZX Spectrum:"
560 AT#3,5,4
570 fichero_zx$=EDIT$(#3,"",long_fichero%)
580 AT#3,7,4
590 PRINT#3,"Fichero para la pantalla de QL:"
600 AT#3,8,4
610 fichero_ql$=EDIT$(#3,"",long_fichero%)
620 IF fichero_ql$="":STOP
630 dir_carga_pant=ALCHP(long_cabecera%+6912)
640 LBYTES fichero_zx$,dir_carga_pant
650 dir_ini_pant=dir_carga_pant+long_cabecera%
660 :
670 AT#3,10,6
680 PRINT#3,"¿Color de los márgenes? (0-7)"
690 REPeat color
700 tecla$=INKEY$(#3,-1)
710 IF tecla$ INSTR "01234567":EXIT color
720 END REPeat color
730 PAPER#3,tecla$
740 CLS#3
750 :
760 dir_byte=dir_ini_pant
770 x%=0
780 y_ini%=32:REMark así queda centrada la pantalla verticalmente
790 y%=y_ini%
800 FOR tercios=0 TO 2
810 FOR scans_caracteres=0 TO 7
820 y_scan_anterior%=y%
830 FOR filas_caracteres=0 TO 7
840 FOR n_byte=0 TO 31
850 octeto%=PEEK(dir_byte)
860 atrib%=PEEK(dir_ini_pant+6144+32*((y%-y_ini%)DIV 8)+(x% DIV 8))
870 papel%=(atrib%&&56)/8
880 tinta%=atrib%&&7
890 FOR bit=7 TO 0 STEP -1
900 IF octeto%&&(2^bit)
910 BLOCK#3,2,1,x%*2,y%,tinta%
920 ELSE
930 BLOCK#3,2,1,x%*2,y%,papel%
940 END IF
950 x%=x%+1
960 END FOR bit
970 dir_byte=dir_byte+1
980 END FOR n_byte
990 última_y%=y%
1000 y%=y%+8
1010 x%=0
1020 END FOR filas_caracteres
1030 última_y%=y%-8
1040 y%=y_scan_anterior%+1
1050 END FOR scans_caracteres
1060 y%=última_y%
1070 END FOR tercios
1080 :
1090 RECHP dir_carga_pant
1100 SBYTES fichero_ql$,131072,32768
1110 :
1120 CLOSE#3
1130 STOP
1140 :