Mapping the Atari - Revised Edition, por Ian Chadwick
APÉNDICE TRECE
MEJORAS Y ERRORES DE LOS COMPUTADORES XL/XE
Primero las Buenas Noticias
Los computadores XL corrigen varios errores en el sistema operativo de los modelos 400/800 e incorporan numerosas mejoras, incluyendo controladores reubicables, un nuevo tipo de sondeo y nuevos modos gráficos en BASIC.
Ahora, el sistema operativo inserta un carácter de fin de línea (EOL) en el búfer de la impresora si no existe uno al cerrar el dispositivo. No es necesario forzar la salida de los últimos caracteres del búfer. Ahora también se puede acceder a los números de impresora del P1 al P8.
Al leer un registro demasiado largo o uno truncado con un fin de archivo (EOF), el sistema operativo inserta un EOL en el búfer de entrada para proporcionar al menos la cantidad máxima que el búfer puede procesar sin errores, evitando así la pérdida de datos.
La pantalla ahora se borra independientemente de la posición del cursor. El controlador de pantalla y el editor de pantalla ya no borran la memoria por encima de RAMTOP, por lo que cualquier dato, como los gráficos player/missile, que se encuentre allí, está protegido, incluso al cambiar de modo gráfico.
La mecánica de carga de cassettes se ha mejorado considerablemente gracias a un cambio en los valores de tiempo (para más detalles, consulte el manual del modelo XL).
Ahora las malas noticias
La Revisión B de la ROM del BASIC tiene varios errores graves, que me señaló Matt Ratclitt (un experto en el XL) en el BBS Gateway de St. Louis, Missouri. Si hace un PEEK(43234) y obtiene 96, tiene la ROM B, que está llena de errores; escriba a Atari y pídale un nuevo cartucho con la versión C de la ROM.
Estos son algunos de los errores que describió Matt: Primero, al guardar un archivo, BASIC añade 16 bytes inútiles al final del mismo. Este es un proceso acumulativo; cada vez que carga y guarda el mismo programa, se añaden otros 16 bytes. Esto puede causar problemas graves y errores como 164: truncated record (registro truncado). Asegúrese de que no hay nada bueno en su disco e intente lo siguiente:
10 PRINT FRE(0): SAVE "D:BASURA":RUN "D:BASURA"
¡y observe cómo su memoria se consume, 16 bytes a la vez! Eventualmente, su sistema se bloqueará.
Ahora intente esto: Escriba CSAVE (aunque no tenga un cassette) y suba el volumen del televisor; presione RETURN después de los pitidos y escuche; oirá los tonos de CSAVE. Cuando vuelva a aparecer el mensaje READY, suba aún más el volumen. ¿Lo oye? ¡Es el sonido de la carga aún activa! Para eliminarlo, tendrá que escribir END o SOUND 0,0,0,0 . CLOAD tiene el mismo problema. Es un error en ambas versiones, no solo de la ROM B.
Otro problema es el inexplicable error 9--string not DIMed (cadena sin dimensionar)-- que ocurre en la línea donde reside la instrucción DIM. Si carga y guarda archivos con demasiada frecuencia, especialmente con archivos de 16 KB o más, el sistema se bloqueará. No se desespere; consiga la nueva ROM, disponible en cartucho. Escriba a Atari Customer Relations, 390 Caribbean Drive, Sunnyvale, California 94088. (Consulte el Apéndice 19 para obtener una solución temporal).
Los computadores 65XE y 130XE usan la versión C del ROM, así que no tiene que preocuparse por estos errores. Los usuarios de XL pueden usar el programa de Matt del Apéndice 19 para solucionar sus problemas hasta que consigan los chips o el cartucho adecuados.
APÉNDICE CATORCE
El Bus Paralelo de los Computadores XL/XE
La característica más emocionante de los computadores XL es probablemente la menos anunciada y la menos utilizada: el puerto de bus de expansión paralelo (PBI - parallel bus interface) en la parte posterior de las máquinas. Proporciona acceso directo y sin búfer a todas las líneas de dirección, datos y control, lo que permite el uso de periféricos de alta velocidad (unidades de disco de E/S paralelas rápidas, discos duros y dispositivos de E/S personalizados). El número de abril de 1985 de la revista Analog publicó un artículo de Michael Barton sobre cómo añadir memoria adicional a su 600XL mediante el puerto de expansión. Antic publicó una serie especial de cuatro partes de Earl Rice sobre el bus, de enero a abril de 1985. El conector de bus se ve así:
Arriba | Pin | Pin | Abajo | |
Tierra | GND | 1 | 2 | Selección externa |
Salida de dirección | A0 | 3 | 4 | A1 |
A2 | 5 | 6 | A3 | |
A4 | 7 | 8 | A5 | |
A6 | 9 | 10 | GND | |
A7 | >11 | 12 | A8 | |
A9 | 13 | 14 | A10 | |
A11 | 15 | 16 | A12 | |
A13 | 17 | 18 | A14 | |
GND | 19 | 20 | A15 | |
Líneas de datos | D0 | 21 | 22 | D1 |
(Bidireccional) | D2 | 23 | 24 | D3 |
D4 | 25 | 26 | D5 | |
D6 | 27 | 28 | D7 | |
GND | 29 | 30 | GND | |
Salida Fase 2 del reloj | 31 | 32 | GND | |
Reservado | NC | 33 | 34 | Salida del Reset |
Solicitud de Interrupción | (IRQ) | 35 | 36 | Entrada lista |
NC | 37 | 38 | Salida del decodificador externo | |
NC | 39 | 40 | Salida del refresco | |
Salida de la dirección de la columna | 41 | 42 | GND | |
Entrada de la desabilitación del paquete matemático | 43 | 44 | Dirección de la fila, intermitente (strobe) | |
GND | 45 | 46 | Salida del seguro (latch) de lectura/escritura | |
(+5v dc?) | NC | 47 | 48 | NC (+5v dc?) |
Salida de Audio | 49 | 50 | GND |
Mirando el bus desde atrás, se ve así:
ARRIBA 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 +---------------------------------------------------------------------------+ | . . . . . . . . . . . . . . . . . . . . . . . . . | | | | | | . . . . . . . . . . . . . . . . . . . . . . . . . | +---------------------------------------------------------------------------+ 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 ABAJO
El bus de expansión es un tema complejo, que daría para un libro entero. Consulte los artículos de Rice que lo abordan con más detalle. El XE mantiene el bus paralelo, pero lo mejora con una línea de reloj y una corriente continua de +/-5 V integrada. (Barton, en su artículo en Analog, indica que los pines 47 y 48 ya tienen 5 V CC en el bus XL).
Cambios en el modelo 130XE
En el 130 XE, el bus paralelo se denomina ECI (enhanced cartridge interface - interfaz de cartucho mejorada). Básicamente, se trata de una extensión de 14 pines a la ranura del cartucho que permite que los dispositivos externos se conecten a las líneas de bus de direcciones y datos del equipo, accedan al software del sistema operativo y detecten el estado interno del computador. Su funcionalidad es similar y su software es compatible con la PBI descrita anteriormente. Los pines utilizados para el cartucho y la extensión son los siguientes:
Conector de cartucho de 30 pines
Parte superior | ||
Pin | Ubicación | Descripción |
RD4 | A | ROM presente |
GND | B | Tierra |
A4-A9 | C-J | Líneas de dirección |
A12 | K | Línea de dirección |
D3 | L | Línea de datos |
D7 | M | Línea de datos |
A11 | N | Línea de dirección |
A10 | P | Línea de dirección |
R/W | R | Línea de lectura/escritura del procesador |
PHI2 | S | Línea de reloj del sistema |
Parte inferior | ||
Pin | Ubicación | Descripción |
S4 | 1 | Línea de selección de chip: $8000 a $9FFF |
(Dirección de la ranura derecha del 800) | ||
A3 | 2 | Línea de dirección |
A2 | 3 | Línea de dirección |
A1 | 4 | Línea de dirección |
A0 | 5 | Línea de dirección |
D4 | 6 | Línea de datos |
D5 | 7 | Línea de datos |
D2 | 8 | Línea de datos |
D1 | 9 | Línea de datos |
D0 | 10 | Línea de datos |
D6 | 11 | Línea de datos |
S5 | 12 | Línea de selección de chip: $A000 a $BFFF (Dirección de la ranura izquierda del 800) |
+5V | 13 | Fuente de alimentación CC |
RD5 | 14 | ROM presente |
CCTL | 15 | Línea de selección de control del banco de ROM |
Mirando la ranura del cartucho desde atrás, los pines son los siguientes:
A B C D E F H J K L M N P R S +-------------------------------------------------------------+ | . . . . . . . . . . . . . . . | | | | | | . . . . . . . . . . . . . . . | +-------------------------------------------------------------+ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1. S4 | A. RD4 |
2. A3 | B. GND |
3. A2 | C. A4 |
4. A1 | D. A5 |
5. A0 | E. A6 |
6. D4 | F. A7 |
7. D5 | H. A9 |
8. D2 | J. A9 |
9. D1 | K. A12 |
10. D0 | L. D3 |
11. D6 | M. D7 |
12. S5 | N. A11 |
13. +5v | P. A10 |
14. RD5 | R. R/W |
15. CCTL | S. B02 |
Extensión de 14 pines
Parte superior | ||
Pin | Ubicación | Descripción |
Res | A | Reservado |
IRQ | B | Línea de solicitud de interrupción |
HALT | C | Señal de parada ANTIC |
A13-15 | D-F | Tres líneas de dirección superiores |
GND | H | Tierra |
Parte inferior | ||
Pin | Ubicación | Descripción |
EXSEL | 1 | ¿Selección de dispositivo externo? |
RST | 2 | RESET (reinicio) del sistema |
D1xx | 3 | Selección de chip en el área $Dlxx |
MPD | 4 | Desactivación del paquete matemático (FP) |
AUDIO | 5 | Entrada de audio externa |
REF | 6 | El ciclo actual es una línea de ciclo de refresco |
+5V | 7 | Segunda fuente de alimentación de CC |
Viendo la extensión desde atrás, vemos:
A B C D E F H +-----------------------------+ | . . . . . . . | | | | | | . . . . . . . | +-----------------------------+ 1 2 3 4 5 6 7
A. Reservado | 1. EXSEL |
B. IRQ | 2. RST |
C. HALT | 3. D1XX |
D. A13 | 4. MPD |
E. A14 | 5. Audio |
F. A15 | 6. REF |
H. GND | 7. +5v |
Atari 65XE
El 65XE no tiene bus paralelo; Atari lo abandonó porque otros fabricantes no lo aprovecharon.
APÉNDICE QUINCE
Los Modos Gráficos de los Computadores XL/XE
Los nuevos modos gráficos en BASIC son el 12, 13, 14 y 15; y los modos 4, 5, 12 ($C) y 14 ($E) en ANTIC, respectivamente. Estos siempre han estado disponibles internamente, pero los programadores de BASIC tienen que manipular el sistema operativo para acceder a ellos.
GRAPHICS 12 es un modo de texto de 4 colores (más el fondo). Cada carácter en pantalla tiene la misma altura que un carácter del modo GRAPHICS 0 (8 líneas de escaneo), pero solo se muestran 4 píxeles en lugar de 8. La pantalla tiene 20 líneas (24 con GRAPHICS 12 + 16) y 4 líneas de texto, utilizando 40 bytes de RAM por línea de pantalla.
GRAPHICS 13 es otro modo de texto de 4 colores (más fondo), pero en esta ocasión los caracteres tienen el doble de tamaño que los de GRAPHICS 0 (16 líneas de escaneo de alto), y solo se muestran 4 píxeles (el sistema interpreta el conjunto de caracteres por pares de bits en lugar de bits individuales; véase más adelante). La pantalla tiene 10 líneas (12 con GRAPHICS 13 + 16), y también utiliza 40 bytes por línea de pantalla.
Dado que tanto GRAPHICS 12 como 13 muestran solo 4 bits en cada línea de definición de carácter, el color del píxel mostrado depende del par de bits del byte al que se dirige:
Par de bits | Color | Ubicación en la RAM |
00 | BAK | 712 |
01 | PF0 | 708 |
10 | PF1 | 709 |
11 | Depende del bit 7 del byte. Si el bit 7 = 0, se usa PF2 (en la ubicación 710); de lo contrario, se usa PF3 (en la ubicación 711). |
Tenga en cuenta que cada línea en la definición de un conjunto de caracteres (8 líneas, un byte de ancho, que forman un carácter) puede tener diferentes combinaciones de colores.
Como se muestran pares de bits (un reloj de color), el conjunto de caracteres normal se vuelve irreconocible. Para usar estos modos, debe crear un conjunto de caracteres en el que cada carácter sea media letra y pueda combinarse para su visualización. O bien, cree un conjunto de caracteres de 7 x 7 con una fila y una columna en blanco entre cada carácter.
Los caracteres mostrados no representan el conjunto de caracteres completo. Son solo la mitad del conjunto ATASCII, dependiendo del valor en la ubicación 756 ($2F4): 224 ($E0) para mayúsculas, 226 ($E2) para minúsculas. Al utilizar operaciones GET o PUT en estos modos, los 7 bits inferiores (0-6) se utilizan para datos de caracteres (permitiendo un rango del 0 al 127; $7F), mientras que el bit superior es el modificador de color (vea la tabla anterior).
GRAPHICS 14 es un modo bicolor con una resolución de 160 píxeles de ancho (la mitad de la distancia horizontal de GRAPHICS 8) y 192 de alto (160 con líneas de texto). Cada línea de pantalla tiene una línea de escaneo de alto, a diferencia de GRAPHICS 6, donde cada línea tiene 2 líneas de escaneo (GRAPHICS 14 a veces se denomina GRAPHICS 6-1/2). BAK y PF0 son los registros bicolores; el primer bit de un byte de pantalla identifica el color.
GRAPHICS 15 se ha popularizado gracias a muchos programas de dibujo y pintura, como Micropainter de Datasoft y los programas de dibujo de Koala y Atari para tabletas táctiles. Es un modo de 4 colores con una resolución de 160 x 192 (160 con líneas de texto), donde cada línea de pantalla tiene una altura de una línea de escaneo. Los colores son BAK, y PF0 al PF2; solo los 2 primeros bits de un byte de pantalla identifican el color del byte. A veces se le denomina GRAPHICS 7-1/2.
Memoria Usada | ||||
Modo | Líneas | Colores | Pantalla dividida | Pantalla completa |
12 | 40 X 20/24 | 5 | 1154 | 1152 |
13 | 40 X 10/12 | 5 | 664 | 660 |
14 | 160 X 160/192 | 2 | 4270 | 4296 |
15 | 160 X 160/192 | 4 | 8112 | 8138 |
Aquí están las asignaciones de pines del conector del monitor del 800 y XL/XE (mirando la parte posterior de la unidad):
* * * * * * * ******* * * * Salida de Audio * 3 1 * Luminancia Compuesta * * * * Crominancia Compuesta * 5 4 * Video Compuesto * * * 2 * * * Tierra
APÉNDICE DIECISEIS
Administración de la memoria en el Computador 130XE
La ubicación para la selección de banco es 54017 ($D301). El puerto B, ahora un byte de salida en lugar del de entrada que era en las máquinas 400/800, utiliza los bits 2 al 5 (correspondientes a los pines 2 al 5 del chip PIA 6520) para seleccionar a qué banco de 16 KB se accede y si el área se utiliza para acceso a vídeo (ANTIC) o acceso al 6502. Hay otros 64 KB de RAM en el 130XE (no en el 65XE), idénticos al banco principal en cuanto a diseño y control, pero solo se puede acceder a ellos en bancos de 16 KB a la vez. Por supuesto, mediante una rutina en LM (lenguaje de máquina) rápida controlada por interrupciones, se pueden cambiar los bits del puerto B para alternar entre bancos de 16 KB según sea necesario. Cuando se habilita el acceso a un banco, este aparece a través de una ventana de acceso en la memoria principal, en las ubicaciones 16384-32767 ($4000-$7FFF, debajo de la ROM del SO o las áreas de cartucho). Si habilita el cambio de banco, la RAM normal de esta área se reemplaza por el banco seleccionado. El bit 4 es el bit de habilitación del banco de CPU (CPE99 - CPU bank Enable) y el bit 5 es el bit de habilitación del banco de video (VBE - Video Bank Enable). Los bits 3 y 2 son el bit más significativo y el bit menos significativo, respectivamente, de la dirección del banco secundario.
Puede configurar el sistema en uno de cuatro modos: compatible con el software XL/XE existente, RAM extendida de CPU, RAM extendida de video y RAM extendida general. En todos los casos, solo el área de la ventana de acceso se ve afectada por la selección del modo.
El programador no requiere sincronización entre áreas; el sistema sabrá dónde se encuentra el área de visualización mediante la configuración de bits en PORTB. Esto es importante: una vez configurados los bits, no tiene que preocuparse por dónde se producirá el acceso; El sistema operativo toma el control y selecciona el banco correcto. Si desea utilizar más de un bloque de 16 KB en la RAM extendida, deberá activar y desactivar los bits de selección de banco según sea necesario, pero no los bits CPE o VBE.
En el modo de RAM extendida de CPU, solo la CPU accede a la memoria adicional. Todos los ciclos ANTIC operan en la memoria principal de 64 KB. Esto significa que puede usar la memoria extendida para programas y datos, mientras que el banco principal se usa para listas de despliegue y datos de pantalla.
En el modo de RAM extendida de vídeo, todas las referencias ANTIC al área $4000-$7FFF se dirigirán al banco secundario; todas las referencias de CPU ocurrirán en el banco principal. Esto permite a los programadores acceder a toda la memoria RAM para programas y datos en el área principal, mientras que localizan listas de visualización y datos de pantalla en el banco secundario.
En el modo de RAM extendida, tanto la CPU como ANTIC procesan en el segundo banco, exactamente como si fuera el banco principal en modo de compatibilidad (al que, en ese caso, no se accede en absoluto). El estado normal de los bits para CPE o VBE es 1; banco secundario deshabilitado. Cuando se establece en 0, se habilita el acceso al segundo banco. Estas son las posibles configuraciones de bits (P significa banco principal, E significa banco extendido o secundario):
Modo compatible (sólo el banco principal está habilitado) | |||||
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accede a: | ANTIC accede a: |
VBE | CPE | Selección del banco | |||
1 | 1 | no importa | P $4000-$7FFF | P $4000-$7FFF |
Modo RAM extendida del CPU | |||||
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accede a: | ANTIC accede a: |
VBE | CPE | Selección del banco | |||
1 | 0 | 0 | 0 | E $0000-$3FFF | P $4000-$7FFF |
1 | 0 | 0 | 1 | E $4000-$7FFF | P $4000-$7FFF |
1 | 0 | 1 | 0 | E $8000-$BFFF | P $4000-$7FFF |
1 | 0 | 1 | 1 | E $C000-$FFFF | P $4000-$7FFF |
Modo RAM extendida de Video (ANTIC) | |||||
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accede a: | ANTIC accede a: |
VBE | CPE | Selección del banco | |||
0 | 1 | 0 | 0 | P $4000-$7FFF | E $0000-$3FFF |
0 | 1 | 0 | 1 | P $4000-$7FFF | E $4000-$7FFF |
0 | 1 | 1 | 0 | P $4000-$7FFF | B $8000-$BFFF |
0 | 1 | 1 | 1 | P $4000-$7FFF | E $C000-$FFFF |
Modo RAM extendida General | |||||
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accede a: | ANTIC accede a: |
VBE | CPE | Selección del banco | |||
0 | 0 | 0 | 0 | E $0000-$3FFF | E $0000-$3FFF |
0 | 0 | 0 | 1 | E $4000-$7FFF | E $4000-$7FFF |
0 | 0 | 1 | 0 | E $8000-$BFFF | E $8000-$BFFF |
0 | 0 | 1 | 1 | E $C000-$FFFF | E $C000-$FFFF |
Para seleccionar el modo y el banco al que desea acceder en BASIC, utilice
POKE 54017, 193 + (MODO * 16) + (BANCO * 4)
Para MODO y BANCO, seleccione el número a continuación que representa el tipo y el área en la dirección:
MODO | BANCO | |||
N.° | 6502 | ANTIC | N.° | Dirección |
0 | Ext. | Ext. | 0 | $0000-$3FFF |
1 | Principal | Ext. | 1 | $4000-$7FFF |
2 | Ext. | Principal | 2 | $8000-$BFFF |
3 | Principal | Principal | 3 | $C000-$FFFF |
El acceso a la memoria extendida siempre se realiza a través del banco $4000-$7FFF, por lo que, independientemente de la dirección del banco extendido, se pueden usar PEEK y POKE en las ubicaciones 16384-32767 ($4000-$7FFF), y no en la dirección del banco extendido.
DOS 2.5 incluye un programa llamado RAMDISK.SYS que, al arrancar el disco, comprueba si se tiene un 130XE y, de ser así, crea un disco de memoria de 64 KB (el RAMdisk) a partir de la memoria extendida. (Consulte la sección sobre DOS 2.5). El RAMdisk ocupa todo el bloque extendido de 64 KB, por lo que si se desea mantener el RAMdisk intacto, no se pueden usar los 64 KB adicionales para BASIC ni otros programas.
99 En el libro original, dice CBE en vez de CPE. (N. del T.)
APÉNDICE DIECISIETE
DOS 2.5 y la unidad de discos Atari 1050
La última versión del DOS (Sistema Operativo del Disco) para los computadores XL y XE es la 2.5. Ofrece varias ventajas sobre las versiones anteriores (incluido el DOS 3.0, que tuvo una mala acogida), como el formateo de doble densidad, nuevos comandos para dar formato usando XIO disponibles desde BASIC, un programa RAMDISK para el 130XE y una mayor compatibilidad con DOS 2.0. Si usa DOS 3.0, le sugiero que consiga una copia del 2.5 lo antes posible.
DOS 2.5 da formato a una pista con 26 sectores en lugar de los 18 que maneja DOS 2.0; esto significa un disco con 1.010 sectores libres en lugar de 707 (dejando 931 sectores libres con archivos DOS y DUP.SYS en el disco). La unidad 1050 (no la 810) detecta automáticamente la densidad del disco. DOS 2.0 puede leer un disco de 2.5, pero los sectores adicionales son invisibles.
Nuevos comandos BASIC para DOS 2.5
Al abrir un disco desde el BASIC para leer un directorio (vea la ubicación 1792; $700 en la sección Adenda), normalmente se usa OPEN #1,6,0,"D:*.*." Ahora, si se usa OPEN #1,7,0,"D:*.*," DOS mostrará con corchetes angulares los archivos que ocupan sectores del disco a los que DOS 2.0 no puede acceder, como por ejemplo, <RAMROM.ASM>. Estos archivos son invisibles para DOS 2.0 al leer un directorio; no se pueden cargar ni aparecen en el directorio.
Se ha mejorado el dar formato al disco con el comando XIO. El método habitual es XIO 254, #1,0,0,"D1:." Esto dará formato al disco, probando primero con densidad dual y, si la unidad no lo admite, formateándolo en densidad simple (2.0). XIO 253, #1,0,0,"D1:" le da formato a un disco solo con densidad simple (se ha añadido una nueva opción, P, al menú DOS para también dar formato en densidad simple). XIO 253, #1,34,0,"D1:" da formato a un disco solo en densidad dual.
RAMdisk para el 130XE
DOS 2.5 incluye un programa especial llamado RAMDISK.SYS. Este se carga al arrancar el disco y determina si su computador es un 130XE. De ser así, ejecuta un pequeño programa que crea una "unidad de disco" a partir del banco de memoria extendida de 64 KB. El RAMdisk funciona igual que un disco real, pero es más rápido. Le da formato con 499 sectores y un directorio, y su número de unidad es D8:. DOS 2.5 admite las unidades 1 a 8, pero se inicializa con las unidades 1, 2 y 8. Por lo tanto, si tiene otras unidades, cambie la ubicación 1802 ($70A); es decir, si tiene 3 unidades y el disco RAM, haga POKE 1802,135. Todos los bits de la ubicación 1802 ahora representan posibles unidades.
Al ejecutarse, RAMDISK.SYS copia MEM.SAV y DUP.SYS al disco en RAM y luego modifica una ubicación para que se ejecute DUP.SYS desde el disco en RAM en lugar de D1:. Esto abre DOS casi inmediatamente al salir de BASIC. Sin embargo, si desea eliminar DUP.SYS de la unidad de memoria y ejecutarlo desde la unidad 1, como de costumbre, escriba POKE 5439, ASC("1"); esto dirige DOS de nuevo a la unidad original. También puede eliminar MEM.SAV desde D8: si no lo necesita.
Sector de arranque y mapa de memoria del DOS 2.5
Las ubicaciones 1792 a la 1812 ($700 a la $714) se cargan directamente en la RAM desde el sector de arranque (sector 1) del disco. Para obtener más información, consulte la sección sobre el mapa de memoria de los modelos 400/800. Estas ubicaciones provienen de un artículo de Neil Harris en la revista Atari Explorer; Atari promete ofrecer compatibilidad en el futuro:
1792 |
700 |
BFLG |
Bandera de arranque; siempre es igual a 0.
1793 |
701 |
BRCNT |
Número de sectores de arranque del disco; 3 (los 3 primeros del disco).
1794,1795 |
702,703 |
BLDADDR |
Dirección de carga del arranque; donde se carga DOS en la memoria; siempre es igual a 1792 ($700).
1796,1797 |
704,705 |
BINTAD |
Dirección de inicialización del DOS; siempre es igual a 5440 ($1540).
1798-1800 |
706-708 |
BCONT |
Instrucción JMP para saltar a la dirección donde el programa de arranque continúa su ejecución; 1812 ($714).
1801 |
709 |
SABYTE |
Número máximo de archivos abiertos simultáneamente: normalmente es igual a 3.
1802 |
70A |
DRVBYT |
Byte de asignación de unidad; un bit por unidad.
1803 |
70B |
SAFBFW |
Sin uso.
1804,1805 |
70C,70D |
SASA |
Dirección de asignación del búfer para unidades y archivos.
1806 |
70E |
DFSFLG |
Es igual a 0 si no hay DOS.SYS en el disco; tiene un valor distinto de 0 si está presente.
1807,1808 |
70F,710 |
DFLINK |
Apunta al primer sector del archivo DOS.SYS.
1809 |
711 |
BLDISP |
Número de bytes de desplazamiento para los bytes de enlace de un sector (los 3 últimos); siempre es igual a 125 ($7D).
1810,1811 |
712,713 |
DFLADDR |
Dirección de la tabla de controladores del FMS (D:); 1995 ($7CB).
1812 |
714 |
XBCONT |
El programa de arranque comienza aquí.
1900 |
76C |
BSIO |
Rutinas SIO del BASIC .
1906 |
772 |
BSIOR |
Rutinas de controladores de disco FMS.
1913 |
779 |
.... |
Bandera de verificación de escritura; 80 ($50) lo desactiva, 87 ($57) lo activa.
1995 |
7CB |
DFMSDH |
Tabla del controlador FMS. Contiene datos diferentes a los del controlador del DOS 2.0.
2016 |
7E0 |
DINIT |
Rutina de inicialización del DOS.
4993 |
1381 |
FBC |
Inicio de los bloques de control de archivos del FMS; el primero de 8.
5121 |
1401 |
FILDIR |
Búfer de 128 bytes para un sector del directorio del disco.
5439 |
153F |
.... |
Al usar el disco RAM, haga POKE con 49 (ASC("1")) en esta ubicación para redirigir DOS e invocar a DUP.SYS desde D1 en lugar de D8. Luego, puede eliminar DUP.SYS y MEM.SAV del disco RAM para obtener espacio adicional. Consulte la ubicación 1923 ($783) en la Adenda.
5440 |
1540 |
MINIDUP |
Inicio de la parte de la residencia permanente del DUP.SYS.
5540 |
154A |
SFLOAD |
Entrada a la rutina del DUP.SYS para cargar archivos binarios.
5542 |
15A6 |
STLOAD |
Se utiliza con SFLOAD.
5545 |
15A9 |
LOAD |
Se utiliza con SFLOAD.
APÉNDICE DIECIOCHO
Cambiando el sistema operativo 400/800 en los computadores XL/XE
Al arrancar del disco Translator, o al usar uno de los discos de reparación comerciales (como FIXXL), o al ejecutar el programa "ROM OS to RAM OS" de Matt Ratcliff (Apéndice 19), se cambia el sistema operativo desde la ROM a la RAM. Esto permite cambiarlo directamente en la memoria. Al usar el Translator o el chip XL BOSS de Allen MacroWare, se tiene el sistema operativo del 400/800 en memoria en lugar del sistema operativo del XL/XE.
Esta sección describe muchos cambios que se pueden realizar al sistema operativo 400/800 en la RAM de los modelos XL/XE. En todos los casos, se describe la versión B del sistema operativo, ya que el Translator y Allen MacroWare no utilizan la versión A. Estos cambios se pueden introducir mediante POKEs en la memoria si se ha ejecutado el Translator o el XL BOSS está instalado. Si tiene el hardware para crear sus propias PROM o EPROM, puede realizar estos cambios en las PROM y reemplazarlas en la placa base del sistema operativo. Lo mismo aplica para la placa RamRod de Newell Industries.
He probado y utilizado tanto la RamRod de Newell como el XL BOSS de Allen MacroWare y los considero excelentes productos y los recomiendo ampliamente. Gran parte del siguiente material proviene de sus manuales.
57344 |
E000 |
CHARSET1 |
Haciendo POKE en esta ubicación puede cambiar el conjunto de caracteres directamente, en lugar de reservar espacio en la memoria para un conjunto modificado. Consulte la sección sobre conjuntos de caracteres en el mapa de memoria principal y la ubicación 54017 ($D301). (Los usuarios de los modelos XL/XE pueden cambiar este y también el conjunto internacional).
59497 |
E869 |
.... |
Intervalo de repetición del teclado. El valor original es igual a 6; para mover el cursor el doble de rápido al repetir caracteres (también en el XL/XE), haga POKE con 3 en esta ubicación.
60294 |
EB86 |
.... |
Para aumentar la velocidad en baudios del cassette en casi un tercio y reducir el tiempo del líder de 20 a 10 segundos, ejecute los siguientes POKE:
POKE | |||
Dirección | Valor | Hexadecimal | |
60294 | 00 | $EB84, $00 | byte bajo, escritura en baudios |
60299 | 04 | $EB8B, $04 | byte alto |
61250 | 00 | $EF42, $00 | byte bajo, rutina de inicialización de velocidad en baudios |
61255 | 04 | $EF47, $04 | byte alto |
61346 | 00 | $EFA2, $00 | velocidad en baudios, rutina de apertura |
61351 | 04 | $EFA7, $04 | byte alto |
61371 | 02 | $EFBB, $02 | tiempo del líder |
61683-61707 |
F0F3-F10B |
LOAD |
Mensaje de inicio del modo pizarrón: "ATARI COMPUTER - MEMO PAD (CR)".
61709-61718 |
F10D-F116 |
.... |
Mensaje de BOOT ERROR. Este mensaje se encuentra en la ubicación 50237 ($C43D) en los XL/XE.
61812 |
F174 |
.... |
Margen izquierdo predeterminado; inicialmente su valor es igual a 2.
61816 |
F178 |
.... |
Margen derecho predeterminado; inicialmente su valor es igual a 39 ($27) (el máximo).
63227-63229 |
F6FB-F6FD |
.... |
Sonido del clic de la tecla: cambie estos 3 bytes a 234 ($EA) para desactivarlo por completo.
64728 |
FCD8 |
CLICK |
También puede eliminar el sonido de clic cambiando el primer byte de la rutina a 96 ($60; RTS).
64729 |
FCD9 |
.... |
Tiempo del timbre para avisos sonoros. Inicialmente igual a 127 ($7F), se puede reducir a cualquier tiempo; 63 ($3F) es la mitad. Esta ubicación también afecta el tiempo de clic de las teclas.
65217-65221 |
FEC1-FEC5 |
.... |
Tablas de valores de color predeterminados (iniciales). Estos valores se mueven a los registros sombra 708 al 712 ($2C5 al $2C8) al encender o reiniciar el equipo. La pantalla de inicio es azul; para cambiarla a negra, haga POKE 65219 ($FEC3),0.
65278 |
FEFE |
.... |
Tabla del teclado; puede redefinir todo el teclado haciendo POKEs aquí (consulte la sección sobre el mapa XL/XE). Un truco es cambiar el teclado para que las teclas del cursor (flechas) funcionen al presionarlas por sí solas. Entonces, para obtener -,=, + y *, deberá presionar las teclas del cursor junto con la tecla SHIFT. Y para obtener las flechas, deberá presionar las teclas del cursor junto con la tecla CONTROL. Ejecute los siguientes POKEs:
POKE | ||
Dirección | Valor | Hexadecimal |
65284 | 30 | $FF04, $1E |
65285 | 31 | $FF05, $1F |
65292 | 28 | $FF0C, $1C |
65293 | 29 | $FF0D, $1D |
65348 | 43 | $FF44, $2B |
65349 | 42 | $FF45, $2A |
65356 | 45 | $FF4C, $2D |
65357 | 61 | $FF4D, $3D |
65412 | 92 | $FF84, $5C |
65413 | 94 | $FF85, $5E |
65420 | 95 | $FF8C, $5F |
65421 | 124 | $FF8D, $7C |
(Propietarios de XL/XE: Su tabla de definición del teclado comienza en la ubicación 64337, así que para usar esta modificación, réstele 941 a las direcciones dadas anteriormente.
65281 |
FF01 |
.... |
Propietarios del modelo 1200XL: Pueden usar sus teclas de función como teclas de cursor haciendo POKE 65281,30 ($FF01,$1E), POKE 65282,31 ($FF02,$1F), POKE 65297,28 ($FF11, $1C) y POKE 65298,11 ($FF12,$1D).
65487 |
FFCF |
.... |
Solo modelos XL/XE: Para que la tecla HELP sea una tecla de inicio/parada equivalente a CONTROL-1, haga POKE en esta ubicación con 17 ($11). La tecla HELP devuelve un valor de código de tecla en la ubicación 732 ($2DC) igual a 17 ($11) para uso normal, 81 ($51) para SHIFT+HELP y 145 ($91) para CONTROL+HELP.
65507 |
FFE3 |
.... |
El retardo de tiempo para la función de repetición; inicialmente igual a 3; haga POKE con 1 en esta ubicación. Véase también la ubicación 65516 (FFEC), a continuación.
65516 |
FFEC |
.... |
Retardo de repetición de tecla. Inicialmente igual a 48 ($30); cámbiela a 15 ($0F). Haga esto junto con el cambio en la ubicación 65507 ($FFE3).
APÉNDICE DIECINUEVE
Programas para los Computadores XL/XE
Conmutador del BASIC
Esta es una versión de la rutina de conmutación BASIC utilizada en un programa de dominio público llamado "RamMaster", disponible en el BBS Gateway de St. Louis, Missouri, y utilizada aquí con la autorización de su autor, Matt Ratcliff. El programa crea un archivo AUTORUN.SYS que le solicita activar y desactivar BASIC; no es necesario mantener pulsada la tecla OPTION al arrancar un disco. Al desactivarlo desde DOS, se recuperan los 8 KB de RAM que ocupa; DOS aprovecha este espacio de memoria para las rutinas de copia y duplicación de discos. Para obtener más información, consulte el mapa de memoria de XL/XE.
Conmutador del BASIC del 800XL
10 GRAPHICS 0:DIM A$(10):? "CONMUTADOR DEL BASIC DEL 800XL" 15 PRINT "Por Matthew Ratcliff 25/3/85" 20 PRINT :PRINT "CUANDO TENGA LISTO SU DISCO DOS, PRESIONE RETURN;" 25 INPUT A$ 30 TRAP 200:OPEN #1,8,0,"D:AUTORUN.SYS" 40 RESTORE 50 READ A:IF A<0 THEN 100 60 PUT #1,A:GOTO 50 100 CLOSE #1:PRINT "CONMUTADOR DE BASIC LISTO." 105 PRINT "PONGA ESTE ARCHIVO EN TODOS SUS" 110 PRINT "DISCOS DE PROGRAMACION EN 'BASIC'":PRINT 115 PRINT "!GUARDE ESTE CARGADOR COMO RESPALDO!" 120 END 200 PRINT "ERROR INESPERADO";PEEK(195) 210 PRINT "EN LA LINEA ";PEEK(186)+256*PEEK(187):END 1000 DATA 255,255,0,52,236,53,173,250,3,240,1 1005 DATA 96,32,160,53,76,34,52,184,176 1010 DATA 176,216,204,160,194,193,211,201,195 1015 DATA 160,211,247,233,244,227,232,229,242,155,4 1020 DATA 162,12,160,52,32,120,53,76,56,52,194 1025 DATA 249,160,205,225,244,170,210,225,244 1030 DATA 155,4,162,44,160,52,32,120,53,76,88 1035 DATA 52,80,114,101,115,115,32,35,32 1040 DATA 97,110,100,32,210,212,206,32,107,101 1045 DATA 121,58,155,4,162,66,160,52,32,120 1050 DATA 53,76,115,52,91,49,93,32,66,65,83 1055 DATA 73,67,32,160,207,206,160,160,155 1060 DATA 4,162,98,160,52,32,120,53,76,142,52,91 1065 DATA 50,93,32,66,65,83,73,67 1070 DATA 32,160,207,198,198,160,155,4,162,125 1075 DATA 160,52,32,120,53,32,203,53,201,50 1080 DATA 208,41,173,1,211,9,2,141,1,211,169 1085 DATA 192,133,106,32,160,53,76,187,52 1090 DATA 160,194,193,211,201,195,160,207,198 1095 DATA 198,160,155,4,162,174,160,52,32,120,53 1100 DATA 76,62,53,201,49,240,3,76,79,53,173,1,211 1105 DATA 41,253,141,1,211,169,160 1110 DATA 133,106,32,160,53,76,235,52,160,194 1115 DATA 193,211,201,195,160,207,206,160,29,155 1120 DATA 4,162,222,160,52,32,120,53,173,226,168 1125 DATA 201,96,208,48,76,31,53,82,69 1130 DATA 86,46,66,32,45,32,195,239,238,244,225,227 1135 DATA 244,160,193,212,193,210,201,160 1140 DATA 230,239,242,160,210,197,214,174,195 1145 DATA 160,161,155,4,162,252,160,52,32,120,53 1150 DATA 76,62,53,201,234,208,17,76,55,53,82,69 1155 DATA 86,46,67,155,4,162,48,160 1160 DATA 53,32,120,53,76,71,53,29,29,29,29,155 1165 DATA 4,162,65,160,53,32,120,53 1170 DATA 96,76,107,53,160,194,193,196,160,203 1175 DATA 197,217,253,32,32,32,80,82,69,83 1180 DATA 83,32,160,210,212,206,160,155,4 1185 DATA 162,82,160,53,32,120,53,32,203,53,76 1190 DATA 0,52,142,68,3,134,208,140,69,3,132,209 1195 DATA 160,0,140,72,3,140,73,3 1200 DATA 177,208,201,4,240,6,238,72,3,200,208 1205 DATA 244,169,11,162,0,141,66,3,76 1210 DATA 86,228,162,96,169,12,157,66,3,32,86,228 1215 DATA 162,96,169,3,157,66,3,169 1220 DATA 200,157,68,3,169,53,157,69,3,169,0 1225 DATA 157,75,3,169,28,157,74,3,76 1230 DATA 86,228,83,58,0,162,0,169,5,157 1235 DATA 66,3,169,0,157,68,3,169,4,157 1240 DATA 69,3,169,4,157,72,3,169,0,157 1245 DATA 73,3,32,86,228,173,0,4,96,226 1250 DATA 2,227,2,0,52,-1
Intercambio del SO desde la ROM a la RAM
El segundo programa es una versión abreviada de "RamMaster", también disponible en el BBS Gateway. Convierte el SO en ROM en SO en la RAM y bloquea la tecla RESET para que, al presionarla, no vuelva a la ROM. Al presionar RESET, la rutina deja intacto el bloque 52224-53247 ($CC00-$CFFF), por lo que cualquier conjunto de caracteres modificado que haya cargado allí permanecerá intacto. También crea un archivo AUTORUN.SYS; si lo desea en el mismo disco que el conmutador BASIC mencionado anteriormente, deberá renombrarlo (línea 30). La rutina del controlador RESET se carga en la Página Seis, en el byte 1616 ($650). Ambos programas se pueden cargar desde DOS con el comando "L".
Intercambio del SO desde la ROM a la RAM
10 GRAPHICS 0:DIM A$(10):? "CONTROLADOR DE S.O. DE ROM A RAM" 15 PRINT "POR Matthew Ratcliff 25/3/85" 20 PRINT :PRINT "CUANDO TENGA LISTO SU DISCO DOS, PRESIONE RETURN;" 25 INPUT A$ 30 TRAP 200:OPEN #1,8,0,"D:AUTORUN.SYS" 40 RESTORE 50 READ A:IF A<0 THEN 100 60 PUT #1,A:GOTO 50 100 CLOSE #1:PRINT "CONVERTIDOR DE S.O. DE ROM->RAM DE 64K" 105 PRINT "ARCHIVO AUTORUN.SYS COMPLETO." 110 PRINT "!ASEGURESE DE GUARDAR ESTE CARGADOR" 115 PRINT "COMO RESPALDO!":END 200 PRINT "ERROR INESPERADO "; 205 PRINT PEEK(195):PRINT "EN LA LINEA ";PEEK(186)+256*PEEK (187) 210 END 1000 DATA 255,255,0,52,105,53,169,80,133,2 1005 DATA 133,216,169,6,133,3,133,217,165,9 1010 DATA 9,2,133,9,160,0,169,144,133,222,169 1015 DATA 52,133,223,173,60,53,133,214,177 1020 DATA 222,145,216,230,222,208,2,230,223 1025 DATA 230,216,208,2,230,217,198,214,208,236,76 1030 DATA 91,52,205,225,244,170,210,225,244,167 1035 DATA 243,160,210,207,205,173,190,210,193,205 1040 DATA 160,200,225,238,228,236,229,242,160,242 1045 DATA 229,225,228,249,174,155,4,162,56,160 1050 DATA 52,32,61,53,76,136,52,160,160,160,208 1055 DATA 210,197,211,211,160,167,210,197,211 1060 DATA 197,212,167,160,203,229,249,160,244 1065 DATA 239,160,229,238,225,226,236,229,174,160,160 1070 DATA 155,4,162,101,160,52,32,61,53,96 1075 DATA 169,80,133,2,169,6,133,3,165,9 1080 DATA 9,2,133,9,120,169,0,141,47,2,133 1085 DATA 16,141,0,212,141,14,210,141,14 1090 DATA 212,133,219,169,1,133,66,169,192 1095 DATA 133,217,169,204,133,218,160,0,240,81,169 1100 DATA 216,133,217,132,218,230,219,208,71 1105 DATA 169,128,133,16,141,14,210,169,64,141,14 1110 DATA 212,169,34,141,47,2,141,0,212,198 1115 DATA 66,88,162,96,169,12,157,66,3,32 1120 DATA 86,228,162,96,169,3,157,66,3,169 1125 DATA 83,141,0,4,169,58,141,1,4,169 1130 DATA 4,157,69,3,169,0,157,75,3,157 1135 DATA 68,3,169,28,157,74,3,76,86,228 1140 DATA 132,216,173,1,211,9,1,141,1,211 1145 DATA 177,216,170,173,1,211,41,254,141,1 1150 DATA 211,138,145,216,230,216,208,230,230 1155 DATA 217,165,218,197,217,208,222,165,219,240,135 1160 DATA 208,143,173,142,68,3,134,212,140 1165 DATA 69,3,132,213,160,0,140,72,3,140,73 1170 DATA 3,177,212,201,4,240,11,238,72,3 1175 DATA 208,3,238,73,3,200,208,239,169,11 1180 DATA 162,0,141,66,3,76,86,228,226,2,227 1185 DATA 2,0,52,-1
Parchado del BASIC Revisión B
Este pequeño programa corrige su BASIC Revisión B (vea arriba) copiando la ROM del BASIC a la RAM y escribiendo los bytes correctos en su lugar. Actualiza su BASIC de la versión B a la versión C, sin necesidad de chips de ROM ni cartuchos (recomiendo comprar una nueva ROM Revisión C de Atari). Esto significa que su BASIC también es modificable, ya que ahora está en RAM. Matt, el mago, lo vuelve a hacer. Le sugiero que acceda al BBS Gateway y descargue sus programas si aún no lo ha hecho.
Convertidor del BASIC Revision B a Revision C
10 REM COVERTIDOR DEL BASIC REV. B(UGS) 20 REM A LA REV. C DE LOS 800XL & 30 REM 64K-600XL 35 REM Por Matthew J. W. Ratcliff 5/4/85 40 REM ESTE CARGADOR CREA UN ARCHIVO 50 REM AUTORUN.SYS PARA USTED. 60 REM SE RECOMIENDA MOVER RAMTOP 70 REM HACIA ABAJO CUANDO ESTE EN 80 RAM LA RAM O EL BASIC, YA QUE 80 REM ALGUNOS COMANDOS GRAFICOS 90 REM DEL ATARI LIMPIAN LA RAM 95 REM ENCIMA DE RAMTOP 100 REM (POR EJ. POKE 106,PEEK(106)-4:GR.0-6) 110 REM (POR EJ. POKE 106,PEEK(106)-16:GR.7-11) 120 RESTORE 130 GRAPHICS 0:DIM A$(10) 140 ? "PRESIONE LA TECLA RETURN CUANDO TENGA" 150 ? "SU DISCO LISTO PARA GUARDAR EL ARCHIVO" 155 ? "AUTORUN DE LA REV. B A LA C" 160 TRAP 220: INPUT A$ 170 OPEN #1,8,0,"D:AUTORUN.SYS" 180 READ A:IF A<0 THEN 200 190 PUT #1,A:GOTO 180 200 CLOSE #1:? "** LISTO **" 210 ? "GUARDE ESTE CARGADOR COMO RESPALDO":? "!SOLO POR SI ACASO!":END 220 ? "ERROR # ";PEEK(195);" EN LA LINEA ";PEEK (186)+256*PEEK(187):END 1000 DATA 255,255,0,6,130,6,169,0,133,2 1010 DATA 169,6,133,3,173,250,3,240,1,96 1020 DATA 169,0,133,216,169,160,133,217,160,0 1030 DATA 173,1,211,41,253,141,1,211,177,216 1040 DATA 72,173,1,211,9,2,141,1,211,104 1050 DATA 145,216,230,216,208,228,230,217,165,217 1060 DATA 201,192,208,220,162,0,169,12,133,218 1070 DATA 160,0,189,95,6,133,216,232,189,95 1080 DATA 6,133,217,232,189,95,6,145,216,232 1090 DATA 198,218,208,232,165,9,9,2,133,9 1100 DATA 96,223,168,234,224,168,240,225,168,17 1110 DATA 226,168,234,41,187,0,243,191,0,244 1120 DATA 191,0,245,191,0,246,191,0,247,191 1130 DATA 0,248,191,0,249,191,0,226,2,227 1140 DATA 2,0,6,-1