archivo

Trucos

Tirando de la hebra en un post de ql-user he encontrado una utilidad muy práctica que transforma código fuente SuperBASIC en Html.

La página de referencia es está aquí (sección Programs->Utilities).

He traído aquí la demo que pone la página. Como veis, se colorea el código SuperBASIC, pero lo más útil es que incluye href’s (enlaces) a los procedimientos y funciones. Si probáis en el este código veréis que al pulsar sobre “CrossHair” o “Disp” en la rutina Main os lleva directamente a la definición de esos procedimientos o funciones.

Me parece una utilidad muy práctica a la hora de “leer” y trazar programas SuperBASIC, especialmente los que sean muy largos. Puede venirnos muy bien si queremos exponer código fuente en nuestro Blog, o en cualquier otro sitio en internet.

La demo que os comento:

Demo sb2htm (CrossHairs)


Xhair

100 REMark $$stak=384
110 REMark $$heap=384
120 REMark $$chan=3
130 :
140 REMark       CrossHairs
150 REMark ©PWitte March 26th 2000
160 REMark         V 0.00
170 REMark        Freeware
180 :
190 REMark
200 :
210 REMark For details of use click here
220 c = FOPEN("con"): ERT c
230 xs% = SCR_XLIM(#c): ys% = SCR_YLIM(#c)
240 WINDOW#c; xs%, ys%, 0, 0
250 OVER#c; -1: INK#c; 7
260 :
270 RPTR#c; lx%, ly%, 9, s%, xr%, yr%, k$
280 CrossHairs lx%, ly%
290 toggle% = 0
300 :
310 REPeat main
320  RPTR#c; xp%, yp%, 9, s%, xr%, yr%, k$
330  k% = CODE(k$): IF k% = 27 OR k% = 2: EXIT main
340  CrossHairs lx%, ly%
350  CrossHairs xp%, yp%
360  lx% = xp%: ly% = yp%
370 :
380  IF k% = 1 THEN
390   IF toggle% = 0 THEN
400    toggle% = 1
410    dx% = xp%: dy% = yp%
420    Displ dx%, dy%, xp%, yp%
430    nx% = xp%: ny% = yp%
440   ELSE
450    toggle% = 0
460    Displ dx%, dy%, nx%, ny%
470   END IF
480  ELSE
490   IF toggle% = 1 THEN
500    Displ dx%, dy%, nx%, ny%
510    Displ dx%, dy%, xp%, yp%
520    nx% = xp%: ny% = yp%
530   END IF
540  END IF
550 END REPeat main
560 :
570 DEFine PROCedure  CrossHairs(x%, y%)
580 BLOCK#c; xs%, 1, 0, y%, 7
590 BLOCK#c; 1, ys%, x%, 0, 7
600 END DEFine CrossHairs
610 :
620 DEFine PROCedure  Displ(px%, py%, nx%, ny%)
630 LOCal x%, y%, l%, s$
640 s$ = ' ' & nx% & '/' & ny% & ' ': l% = LEN(s$) * 6
650 IF (px% + l%) > xs%: x% = px% - l%: ELSE : x% = px%
660 IF (py% - 12) < 0: y% = py% + 2: ELSE : y% = py% - 12
670 BLOCK#c; l% - 8, 10, x% + 4, y%, 7
680 CURSOR#c; x%, y%: PRINT#c; s$;
690 END DEFine Displ
700 :

Top of Page

Generated with sb2htm

Anuncios

En el artículo “Copiando ficheros desde el QL al PC (y viceversa)” se muestra un enlace a las instrucciones  que tenemos que seguir si queremos transferir ficheros entre ambas máquinas. Esto abre las puertas a muchas posibilidades, pero es importante destacar algunas cosas a tener en cuenta:

  1. Los microdrives son caros en lo que respecta a su capacidad de almacenamiento y difíciles de obtener.
  2. Los programas pues, en general, ocuparán demasiado espacio en los microdrives, pero lo peor es la escasa cantidad de memoria de que dispondremos para ejecutarlos en el QL.
  3. Algunos ejecutables requieren extensiones del sistema como el Toolkit II, que si bien hoy día están disponibles gratuitamente, limitan aún más el espacio de memoria para programas.
  4. Los ficheros ejecutables tienen una cabecera que hay que preservar cuando transferimos archivos.
  5. Los programas que obtendremos por Internet generalmente están disponibles comprimidos en formato zip.

…todo esto sin hablar de que necesitaremos saber cómo instalar y usar un emulador y cuales son los comandos necesarios para copiar ficheros.

Es evidente que tratar con el QL no es lo mismo que hacerlo con sus otros hermanos Sinclair, y su metodología de uso se asemeja más a la de MS/DOS o cualquier OS de línea de comandos. Vamos a ver cuales son las distintas soluciones a estos problemas que seguro se os presentarán si os estáis iniciando en el mundo del QL con una máquina básica.

Los puntos 1 al 3 tienen una única solución: ampliar. Necesitaremos una controladora de discos y una ampliación de memoria para nuestro QL. Ambas pueden ser tarjetas independientes o una sola tarjeta que incluya ambas cosas. La más recomendable por precio y prestaciones es la TrumpCard de Miracle Systems, pero hay muchas otras posibilidades. Una búsqueda entre los enlaces a las páginas comerciales de QL o en Ebay nos dará algunas opciones.

Claro que si tenemos una controladora de discos necesitaremos un lector de discos. Buenas noticias. Las disqueteras de hoy sirven perfectamente. En este artículo se explica cómo adaptarlas.

Para solucionar el problema del punto 4 es necesario que la manipulación de los ficheros ejecutables se haga siempre desde un sistema QL que soporte el formato de ficheros del S.O. QDOS, es decir, desde el propio QL, un emulador de QL que pueda acceder a ficheros en una partición FAT, NTFS, etc… (casi todos lo hacen) pero nunca, NUNCA, manipular esos ficheros desde Windows, Linux u otros sistemas. Si copiamos un ejecutable mediante “copiar y pegar” por ejemplo, habremos perdido la cabecera de ese fichero y ya no funcionará en el QL. Los que tengan Macs saben de que hablo. Afortunadamente, los ficheros no ejecutables no tienen este problema, pudiendo, por ejemplo, editar un fichero de texto con el bloc de notas y luego usarlo en el QL o en el emulador sin más (podemos pues editar nuestros programas SuperBASIC en nuestro cómodo editor de textos…)

Por ultimo, para solucionar el problema planteado por el punto 5 debemos usar los programas zip y unzip para QL. No podemos, por la razón descrita, descomprimir los zip fuera de el emulador o el QL. Aquí tienes una descripción de cómo usarlos (mismo modo que en otros sistemas) y dónde conseguir unzip. Lee el leeme.txt.

Si lo que queremos es pasar nuestros viejos programas SuperBASIC al PC para hacer una copia de respaldo, todo esto no será necesario, pero enseguida querremos sacarle más partido al QL, y estas anotaciones te serán entonces imprescindibles.

jav_ql_mdvHe leído un hilo muy bueno en ql-user de cómo transferir ficheros desde un QL básico (sólo con unidades microdrives sin ningún tipo de ampliación de disqueteras) a un PC empleando simplemente un cable RS232.

El usuario que inicia la experiencia (aupf82), pone como último post (http://www.mail-archive.com/ql-users@lists.q-v-d.com/msg06162.html) el resumen de todos los pasos a dar para quien lo pueda necesitar. En este resumen explica con todo lujo de detalles los pasos para realizar dicha transferencia con éxito y en ambos sentidos (QL a PC y PC a QL).

jav_ql_serLa idea básica es emplear un cable estándar RS232, para hacer la transferencia al PC por medio de Q-emulator (un emulador QL en el PC) y no vía MS-DOS. (Para emplear este cable se necesita un adaptador en el QL, -se puede conseguir en “Sinclair Shop”-)

Hay dos partes en el proceso:

1) Lograr transferir desde el Q-emulator a un microdrive del QL, una utilidad que viene con el propio Q-emulator llamada MdvToWin. Ejecutando esta utilidad en el QL podemos transferir ficheros EXEcutables sin perder las cabeceras. El problema de este primer paso es que se necesita un mecanismo para que el propio MdvToWIN (que es un ejecutable QDOS) no pierda las cabeceras al pasarlo al QL real. Bien, el artículo mencionado explica cómo hacerlo.

2) Una vez hayamos transferido la utilidad MdvToWin a una unidad Microdrive del QL, el resto es mucho más sencillo. El propio MdvToWin nos guía en el proceso para lograr transferir cualquier tipo de fichero respetando las dichosas cabeceras de los ejecutables QDOS.

Bueno, lo dicho, un artículo muy útil para aquellos que sólo dispongan de un QL básico con algunos cartuchos microdrives y quieran disfrutar de la máquina real copiando ficheros desde el PC. O bien para aquellos que tengan programas en microdrives y deseen pasarlo al PC para ser usados en un emulador.

Q-emuLator es capaz de emular distintas configuraciones hardware de sistemas QDOS, entre ellas un sistema Aurora+Gold Card. Aurora es una placa gráfica que sustituye a la placa base del QL estándar. Apoyada con una Gold Card o Super Gold Card podemos tener un sistema QDOS compatible, completo y autosuficiente. Entre otras cosas, Aurora aporta una mayor resolución y la posibilidad de manejar de 256 colores. Esto siempre y cuando se disponga de SMSQ/E como sistema operativo, el cual integra GD2 (el “graphics drivers” para poder sobrepasar los 4 / 8 colores del QL estándar).

Visto esto, debería ser posible manejar 256 colores con Q-emuLator. Puestos mano a la obra, al menos para mí, no fue intuitivo activar el modo “256 colores” de Aurora. La documentación de Q-emuLator y la de SMSQ/E no es muy “específica” en este apartado.

Tras perder bastante tiempo sin encontrar la manera de mostrar imágenes con esa profundidad de color, me decidí a escribir a Daniele Terdina (autor de Q-emuLator) … y … ¡¡ llegó la solución !! … Daniele me contestó amablemente con la respuesta.

Podemos activar el modo 256 colores con el comando:

DISP_COLOUR 2,512,480

el cual activa una resolución de 512×480 a pantalla completa. (DISP_COLOUR es un comando de SMSQ/E).

Por ejemplo, el siguiente programa de ejemplo nos mostrará líneas de texto con fondo en colores aleatorios.

100 DISP_COLOUR 2,512,480
110 COLOUR_24
120 REPeat x
130 PAPER RND(255)*65536+RND(255) * 256 + RND(255)
140 PRINT "hola (aurora 256 colores)"
150 END REPeat x

Aquí tenéis una muestra, la consola SuperBASIC en la parte superior mostrando colores aleatorios de la paleta de 256 colores y el Files de QPAC2 en la parte inferior (podemos mostrar las dos ventanas visibles al mismo tiempo ya que tenemos 480 pixels de alto).

QEmulator, 256 colores (1)

Q-emuLator, 256 colores (1)

Imagen completa aquí …

Aprovechando los 256 colores, os pongo algunos ejemplos más, imágenes a 256 colores cargadas con Photon en mi máquina. (No son capturas de pantalla sino fotos directa al monitor).

QEmulator, 256 colores (2)

Q-emuLator, 256 colores (2)

Imagen completa aquí …

QEmulator, 256 colores (3)

Q-emuLator, 256 colores (3)

Imagen completa aquí …

En un artículo anterior, Afx nos mostraba una utilidad llamada photon. He estado haciendo algunas pruebas y estas han dado paso al artículo que estas leyendo y que bien podría haberse llamado:

“Cómo pasar de aquel largo artículo que hice en su momento para convertir imágenes hechas en PC a imágenes visibles en QL y aún así obtener resultados”

En el mencionado artículo exponía una serie de pasos para tratar imágenes mediante un programa de retoque fotográfico y luego convertir cada imagen resultante en el formato de la pantalla del QL. Esto era muy lento y algo trabajoso.

Con la utilidad photon podemos ahorrarnos todos esos pasos. Es suficiente con cargar las imágenes en pantalla y luego volcarlas a un fichero.

Vamos por partes: en este artículo trabajaremos sólo con los modos 512 y 256 de 4 y 8 colores respectivamente. Cargaremos las imágenes con photon y luego las volcaremos a un fichero. Para hacer esto último usaremos, por ejemplo, la utilidad salvar_exe que se publicó en la revista cuq número 7. Esta utilidad previamente se carga en memoria y actua pulsando la combinación de teclas ALT+s. Seguidamente guardará una imagen numerada cada vez que pulsemos esa combinación de teclas.

Resulta además que queremos convertir una imagen que ocupe todo el ancho y el alto de la pantalla. Pues nada más fácil. Puesto que el programa photon muestra las imágenes con su correcta relación de aspecto (a no ser que le indiquemos lo contrario con el comando “r”), las imágenes que usemos deben tener la proporción 4:3. De acuerdo, pero ¿qué medidas en pixels deben tener? Haciendo pruebas he llegado a la conclusión de que las imágenes en modo 4 deben tener un tamaño de 512×384 pixels, y las imágenes en modo 8 un tamaño de 341×256 pixels.

Para mostrar como funciona todo lo explicado antes he elegido un fotograma de la escena final de la película Corazón Salvaje (1990), pues a parte de que me gusta mucho esta película y Laura Dern, la actriz protagonista, el fotograma es extremo en todo los aspectos que nos interesan para la demostración. Está muy saturado en cuanto a color (en este caso colores cálidos, aunque también hay azules), hay muchos objetos en la imagen y aparecen figuras humanas pero no en primer plano. Veamos el resultado:

corazon_salvaje_512Esta es la imagen original a tamaño 512×384.

corazon_salvaje_4Aquí tenemos su conversión a 4 colores.

corazon_salvaje_256Esta es la misma imagen a tamaño 341×256.

corazon_salvaje_8Y aquí su conversión a 8 colores.

Como veis el resultado es razonablemente aceptable, aunque no podemos pedir peras al olmo. Podéis jugar con el parámetro “dn” donde “n” tiene un valor entre 0 (cero) y 4 que corresponden a 0%, 25%, 50%, 75% y 100% de porcentaje de trama. El valor por defecto parece ser “d2” (50%), y es un porcentaje muy adecuado en cualquier ocasión. Para un valor del 75% de trama usaríamos:

ex photon;"corazon_salvaje.jpg\d3"

Observad el resultado:

corazon_salvaje_8_d3Al aumentar la trama obtenemos mayor detalle en objetos pequeños que antes ni se veían y los colores parecen más reales, pero difuminamos los objetos lisos y más cercanos. El secreto es probar y ver cual nos da mejor resultado.

Para conocer más acerca del uso de photon, no dejéis de echarle un vistazo a la ayuda en txt que viene con el programa. A partir de aquí os toca a vosotros.

Descargar el programa photon.