Emulador de Spectrum para C=64 Spectrum Emulator es el nombre del programa creado por Whitby Computer para el C=64. Ya que no tengo el programa original ni un C=64 real, debo usar un emulador. Para esto elijo el Win Vice. Para una más facil carga, creo un archivo Batch conteniendo la línea: x64 -autostart spectrum.p00 Tras ejecutarse el emulador y cargar, aparece en pantalla '(c) 1985 Whitby Computers Ltd'. Ahora el Commodore ya está en modo Spectrum. ¿Pero hasta qué punto se comporta como un buen speccy? Empecé probando Print, Border, Input, lo básico y hasta ahí era un Spectrum. Había que ver los gráficos y sonidos. Así que de frente me puse a tipear el programa del apendice D del manual de Spectrum, que dibuja una bandera inglesa (p.213). Unos cuantos errores de tipeo, listar, editar, corregir y listo: resultado satisfactorio. Se ve como un spectrum, ahora la cuestion es salvar el programa, pruebo a ver los comandos de casete y aunque no salvo nada pues no he puesto ningun TAP, confirmo que acepta los comandos. Elijo un DSK (en este caso un D64) en el drive 9 y veo si admite la sintaxis de microdrive. Funciona y el programa es salvado. Siguiente paso, el sonido: a probar con 'Frere Jacques' del capitulo 19, comando Beep (p.135) Suena como el Spectrum. Siguiente paso: los UDGs, Usr y Save Code. Para esto tipeo el programita "piezas de ajedrez" del capitulo 14: Juego de caracteres (p.96-97) Luego de eso paso al Save Data. Tipeo un pequeño programa que cree unas matrices con Dim para poder salvar y todo sale como se esperaba. Hasta aquí todo lo que funciona correctamente tal como podría esperarse de un buen Zx Spectrum. Ahora veamos otras características de este Basic. No hay colores con doble brillo, así que 'Bright 1' no hace nada, solo está al parecer por compatibilidad. Al probar las teclas y los CHR$ descubro lo siguiente: Chr$7 debe ser usado en vez de chr$8 para retroceso. Chr$6 funciona del modo normal. Añade chr$9 para avanzar el cursor, que normalmente no funciona en Spectrum. symb shift+ 8 = Caps lock + 9 = graficos + 6 = inv video + 7 = tru video En el caso del emulador, ambos SHIFT son para Caps Shift, CTRL derecho y Alt gr son SS, Ctrl+Shift es Ext. Inicio es Edit, Supr da ^, la tecla ´ºª\´ da ©, entre otras. Es igualmente posible ingresar colores directamente desde el teclado estando en el modo 'E'. En cuanto a las variables del sistema que requieren de Peek y Poke: Acepta Poke 23624 pero solo para los atributos de la mitad inferior de la pantalla sin colorear el Borde. Poke 23658 activa las mayusculas y poke 23692 para evitar el mensaje de 'Scroll?'. 'Input;' hace lo mismo. No se puede leer el teclado mediante la función IN, tampoco con Peek (23552-23560). Poke 23609,255, no provoca ningún sonido al pulsar el teclado. Out 254,x no genera sonido alguno. Acepta Draw x- Peek 23677,y- Peek 23678 para dibujar con coordenadas absolutas. También funciona lo sigte: 10 Poke 22527+rnd*704,rnd*127: Goto 10 Respecto al codigo maquina: Al intentar algo como Print Usr x aparece un mensaje diciendo: "Can't do machine-code, 0:1". No se puede usar código máquina. Por lo mismo, tampoco pueden hacerse llamadas Usr x. Whitby al parecer ofrece solo 27k de memoria libre para programas Basic en ves de siqueira 40k, pero eso es más al menos en comparación con el Spectrum de 16k. Trabajando con casete: Admite los cuatro comandos Save, Load, Verify y Merge del Spectrum. Cuando se da Save aparece el ya conocido mensaje 'Start tape, then press any key' y no hay modo de interrumpirlo más que pulsando la tecla Break (Esc en el Win-vice) En todas las operaciones de casete, aparecen las igualmente conocidas franjas rojo-cyan y amarillo-azul, pero en vez de ser sólo para el borde, aquí las franjas llenan la pantalla entera. Comandos de disco. Admire los sigtes comandos: Format, Cat, Load, Save, Merge, Verify, Erase, Clear#, Cls#. Format sintaxis: Format "m",,"nombre" donde: número = un valor del 1 al 8 designando la unidad a elegir nombre = un texto de hasta 10 caracteres Este comando formatea y da nombre de volumen a los discos en blanco. Si el disco estaba previamente formateado para el C64, lo rehace dandole un nuevo formato. Nota: c=64 admite solo 4 drives, por lo que solo serán admitidos 1, 3, 5 y 7 preferentemente. Cat sintaxis: Cat [#flujo,] donde: flujo = un valor de 0 a 3 CAT 1 muestra en la pantalla el nombre del disco, los nombres de los archivos con su largo en Kb y al final el espacio libre que es de 166 si el disco está vacío. Save Sintaxis: Save *"m",,"nombre" [Line/Code/Data/Screen$] Salva el programa dándole un "nombre" en el disco. Nota: para salvar en el drive 1 debe indicarse como unidad 2, de lo contrario no salvará nada, y así en lo sucesivo. Es decir que son más válidos de usar 2, 4, 6 y 8. Load sintaxis: Load *"m",,"nombre" [Code/Data/Screen$] Carga el programa "nombre" del disco. Merge sintaxis: Merge *"m",,"nombre" Igual que el comando de casete, carga solo programas basic. A diferencia del Microdrive, Whitby puede mezclar programas salvados con auto run mediante SAVE* ... LINE. Verify sintaxis: Verify *"m",,"nombre" [Code/Data/Screen$] Igual que con el casete, verifica los datos salvados en el disco. Erase sintaxis: Erase "m",,"nombre" Borra el programa "nombre" del disco. Clear# Cierra todas las corrientes o flujos que se hubiesen dejado abiertos. Restablece los canales asociados de 0 a 3 pero respetando las variables y el archivo de pantalla. Cls# Hace lo mismo que CLS pero resetea todos los archivos de atributos como si se hubiese reiniciado la máquina. Para cerrar: Debido a que no hay posiblidad de crear ficheros de ningún tipo, Open y Close están limitados a los 3 canales básicos del spectrum sin expansión. Por lo mismo tampoco hay comando MOVE. La posiblidad de autoejecutar ficheros mediante RUN no existe aquí, ni los comandos de red o los comandos de comunicación por el puerto serial. Tanto Lprint como Llist envian todo a la impresora de Commodore. Lo mismo hacen Print #3 y List #3. En conclusión es una buena versión de Basic. Combina hasta cierto punto lo mejor del Spectrum con el teclado, disco y casete del C=64. Tiene como contra que uno está limitado solo al Basic ya que no es posible usar C.M. Ahora ya que se limitaban solo al Basic, los de Whitby pudieron haber pensado en el Basic del TS-2068, ya que en ese caso, no solo hubieran tenido todo el potencial del Spectrum Basic sino también comandos extras como ON ERROR, DELETE, SOUND por ejemplo. Eso si hubiera sido potencia. Ahí si se hubiera notado cuán pobre es el basci v2 del C=64 ante el Basic del TS.