Configurador para Overdrive

Descripción del contenido de la página

Programa escrito en SuperBASIC para la Sinclair QL, para configurar el programa Overdrive.

Etiquetas:

Overdrive, cuyo verdadero nombre era Universal Printer Driver Utility, era un controlador genérico de impresora para la Sinclair QL. Permitía traducir los caracteres no estándar de la QL (del 127 al 191) e insertar ficheros gráficos (copias de pantalla) en los textos, indicando el nombre del fichero gráfico entre llaves.

Este programa permite configurar el funcionamiento de Overdrive. Es una versión modificada por mí, en 1990 y 1992, del original escrito por Sergio Montoro en 1989 para que le funcionara en su QL con ROM JM (el programa Overdrive incluía su propio configurador).

Código fuente

1000 REMark CONFIGURADOR PARA "OVERDRIVE"
1010 REMark ADAPTILO POR "OVERDRIVE"
1020 :
1030 REMark Originalo far:
1040 REMark Sergio Montoro Ten, 1989
1050 REMark Tl. (91)-2028739
1060 :
1065 REMark Copyright (C) 1990,1992 Marcos Cruz (http://programandala.net)
1066 REMark Licencia/Permesilo/License: http://programandala.net/licencia
1067 :
1070 REMark novaj versioj far Marcos Cruz:
1080 REMark 2.00 - 1990 02
1090 REMark 2.10 - 1990 07 12
1100 REMark 2.20 - 1992 05 23
1110 REMark -printas liston de tradukoj
1120 REMark -uzas ALCHP, ne RESPR
1130 REMark -uzas versio$
1140 REMark -aldonas savu
1150 REMark 2.30 - 1992 07 03
1160 REMark -dulingva, hispana + esperanta
1170 REMark 
1180 :
1190 versio$="2.30"
1200 :
1210 DIM index%(256),infor%(256,80),schr%(80),code%(112)
1220 base=ALCHP(21*1024)
1230 MODE 4
1240 OPEN#1,con
1250 INK 7:BORDER 1,7:CLS
1260 :
1270 REMark INICIALIZA DATOS
1280 REMark PRETIGAS DATUMOJN
1290 RESTORE
1300 PRINT "Leyendo datas..."
1310 PRINT "Lege datumojn..."
1320 FOR j=0 TO 110
1330   READ code%(j)
1340   POKE base+j,code%(j)
1350 END FOR j
1360 :
1370 REPeat main_loop
1380   menú
1390   key%=CODE(INKEY$(#1,-1))
1400   IF key%=49 THEN read_trans_data
1410   IF key%=50 THEN write_trans_data
1420   IF key%=51 THEN save_trans_data
1430   IF key%=52 THEN CLS:STOP
1440   IF key%=53 THEN listu
1450 END REPeat main_loop
1460 :
1470 DEFine PROCedure menú
1480   PRINT
1490   PRINT 'CONFIGURADOR PARA / ADAPTILO POR "OVERDRIVE"'
1500   PRINT
1510   PRINT "Original de / Originalo far Sergio Montoro, 1989e"
1520   PRINT "Versión/Versio"!versio$!"por/far Marcos Cruz, 1992e (http://programandala.net)"
1525   PRINT "Licencia/Permesilo: http://programandala.net/licencia"
1530   PRINT
1540   PRINT "Elige: / Elektu:"
1550   PRINT "1.- LEER FICHERO"
1560   PRINT "    LEGI DOSIERON"
1570   PRINT "2.- ALTERAR EL FICHERO LEIDO"
1580   PRINT "    MODIFI LA LEGITAN DOSIERON"
1590   PRINT "3.- GRABAR EL FICHERO"
1600   PRINT "    REGISTRI LA DOSIERON"
1610   PRINT "4.- FIN DEL PROGRAMA"
1620   PRINT "    FINO DE LA PROGRAMO"
1630   PRINT "5.- LISTAR LAS TRADUCCIONES"
1640   PRINT "    LISTI LA TRADUKOJN"
1650   PRINT
1660 END DEFine menú
1670 :
1680 DEFine PROCedure read_trans_data
1690   LOCal count%,n,m
1700   INPUT "Fichero a leer / Legota dosiero ="!lname$
1710   LBYTES lname$,base
1720   PRINT
1730   PRINT "Espera un momento / Atendu momenton ..."
1740   byte_on% =PEEK(base+110)
1750   byte_off%=PEEK(base+111)
1760   ser2%=PEEK_W(base+6)
1770   count%=0
1780   FOR n=base+112 TO base+510 STEP 2
1790     index%(count%)=PEEK_W(n)
1800     count%=count%+1
1810   END FOR n
1820   FOR n=0 TO 255
1830     IF index%(n)<>0
1840       infor%(n,0)=PEEK(base+112+index%(n)+1)
1850       FOR m=1 TO infor%(n,0)
1860         infor%(n,m)=PEEK(base+112+index%(n)+1+m)
1870       END FOR m
1880      ELSE
1890       infor%(n,0)=0
1900     END IF
1910   END FOR n
1920 END DEFine read_trans_data
1930 :
1940 DEFine PROCedure write_trans_data
1950   LOCal count%,nchr%,n
1960   PRINT
1970   PRINT "Carácter para activar la inclusion de fichero"
1980   PRINT "Karaktro por komenci inkludon de dosiero"
1990   PRINT
2000   PRINT "(INTRO para ninguno)"
2010   PRINT "(ENIGOKLAVU se neniu)"
2020   PRINT
2030   INPUT byte_on$
2040   IF byte_on$="":byte_on$="0"
2050   byte_on%=byte_on$
2060   PRINT
2070   PRINT "Carácter para terminar la inclusión de fichero"
2080   PRINT "Karaktro por fini inkludon de dosiero"
2090   PRINT
2100   PRINT "(INTRO para ninguno) ";
2110   PRINT "(ENIGOKLAVU se neniu)"
2120   PRINT
2130   INPUT byte_off$
2140   IF byte_off$="":byte_off$="0"
2150   byte_off%=byte_off$
2160   PRINT
2170   PRINT "-1 = las traducciones de SER2 son idénticas a las de SER1"
2180   PRINT "     tradukoj de SER2 egalas tiujn de SER1"
2190   PRINT " 0 = SER2 permanece inalterado"
2200   PRINT "     SER2 restas nesxangxita"
2210   PRINT " 1 = SER2 tiene sus propias traducciones"
2220   PRINT "     SER2 havas siajn proprajn tradukojn"
2230   PRINT
2240   INPUT ser2%
2250   PRINT
2260   REPeat loop1
2270     PRINT "Número del carácter a modificar (INTRO finaliza)"
2280     PRINT "Numero de la modifota karaktraro (ENIGOKLAVO finas)"
2290     PRINT
2300     INPUT nchr$
2310     IF nchr$="" THEN EXIT loop1
2320     nchr%=nchr$
2330     PRINT
2340     PRINT "La traducción actual para dicho código es:"
2350     PRINT "La nuna traduko por tiu kodo estas:"
2360     IF infor%(nchr%,0)=0
2370       PRINT "¡Ninguna! / Neniu!"
2380      ELSE
2390       PRINT
2400       FOR n=1 TO infor%(nchr%,0)
2410         PRINT infor%(nchr%,n)!;
2420       END FOR n
2430     END IF
2440     PRINT
2450     PRINT "Pulse INTRO para cambiar la traducción (otra tecla sale)"
2460     PRINT "ENIGOKLAVU por sxangxi la tradukon (alia klavo finas)"
2470     PRINT
2480     INPUT tecla$
2490     IF tecla$=""
2500       PRINT
2510       PRINT "Introduzca la traducción código a código (INTRO solo finaliza)"
2520       PRINT "Enmetu la tradukon, kodon post kodo (ENIGOKLAVO nura finas)"
2530       count%=1
2540       REPeat loop2
2550         INPUT infor$
2560         IF infor$="" THEN EXIT loop2
2570         infor%(nchr%,count%)=infor$
2580         count%=count%+1
2590       END REPeat loop2
2600       infor%(nchr%,0)=count%-1
2610     END IF
2620   END REPeat loop1
2630 END DEFine write_trans_data
2640 :
2650 DEFine PROCedure save_trans_data
2660   LOCal n,m,start
2670   PRINT
2680   PRINT "Espera un momento..."
2690   PRINT "Atendu momenton..."
2700   POKE_W base+6,ser2%
2710   POKE base+110,byte_on%
2720   POKE base+111,byte_off%
2730   start=base+113+512
2740   FOR n=0 TO 255
2750     IF infor%(n,0)=0
2760       POKE_W base+112+n*2,0
2770      ELSE
2780       POKE_W base+112+n*2,start-base-113
2790       FOR m=0 TO infor%(n,0)
2800         POKE start,infor%(n,m)
2810         start=start+1
2820       END FOR m
2830       IF infor%(n,0) MOD 2 = 1 THEN POKE start,32 : start=start+1
2840       POKE start,0
2850       start=start+1
2860     END IF
2870   END FOR n
2880   PRINT
2890   PRINT "Nombre y dispositivo del fichero a grabar"
2900   PRINT "Nomo kaj diskingo de la registrota dosiero"
2910   PRINT
2920   INPUT sname$
2930   SBYTES sname$,base,start-base+2
2940 END DEFine save_trans_data
2950 :
2960 DATA 96, 6, 0, 0, 3, 246, 0, 0, 112, 0, 78, 65, 65, 232, 0, 68, 32, 80, 66, 128, 177, 192, 103, 82, 32, 40, 255, 244, 12, 128, 74, 251, 1, 1, 102, 236, 67, 250, 0, 72, 69, 250, 255, 216, 32, 18, 74, 128, 102, 6, 33, 64, 255, 248, 96, 8, 34, 9, 84, 65
, 33, 65, 255, 248, 66, 128, 16, 42, 0, 4, 74, 0, 102, 6, 33, 64, 255, 252, 78, 117, 83, 64, 74, 0, 102, 12, 211, 210, 84, 73, 33, 73, 255, 252, 66, 128, 78, 117, 33, 104, 255, 248, 255, 252, 96, 244, 112, 237, 78, 117, 0, 0
2970 :
2980 DEFine PROCedure savu
2990  SAVE_O overdrive_bas
3000  SAVE_O overdrive_kop
3010 END DEFine savu
3020 :
3030 DEFine PROCedure listu
3040   LOCal count%,nchr,n
3050   OPEN#3,ser1
3060   PRINT#3,"Traducciones para la impresora:"
3070   PRINT#3,"Tradukoj por la printilo:             ........................"
3080   PRINT#3,"Fichero con los datos para Overdrive:"
3090   PRINT#3,"Dosiero kun la datumoj por Overdrive: ........................"
3100   PRINT#3
3110   PRINT#3,"QL","Cara";CHR$(8);"'cter impreso con su traduccio";CHR$(8);"'n:"
3120   PRINT#3,"  ","Printita karaktraro kaj gxia traduko"
3130   PRINT#3,"===","==================================="
3140   FOR nchr=0 TO 255
3150     IF infor%(nchr,0)
3160       PRINT#3,nchr,;
3170       FOR n=1 TO infor%(nchr,0)
3180         PRINT#3,CHR$(infor%(nchr,n));
3190       END FOR n
3200       PRINT#3," = ";
3210       FOR n=1 TO infor%(nchr,0)
3220         PRINT#3,infor%(nchr,n)!;
3230       END FOR n
3240       PRINT#3
3250     END IF
3260   END FOR nchr
3270   PRINT#3
3280   CLOSE#3
3290 END DEFine listu
3300 :

Descargas

overdrive_bas (7.62 KiB)