DivUSB, un interfaz USB para el Spectrum

Cursos, reparaciones, fichas, tutoriales, etc.

Moderador: Fundadores

Avatar de Usuario
Scooter !!Va-de-Retro
Demonio tercer orden
Demonio tercer orden
Mensajes: 969
Registrado: 27 Feb 2014, 11:33
Ubicación: Alicates
Has thanked: 1 time
Been thanked: 12 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Scooter »

Entonces haz el Interface spi por software en un pin cualquiera. Si te pones te pones.
En su día lo hice para el 8052. Cuando descubrí derivados con protocolo en hardware lo abandoné, claro.

Bueno, en serio a veces es interesante. Por ejemplo hice rutinas específicas de multiplicar y dividir números de 16 bits por 10 porque eran mucho más eficientes que las genéricas de 16×16 bits.
Así que si, si se puede, hacerlo todo lo deja mucho más fino.

Enviado desde mi fnac 5.7 mediante Tapatalk
Solo se que no se nada (algunos no saben eso)
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3391
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 29 times
Been thanked: 157 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Kyp »

También hay que tener en cuenta que solo hay 8K para todo el código, que va a funcionar en una ROM, y que algunas rutinas y el stack tienen que estar en posiciones concretas de memoria. No se si un compilador te deja hilar tan fino.
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por wilco2009 »

Realmente sería un puntazo que lo hicierais para Amstrad CPC ya que no hay nada parecido a un divIDE en CPC.

Ahora mismo hay un proyecto en CPCWiki que tiene IDE y cosas por el estilo, pero el tema del software está pero que muy verde.

El hardware, como ya sabéis es sencillo, el escollo de estar cosas es escribir el software.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3391
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 29 times
Been thanked: 157 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Kyp »

No conozco lo suficiente el CPC como para hacer algo. Tu que sabes más de esto... Suponiendo que tengamos clara la parte que lee datos del USB, SPI o IDE... ¿Cómo había que hacer para copiar esos datos a la RAM del CPC? Supongo que ya está preparado y no haría falta capturar accesos a la ROM como en el Spectrum, ¿no?
Avatar de Usuario
wilco2009 !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 8155
Registrado: 01 Abr 2013, 23:47
Ubicación: Valencia
Has thanked: 47 times
Been thanked: 107 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por wilco2009 »

Kyp escribió:No conozco lo suficiente el CPC como para hacer algo. Tu que sabes más de esto... Suponiendo que tengamos clara la parte que lee datos del USB, SPI o IDE... ¿Cómo había que hacer para copiar esos datos a la RAM del CPC? Supongo que ya está preparado y no haría falta capturar accesos a la ROM como en el Spectrum, ¿no?
El tema de la ROM lo tendrías que tratar como una ROMBOX, es decir tendrías que mantener en algún latch la última ROM seleccionada mediante la llamada al puerto DFxxh (o lo que es lo mismo A13=0).

Hay dos posiciones reservadas, la posición 0 (BASIC) y la 7 (AMSDOS). Para que funcione en un 464 debería ir en alguna ROM entre la 1 y la 6, mientras que en un 128 puedes usar hasta la 15.

Dentro de la ROM habría que incluir uno o más comandos RSX para llamar a las utilidades. No sería necesario usar NMI aquí, ya que el tema de la gestión de ROMs es nativo.

Todas las ROMs ocupan el espacio C000h..FFFFh, por lo que en los accesos no es necesario decodificar A14, con A15 es suficiente.

Cuando el periférico detecte un acceso a ROM (A15=1 y /ROMEN=0), siempre que esté seleccionada la ROM que controlael periferico debe poner ROMDIS=HIGH.

Todo esto es a nivel de hardware.

A nivel de software hay que programar una pequeña tabla al principio de la ROM que indica "Nombre del comando RSX" - "Desplazamiento dendro de la ROM del programa a ejecutar", y ahí es donde debería estar el software de gestión.

Un ejemplo de como debe ir programado:

Código: Seleccionar todo

KL_LOG_EXT equ &bcd1

org #4000

INITIALIZE: LD HL,WORK_SPACE ;RSX power-up Routine

LD BC,RSX_TABLE

JP KL_LOG_EXT

WORK_SPACE: DEFS 4 ;Area for Kernel to use

RSX_TABLE: DEFW NAME_TABLE

jp print

jp multiply

jp mem_move

NAME_TABLE:

defb 'PRIN','T'+#80

defb 'MULTIPL','Y'+#80

defb 'MEMMOV','E'+#80

DEFB #00

.print

ret

.multiply

ret

.mem_move

ret
Aquí tienes una guía: http://www.cpctech.org.uk/docs/manual/s968se10.pdf

En cuanto al volcado del snapshot a la memoria RAM no hay problema, tienes todo el direccionamiento para tí como si fuera RAM. El vídeo se sombrea con la ROM en las posiciones C000-FFFFh.
Si quieres acceder a la ROM tienes que tirar del regístro del gateArray (RMR = 100) que activa o desactiva el paginado de la ROM. Aquí tienes info: http://www.grimware.org/doku.php/docume ... am.mapping

A los registros del gatearray se accede mediante el puerto 7F00h, en donde los bits 7-5 corresponden con el registro mientras que los bits bajos son parámetros.
"Aprender a volar es todo un arte. Aunque sólo hay que cogerle el truco. Consiste en tirarse al suelo y fallar".

Douglas Adams. Guía del autoestopista galáctico.
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3391
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 29 times
Been thanked: 157 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Kyp »

Ufff, demasiada información de golpe. Casi mejor primero acabo lo que estoy haciendo y luego hablamos de como portarlo al CPC :)
Avatar de Usuario
Kyp !Sinclair 1
Hermano de Lucifer
Hermano de Lucifer
Mensajes: 3391
Registrado: 30 Sep 2013, 14:54
Ubicación: Madrid
Has thanked: 29 times
Been thanked: 157 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Kyp »

Bueno, ya tengo una primera versión 'usable' del firmware.

Por el momento solo funciona en Spectrums de 48K y al resetear simplemente muestra una lista con los SNAs que haya en el directorio raíz del disco y permite seleccionar uno y cargarlo. No hay límite en cuantos se pueden meter en el disco pero de momento solo muestra los primeros 20.

Para probar el firmware hace falta un emulador con soporte de DivIDE (Spin por ejemplo). Hay que configurarlo así:
- "Hardware/Peripheals": marcar DivIDE.
- "Hardware/ROM images": En 'DivIDE Firmware' seleccionar la ruta donde está el archivo del firmware.
- "Files/Hard Disk": Marcar 'Unit 0 Enabled' y seleccionar la ruta donde está la imagen del disco.
- Guardar y reiniciar.

Para crear la imagen del disco hay que usar la aplicación "DriveImage" y hacer lo siguiente:
- Descargar aquí: http://velesoft.speccy.cz/zx/divide/sof ... putnik.zip
- Preparar una tarjeta/disco/pendrive/etc de forma que no tenga tabla de particiones y esté formateada en FAT32. Este es el formato 'normal' que le da Windows a una tarjeta CF pero es justo lo contrario que necesitaría el FATware o el esxDOS.
- IMPORTANTE: Arrancar la aplicación como administrador.
- En la lista 'Detected drives' seleccionar la unidad que se desee leer.
- En 'Image Format' seleccionar HDF.
- Click en 'Read from drive', pedirá un nombre para guardar la imagen.
- Tras un buen rato dependiendo del tamaño del disco tendremos lista la imagen para usar con el emulador.

Si alguien se anima a probarlo en el hardware real que me lo diga y le paso el archivo para flashear. No vale el archivo tal cual, hay que 'cocinarlo' :|

Tened en cuenta que es una versión muy, muy, MUY preliminar y seguro que tiene algún bug. No creo que se rompa nada al usarla (sobre todo en el emulador) pero no me hago responsable si acaba ardiendo algún Spectrum :)) :)) :))
FAT32ware 0.0.011.zip
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
Avatar de Usuario
sinclair200 España
Moderador
Moderador
Mensajes: 9997
Registrado: 28 Mar 2014, 18:25
Ubicación: Madrid
Has thanked: 8 times
Been thanked: 177 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por sinclair200 »

Recemos para que no se queme nada....jajajajaja
Imagen
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
Avatar de Usuario
flopping
Fundador
Fundador
Mensajes: 9973
Registrado: 29 Mar 2013, 15:26
Ubicación: Valencia
Been thanked: 124 times
Contactar:

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por flopping »

¿Pero esto no era un interface para conectar un USB al spectrum?, por lo que leo, es un firm de cosecha propia para el divide, ¿no? o por lo menos eso entiendo, supongo que esto luego sera aplicable al interface requerido, ¿es asi?, salu2.
No me hago responsable de mis post pues estan escritos bajo la influencia del alcohol y drogas psicotropicas, por la esquizofrenia paranoide.
(C) 1982-2024, 42 años de ZX Spectrum.
http://www.va-de-retro.com/ un foro "diferente".

Mi juego, que puedes descargar desde aqui
Avatar de Usuario
Scooter !!Va-de-Retro
Demonio tercer orden
Demonio tercer orden
Mensajes: 969
Registrado: 27 Feb 2014, 11:33
Ubicación: Alicates
Has thanked: 1 time
Been thanked: 12 times

Re: DivUSB, un interfaz USB para el Spectrum

Mensaje por Scooter »

Es un firm cosecha propia para leer pendrives usando el aparatico de los chinos.



Enviado desde mi fnac 5.7 mediante Tapatalk
Solo se que no se nada (algunos no saben eso)
Responder

Volver a “Cursos y Tutoriales”