Nueva actualización del core MSX1 (versión 1.3) del ZX-Uno

Fabio Belavenuto, tras muchos meses de intenso desarrollo, nos trae una nueva actualización de su core MSX1 para la placa ZX-Uno.

En esta nueva versión nos encontramos los siguientes cambios:

  • Mezclador separado para la salida de audio
  • Nuevo mezclador de audio con volumen ajustable, vía puertos SWIO. Se han corregido los niveles estándar del mezclador
  • Se añade feedback de la carga por audio
  • Se añade sonido OPLL del proyecto OCM
  • Se añade soporte para que el cargador cargue MSX BIOS y dos roms adicionales de 16 K para tarjetas con más de 512K de RAM.
  • Se añade un teclado español alternativo (gracias a desUBIKado)
  • Se añade un teclado japonés experimental (gracias a tanam (tms9918))
  • Corregido un error de teclado con el nuevo esquema para cargar teclado y cambiadas las tablas ROM.
  • Nueva utilidad MSXCTRL que permite cambiar todos los parámetros del core desde MSX-DOS modificando los valores de unos registros propios del core.
  • Se permite cambiar cambiar todos los parámetros del core mediante llamadas a determinados puertos. Se puede utilizar esta funcionalidad dentro de programas MSX-BASIC.
  • Corregidos errores que impedían que ciertos juegos funcionasen correctamente, por ejemplo, juegos en los que no funcionaba el joystick o bien juegos que al iniciarse es como si estuviese siempre pulsada la tecla ESPACIO.

Es posible encontrar el código fuente de su core en su github.

INSTALACIÓN

El core MSX1FPGA para la placa ZX-Uno se presenta sintetizado de 3 formas distintas para su uso con los distintos modelos de ZX-Uno:

  • Core para los modelos con 512K de memoria: COREX(512).ZX1
  • Core para el modelo ZX-UNO VGA 2M de ManuFerHi y los modelos con 2MB de memoria INTERNA: COREX(VGA2M).ZX1
  • Core para los modelos con 2MB de memoria EXTERNA (con addon de Antonio Villena): COREX(EXT2M).ZX1

Además de instalar el core, se deben instalar en la tarjeta SD de hasta 2 GB, que obligatoriamente debe estar formateada en FAT16, una serie de archivos y directorios:

Es conveniente eliminar los archivos de una versión anterior antes de instalar los de la nueva, excepto los de la carpeta MSX, que es donde se pueden ir poniendo los juegos y aplicaciones.

Con respecto a la versión “vanilla” de los archivos necesarios que me ha pasado Fabio, yo he realizado los siguientes cambios en la versión que os comparto:

  • La configuración del core en el fichero /MSX1FPGA/config.txt está puesto con salida de video PAL y teclado en español.
  • Se ha añadido a la carpeta UTIL los programas cargadores romload.com y ngload.com
  • Se ha añadido a la carteta UTIL la carpeta sofarun con el programa SofaRun 4.1 que es una aplicación diseñada para ejecutar disquetes (.DSK), casetes (.CAS) y cartuchos (.ROM).
  • El programa MSXCTRL se ha movido de la carpeta raíz a la UTIL para que así pueda ser llamado desde cualquier directorio de la SD
  • La definición del teclado español /MSX1FPGA/SPA.kmp ha sido sustituida por mi definición alternativa

DEFINICIONES DE TECLADOS

En la versión 1.3 se ha modificado la forma de definir la disposición de los símbolos en los teclados (.KMP), por lo que ya no son compatibles las definiciones de versiones anteriores del core.

En la definición alternativa del teclado español que he creado los símbolos de las teclas corresponden con las de un teclado de PC Español, más luego todos los de la versión ASCII de MSX con layout Internacional.

A diferencia del teclado alternativo español usado en la versión 1.2 del core, ahora sí se mantiene la tecla para la Ñ, y hay 2 teclas que realizan la función de la tecla DEAD para sacar distintos tipos de acentos.

Teclado SPA Alternativo – core MSX – ZX-Uno.v1.3

MSXCTRL

Esta nueva utilidad es exclusiva del core MSX1FPGA, y aparece por primera vez en la versión 1.3. Permite controlar todas las opciones del core que antes solo eran accesibles a través del fichero de configuración /MSX1FPGA/config.txt o pulsando determinadas teclas.

Ahora con esta utilidad, cuya funcionalidad es muy parecida al zxunocfg del core de Spectrum, es posible cambiar cualquier opción del core al vuelo desde el MSX-DOS, pudiendo además incluirla en un archivo de proceso por lotes como el AUTOEXEC.BAT para tener una configuración predeterminada cada vez que se arranque. Además, es posible usar varios parámetros a la vez.

Ejemplos de su uso:

Tecleando MSXCTRL obtenemos los parámetros que podemos utilizar:

MSXCTRL.COM - Utility to manipulate MSX1FPGA core.
HW ID = 06 - ZX-Uno Board
Version 1.3
Mem config = 82
Has HWDS = FALSE

Use:

MSXCTRL -h -i -r -b -[5|6] -m<0-2> 
        -c<0-1> -d<0-1> -t<0-1>
        [-w<filename> | -l<filename>]
        -k<0-255> -e<0-255> -p<0-255>
        -s<0-255> -o<0-255> -a<0-255>

Tecleando MSXCTRL -h obtenemos la ayuda con la funcionalidad de cada parámetro:

MSXCTRL.COM - Utility to manipulate MSX1FPGA core.
HW ID = 06 - ZX-Uno Board
Version 1.3
Mem config = 82
Has HWDS = FALSE

Use:

MSXCTRL -h -i -r -b -[5|6] -m<0-2> 
        -c<0-1> -d<0-1> -t<0-1>
        [-w<filename> | -l<filename>]
        -k<0-255> -e<0-255> -p<0-255>
        -s<0-255> -o<0-255> -a<0-255>
 -h       Show this help
 -i       Show raw info of reg. values
 -r       Reset registers to default
 -b       Boot the machine
 -5       Enable 50 Hz
 -6       Enable 60 Hz
 -w fn    Write the all registers to
          file <fn>
 -l fn    Load the all registers
          from file <fn>
 -m 0-2   ESCCI Mapper type (0=SCCI,
          1=ASCII8, 2=ASCII16)
 -c 0-1   Scanlines (0=OFF, 1=ON)
 -d 0-1   Scandoubler (0=OFF, 1=ON)
 -t 0-1   Turbo (0=OFF, 1=ON)
 -k 0-255 Keyboard Beep vol. (def=128)
 -e 0-255 EAR feedback volume (def=20)
 -p 0-255 PSG volume (def=240)
 -s 0-255 SCC volume (def=255)
 -o 0-255 OPLL volume (def=255)
 -a 0-255 AUX1 volume (def=255)

Tecleando MSXCTRL -i obtenemos los valores actuales del los registros:

MSXCTRL.COM - Utility to manipulate MSX1FPGA core.
HW ID = 06 - ZX-Uno Board
Version 1.3
Mem config = 82
Has HWDS = FALSE

Reg 0x10 = 0x0F PAL,Scanlines,Scandoubler,Nextor active
Reg 0x11 = 0x00 ESE-RAM mapper SCC-I
Reg 0x12 = 0x01 Turbo ON
Reg 0x20 = 0x80 Beep Volume
Reg 0x21 = 0x14 Ear Volume
Reg 0x22 = 0xF0 PSG Volume
Reg 0x23 = 0xFF SCC Volume
Reg 0x24 = 0xFF OPLL Volume
Reg 0x25 = 0xFF Aux1 Volume

Desde MSX-BASIC se pueden modificar los valores de estos registros si los queremos cambiar en un programa BASIC. Por ejemplo, para activar el modo TURBO se haría con esta serie de OUT:

OUT &H40,40: OUT &H48,&H12: OUT &H49,1

y la forma de desactivarlo sería esta:

OUT &H40,40: OUT &H48,&H12: OUT &H49,0

 

Para reproducir archivos de sonido VGM o VGZ utiliza esta versión VGM.COM

VGM

Solo funciona con el core sintetizado para 512K. En la versión para 2MB no funciona.

Publicado en ZX-Uno | Etiquetado , | Deja un comentario

Cacharreos místicos. Parte IV: Sintetizando el core de Spectrum con soporte esxDOS para crear el core Speccy

En la tarde del pasado 16 de enero el grupo de Telegram de la MiST / Mistica FPGA16 estuvo muy entretenido. Comentando que es una pena que no se pudiese tener a la vez los 2 cores de Spectrum de Sorgelig en la misma tarjeta SD, debido a que los ficheros spectrum.rom de ambos cores se llaman igual, pero son específicos de cada core, e incompatibles entre si. Pensamos que estaría bien poder sintetizar el core con soporte esxDOS para que cogiese su fichero .rom pero con otro nombre, y así poder tener las dos cores conviviendo en la misma tarjeta SD.

Examinando el código del core, Manuel Fernández pudo constatar que era tan simple como cambiar en el OSD la primera linea, el título del core, y el firmware automáticamente cargaría un archivo .rom con ese mismo nombre. El problema era obtener los fuentes del core de Sorgelig a la fecha 2016.06.12, que es la última vez que se hizo una «release» con soporte esxDOS.

Gracias al usuario Victor del grupo de Telegram, que le indicó a Manuel una opción de github que permite obtener los fuentes a una fecha dada, se pudieron obtener estos.

Ya con los fuentes adecuados Manuel sintetizó el core dándole el nombre de speccy, con lo cual el fichero que necesita para funcionar es el speccy.rom, y por lo tanto ya podemos tener conviviendo los dos cores en la misma tarjeta SD.

Una vez conseguido el objetivo, y con el fin de hacerlo todo mucho más sencillo, creé un archivo con todo lo necesario para disfrutar de este core, y cuyo contenido es el siguiente:

https://mega.nz/#!m8IEySSR!MkMLT_xKKDRj … FzBsAHzzvk

  • BIN: Carpeta necesaria para el esxDOS 0.8.5
  • SYS: Carpeta necesaria para el esxDOS 0.8.5
  • speccy.rom: El fichero con las roms que necesita el core
  • zxspeccy_esxdos.rbf: El core de Spectrum con soporte esxDOS
  • SPECCY: Carpeta por defecto del core y donde hemos incluido las compilaciones ZX1PACK y MyDivMMC
  • ZX1PACK.TAP: Cargado este archivo se arranca el menú principal de la compilación ZX1PACK

Para saber como se trabaja con este core solo tenéis que leer mi anterior entrada:

Publicado en Mistica FPGA16 | Etiquetado , , , | Deja un comentario

¡Por qué debes pillarte un ZX-Uno de 2 Megas en lugar del de 512 KB!

Voy a realizar un recorrido core por core de aquellos que sacan provecho de los 2MB que se pueden poner a un ZX-Uno, ya sean internos o externos, y que ventajas se consiguen con ellos:

PC XT

Gana mucho la compatibilidad del core al permitir «mapear» mucha más memoria. La distribución de la memoria queda de la siguiente forma en los cores para 2MB:

· 640 KB de memoria convencional
· 224 KB de memoria superior
· 32 KB para alojar la BIOS
· 64 KB de memoria alta
· 448 KB de memoria extendida (XMS)

Fuente: viewtopic.php?f=56&t=936#p12983

MSX

La versión de 2MB permite tener 1 Mega de Memory mapper y 512K de ESE-SCC con lo que se pueden cargar ficheros .rom de mayor tamaño. En la versión 512K solo se tiene soporte de Megaram SCC/SCC+ de 256K.

En la versión de 512K funciona el programa Sofa Run que es un gestor de archivos y lanzador de programas, sin embargo no podrás lanzar imágenes de disquetes (*.DSK) porque las intenta cargar primero en memoria, y siempre devuelve el error «No free segments». Con los modelos de 2MB no da ese error y se pueden cargar imágenes de disquetes sin problemas.

En el versión 1.3 del core se cambió la forma de hacer teclados personalizados, y no se pueden cargar en los modelos de 512K debido a que el core necesitaba espacio para unas rom del sistema más grandes. Por eso, el teclado en español solo se podrá usar en los modelos con 2MB.

Fuente: viewtopic.php?f=63&t=1115&start=150#p16149

Spectrum

Se pueden cargar archivos .PZX más grandes (por ejemplo juegos multicargas con gran cantidad de cargas).

Atari 800XL

– Se pueden cargar cartuchos grandes (de hecho, enormes, hasta 1024K de cartucho, como el Space Harrier)!
– Se pueden seleccionar 3 ampliaciones de RAM más en el menú F12: 576K Compy, 576K Rambo y 1MB.

Fuente: viewtopic.php?f=48&t=1192#p14012

Amstrad con soporte de carga desde SD

– Con la versión del core de 2MB se pueden usar tarjetas SD de 1, 4, u 8 GB, con la versión del core para 512 KB solo tarjetas de 4 GB
– Con 2 MB de memoria las imágenes dsk se cargan enteras en memoria y su compatibilidad aumenta. Con la versión de 512 KB solo una cara del diskette y hay que cambiar de cara manualmente. Disminuye la compatibilidad.

Fuente: viewtopic.php?f=59&t=1933&start=60#p22329

NES

En los ZX-Unos con 2 MB funcionarán juegos grandes que no funcionaban con 512KB, como Kirby Adventure, Megaman 6, Contra 1000-in-1, etc…, ya que ahora permite la carga de juegos que usen hasta 1MB de CHR RAM y 1MB de PRG RAM (2MB en total).

Fuente: viewtopic.php?f=18&t=1415#p15993

MULTICOMP

Si tienes 2 MB de memoria interna (no vale con la externa) los programas Turbo Pascal o Word Star se visualizan bien.

Fuente: http://www.zxuno.com/forum/viewtopic.php?f=27&t=1822&p=27540#p20991

 

Publicado en ZX-Uno | Etiquetado | Deja un comentario

RetroCrypta. SEGUNDO ExpoDebate FPGA’S con ViejovenFX y desUBIKado.

Publicado en Mistica FPGA16, VIDEOS, ZX-Uno | Etiquetado , , , | Deja un comentario

Retrocrypta. ExpoDebate FPGA’S con ViejovenFX y desUBIKado.

Publicado en Mistica FPGA16, VIDEOS, ZX-Uno | Etiquetado , , , | Deja un comentario

Cacharreos místicos. Parte III: Metiendo POKES en los cores de Spectrum

Me he sorprendido por un comentario del grupo de Telegram de la MiST / Mistica FPGA16 que hubiese gente que no supiese como meter los pokes en los juegos de Spectrum con la MiST. Pues aquí está uno para explicarlo

La forma será diferente si usamos el core de Spectrum actual o bien si usamos el core de Spectrum antiguo con soporte esxDOS.

A.- Core actual de Spectrum

Paso 1: Lo seleccionamos desde el core de Menu (la última versión a día de hoy es la del 2018.09.22)

Paso 2: Debemos usar el modelo +2A/+3, por eso comprobad que en el OSD la opción Memory vale +2A/+3

Paso 3: Cargamos un juego. Por ejemplo yo he cargado el NEBULUS.TAP

Paso 4: Pulsad SHIFT Derecho + F11, eso arrancará el Multiface 3

Paso 5: Pulsad «t» para entrar en el menú de herramientas y luego la tecla «Espacio» para meter la dirección del POKE. En este caso yo introduzco la dirección 32921 (vidas infinitas), y luego el valor, que en este caso es 0 y se pulsa ENTER. Con eso el POKE ya se ha introducido. Si no vamos a meter ningún poke más, pulsamos «q» para salir al menú principal, y desde allí pulsamos «r» para regresar al juego. Ahora ya los bichos no nos restarán ninguna vida cuando muramos :D

B.- Core antiguo de Spectrum con soporte esxDOS

Paso 1: Entiendo que lo tienes instalado tal y como lo expliqué en esta entrada, junto con el nuevo Navegador NMI. Si es así, lo seleccionamos desde el core de Menu

Paso 2: Pulsamos F11 para cargar el esxDOS.

Paso 3: Cargamos un juego, en este caso he vuelto a cargar el NEBULUS.TAP, y para ello he pulsado nuevamente F11 para que salga el nuevo Navegador NMI, me he puesto encima del fichero y he pulsado ENTER.

Paso 4: Pulsamos F11 para entrar en el Navegador NMI. Pulsamos la tecla «P» para introducir el POKE, y escribimos la dirección y el valor separado por una coma, tal que «32921,0″, y pulsamos ENTER.

Paso 5: Nos saldrá un mensaje para que confirmemos que queremos introducir ese valor, y pulsamos «Y» para confirmarlo. Con eso ya habremos metido el POKE. Para volver al juego solo tenemos que pulsar la tecla «ESC«.


Bonus track por Antonio Villena: Hay una tercera opción y es con una ROM con pokeador. En este hilo las subí todas:

http://www.zxuno.com/forum/viewtopic.ph … =507#p6657

No es muy distinta a lo del multiface. La diferencia es que no necesita hardware especial, tan solo la ROM y acceso al botón NMI. También funciona en máquinas originales.

Publicado en Mistica FPGA16 | Etiquetado , , | Deja un comentario

Cacharreos místicos. Parte II: Usando el ZX1PACK en la MiST / Mistica FPGA16

En una entrada anterior os puse como instalar la versión antigua del core de Spectrum en la MiST. La gracia de este core es que nos permite el uso de esxDOS, y por lo tanto disfrutar de la magnífica compilación ZX1PACK de Hynreck.

1.- Instalar el nuevo navegador NMI de david_ps

Esto no es obligatorio, pero como es capaz de funcionar bajo esxDOS 0.8.5, y tiene tantas mejoras con respecto al navegador estándar, es conveniente instalarlo.

Yo lo he hecho con la última versión actualmente disponible que es la 0.0.16, y que podéis localizar aquí. Dentro del foro de ZX-Uno podéis encontrar una entrada donde se habla más en profundidad de este nuevo gestor NMI.SYS para esxDOS.

Aquí unas cuantas imágenes de este gran programa:

El espacio desperdiciado a la derecha no lo aprovecha para poner un par de columnas más porque esta esperando al futuro soporte de nombres largos de ficheros del esxDOS para utilizarlo.

02.jpg

2.- Instalar la compilación ZX1PACK

A fecha de hoy la última versión del pack es la 3.4, y de las distintas opciones que hay la que utilizo para instalar en la MiST / Mistica FPGA16 es la que pone:

FICHEROS PARA LA SD (Versión Alternativa dentro de la carpeta SPECCY arrancando con BOOT.TAP) –>

http://www.mediafire.com/file/zpab19e3u … ALT%29.RAR

Una vez que tengáis descargado el archivo ZX-UNO PACK V3.4 (ALT).RAR en vuestro ordenador, lo descomprimiréis y tendréis una estructura de ficheros tal que esta:

Debéis copiar la carpeta SPECCY al directorio raíz de la SD que vais a usar con este core, así como los archivo RUN y BOOT.TAP. A este último lo podéis renombrar con un nombre molón como ZX1PACK.TAP

Por último, debéis copiar este archivo ZXUNOCFG – descomprimido – a la carpeta BIN que cuelga del directorio raíz de vuestra SD.

Una vez hecho todos estos pasos podréis disfrutar de la compilación ZX1PACK dentro de vuestra MiST / Mistica FPGA16.

Las opciones que tengo yo puestas en el menú OSD del core son las siguientes:

  • Fast tape load: On
  • Model: Sinclair
  • Feature: 128K

Así una vez arrancado el core pulsaremos una vez F11 para cargar el esxDOS, y una segunda vez para cargar el navegador NMI. Nos posicionamos sobre el fichero ZX1PACK.TAP y pulsamos ENTER o el botón de disparo del joystick. Hecho esto ya estaremos en la pantalla de inicio de la compilación.

Para desplazarse por los menúes se pueden usar los cursores y la tecla «ENTER» y «M», o el joystick y los 2 botones de disparo.

Excepto los juegos en formato PZX que se encuentran dentro del menú EXTRAS, y que es algo muy específico del ZX-Uno, el resto del software se puede usar en la MiST / Mistica FPGA16, incluido los juegos que usan ULAplus o el ratón Kempston.

3.- BONUS TRACK. Disfrutar de la compilación MyDivMMC pack

Esta es una compilación de unos 200 juegos que están incluidos en un único fichero .TAP de unos 5 megas. Se puede descargar desde está página.

El caso es que si se intenta cargar el archivo desde el nuevo navegador NMI, posicionándonos sobre el archivo MYDIVMMC.TAP y pulsando ENTER, nos saldrá una ventana con el mensaje «ESXDOS error 5» y no funcionará.

Para poder cargarlo es necesario volver a la versión antigua del navegador NMI, y eso se hace pulsando la tecla «J». Una vez que ya estemos en el antiguo navegador (32 caracteres por línea), ya podemos cargar el archivo y disfrutar de la compilación.

Publicado en Mistica FPGA16 | Etiquetado , , , , | Deja un comentario

Trucos de la MiST / Mistica FPGA16 / SiDi

Aquí iré poniendo trucos o cosas prácticas según las vaya conociendo:

  1. Firmware: Las opciones que tienen los cores para cargar ficheros de programas (TAP, ROM, D64, etc), cuando usan el OSD estándar primero miran si existe una carpeta que cuelgue del directorio raíz con el nombre del core. Así es conveniente crear una carpeta «spectrum» para el core de Spectrum, o una carpeta «genesis» para el core de Genesis/Megadrive. De esta forma, al presentar el directorio para cargar juegos, usarán ese en primer lugar, y si no existe presentarán el directorio raíz de la tarjeta SD.
  2. Firmware: Si se pulsa la tecla «Bloq Num / NUM Lock» y no se tienen gamepads o joysticl USB conectados, se mapean los cursores para las direcciones y las teclas izquierdas SHIFT, Ctrl, Windows, Alt como 4 botones disponibles para los cores. Por ejemplo, en el de Genesis/Megadrive se usan los siguientes: SHIFT izq = B, Ctrl izq = A y Windows izq = START.
  3. Genesis/Megadrive: Si ponéis en la carpeta raíz de la SD un archivo genesis.rom conteniendo un juego, este se cargará automáticamente al arrancar el core.
  4. Firmware: En la mayoría de los cores:Ctrl Izq + Alt Izq. + Alt Gr = Soft Reset (haces reset del core)
    Shift Izq + Ctrl Izq + Alt Izq. + Alt Gr = Hard Reset (vuelves al core de Menú de la MiST)Es posible configurar el reset del teclado entre 3 combos:0 – LCtrl-LAlt-RAlt
    1 – LCtrl-LGui-RGui (Ctrl-LAmiga-RAmiga)
    2 – LCtrl-LAlt-Deletey en el mist.ini hay que poner

    reset_combo=0

    si por ejemplo quieres usar el primero.

  5. Firmware: Solo están soportados en la SD los sistemas de ficheros FAT16 y FAT32. Así, si compras una tarjeta SD de gran capacidad y te viene formateada en otro sistema de ficheros, por ejemplo exfat, lo primero para poder usarla en la MiST será formatearla a FAT16 o FAT32.
  6. Snapshots: Los cores de SMS y Genesis/Megadrive permiten utilizar ficheros de salvado (.SAV) de avances y grabación de records en los juegos que lo soportan. Los de SMS tienen un tamaño de 8K y los de Genesis/Megadrive de 32K. Ejemplo de como crear esos ficheros vacíos:
    • Windows: Desde el Command Prompt (CMD en Buscar en Windows del menú inicio): fsutil file createnew megadrive1.sav 32768
    • Linux: Desde la consola: dd if=/dev/zero of=megadrive1.sav bs=1 count=32768

    Pero más sencillo que todo eso es usar los cientos de archivos que ha compartido el usuario de Atari Forum seastalker para las máquinas Sega Master System, Game Gear, Genesis, MegaDrive y 32x en este archivo:

  7. MSX2+: El core de MSX2+ de Slingshot permite utilizar un disco virtual msx.vhd formateado internamente en FAT16. Para poder montarlo y añadirle o quitarle archivos se puede hacer de estas dos formas:
  8. AtariST: Para poner la pantalla del core de Atari ST en Hi-Res hay que seguir estas instruciones.
  9. MSX2+: En el core de MSX2+ de slingshot es posible modificar el volumen de las salidas de audio PSG, SCC-I y OPLL. El control de volumen está a la mitad, pero es posible modificarlo con las siguientes teclas:F9 – Sube PSG
    Shift F9 – Baja PSGF10 – Sube SCC-I
    Shift + F10 – Baja SCC-IF11 – Sube OPLL
    Shift F11 – Baja OPLLy Re Pág y Av Pág son para el volumen maestro, pero este no puede exceder el máximo establecido con F8, F9 y F10.Existe la utilidad SETSMART para MSX-DOS que permite variar estos volúmenes. Así, si queremos que cada vez que arranquemos el volumen esté a un determinado valor, podemos incluirla dentro del AUTOEXEC.BAT. Un ejemplo de su uso sería:

    SET ECHO=OFF
    SET EXPERT=ON
    ALIAS .ROM=A:\UTILS\MGLOCM.COM
    SET PATH=A:\;A:\UTILS;A:\UTILS\MM;A:\UTILS\SOFARUN
    SETSMART -BF
    SETSMART -C7
    SETSMART -CF
    SETSMART -B7
    ECHO --------------------
    ECHO MSX MiST
    ECHO --------------------
    VER
    MM
    
  10. BBC Micro: El core de BBC Micro necesita para funcionar un fichero BEEB.MMB que es un contenedor de disquetes con un gran número de juegos, y que además este archivo sea el primero que se escribe dentro de una partición FAT16. Sin embargo gracias a la posibilidad de usar unidades de disco virtuales esto no es necesario, y bastará con renombrar ese archivo como BBC.VHD, pudiéndolo grabar en una partición FAT32 sin necesidad de que sea el primer archivo.
  11. Firmware: Este truco se lo vi explicar a ManuFerHi en el grupo de Telegram de la MiST/Mistica/SiDi. ¿Cómo asignar la pulsación de una tecla a un botón del gamepad? Se usa la instrucción joy_key_map= en el fichero mist.ini de la siguiente forma:joy_key_map=códigodelpad, códigodeltecladodonde el código del pad se selecciona de
    ;VID,PID,RIGHT,LEFT,DOWN,UP,  A ,  B ,  SEL,  STA , X ,  Y ,  L ,  R ,   L2 ,  R2  ,   L3  ,   R3
    ;VID,PID, 1      2   4   8 , 10,  20,   40,   80 , 100, 200, 400, 800,  1000, 2000 , 4000  , 8000
    

    y el código de teclado son los que aparecen en la 3ª columna, «HID Usage ID», de este documento.

    Así por ejemplo, si quisiéramos asignar el botón SELECT del gamepad a la tecla 0 del teclado numérico la sentencia a añadir en el fichero mist.ini sería la siguiente:

    joy_key_map=40,62
  12. Firmware: Para actualizar el firmware de la MiST / Mistica FPGA16 o SiDi solo hay que ir a esta dirección a por la versión más reciente:
    https://github.com/mist-devel/mist-binaries/tree/master/firmware

    Allí se encontrará un archivo firmware_aammdd.upg (dónde aammdd es la fecha). Hay que descargar este archivo a la carpeta raíz de la tarjeta SD y renombrarlo a firmware.upg. Luego desde el core menú pulsar F12 y veremos una ventana donde en la primera fila se ve la versión que tenemos actualmente instalada, en la segunda fila la versión del archivo firmware.upg que tenemos en la carpeta raíz de la tarjeta SD, y una opción UPDATE para actualizar la versión a la que tiene el archivo. Le damos ENTER, nos preguntará si estamos seguro, constestamos YES, y en unos segundos nos actualizará el firmware, tras lo cual se reseteará la FPGA y volverá a salir el menú.

  13. Firmware: Es posible distribuir los cores dentro de carpetas, y que desde el core Menú se pueda navegar dentro de ellas. Para ello hay que poner a esas carpetas el atributo SYSTEM. Si por ejemplo tenemos una carpeta ORDENADORES, y queremos meter ahí los cores de micros, desde Windows  hay que hacerle un ATTRIB +S M:\ORDENADORES desde el Command Prompt (CMD en Buscar en Windows del menú inicio)  En linux sería, una vez instaladas las mtools, desde un terminal ejecutar como root mattrib +S M:/ORDENADORES. Tanto en windows como en linux he supuesto como unidad de la tarjeta SD la M:, si no es esa, cambiadla por la correspondiente.Por otra parte, es también posible aplicar el atributo HIDDEN (oculto), en caso de que queramos que una carpeta o archivo de core no sea visto por el core Menú. Esto puede ser práctico si tienes varios archivos .arc, «cores virtuales», que apuntan al «core real» .rbf, y quieres ocultar el core real  y dejar solo que se vean los virtuales. En este caso se usa ATTRIB +H de la misma forma que hemos visto aplicar antes para el atributo de sistema.
Publicado en Mistica FPGA16 | Etiquetado , , , | Deja un comentario

Core Sinclair ZX Spectrum con soporte esxDOS (Sorgelig). Registro de cambios

Algunos modelos verilog del core de Spectrum de Till Harbaum fueron usados en este core.

Especificaciones:

  • Modelos ZX Spectrum 48K, 128K y Pentagon 128 totalmente funcionales con sincronismos correctos de CPU y vídeo.
  • Hasta 1024KB en modo Pentagon (Pentagon 1024SL v2.x compatible con puerto 7FFD)
  • Turbo 7MHz, 14MHz, 28MHz, 56MHz.
  • ULA+ v1.1 con paletas programables con control extendido Timex.
  • Modos Timex HiColor y HiRes.
  • DivMMC con esxDOS (TAP, TRD, Z80, SNA files)
  • Carga de cintas originales a través del OSD (ficheros CSW)
  • TR-DOS e imágenes nativas TRD (solo lectura)
  • Carga turbo de ficheros TAP. Carga rápida para TAP y CSW.
  • Kempston Mouse y Joystick.

Instalación:

Actualización 2019.03.10: Hemos sintetizado el core con el nombre Speccy para que pueda convivir con el core Spectrum en la misma tarjeta SD. Lee el siguiente artículo para saber más.

Descargar el archivo zxspectrum_20160612_esxdos.zip al ordenador y descomprimirlo.

Copie el archivo * .rbf en la raíz de la tarjeta SD. Puede cambiar el nombre del archivo a core.rbf si desea que el MiST lo cargue automáticamente al inicio. A continuación copie el archivo spectrum.rom en la raíz de la tarjeta SD.

Para el modo PAL (salida RGBS), debe colocar el archivo mist.ini en la raíz de la tarjeta SD. Establezca la opción scandoubler_disable para la salida de video deseada.

Para la funcionalidad de ESXDOS, debe colocar las carpetas SYS y BIN desde esxdos085.zip en la raíz de la tarjeta SD. El core solo es compatible con la versión 0.8.5 de esxDOS. No funciona con versiones superiores.

Versiones:

20160612

  • Es la última versión que se desarrolló con soporte esxDOS, y se ha discontinuado, por lo que ya no se actualiza.

Descarga del core

Teclas:

  • F11: Se cargará e inicializará ESXDOS, las presiones subsiguientes abrirán el navegador de ESXDOS.
  • Ctrl + F11: Reinicio en caliente (Hot reset)
  • Alt + F11: Reinicio en frío (Cold reset). Esto desactivará ESXDOS y descargará TRD.
  • F12: Para acceder al menú OSD.

En el modo de carga de cintas normal, mientras el fichero .TAP está cargando, las siguientes teclas pueden ser usadas:

  • F1: Pausa / Continuar.
  • F2: Saltar a la parte anterior (si se presiona durante el tono piloto), o al comienzo de la parte actual (si se presiona mientras el código se está transfiriendo)
  • F3: Saltar a la siguiente parte

Se puede controlar la velocidad de la CPU con las siguientes teclas:

  • F4: Velocidad normal (3.5MHz)
  • F5: 7MHz
  • F6: 14MHz
  • F7: 28MHz
  • F8: 56MHz

Menú OSD:

Con versiones del firmware anteriores a la 181225 el menú OSD del core aparece con un desplazamiento hacia abajo de una línea a partir de la segunda línea. Cuando se pulsa ENTER en la segunda línea realmente la opción que se está usando es la que aparece en la tercera línea, si se pulsa en la tercera línea realmente se está usando la opción que aparece en la cuarta línea, etc. Por eso, si tienes un firmware más antiguo que la versión del 25 de diciembre de 2018, es conveniente que lo actualices.

  • Load *.TRD:Las imágenes TRD son compatibles a través de ESXDOS en los modos de lectura y escritura. El core también soporta TRD de forma nativa a través de TR-DOS, por lo que ESXDOS no es necesario si el modo de solo lectura es suficiente. Para usar TR-DOS, primero debe elegir la imagen TRD en el OSD. ESXDOS (tecla F11) se bloqueará hasta que se haga un reinicio en frío o se vuelva a cargar el core. En modo ZX48 use el comando RANDOMIZE USR 15616 para ingresar a TR-DOS. Utilice el comando RETURN para salir de TR-DOS.
  • Load *.TAP: los archivos son soportados a través de ESXDOS. Las nuevas versiones de core admiten TAP de forma nativa a través de OSD, por lo que ESXDOS no es necesario. También permite usar nombres largos de archivos. Es posible usar carga normal y TURBO solo si la aplicación usa rutinas de carga estándar desde ROM.Para cargar en modo TURBO, debe seleccionar primero el archivo TAP desde el OSD y luego comenzar a cargar la aplicación a través del menú (ZX128) o mediante el comando LOAD «» (ZX48, ZX128).Para cargar el archivo TAP en modo normal a través del bucle AUDIO IN interno, debe comenzar a cargar primero a través del menú (ZX128) o del comando LOAD «» y luego elija el archivo TAP mediante el menú OSD. Si la aplicación utiliza un cargador no estándar, entonces el archivo TAP se reproducirá en modo normal automáticamente. Por lo tanto, es seguro elegir siempre el modo TURBO. Algunas aplicaciones se dividen en varias partes dentro de un archivo TAP. Por ejemplo, aplicaciones DEMO donde cada parte se carga después del final de la parte anterior, o juegos cargando niveles a petición. El core pausa la reproducción TAP después de cada parte del código (flag = # 255). Si la aplicación utiliza el cargador estándar de la ROM, todo se manejará automáticamente y no se notará. Si la aplicación utiliza un cargador no estándar, entonces no hay forma de detectar la carga. En este caso, debe presionar tecla F1 para continuar / pausar la reproducción de TAP. No presione la tecla F1 mientras se cargan los datos (o tendrá que reiniciar y comenzar desde el principio). Para ayudar a operar con TAP (para cargadores no estándar), hay una señalización LED amarilla especial:
    - El LED está encendido: hay más datos disponibles en el archivo TAP.
    - El LED parpadea: la carga está en proceso.
    - El LED está apagado: no quedan más datos en el archivo TAP.
    
  • Load *.CSW: Los archivos están soportados y siempre se cargan en modo normal. Este formato es útil solo para aplicaciones que usan cargadores no estándares con velocidades de transferencia no estándar. Puede usar la tecla F1 para pausar / continuar.
  • Fast tape load: Aumenta la frecuencia de la CPU a 56MHz mientras se carga la cinta.
  • Model y Feature: Las combinaciones posibles son las siguientes:
    - Model "Sinclair" + Feature  "48K / 1024K" => sincronismos de vídeo de ZX Spectrum 48K. 
                Memoria disponible 128 KB.
    - Model "Sinclair" + Feature  "128K" => sincronismos de vídeo de ZX Spectrum 128K. 
               Memoria disponible 128 KB.
    - Model "Pentagon" + Feature  "128K" => sincronismos de vídeo de Pentagon 128K. 
               Memoria disponible 128 KB.
    - Model "Sinclair" + Feature  "48K / 1024K" => sincronismos de vídeo de Pentagon 128K. 
               Memoria disponible 1024 KB. Los bits 7-5 del puerto 7FFD proporcionan acceso a 896 KB 
               adicionales de RAM (el bit 5 no bloquea el puerto 7FFD).
    

Ratón y joystick kempston:

El ratón Kempston no tiene una convención estricta, ya que el bit (D0 o D1) refleja un botón principal. Después de cada reinicio, el primer botón presionado en el ratón (solo los botones izquierdo o derecho) será representado por el bit D0 (el otro botón se representará por el bit D1). Por lo tanto, si no está satisfecho con el ajuste del botón del ratón, simplemente reinicie y luego presione el otro botón primero.

Debido al conflicto del puerto con el joystick Kempston, el core usa autodetección. Cualquier actividad del ratón cambiará el puerto al control del ratón. Cualquier actividad de joystick cambiará el puerto al control de joystick.

Algunos juegos / aplicaciones detectan automáticamente el ratón. Por lo tanto, mueva el ratón o haga clic en su botón antes de usar dichos juegos / aplicaciones.

Publicado en Mistica FPGA16 | Etiquetado , , , | Deja un comentario

Cacharreos místicos. Parte I: Usar el Workbench +3e v 2.0 con la MiST

Ayer salió la versión 2.0 del escritorio para Spectrum Workbench +3e de OCTOCOM, y hoy os traigo todo empaquetadito para poder usarlo en vuestras MiST / Misticas FPGA16.

La imagen que distribuyen desde OCTOCOM es de 1,8 GB para ser usada en tarjeta SD de al menos 2 GB, sin embargo es mucho espacio usado para los escasos 16 megas de ficheros que trae. Yo he creado una imagen alternativa que solo ocupa 122 KB para ser usada en una SD de al menos 128 MB, o simplemente como disco virtual en el core de Spectrum de la MiST. Luego con los programas 3e v.0.5 alpha y StrowSaw podéis seguir metiendo más programas.

El archivo WB+3E_V2.0a-MiST.7z que os dejo contiene los archivos necesarios para poner en una tarjeta SD vacía formateada en FAT32 o FAT16:

WB+3E_V2.0a-MiST

  • core.rbf: Es el core de menú para presentar los distintos cores
  • mist.ini: Es la configuración de la MiST con respecto a si se quiere salida RGB 15 KHz, configureción de joysticks, etc.
  • SPECTRUM.CFG: Es la configuración del core de Spectrum. Está puesto usar DivMMC con la rom del +3e.
  • spectrum.rom: Es el fichero de roms que usa el core de Spectrum. Es una copia de spectrum.rom.3e.divmmc.
  • spectrum.rom.3e.divmmc: Es el fichero de roms que usa el core de Spectrum preparado para interfase DivMMC
  • spectrum.rom.3e.zxmmc: Es el fichero de roms que usa el core de Spectrum preparado para interfase ZXMMC
  • spectrum.vhd: Es una imagen de disco duro virtual con el Workbech +3e versión 2.0
  • WorkbenckV.2.0a(Disco1).dsk: Es el disco que viene con la versión 2.0 para crear el Workbench desde un disco IDE vacío.
  • zxspectrum_20180922.rbf: El ultimo core de Spectrum hasta la fecha y que contiene soporte de DivMMC y ZXMMC

Si ya tienes una tarjeta con otros cores ya funcionando los únicos archivos que necesitas copiar son:

  • SPECTRUM.CFG: Es la configuración del core de Spectrum. Está puesto usar DivMMC con la rom del +3e.
  • spectrum.rom: Es el fichero de roms que usa el core de Spectrum. Es una copia de spectrum.rom.3e.divmmc.
  • spectrum.vhd: Es una imagen de disco duro virtual con el Workbech +3e versión 2.0
  • zxspectrum_20180922.rbf: El ultimo core de Spectrum hasta la fecha y que contiene soporte de DivMMC y ZXMMC

He notado que a veces los juegos van acelerados ya que el Workbench debe activar la velocidad Turbo. Para volver a la velocidad normal hay que pulsar F4. Os dejo las teclas que controlan la velocidad de la CPU en el core de Spectrum:

   F4 - velocidad normal (3.5MHz)
    F5 - 7MHz
    F6 - 14MHz
    F7 - 28MHz
    F8 - 56MHz
    F9 - pausar/continuar

Y por último, para usarlo, no os olvidéis de RTFM !

Actualización 08.10.2018: La imagen de disco se encuentra actualizada a la versión 2.0a que corrige fallo al arrancar el entorno con idioma inglés seleccionado de la versión 2.0 inicial.

MAKING OFF de como crear las imágenes para ser usadas en la MiST / Mistica FPGA16

La imagen que se puede uno bajar desde Octocom es para tarjetas de 2 GB y está en formato .HDF. Para pasarla al formato .VHD que entiende el core de Spectrum de la MiST, que realmente es una imagen raw, solo hay que quitar la cabecera de 128 bytes del principio del archivo. Una forma de hacerlo en linux (como root) sería:

dd if=Workbench2.0a.hdf of=spectrum.vhd ibs=128 skip=1

Que traducido es: copia el archivo Workbench2.0a.hdf con nombre spectrum.vhd, siendo los bloques del fichero de entrada de 128 bytes y sáltate el primero.

Luego está el hacerte una imagen del tamaño que tu quieras porque la imagen te parece demasiado grande. El sistema que utilizo es el siguiente. Si quiero hacer una una imagen para una SD de 1 GB entonces hago una imagen para el 96% de capacidad:

1 GB —> 1.000.000 KB —-> 960.000 KB ( 96 % de capacidad)

dd if=/dev/zero of=spectrum.vhd ibs=1k count=960000

 

Que traducido es: crea un archivo spectrum.vhd lleno de ceros, siendo los bloques del fichero de entrada de 1 KB y me lo haces de 960.000 bloques

Meto este archivo en la SD que uso con el core de Spectrum de la MiST y usando el programa SETUP que se encuentra en el disquete que se distribuye con la versión 2.0a del Workbech +3e, este formatea el disco, crea las 33 particiones y copia todos los archivos necesarios.

Si la imagen a crear es para menos de 1 GB, como por ejemplo la que he hecho para tarjetas de 128 MB, entonces hay que tocar el programa SETUP. Para ello en lugar de cargarlo con LOAD «A:SETUP» se hace con MERGE «A:SETUP». Luego se va uno a las líneas 1040 y sucesivas donde crea las particiones de 16 Megas con la instrucción NEW DATA y se pone un tamaño menor a las particiones. Yo en mi caso las reduje la mayoría a 3 MB por partición, para que así me entrasen en los 122 Megas disponibles. Hechos los cambios se puede ejecutar el programa con RUN.

Con esto tendremos un Workbench listo, pero vacío de juegos y demos. Para incluirlos en las imagen creada hay que usar el programa StrowSaw (frontend del programa 3e.exe de mcLeod_ideafix) que nos permitirá pasarlos de la imagen Workbench2.0a.hdf al disco duro de nuestro ordenador con la opción «Get all files from disk image /device», y luego realizar el trabajo inverso y meterlos en la imagen spectrum.vhd con la opción «Put file(s) in binary mode (no header)».

Por algún motivo desconocido el programa StrowSaw (o el 3E) es incapaz de ver el contenido de la partición «P», por lo que es necesario copiar con anterioridad desde el BASIC del +3e los archivos a otra partición (por ejemplo la «123») antes de extraerlos. Luego también al meterlos en la nueva imagen copiarlos en la partición «123» y luego desde el BASIC copiarlos a la partición «P» y borrarlos de la «123».

Por último, como la imagen spectrum.vhd es realmente una imagen raw, también la he copiado a una tarjeta SD de 1GB que tengo por ahí con el comando linux

 

dd if=spectrum.vhd of=/dev/sdX  (donde X es la unidad donde tengo la tajeta SD de 1 GB)

y luego

sync

para estar seguro que la cache de escritura se ha escrito completamente en la SD.

A continuación la he usado en mi ZX-Uno y funciona genial. Se nota un montón como usa el Turbo para que todo vaya más fluido (en la MiST se puede pulsar F5 para que vaya a 7 MHz pero acordándose luego de pulsar F4 para volver a la velocidad normal si cargamos un juego).

 

Actualización: 11.01.2019:  Ha salido la versión 2.1 con importantes mejoras:

  • Aumento del número de carpetas disponibles que pasa de 32 a 60
  • La ventana de Juegos contiene dos carpetas nuevas: MODDING y OTROS.
  • La carpeta Modernos aumenta su capacidad y ahora funciona del mismo modo que la carpeta de Clásicos, con subcarpetas para organizar las entradas por orden alfabético.
  • Solucionado error en la lectura de unidades por el cual se produce un fallo en el programa al intentar visualizar el contenido de una partición con más de 221 ficheros. Ahora se puede visualizar el número máximo de ficheros que +3IDEDOS permite que contenga una carpeta (512 ficheros).
  • Eliminado el acceso a la unidad RAM que se substituye por la unidad de disco A.
  • Nueva coleccion de software preinstalado, unos 2200 titulos bien pasados con su pantalla de carga y en muchos casos con sus
    «cheats», listos para ser ejecutados.
  • Retocados todos los gráficos de los iconos para mejorar su aspecto.
Publicado en Mistica FPGA16 | Etiquetado , , , | Deja un comentario