Idioma :

Página Cero

Las posiciones de cero a 255 ($0 a $FF) se denominan "página cero" y tienen especial importancia para los programadores de lenguaje ensamblador ya que la máquina accede a estas ubicaciones más rápida y fácilmente.


Las ubicaciones cero a 127 ($0 a $7F) están reservadas como la página cero del sistema operativo, mientras que de 128 a 255 ($80 a $FF) son la página cero del BASIC y la usada por el usuario en RAM.


Las ubicaciones cero a 1792 ($0 a $700) se usan como sistema operativo y (si el cartucho está presente) 8K BASIC RAM (excepto la página seis). Las ubicaciones cero a 8191 ($0 a $1FFF) son el mínimo requerido para la operación (8K).


Las ubicaciones dos a siete no se borran en ninguna operación de arranque.


NombreDecimal HexadecimalDescripción
CASINI2, 3$2, $3Vector de inicialización del casete: JSR pasa por aquí si el arranque del casete fue exitoso.
Esta dirección se extrae de los primeros seis bytes de un archivo de arranque de casete. El primer byte se ignora. El segundo contiene el número de registros, el tercero y el cuarto contienen los bytes bajos y altos de la dirección de carga, y el quinto y el sexto contienen los bytes bajos y altos de la dirección de inicialización.
El control al cargar salta a la dirección de carga más seis para una carga de varias etapas y a través de CASINI para la inicialización. JSR a través de DOSVEC (10 y 11; $A,$B) para transferir el control a la aplicación.
RAMLO4, 5$4, $5Puntero de RAM para la prueba de memoria utilizada en el encendido. También se utiliza para almacenar la dirección de arranque del disco "normalmente 1798 ($706)" para la rutina de continuación de arranque.
TRAMSZ6$6Registro Temporal para tamaño de RAM; se utiliza durante la secuencia de encendido para probar la disponibilidad de RAM. Este valor luego se traslada a RAMTOP, ubicación 106 ($6A).
Lee uno cuando el cartucho de BASIC o A (izquierdo en 400/800) está enchufado.
APPMHI14, 15$D, $EUbicación más alta usada por BASIC (LSB, MSB)
POKMSK16$10Tecla BREAR, Para desactivar esta tecla debemos usar los siguientes comandos :
POKE 16,112:POKE 53774,112
BRKKEY17$11Cero significa que se presiona la tecla BREAK; cualquier otro número significa que no lo es. Un BREAK durante la E/S devuelve 128 ($80). Supervisado por controladores de teclado, casete y pantalla.
Consulte la ubicación 16 ($A) para obtener sugerencias sobre cómo deshabilitar la tecla BREAK. Las últimas ediciones del sistema operativo proporcionan un vector adecuado para las interrupciones BREAK.
El código de estado de cancelación de la tecla BREAK se almacena en STATUS (48; $30). También se comprueba durante todas las rutinas de E/S y desplazamiento o dibujado.
Durante la rutina del controlador de teclado, el código de estado se almacena en DSTAT (76; $4C). BRKKEY se apaga en el encendido. El estado de cancelación de la tecla BREAK se marca configurando el BIT 7 de 53774 ($D20E).
RTCLOK18,19,20$12, $13, $14

Reloj del computador, Para cálculo de tiempo debemos usar la siguiente fórmula:

TIEMPO = INT((PEEK(18)*65536+PEEK(19)*256+PEEK(20))/60)

Para mostrar la hora en modo "hora:minuto:segundo" se requiere un programa específico.

BUFADR21, 22$15, $16Registro de dirección de búfer indirecto (página cero). Puntero temporal al búfer de disco actual.
BPTR61$3DEsta localización es un puntero para el siguiente byte a usar en el buffer del casete.
FEOF63$3FFin de archivo de casete: Si contiene un cero, significa que aún quedan datos, cualquier otro número indica que se ha encontrado el fin de archivo.
SOUNDR65$41Sonido de entrada/salida (I/O): Pokee esta dirección con un cero y el traspaso de información a los periféricos será silenciosa. Con otro número regresará el sonido.
FMZSPG67, 73$43, $49Sistema de administrador de archivos de disco (FMS) página cero de registros (siete bytes).
ATRACT77$4DCambio de color automático: Si su programa no utiliza el teclado por más de 7 minutos, pokee esta dirección con cero periódicamente para evitar la rotación de colores. Para comenzar inmediatamente la rotación pokee 77 con 128.
LMARGN82$52Margen izquierdo: El Sistema Operativo pone aquí un 2. Si desea cambiar este margen, ponga aquí el número correspondiente al margen deseado. Ej: POKE 82,20 (20=número de columnas a la izquierda del margen.)
RMARGN83$53Igual que 82 pero refleja la posición del margen derecho, inicializada en 39. Estas posiciones sólo son válidas para gráfico 0 y ventana de texto. Dicha ventana consiste en 4 líneas de gráfico cero en la parte inferior de otro modo gráfico, por ejemplo: gráfico 8.
ROWCRS84$54Posición de fila actual del cursor: Cero corresponde a la parte superior de la pantalla.
COLCRS85, 86$55, $56Posición de columna actual del cursor: Cero corresponde a la posición izquierda de la pantalla. Debe usarse el siguiente cálculo:
COL = PEEK(85) + PEEK(86)*256
SAVMSC88, 89$58, $59Inicio de la pantalla en RAM: Estas posiciones determinan en que parte de la RAM se encuentra el primer byte (parte superior izquierda) de la pantalla. Para imprimir el carácter A con poke usar la siguiente instrucción: POKE PEEK(88)+PEEK(89)*256,ASC("A")-32.
RAMTOP106$6ACantidad de RAM en páginas (una página=256 bytes). Para ubicar el fin de la memoria RAM use la siguiente instrucción: RAM=PEEK(106)*256. Para reservar Memoria debe usar la siguiente instrucción: POKE 106,PEEK(106)-número de páginas a reservar.
LOMEM128, 129$80, $81Puntero al comienzo de la RAM disponible. Trabaja conjuntamente con 743 y 744. Es una buena idea modificar este puntero para reservar memoria para datos o rutinas en Assembler.
VNTP130, 131$82, $83Puntero al comienzo de la tabla de nombres de variables del Basic.
VNTD132, 133$84, $85Puntero al fin de la tabla anterior.
VVTP134, 135$86, $87Puntero de la tabla de valores de las variables.
STMTAB136, 137$88, $89Puntero al comienzo del programa de Basic codificado.
STMCUR138, 139$8A, $8BPuntero a la línea codificada que está siendo utilizada actualmente por el Basic.
STARP140, 141$8C, $8DDirección de las matrices y variables alfanuméricas. Fin del programa codificado.
MEMTOP144, 145$90, $91Fin de la memoria utilizada por el Basic.
160, 161$A0, $A1Número de línea en la cual se encuentra trabajando el Basic.
STOPLN186, 187$BA, $BBLínea en la cual se detuvo la ejecución del programa Basic.
ERRSAVE195$C3Número de error que causo la detención del programa o la utilización de la instrucción "TRAP".
FR0212, 217$D4, $D9Usados por el paquete de coma flotante.
FRE218, 223$DA, $DFRegistro extra FP.
FR1224, 229$E0, $E5Registro de punto flotante uno; contiene una forma interna de seis bytes del número de FP al igual que FR0. El paquete FP transfiere con frecuencia datos entre estos dos registros y utiliza ambos para dos números de operaciones aritmeticas.
FR2230,235$E6, $EBSegundo registro de FP.
FRX236$ECRegistro de repuestos FP.
EEXP237$EDEl valor de E (el exponente).
NSIGN238$EEEl signo del número de FP.
ESIGN239$EFEl signo del exponente.
FCHRFLG240$F0La primera bandera de carácter.
DIGRT241$FlEl número de dígitos a la derecha del decimal.
CIX242$F2Índice de caracteres (entrada actual). Se utiliza como compensación de la entrada. búfer de texto señalado por INBUFF a continuación.
INBUFF243, 244$F3, $F4Puntero del búfer de texto ASCII de entrada; el búfer de entrada de la línea de programa del usuario, utilizado en la traducción del código ATASCII a valores FP. El buffer de salida de resultados está en las posiciones 1408 a 1535 ($580 a $5FF).
ZTEMP1245, 246$F5, $F6Registro temporal.
ZTEMP4247, 248$F7, $F8Registro temporal.
ZTEMP3249, 250$F9, $FARegistro temporal.
RADFLG251$FBTambién llamado DEGFLG. Cuando se establece en cero, todas las funciones trigonométricas se realizan en radianes; cuando se establece en seis, se realizan en grados. El comando NEW y RESET de BASIC restauran RADFLG a radianes.
FLPTR252, 253$FC, $FDApunta al número de FP del usuario.
FPTR2254, 255$FE, $FFPuntero al segundo número de FP del usuario que se utilizará en un operación.

Fin de la página cero.

Comentarios