Ampliación de Memoria para DRAGON - REABIERTO!

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 08 Sep 2017 12:49

Último mensaje de la página anterior:

@wilco2009
muchas gracias por la paciencia en hacer esta clarísima explicación - guía para absolutamente novatos -hk -drinks
Trataré de experimentar, como dije, a lo largo de este fin de semana!
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 08 Sep 2017 17:35

mal lo llevaría si tuviera que ganarme la vida con esta maldita águila ;-)
El esquema de la revista es muy simple porqué al autor, muy hábilmente ha movido de sitio los pines de los circuitos
para facilitar el conexionado entre ellos.
Como ejercicio, yo los he dejado tal cual vienen en las librerías y esto ha sido el resultado :-(
saludos
pere
Eagle - MMU Mark I parte 1.jpg
Eagle - MMU Mark I parte 1.jpg (34.52 KiB) Visto 1549 veces

Eagle - MMU Mark I parte 1 reducido.jpg
Eagle - MMU Mark I parte 1 reducido.jpg (36.74 KiB) Visto 1879 veces

Pd Ahora me dedicaré a la lectura del artículo sobre el circuito (ya será la tercera o cuarta vez que lo haga desde 2013) para volver a
pillar la idea básica del circuito

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 08 Sep 2017 22:21

Hola,
estoy leyendo esta parte del MMU mark 1 que, a pesar de lo que he dicho antes, NUNCA me lo había leído,
siempre había empezado en el mark 2 ...
He visto que en el tercer artículo se menciona la existencia de un cuarto, así que lo he buscado y lo subo
para completar la información.
De momento se me hace bastante lioso, creo que entiendo los principios en que se basa, pero el montaje
y las explicaciones referente a las interrupciones 'duelen'
saludos
pere
1988 01 Issue 41 - MMU Parte IV.zip
(858.17 KiB) Descargado 118 veces

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 08 Sep 2017 23:18

espero que esta sea la última actualización de este bendito mark 1
He encontrado un trozo de texto con correcciones a errores detectados por el autor a posteriori de su publicación
saludos
pere
1988 05 - Issue 45 - MMU Errata.zip
(1.46 MiB) Descargado 108 veces

Avatar de Usuario
duca750
Mensajes: 2160
Registrado: 19 May 2015 10:52
Ubicación: Olivenza (Badajoz)
Agradecido : 775 veces
Agradecimiento recibido: 275 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor duca750 » 09 Sep 2017 21:34

pser1 escribió:
duca750 escribió:He visto que parece para ampliacion como comentas de 128k y 256k. Existe algún tuto para ampliar de 32k a 64k? Gracias.

Efecticamente, quizás también funcionaría con un Dragón 32, pero habría que estudiar antes su comportamiento a fondo.
Te adjunto un link a una página que habla de pasar de 32 a 64k y un pdf con algo parecido. Suerte!
http://archive.worldofdragon.org/index. ... troduction.
saludos
pere
Dragon_32k_to_64k_Upgrade_Guide.zip
Pd hay que mirar que tipo de circuitos de memoria tiene instalado el Dragón 32 ya que hacia los finales de su producción
se rumoreaba que se estaban empleando chips de 64k (half good). No tengo claro el porqué de este calificativo, pero uno
de mis Dragones 32 tiene estos chips y con una sencillísima modificación se convirtió en un Dragón 64, sin el puerto serie
ni el modo 64k, pero permite pasar a MAPA 1 y por supuesto trabajar con OS-9 y parecidos ...

Gracias Pere. Saludos.
-4mstr4d CPC464,472,6128 -sp3zy 16K,48K,+2,+2A/2B +3 -cocbm1 64 Y -coam1** -0r1c 1 y ATMOS** -m3s3x CAN.V20, Goldstar, Sony HB10,20,55,75,101,201,501 SPECTRAVIDEO 728,TOS HX10, VG8010,8020,NMS 8250 -j4tar1 STFM 800XL -3nt3r 64-A ELECTRON -codrg132 y 64

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 10 Sep 2017 20:12

Intento de auto-explicarme como funciona el circuito ...
Está pensado para poder 'mapear' bloques de 4K de la memoria añadida (256k) por tanto 64 bloques, sobre bloques de igual
tamaño definidos en el área de 64k que puede direccionar el 6809, o sea 16 'slots' (por poner otro nombre)

Para manejar bloques mínimos de 4K, se necesitan 12 bits de los 16 del bus de direcciones así que el MMU utiliza los cuatro bits restantes
(los mas altos) que pueden tomar 16 valores diferentes (slots) como código de acceso a las SRAMs que guardarán la dirección real en la
memoria remapeada. Para llegar a 256k hacen falta 6 bits, por lo que utilizando 8 bits podemos remapear ni mas ni menos que 1 Mega!
La dirección física estará formada por:
bit 19 hasta bit 12 (8 bits = número de página de 4k) - los suministran las SRAMs
bit 11 hasta bit 0 (12 bits = dirección dentro del bloque de 4 k), de la CPU

Cabe destacar que el módulo se inserta en el zócalo de la CPU y que la CPU que se montará en ella pasa al zócalo directamente todos
sus pines, menos las direcciones A12-A15 que son obtenidas desde el nuevo módulo (A'12-A'15)
El primer detalle es que cuando Dragón arranque ha de hacerlo con SUS 64k, de forma que el multiplexor IC1 pasará a la salida las
entradas 'A' o sea las direcciones 12-15 originales. Además los bits mas altos pasan a cero por las puertas AND de IC5.
Esto lo garantiza el hecho de que el pin 1 de IC1 esté a cero (sel1). En esta situación el Gestor está desactivado.
Estando así, el otro multiplexor IC2 también pasará a la salida las entradas 'A', ya que su pin 1 (sel2) está a cero también. Son los cuatro
bits bajos del bus de direcciones (A0-A3) Estas salidas determinan la dirección de memoria SRAM seleccionada en los dos chips a la
vez (IC3-IC4). De esta forma, el valor que aparezca en el bus de datos, se guardará en las SRAM.
CUANDO la entrada /WE habilite la escritura. Los cuatro bits altos en IC4, los bajos en IC3. Hay que tener en cuenta que las SRAM
elegidas (S189 o LS219) se comportan de forma diferente. La S189 tiene las salidas invertidas así que en SU caso habrá que guardar
en la SRAM el valor complementario al necesario para formar la dirección deseada, o sea 255-Valor.
Hasta aquí el circuito del segundo artículo parece claro ...
saludos
pere

Pd Se agradecerán comentarios respecto a esta parte ...

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 10 Sep 2017 20:17

Y esta es la segunda parte ...
Para activar el Gestor, basta con poner a uno los pines 1 de los multiplexores, de esta forma IC2 y las ANDs enviarán las direcciones
recibidas de los chips SRAM. En función de valor que llegue de la CPU en A12-A15 que ahora aparecerán a la salida de IC2,
las SRAM pondrán el valor que tienen guardado en sus salidas.

Una cosa 'especial' es el registro de desplazamiento de 8 bits (IC7) que, cuando recibe un impulso en su patilla 1 (serial load) procedente
de /fuseload, transfiere las entradas paralelo a los registros internos, todos a cero menos el último a 1. A partir de este momento, cada
impulso de reloj va sacando ceros (/Q=1) hasta que llega el 1 produciendo /Q=0, esto fuerza STATE=1 y NSTATE=0, con lo que el
sistema queda habilitado.

Me ha fintado el motivo por el que en el esquema del tercer artículo, la puerta NAND de cuatro entradas, recibe las entradas A1 y A3 ...
El artículo comenta que los cambios de estado se harán mediante interrupciones y que para evitar que TODAS actúen, decidió usar
solamente RESET y SWI (una hard y otra soft)
Cuando se produce una interrupción, la CPU pone a uno la señal BS (bus status) y luego accede a la zona de vectores de interrupción
que está desde FFF2 hasta FFFF, siendo éstos:
SW3 = $FFF2-3 => 0010 - Esto son los últimos 4 bits
SW2 = $FFF4-5 => 0100
FIRQ = $FFF6-7 => 0110
IRQ = $FFF8-9 => 1000
SWI = $FFFa-b => 1010 **
NMI = $FFFc-d => 1110 **
RESET = $FFFE-F => 1110 **
Aquí se ve que los bits 1 y 3 SOLAMENTE están a UNO a la vez para RESET, SWI y NMI pero como el NMI solo lo genera el sistema de discos al leer/grabar sectores, pues nos quedan los dos que pretendía el autor!
Así que cualquiera de ellos producirá un corto impulso a cero en la salida de IC6 coincidiendo con el semiperíodo positivo del reloj.
Este cero fuerza un 1 en NSTATE y un 0 en STATE, deshabilitando el gestor de memoria.

Lo que no acierto a entender que pintan ahí son las dos puertas OR antes de la NAND de 4 entradas.
Cada una tiene un pin de dirección (A1-A3) y por otro lado la señal de "iset". No veo que efecto pueden causar estas señales si no coinciden
con una interrupción, en cuyo caso ya no hacen falta pues hemos visto que A1-A3 estarán a uno garantizando la deshabilitación del sistema
Hasta aquí el circuito del tercer artículo que, salvo las puertas OR, parece claro también

saludos
pere

Pd de nuevo se agradecerán comentarios, sobre todo referidos a las dos puertas OR de marras.

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor minter » 10 Sep 2017 21:06

bufferss? drivers?

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 11 Sep 2017 00:24

Parte tercera y ¿Última?
El cuarto artículo nos describe el decodificador, necesario para acotar un margen de direcciones a cada posible acción:
- La puerta NAND de 8 entradas recoge los 8 bits de direcciones correspondientes a $FFnn (bits 8-15)
- La puerta NAND de 4 entradas contiene el bit 7 de direcciones
- Finalmente el decoder de 3 a 8 utiliza como selectores los bits 4-5-6 de direcciones, por lo tanto las posibilidades que
se nos ofrecen son, como indica el autor en el texto:
- 1111 1111 1000 ---- $FF80 hasta $FF8F - señal WE - write enable para las SRAMs
- 1111 1111 1001 ---- $FF90 hasta $FF9F - fuseload - para habilitar el gestor de memoria (MMU)
- 1111 1111 1010 ---- $FFA0 hasta $FFAF - ireset - para deshabilitarlo (investigar como)
- 1111 1111 1011 ---- $FFB0 hasta $FFBF - iset - para habilitarlo (investigar como)
El decodificador tiene tres pines para habilitarlo, dos deben estar a 0 y uno a 1
G1 - recibe el reloj de la CPU
/G2A - recibe la señal de detección de dirección $FFxx
/G2B - recibe /(NSTATE AND Q AND bit7) garantiza que los cambios SOLO se hacen con el gestor deshabilitado.
El reloj en cuadratura reduce la acción a la primera mitad del semiperíodo de reloj E
Finalmente, el multiplexor IC2 estará controlado por una puerta OR de IC8. Sus entradas son ((FFxx OR R/!W) OR STATE)
así que si está DEShabilitado el gestor AND la instrucción en curso es una Escritura AND se ha decodificado una dirección en el
rango $FFxx, IC2 estará pasando a la salida los cuatro bits mas bajos de direccion, para seleccionar la celdas SRAM a modificar.

El único escollo aquí es averiguar la utilidad REAL de las señales 'iset', 'ireset' que van a parar a las dos puertas OR que en el
mensaje anterior ya dije que NO veía nada clara su utilidad (?)
Así que agradeceré cualquier idea con respecto a esta parte ... u otras!
Y con esto se acabó la disección del Gestor de Memoria Mark I de Bob Hall (Robert W Hall)
saludos
pere

Avatar de Usuario
minter
Mensajes: 4826
Registrado: 22 Jul 2014 18:51
Agradecido : 6762 veces
Agradecimiento recibido: 2602 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor minter » 11 Sep 2017 09:04

pser1 escribió:El único escollo aquí es averiguar la utilidad REAL de las señales 'iset', 'ireset' que van a parar a las dos puertas OR que en el
mensaje anterior ya dije que NO veía nada clara su utilidad (?)
Así que agradeceré cualquier idea con respecto a esta parte ... u otras!


Por lo que llego a entender del texto, es que esa bascula de ORs es para seleccionar como funcionar, si por interrupciones de hard o mediante el reset e interrupciones por soft.

Al menos es lo que llego a entender del parrafo 4 de la parte 3.
The two direfents modes of operation (switching on all interrups or on reset + swi only) are controlled by the setting of the second flip-flop (rest of ic11)


¿Y de donde saca esto?

Pues por lo que comenta al princio de la parte 4 del articulo.
The fuse refister and the interrupts flip-flops appear somewhere sensible in the memory map. My solution has been to make them appear between $FF80 and $FFBF, where there os a large hole in the SAM-Chip memory map.


De lo que deduzco que aprovecha una zona de memoria que no se usa del SAM para controlar las interrupciones.

Por lo poco que he leido... ¿Hace fata cargar un soft especifico para aprovechar esta ampliación de memoria para que acceda a los bancos?

En la linea 60 del listado en Basic... parece que lanza el control de la ampliación.

¿Y eso donde se enchufa? -shock

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 11 Sep 2017 10:32

minter escribió:
pser1 escribió:El único escollo aquí es averiguar la utilidad REAL de las señales 'iset', 'ireset' que van a parar a las dos puertas OR que en el
mensaje anterior ya dije que NO veía nada clara su utilidad (?)
Así que agradeceré cualquier idea con respecto a esta parte ... u otras!

Por lo que llego a entender del texto, es que esa bascula de ORs es para seleccionar como funcionar, si por interrupciones de hard o mediante el reset e interrupciones por soft.
Al menos es lo que llego a entender del parrafo 4 de la parte 3.
The two direfents modes of operation (switching on all interrups or on reset + swi only) are controlled by the setting of the second flip-flop (rest of ic11)

Correcto!, Lo leí pero no lo tuve en cuenta ya que en el texto se empeña en decir que prefiere que solamente actuen RESET y SWI
Me parece superfluo, pero es cierto que "iset" permite que CUALQUIER interrupción deshabilite el gestor, "ireset" solo permite las antes mencionadas.
Con esta explicación quedan resueltas las dos dudas anteriores!
muchas gracias!
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 11 Sep 2017 10:55

minter escribió:¿Y de donde saca esto?
Pues por lo que comenta al princio de la parte 4 del articulo.
The fuse refister and the interrupts flip-flops appear somewhere sensible in the memory map. My solution has been to make them appear between $FF80 and $FFBF, where there os a large hole in the SAM-Chip memory map.
De lo que deduzco que aprovecha una zona de memoria que no se usa del SAM para controlar las interrupciones.
Por lo poco que he leido... ¿Hace fata cargar un soft especifico para aprovechar esta ampliación de memoria para que acceda a los bancos?
En la linea 60 del listado en Basic... parece que lanza el control de la ampliación.
¿Y eso donde se enchufa? -shock

Vayamos por partes, gracias al DECODIFICADOR de la última parte, se garantiza que cualquier POKE&Hxxxx o bien STA $xxxx haga lo siguiente:
- desde $FF80 hasta $FF8F - señal WE - permitir Escritura en las SRAMs
- desde $FF90 hasta $FF9F - fuseload - para habilitar el gestor de memoria (MMU)
- desde $FFA0 hasta $FFAF - ireset - para permitir SOLO Reset y SWI
- desde $FFB0 hasta $FFBF - iset - para permitir TODAS las interrupciones
- Está claro que este hardware requiere controladores software para ser usado, por ejemplo en OS-9 y NitrOS-9
Para utilizarlo desde el DOS o simplemente en BASIC, es suficiente con ejecutar los POKES a las direcciones adecuadas.
En el listado Basic que el autor incluye, empieza por definirse una zona (2 bytes) en la que pone la rutina de Deshabilitación
compuesta por dos opcodes: SWI (que produce la deshabilitación y RTS para salir
Además pone la instrucción RTI en el 'hook' para la interrupción SWI ($106-$108), de esta forma al ser llamada NO hace nada
y la CPU no pierde el tiempo.
El POKE en &Hffa0 como indica sirve para permitir solamente Reset y SWI
El bucle FOR que sigue hace que se guarden en las SRAM los valores del 1 al 15
Finalmente el POKE&HFF90 envia el impulso 'fuseload' que activa (habilita) el gestor de memoria.
A partir de este momento cuando la CPU/SAM quieran acceder a direcciones de memoria, las SRAM suministrarán
la parte alta de la dirección (A'12-A'15) pero en realidad devolverán el mismo valor que la solicitada (A12-A15)
ya que es lo que se ha grabado en el bucle FOR, pero podríamos haber guardado cualquier valor entre 0 y 63 en el
caso de una ampliación de 256k, pudiendo llegar hasta 255 para ampliaciones de 1Mb
- Finalmente, ¿Donde enchufarlo? ... pues al bus de direcciones de cualquier modulo que contenga SRAM ...
Habría que ver si sería muy complicado utilizar el SPInx como ampliación de 512k ... Hay que estudiarlo!
Pero lo próximo va a ser la versión Mark II del MMU, también de Bob Hall
saludos
pere

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 11 Sep 2017 11:44

... pensando en utilizar el SPInx
Bastaría con sacar un conector del Gestor de Memoria con la forma del puerto de expansión de Dragón,
llevando así al módulo 'cliente' el bus de direcciones 'remapeado', el bus de datos y algunas señales de control
por ejemplo R/W, CE, E y tal vez otras ...
saludos
pere

Avatar de Usuario
duca750
Mensajes: 2160
Registrado: 19 May 2015 10:52
Ubicación: Olivenza (Badajoz)
Agradecido : 775 veces
Agradecimiento recibido: 275 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor duca750 » 11 Sep 2017 11:49

pser1 escribió:... pensando en utilizar el SPInx
Bastaría con sacar un conector del Gestor de Memoria con la forma del puerto de expansión de Dragón,
llevando así al módulo 'cliente' el bus de direcciones 'remapeado', el bus de datos y algunas señales de control
por ejemplo R/W, CE, E y tal vez otras ...
saludos
pere

Madre mia, estoy deseando que llegue el día que sepa el 10% de lo que vosotros sabéis. Jajaja.
-4mstr4d CPC464,472,6128 -sp3zy 16K,48K,+2,+2A/2B +3 -cocbm1 64 Y -coam1** -0r1c 1 y ATMOS** -m3s3x CAN.V20, Goldstar, Sony HB10,20,55,75,101,201,501 SPECTRAVIDEO 728,TOS HX10, VG8010,8020,NMS 8250 -j4tar1 STFM 800XL -3nt3r 64-A ELECTRON -codrg132 y 64

Avatar de Usuario
luiscoco
Mensajes: 2414
Registrado: 15 May 2011 04:23
Ubicación: Caracas, Venezuela
Agradecido : 38 veces
Agradecimiento recibido: 59 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor luiscoco » 11 Sep 2017 20:26

-shock -thumbup -drinks

Avatar de Usuario
pser1
Mensajes: 4094
Registrado: 08 Dic 2012 18:34
Agradecido : 1352 veces
Agradecimiento recibido: 1118 veces

Re: Ampliación de Memoria para DRAGON

Mensajepor pser1 » 12 Sep 2017 16:27

Bien, una vez vista la versión 1 del gestor de memoria para Dragón , recapitulemos ...
- Usa bloques de 4k ... para tener compatibilidad con OS-9 necesitamos que sean de 8k
- Puede manejar hasta 1Mb (esto es interesante)
- Gestionaría cualquier módulo con memoria SRAM, como ejemplo indican los dos 'bankers' de 128 y 256k
Creo que nos ha servido para aprender como se pueden gestionar bancos de memoria y remapearlos sobre las 64k accesibles por la CPU
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ahora vayamos a por la versión 2 que se parece a la anterior en ... CASI NADA, :-)
Os adjunto los artículos que la describen, son siete para la versión de 128k. Luego vendrá la de 256K ...
saludos ... y a estudiar!
pere
1988 12 - Ampliar D64 a 128k (Parte 1).zip
(1.71 MiB) Descargado 111 veces

1989 01 - Ampliar D64 a 128k (Parte 2).zip
(1.68 MiB) Descargado 103 veces

1989 02 - Ampliar D64 a 128k (Parte 3).zip
(3.46 MiB) Descargado 63 veces

1989 03 - Ampliar D64 a 128k (Parte 4).zip
(3.04 MiB) Descargado 57 veces

1989 04 - Ampliar D64 a 128k (Parte 5).zip
(1.43 MiB) Descargado 61 veces

1989 05 - Ampliar D64 a 128k (Parte 6).zip
(1.27 MiB) Descargado 58 veces

1989 06 - Ampliar D64 a 128k (Parte 7).zip
(1.19 MiB) Descargado 69 veces

jltursan
Mensajes: 5619
Registrado: 20 Sep 2011 13:59
Ubicación: Madrid
Agradecido : 990 veces
Agradecimiento recibido: 2040 veces
Contactar:

Re: Ampliación de Memoria para DRAGON

Mensajepor jltursan » 12 Sep 2017 17:24

Caray, yo es que de electrónica digital, poco, muy poco. A ver si con tus explicaciones complementando el artículo acabo entendiendo el funcionamiento. Aprendido uno, poco debe diferenciarse de otros aplicables a otras máquinas.

¡Gracias Pere por la dedicación y el esfuerzo de explicarlo tan detalladamente!


Volver a “Hardware Dragon”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 6 invitados