DivUSB, un interfaz USB para el Spectrum
Moderador: Fundadores
- Scooter
- 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
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
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)
- Kyp
- 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
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.
- wilco2009
- 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
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.
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.
Douglas Adams. Guía del autoestopista galáctico.
- Kyp
- 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
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?
- wilco2009
- 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
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).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?
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
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.
Douglas Adams. Guía del autoestopista galáctico.
- Kyp
- 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
Ufff, demasiada información de golpe. Casi mejor primero acabo lo que estoy haciendo y luego hablamos de como portarlo al CPC
- Kyp
- 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
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
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
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
- sinclair200
- 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
Recemos para que no se queme nada....jajajajaja
Z80 INSIDE.........
WANTED:…………. CPC 6128 british
- flopping
- 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
¿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
(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
- Scooter
- 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
Es un firm cosecha propia para leer pendrives usando el aparatico de los chinos.
Enviado desde mi fnac 5.7 mediante Tapatalk
Enviado desde mi fnac 5.7 mediante Tapatalk
Solo se que no se nada (algunos no saben eso)