Mensajepor gflorez » 08 Sep 2016 19:22
La memoria mínima es 64k, que además es la memoria de vídeo. esa no puede ser mas pequeña pero tampoco mas grande, porque Nick solo puede acceder a esos 64k especiales, FC, FD, FE y FF(segmentos de 252 a 255). Sin embargo el Z80 también únicamente accede a 64k, aunque con ayuda de DAVE tiene la memoria partida en cuatro trozos de 16k, y puede poner en cada trozo el segmento que quiera, desde el 0 hasta el 255. Si multiplicas 256 segmentos por 16k te salen los 4 megas posibles.
Pero por otro lado, tiene que haber un sistema operativo que arranque el ordenador, y eso es el Exos, que está en los segmentos 0 y 1 como Rom de 32k, en el interior del Enterprise. También alberga el Word Processor, WP. Con una fácil modificación, se pueden poner eproms de 64k, con lo que se puede poner hasta el Basic internamente.
En el cartucho pueden ir hasta 4 segmentos de Rom(posteriormente Zozo ha modificado Exos para que permita Ram y Rom en cualquier segmento), pero usualmente solo va el Basic, que es un solo segmento, 16k.
La ampliación interna de 64k en realidad podría ir, por ejemplo, en una tarjeta de expansión externa, pero dentro del Enterprise hay algo de espacio y es donde la pusieron. Sin embargo, dentro solo hay espacio y conexiones para una única tarjeta.
Como ya he dicho, una tarjeta externa podría poblarse con mas memoria, Ram o Rom, hasta agotar todos los segmentos posibles. Es lo que hace la tarjeta Exdos, que tiene una Rom adicional de 32k. Jltursan ha hackeado el zócalo de la Rom para poder meter una Rom mas grande. Yo mismo, en mi clon Microteam le puse una FlashRom de 512k y otra FlashRam de 512k. Sumado al medio mega de Dram que llevaba, imagínate lo gordo que estaba mi Enterprise... Luego me dio un error ajeno a esa modificación y ahora está en reparación, pero me funcionó un tiempo.
Acceder a toda esa cantidad potencial de memoria es transparente para el usuario, Exos se encarga de todo muy bien.
Y en código máquina es tan sencillo como leer el estado de los puertos Z80 B0h a B3h con la instrucción "in a,(B0h)", almacenar el numero de segmento, poner el del que queremos acceder con "out (B0h),a", manipular el contenido, y volver a poner todo otra vez como estaba con "out (B0h),a.
Como ves, hay 256 posibles segmentos de 16k de memoria Ram o Rom, la única precaución que tiene que tener quien diseñe una ampliación es no usar dos veces el mismo número de segmento.