MultiCard MCv1.6 by ROLO multisistema

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1430 veces
Agradecimiento recibido: 592 veces

MultiCard MCv1.6 by ROLO multisistema

Mensajepor minter » 05 Oct 2017 11:55

Buenas,

El morador de la crypta nos ha comentado por lo bajinis a pser1 y a mí, un cartucho para DRAGON / COCO, que dispone de adaptadores para otros sistemas.
Después de pegar un vistazo al sistema, paso a explicar un poco lo que representa y un poco como creo que funciona.
Al no disponer de esquemas ni nada que se le parezca, esto va a ser un poco hipotético, intentando acercarme un poco a la realidad.
Con permiso no explicito de Pere, me adelanto con un poco de contenido, para que él o quien quiera, pueda completar la información.
Fuentes: World of Dragon
AtariAge

Comenzamos:
DragonMCv1_6_free400.jpg
Multi Card by ROLO
DragonMCv1_6_free400.jpg (43.39 KiB) Visto 691 veces


El Multicart de Rolo es una cartucho para Dragon 32-64 y Coco 2 que permite lanzar programas grabados en la ROM. Con un rango de direccionamiento desde $c0000 hasta $ff00.
Es decir, 16Kbs de Juegos.
MCinAtariShell01.JPG
MC Dragon 1
MCinAtariShell01.JPG (47.52 KiB) Visto 692 veces

MCinAtariShell02.JPG
MC Dragón 2
MCinAtariShell02.JPG (28.93 KiB) Visto 692 veces


La tarjeta viene con una ROM 27c4001, que permite almacenar 64 roms de 8kbs. Tambien se pueden usar roms de 16kbs.
Unicamente hay que seleccionar un slot de memoria desde 0 hasta 63 y resetear el equipo para que se lance la rom.
La ventaja de un cartucho... Bueno, pues cero problemas en cables, no hace falta una fuente de alimentación externa, no hay tarjetas controladoras.

La tarjeta Dragon/Coco puede ser usada en otros sistemas, mediante el uso de adaptadores.
Actualmente hay disponibles tres adaptadores.
Carts.JPG
MC con adaptador
Carts.JPG (47.34 KiB) Visto 692 veces

-VECTREX
-Odyssey 2 / Phillips G7000/G7200/G7400
-INTERTON ELECTRONIC VC 4000
PlayingSpikeHopping.JPG
MC en Vextrex
PlayingSpikeHopping.JPG (36.6 KiB) Visto 692 veces

Es decir, te compras el cartucho, un adaptador... y ya tienes para otro sistema.

Después de analizar un poco el circuito y los componentes, me atrevería a decir que aunque no sepamos lo que hay dentro del PIC, no creo que sea relevante para el funcionamiento del cartucho.

Viendo las pistas, el tipo de PIC y lo que tenemos... podría darse el caso que el PIC es únicamente para controlar el Display de 14 segmentos mediante un programa similar al que adjunto que me he encontrado por la red.

PIC16F1827.jpg
PIC 16F1826
PIC16F1827.jpg (28.69 KiB) Visto 692 veces


Inicio de código:

Código: Seleccionar todo

;********************************************************************************
; Filename:     DecoHexa7Seg_tablas_P18F_X5X0                                   *
; Date:         29/10/2015                                                      *
; Version:      01                                                              *
; Author:       Javier Soto PhD.                                                *
; Company:      Escuela Colombiana de Ingenieria Julio Garavito - Grupo SEDA    *
; Description:  Este programa presenta el manejo de tablas. Permite decodificar *
; un dato hexadecimal (entrada) a un display de 7 segmentos (salida).           *
;********************************************************************************
; Este ejemplo se puede adaptar a otros dispositivos de la familia PIC18F
; modificando apropiadamente las siguientes lineas:
    LIST P=18F2520          ;directiva que define el procesador
    #include <P18F2520.INC> ;definicion de variables especificas
;********************************************************************************
;Bits de configuración
    ;Para PIC18F_2420_2520_4420_4520 use las siguientes directivas
    CONFIG  OSC = INTIO67       ;Internal oscillator block, port function on RA6 and RA7
    CONFIG PBADEN = OFF         ;PORTB<4:0> pins are configured as digital I/O on Reset
    ;Para PIC18F_2455_2550_4455_4550 use la siguiente configuración para el OSC interno
    ;CONFIG FOSC = INTOSCIO_EC   ;Internal oscillator, port function on RA6,
                                ;EC used by USB (INTIO)
    ;otras directivas comunes
    CONFIG LVP = OFF            ;Single-Supply ICSP disabled
    CONFIG WDT = OFF            ;WDT disabled (control is placed on the SWDTEN bit)
;********************************************************************************
;Definicion de variables en el bloque de "ACCESS RAM"
;********************************************************************************
hexa_temp   equ     0x000       ;variable temporal para el dato hexadecimal
;********************************************************************************
;Programa
;********************************************************************************
    ORG     0x0000              ;Vector de rieinicialización
    movlw   b'01110010'         ;Registro de control del oscilador:
    movwf   OSCCON,A            ;modo sleep con instruccion SLEEP,
                                ;Fosc=8MHz, bloque de oscilador interno.
    MOVLW   0Fh                 ;Configuración de los canales del módulo A/D
    MOVWF   ADCON1,A            ;como entradas/salidas digitales PORTA y PORTB
    setf    TRISA,A             ;Puerto A de entrada (dato hexadecimal)
    clrf    TRISB,A             ;Puerto B de salida (display 7 segmentos)
ciclo
    movf    PORTA,W,A           ;Leer valor hexa en PORTA(3:0)
    rcall   deco_hexa_7seg      ;llamar rutina decodificación hexa a 7 segmentos
    movwf   LATB,A              ;sacar valor decodificado por puerto B (display)
    bra     ciclo
;********************************************************************************
;SUBRUTINAS
;********************************************************************************
deco_hexa_7seg
    andlw   0x0f                ;enmascarar y almacenar valor en variable hexa_temp
    movwf   hexa_temp,A
    movlw   HIGH tabla_hex7seg  ;asignar posición de la tabla al puntador
    movwf   TBLPTRH,A           ;de tabla, registros: TBLPTRH y TBLPTRL,
    movlw   LOW tabla_hex7seg   ;registro TBLPTRU por defecto en 0
    movwf   TBLPTRL,A           ;TBLPTRU=00h, TBLPTRH=7Fh, TBLPTRL=00h
 
    movf    hexa_temp,W,A       ;sumar el valor de la variable hexa_temp al apuntador
    addwf   TBLPTRL,F,A         ;de tabla, registros: TBLPTRH y TBLPTRL
    bnc     $+4
    incf    TBLPTRH,F,A
 
    tblrd*                      ;leer tabla, el dato leido queda en registro TABLAT
    movf    TABLAT,W,A          ;leer TABLAT, dejar dato decodificado en W
    return
;********************************************************************************
;Tabla decodificador
;********************************************************************************
;   addr program memory |   abcdefgh   |   hexa    |   # en display
;  ------------------------------------------------------------------
;       0x7F00          |   11111100   |   0xFC    |        0
;       0x7F01          |   01100000   |   0x60    |        1
;       0x7F02          |   11011010   |   0xDA    |        2
;       0x7F03          |   11110010   |   0xF2    |        3
;       0x7F04          |   01100110   |   0x66    |        4
;       0x7F05          |   10110110   |   0xB6    |        5
;       0x7F06          |   10111110   |   0xBE    |        6
;       0x7F07          |   11100000   |   0xE0    |        7
;       0x7F08          |   11111110   |   0xFE    |        8
;       0x7F09          |   11110110   |   0xF6    |        9
;       0x7F0A          |   11101110   |   0xEE    |        A
;       0x7F0B          |   00111110   |   0x3E    |        b
;       0x7F0C          |   10011100   |   0x9C    |        C
;       0x7F0D          |   01111010   |   0x7A    |        d
;       0x7F0E          |   10011110   |   0x9E    |        E
;       0x7F0F          |   10001110   |   0x8E    |        F
;********************************************************************************
    org     0x7F00          ;tabla ubicada en la posicion 0x7F00
tabla_hex7seg               ;de la memoria de programa
    DE      0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0 ;datos en posiciones 0x7F00...0x7F07
    DE      0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E ;datos en posiciones 0x7F08...0x7F0F
 
    END                         ; directiva 'fin de programa'

Fin de codigo


Los potes digitales, van conectados a al PIC y también a la EPROM y valen para seleccionar el banco de la ROM
Codificador Hex Bin Pote.jpg
Pote Deco HEX Decimal
Codificador Hex Bin Pote.jpg (20.57 KiB) Visto 692 veces


Por lo que se puede ver en la tabla de verdad del pote, cada posición, es una salida binaria de 4 bits.
Codificador Hex Bin.jpg
Codificación HEX BIN
Codificador Hex Bin.jpg (23.71 KiB) Visto 692 veces



Así que vamos a ver que pasa en la EPROM

Tenemos una EPROM 27C4001 de 4Mbits o 512Kbs (8Kbs x 64 posiciones)
IC-27C4001_l.jpg
EEPROM 27C4001
IC-27C4001_l.jpg (33.81 KiB) Visto 692 veces


Esta memoria disponemos de las patitas desde la A0 a la A18 para direccionar esos 512Kbs (Bus de direcciones).
Y luego disponemos del bus de datos (por donde van los datos), que son las patitas Q0 a Q7 (8bits)

Como el Dragón solo puede direccionar a través de su puerto supongo que 16kbs, pues estarán redireccionadas las conexiones del cartucho a las patillas de la EPROM de la A0 a la A13 (Que forman un total de 16Kbs)
Por cierto... El dragon tiene por su salida del A0 al A15 (16bits)

s_hw dragon port.gif
Puerto del Dragon
s_hw dragon port.gif (70.71 KiB) Visto 692 veces


Sigamos:
Nos sobran desde la A14 a la A18, un total de 5 bits. En verdad deberían de ser 6 bits, para poder elegir esos 64 bancos. Aquí debe de haber un truco con el conmutador de ROMS de 8Kbs y 16Kbs, que debe de deshabilitar la salida A13 del dragón y mandarla al selector.

Esto se trata de saber ordenar las ROMS en el cartucho y seleccionarlo con las señales que nos quedan libres del bus de Direcciones del ordenador para cambiar los bancos de memoria en la EPROM.

Y el Bus de datos... siempre conectado al puerto del ordenador...

Recapitulando:

Una EPROM conectada al puerto del cartucho, en el que podemos elejir un banco de memoria para seleccionar la ROM

Lista de material:

Resistencias (unas cuantas)
Memoria: 27C4001
PIC 16F1826 (1,5€) aunque seguro que existen otras opciones sin necesidad de PIC.
Display 14 segmentos
Dos potes decodificadores HEX Digital
Dos interruptores/selectores. Para selección de tipo de ROM (8kb o 16kb) o Arranque Auto ¿?

Avatar de Usuario
ron
Mensajes: 18114
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 1008 veces
Agradecimiento recibido: 1075 veces

Re: MultiCard MCv1.6 by ROLO multisistema

Mensajepor ron » 05 Oct 2017 12:38

Esto es sacar petroleo !!! pedazo post!!! las gracias por adelantado.

Si, lo vi por encima pero iba muy mal de tiempo y antes que se me olvidase, pues el master del wiki !

Ese minter !!!!

Avatar de Usuario
pser1
Mensajes: 2226
Registrado: 08 Dic 2012 18:34
Agradecido : 302 veces
Agradecimiento recibido: 327 veces

Re: MultiCard MCv1.6 by ROLO multisistema

Mensajepor pser1 » 05 Oct 2017 12:52

Hola,
Yo le compré a rolo sus primeras versiones de este módulo, por aquello de apoyar a la gente que se las ingenia
para crear nuevos gadgets para Dragón.
Usé las dos placas UNA sola vez. La verdad es que el método de seleccionar mediante conmutador giratorio u otro tipo
se hace pesado cuando tienes tantas ROMs dentro del cacharro.
Es un add-on estupendo para quien disponga de un Dragon32, pero para cualquiera que tenga un Dragon64 ... no lo requiere para nada!
Puedes prepararte un disco del tamaño que necesites (180-360-720k) con todas las ROMs, previa conversión a binario añadiendo la
impresicindible cabecera de 9 bytes y lanzar un programa que la cargue en memoria, conmute a modo todo RAM, la recopie a su sitio,
o sea a partir de $C000 y luego la ejecute.
Creo que hace años ya subí por aquí un programa que hace exactamente ésto ...
Si además dispones del CoCo-SDC entonces ya no te cuento, todo dentro de la tarjeta y a vivir!
Y si trabajas con DriveWire, lo mismo, ya que mi DOSPlus5.0 extender incluye el comando "LROM" para cargar y ejecutar cualquier ROM
desde el servidor DW4 ... posibilidades todas las que quieras -thumbup
Ahora estoy haciendo una aplicación para otro gadget Impresionante de CoCo: CoCo-FLASH que contiene 8Mb de FLASHRAM donde caben
algo así como 512 ROMs de 16k cada una! Además contiene una pequeña EEPROM SPI donde quiero guardar el catálogo de lo que está cargado
en la FLASH. Ah, y casi me olvido ... contiene un módulo Orchestra-90CC que funciona perfectamente y me refiero que contiene el hardware,
la ROM ya la grabaréis en la FLASH ... el enlace para chafardearlo es éste:
http://www.go4retro.com/products/cocoflash/
Es un módulo pequeñito y puede pedirse con una caja blanca como las normales de cartuchos CoCo ...
saludos
pere

EDITO: Si lo queréis para otras plataformas como la Vectrex, entonces el módulo de rolo es el módulo adecuado!

Avatar de Usuario
duca750
Mensajes: 1076
Registrado: 19 May 2015 10:52
Ubicación: Olivenza (Badajoz)
Agradecido : 147 veces
Agradecimiento recibido: 36 veces

Re: MultiCard MCv1.6 by ROLO multisistema

Mensajepor duca750 » 05 Oct 2017 13:07

No me he terminado de enterar muy bien... Esto se vende en algún sitio o hay alguna tirada prevista? Por lo poco que he leido/entendido, me gusta el cacharro.
-4mstr4d CPC464(7),472 Y 6128 (2) -sp3zy 16K&48K GOMAS,+2,+2A/2B +3 -cocbm1 64 Y -coam1** -0r1c 1 (2ud) y ATMOS** -m3s3x CANON V20, SPECTRAVIDEO 728,TOSHIBA HX10, PHILIPS VG8020,2 NMS 8250+GOTEK -j4tar1 STFM 800XL -3nt3r 64-ACORN ELECTRON -codrg1 32

Avatar de Usuario
minter
Mensajes: 1982
Registrado: 22 Jul 2014 18:51
Agradecido : 1430 veces
Agradecimiento recibido: 592 veces

Re: MultiCard MCv1.6 by ROLO multisistema

Mensajepor minter » 05 Oct 2017 14:00

Buenas duca750, es un proyecto disponible en atariage y worldofdragon.
Después de comer pongo los enlaces al proyecto.
En un principio, no es una clonación, es solo una documentación sobre un periférico.
Para Vectrex, tienes a Kyp preparando unos cartuchos.
Y para Dragon, como comenta pser1, tienes varias maneras de cargar ROMs en memoria y lanzarlas sin necesidad de cartuchos.
Si ROLO se pusiera a ello, sería capaz de sacar un adaptador de ese mismo cartucho para C64 en un plis plas.
Lo que leído en los foros es que le pedían soporte para tarjeta SD, pero creo que no lo hará. Además eso requiere unq lectura serie y un buffet. a no ser que emplee CF, que esas deben de ser paralelo.
En fin, otro cacharro más para ese equipazo diseñado por un daltónico que es el Dragon.

Avatar de Usuario
duca750
Mensajes: 1076
Registrado: 19 May 2015 10:52
Ubicación: Olivenza (Badajoz)
Agradecido : 147 veces
Agradecimiento recibido: 36 veces

Re: MultiCard MCv1.6 by ROLO multisistema

Mensajepor duca750 » 05 Oct 2017 17:26

minter escribió:Buenas duca750, es un proyecto disponible en atariage y worldofdragon.
Después de comer pongo los enlaces al proyecto.
En un principio, no es una clonación, es solo una documentación sobre un periférico.
Para Vectrex, tienes a Kyp preparando unos cartuchos.
Y para Dragon, como comenta pser1, tienes varias maneras de cargar ROMs en memoria y lanzarlas sin necesidad de cartuchos.
Si ROLO se pusiera a ello, sería capaz de sacar un adaptador de ese mismo cartucho para C64 en un plis plas.
Lo que leído en los foros es que le pedían soporte para tarjeta SD, pero creo que no lo hará. Además eso requiere unq lectura serie y un buffet. a no ser que emplee CF, que esas deben de ser paralelo.
En fin, otro cacharro más para ese equipazo diseñado por un daltónico que es el Dragon.


Lo del diseñador es en serio que era Daltonico? o te refieres al precioso verde de la pantalla? -codrg1

Gracias por la información
-4mstr4d CPC464(7),472 Y 6128 (2) -sp3zy 16K&48K GOMAS,+2,+2A/2B +3 -cocbm1 64 Y -coam1** -0r1c 1 (2ud) y ATMOS** -m3s3x CANON V20, SPECTRAVIDEO 728,TOSHIBA HX10, PHILIPS VG8020,2 NMS 8250+GOTEK -j4tar1 STFM 800XL -3nt3r 64-ACORN ELECTRON -codrg1 32


Volver a “Hardware Dragon”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado