Este es un resumen y traducción parcial del siguiente mapa de memoria del Commodore 64. Para más información, en inglés, sobre los elementos en la memoria del C64 consulta la siguiente documentación.
Dirección | Hexadecimal | Defecto | Descripción |
---|---|---|---|
0 | $0000 | $2F (00101111) | Configuración del registro de puertos de la CPU. Bits 0-7: 0 = Lectura; 1 = Escritura/Lectura. |
1 | $0001 | $37 (00110111) | Registro de puertos de la CPU: Bits 0-2: Configuración de los bloques de memoria en $A000-$BFFF, $D000-$DFFF y $E000-$FFFF. + 000;100 = RAM visible en los tres bloques. + x01 = RAM visible en $A000-$BFFF y $E000-$FFFF. + x10 = RAM visible en $A000-$BFFF y KERNAL ROM visible en $E000-$FFFF. + x11 = BASIC ROM visible en $A000-$BFFF y KERNAL ROM visible en $E000-$FFFF. + 0xx = ROM de caracteres visible en $D000-$DFFF (excepto valor 000). + 1xx = Chips E/S visibles en $D000-$DFFF (excepto valor 100). Bit 3: Nivel de señal de salida del datasette. Bit 4: Estado de los botones del datasette: 0 = Uno o más botones pulsados; 1 = Ningún botón pulsado. Bit 5: Control del motor del datasette: 0 = Encendido; 1 = Apagado. |
2 | $0002 | - | Sin uso. |
3-4 | $0003-$0004 | $B1AA | Sin uso (dirección de la rutina de conversión de números flotantes a enteros). |
5-6 | $0005-$0006 | $B391 | Sin uso (dirección de la rutina de conversión de números enteros a flotantes). |
7 | $0007 | - | Usado por varias operaciones (INPUT , AND , OR , INT ). |
8 | $0008 | - | Usado por varias operaciones (tokenizer, AND , OR ). |
9 | $0009 | - | Columna actual al usar SPC y TAB . |
10 | $000A | - | Flag LOAD /VERIFY ($00 = LOAD ; $01-$FF = VERIFY ). |
11 | $000B | - | Usado por varias operaciones (tokenizer, editor BASIC, flag AND /OR , dimensiones de un array). |
12 | $000C | - | Flag para operaciones con arrays ($00 = Fuera de un DIM ; $40-$FF = Dentro de un DIM ). |
13 | $000D | - | Tipo de expresión ($00 = Numérica; $FF = Cadena). |
14 | $000E | - | Tipo de expresión numérica (Bit 7: 0 = Flotante; 1 = Entera). |
15 | $000F | - | + Modo de dobles comillas del tokenizer (Bit 6: 0 = Desactivado; 1 = Activado) o de LIST ($00 = Desactivado; $FE = Activado).+ Recolector de basura al reservar memoria para cadenas ($00-$7F = Recolección no realizada; $80 = Recolección realizada). |
16 | $0010 | - | Flag durante la obtención del nombre de variable ($00 = Se aceptan variables enteras; $01-$FF = No se aceptan variables enteras). |
17 | $0011 | - | Flag GET /INPUT /READ ($00 = GET ; $40 = INPUT ; $98 = READ ). |
18 | $0012 | - | Signo durante SIN y TAN ($00 = Positivo; $FF = Negativo). |
19 | $0013 | $00 | Número de dispositivo de E/S actual. (Por defecto el teclado para la entrada y la pantalla para la salida.) |
20-21 | $0014-$0015 | - | Usado por varias operaciones (GOSUB , GOTO , RUN , LIST , PEEK , POKE , SYS y WAIT ). |
22 | $0016 | - | Puntero a la siguiente expresión en la pila de cadenas. |
23-24 | $0017-$0018 | - | Puntero a la anterior expresión en la pila de cadenas. |
25-33 | $0019-$0021 | - | Área temporal para procesar expresiones de cadenas (9 bytes, 3 entradas). |
34-37 | $0022-$0025 | - | Área temporal para varias operaciones (4 bytes). |
38-41 | $0026-$0029 | - | Registro aritmético auxiliar para divisiones y multiplicaciones (4 bytes). |
42 | $002A | - | Sin uso salvo para responder cuál es el sentido de la vida, el universo y todo lo demás. |
43-44 | $002B-$002C | $0801 | Puntero al inicio de la memoria de programas BASIC. |
45-46 | $002D-$002E | - | Puntero al inicio del bloque de variables. (Final de programa +1.) |
47-48 | $002F-$0030 | - | Puntero al inicio del bloque de variables de arrays. |
49-50 | $0031-$0032 | - | Puntero al final del bloque de variables. |
51-52 | $0033-$0034 | - | Puntero al inicio del bloque de variables de cadenas. (Crece desde el final de la memoria de programas BASIC hacia abajo.) |
53-54 | $0035-$0036 | - | Puntero a la memoria reservada para la variable de cadena actual. |
55-56 | $0037-$0038 | $A000 | Puntero al final de la memoria de programas BASIC. |
57-58 | $0039-$003A | - | Línea actual de BASIC: + $0000-$F9FF (0-63999) = Número de línea. + $FF00-$FFFF = Modo directo, no se está ejecutando ningún programa BASIC. |
59-60 | $003B-$003C | - | Línea actual de BASIC para CONT . |
61-62 | $003D-$003E | - | Puntero a la siguiente instrucción BASIC para CONT :+ $0000-$00FF = No es posible continuar. + $0100-$FFFF = Puntero a la siguiente instrucción. |
63-64 | $003F-$0040 | - | Línea actual de BASIC para el elemento actual de DATA para READ . |
65-66 | $0041-$0042 | - | Puntero al siguiente elemento DATA para READ . |
67-68 | $0043-$0044 | - | Puntero al resultado durante GET , INPUT y READ . |
69-70 | $0045-$0046 | - | Nombre y tipo de la variable actual: + Bits 0-6 de $0045: Primer carácter del nombre. + Bits 0-6 de $0046: Segundo carácter del nombre. + Bit 7 de $0045 y $0046: 00 = Flotante; 01 = Cadena; 10 = Función; 11 = Entera. |
71-72 | $0047-$0048 | - | Puntero al valor de la variable o función FN actual. |
73-74 | $0049-$004A | - | Usado por varias operaciones (LET , WAIT , OPEN , CLOSE , LOAD , SAVE y VERIFY ). |
75-76 | $004B-$004C | - | Área temporal para guardar el puntero original a la instrucción BASIC actual durante GET , INPUT y READ . |
77 | $004D | - | Indicador de operador de comparación: + Bit 1: 1 = > se encuentra en la expresión.+ Bit 2: 1 = = se encuentra en la expresión.+ Bit 3: 1 = < se encuentra en la expresión. |
78-79 | $004E-$004F | - | Puntero a la función FN actual. |
80-81 | $0050-$0051 | - | Puntero a la variable de cadena actual durante la reserva de memoria. |
82 | $0052 | - | Sin uso. |
83 | $0053 | - | Tamaño del incremento en la recolección de basura. |
84-86 | $0054-$0056 | - | Instrucción JMP ABS para saltar a la función BASIC actual, cuya dirección está en $0055-$0056 . |
87-91 | $0057-$005B | - | Registro aritmético 3 (5 bytes). |
92-96 | $005C-$0060 | - | Registro aritmético 4 (5 bytes). |
97-101 | $0061-$0065 | - | FAC: Registro aritmético 1 (5 bytes). |
102 | $0066 | - | Signo del FAC (Bit 7: 0 = Positivo; 1 = Negativo). |
103 | $0067 | - | Número de grados durante una evaluación polinómica. |
104 | $0068 | - | Área temporal durante varias operaciones. |
105-109 | $0069-$006D | - | ARG: Registro aritmético 2 (5 bytes). |
110 | $006E | - | Signo del ARG (Bit 7: 0 = Positivo; 1 = Negativo). |
111-112 | $006F-$0070 | - | Puntero a la primera expresión de cadena durante una comparación de cadenas. |
113-114 | $0071-$0072 | - | Usado por varias operaciones (arrays, VAL , evaluación polinómica). |
115-138 | $0073-$008A | - | Usado por CHRGET para leer el siguiente byte de un programa BASIC o comando directo (24 bytes). Dirección $0079: Usado por CHRGOT para leer el byte actual de un programa BASIC o comando directo. Dirección $007A-$007B: Puntero al byte actual de un programa BASIC o comando directo. |
139-143 | $008B-$008F | - | Resultado anterior de RND . |
144 | $0090 | - | Valor de la variable STATUS para el estado del dispositivo para la E/S del puerto serie y el datasette. Bits del puerto serie:+ Bit 0: Dirección al presentarse un timeout 0 = Entrada; 1 = Salida. + Bit 1: 1 = Error de timeout. + Bit 4: 1 = Error en VERIFY .+ Bit 6: 1 = Final de fichero. + Bit 7: 1 = Error de dispositivo no encontrado. Bits del datasette: + Bit 2: 1 = Bloque demasiado corto (< 192 bytes). + Bit 3: 1 = Bloque demasiado largo (> 192 bytes). + Bit 4: 1 = Error en VERIFY .+ Bit 5: 1 = Error de checksum . + Bit 6: 1 = Final de fichero (sólo mientras está leyendo) . |
145 | $0091 | - | Estado de la tecla RUN/STOP ($7F = Pulsada; $FF = No pulsada). |
146 | $0092 | - | Desconocido. (Constante de tiempo durante la entrada del datasette.) |
147 | $0093 | - | Flag LOAD /VERIFY ($00 = LOAD ; $01-$FF = VERIFY ). |
148 | $0094 | - | Estado de la cache de salida del puerto serie (Bit 7: 1 = Cache de salida modificada, hay que transferir el contenido en la próxima salida del bus). |
149 | $0095 | - | Cache de salida del puerto serie, byte previo para enviar al bus. |
150 | $0096 | - | Desconocido. (Indicador de final de cinta durante la E/S del datasette.) |
151 | $0097 | - | Área temporal para guardar el valor original del registro X durante la entrada del RS-232 o el registro Y durante la entrada del datasette. |
152 | $0098 | - | Número de ficheros actualmente abiertos (0-10). |
153 | $0099 | $00 | Número de dispositivo de entrada actual (teclado por defecto). |
154 | $009A | $03 | Número de dispositivo de salida actual (pantalla por defecto). |
155 | $009B | - | Desconocido. (Bit de paridad durante la E/S del datasette.) |
156 | $009C | - | Desconocido. (Indicador de byte preparado durante la E/S del datasette.) |
157 | $009D | - | Flag de mostrar errores del sistema: + Bit 6: 0 = Eliminar mensajes de errores de E/S; 1 = Mostrarlos. + Bit 7: 0 = Eliminar mensajes de errores de sistema; 1 = Mostrarlos. |
158 | $009E | - | Usado por varias operaciones (E/S del RS-232 y del datasette, LOAD ). |
159 | $009F | - | Usado por varias operaciones (E/S del datasette, LOAD ). |
160-162 | $00A0-$00A2 | - | Variable TIME (hora del día), incrementada en una unidad cada 60 Hz. |
163 | $00A3 | - | Flag EOI durante la salida del puerto serie (Bit 7: 0 = Enviar byte después del handshake; 1 = Realizar retardo EOI primero). Contador de bits durante la salida del datasette. |
164 | $00A4 | - | Buffer de bytes durante la entrada del puerto serie. Paridad durante la E/S del datasette. |
165 | $00A5 | - | Contador de bits durante la E/S del puerto serie. Contador de la marca de sincronización durante la salida del datasette. |
166 | $00A6 | - | Desplazamiento del byte actual en el buffer del datasette. |
167 | $00A7 | - | Buffer de bits durante la entrada del RS-232. |
168 | $00A8 | - | Contador de bits durante la entrada del RS-232. |
169 | $00A9 | - | Flag de parada de bit durante la entrada del RS-232 ($00 = Bit de datos; $01-$FF = Bit de parada). |
170 | $00AA | - | Buffer de bytes durante la entrada del RS-232. |
171 | $00AB | - | Paridad durante la entrada del RS-232. Checksum de bloque durante la entrada del datasette. |
172-173 | $00AC-$00AD | - | Usado por varias operaciones (SAVE , desplazamiento de pantalla). |
174-175 | $00AE-$00AF | - | Usado por varias operaciones (LOAD , VERIFY , SAVE , desplazamiento del color de pantalla). |
176-177 | $00B0-$00B1 | - | Desconocido. |
178-179 | $00B2-$00B3 | $033C | Puntero al buffer del datasette. |
180 | $00B4 | - | Flag de contador de bits y bits de parada durante la salida del RS-232 (Bits 0-6: Contador de bits; Bit 7: 0 = Bit de datos; 1 = Bit de parada). Contador de bits durante la E/S del datasette. |
181 | $00B5 | - | Buffer de bits durante la salida del RS-232. |
182 | $00B6 | - | Buffer de bytes durante la salida del RS-232. |
183 | $00B7 | - | Tamaño del nombre de fichero o comando de discos ($00 = Sin parámetro; $01-$FF = Tamaño). Usado por LOAD , SAVE , VERIFY y OPEN . |
184 | $00B8 | - | Identificador del fichero actual. |
185 | $00B9 | - | Modo secundario del fichero actual. |
186 | $00BA | - | Número de dispositivo del fichero actual. |
187-188 | $00BB-$00BC | - | Puntero al nombre de fichero o comando de discos actual. Usado por LOAD , SAVE , VERIFY y OPEN . |
189 | $00BD | - | Paridad durante la salida del RS-232. Buffer de bytes durante la E/S del datasette. |
190 | $00BE | - | Bloqueo del contador durante la E/S del datasette. |
191 | $00BF | - | Desconocido. |
192 | $00C0 | - | Flag del motor del datasette: + $00 = Ningún botón pulsado, motor desactivado. Si se pulsa algún botón se activará el motor. + $01-$FF = Motor activado. |
193-194 | $00C1-$00C2 | - | Usado por varias operaciones (LOAD , VERIFY , SAVE , test de memoria). |
195-196 | $00C3-$00C4 | - | Usado por varias operaciones (LOAD , VERIFY , vectores de E/S). |
197 | $00C5 | - | Código matriz de tecla previamente pulsado ($00-$3F = Tecla; $40 = Nada pulsado). |
198 | $00C6 | - | Tamaño del buffer de teclado ($00 = Vacío; $01-$0A = Tamaño). |
199 | $00C7 | - | Flag modo inverso ($00 = Normal; $12 = Invertido). |
200 | $00C8 | - | Tamaño de línea menos 1 durante la entrada de pantalla (39, 79). |
201 | $00C9 | - | Fila del cursor durante la entrada de pantalla (0-24). |
202 | $00CA | - | Columna del cursor durante la entrada de pantalla (0-39). |
203 | $00CB | - | Código matriz de tecla actualmente pulsado ($00-$3F = Tecla; $40 = Nada pulsado). |
204 | $00CC | - | Flag de visibilidad del cursor ($00 = Encendido; $01-$FF = Apagado). |
205 | $00CD | - | Retardo del cambio de fase del cursor ($00 = Debe cambiar de fase; $01-$14 = Retardo). |
206 | $00CE | - | Código de pantalla del carácter bajo el cursor. |
207 | $00CF | - | Flag de fase del cursor ($00 = Fase apagada, carácter original visible; $01 = Fase encendida, carácter invertido visible). |
208 | $00D0 | - | Flag de fin de línea durante la entrada de pantalla ($00 = Carácter de retorno alcanzado, fin de línea (EOL); $01-$FF = Seguir leyendo caracteres de la línea). |
209-210 | $00D1-$00D2 | - | Puntero a la línea actual de la memoria de pantalla. |
211 | $00D3 | - | Columna actual del cursor (0-39). |
212 | $00D4 | - | Flag modo comillas dobles ($00 = Modo normal; $01 = Modo comillas dobles). |
213 | $00D5 | - | Tamaño de línea actual de pantalla menos 1 (39, 79). |
214 | $00D6 | - | Fila actual del cursor (0-24). |
215 | $00D7 | - | Usado por varias operaciones (E/S de pantalla, datasette). |
216 | $00D8 | - | Número de inserciones ($00 = Ninguna; $01-$FF = Inserciones). Cuando se insertan huecos en una línea, la entrada de la pantalla actuará de forma similar al modo comillas dobles para esas posiciones. |
217-241 | $00D9-$00F1 | - | Byte alto de punteros a cada línea en la memoria de pantalla (25 bytes; $00-$7F = Byte alto del puntero; $80-$FF = Sin puntero, la línea es una extensión de la anterior). |
242 | $00F2 | - | Área temporal durante el desplazamiento de la pantalla. |
243-244 | $00F3-$00F4 | - | Puntero a la línea actual en la RAM de color. |
245-246 | $00F5-$00F6 | - | Puntero a la tabla de conversión durante la traducción de códigos de matriz de teclado a PETSCII. |
247-248 | $00F7-$00F8 | - | Puntero al buffer de entrada del RS-232 ($0000-$00FF = Buffer no definido; $0100-$FFFF = Puntero al buffer). |
249-250 | $00F9-$00FA | - | Puntero al buffer de salida del RS-232 ($0000-$00FF = Buffer no definido; $0100-$FFFF = Puntero al buffer). |
251-254 | $00FB-$00FE | - | Sin uso (4 bytes). |
255-266 | $00FF-$010A | - | Buffer para convertir número flotantes a cadena (12 bytes). NOTA: Invade el espacio final de la pila de programa. |
Dirección | Hexadecimal | Descripción |
---|---|---|
256-317 | $0100-$013D | Punteros a los bytes de lectura con errores durante la lectura del datasette (62 bytes, 31 entradas). |
256-511 | $0100-$01FF | Pila del procesador. También se utiliza para almacenar datos para gestionar los FOR y los GOSUB . |
Dirección | Hexadecimal | Defecto | Descripción |
---|---|---|---|
512-600 | $0200-$0258 | - | Buffer de entrada, para leer datos de la pantalla (89 bytes). |
601-610 | $0259-$0262 | - | Identificadores de ficheros abiertos (10 bytes, 10 entradas). |
611-620 | $0263-$026C | - | Dispositivos de los ficheros abiertos (10 bytes, 10 entradas). |
621-630 | $026D-$0276 | - | Modo secundario de los ficheros abiertos (10 bytes, 10 entradas). |
631-640 | $0277-$0280 | - | Buffer de teclado (10 bytes, 10 entradas). |
641-642 | $0281-$0282 | $0800 | Puntero al inicio de la memoria para BASIC después del test de memoria. |
643-644 | $0283-$0284 | $A000 | Puntero al final de la memoria para BASIC después del test de memoria. |
645 | $0285 | - | Sin uso (timeout del puerto serie). |
646 | $0286 | - | Color del cursor ($00-$0F). |
647 | $0287 | - | Color del carácter bajo el cursor ($00-$0F). |
648 | $0288 | $04 | Byte alto del puntero a la memoria de pantalla para la entrada/salida de la terminal. |
649 | $0289 | - | Tamaño máximo del buffer de teclado ($00 = Sin buffer; $01-$0F = Tamaño). |
650 | $028A | - | Flag de repetición del teclado. Bits 6-7: 00 = ⇑CRSR⇓ , ⇐CRSR⇒ , INST/DEL y SPACE ; 01 = Ninguna; 1x = Todas. |
651 | $028B | - | Retardo durante la repetición, entre sucesivas repeticiones ($00 = Sin retardo; $01-$04 = Con retardo). |
652 | $028C | - | Retardo durante la repetición, para retardar antes de la primera repetición ($00 = Sin retardo; $01-$04 = Con retardo). |
653 | $028D | - | Indicador de teclas modificadoras: + Bit 0: 1 = Alguna tecla SHIFT está pulsada.+ Bit 1: 1 = La tecla C= está pulsada.+ Bit 2: 1 = La tecla CTRL está pulsada. |
654 | $028E | - | Indicador previo de teclas modificadoras en el anterior escaneo: + Bit 0: 1 = Alguna tecla SHIFT estuvo pulsada.+ Bit 1: 1 = La tecla C= estuvo pulsada.+ Bit 2: 1 = La tecla CTRL estuvo pulsada. |
655-656 | $028F-$0290 | $EB48 | Puntero a la rutina, que basada en el estado de las teclas modificadoras, modifica el puntero en la dirección $00F5-$00F6 a la tabla de conversión pertinente que traduce códigos de teclado a PETSCII. |
657 | $0291 | - | Flag C= +SHIFT para cambiar entre los modos de fuente de la terminal (Bit 7: 0 = Activado; 1 = Desactivado). |
658 | $0292 | - | Flag de dirección del desplazamiento en la terminal ($00 = Insertar líneas desplazando hacia abajo; $01-$FF = Insertar líneas desplazando hacia arriba). |
659 | $0293 | - | Registro de control del RS-232: + Bits 0-3: Velocidad de transferencia en baudios. Valores: 0000 = Valor Usuario; 0001 = 50 bit/s; 0010 = 75 bit/s; 0011 = 110 bit/s; 0100 = 150 bit/s; 0101 = 300 bit/s; 0110 = 600 bit/s; 0111 = 1200 bit/s; 1000 = 2400 bit/s; 1001 = 1800 bit/s; 1010 = 2400 bit/s; 1011 = 3600 bit/s; 1100 = 4800 bit/s; 1101 = 7200 bit/s; 1110 = 9600 bit/s; 1111 = 19200 bit/s. + Bits 5-6: Número de bits de datos por byte (00 = 8; 01 = 7; 10 = 6; 11 = 5). + Bit 7: Número de bits de parada (0 = 1; 1 = 2). |
660 | $0294 | - | Registro de comandos del RS-232: + Bit 0: Tipo de sincronización (0 = 3 líneas; 1 = X líneas). + Bit 4: Tipo de transmisión (0 = Duplex; 1 = Half duplex). + Bits 5-7: Modo de paridad. Valores: xx0 = Sin comprobación de paridad, el bit 7 no existe; 001 = Paridad impar; 011 = Paridad par; 101 = Sin comprobación de paridad, el bit 7 es siempre 1; 111 = Sin comprobación de paridad, el bit 7 es siempre 0. |
661-662 | $0295-$0296 | - | Valor por defecto del reloj de salida del RS-232, basado en la velocidad en baudios. (Debe ser configurado, antes de cualquier operación de E/S, si la velocidad en baudios es “Valor Usuario” en $0293.) |
663 | $0297 | - | Valor de la variable STATUS para el estado del dispositivo para la E/S del RS-232:+ Bit 0: 1 = Error de paridad. + Bit 1: 1 = Error de marco (bit de stop con el valor 0). + Bit 2: 1 = Desbordamiento del buffer de entrada (demasiada información ha llegado sin ser leída del buffer). + Bit 3: 1 = Buffer de entrada vacío, nada que leer. + Bit 4: 0 = Sender en CTS; 1 = Sender no preparado para enviar. + Bit 6: 0 = Receiver en DSR; 1 = Receiver no preparado para recibir. + Bit 7: 1 = Fallo de envío, un bit de parada y de datos ambos con el valor 0. |
664 | $0298 | - | Tamaño de byte del RS-232, número de bits de datos por byte de datos, valor por defecto del conteo de bits. |
665-666 | $0299-$029A | - | Valor por defecto del reloj de entrada del RS-232, basado en la velocidad en baudios. (Calculado automáticamente con el valor en $0295-$0296.) |
667 | $029B | - | Desplazamiento del byte recibido en el búfer de entrada RS-232. |
668 | $029C | - | Desplazamiento del byte actual en el búfer de entrada RS-232. |
669 | $029D | - | Desplazamiento del byte recibido en el búfer de salida RS-232. |
670 | $029E | - | Desplazamiento del byte actual en el búfer de salida RS-232. |
671-672 | $029F-$02A0 | - | Área temporal para guardar el puntero original a la rutina de servicio de interrupciones durante la E/S del datasette: + $0000-$00FF = Ninguna E/S del datasette ha ocurrido o el puntero original ya ha sido restaurado. + $0100-$FFFF = El puntero original, E/S del datasette actualmente en progreso. |
673 | $02A1 | - | Área temporal para guardar el estado original del registro de control de interrupciones de la CIA2 ($DD0D) durante la E/S del RS-232. |
674 | $02A2 | - | Área temporal para guardar el estado original del registro de control de la cuenta atrás B de la CIA2 ($DC0F) durante la E/S del datasette. |
675 | $02A3 | - | Área temporal para guardar el estado original del registro de control de interrupciones de la CIA1 ($DC0D) durante la E/S del datasette. |
676 | $02A4 | - | Área temporal para guardar el estado original del registro de control de la cuenta atrás A de la CIA2 ($DC0E) durante la E/S del datasette. |
677 | $02A5 | - | Número de línea siendo desplazada durante el desplazamiento de la pantalla. |
678 | $02A6 | - | Flag PAL/NTSC, para seleccionar la velocidad adecuada en baudios para el RS-232 ($00 = NTSC; $01 = PAL). |
679-767 | $02A7-$02FF | - | Sin uso (89 bytes). |
Dirección | Hexadecimal | Defecto | Descripción |
---|---|---|---|
768-769 | $0300-$0301 | $E38B | Puntero a la rutina de reinicio suave, mostrando si hay algún mensaje de error y entrando en el bucle de inactividad de BASIC. |
770-771 | $0302-$0303 | $A483 | Puntero a la rutina del bucle de inactividad de BASIC. |
772-773 | $0304-$0305 | $A57C | Puntero a la rutina del tokenizer de BASIC. |
774-775 | $0306-$0307 | $A71A | Puntero a la rutina de descodificación de tokens de BASIC. |
776-777 | $0308-$0309 | $A7E4 | Puntero a la rutina de ejecución de instrucciones BASIC. |
778-779 | $030A-$030B | $AE86 | Puntero a la rutina que lee el siguiente elemento en una expresión BASIC. |
780 | $030C | - | Registro A para SYS . |
781 | $030D | - | Registro X para SYS . |
782 | $030E | - | Registro Y para SYS . |
783 | $030F | - | Registro de estado para SYS . |
784-786 | $0310-$0312 | - | Instrucción JMP ABS para saltar a la función USR , cuya dirección está en $0311-$0312. |
787 | $0313 | - | Sin uso. |
788-789 | $0314-$0315 | $EA31 | Puntero a la rutina de servicio de interrupciones. |
790-791 | $0316-$0317 | $FE66 | Puntero a la rutina de servicio BRK. |
792-793 | $0318-$0319 | $FE47 | Puntero a la rutina de servicio de interrupciones no-enmascarables. |
794-795 | $031A-$031B | $F34A | Puntero a OPEN, rutina para abrir ficheros. |
796-797 | $031C-$031D | $F291 | Puntero a CLOSE, rutina para cerrar ficheros. |
798-799 | $031E-$031F | $F20E | Puntero a CHKIN, rutina para definir un fichero como entrada por defecto. |
800-801 | $0320-$0321 | $F250 | Puntero a CHKOUT, rutina para definir un fichero como salida por defecto. |
802-803 | $0322-$0323 | $F333 | Puntero a CLRCHN, rutina de inicialización de la E/S. |
804-805 | $0324-$0325 | $F157 | Puntero a CHRIN, rutina de entrada de datos, salvo para el teclado y RS-232. |
806-807 | $0326-$0327 | $F1CA | Puntero a CHROUT, rutina de salida de datos de propósito general. |
808-809 | $0328-$0329 | $F6ED | Puntero a STOP, rutina para comprobar el estado del indicador de la tecla RUN/STOP , en la dirección $0091. |
810-811 | $032A-$032B | $F13E | Puntero a GETIN, rutina de entrada de datos de propósito general. |
812-813 | $032C-$032D | $F32F | Puntero a CLALL, rutina para inicializar la E/S y limpiar la tablas de asignación de ficheros. |
814-815 | $032E-$032F | $FE66 | Sin uso. |
816-817 | $0330-$0331 | $F4A5 | Puntero a LOAD, rutina de cargar ficheros. |
818-819 | $0332-$0333 | $F5ED | Puntero a SAVE, rutina de guardar fichero. |
820-827 | $0334-$033B | - | Sin uso (8 bytes). |
828-1019 | $033C-$03FB | - | Buffer del datasette (192 bytes). |
1020-1023 | $03FC-$03FF | - | Sin uso (4 bytes). |
Dirección | Hexadecimal | Descripción |
---|---|---|
1024-2023 | $0400-$07E7 | Buffer de pantalla (1000 bytes). |
2024-2039 | $07E8-$07F7 | Sin uso (16 bytes). |
2040-2047 | $07F8-$07FF | Punteros de sprites (8 bytes). |
NOTA: Al iniciar el C64 esta es la región por defecto para el buffer de pantalla y los punteros de sprite, pero se puede cambiar esa configuración en los registros del VIC-II.
Dirección | Hexadecimal | Descripción |
---|---|---|
2048 | $0800 | Sin uso (necesita el valor 0 para poder ejecutar los programas BASIC). |
2049-40959 | $0801-$9FFF | Memoria para programas BASIC (38911 bytes). |
32768-40959 | $8000-$9FFF | ROM de cartuchos opcional (8192 bytes). $8000-$8001: Puntero a la ejecución del reinicio frío. $8002-$8003: Puntero a la ejecución de rutinas de interrupción no enmascarables. $8004-$8008: Firma del cartucho, si contiene la cadena PETSCII "CBM80" los vectores de rutinas son aceptados por el KERNAL. |
40960-49151 | $A000-$BFFF | ROM BASIC/Memoria RAM. |
49152-53247 | $C000-$CFFF | Memoria RAM superior. |
Dirección | Hexadecimal | Descripción |
---|---|---|
53248-55295 | $D000-$D7FF | Fuente del modo mayúsculas (2048 bytes, 256 caracteres). |
55295-57343 | $D800-$DFFF | Fuente del modo minúsculas (2048 bytes, 256 caracteres). |
NOTA: Por defecto esta ROM no es accesible, porque la memoria está configurada para acceder a los registros en memoria del VIC-II, SID, CIA1 y CIA2, para realizar operaciones de entrada y salida.
Dirección | Hexadecimal | Defecto | Descripción |
---|---|---|---|
53248 | $D000 | - | Coordenada X del sprite 0 (bits del 0-7). |
53249 | $D001 | - | Coordenada Y del sprite 0. |
53250 | $D002 | - | Coordenada X del sprite 1 (bits del 0-7). |
53251 | $D003 | - | Coordenada Y del sprite 1. |
53252 | $D004 | - | Coordenada X del sprite 2 (bits del 0-7). |
53253 | $D005 | - | Coordenada Y del sprite 2. |
53254 | $D006 | - | Coordenada X del sprite 3 (bits del 0-7). |
53255 | $D007 | - | Coordenada Y del sprite 3. |
53256 | $D008 | - | Coordenada X del sprite 4 (bits del 0-7). |
53257 | $D009 | - | Coordenada Y del sprite 4. |
53258 | $D00A | - | Coordenada X del sprite 5 (bits del 0-7). |
53259 | $D00B | - | Coordenada Y del sprite 5. |
53260 | $D00C | - | Coordenada X del sprite 6 (bits del 0-7). |
53261 | $D00D | - | Coordenada Y del sprite 6. |
53262 | $D00E | - | Coordenada X del sprite 7 (bits del 0-7). |
53263 | $D00F | - | Coordenada Y del sprite 7. |
53264 | $D010 | - | Bit 8 de la coordenada X de los sprites 0-7. |
53265 | $D011 | $1B (00011011) | Registro de control de la pantalla: + Bits 0-2: Desplazamiento del raster vertical (scroll raster). + Bit 3: Altura de pantalla. 0 = 24 filas; 1 = 25 filas. + Bit 4: 0 = Pantalla apagada; 1 = Pantalla encendida. + Bit 5: 0 = Modo texto; 1 = Modo bitmap. + Bit 6: 1 = Modo fondo extendido activado. + Bit 7: Lectura: Línea actual del raster (bit 8); Escritura: Línea del raster en la que generar una interrupción (bit 8). |
53266 | $D012 | - | Lectura: Línea actual del raster (bits 0-7); Escritura: Línea del raster en la que generar una interrupción (bits 0-7). |
53267 | $D013 | - | Coordenada X del lápiz de luz (bits 1-8). |
53268 | $D014 | - | Coordenada Y del lápiz de luz. |
53269 | $D015 | - | Registro de activación de sprites. Bits 0-7: Sprite 0-7 activado para dibujarlo en pantalla. |
53270 | $D016 | $C8 (11001000) | Registro 2 de control de la pantalla: + Bits 0-2: Desplazamiento del raster horizontal (scroll raster). + Bit 3: Ancho de pantalla. 0 = 38 filas; 1 = 40 filas. + Bit 4: 1 = Modo multicolor activado. |
53271 | $D017 | - | Registro de doble altura de sprites. Bits 0-7: Doble altura del sprite 0-7 activada. |
53272 | $D018 | - | Registro de configuración de la memoria: + Bits 1-3: Puntero a la memoria de caracteres en el modo texto (bits 11-13), relativo al banco seleccionado para el VIC con $DD00. Valores: 000 = $0000-$07FF (0-2047); 001 = $0800-$0FFF (2048-4095); 010 = $1000-$17FF (4096-6143); 011 = $1800-$1FFF (6144-8191); 100 = $2000-$27FF (8192-10239); 101 = $2800-$2FFF (10240-12287); 110 = $3000-$37FF (12288-14335); 111 = $3800-$3FFF (14336-16383). (Los valores 010 y 011 con el banco 0 y 2 del VIC selecciona la ROM de caracteres en lugar de la RAM.) + Bits 1-3: Puntero a la memoria de bitmap en el modo bitmap (bit 13), relativo al banco seleccionado para el VIC con $DD00. Valores: 0xx = $0000-$1FFF (0-8191); 1xx = $2000-$3FFF (8192-16383). + Bits 4-7: Puntero a la memoria de pantalla (bits 10-13), relativo al banco seleccionado para el VIC con $DD00. Valores: 0000 = $0000-$03FF (0-1023); 0001 = $0400-$07FF (1024-2047); 0010 = $0800-$0BFF (2048-3071); 0011 = $0C00-$0FFF (3072-4095); 0100 = $1000-$13FF (4096-5119); 0101 = $1400-$17FF (5120-6143); 0110 = $1800-$1BFF (6144-7167); 0111 = $1C00-$1FFF (7168-8191); 1000 = $2000-$23FF (8192-9215); 1001 = $2400-$27FF (9216-10239); 1010 = $2800-$2BFF (10240-11263); 1011 = $2C00-$2FFF (11264-12287); 1100 = $3000-$33FF (12288-13311); 1101 = $3400-$37FF (13312-14335); 1110 = $3800-$3BFF (14336-15359); 1111 = $3C00-$3FFF (15360-16383). |
53273 | $D019 | - | Registro de estado de interrupciones. Bits de lectura: + Bit 0: 1 = La línea actual de raster es igual a la que genera una interrupción. + Bit 1: 1 = Colisión sprite-fondo. + Bit 2: 1 = Colisión sprite-sprite. + Bit 3: 1 = Señal recibida del lápiz de luz. + Bit 7: 1 = Se ha generado una interrupción, por un evento o varios, y esta no ha sido admitida. Bits de escritura: + Bit 0: 1 = Admitida una interrupción de raster. + Bit 1: 1 = Admitida una interrupción de colisión sprite-fondo. + Bit 2: 1 = Admitida una interrupción de colisión sprite-sprite. + Bit 3: 1 = Admitida una interrupción de lápiz de luz. |
53274 | $D01A | - | Registro de control de interrupciones: + Bit 0: 1 = Activa las interrupciones de raster. + Bit 1: 1 = Activa las interrupciones de colisión sprite-fondo. + Bit 2: 1 = Activa las interrupciones de colisión sprite-sprite. + Bit 3: 1 = Activa las interrupciones de lápiz de luz. |
53275 | $D01B | - | Registro de prioridad de sprites. Bits 0-7: 0 = Pintar sprite 0-7 delante de la pantalla; 1 = Pintar sprite 0-7 detrás de la pantalla. |
53276 | $D01C | - | Registro de modo multicolor de sprites. Bits 0-7: 0 = Sprite 0-7 monocolor; 1 = Sprite 0-7 multicolor. |
53277 | $D01D | - | Registro de doble anchura de sprites. Bits 0-7: Doble anchura del sprite 0-7 activada. |
53278 | $D01E | - | Registro de colisión sprite-sprite. Lectura de bits: Bits 0-7: 1 = El sprite 0-7 ha colisionado con otro sprite. Escritura de bits: Activa la detección de las colisiones sprite-sprite. |
53279 | $D01F | - | Registro de colisión sprite-fondo. Lectura de bits: Bits 0-7: 1 = El sprite 0-7 ha colisionado con el fondo. Escritura de bits: Activa la detección de las colisiones sprite-fondo. |
53280 | $D020 | - | Color del borde. Bits 0-3: 0-15. |
53281 | $D021 | - | Color del fondo. Bits 0-3: 0-15. |
53282 | $D022 | - | Color extra 1 del fondo. Bits 0-3: 0-15. |
53283 | $D023 | - | Color extra 2 del fondo. Bits 0-3: 0-15. |
53284 | $D024 | - | Color extra 3 del fondo. Bits 0-3: 0-15. |
53285 | $D025 | - | Color extra 1 de sprites. Bits 0-3: 0-15. |
53286 | $D026 | - | Color extra 2 de sprites. Bits 0-3: 0-15. |
53287 | $D027 | - | Color del sprite 0. Bits 0-3: 0-15. |
53288 | $D028 | - | Color del sprite 1. Bits 0-3: 0-15. |
53289 | $D029 | - | Color del sprite 2. Bits 0-3: 0-15. |
53290 | $D02A | - | Color del sprite 3. Bits 0-3: 0-15. |
53291 | $D02B | - | Color del sprite 4. Bits 0-3: 0-15. |
53292 | $D02C | - | Color del sprite 5. Bits 0-3: 0-15. |
53293 | $D02D | - | Color del sprite 6. Bits 0-3: 0-15. |
53294 | $D02E | - | Color del sprite 7. Bits 0-3: 0-15. |
53295-53311 | $D02F-$D03F | - | Sin uso (17 bytes). |
53312-54271 | $D040-$D3FF | - | Duplicados del VIC-II (segmentos de 64 bytes). |
Dirección | Hexadecimal | Modo L/E | Descripción |
---|---|---|---|
54272-54273 | $D400-$D401 | Escritura | Frecuencia de la voz 1 (Frequency). |
54274-54275 | $D402-$D403 | Escritura | Ancho de pulso de la voz 1 (Pulse Width). |
54276 | $D404 | Escritura | Registros de control de la voz 1: + Bit 0: 0 = Apagar voz (modo Release); 1 = Encender voz (modo Attack-Decay-Sustain). + Bit 1: 1 = Activar sincronización. + Bit 2: 1 = Activar modulación de anillo (Ring Modulator). + Bit 3: 1 = Desactivar voz, reiniciar generador de ruido (Noise Generator). + Bit 4: 1 = Activar onda triangular (Triangle). + Bit 5: 1 = Activar onda en sierra (Saw). + Bit 6: 1 = Activar onda cuadrada (Square). + Bit 7: 1 = Activar ruido (Noise). |
54277 | $D405 | Escritura | Attack y Decay de la voz 1: + Bits 0-3: Nivel de Decay (0-15). + Bits 4-7: Nivel de Attack (0-15). |
54278 | $D406 | Escritura | Sustain y Release de la voz 1: + Bits 0-3: Nivel de Release (0-15). + Bits 4-7: Volumen de Sustain (0-15). |
54279-54280 | $D407-$D408 | Escritura | Frecuencia de la voz 2 (Frequency). |
54281-54282 | $D409-$D40A | Escritura | Ancho de pulso de la voz 2 (Pulse Width). |
54283 | $D40B | Escritura | Registros de control de la voz 2. |
54284 | $D40C | Escritura | Attack y Decay de la voz 2. |
54285 | $D40D | Escritura | Sustain y Release de la voz 2. |
54286-54287 | $D40E-$D40F | Escritura | Frecuencia de la voz 3 (Frequency). |
54288-54289 | $D410-$D411 | Escritura | Ancho de pulso de la voz 3 (Pulse Width). |
54290 | $D412 | Escritura | Registros de control de la voz 3. |
54291 | $D413 | Escritura | Attack y Decay de la voz 3. |
54292 | $D414 | Escritura | Sustain y Release de la voz 3. |
54293 | $D415 | Escritura | Filtro de corte de frecuencias (Cut Off). Bits 0-2: Bits 0-2 del valor final. |
54294 | $D416 | Escritura | Filtro de corte de frecuencias (Cut Off). Bits 0-7: Bits 3-10 del valor final. |
54295 | $D417 | Escritura | Control del filtro: + Bit 0: 1 = Voz 1 filtrada. + Bit 1: 1 = Voz 2 filtrada. + Bit 2: 1 = Voz 3 filtrada. + Bit 3: 1 = Voz externa filtrada. + Bits 4-7: Resonancia del filtro (Resonance). |
54296 | $D418 | Escritura | Volumen y modos de filtrado: + Bits 0-3: Volumen. + Bit 4: 1 = Filtro de paso bajo activado (LPF). + Bit 5: 1 = Filtro de paso banda activado (BPF). + Bit 6: 1 = Filtro de paso alto activado (HPF). + Bit 7: Voz 3 desactivada. |
54297 | $D419 | Lectura | Valor X del paddle seleccionado en $DC00. (Se actualiza cada 512 ciclos.) |
54298 | $D41A | Lectura | Valor Y del paddle seleccionado en $DC00. (Se actualiza cada 512 ciclos.) |
54299 | $D41B | Lectura | Salida de onda de la voz 3. |
54300 | $D41C | Lectura | Salida del ADSR de la voz 3. |
54301-54303 | $D41D-$D41F | - | Sin uso (3 bytes). |
54304-55295 | $D420-$D7FF | - | Duplicados del SID (segmentos de 32 bytes). |
Tabla de valores para los niveles del ADSR:
Nivel | Binario | Hexadecimal | Attack | Decay | Release |
---|---|---|---|---|---|
0 | 0000 | 0 | 2 ms | 6 ms | 6 ms |
1 | 0001 | 1 | 8 ms | 24 ms | 24 ms |
2 | 0010 | 2 | 16 ms | 48 ms | 48 ms |
3 | 0011 | 3 | 24 ms | 72 ms | 72 ms |
4 | 0100 | 4 | 38 ms | 114 ms | 114 ms |
5 | 0101 | 5 | 56 ms | 168 ms | 168 ms |
6 | 0110 | 6 | 68 ms | 204 ms | 204 ms |
7 | 0111 | 7 | 80 ms | 240 ms | 240 ms |
8 | 1000 | 8 | 100 ms | 300 ms | 300 ms |
9 | 1001 | 9 | 250 ms | 750 ms | 750 ms |
10 | 1010 | A | 500 ms | 1.5 s | 1.5 s |
11 | 1011 | B | 800 ms | 2.4 s | 2.4 s |
12 | 1100 | C | 1 s | 3 s | 3 s |
13 | 1101 | D | 3 s | 9 s | 9 s |
14 | 1110 | E | 5 s | 15 s | 15 s |
15 | 1111 | F | 8 s | 24 s | 24 s |
Dirección | Hexadecimal | Descripción |
---|---|---|
55296-56295 | $D800-$DBE7 | Buffer de color de la pantalla (1000 bytes). Bits 0-3: Color del 0 al 15. |
56296-56319 | $DBE8-$DBFF | Sin uso (24 bytes). |
Dirección | Hexadecimal | Descripción |
---|---|---|
56320 | $DC00 | Puerto A: Matriz de teclado y joystick 2. Lectura de bits: + Bit 0: 0 = Arriba del Joystick 2 pulsado. + Bit 1: 0 = Abajo del Joystick 2 pulsado. + Bit 2: 0 = Izquierda del Joystick 2 pulsado. + Bit 3: 0 = Derecha del Joystick 2 pulsado. + Bit 4: 0 = Disparo del Joystick 2 pulsado. Escritura de bits: + Bit 0-7: 0 = Seleccionar que fila en la matriz del teclado leer. + Bit 6-7: 01 Paddle 1; 10 Paddle 2. |
56321 | $DC01 | Puerto B: Matriz de teclado y joystick 1. Lectura de bits: + Bit 0: 0 = Arriba del Joystick 1 pulsado. + Bit 1: 0 = Abajo del Joystick 1 pulsado. + Bit 2: 0 = Izquierda del Joystick 1 pulsado. + Bit 3: 0 = Derecha del Joystick 1 pulsado. + Bit 4: 0 = Disparo del Joystick 1 pulsado. + Bit 0-7: 0 = Tecla pulsada en la fila seleccionada de la matriz del teclado. |
56322 | $DC02 | Configuración del puerto A. Bits 0-7: 0 = Lectura; 1 = Escritura/Lectura. |
56323 | $DC03 | Configuración del puerto B. Bits 0-7: 0 = Lectura; 1 = Escritura/Lectura. |
56324-56325 | $DC04-$DC05 | Cuenta atrás A (Timer). Lectura: Valor actual. Escritura: Marca de tiempo inicial. |
56326-56327 | $DC06-$DC07 | Cuenta atrás B (Timer). Lectura: Valor actual. Escritura: Marca de tiempo inicial. |
56328 | $DC08 | TOD (Time Of Day; Hora del día): Décimas en formato BCD ($00-$09). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56329 | $DC09 | TOD (Time Of Day; Hora del día): Segundos en formato BCD ($00-$59). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56330 | $DC0A | TOD (Time Of Day; Hora del día): Minutos en formato BCD ($00-$59). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56331 | $DC0B | TOD (Time Of Day; Hora del día): Horas en formato BCD (Bits 0-5: Horas; Bit 7: 0 = AM, 1 = PM). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56332 | $DC0C | Registro de cambios en serie (serial shift). (Los bits son leídos y escritos cada salto positivo del pin CNT.) |
56333 | $DC0D | Registro de estado y control de interrupciones. Bits de lectura: + Bit 0: 1 = Desbordamiento inferior en la cuenta atrás A. + Bit 1: 1 = Desbordamiento inferior en la cuenta atrás B. + Bit 2: 1 = El TOD es igual a la hora de alarma. + Bit 3: 1 = Un byte completo se ha recibido o enviado desde el registro de cambios en serie (serial shift). + Bit 4: Nivel de señal en el pin FLAG, lectura del datasette. + Bit 7: Una interrupción ha sido generada. Bits de escritura: + Bit 0: 1 = Activar las interrupciones de desbordamiento inferior en la cuenta atrás A. + Bit 1: 1 = Activar las interrupciones de desbordamiento inferior en la cuenta atrás B. + Bit 2: 1 = Activar las interrupciones de la alarma. + Bit 3: 1 = Activar las interrupciones por recibir/enviar un byte completo en el registro de cambios en serie (serial shift). + Bit 4: 1 = Activar las interrupciones por un salto positivo en el pin FLAG. + Bit 7: Bit de relleno. Cuando los bits 0-6 están a 1 toman el valor del bit 7, si están a 0 no son modificados. |
56334 | $DC0E | Registro de control de la cuenta atrás A: + Bit 0: 0 = Parar; 1 = Iniciar. + Bit 1: 1 = Indicar desbordamiento inferior del temporizador en el bit 6 del puerto B. + Bit 2: 0 = Invertir el bit 6 del puerto B con el desbordamiento inferior; 1 = Generar con el desbordamiento inferior un salto positivo en el bit 6 del puerto B durante un ciclo de la CPU. + Bit 3: Acción de la cuenta atrás cuando hay un desbordamiento inferior. 0 = Reiniciar; 1 = Parar. + Bit 4: 1 = Carga el valor de inicio de la cuenta atrás. + Bit 5: Modo de la cuenta atrás. 0 = Ciclos de la CPU; 1 = Saltos positivos del pin CNT. + Bit 6: Configuración del registro de cambios en serie (serial shift). 0 = Lectura; 1 = Escritura. + Bit 7: Velocidad del TOD. 0 = 60 Hz; 1 = 50 Hz. |
56335 | $DC0F | Registro de control de la cuenta atrás B: + Bit 0: 0 = Parar; 1 = Iniciar. + Bit 1: 1 = Indicar desbordamiento inferior del temporizador en el bit 7 del puerto B. + Bit 2: 0 = Invertir el bit 7 del puerto B con el desbordamiento inferior; 1 = Generar con el desbordamiento inferior un salto positivo en el bit 7 del puerto B durante un ciclo de la CPU. + Bit 3: Acción de la cuenta atrás cuando hay un desbordamiento inferior. 0 = Reiniciar; 1 = Parar. + Bit 4: 1 = Carga el valor de inicio de la cuenta atrás. + Bit 5-6: Acciones de la cuenta atrás. 00 = Contar ciclos de la CPU; 01 = Contar saltos positivos del pin CNT; 10 = Contar desbordamientos inferiores de la cuenta atrás A; 11 = Contar desbordamientos inferiores de la cuenta atrás A que ocurren cuando hay un salto positivo en el pin CNT. + Bit 7: Acción cuando se escribe el TOD. 0 = Configurar el TOD; 1 = Configurar la alarma. |
56336-56575 | $DC10-$DCFF | Duplicados de la CIA1 (segmentos de 16 bytes). |
Dirección | Hexadecimal | Descripción |
---|---|---|
56576 | $DD00 | Puerto A: Puerto Serie. + Bits 0-1: Banco del VIC-II. 00 = Banco 3 $C000-$FFFF (49152-65535); 01 = Banco 2 $8000-$BFFF (32768-49151); 10 = Banco 1 $4000-$7FFF (16384-32767); 11 = Banco 0 $0000-$3FFF (0-16383). + Bit 2: TXD del RS-232 (bit de salida). + Bit 3: ATN OUT del Puerto Serie. 0 = Alto; 1 = Bajo. + Bit 4: CLOCK OUT del Puerto Serie. 0 = Alto; 1 = Bajo. + Bit 5: DATA OUT del Puerto Serie. 0 = Alto; 1 = Bajo. + Bit 6: CLOCK IN del Puerto Serie. 0 = Bajo; 1 = Alto. + Bit 7: DATA IN del Puerto Serie. 0 = Bajo; 1 = Alto. |
56577 | $DD01 | Puerto B: RS-232. Bits de lectura: + Bit 0: RXD del RS-232 (bit de entrada). + Bit 3: RI del RS-232. + Bit 4: DCD del RS-232. + Bit 5: Pin H del puerto de usuario. + Bit 6: CTS del RS-232. 1 = Sender preparado para enviar. + Bit 7: DSR del RS-232. 1 = Receiver preparado para recibir. Bits de escritura: + Bit 1: RTS del RS-232. 1 = Sender preparado para enviar. + Bit 2: DTR del RS-232. 1 = Receiver preparado para recibir. + Bit 3: RI del RS-232. + Bit 4: DCD del RS-232. + Bit 5: Pin H del puerto de usuario. |
56578 | $DD02 | Configuración del puerto A. Bits 0-7: 0 = Lectura; 1 = Escritura/Lectura. |
56579 | $DD03 | Configuración del puerto B. Bits 0-7: 0 = Lectura; 1 = Escritura/Lectura. |
56580-56581 | $DD04-$DD05 | Cuenta atrás A (Timer). Lectura: Valor actual. Escritura: Marca de tiempo inicial. |
56582-56583 | $DD06-$DD07 | Cuenta atrás B (Timer). Lectura: Valor actual. Escritura: Marca de tiempo inicial. |
56584 | $DD08 | TOD (Time Of Day; Hora del día): Décimas en formato BCD ($00-$09). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56585 | $DD09 | TOD (Time Of Day; Hora del día): Segundos en formato BCD ($00-$59). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56586 | $DD0A | TOD (Time Of Day; Hora del día): Minutos en formato BCD ($00-$59). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56587 | $DD0B | TOD (Time Of Day; Hora del día): Horas en formato BCD (Bits 0-5: Horas; Bit 7: 0 = AM, 1 = PM). Lectura: Valor actual. Escritura: Configurar TOD o alarma. |
56588 | $DD0C | Registro de cambios en serie (serial shift). (Los bits son leídos y escritos cada salto positivo del pin CNT.) |
56589 | $DD0D | Registro de estado y control de interrupciones. Bits de lectura: + Bit 0: 1 = Desbordamiento inferior en la cuenta atrás A. + Bit 1: 1 = Desbordamiento inferior en la cuenta atrás B. + Bit 2: 1 = El TOD es igual a la hora de alarma. + Bit 3: 1 = Un byte completo se ha recibido o enviado desde el registro de cambios en serie (serial shift). + Bit 4: Nivel de señal en el pin FLAG. + Bit 7: Una interrupción no-enmascarable ha sido generada. Bits de escritura: + Bit 0: 1 = Activar las interrupciones no-enmascarables de desbordamiento inferior en la cuenta atrás A. + Bit 1: 1 = Activar las interrupciones no-enmascarables de desbordamiento inferior en la cuenta atrás B. + Bit 2: 1 = Activar las interrupciones no-enmascarables de la alarma. + Bit 3: 1 = Activar las interrupciones no-enmascarables por recibir/enviar un byte completo en el registro de cambios en serie (serial shift). + Bit 4: 1 = Activar las interrupciones no-enmascarables por un salto positivo en el pin FLAG. + Bit 7: Bit de relleno. Cuando los bits 0-6 están a 1 toman el valor del bit 7, si están a 0 no son modificados. |
56590 | $DD0E | Registro de control de la cuenta atrás A: + Bit 0: 0 = Parar; 1 = Iniciar. + Bit 1: 1 = Indica desbordamiento inferior del temporizador en el bit 6 del puerto B. + Bit 2: 0 = Invertir el bit 6 del puerto B con el desbordamiento inferior; 1 = Generar con el desbordamiento inferior un salto positivo en el bit 6 del puerto B durante un ciclo de la CPU. + Bit 3: Acción de la cuenta atrás cuando hay un desbordamiento inferior. 0 = Reiniciar; 1 = Parar. + Bit 4: 1 = Carga el valor de inicio de la cuenta atrás. + Bit 5: Modo de la cuenta atrás. 0 = Ciclos de la CPU; 1 = Saltos positivos del pin CNT. + Bit 6: Configuración del registro de cambios en serie (serial shift). 0 = Lectura; 1 = Escritura. + Bit 7: Velocidad del TOD. 0 = 60 Hz; 1 = 50 Hz. |
56591 | $DD0F | Registro de control de la cuenta atrás B: + Bit 0: 0 = Parar; 1 = Iniciar. + Bit 1: 1 = Indica desbordamiento inferior del temporizador en el bit 7 del puerto B. + Bit 2: 0 = Invertir el bit 7 del puerto B con el desbordamiento inferior; 1 = Generar con el desbordamiento inferior un salto positivo en el bit 7 del puerto B durante un ciclo de la CPU. + Bit 3: Acción de la cuenta atrás cuando hay un desbordamiento inferior. 0 = Reiniciar; 1 = Parar. + Bit 4: 1 = Carga el valor de inicio de la cuenta atrás. + Bit 5-6: Acciones de la cuenta atrás. 00 = Contar ciclos de la CPU; 01 = Contar saltos positivos del pin CNT; 10 = Contar desbordamientos inferiores de la cuenta atrás A; 11 = Contar desbordamientos inferiores de la cuenta atrás A que ocurren cuando hay un salto positivo en el pin CNT. + Bit 7: Acción cuando se escribe el TOD. 0 = Configurar el TOD; 1 = Configurar la alarma. |
56592-56831 | $DD10-$DDFF | Duplicados de la CIA2 (segmentos de 16 bytes). |
Dirección | Hexadecimal | Defecto | Descripción |
---|---|---|---|
56832-57087 | $DE00-$DEFF | - | Área E/S Nº 1 (256 bytes): Registros y/o subrutinas de dispositivos externos opcionales. |
57088-57343 | $DF00-$DFFF | - | Área E/S Nº 2 (256 bytes): Registros y/o subrutinas de dispositivos externos opcionales. |
57344-65535 | $E000-$FFFF | - | ROM del KERNAL. |
65530-65531 | $FFFA-$FFFB | $FE43 | Puntero a la rutina de servicio de interrupciones no-enmascarables. |
65532-65533 | $FFFC-$FFFD | $FCE2 | Puntero al reinicio frío. |
65534-65535 | $FFFE-$FFFF | $FF48 | Puntero a la rutina de servicio de interrupciones. |