Tecnología MOS 8563

El VDC fue diseñado teniendo en mente las aplicaciones de la suite ofimática . Aquí se muestra SpeedScript 128 , un procesador de textos .

El controlador de pantalla de video 8563 ( VDC ) era un circuito integrado producido por MOS Technology . Se utilizó en la computadora Commodore 128 (C128) para generar una pantalla de video RGB de 80 columnas (640 × 200 píxeles ) , que se ejecutaba junto con un VIC-II que admitía gráficos compatibles con Commodore 64. Los modelos DCR (así como algunos modelos D) del C128 usaban el controlador 8568 [D]VDC posterior y técnicamente más avanzado .

Historia y características

Originalmente pensado para un ordenador empresarial basado en UNIX planeado (pero no lanzado) basado en el Zilog Z8000 , Commodore diseñó el VDC en varias máquinas prototipo. De ellas, solo el Commodore 128 llegó a producirse. A diferencia de los chips de vídeo MOS anteriores, como el popular VIC-II, el VDC tenía memoria de vídeo dedicada, 16 kilobytes (16.384 bytes; ampliable a 64 kilobytes, 65.536 bytes) en el C128 original o "plano" y 64 kilobytes en el C128DCR . Esta RAM no era accesible directamente por el microprocesador .

El 8563 fue más difícil de producir que la mayoría del resto de la línea de MOS Technology y los rendimientos iniciales fueron muy bajos. Las primeras unidades también tenían importantes problemas de fiabilidad y tendían a autodestruirse por sobrecalentamiento. [1] Además, había problemas de sincronización con el VDC que provocaban un mal funcionamiento de las operaciones de carga y almacenamiento indirectas en sus registros.

Oficialmente, el VDC era un chip de solo texto, aunque una lectura cuidadosa de la literatura técnica de MOS Technology que se entregó a los primeros desarrolladores del C128 indicó que era posible un modo de mapa de bits de alta resolución ; simplemente no se describía con ningún detalle. BASIC 7.0 , el lenguaje de programación integrado del C128, solo admitía gráficos de alta resolución en modo de 40 columnas a través del chip VIC-II heredado.

Esta demostración de Ultra Alta Resolución muestra las capacidades de blitter del VDC con una animación 3D simple de un modelo de estructura de alambre de un cubo .

Poco después del lanzamiento del C128, el modo de mapa de bits del VDC se describió con considerable detalle en el libro de Data Becker "Commodore 128 - Das große GRAFIK-Buch" (publicado a fines de 1985 en los Estados Unidos por Abacus Software), y los autores alemanes Klaus Löffelmann y Dieter Vüllers proporcionaron un programa en lenguaje ensamblador en el que era posible establecer o borrar cualquier píxel o, usando BASIC para realizar los cálculos necesarios, generar formas geométricas en mapa de bits en la pantalla de 80 columnas. [2] En febrero de 1986, menos de un año después del lanzamiento del Commodore 128 , la revista RUN publicó " Ultra Hi-Res Graphics ", un artículo que describía el modo de mapa de bits del VDC e incluía un programa de escritura en línea (escrito en lenguaje ensamblador 8502 ) que ampliaba las capacidades de BASIC 7.0 para admitir gráficos de alta resolución de 640 × 200 utilizando el 8563.[1] Los autores Lou Wallace y David Darus desarrollaron más tarde la utilidad Ultra Hi-Res en un paquete comercial, BASIC 8. Una de las utilidades de terceros más populares para el C128, que ofrecía capacidades de alta resolución de VDC más avanzadas a una amplia audiencia de programadores.

Commodore finalmente ofreció documentación oficial completa sobre el VDC en la Guía de referencia del programador de Commodore 128. Los modos de mapa de bits del VDC se usaron ampliamente en la versión C128 del sistema operativo GEOS .

El VDC carecía de capacidades de sprites , lo que limitaba su uso en aplicaciones de juegos . Sin embargo, sí contenía capacidades de blitting para realizar de forma autónoma copias de memoria de bloques pequeños dentro de su RAM de video dedicada. Mientras el VDC realiza dicha copia, la CPU del sistema puede continuar ejecutando código, siempre que no se intenten otros accesos al VDC antes de que finalice la copia. Estas funciones fueron utilizadas por la ROM del editor de pantalla del C128 para desplazarse rápidamente o borrar secciones de la pantalla.

Especificaciones técnicas

  • Salida RGBI (RGB más intensidad) compatible con el estándar de video CGA de IBM .* 
  • Espacio de direcciones de 16 o 64 kilobytes para visualización, forma de caracteres y memoria de atributos de visualización (dedicada, separada de la memoria del sistema).
  • Resolución de vídeo de hasta 720 × 700 píxeles en modo entrelazado (máximo con 64 kilobytes de RAM de vídeo). Son posibles otros tamaños de imagen, según las necesidades del programador, como 640 × 200 sin entrelazar, 640 × 400 entrelazado, etc.
  • Resolución de texto de 80 × 25 caracteres (kernal predeterminado C128); son posibles otros tamaños como 80 × 50 o 40 × 25.
  • 8 colores en 2 intensidades.

* Esto se aplica únicamente a los monitores C128 de 60 Hz de EE. UU. Los monitores C128 de 50 Hz emiten una señal con una frecuencia de actualización vertical de 50 Hz. Aunque no cumplen con el estándar CGA, la mayoría de los monitores CGA podían mostrar la señal de 50 Hz sin problemas. Sin embargo, algunos monitores no lograban resolver la señal o lo conseguían, pero tarde o temprano sus circuitos de deflexión fallaban debido a estrés eléctrico o térmico, lo que requería reparación.

Programación

El acceso a los registros internos y a la memoria de vídeo dedicada del VDC debe realizarse por medios indirectos. En primer lugar, el programa debe indicar al VDC a cuál de sus 37 registros internos se debe acceder. A continuación, el programa debe esperar hasta que el VDC esté listo para el acceso, después de lo cual se puede realizar una lectura o escritura en el registro interno seleccionado. El siguiente código ensamblador es típico de una lectura de registro:

 ldx # regnum ; registro VDC para acceder a stx $d600 ; escribir en el registro de control loop bit $d600 ; verificar bit 7 del registro de estado bpl loop ; VDC no listo lda $d601 ; leer desde el registro VDC ...                

El siguiente código es típico de una operación de escritura de registro:

 ldx # regnum ; registro VDC para escribir en stx $d600 ; escribir en el registro de control loop bit $d600 ; verificar bit 7 del registro de estado bpl loop ; VDC no listo sta $d601 ; escribir en el registro VDC ...                

Lo mismo es posible en lenguaje BASIC , llamando a rutinas KERNAL específicas :

Este código es típico de una lectura de registro VDC, donde registro es un número entre 0 y 36, como se muestra a continuación.

BANK15 ... SYS DEC ( "CDDA" ),, registro : RREG VDC REM $ccda también conocido como 52698 en decimal PRINT VDC ...       

Este código es típico de una escritura de registro VDC, donde registro es un número entre 0 y 36, y valor es un número entre 0 y 255, que desea colocar en ese registro.

BANK15 ... SYS DEC ( "CDCC" ) , valor , registro REM $ccdc también conocido como 52684 en decimal ...    

Debido a este método un tanto engorroso de controlar el VDC, la velocidad máxima de cuadros posible en modo de mapa de bits generalmente es demasiado lenta para los videojuegos de acción estilo arcade, en los que se requiere una manipulación intensiva en bits de la pantalla.

En el modo de texto estándar, el VDC se comporta de forma muy similar al VIC-II, excepto que tiene 2k de memoria de pantalla en lugar de 1k. La configuración predeterminada de encendido coloca la memoria de pantalla en $0-$7FFy la memoria de color en $800-$9FFy se pueden mover a cualquier lugar en la memoria del VDC siempre que esté en un límite de 2k. Los atributos se manejan como el modo de alta resolución del VIC-II con un color de fondo global y el color de primer plano de cada carácter configurado individualmente según la RAM de color. Además de los datos de color, esta última también contiene datos de atributos para cada carácter. El bit 4 hace que el carácter parpadee si está habilitado, el bit 5 produce caracteres subrayados y el bit 6 invierte el patrón de mapa de bits del carácter. El bit 7 habilita el conjunto de caracteres alternativos. El VDC puede usar hasta 512 caracteres. Cuando se habilita el indicador de carácter alternativo para un carácter determinado, el patrón de caracteres se extraerá de los caracteres 256 a 511. Por lo tanto, si se muestra el carácter 65, al habilitar el indicador de carácter alternativo se mostrará el carácter 321 en su lugar. La bandera de caracteres alternativos se utiliza normalmente cuando está configurado el modo mayúsculas/minúsculas: la bandera está habilitada para todas las posiciones de pantalla VDC, lo que hace que se muestren el conjunto de caracteres mayúsculas/minúsculas y sus versiones de video inversas en lugar del conjunto de caracteres mayúsculas/gráficos predeterminado.

El VDC no utiliza una ROM de caracteres, en su lugar, los patrones de la ROM de caracteres del VIC-II simplemente se copian en la RAM del VDC como parte de la inicialización de encendido del C128, incluidos los patrones para caracteres de video inverso, aunque el VDC es capaz de invertir caracteres en hardware. Los patrones de caracteres ocupan 16 bytes en lugar de 8 para almacenarse, ya que el VDC tiene una altura de caracteres ajustable. Dado que la pantalla tiene 25 líneas, en la práctica la altura de caracteres está limitada a 8 líneas, lo que significa que la mitad del espacio para los datos de caracteres queda sin usar y se desperdicia. La configuración predeterminada de encendido coloca los datos de caracteres en $2000-$3FFF. $2000-$23FFcontienen los patrones para los caracteres en mayúsculas/gráficos, $2C00-$33FFlos caracteres en mayúsculas/minúsculas, mientras que $2400-$2BFFy $3400-$3FFFcontienen los patrones de video inverso para cada conjunto. El usuario puede definir libremente cualquier carácter personalizado y asignarlos a la memoria del VDC.

Listado de registros

Esta información fue adaptada de la Guía de referencia del programador del Commodore 128 [3]

RegistroHexadecimalBit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0Descripción
0
$00
HT7 
HT6 
HT5 
HT4 
HT3 
HT2 
HT1 
HT0 
Total horizontal
1
$01
HD7 
HD6 
HD5 
HD4 
HD3 
HD2 
HD1 
HD0 
Visualización horizontal
2
$02
HP7 
HP6 
HP5 
HP4 
HP3 
HP2 
HP1 
HP0 
Posición de sincronización horizontal
3
$03
VW3 
VW2 
VW1 
VW0 
HW3 
HW2 
HW1 
HW0 
Ancho de sincronización vertical/horizontal
4
$04
VT7 
VT6 
VT5 
VT4 
VT3 
VT2 
VT1 
VT0 
Total vertical
5
$05
VA4 
VA3 
VA2 
VA1 
VA0 
Ajuste vertical
6
$06
VD7 
VD6 
VD5 
VD4 
VD3 
VD2 
Enfermedad venérea 1 
VD0 
Visualización vertical
7
$07
VP7 
VP6 
VP5 
VP4 
VP3 
VP2 
Vicepresidente 1 
VP0 
Posición de sincronización vertical
8
$08
IM1 
yo soy0 
Modo entrelazado
9
$09
CTV4
CTV3
CTV2
CTV1
Carácter Total Vertical
10
$0A
CM1 
CM0 
CS4 
CS3 
CS2 
CS1 
CS0 
Modo cursor, iniciar escaneo
11
$0 mil millones
CE4 
CE3 
CE2 
CE1 
CE0 
Línea de escaneo final del cursor
12
$0C
DS15
DS14
DS13
DS12
DS11
DS10
DS9 
DS8 
Mostrar byte alto de dirección de inicio
13
$0D
DS7 
DS6 
DS5 
DS4 
DS3 
DS2 
DS1 
DS0 
Mostrar dirección de inicio de byte bajo
14
$0E
CP15
CP14
CP13
CP12
CP11
CP10
CP9 
CP8 
Byte alto de posición del cursor
15
$0F
CP7 
CP6 
CP5 
CP4 
CP3 
CP2 
CP1 
CP0 
Byte bajo de posición del cursor
16
$10
LPV7
LPV6
LPV5
LPV4
LPV3
LPV2
LPV1
LPV0
Posición vertical del lápiz óptico
17
$11
LPH7
LPH6
LPH5
LPH4
LPH3
LPH2
LPH1
LPH0
Posición horizontal del lápiz óptico
18
$12
UA15
UA14
UA13
UA12
UA11
UA10
UA9 
UA8 
Actualizar dirección de byte alto
19
$13
UA7 
UA6 
UA5 
UA4 
UA3 
UA2 
UA1 
UA0 
Actualizar dirección de bytes bajos
20
$14
AA15
AA14
AA13
AA12
AA11
AA10
AA9 
AA8 
Dirección de inicio del atributo Byte alto
21
$15
AA7 
AA6 
AA5 
AA4 
AA3 
AA2 
AA1 
AA0 
Dirección de inicio del atributo Byte bajo
22
$16
CTH3
CTH2
CTH1
CTH0
CDH3
CDH2
CDH1
CDH0
Carácter total horizontal, carácter de visualización horizontal
23
$17
CDV4
CDV3
virus de la corona 2
virus de la corona 1
CDV0
Visualización de caracteres verticales
24
$18
COPIAR
RVS 
CBRATO
VSS4
VSS3
VSS2
VSS1
VSS0
Desplazamiento vertical suave
25
$19
TEXTO
ATR 
SEMI
Doble B 
HSS3
HSS2
HSS1
HSS0
Desplazamiento horizontal suave
26
$1A
FG3 
GF2 
GF1 
FG0 
BG3 
BG2 
BG1 
BG0 
Color de primer plano/fondo
27
$1 mil millones
AI7 
AI6 
AI5 
AI4 
AI3 
AI2 
AI1 
AI0 
Incremento de dirección por fila
28
$1C
CB15
CB14
CB13
RAM 
Dirección base del personaje
29
$1D
UL4 
UL3 
UL2 
UL1 
UL0 
Subrayar línea de escaneo
30
$1E
WC7 
WC6 
WC5 
WC4 
WC3 
WC2 
WC1 
WC0 
Recuento de palabras
31
$1F
DA7 
DA6 
DA5 
DA4 
DA3 
DA2 
DA1 
DA0 
Registro de datos
32
$20
BA15
BA14
BA13
BA12
BA11
BA10
BA9 
BA8 
Dirección de inicio del bloque Byte alto
33
$21
BA7 
BA6 
BA5 
BA4 
BA3 
BA2 
BA1 
BA0 
Dirección de inicio del bloque Byte bajo
34
$22
DEB7
DEB6
DEB5
DEB4
DEB3
DEB2
DEB1
DEB0
Habilitar pantalla Comenzar
35
$23
DEE7
DEE6
DEE5
DEE4
DEE3
DEE2
DEE1
DEE0
Habilitar pantalla Finalizar
36
$24
RRD3
RRD2
RRD1
RRD0
Frecuencia de actualización de DRAM

Referencias

  1. ^ "Commodore.ca | Productos | Commodore 128, 128D, 128DCR, Historia, Manuales, Imágenes y Cronología". www.commodore.ca . Archivado desde el original el 26 de julio de 2003.
  2. ^ Capítulo 3.9.1 "VDC HI-RES-Grafik" Página 213 y siguientes
  3. ^ Commodore Capital, Inc., (1986). Guía de referencia del programador de Commodore 128. Nueva York, NY: Bantam Books, Inc.
  • Archivo autoextraíble de ultra alta resolución - Volumen I
  • Archivo autoextraíble de ultra alta resolución: volumen II
  • C= Volumen 2 de Hacking: listado y descripción de registros
Obtenido de "https://es.wikipedia.org/w/index.php?title=Tecnología_MOS_8563&oldid=1171803786"