Core C16 ver. R1

Responder
Avatar de Usuario
Quest
Mensajes: 900
Registrado: 27 Sep 2015, 00:20

Core C16 ver. R1

Mensaje por Quest » 04 Mar 2017, 14:42

Core C16 ver. R1 (Release 1)

Bueno, pues ya está aquí :) El core de C16 / Plus4 en su primera versión (R1 o Release 1) para el ZX-UNO.
Está basado en el proyecto FPGATED de István Hegedus (https://hackaday.io/project/11460-fpgated), adaptado para el ZX-UNO y con algunos pequeños cambios/mejoras, como la lectura de cassetes reales por audio, switch de vídeo, etc. Empecé con el tema hace no mucho, poniendo algunos progresos aquí: viewtopic.php?f=21&t=1228

Qué implementa esta primera versión:

- C16 PAL ampliado a 64K de RAM (De momento sólo PAL)
- Implementación de disquetera 1541, redirigida a SD y en RAW). Sólo lectura (igual que en C64, compatibile entre sí, con imágenes .D64)
- Obviamente, El chip TED de FPGATED (Que proporciona a todo el sistema de gráficos, sonido, lectura de teclado, timers, etc...
- Soporte de joystick, tanto real (conector DB9) como emulado en teclado numérico. Mapeable a puerto 0 o 1 con F11
- Switch VGA 50Hz / RGB-Compuesto (Tecla Bloqu Desp. / Scroll Lock).
- Scanlines en modo VGA (tecla "-" del teclado numérico)
- Soporte para carga de cassettes reales por audio mediante el puerto de jack EAR del ZX-UNO.
- Cambio de polaridad de la señal de entrada de EAR mediante tecla "+" del teclado numérico.
- ROM Kernal PAL -5 modificada para evitar la espera de pulsación tras la cabecera en las cargas de cassette.
- Mezcla de audio de salida compuesta por: feedback de audio del cassete (más bajo) y audio principal del TED.
- Reset de la máquina con F12
- Master Reset del ZX-UNO como siempre, con Ctrl+Alt+Backspace
- LED: Testigo de lectura de la 1541 y también del estado de la polaridad de EAR.

Todavía hay cosas que pulir, pero para una primera versión está bastante bien :)
Todo el software para Plus/4 que he probado (64K) ha funcionado.

En cuanto tenga un poco organizados los fuentes y demás, lo subiré todo al SVN. De momento adjunto la descarga del binario al final del post.

Algunas notas sobre el uso del teclado y el mapeado:
  • Para el control de discos en la SD, como en el C64:
    -- Tecla Insert = ir al primer disco
    -- Teclas Re.Pag y Av.Pag (PgUp & PgDn) = Ir al siguiente disco / ir al disco anterior
    -- Combinaciones Ctrl+Re.Pag y Ctrl+Av.Pag (Ctrl+PgUp & Ctrl+PgDn) = Avanzar +10 discos / Retroceder -10 discos
  • Otras funciones:
    -- Tecla F11: Cambiar el joystick de puerto. De momento sólo 2 opciones. Se harán más más adelante):
    ** Por defecto (sin pulsación de F11): Joystick real y emulado en puerto 0
    ** Con una pulsación de F11: Joystick real y emulado en puerto 1

    -- Tecla F12: Reset del Commodore. De momento resetea y limpia la memoria. Tras algunos juegos, no resetea bien de momento. Me gustaría hablar con el autor original del FPGATED para ver cómo podemos resetear el TED porque ahora mismo no tiene ningúna manera de hacerlo (no hay ninguna señal de entrada para ello y entiendo que los registros y demás siguen en el estado anterior).
    -- Tecla Bloq.Num (NumLock): mapeada a la tecla HELP (F4).
    -- Teclas F4, F5, F6 y F7 mapeadas a sus correspondientes en el teclado PS/2, emulando SHIFT+F1,F2,F3,HELP
    -- Tecla Bloq.Despl. (Scroll Lock): Cambia entre modos de vídeo VGA 50Hz / RGB-Compuesto (PAL)
    -- Tecla "-" del teclado numérico: Activa/Desactiva scanlines en modo VGA
  • Respecto al mapeado:
    -- Esc es Esc :)
    -- TAB = RUN/STOP
    -- Win izquierda = Commodore
  • Trucos o atajos en el Basic 3.5:
    -- para listar el directorio del disco, pulsar F3 simplemente. O bien teclear DIRECTORY
    -- Para cargar rápidamente el primer fichero PRG del disco: Shift+TAB
    -- Carga de cassetes: Teclear simplemente LOAD y Enter.
--------------

Acerca de los cassetes:

Para convertir a WAV o reproducir los TAPs, no vale cualquier programa. Lo mejor es usar Audiotap (http://wav-prg.sourceforge.net/), que soporta el formato del C16. Nota: si en vez de TAPs quieres pasar PRGs a WAV, y vas a usar wavprg, por algún motivo el wav que genera wavprg se para en READY cuando termina el bloque de carga estándar. Para solucionarlo, una vez salga eso, se pausa la reproducción y tecleamos RUN, luego ya podemos reanudar la reproducción.

Tenéis una colección ENORME tanto de cassetes como de PRGs y discos en ARchive: https://archive.org/details/Commodore_C ... 2012_04_23

Para más comodidad en las cargas he parcheado el Kernal para que no espere la pulsación de C= tras la carga de la cabecera (lo hacía durante 8 segundos, arruinando la carga si no pulsabas). Me costó un poco entender el desensamblado, pero encontré en $EA01 del mapa en rom la rutina de lectura de la mencionada tecla.


Acerca de los discos .D64:

Igual que con el C64, podemos crear nuestros propios .D64 para crear la imagen RAW de la SD. Como apenas había discos para el C16, lo mejor es coger un buen puñado de PRGs y meter los que quepan en discos .D64 con el fabuloso DirMaster 3.1.1 (http://style64.org/release/dirmaster-v3.1.1-style). Expliqué un poco el funcionamiento aquí: viewtopic.php?f=55&t=1223#p14165. Pero como FileBrowser en este caso debemos utilizar el compatible con el C16 (FB16) que os pongo aquí:
fb16.zip
(1.8 KiB) Descargado 350 veces
Decir que si vais a usar los cores de C64 y C16 de forma habitual, podéis utilizar la misma SD para ambos, el formato es el mismo y los D64 los leen igual. Simplemente pon unos .d64 con programas/juegos de C64 y otros con software de C16 y listo.

-----------

Descarga del core C16 ver. R1:

https://mega.nz/#!8YUSULrS!rddsfzfOOfXF ... YijGNrIZj4

Descarga de imagen RAW para la SD de ejemplo con un par de discos, el generador y algunos TAPs:

https://mega.nz/#!sIVEXJZR!j8fDEiVZkbv- ... 1rKbHXFUyU

------------

Algunas fotos (ya puestas en el hilo de cores en preparación):
Adjuntos
c16_zxuno_64.jpg
c16_zxuno_1541.jpg
c16_cassette_loading.jpg
c16_cassette_loaded.jpg
http://www.zxuno.com
ZX-Uno · Clon de ordenador ZX Spectrum basado en FPGA

Avatar de Usuario
bakoulis
Mensajes: 187
Registrado: 12 Sep 2016, 10:36

Re: Core C16 ver. R1

Mensaje por bakoulis » 04 Mar 2017, 15:52

:gracias!:
:maestro: :maestro: :maestro:

Vanfanel
Mensajes: 276
Registrado: 16 Oct 2016, 15:50

Re: Core C16 ver. R1

Mensaje por Vanfanel » 04 Mar 2017, 18:38

@Quest: Muchas gracias por este interesantísimo core... curiosa máquina el C16 este, parece que mueve algunos juegos mejor que el C64!

Ya he encontrado un juego incompatible con el core: El "Majesty Of Sprites", que está en descarga legal gratuita aquí:

http://plus4world.powweb.com/software/M ... Of_Sprites

He probado las distintas versiones que hay para descargar y nada.
Se queda cargando en la pantalla del logo de los programadores.
Parece uno de los juegos más potentes de la plataforma.

Tampoco va la demo "Metamerism", que ganó el Evoke 2012. Pantallazo a negro tras la carga:

http://www.pouet.net/prod.php?which=59690

Avatar de Usuario
Hodor
Mensajes: 19
Registrado: 25 Nov 2016, 11:00

Re: Core C16 ver. R1

Mensaje por Hodor » 04 Mar 2017, 20:51

Como sigáis mejorando los cores de Commodore, creo que a este paso más de uno jubilará sus paneras :D

Mil gracias por seguir ilusionando con esta pequeña pero enorme máquina llamada ZX-Uno.

Un saludo.

Responder