Commodore 128

Commodore 128
Commodore 128 002.jpg
Fabricante Commodore
Tipo Ordenador doméstico
Lanzamiento 1985
Disponible desde 1985 - 1989
Unidades vendidas 4 millones
Sistema operativo Commodore BASIC 7.0
Digital Research CP/M 3.0
CPU MOS 8502 @ 2 MHz Zilog Z80A @ 4 MHz
Memoria 128  KB
Predecesor Commodore 64
[ editar datos en Wikidata]

El ordenador doméstico/ personal Commodore 128 ('C128, CBM 128, C=128) fue la última máquina de 8 bits comercializada por Commodore Business Machines (CBM). Presentada en enero de 1985 en el CES de Las Vegas, apareció tres años después de su predecesor, el exitoso Commodore 64. El diseñador principal del hardware de la C128 fue Bil Herd.

Descripción técnica

El C128 es un sucesor significativamente expandido del C64 y, a diferencia del anterior Plus/4, casi completamente compatible con el C64. Incluye 128 KB de RAM, en dos bancos de 64 KB y una salida de vídeo RGBI de 80 columnas (gestionada por el chip 8563 VDC con 16 KB de RAM de vídeo dedicado), al igual que una caja y un teclado sustancialmente rediseñados, el cual incluía cuatro teclas de cursores (los Commodore anteriores tenían dos, requiriendo pulsar mayúsculas para mover el cursor hacia arriba o a la izquierda), además de las teclas Alt, ayuda, escape, tabulador (no presente en los modelos anteriores) y un teclado numérico. La falta de teclado numérico, tecla Alt y tecla escape en el C64 era un problema con algunas programas de productividad en CP/M cuando se usaban con el cartucho Z80 del C64. Algunas de las teclas añadidas equivalen a las presentes en el teclado de la IBM PC. Mientras que el modo de 40 columnas del C128 duplica el del C64, 1 KB extra de RAM de color esta disponible para los programadores, ya que está multiplexada en la dirección de memoria 1. La fuente de alimentación representa una gran mejora con respecto al diseño poco fiable de la fuente del C64, siendo más grande y equipada con un ventilador de refrigeración y un fusible reemplazable. En lugar de un solo microprocesador 6510 como en el C64, el C128 incorpora un diseño de doble CPU. La primaria, una 8502, es una versión ligeramente mejorada de la 6510, capaz de subir el reloj hasta 2 MHz. La segunda CPU es un Zilog Z80, que se usa para hacer funcionar software CP/M, al igual que para iniciar el modo de selección de sistema operativo durante el arranque. Los dos procesadores no pueden trabajar de manera simultánea, por lo que el C128 no es un sistema multiproceso. El C128 tiene tres modos operativos: modo C128 ( modo nativo), en el que funciona a 1 o 2 MHz con la CPU 8502 y dispone de los modos de texto de 40 y 80 columnas; modo CP/M, que usa el Z80 en modo texto tanto de 40 como de 80 columnas y el modo C64, que es prácticamente compatible al 100% con el anterior ordenador. La selección de estos modos está implementada a través del chip Z80, el cual controla el bus en el arranque inicial y comprueba si está presente algún cartucho C64/C128 y si la tecla Commodore (selector de modo C64) está activa durante el arranque. Basado en lo que encuentra, cambiará al modo de operación apropiado.

El C128D es considerado único debido a que su placa madre soporta cuatro tipos diferentes de RAM:

  • 128 KB de RAM principal;
  • 64 KB de video RAM VDC;
  • 2 K nibbles de RAM de color para el VIC-II;
  • 2 KB de RAM de la disquetera;
  • entre 128 y 512 KB de RAM REU.

Además de 3 procesadores (8502 como principal, Z80 para CP/M y un 6502 para la disquetera) y dos chips de vídeo diferentes (VIC-IIe y VDC).

Modo C128

Mientras las capacidades gráficas y de sonido del C64 eran consideradas generalmente excelentes, los operativos de marketing en la dirección de Commodore estaban preocupados por sostener (si no prolongar) el atractivo de los ordenadores caseros entre los no-programadores. Estos operativos sintieron que el la pantalla de 40 columnas del VIC-II, aunque excelente para juegos, podía ser inadecuada para aplicaciones de productividad como tratamiento de textos. Además, sentían que las nuevas capacidades de sonido y gráficos tendrían un manejo pesado si se controlaban exclusivamente a través de las instrucciones estándar POKE y PEEK, así que se embarcaron en reescribir el BASIC 2.0 para que tuviera instrucciones que reflejaran con más precisión sus capacidades. Además, el aumento de la capacidad de las unidades de disco en los mercados competidores (como las dedicadas a los compatibles PC y los Apple) llevó a los oficiales de alto rango de Commodore a preocuparse por el siguiente paso. Los diseñadores de la C128 tuvieron éxito en resolver la mayoría de esas preocupaciones. Un nuevo chip, el VDC, provee al C128 con una pantalla de 80 columnas compatible con la norma CGA (también llamada RGBI por Red-Green-Blue-Intensity, rojo-verde-azul-intensidad). El nuevo microprocesador 8502 es completamente retrocompatible con el 6510 del C64, pero puede funcionar al doble de velocidad si se desea. Aun así, el chip VIC-II que controla la pantalla de 40 columnas no puede operar a la mayor velocidad de reloj, así que la pantalla de 40 columnas aparece distorsionada en modo FAST. En el modo 80 columnas, el editor toma ventaja de las características del VDC para permitir texto parpadeante y subrayado, activado mediante códigos de escape.[2] Se añadió un botón de reset al sistema. El BASIC 2.0 del C64 fue reemplazado por el BASIC 7.0, que incluye instrucciones diseñadas específicamente para usar las ventajas de la máquina. Un editor de sprites y un monitor de código máquina fueron añadidos posteriormente para beneficio de los programadores . La parte del editor de pantalla del kernel fue mejorada aún más para soportar un sistema de ventanas rudimentario y fue relocalizada en una ROM separada. En modo 80 columnas el editor hace uso de las mejoras del VDC para permitir el parpadeo y subrayado de texto, activado mediante códigos de escape. Un botón de reinicio fue añadido al sistema. Dos nuevas unidades de disco fueron presentadas junto con la C128: la efímera 1570 y la 1571. Más adelante, se presentó la unidad 1581 de 3'5 pulgadas. Todas estas unidades son más fiables que la 1541 y prometían unas mejores prestaciones mediante un modo ráfaga. La unidad 1581 también tiene más RAM en placa que sus predecesores, haciendo posible abrir un mayor número de ficheros simultáneamente. El C128 también tiene el doble de RAM que el C64 y una mayor proporción está disponible para la programación en BASIC, debido al chip MMU con cambio de bancos. Esto permite que el código de los programas BASIC sean almacenado por separado de las variables, mejorando mucho la habilidad de la máquina para manejar programas complejos, acelerando la recolección de basura y facilitando el despulgamiento para los programadores. Un programa en ejecución puede recibir un STOP, inspeccionar la variables o alterarlas en modo directo y la ejecución se continua usando la instrucción BASIC GOTO. La ROM del C128 contiene un huevo de pascua: Introduciendo el comando "SYS 32800,123,45,6" en modo nativo, revela una pantalla de 40 columnas con un listado y un mensaje de los desarrolladores principales de la máquina. También escribiendo las instrucciones QUIT u OFF, produce un "?UNIMPLEMENTED COMMAND ERROR". Estas instrucciones existen en previsión de un ordenador portátil con pantalla LCD nunca producido y están pensados para salir del intérprete BASIC e ignorar el teclado durante la ejecución de programas sensibles, respectivamente. Las mayores capacidades del hardware del C128, especialmente el incremento de la RAM, la resolución de pantalla y la velocidad del bus serial, la convirtieron en la plataforma preferida para usar el sistema operativo gráfico GEOS.

Modo CP/M

Usar el modo CP/M requiere el uso de un disquete de arranque

El segundo de los dos procesadores es el Zilog Z80, el cual permite al C128 funcionar en CP/M. El C128 fue vendido con CP/M 3.0 (también conocido como CP/M Plus, retrocompatible con CP/M 2.2) y el emulador del terminal ADM31/3A. Un cartucho con el CP/M ya estaba disponible para el C64, pero era caro y está limitado a los programas en discos con formato Commodore. Para tener disponible una gran biblioteca de aplicaciones instantáneamente en su lanzamiento, el CP/M del C128 y su unidad de disquetes 1571 fueron diseñadas para leer casi todos los programas en CP/M específicos de Kaypro sin modificaciones. Desafortunadamente, el C128 era notablemente más lento trabajando en CP/M que la mayoría de sistemas CP/M dedicados, ya que el procesador Z80 funcionaba a una velocidad efectiva de solo 2 MHz (en lugar de los más comunes 4 MHz) y a su uso de CP/M 3.0, cuya complejidad lo hace inherentemente más lento que el anterior y más extendido sistema CP/M 2.2. A partir del código fuente de la implementación de CP/M para el C128, queda claro que los ingenieros planearon originalmente que fuera posible hacer funcionar a CP/M también en el modo "rápido", con la salida de 40 columnas desconectada y el Z80 funcionando a una velocidad efectiva de 4 MHz. A pesar de ello, esta característica no funcionó correctamente en la primera generación del C128. Una característica inusual del C128 entre los sistemas CP/M es que algunos de los servicios de bajo nivel de la BIOS son ejecutados por el 8502 en lugar de por el Z80. Este le transfiere el control al 8502 después de situar los parámetros pertinentes en las posiciones de memoria designadas. El Z80 se apaga entonces, siendo despertado por el 8502 al completar la rutina de la BIOS, con el/los valor/es de estado disponibles en la RAM para su inspección. El CP/M fue posiblemente el menos usado de los tres posibles modos de operación. Pensado para darle al nuevo ordenador una gran librería de programas de grado profesional, los cuales no tenía Commodore, el CP/M ya había pasado hacía tiempo su mejor momento cuando se presentó el C128. Además, CP/M es muy diferente del Commodore DOS incluido en la ROM de las unidades de disco.

Modo C64

Incorporando completamente el BASIC original del C64 y el kernel, el C128 consigue prácticamente el 100% de compatibilidad con el Commodore 64. El modo 64 puede ser accedido de tres manera:

  • Manteniendo pulsada la tecla con el logo Commodore cuando arranca el sistema;
  • Entrar el comando GO64 en el BASIC 7.0.;
  • Arrancar con un cartucho C64 conectado.

Poniendo a tierra las líneas /EXROM y/o /GAME del puerto del cartucho causa que el ordenador automáticamente inicie en el modo C64. Esta característica duplica fielmente el comportamiento del C64 cuando un cartucho (como el BASIC de Simons) es enchufado en el puerto y activa esas dos líneas; pero, a diferencia del C64, donde el cambio del mapeado de memoria de estas líneas se realiza directamente en hardware, el firmware de arranque del Z80 del C128 comprueba las líneas al arrancar y entonces cambia de modo según sea necesario. Los cartuchos de modo nativo C128 son reconocidos e iniciados por la comprobación del kernel en las posiciones definidas en el mapa de memoria. El modo C64 casi duplica exactamente las características del hardware del C64. Muchas de las características adicionales del C128 están desactivadas o no disponibles en este modo. La pantalla de 80 columnas, el modo rápido, la MMU y el BASIC 7.0 no están disponible en este modo. Las 4 teclas de cursor en la parte superior del teclado no se reconocen, forzando al usuario a usar la incómoda disposición mediante mayúsculas del C64, que están incluidas en la parte inferior del teclado. También se ignoran el teclado numérico y la fila superior de teclas, excluyendo las teclas F1 a F8. Algunas de estas características pueden ser reactivadas mediante programas, pero los programas comerciales las ignorarían. Algunos de los pocos programas del C64 que fallan en un C128 funcionan correctamente cuando la tecla CAPS LOCK es pulsada (o la tecla ASCII/Nacional en los modelos internacionales del C128). Esto tiene que ver con el mayor puerto E/S de la CPU del C128. Donde la tecla SHIFT LOCK presente en ambas máquinas es simplemente una parte mecánica que bloquea la tecla SHIFT izquierda, la tecla CAPS LOCK en el C128 puede ser leída mediante el puerto E/S incluido en el 8502. Algunos programas del C64 se confunden con este bit de E/S extra, manteniendo la tecla CAPS LOCK pulsada se fuerza la línea de E/S, igualando la configuración del C64 y resolviendo el problema. Un puñado de programas del C64 que escriben en $D030 (53296), a menudo como parte del bucle de inicio de los registros del chip VIC-II. Este registro de mapeo de memoria, no usado en el C64, determinado por la velocidad del reloj del sistema. Debido a que este registro ya es completamente funcional en el modo C64, una escritura inadvertida podría contaminar la pantalla de 40 columnas al cambiar la CPU a 2 MHz, en la cual la velocidad del reloj del procesador de vídeo VIC-II no puede producir una pantalla coherente. Afortunadamente, muchos programas sufren este fallo. En julio de 1986, COMPUTE!'s Gazette publicó un programa escrito que explotaba esta diferencia usando una matriz de interrupciones para permitir el modo rápido cuando se alcanza la parte inferior de la pantalla visible y entonces desactivarlo cuando el retrazo de la pantalla vuelve a empezar en la parte superior. Usando el reloj más alto durante el periodo de retorno vertical, la pantalla de vídeo estándar se mantiene mientras se aumenta la velocidad de ejecución en un 20%. Un modo de diferenciar entre un C64 y un C128 operando en modo C64, típicamente usado desde dentro de un programa en funcionamiento, es escribir un valor diferente a $FF (255) en la dirección $D02F, un registro que es usado para decodificar las teclas extra del C128 (el teclado numérico y algunas otras teclas). En el C64 esta localización de memoria siempre contiene el valor $FF, sin importar lo que se escriba en él, pero en un C128 en modo C64, el valor de la localización (un registro de mapeo de memoria) puede ser cambiado. Así, comprobando el valor de la posición después de escribir en el revelará la verdadera plataforma de hardware.

Ajustes de la RAM

Para manejar la relativamente grande cantidad de ROM y RAM, diez veces el espacio de direcciones de 64 KB del 8502, el C128 usa la MMU 8722 para crear diferentes mapas de memoria, en los que diferentes combinaciones de RAM y ROM son mostradas dependiendo del patrón de bits escrito en el registro de configuración de la MMU en la dirección de memoria $FF00. Las unidades de expansión de RAM de Commodore utilizan un controlador DMA externo para escribir y leer uno o más bytes (hasta rangos completos de bytes) entre la memoria RAM del C128 y la RAM de la unidad de expansión. Otra característica de la MMU es que permite relocalizar la página cero y la pila, gracias al registro de Página Directa.

La compleja arquitectura del C128[6]

Other Languages
català: Commodore 128
čeština: Commodore 128
Deutsch: Commodore 128
English: Commodore 128
euskara: Commodore 128
français: Commodore 128
hrvatski: Commodore 128
italiano: Commodore 128
Nederlands: Commodore 128
norsk nynorsk: Commodore 128
norsk bokmål: Commodore 128
русский: Commodore 128
srpskohrvatski / српскохрватски: Commodore 128
српски / srpski: Komodor 128
svenska: Commodore 128